1 #define USB_DEVICE_DESCRIPTOR_TYPE 0x01
2 #define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02
3 #define USB_STRING_DESCRIPTOR_TYPE 0x03
4 #define USB_INTERFACE_DESCRIPTOR_TYPE 0x04
5 #define USB_ENDPOINT_DESCRIPTOR_TYPE 0x05
7 #define STANDARD_ENDPOINT_DESC_SIZE 0x09
9 /* endpoints enumeration */
10 #define ENDP0 ((uint8_t)0)
11 #define ENDP1 ((uint8_t)1)
12 #define ENDP2 ((uint8_t)2)
13 #define ENDP3 ((uint8_t)3)
14 #define ENDP4 ((uint8_t)4)
15 #define ENDP5 ((uint8_t)5)
16 #define ENDP6 ((uint8_t)6)
17 #define ENDP7 ((uint8_t)7)
19 /* EP_TYPE[1:0] EndPoint TYPE */
20 #define EP_BULK (0x0000) /* EndPoint BULK */
21 #define EP_CONTROL (0x0200) /* EndPoint CONTROL */
22 #define EP_ISOCHRONOUS (0x0400) /* EndPoint ISOCHRONOUS */
23 #define EP_INTERRUPT (0x0600) /* EndPoint INTERRUPT */
27 DEVICE_RECIPIENT, /* Recipient device */
28 INTERFACE_RECIPIENT, /* Recipient interface */
29 ENDPOINT_RECIPIENT, /* Recipient endpoint */
35 DEVICE_DESCRIPTOR = 1,
42 #define REQUEST_DIR 0x80 /* Mask to get request dir */
43 #define REQUEST_TYPE 0x60 /* Mask to get request type */
44 #define STANDARD_REQUEST 0x00 /* Standard request */
45 #define CLASS_REQUEST 0x20 /* Class request */
46 #define VENDOR_REQUEST 0x40 /* Vendor request */
47 #define RECIPIENT 0x1F /* Mask to get recipient */
49 #define USB_SETUP_SET(req) ((req & REQUEST_DIR) == 0)
50 #define USB_SETUP_GET(req) ((req & REQUEST_DIR) != 0)
58 void usb_cb_device_reset (void);
59 void usb_cb_ctrl_write_finish (uint8_t req, uint8_t req_no,
60 uint16_t value, uint16_t index, uint16_t len);
61 int usb_cb_setup (uint8_t req, uint8_t req_no, uint16_t value,
62 uint16_t index, uint16_t len);
63 int usb_cb_get_descriptor (uint8_t rcp, uint8_t desc_type, uint8_t desc_index,
64 uint16_t index, uint16_t length);
65 int usb_cb_handle_event (uint8_t event_type, uint16_t value);
66 int usb_cb_interface (uint8_t cmd, uint16_t interface, uint16_t value);
93 void usb_lld_init (uint8_t feature);
94 void usb_lld_to_pmabuf (const void *src, uint16_t addr, size_t n);
95 void usb_lld_from_pmabuf (void *dst, uint16_t addr, size_t n);
96 void usb_lld_stall_tx (int ep_num);
97 void usb_lld_stall_rx (int ep_num);
98 int usb_lld_tx_data_len (int ep_num);
99 void usb_lld_txcpy (const void *src, int ep_num, int offset, size_t len);
100 void usb_lld_tx_enable (int ep_num, size_t len);
101 void usb_lld_write (uint8_t ep_num, const void *buf, size_t len);
102 void usb_lld_rx_enable (int ep_num);
103 int usb_lld_rx_data_len (int ep_num);
104 void usb_lld_rxcpy (uint8_t *dst, int ep_num, int offset, size_t len);
105 void usb_lld_reset (void);
106 void usb_lld_setup_endpoint (int ep_num, int ep_type, int ep_kind,
107 int ep_rx_addr, int ep_tx_addr,
108 int ep_rx_memory_size);
109 void usb_lld_set_configuration (uint8_t config);
110 uint8_t usb_lld_current_configuration (void);
111 void usb_lld_set_feature (uint8_t feature);
112 void usb_lld_set_data_to_send (const void *p, size_t len);
114 extern inline void usb_lld_set_data_to_recv (void *p, size_t len)
116 usb_lld_set_data_to_send ((const void *)p, len);
119 void usb_lld_prepare_shutdown (void);
120 void usb_lld_shutdown (void);
122 void usb_interrupt_handler (void);