Lines Matching refs:hcd

26 static rt_err_t root_hub_ctrl(struct uhcd *hcd, rt_uint16_t port, rt_uint8_t cmd, void *args)  in root_hub_ctrl()  argument
31 (*(rt_uint32_t *)args) = hcd->roothub->port_status[port-1]; in root_hub_ctrl()
34 hcd->roothub->port_status[port-1] = (*(rt_uint32_t *)args); in root_hub_ctrl()
40 hcd->roothub->port_status[port-1] &= ~PORT_CCSC; in root_hub_ctrl()
43 hcd->roothub->port_status[port-1] &= ~PORT_PESC; in root_hub_ctrl()
46 hcd->roothub->port_status[port-1] &= ~PORT_PSSC; in root_hub_ctrl()
49 hcd->roothub->port_status[port-1] &= ~PORT_POCIC; in root_hub_ctrl()
52 hcd->roothub->port_status[port-1] &= ~PORT_PRSC; in root_hub_ctrl()
60 hcd->roothub->port_status[port-1] |= PORT_CCSC; in root_hub_ctrl()
63 hcd->roothub->port_status[port-1] |= PORT_PESC; in root_hub_ctrl()
66 hcd->roothub->port_status[port-1] |= PORT_PSSC; in root_hub_ctrl()
69 hcd->roothub->port_status[port-1] |= PORT_POCIC; in root_hub_ctrl()
72 hcd->ops->reset_port(port); in root_hub_ctrl()
87 void rt_usbh_root_hub_connect_handler(struct uhcd *hcd, rt_uint8_t port, rt_bool_t isHS) in rt_usbh_root_hub_connect_handler() argument
91 msg.content.hub = hcd->roothub; in rt_usbh_root_hub_connect_handler()
92 hcd->roothub->port_status[port - 1] |= PORT_CCS | PORT_CCSC; in rt_usbh_root_hub_connect_handler()
95 hcd->roothub->port_status[port - 1] &= ~PORT_LSDA; in rt_usbh_root_hub_connect_handler()
99 hcd->roothub->port_status[port - 1] |= PORT_LSDA; in rt_usbh_root_hub_connect_handler()
101 rt_usbh_event_signal(hcd, &msg); in rt_usbh_root_hub_connect_handler()
104 void rt_usbh_root_hub_disconnect_handler(struct uhcd *hcd, rt_uint8_t port) in rt_usbh_root_hub_disconnect_handler() argument
108 msg.content.hub = hcd->roothub; in rt_usbh_root_hub_disconnect_handler()
109 hcd->roothub->port_status[port - 1] |= PORT_CCSC; in rt_usbh_root_hub_disconnect_handler()
110 hcd->roothub->port_status[port - 1] &= ~PORT_CCS; in rt_usbh_root_hub_disconnect_handler()
111 rt_usbh_event_signal(hcd, &msg); in rt_usbh_root_hub_disconnect_handler()
138 if(rt_usb_hcd_setup_xfer(device->hcd, device->pipe_ep0_out, &setup, timeout) == 8) in rt_usbh_hub_get_descriptor()
140 … if(rt_usb_hcd_pipe_xfer(device->hcd, device->pipe_ep0_in, buffer, nbytes, timeout) == nbytes) in rt_usbh_hub_get_descriptor()
170 if(rt_usb_hcd_setup_xfer(device->hcd, device->pipe_ep0_out, &setup, timeout) == 8) in rt_usbh_hub_get_status()
172 if(rt_usb_hcd_pipe_xfer(device->hcd, device->pipe_ep0_in, buffer, 4, timeout) == 4) in rt_usbh_hub_get_status()
201 root_hub_ctrl(hub->hcd, port, RH_GET_PORT_STATUS, in rt_usbh_hub_get_port_status()
212 if(rt_usb_hcd_setup_xfer(hub->hcd, hub->self->pipe_ep0_out, &setup, timeout) == 8) in rt_usbh_hub_get_port_status()
214 if(rt_usb_hcd_pipe_xfer(hub->hcd, hub->self->pipe_ep0_in, buffer, 4, timeout) == 4) in rt_usbh_hub_get_port_status()
243 root_hub_ctrl(hub->hcd, port, RH_CLEAR_PORT_FEATURE, in rt_usbh_hub_clear_port_feature()
255 if(rt_usb_hcd_setup_xfer(hub->hcd, hub->self->pipe_ep0_out, &setup, timeout) == 8) in rt_usbh_hub_clear_port_feature()
284 root_hub_ctrl(hub->hcd, port, RH_SET_PORT_FEATURE, in rt_usbh_hub_set_port_feature()
296 if(rt_usb_hcd_setup_xfer(hub->hcd, hub->self->pipe_ep0_out, &setup, timeout) == 8) in rt_usbh_hub_set_port_feature()
438 device = rt_usbh_alloc_instance(hub->hcd); in rt_usbh_hub_port_change()
444 device->hcd = hub->hcd; in rt_usbh_hub_port_change()
488 RT_ASSERT(pipe->inst->hcd != RT_NULL); in rt_usbh_hub_irq()
490 rt_usb_hcd_pipe_xfer(hub->self->hcd, pipe, hub->buffer, pipe->ep.wMaxPacketSize, timeout); in rt_usbh_hub_irq()
550 hub->hcd = device->hcd; in rt_usbh_hub_enable()
590 RT_ASSERT(device->hcd != RT_NULL); in rt_usbh_hub_enable()
592 rt_usb_hcd_pipe_xfer(hub->hcd, pipe_in, hub->buffer, in rt_usbh_hub_enable()
654 uhcd_t hcd = (uhcd_t)parameter; in rt_usbh_hub_thread_entry() local
660 if (rt_mq_recv(hcd->usb_mq, &msg, sizeof(struct uhost_msg), RT_WAITING_FOREVER) < 0) in rt_usbh_hub_thread_entry()
685 rt_err_t rt_usbh_event_signal(uhcd_t hcd, struct uhost_msg* msg) in rt_usbh_event_signal() argument
690 rt_mq_send(hcd->usb_mq, (void*)msg, sizeof(struct uhost_msg)); in rt_usbh_event_signal()
701 void rt_usbh_hub_init(uhcd_t hcd) in rt_usbh_hub_init() argument
705 hcd->roothub = rt_malloc(sizeof(struct uhub)); in rt_usbh_hub_init()
706 if(hcd->roothub == RT_NULL) in rt_usbh_hub_init()
711 rt_memset(hcd->roothub, 0, sizeof(struct uhub)); in rt_usbh_hub_init()
712 hcd->roothub->is_roothub = RT_TRUE; in rt_usbh_hub_init()
713 hcd->roothub->hcd = hcd; in rt_usbh_hub_init()
714 hcd->roothub->num_ports = hcd->num_ports; in rt_usbh_hub_init()
717 hcd->usb_mq = rt_mq_create(hcd->parent.parent.name, 32, 16, RT_IPC_FLAG_FIFO); in rt_usbh_hub_init()
720 thread = rt_thread_create(hcd->parent.parent.name, rt_usbh_hub_thread_entry, hcd, in rt_usbh_hub_init()