📄 usb-host.h
字号:
#ifndef __LINUX_ETRAX_USB_H#define __LINUX_ETRAX_USB_H#include <linux/types.h>#include <linux/list.h>typedef struct USB_IN_Desc { __u16 sw_len; __u16 command; unsigned long next; unsigned long buf; __u16 hw_len; __u16 status;} USB_IN_Desc_t;typedef struct USB_SB_Desc { __u16 sw_len; __u16 command; unsigned long next; unsigned long buf; __u32 dummy;} USB_SB_Desc_t;typedef struct USB_EP_Desc { __u16 hw_len; __u16 command; unsigned long sub; unsigned long nep; __u32 dummy;} USB_EP_Desc_t;struct virt_root_hub { int devnum; void *urb; void *int_addr; int send; int interval; int numports; struct timer_list rh_int_timer; __u16 wPortChange_1; __u16 wPortChange_2; __u16 prev_wPortStatus_1; __u16 prev_wPortStatus_2;};struct etrax_usb_intr_traffic { int sleeping; int error; struct wait_queue *wq;};typedef struct etrax_usb_hc { struct usb_bus *bus; struct virt_root_hub rh; struct etrax_usb_intr_traffic intr;} etrax_hc_t;typedef enum {idle, eot, nodata} etrax_usb_rx_state_t;typedef struct etrax_usb_urb_priv { USB_SB_Desc_t *first_sb; __u32 rx_offset; etrax_usb_rx_state_t rx_state; __u8 eot; struct list_head ep_in_list;} etrax_urb_priv_t;struct usb_reg_context{ etrax_hc_t *hc; __u32 r_usb_epid_attn; __u8 r_usb_status; __u32 r_usb_rh_port_status_1; __u32 r_usb_rh_port_status_2; __u32 r_usb_irq_mask_read; struct tq_struct usb_bh;#if 0 __u32 r_usb_ept_data[32];#endif};struct in_chunk{ void *data; int length; char epid; struct list_head list;}; /* --------------------------------------------------------------------------- Virtual Root HUB ------------------------------------------------------------------------- *//* destination of request */#define RH_INTERFACE 0x01#define RH_ENDPOINT 0x02#define RH_OTHER 0x03#define RH_CLASS 0x20#define RH_VENDOR 0x40/* Requests: bRequest << 8 | bmRequestType */#define RH_GET_STATUS 0x0080#define RH_CLEAR_FEATURE 0x0100#define RH_SET_FEATURE 0x0300#define RH_SET_ADDRESS 0x0500#define RH_GET_DESCRIPTOR 0x0680#define RH_SET_DESCRIPTOR 0x0700#define RH_GET_CONFIGURATION 0x0880#define RH_SET_CONFIGURATION 0x0900#define RH_GET_STATE 0x0280#define RH_GET_INTERFACE 0x0A80#define RH_SET_INTERFACE 0x0B00#define RH_SYNC_FRAME 0x0C80/* Our Vendor Specific Request */#define RH_SET_EP 0x2000/* Hub port features */#define RH_PORT_CONNECTION 0x00#define RH_PORT_ENABLE 0x01#define RH_PORT_SUSPEND 0x02#define RH_PORT_OVER_CURRENT 0x03#define RH_PORT_RESET 0x04#define RH_PORT_POWER 0x08#define RH_PORT_LOW_SPEED 0x09#define RH_C_PORT_CONNECTION 0x10#define RH_C_PORT_ENABLE 0x11#define RH_C_PORT_SUSPEND 0x12#define RH_C_PORT_OVER_CURRENT 0x13#define RH_C_PORT_RESET 0x14/* Hub features */#define RH_C_HUB_LOCAL_POWER 0x00#define RH_C_HUB_OVER_CURRENT 0x01#define RH_DEVICE_REMOTE_WAKEUP 0x00#define RH_ENDPOINT_STALL 0x01/* Our Vendor Specific feature */#define RH_REMOVE_EP 0x00#define RH_ACK 0x01#define RH_REQ_ERR -1#define RH_NACK 0x00/* Field definitions for */#define USB_IN_command__eol__BITNR 0 /* command macros */#define USB_IN_command__eol__WIDTH 1#define USB_IN_command__eol__no 0#define USB_IN_command__eol__yes 1#define USB_IN_command__intr__BITNR 3#define USB_IN_command__intr__WIDTH 1#define USB_IN_command__intr__no 0#define USB_IN_command__intr__yes 1#define USB_IN_status__eop__BITNR 1 /* status macros. */#define USB_IN_status__eop__WIDTH 1#define USB_IN_status__eop__no 0#define USB_IN_status__eop__yes 1#define USB_IN_status__eot__BITNR 5#define USB_IN_status__eot__WIDTH 1#define USB_IN_status__eot__no 0#define USB_IN_status__eot__yes 1#define USB_IN_status__error__BITNR 6#define USB_IN_status__error__WIDTH 1#define USB_IN_status__error__no 0#define USB_IN_status__error__yes 1#define USB_IN_status__nodata__BITNR 7#define USB_IN_status__nodata__WIDTH 1#define USB_IN_status__nodata__no 0#define USB_IN_status__nodata__yes 1#define USB_IN_status__epid__BITNR 8#define USB_IN_status__epid__WIDTH 5#define USB_EP_command__eol__BITNR 0#define USB_EP_command__eol__WIDTH 1#define USB_EP_command__eol__no 0#define USB_EP_command__eol__yes 1#define USB_EP_command__eof__BITNR 1#define USB_EP_command__eof__WIDTH 1#define USB_EP_command__eof__no 0#define USB_EP_command__eof__yes 1#define USB_EP_command__intr__BITNR 3#define USB_EP_command__intr__WIDTH 1#define USB_EP_command__intr__no 0#define USB_EP_command__intr__yes 1#define USB_EP_command__enable__BITNR 4#define USB_EP_command__enable__WIDTH 1#define USB_EP_command__enable__no 0#define USB_EP_command__enable__yes 1#define USB_EP_command__hw_valid__BITNR 5#define USB_EP_command__hw_valid__WIDTH 1#define USB_EP_command__hw_valid__no 0#define USB_EP_command__hw_valid__yes 1#define USB_EP_command__epid__BITNR 8#define USB_EP_command__epid__WIDTH 5#define USB_SB_command__eol__BITNR 0 /* command macros. */#define USB_SB_command__eol__WIDTH 1#define USB_SB_command__eol__no 0#define USB_SB_command__eol__yes 1#define USB_SB_command__eot__BITNR 1#define USB_SB_command__eot__WIDTH 1#define USB_SB_command__eot__no 0#define USB_SB_command__eot__yes 1#define USB_SB_command__intr__BITNR 3#define USB_SB_command__intr__WIDTH 1#define USB_SB_command__intr__no 0#define USB_SB_command__intr__yes 1#define USB_SB_command__tt__BITNR 4#define USB_SB_command__tt__WIDTH 2#define USB_SB_command__tt__zout 0#define USB_SB_command__tt__in 1#define USB_SB_command__tt__out 2#define USB_SB_command__tt__setup 3#define USB_SB_command__rem__BITNR 8#define USB_SB_command__rem__WIDTH 6#define USB_SB_command__full__BITNR 6#define USB_SB_command__full__WIDTH 1#define USB_SB_command__full__no 0#define USB_SB_command__full__yes 1#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -