udc.h

来自「linux嵌入式课程实践中的一个关于声卡驱动程序 。」· C头文件 代码 · 共 144 行

H
144
字号
/******************************************************************************* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */struct TRANSFER_FRAME_STRUCT{    unsigned short link_pointer;    unsigned short absolute_address;    unsigned short data_length;    unsigned short callback_function_location;} __attribute__((packed));typedef struct TRANSFER_FRAME_STRUCT TRANSFER_FRAME;#define UDC_MEMORY_BASE                    (cy_priv->cy_buf_addr)#define DEVICE_DESCRIPTOR_SIZE             0x12#define CONFIG_DESCRIPTOR_SIZE             0x100#define STRING_DESCRIPTOR_SIZE             0x100#define TXRX_STRUCT_SIZE                   sizeof(TRANSFER_FRAME)#define RECV_BUFF_LENGTH                   64#define SEND_BUFF_LENGTH                   (1024 + 2)#define MEM_PADDING                        32#define SIE0_BASE_MEMORY                   UDC_MEMORY_BASE#define SIE0_DEVICE_DESCRIPTOR_LOCATION    SIE0_BASE_MEMORY#define SIE0_CONFIG_DESCRIPTOR_LOCATION    \            (SIE0_DEVICE_DESCRIPTOR_LOCATION + DEVICE_DESCRIPTOR_SIZE)#define SIE0_STRING_DESCRIPTOR_LOCATION    \            (SIE0_CONFIG_DESCRIPTOR_LOCATION + CONFIG_DESCRIPTOR_SIZE)#define SIE0_RECV_STRUCT_ADDR              \            (SIE0_STRING_DESCRIPTOR_LOCATION + STRING_DESCRIPTOR_SIZE)#define SIE0_RECV_BUFF_ADDR                \            (SIE0_RECV_STRUCT_ADDR + 8*TXRX_STRUCT_SIZE)#define SIE0_SEND_STRUCT_ADDR              \            (SIE0_RECV_BUFF_ADDR + 8*RECV_BUFF_LENGTH)#define SIE0_SEND_BUFF_ADDR                \            (SIE0_SEND_STRUCT_ADDR + TXRX_STRUCT_SIZE)#define SIE0_MEM_END                       \            (SIE0_SEND_BUFF_ADDR + SEND_BUFF_LENGTH + MEM_PADDING)#define SIE1_BASE_MEMORY                   UDC_MEMORY_BASE#define SIE1_DEVICE_DESCRIPTOR_LOCATION    SIE1_BASE_MEMORY#define SIE1_CONFIG_DESCRIPTOR_LOCATION    \            (SIE1_DEVICE_DESCRIPTOR_LOCATION + DEVICE_DESCRIPTOR_SIZE)#define SIE1_STRING_DESCRIPTOR_LOCATION    \            (SIE1_CONFIG_DESCRIPTOR_LOCATION + CONFIG_DESCRIPTOR_SIZE)#define SIE1_RECV_STRUCT_ADDR              \            (SIE1_STRING_DESCRIPTOR_LOCATION + STRING_DESCRIPTOR_SIZE)#define SIE1_RECV_BUFF_ADDR                \            (SIE1_RECV_STRUCT_ADDR + 8*TXRX_STRUCT_SIZE)#define SIE1_SEND_STRUCT_ADDR              \            (SIE1_RECV_BUFF_ADDR + 8*RECV_BUFF_LENGTH)#define SIE1_SEND_BUFF_ADDR                \            (SIE1_SEND_STRUCT_ADDR + TXRX_STRUCT_SIZE)#define SIE1_MEM_END                       \            (SIE1_SEND_BUFF_ADDR + SEND_BUFF_LENGTH + MEM_PADDING)#define DESCRIPTOR_BUFFER_SIZE  0x100#define EP0_PACKETSIZE          8          #define UDC_MAX_ENDPOINTS       8          #define UDC_IRQ                 SL16_IRQ#define UDC_ADDR                SL16_ADDR #define UDC_ADDR_SIZE           4          #define UDC_NAME                "EZ-HOST"#define ERROR                   -1#define SUCCESS                 0#define CONTROL_EP_RECV_URB_COUNT           5#define OUT_EP_URB_COUNT                    5typedef struct sie_info {    unsigned short            susb_recv_interrupt;    unsigned short            susb_stall_interrupt;    unsigned short            susb_standard_int;    unsigned short            susb_standard_loader_vec;    unsigned short            susb_vendor_interrupt;    unsigned short            susb_vendor_loader_vec;    unsigned short            susb_class_interrupt;    unsigned short            susb_class_loader_vec;    unsigned short            susb_finish_interrupt;    unsigned short            susb_dev_desc_vec;    unsigned short            susb_config_desc_vec;    unsigned short            susb_string_desc_vec;    unsigned short            susb_parse_config_interrupt;    unsigned short            susb_loader_interrupt;    unsigned short            susb_delta_config_interrupt;        unsigned short            susb_init_interrupt;    unsigned short            susb_remote_wakeup_interrupt;    unsigned short            susb_start_srp_interrupt;    unsigned short            sie_dev_desc_location;    unsigned short            sie_config_desc_location;    unsigned short            sie_string_desc_location;    unsigned short            recv_struct_location;    unsigned short            recv_buffer_location;    unsigned short            recv_buffer_length;    unsigned short            send_struct_location;    unsigned short            send_buffer_location;    unsigned short            send_buffer_length;        struct usb_bus_instance *       bus;    //delete struct usb_device_instance *    device;    //delete struct usb_bus_driver *         bus_driver;    void *                          cy_priv;        unsigned char                   usb_address;    int                             udc_suspended;    int                             sie_number;    struct usb_endpoint_instance    *rcv_data_pend_ep[UDC_MAX_ENDPOINTS];}sie_info;typedef struct pcdi {    sie_info *          sie_data[2];}pcdi;extern void udc_rcv_urb_recycled(void);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?