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 + -
显示快捷键?