diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/port/dwc3/gadget.h b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/port/dwc3/gadget.h index f3100e07e..ae90b7a53 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/port/dwc3/gadget.h +++ b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/port/dwc3/gadget.h @@ -4,6 +4,87 @@ #include #include #include "usbh_core.h" +#include "usb_list.h" + + +struct usb_ctrlrequest; +struct usb_ep; +struct usb_ep_caps; +struct usb_ep_ops; +struct usb_gadget; +struct usb_gadget_driver; +struct usb_ss_ep_comp_descriptor; + + + +struct usb_ctrlrequest { + uint8_t bRequestType; + uint8_t bRequest; + uint8_t wValue; +/* wIndex and wLength should be little end. */ + uint16_t wIndex; + uint16_t wLength; +} __attribute__ ((packed)); + + +struct usb_ep_caps { + uint8_t type_control:1; + uint8_t type_iso:1; + uint8_t type_bulk:1; + uint8_t type_int:1; + uint8_t dir_in:1; + uint8_t dir_out:1; +}; + +struct usb_ep { + void *driver_data; + const char *name; + const struct usb_ep_ops *ops; + usb_slist_t ep_list; + struct usb_ep_caps caps; + uint32_t maxpacket:16; + uint32_t maxpacket_limit:16; + uint32_t max_streams:16; + uint32_t maxburst:5; +/* usb_endpoint_descriptor is included in usb_def.h header files*/ + const struct usb_endpoint_descriptor *desc; + const struct usb_ss_ep_comp_descriptor *comp_desc; +}; + + + +struct usb_gadget_ops { + int (*get_frame)(struct usb_gadget *); + int (*wakeup)(struct usb_gadget *); + int (*set_selfpowered) (struct usb_gadget *, int is_selfpowered); + int (*vbus_draw) (struct usb_gadget *, unsigned mA); + int (*pullup) (struct usb_gadget *, int is_on); + int (*ioctl)(struct usb_gadget *, + unsigned code, unsigned long param); + int (*udc_start)(struct usb_gadget *, + struct usb_gadget_driver *); + int (*udc_stop)(struct usb_gadget *); + struct usb_ep *(*match_ep)(struct usb_gadget *, + struct usb_endpoint_descriptor *, + struct usb_ss_ep_comp_descriptor *); + void (*udc_set_speed)(struct usb_gadget *gadget, + int usb_device_speed); +}; + +struct usb_gadget_driver { + char *function; + int speed; + int (*bind)(struct usb_gadget *); + void (*unbind)(struct usb_gadget *); + int (*setup)(struct usb_gadget *, + const struct usb_ctrlrequest *); + void (*disconnect)(struct usb_gadget *); + void (*suspend)(struct usb_gadget *); + void (*resume)(struct usb_gadget *); + void (*reset)(struct usb_gadget *); +}; + + struct usb_gadget { int speed;