12#ifndef __RT_USB_HOST_H__
13#define __RT_USB_HOST_H__
22#define USB_MAX_DEVICE 0x20
23#define USB_MAX_INTERFACE 0x08
24#define USB_HUB_PORT_NUM 0x04
25#define SIZEOF_USB_REQUEST 0x08
27#define DEV_STATUS_IDLE 0x00
28#define DEV_STATUS_BUSY 0x01
29#define DEV_STATUS_ERROR 0x02
31#define UPIPE_STATUS_OK 0x00
32#define UPIPE_STATUS_STALL 0x01
33#define UPIPE_STATUS_ERROR 0x02
35#define USBH_PID_SETUP 0x00
36#define USBH_PID_DATA 0x01
242 (*pipe)->inst = inst;
248 pipe->callback = callback;
rt_inline void rt_list_insert_before(rt_list_t *l, rt_list_t *n)
insert a node before a list
#define rt_list_entry(node, type, member)
get the struct for this entry
rt_weak void rt_free(void *ptr)
This function will release the previously allocated memory block by rt_malloc. The released memory bl...
rt_weak void * rt_malloc(rt_size_t size)
Allocate a block of memory with a minimum of 'size' bytes.
unsigned short rt_uint16_t
struct rt_list_node rt_list_t
struct rt_list_node * next
rt_err_t(* disable)(void *arg)
rt_err_t(* enable)(void *arg)
rt_err_t(* close_pipe)(upipe_t pipe)
rt_err_t(* open_pipe)(upipe_t pipe)
rt_err_t(* reset_port)(rt_uint8_t port)
int(* pipe_xfer)(upipe_t pipe, rt_uint8_t token, void *buffer, int nbytes, int timeout)
struct rt_messagequeue * usb_mq
struct uinstance * device
struct uhost_msg::@020305060061050274016071270013030133242316335024::@107347266142322172023002154023040246357005133104 cb
union uhost_msg::@020305060061050274016071270013030133242316335024 content
struct uhub_descriptor hub_desc
rt_uint32_t port_status[USB_HUB_PORT_NUM]
struct uinstance * child[USB_HUB_PORT_NUM]
struct uhintf * intf[USB_MAX_INTERFACE]
struct upipe * pipe_ep0_in
rt_uint8_t max_packet_size
struct upipe * pipe_ep0_out
struct udevice_descriptor dev_desc
struct uendpoint_descriptor ep
rt_err_t(* init)(void *arg)
rt_err_t(* callback)(void *arg)
struct uinterface_descriptor * uintf_desc_t
void(* func_callback)(void *context)
struct uendpoint_descriptor * uep_desc_t
struct uconfig_descriptor * ucfg_desc_t
rt_err_t rt_usbh_hub_get_status(struct uinstance *device, rt_uint32_t *buffer)
struct uhcd_ops * uhcd_ops_t
rt_err_t rt_usbh_class_driver_unregister(ucd_t drv)
rt_err_t rt_usbh_hub_reset_port(uhub_t uhub, rt_uint16_t port)
rt_err_t rt_usbh_class_driver_register(ucd_t drv)
rt_err_t rt_usbh_set_configure(struct uinstance *device, int config)
void rt_usbh_root_hub_connect_handler(struct uhcd *hcd, rt_uint8_t port, rt_bool_t isHS)
rt_inline void rt_usb_pipe_add_callback(upipe_t pipe, func_callback callback)
rt_err_t rt_usbh_hub_get_port_status(uhub_t uhub, rt_uint16_t port, rt_uint32_t *buffer)
rt_inline int rt_usb_hcd_setup_xfer(uhcd_t hcd, upipe_t pipe, ureq_t setup, int timeout)
rt_err_t rt_usbh_set_address(struct uinstance *device)
rt_err_t rt_usb_host_init(const char *name)
rt_err_t rt_usbh_hub_set_port_feature(uhub_t uhub, rt_uint16_t port, rt_uint16_t feature)
void rt_usbh_hub_init(struct uhcd *hcd)
rt_err_t rt_usbh_class_driver_disable(ucd_t drv, void *args)
rt_err_t rt_usbh_get_endpoint_descriptor(uintf_desc_t intf_desc, int num, uep_desc_t *ep_desc)
rt_inline rt_err_t rt_usb_hcd_free_pipe(uhcd_t hcd, upipe_t pipe)
struct uinstance * uinst_t
rt_err_t rt_usbh_hub_get_descriptor(struct uinstance *device, rt_uint8_t *buffer, rt_size_t size)
struct uinstance * rt_usbh_alloc_instance(uhcd_t uhcd)
rt_err_t rt_usbh_attatch_instance(struct uinstance *device)
struct uhost_msg * uhost_msg_t
#define USB_MAX_INTERFACE
rt_err_t rt_usbh_get_interface_descriptor(ucfg_desc_t cfg_desc, int num, uintf_desc_t *intf_desc)
rt_err_t rt_usbh_clear_feature(struct uinstance *device, int endpoint, int feature)
rt_err_t rt_usbh_set_interface(struct uinstance *device, int intf)
rt_err_t rt_usbh_detach_instance(struct uinstance *device)
struct uprotocal * uprotocal_t
rt_err_t rt_usbh_class_driver_enable(ucd_t drv, void *args)
ucd_t rt_usbh_class_driver_hub(void)
rt_inline upipe_t rt_usb_instance_find_pipe(uinst_t inst, rt_uint8_t ep_address)
int rt_usb_hcd_pipe_xfer(uhcd_t hcd, upipe_t pipe, void *buffer, int nbytes, int timeout)
struct uclass_driver * ucd_t
ucd_t rt_usbh_class_driver_find(int class_code, int subclass_code)
rt_err_t rt_usbh_class_driver_init(void)
rt_err_t rt_usbh_hub_clear_port_feature(uhub_t uhub, rt_uint16_t port, rt_uint16_t feature)
rt_inline rt_err_t rt_usb_hcd_alloc_pipe(uhcd_t hcd, upipe_t *pipe, uinst_t inst, uep_desc_t ep)
void rt_usbh_root_hub_disconnect_handler(struct uhcd *hcd, rt_uint8_t port)
ucd_t rt_usbh_class_driver_storage(void)
rt_inline rt_err_t rt_usb_instance_add_pipe(uinst_t inst, upipe_t pipe)
rt_err_t rt_usbh_event_signal(uhcd_t uhcd, struct uhost_msg *msg)
rt_err_t rt_usbh_get_descriptor(struct uinstance *device, rt_uint8_t type, void *buffer, int nbytes)