add DWC3 codes

This commit is contained in:
xj 2024-09-09 03:02:06 -07:00
parent 36bd413225
commit 33ac3e9048
1 changed files with 81 additions and 0 deletions

View File

@ -4,6 +4,87 @@
#include <strings.h>
#include <stdint.h>
#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;