Lines Matching refs:hpriv
109 #define usbhsh_for_each_udev(pos, hpriv, i) \ argument
110 __usbhsh_for_each_udev(1, pos, hpriv, i)
112 #define usbhsh_for_each_udev_with_dev0(pos, hpriv, i) \ argument
113 __usbhsh_for_each_udev(0, pos, hpriv, i)
155 static struct usbhsh_request *usbhsh_ureq_alloc(struct usbhsh_hpriv *hpriv, in usbhsh_ureq_alloc() argument
172 static void usbhsh_ureq_free(struct usbhsh_hpriv *hpriv, in usbhsh_ureq_free() argument
184 static int usbhsh_is_running(struct usbhsh_hpriv *hpriv) in usbhsh_is_running() argument
193 return (hpriv->mod.irq_attch == NULL); in usbhsh_is_running()
199 static void usbhsh_endpoint_sequence_save(struct usbhsh_hpriv *hpriv, in usbhsh_endpoint_sequence_save() argument
241 static struct usbhsh_device *usbhsh_device_get(struct usbhsh_hpriv *hpriv,
244 static int usbhsh_pipe_attach(struct usbhsh_hpriv *hpriv, in usbhsh_pipe_attach() argument
247 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_pipe_attach()
249 struct usbhsh_device *udev = usbhsh_device_get(hpriv, urb); in usbhsh_pipe_attach()
300 usbhsh_device_number(hpriv, udev), in usbhsh_pipe_attach()
305 usbhsh_device_number(hpriv, udev), in usbhsh_pipe_attach()
324 static void usbhsh_pipe_detach(struct usbhsh_hpriv *hpriv, in usbhsh_pipe_detach() argument
327 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_pipe_detach()
353 usbhsh_device_number(hpriv, udev), in usbhsh_pipe_detach()
365 static int usbhsh_endpoint_attach(struct usbhsh_hpriv *hpriv, in usbhsh_endpoint_attach() argument
369 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_endpoint_attach()
370 struct usbhsh_device *udev = usbhsh_device_get(hpriv, urb); in usbhsh_endpoint_attach()
399 usbhsh_device_number(hpriv, udev), in usbhsh_endpoint_attach()
405 static void usbhsh_endpoint_detach(struct usbhsh_hpriv *hpriv, in usbhsh_endpoint_detach() argument
408 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_endpoint_detach()
417 usbhsh_device_number(hpriv, usbhsh_uep_to_udev(uep)), in usbhsh_endpoint_detach()
421 usbhsh_pipe_detach(hpriv, uep); in usbhsh_endpoint_detach()
439 static void usbhsh_endpoint_detach_all(struct usbhsh_hpriv *hpriv, in usbhsh_endpoint_detach_all() argument
445 usbhsh_endpoint_detach(hpriv, usbhsh_uep_to_ep(uep)); in usbhsh_endpoint_detach_all()
464 static struct usbhsh_device *usbhsh_device_get(struct usbhsh_hpriv *hpriv, in usbhsh_device_get() argument
476 return usbhsh_device0(hpriv); in usbhsh_device_get()
482 static struct usbhsh_device *usbhsh_device_attach(struct usbhsh_hpriv *hpriv, in usbhsh_device_attach() argument
486 struct usbhsh_device *udev0 = usbhsh_device0(hpriv); in usbhsh_device_attach()
488 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv); in usbhsh_device_attach()
491 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_device_attach()
514 usbhsh_for_each_udev(pos, hpriv, i) { in usbhsh_device_attach()
541 usbhsh_endpoint_detach_all(hpriv, udev); in usbhsh_device_attach()
546 usbhsh_endpoint_detach_all(hpriv, udev0); in usbhsh_device_attach()
568 upphub = usbhsh_device_number(hpriv, parent); in usbhsh_device_attach()
576 usbhsh_device_number(hpriv, udev), in usbhsh_device_attach()
580 usbhsh_device_number(hpriv, udev), udev); in usbhsh_device_attach()
585 static void usbhsh_device_detach(struct usbhsh_hpriv *hpriv, in usbhsh_device_detach() argument
588 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv); in usbhsh_device_detach()
589 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_device_detach()
595 usbhsh_device_number(hpriv, udev), udev); in usbhsh_device_detach()
599 usbhsh_endpoint_detach_all(hpriv, udev); in usbhsh_device_detach()
608 if (0 == usbhsh_device_number(hpriv, udev)) in usbhsh_device_detach()
632 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_queue_done() local
633 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv); in usbhsh_queue_done()
645 if (!usbhsh_is_running(hpriv)) in usbhsh_queue_done()
650 usbhsh_endpoint_sequence_save(hpriv, urb, pkt); in usbhsh_queue_done()
651 usbhsh_ureq_free(hpriv, ureq); in usbhsh_queue_done()
653 usbhsh_pipe_detach(hpriv, usbhsh_ep_to_uep(urb->ep)); in usbhsh_queue_done()
663 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd); in usbhsh_queue_push() local
677 ureq = usbhsh_ureq_alloc(hpriv, urb, mem_flags); in usbhsh_queue_push()
749 static void usbhsh_setup_stage_packet_push(struct usbhsh_hpriv *hpriv, in usbhsh_setup_stage_packet_push() argument
753 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_setup_stage_packet_push()
763 init_completion(&hpriv->setup_ack_done); in usbhsh_setup_stage_packet_push()
779 req.wValue = usbhsh_device_number(hpriv, udev); in usbhsh_setup_stage_packet_push()
789 wait_for_completion(&hpriv->setup_ack_done); in usbhsh_setup_stage_packet_push()
801 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_data_stage_packet_done() local
805 usbhsh_ureq_free(hpriv, ureq); in usbhsh_data_stage_packet_done()
808 static int usbhsh_data_stage_packet_push(struct usbhsh_hpriv *hpriv, in usbhsh_data_stage_packet_push() argument
817 ureq = usbhsh_ureq_alloc(hpriv, urb, mem_flags); in usbhsh_data_stage_packet_push()
839 static int usbhsh_status_stage_packet_push(struct usbhsh_hpriv *hpriv, in usbhsh_status_stage_packet_push() argument
847 ureq = usbhsh_ureq_alloc(hpriv, urb, mem_flags); in usbhsh_status_stage_packet_push()
869 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd); in usbhsh_dcp_queue_push() local
882 usbhsh_setup_stage_packet_push(hpriv, urb, pipe); in usbhsh_dcp_queue_push()
890 ret = usbhsh_data_stage_packet_push(hpriv, urb, pipe, mflags); in usbhsh_dcp_queue_push()
900 ret = usbhsh_status_stage_packet_push(hpriv, urb, pipe, mflags); in usbhsh_dcp_queue_push()
952 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd); in usbhsh_urb_enqueue() local
953 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_urb_enqueue()
962 if (!usbhsh_is_running(hpriv)) { in usbhsh_urb_enqueue()
978 if (!usbhsh_device_get(hpriv, urb)) { in usbhsh_urb_enqueue()
979 new_udev = usbhsh_device_attach(hpriv, urb); in usbhsh_urb_enqueue()
992 ret = usbhsh_endpoint_attach(hpriv, urb, mem_flags); in usbhsh_urb_enqueue()
1003 ret = usbhsh_pipe_attach(hpriv, urb); in usbhsh_urb_enqueue()
1020 usbhsh_endpoint_detach(hpriv, ep); in usbhsh_urb_enqueue()
1023 usbhsh_device_detach(hpriv, new_udev); in usbhsh_urb_enqueue()
1033 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd); in usbhsh_urb_dequeue() local
1037 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_urb_dequeue()
1052 struct usbhsh_hpriv *hpriv; in usbhsh_endpoint_disable() local
1062 hpriv = usbhsh_hcd_to_hpriv(hcd); in usbhsh_endpoint_disable()
1064 usbhsh_endpoint_detach(hpriv, ep); in usbhsh_endpoint_disable()
1071 usbhsh_device_detach(hpriv, udev); in usbhsh_endpoint_disable()
1076 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd); in usbhsh_hub_status_data() local
1083 if (usbhsh_port_stat_get(hpriv) & 0xFFFF0000) in usbhsh_hub_status_data()
1091 static int __usbhsh_hub_hub_feature(struct usbhsh_hpriv *hpriv, in __usbhsh_hub_hub_feature() argument
1095 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in __usbhsh_hub_hub_feature()
1108 static int __usbhsh_hub_port_feature(struct usbhsh_hpriv *hpriv, in __usbhsh_hub_port_feature() argument
1112 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in __usbhsh_hub_port_feature()
1143 usbhsh_port_stat_clear(hpriv, in __usbhsh_hub_port_feature()
1171 usbhsh_port_stat_set(hpriv, speed); in __usbhsh_hub_port_feature()
1172 usbhsh_port_stat_set(hpriv, USB_PORT_STAT_ENABLE); in __usbhsh_hub_port_feature()
1186 usbhsh_port_stat_set(hpriv, (1 << wValue)); in __usbhsh_hub_port_feature()
1188 usbhsh_port_stat_clear(hpriv, (1 << wValue)); in __usbhsh_hub_port_feature()
1193 static int __usbhsh_hub_get_status(struct usbhsh_hpriv *hpriv, in __usbhsh_hub_get_status() argument
1197 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in __usbhsh_hub_get_status()
1214 *(__le32 *)buf = cpu_to_le32(usbhsh_port_stat_get(hpriv)); in __usbhsh_hub_get_status()
1237 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd); in usbhsh_hub_control() local
1238 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_hub_control()
1247 ret = __usbhsh_hub_hub_feature(hpriv, typeReq, in usbhsh_hub_control()
1254 ret = __usbhsh_hub_port_feature(hpriv, typeReq, in usbhsh_hub_control()
1262 ret = __usbhsh_hub_get_status(hpriv, typeReq, in usbhsh_hub_control()
1268 typeReq, ret, usbhsh_port_stat_get(hpriv)); in usbhsh_hub_control()
1313 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_irq_attch() local
1318 usbhsh_port_stat_set(hpriv, USB_PORT_STAT_CONNECTION); in usbhsh_irq_attch()
1319 usbhsh_port_stat_set(hpriv, USB_PORT_STAT_C_CONNECTION << 16); in usbhsh_irq_attch()
1332 hpriv->mod.irq_attch = NULL; in usbhsh_irq_attch()
1333 usbhs_irq_callback_update(priv, &hpriv->mod); in usbhsh_irq_attch()
1341 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_irq_dtch() local
1346 usbhsh_port_stat_clear(hpriv, USB_PORT_STAT_CONNECTION); in usbhsh_irq_dtch()
1347 usbhsh_port_stat_set(hpriv, USB_PORT_STAT_C_CONNECTION << 16); in usbhsh_irq_dtch()
1358 hpriv->mod.irq_attch = usbhsh_irq_attch; in usbhsh_irq_dtch()
1359 usbhs_irq_callback_update(priv, &hpriv->mod); in usbhsh_irq_dtch()
1373 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_irq_setup_ack() local
1378 complete(&hpriv->setup_ack_done); /* see usbhsh_urb_enqueue() */ in usbhsh_irq_setup_ack()
1386 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_irq_setup_err() local
1391 complete(&hpriv->setup_ack_done); /* see usbhsh_urb_enqueue() */ in usbhsh_irq_setup_err()
1401 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_pipe_init_for_host() local
1437 usbhsh_hpriv_to_dcp(hpriv) = pipe; in usbhsh_pipe_init_for_host()
1450 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_start() local
1451 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv); in usbhsh_start()
1494 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_stop() local
1495 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv); in usbhsh_stop()
1520 struct usbhsh_hpriv *hpriv; in usbhs_mod_host_probe() local
1542 hpriv = usbhsh_hcd_to_hpriv(hcd); in usbhs_mod_host_probe()
1547 usbhs_mod_register(priv, &hpriv->mod, USBHS_HOST); in usbhs_mod_host_probe()
1550 hpriv->mod.name = "host"; in usbhs_mod_host_probe()
1551 hpriv->mod.start = usbhsh_start; in usbhs_mod_host_probe()
1552 hpriv->mod.stop = usbhsh_stop; in usbhs_mod_host_probe()
1553 usbhsh_port_stat_init(hpriv); in usbhs_mod_host_probe()
1556 usbhsh_for_each_udev_with_dev0(udev, hpriv, i) { in usbhs_mod_host_probe()
1568 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhs_mod_host_remove() local
1569 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv); in usbhs_mod_host_remove()