usbx/ports/linux/gnu/inc/ux_port.h

268 lines
9.3 KiB
C
Raw Normal View History

2020-11-10 13:37:32 -08:00
/**************************************************************************/
/* */
/* Copyright (c) Microsoft Corporation. All rights reserved. */
/* */
/* This software is licensed under the Microsoft Software License */
/* Terms for Microsoft Azure RTOS. Full text of the license can be */
/* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA */
/* and in the root directory of this software. */
/* */
/**************************************************************************/
/**************************************************************************/
/**************************************************************************/
/** */
/** USBX Component */
/** */
/** Port Specific */
/** */
/**************************************************************************/
/**************************************************************************/
/**************************************************************************/
/* */
/* PORT SPECIFIC C INFORMATION RELEASE */
/* */
/* ux_port.h Linux/GNU */
/* 6.x */
2020-11-10 13:37:32 -08:00
/* */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This file contains data type definitions that make USBX function */
/* identically on a variety of different processor architectures. */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
2021-10-13 06:50:29 +00:00
/* 10-15-2021 Chaoqiong Xiao Initial Version 6.1.9 */
2022-01-26 23:54:01 +00:00
/* 01-31-2022 Chaoqiong Xiao Modified comment(s), */
/* moved tx_api.h include and */
/* typedefs from ux_api.h, */
/* resulting in version 6.1.10 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* added basic types guards, */
/* improved SLONG typedef, */
/* resulting in version 6.x */
2020-11-10 13:37:32 -08:00
/* */
/**************************************************************************/
#ifndef UX_PORT_H
#define UX_PORT_H
/* Remap keywords in the Visual environment. */
#define class usbx_class
#define interface uxbx_interface
/* Determine if the optional USBX user define file should be used. */
#ifdef UX_INCLUDE_USER_DEFINE_FILE
/* Yes, include the user defines in ux_user.h. The defines in this file may
alternately be defined on the command line. */
#include "ux_user.h"
#endif
/* Include library header files. */
#include <stdio.h>
#include <string.h>
2022-01-26 23:54:01 +00:00
#if !defined(UX_STANDALONE)
#include "tx_api.h"
#else
/* VAR types used in UX,
if TX still used, expects tx_api.h included before include this. */
#if !defined(TX_API_H) && !defined(TX_PORT_H)
#include <stdint.h>
#ifndef VOID
#define VOID void
2022-01-26 23:54:01 +00:00
typedef char CHAR;
typedef unsigned char UCHAR;
typedef int INT;
typedef unsigned int UINT;
typedef long LONG;
typedef unsigned long ULONG;
typedef short SHORT;
typedef unsigned short USHORT;
#endif
#ifndef ULONG64_DEFINED
2022-01-26 23:54:01 +00:00
typedef uint64_t ULONG64;
#define ULONG64_DEFINED
#endif
2022-01-26 23:54:01 +00:00
#ifndef ALIGN_TYPE_DEFINED
#define ALIGN_TYPE ULONG
#define ALIGN_TYPE_DEFINED
2022-01-26 23:54:01 +00:00
#endif
#endif
#endif
2020-11-10 13:37:32 -08:00
/* CPU definition for X86 systems without preemptive timer function.
This will make USBX uses the controller for the timer. */
#undef THREADX_X86_NO_PTIMER
/* For X86 systems, the define #define UX_USE_IO_INSTRUCTIONS should be used. */
/* Define additional generic USBX types. */
#ifndef SLONG_DEFINED
typedef LONG SLONG;
#define SLONG_DEFINED
#endif
2020-11-10 13:37:32 -08:00
/* Generic USBX Project constants follow. */
#ifndef UX_PERIODIC_RATE
#define UX_PERIODIC_RATE 100
#endif
#ifndef UX_MAX_CLASS_DRIVER
#define UX_MAX_CLASS_DRIVER 8
#endif
#ifndef UX_MAX_SLAVE_CLASS_DRIVER
#define UX_MAX_SLAVE_CLASS_DRIVER 3
#endif
#ifndef UX_MAX_HCD
#define UX_MAX_HCD 2
#endif
#ifndef UX_MAX_DEVICES
#define UX_MAX_DEVICES 8
#endif
#ifndef UX_MAX_ED
#define UX_MAX_ED 80
#endif
#ifndef UX_MAX_TD
#define UX_MAX_TD 32
#endif
#ifndef UX_MAX_ISO_TD
#define UX_MAX_ISO_TD 128
#endif
#ifndef UX_HOST_ENUM_THREAD_STACK_SIZE
#define UX_HOST_ENUM_THREAD_STACK_SIZE (2*1024)
#endif
#ifndef UX_THREAD_STACK_SIZE
#define UX_THREAD_STACK_SIZE (1*1024)
#endif
#ifndef UX_THREAD_PRIORITY_ENUM
#define UX_THREAD_PRIORITY_ENUM 20
#endif
#ifndef UX_THREAD_PRIORITY_CLASS
#define UX_THREAD_PRIORITY_CLASS 20
#endif
#ifndef UX_THREAD_PRIORITY_KEYBOARD
#define UX_THREAD_PRIORITY_KEYBOARD 20
#endif
#ifndef UX_THREAD_PRIORITY_HCD
#define UX_THREAD_PRIORITY_HCD 2
#endif
#ifndef UX_THREAD_PRIORITY_DCD
#define UX_THREAD_PRIORITY_DCD 2
#endif
#ifndef UX_NO_TIME_SLICE
#define UX_NO_TIME_SLICE 0
#endif
#ifndef UX_MAX_SLAVE_LUN
#define UX_MAX_SLAVE_LUN 2
#endif
#ifndef UX_MAX_HOST_LUN
#define UX_MAX_HOST_LUN 2
#endif
#ifndef UX_HOST_CLASS_STORAGE_MAX_MEDIA
#define UX_HOST_CLASS_STORAGE_MAX_MEDIA 2
#endif
#ifndef UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH
#define UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH 256
#endif
#ifndef UX_SLAVE_REQUEST_DATA_MAX_LENGTH
#define UX_SLAVE_REQUEST_DATA_MAX_LENGTH 4096
#endif
#ifndef UX_USE_IO_INSTRUCTIONS
/* Don't use IO instructions if this define is not set. Default to memory mapped. */
#define inpb(a) *((UCHAR *) (a))
#define inpw(a) *((USHORT *) (a))
#define inpl(a) *((ULONG *) (a))
#define outpb(a, b) *((UCHAR *) (a)) = ((UCHAR) (b))
#define outpw(a, b) *((USHORT *) (a)) = ((USHORT) (b))
#define outpl(a, b) *((ULONG *) (a)) = ((ULONG) (b))
#else
/* Define simple prototypes for non-memory mapped hardware access. */
UCHAR inpb(ULONG);
USHORT inpw(ULONG);
ULONG inpl(ULONG);
UCHAR outpb(ULONG,UCHAR);
USHORT outpw(ULONG,USHORT);
ULONG outpl(ULONG,ULONG);
#endif
/* Define interrupt lockout constructs to protect the memory allocation/release which could happen
under ISR in the device stack. */
#define UX_INT_SAVE_AREA unsigned int old_interrupt_posture;
#define UX_DISABLE_INTS old_interrupt_posture = tx_interrupt_control(TX_INT_DISABLE);
#define UX_RESTORE_INTS tx_interrupt_control(old_interrupt_posture);
/* Define the version ID of USBX. This may be utilized by the application. */
#ifdef UX_SYSTEM_INIT
CHAR _ux_version_id[] =
2022-10-26 23:43:22 +00:00
"Copyright (c) Microsoft Corporation. All rights reserved. * USBX Linux/GNU Version 6.2.0 *";
2020-11-10 13:37:32 -08:00
#else
extern CHAR _ux_version_id[];
#endif
#endif