This file contains OS-specific includes and definitions.
Go to the source code of this file.
| #define | DWC_DMA_ADDR_INVALID (~(dwc_dma_t)0) |
| typedef unsigned long | dwc_dma_t |
Data Structures | |
| struct | task_struct |
| struct | tasklet_struct |
| struct | dwc_usb3_core_params_t |
| struct | usb_ep_t |
| struct | usb_request_t |
| struct | usb_dfu_functional_descriptor_t |
| struct | fs_msc_config_desc_t |
| struct | hs_msc_config_desc_t |
| struct | dfu_config_desc_t |
| struct | ss_config_desc_t |
Macros | |
| #define | NEAR |
| #define | TRUE 1 |
| #define | FALSE 0 |
| #define | UPACKED |
| #define | UALIGNED16 __attribute__((__aligned__(16))) |
| #define | __iomem /* */ |
| #define | KERN_DEBUG "debug" /* debug messages */ |
| #define | KERN_INFO "info" /* informational messages */ |
| #define | KERN_WARNING "war" /* warning messages */ |
| #define | KERN_ERR "err" /* error messages */ |
| #define | EIO 5 /* I/O error */ |
| #define | EAGAIN 11 /* Try again */ |
| #define | ENOMEM 12 /* Out of memory */ |
| #define | EBUSY 16 /* Device or resource busy */ |
| #define | ENODEV 19 /* No such device */ |
| #define | EINVAL 22 /* Invalid argument */ |
| #define | ENOSPC 28 /* No space left on device */ |
| #define | EPIPE 32 /* Broken pipe */ |
| #define | EDOM 33 /* Math argument out of domain of func */ |
| #define | ENODATA 61 /* No data available */ |
| #define | ENOSR 63 /* Out of streams resources */ |
| #define | ECOMM 70 /* Communication error on send */ |
| #define | EPROTO 71 /* Protocol error */ |
| #define | EOVERFLOW 75 /* Value too large for defined data type */ |
| #define | ERESTART 85 /* Interrupted system call should be restarted */ |
| #define | EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ |
| #define | ECONNABORTED 103 /* Software caused connection abort */ |
| #define | ECONNRESET 104 /* Connection reset by peer */ |
| #define | ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */ |
| #define | ETIMEDOUT 110 /* Connection timed out */ |
| #define | EINPROGRESS 115 /* Operation now in progress */ |
| #define | wmb() do {} while ((bool)(0)) |
| #define | interrupt_disable() 0 |
| #define | interrupt_enable() do {} while ((bool)(0)) |
| #define | dwc_init_spinlock(d, p) do {} while ((bool)(0)) |
| #define | dwc_acquire_spinlock(d, p) do {} while ((bool)(0)) |
| #define | dwc_release_spinlock(d, p) do {} while ((bool)(0)) |
| #define | dwc_acquire_spinlock_irq(d, p, f) do { (f) = interrupt_disable(); } while ((bool)(0)) |
| #define | dwc_release_spinlock_irq(d, p, f) do { if (f > 0U) { interrupt_enable(); } } while ((bool)(0)) |
| #define | DWC_NUM_BULK_TRBS 1 |
| #define | DWC_NUM_INTR_TRBS 1 |
| #define | DWC_NUM_ISOC_TRBS 32 |
Error Codes | |
| #define | DWC_E_INVALID EINVAL |
| #define | DWC_E_NO_MEMORY ENOMEM |
| #define | DWC_E_NO_DEVICE ENODEV |
| #define | DWC_E_NOT_SUPPORTED EOPNOTSUPP |
| #define | DWC_E_TIMEOUT ETIMEDOUT |
| #define | DWC_E_BUSY EBUSY |
| #define | DWC_E_AGAIN EAGAIN |
| #define | DWC_E_RESTART ERESTART |
| #define | DWC_E_ABORT ECONNABORTED |
| #define | DWC_E_SHUTDOWN ESHUTDOWN |
| #define | DWC_E_NO_DATA ENODATA |
| #define | DWC_E_DISCONNECT ECONNRESET |
| #define | DWC_E_UNKNOWN EINVAL |
| #define | DWC_E_NO_STREAM_RES ENOSR |
| #define | DWC_E_COMMUNICATION ECOMM |
| #define | DWC_E_OVERFLOW EOVERFLOW |
| #define | DWC_E_PROTOCOL EPROTO |
| #define | DWC_E_IN_PROGRESS EINPROGRESS |
| #define | DWC_E_PIPE EPIPE |
| #define | DWC_E_IO EIO |
| #define | DWC_E_NO_SPACE ENOSPC |
| #define | DWC_E_DOMAIN EDOM |
Typedefs | |
| typedef unsigned long long | u64 |
| typedef unsigned int | u32 |
| typedef unsigned short | u16 |
| typedef unsigned char | u8 |
| typedef unsigned char | UINT8 |
| typedef long long | s64 |
| typedef int | s32 |
| typedef short | s16 |
| typedef char | s8 |
| typedef unsigned long | u_long |
| typedef unsigned int | u_int |
| typedef unsigned short | u_short |
| typedef unsigned char | u_char |
Functions | |
| static void | dwc_usb3_task_schedule (volatile struct tasklet_struct *tasklet) |
| struct dwc_usb3_device * | dwc_usb3_driver_init (u32 base_addr_dwc) |
| void | dwc_usb3_driver_remove (void) |
| void | dwc_usb3_common_irq (int irq, void *dev) |
| volatile usb_ep_t * | dwc_usb3_ep_enable (struct dwc_usb3_device *usb3_dev, const void *epdesc, const void *epcomp) |
| int | dwc_usb3_ep_disable (volatile struct dwc_usb3_device *usb3_dev, volatile usb_ep_t *usb_ep) |
| int | dwc_usb3_close_all_ep (volatile struct dwc_usb3_device *usb3_dev) |
| usb_request_t * | dwc_usb3_alloc_request (struct dwc_usb3_device *usb3_dev, volatile usb_ep_t *usb_ep) |
| void | dwc_usb3_free_request (struct dwc_usb3_device *usb3_dev, volatile usb_ep_t *usb_ep, volatile usb_request_t *usb_req) |
| int | dwc_usb3_ep_queue (struct dwc_usb3_device *usb3_dev, volatile usb_ep_t *usb_ep, usb_request_t *usb_req) |
| int | dwc_usb3_ep_dequeue (struct dwc_usb3_device *usb3_dev, usb_ep_t *usb_ep, usb_request_t *usb_req) |
| int | dwc_usb3_wait_pme (volatile struct dwc_usb3_device *usb3_dev) |
| int | dwc_usb3_handle_pme_intr (volatile struct dwc_usb3_device *usb3_dev) |
| int | dwc_usb3_function_init (struct dwc_usb3_device *usb3_dev) |
| void | dwc_usb3_function_remove (struct dwc_usb3_device *usb3_dev) |
| int | dwc_usb3_function_connect (struct dwc_usb3_device *usb3_dev, int speed) |
| int | dwc_usb3_function_disconnect (struct dwc_usb3_device *usb3_dev) |
Variables | |
| fs_msc_config_desc_t | fs_msc_config_desc |
| hs_msc_config_desc_t | hs_msc_config_desc |
| ss_config_desc_t | ss_config_desc |
| const dwc_usb3_core_params_t | usb3ss_module_params |
| #define NEAR |
| #define TRUE 1 |
| #define FALSE 0 |
| #define DWC_DMA_ADDR_INVALID (~(dwc_dma_t)0) |
| #define UPACKED |
Compiler 'packed' attribute
| #define UALIGNED16 __attribute__((__aligned__(16))) |
Compiler 'aligned(16)' attribute — doesn't work with cl470. Use pragma DATA_ALIGN instead
| #define __iomem /* */ |
I/O memory attribute for pointers. Needed for Linux "sparse" tool.
| #define KERN_DEBUG "debug" /* debug messages */ |
| #define KERN_INFO "info" /* informational messages */ |
| #define KERN_WARNING "war" /* warning messages */ |
| #define KERN_ERR "err" /* error messages */ |
| #define EIO 5 /* I/O error */ |
| #define EAGAIN 11 /* Try again */ |
| #define ENOMEM 12 /* Out of memory */ |
| #define EBUSY 16 /* Device or resource busy */ |
| #define ENODEV 19 /* No such device */ |
| #define EINVAL 22 /* Invalid argument */ |
| #define ENOSPC 28 /* No space left on device */ |
| #define EPIPE 32 /* Broken pipe */ |
| #define EDOM 33 /* Math argument out of domain of func */ |
| #define ENODATA 61 /* No data available */ |
| #define ENOSR 63 /* Out of streams resources */ |
| #define ECOMM 70 /* Communication error on send */ |
| #define EPROTO 71 /* Protocol error */ |
| #define EOVERFLOW 75 /* Value too large for defined data type */ |
| #define ERESTART 85 /* Interrupted system call should be restarted */ |
| #define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ |
| #define ECONNABORTED 103 /* Software caused connection abort */ |
| #define ECONNRESET 104 /* Connection reset by peer */ |
| #define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */ |
| #define ETIMEDOUT 110 /* Connection timed out */ |
| #define EINPROGRESS 115 /* Operation now in progress */ |
| #define wmb | ( | ) | do {} while ((bool)(0)) |
Write memory barrier macro
| #define interrupt_disable | ( | ) | 0 |
| #define interrupt_enable | ( | ) | do {} while ((bool)(0)) |
| #define dwc_init_spinlock | ( | d, | |
| p | |||
| ) | do {} while ((bool)(0)) |
| #define dwc_acquire_spinlock | ( | d, | |
| p | |||
| ) | do {} while ((bool)(0)) |
| #define dwc_release_spinlock | ( | d, | |
| p | |||
| ) | do {} while ((bool)(0)) |
| #define dwc_acquire_spinlock_irq | ( | d, | |
| p, | |||
| f | |||
| ) | do { (f) = interrupt_disable(); } while ((bool)(0)) |
| #define dwc_release_spinlock_irq | ( | d, | |
| p, | |||
| f | |||
| ) | do { if (f > 0U) { interrupt_enable(); } } while ((bool)(0)) |
| #define DWC_E_INVALID EINVAL |
| #define DWC_E_NO_MEMORY ENOMEM |
| #define DWC_E_NO_DEVICE ENODEV |
| #define DWC_E_NOT_SUPPORTED EOPNOTSUPP |
| #define DWC_E_TIMEOUT ETIMEDOUT |
| #define DWC_E_BUSY EBUSY |
| #define DWC_E_AGAIN EAGAIN |
| #define DWC_E_RESTART ERESTART |
| #define DWC_E_ABORT ECONNABORTED |
| #define DWC_E_SHUTDOWN ESHUTDOWN |
| #define DWC_E_NO_DATA ENODATA |
| #define DWC_E_DISCONNECT ECONNRESET |
| #define DWC_E_UNKNOWN EINVAL |
| #define DWC_E_NO_STREAM_RES ENOSR |
| #define DWC_E_COMMUNICATION ECOMM |
| #define DWC_E_OVERFLOW EOVERFLOW |
| #define DWC_E_PROTOCOL EPROTO |
| #define DWC_E_IN_PROGRESS EINPROGRESS |
| #define DWC_E_PIPE EPIPE |
| #define DWC_E_IO EIO |
| #define DWC_E_NO_SPACE ENOSPC |
| #define DWC_E_DOMAIN EDOM |
| #define DWC_NUM_BULK_TRBS 1 |
The number of DMA Descriptors (TRBs) to allocate for each endpoint type. NOTE: The driver currently supports more than 1 TRB for Isoc EPs only. So the values for Bulk and Intr must be 1.
| #define DWC_NUM_INTR_TRBS 1 |
| #define DWC_NUM_ISOC_TRBS 32 |
| typedef unsigned long long u64 |
Data types needed by the PCD
| typedef unsigned int u32 |
| typedef unsigned short u16 |
| typedef unsigned char u8 |
| typedef unsigned char UINT8 |
| typedef long long s64 |
| typedef int s32 |
| typedef short s16 |
| typedef char s8 |
| typedef unsigned long u_long |
| typedef unsigned int u_int |
| typedef unsigned short u_short |
| typedef unsigned char u_char |
| typedef unsigned long dwc_dma_t |
Data type for DMA addresses
|
inlinestatic |
| struct dwc_usb3_device* dwc_usb3_driver_init | ( | u32 | base_addr_dwc | ) |
| void dwc_usb3_driver_remove | ( | void | ) |
| void dwc_usb3_common_irq | ( | int | irq, |
| void * | dev | ||
| ) |
| volatile usb_ep_t* dwc_usb3_ep_enable | ( | struct dwc_usb3_device * | usb3_dev, |
| const void * | epdesc, | ||
| const void * | epcomp | ||
| ) |
This routine enables a USB endpoint
| usb3_dev | Programming view of DWC_usb3 device. |
| epdesc | USB endpoint descriptor for the EP. |
| epcomp | USB SS endpoint companion descriptor for the EP. |
| int dwc_usb3_ep_disable | ( | volatile struct dwc_usb3_device * | usb3_dev, |
| volatile usb_ep_t * | usb_ep | ||
| ) |
This routine disables a USB endpoint
| usb3_dev | Programming view of DWC_usb3 device. |
| usb_ep | USB EP to disable. |
| int dwc_usb3_close_all_ep | ( | volatile struct dwc_usb3_device * | usb3_dev | ) |
This routine disables a all active non EP-0 USB endpoint
| usb3_dev | Programming view of DWC_usb3 device. |
| usb_request_t* dwc_usb3_alloc_request | ( | struct dwc_usb3_device * | usb3_dev, |
| volatile usb_ep_t * | usb_ep | ||
| ) |
This routine allocates a USB request object to use with the specified USB endpoint. The contents of a USB request are defined by the Function Driver, and are opaque to the PCD. The USB request is embedded inside of an enclosing PCD request object (see the definition of struct dwc_usb3_pcd_req in pcd.h). One request object is needed for each transfer that is submitted to the PCD.
| usb3_dev | Programming view of DWC_usb3 device. |
| usb_ep | USB EP for the request. |
| void dwc_usb3_free_request | ( | struct dwc_usb3_device * | usb3_dev, |
| volatile usb_ep_t * | usb_ep, | ||
| volatile usb_request_t * | usb_req | ||
| ) |
This routine frees a USB request object
| usb3_dev | Programming view of DWC_usb3 device. |
| usb_ep | USB EP for the request. |
| usb_req | USB request to be freed. |
| int dwc_usb3_ep_queue | ( | struct dwc_usb3_device * | usb3_dev, |
| volatile usb_ep_t * | usb_ep, | ||
| usb_request_t * | usb_req | ||
| ) |
This routine submits a transfer request for a USB endpoint. The example code maintains a queue of requests for each endpoint, so that the application can start another transfer on the same endpoint without having to wait for the first transfer to complete.
| usb3_dev | Programming view of DWC_usb3 device. |
| usb_ep | USB EP for the transfer. |
| usb_req | USB request for the transfer. |
| int dwc_usb3_ep_dequeue | ( | struct dwc_usb3_device * | usb3_dev, |
| usb_ep_t * | usb_ep, | ||
| usb_request_t * | usb_req | ||
| ) |
This routine cancels a transfer request for a USB endpoint. This is only needed in exceptional cases, a normal transfer completion does not require this.
| usb3_dev | Programming view of DWC_usb3 device. |
| usb_ep | USB EP for the transfer. |
| usb_req | USB request for the transfer. |
| int dwc_usb3_wait_pme | ( | volatile struct dwc_usb3_device * | usb3_dev | ) |
| int dwc_usb3_handle_pme_intr | ( | volatile struct dwc_usb3_device * | usb3_dev | ) |
| int dwc_usb3_function_init | ( | struct dwc_usb3_device * | usb3_dev | ) |
| void dwc_usb3_function_remove | ( | struct dwc_usb3_device * | usb3_dev | ) |
| int dwc_usb3_function_connect | ( | struct dwc_usb3_device * | usb3_dev, |
| int | speed | ||
| ) |
| int dwc_usb3_function_disconnect | ( | struct dwc_usb3_device * | usb3_dev | ) |
|
extern |
|
extern |
|
extern |
|
extern |