Lines Matching refs:hpriv
118 #define usbhsh_for_each_udev(pos, hpriv, i) \ argument
119 __usbhsh_for_each_udev(1, pos, hpriv, i)
121 #define usbhsh_for_each_udev_with_dev0(pos, hpriv, i) \ argument
122 __usbhsh_for_each_udev(0, pos, hpriv, i)
164 static struct usbhsh_request *usbhsh_ureq_alloc(struct usbhsh_hpriv *hpriv, in usbhsh_ureq_alloc() argument
169 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_ureq_alloc()
185 static void usbhsh_ureq_free(struct usbhsh_hpriv *hpriv, in usbhsh_ureq_free() argument
197 static int usbhsh_is_running(struct usbhsh_hpriv *hpriv) in usbhsh_is_running() argument
206 return (hpriv->mod.irq_attch == NULL); in usbhsh_is_running()
212 static void usbhsh_endpoint_sequence_save(struct usbhsh_hpriv *hpriv, in usbhsh_endpoint_sequence_save() argument
254 static struct usbhsh_device *usbhsh_device_get(struct usbhsh_hpriv *hpriv,
257 static int usbhsh_pipe_attach(struct usbhsh_hpriv *hpriv, in usbhsh_pipe_attach() argument
260 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_pipe_attach()
262 struct usbhsh_device *udev = usbhsh_device_get(hpriv, urb); in usbhsh_pipe_attach()
313 usbhsh_device_number(hpriv, udev), in usbhsh_pipe_attach()
318 usbhsh_device_number(hpriv, udev), in usbhsh_pipe_attach()
337 static void usbhsh_pipe_detach(struct usbhsh_hpriv *hpriv, in usbhsh_pipe_detach() argument
340 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_pipe_detach()
366 usbhsh_device_number(hpriv, udev), in usbhsh_pipe_detach()
378 static int usbhsh_endpoint_attach(struct usbhsh_hpriv *hpriv, in usbhsh_endpoint_attach() argument
382 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_endpoint_attach()
383 struct usbhsh_device *udev = usbhsh_device_get(hpriv, urb); in usbhsh_endpoint_attach()
414 usbhsh_device_number(hpriv, udev), in usbhsh_endpoint_attach()
420 static void usbhsh_endpoint_detach(struct usbhsh_hpriv *hpriv, in usbhsh_endpoint_detach() argument
423 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_endpoint_detach()
432 usbhsh_device_number(hpriv, usbhsh_uep_to_udev(uep)), in usbhsh_endpoint_detach()
436 usbhsh_pipe_detach(hpriv, uep); in usbhsh_endpoint_detach()
454 static void usbhsh_endpoint_detach_all(struct usbhsh_hpriv *hpriv, in usbhsh_endpoint_detach_all() argument
460 usbhsh_endpoint_detach(hpriv, usbhsh_uep_to_ep(uep)); in usbhsh_endpoint_detach_all()
479 static struct usbhsh_device *usbhsh_device_get(struct usbhsh_hpriv *hpriv, in usbhsh_device_get() argument
491 return usbhsh_device0(hpriv); in usbhsh_device_get()
497 static struct usbhsh_device *usbhsh_device_attach(struct usbhsh_hpriv *hpriv, in usbhsh_device_attach() argument
501 struct usbhsh_device *udev0 = usbhsh_device0(hpriv); in usbhsh_device_attach()
503 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv); in usbhsh_device_attach()
506 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_device_attach()
529 usbhsh_for_each_udev(pos, hpriv, i) { in usbhsh_device_attach()
556 usbhsh_endpoint_detach_all(hpriv, udev); in usbhsh_device_attach()
561 usbhsh_endpoint_detach_all(hpriv, udev0); in usbhsh_device_attach()
583 upphub = usbhsh_device_number(hpriv, parent); in usbhsh_device_attach()
591 usbhsh_device_number(hpriv, udev), in usbhsh_device_attach()
595 usbhsh_device_number(hpriv, udev), udev); in usbhsh_device_attach()
600 static void usbhsh_device_detach(struct usbhsh_hpriv *hpriv, in usbhsh_device_detach() argument
603 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv); in usbhsh_device_detach()
604 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_device_detach()
610 usbhsh_device_number(hpriv, udev), udev); in usbhsh_device_detach()
614 usbhsh_endpoint_detach_all(hpriv, udev); in usbhsh_device_detach()
623 if (0 == usbhsh_device_number(hpriv, udev)) in usbhsh_device_detach()
647 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_queue_done() local
648 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv); in usbhsh_queue_done()
660 if (!usbhsh_is_running(hpriv)) in usbhsh_queue_done()
665 usbhsh_endpoint_sequence_save(hpriv, urb, pkt); in usbhsh_queue_done()
666 usbhsh_ureq_free(hpriv, ureq); in usbhsh_queue_done()
668 usbhsh_pipe_detach(hpriv, usbhsh_ep_to_uep(urb->ep)); in usbhsh_queue_done()
678 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd); in usbhsh_queue_push() local
692 ureq = usbhsh_ureq_alloc(hpriv, urb, mem_flags); in usbhsh_queue_push()
764 static void usbhsh_setup_stage_packet_push(struct usbhsh_hpriv *hpriv, in usbhsh_setup_stage_packet_push() argument
768 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_setup_stage_packet_push()
778 init_completion(&hpriv->setup_ack_done); in usbhsh_setup_stage_packet_push()
794 req.wValue = usbhsh_device_number(hpriv, udev); in usbhsh_setup_stage_packet_push()
804 wait_for_completion(&hpriv->setup_ack_done); in usbhsh_setup_stage_packet_push()
816 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_data_stage_packet_done() local
820 usbhsh_ureq_free(hpriv, ureq); in usbhsh_data_stage_packet_done()
823 static int usbhsh_data_stage_packet_push(struct usbhsh_hpriv *hpriv, in usbhsh_data_stage_packet_push() argument
832 ureq = usbhsh_ureq_alloc(hpriv, urb, mem_flags); in usbhsh_data_stage_packet_push()
854 static int usbhsh_status_stage_packet_push(struct usbhsh_hpriv *hpriv, in usbhsh_status_stage_packet_push() argument
862 ureq = usbhsh_ureq_alloc(hpriv, urb, mem_flags); in usbhsh_status_stage_packet_push()
884 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd); in usbhsh_dcp_queue_push() local
897 usbhsh_setup_stage_packet_push(hpriv, urb, pipe); in usbhsh_dcp_queue_push()
905 ret = usbhsh_data_stage_packet_push(hpriv, urb, pipe, mflags); in usbhsh_dcp_queue_push()
915 ret = usbhsh_status_stage_packet_push(hpriv, urb, pipe, mflags); in usbhsh_dcp_queue_push()
966 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd); in usbhsh_urb_enqueue() local
967 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_urb_enqueue()
976 if (!usbhsh_is_running(hpriv)) { in usbhsh_urb_enqueue()
992 if (!usbhsh_device_get(hpriv, urb)) { in usbhsh_urb_enqueue()
993 new_udev = usbhsh_device_attach(hpriv, urb); in usbhsh_urb_enqueue()
1006 ret = usbhsh_endpoint_attach(hpriv, urb, mem_flags); in usbhsh_urb_enqueue()
1017 ret = usbhsh_pipe_attach(hpriv, urb); in usbhsh_urb_enqueue()
1034 usbhsh_endpoint_detach(hpriv, ep); in usbhsh_urb_enqueue()
1037 usbhsh_device_detach(hpriv, new_udev); in usbhsh_urb_enqueue()
1047 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd); in usbhsh_urb_dequeue() local
1051 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_urb_dequeue()
1066 struct usbhsh_hpriv *hpriv; in usbhsh_endpoint_disable() local
1076 hpriv = usbhsh_hcd_to_hpriv(hcd); in usbhsh_endpoint_disable()
1078 usbhsh_endpoint_detach(hpriv, ep); in usbhsh_endpoint_disable()
1085 usbhsh_device_detach(hpriv, udev); in usbhsh_endpoint_disable()
1090 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd); in usbhsh_hub_status_data() local
1097 if (usbhsh_port_stat_get(hpriv) & 0xFFFF0000) in usbhsh_hub_status_data()
1105 static int __usbhsh_hub_hub_feature(struct usbhsh_hpriv *hpriv, in __usbhsh_hub_hub_feature() argument
1109 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in __usbhsh_hub_hub_feature()
1122 static int __usbhsh_hub_port_feature(struct usbhsh_hpriv *hpriv, in __usbhsh_hub_port_feature() argument
1126 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in __usbhsh_hub_port_feature()
1157 usbhsh_port_stat_clear(hpriv, in __usbhsh_hub_port_feature()
1185 usbhsh_port_stat_set(hpriv, speed); in __usbhsh_hub_port_feature()
1186 usbhsh_port_stat_set(hpriv, USB_PORT_STAT_ENABLE); in __usbhsh_hub_port_feature()
1200 usbhsh_port_stat_set(hpriv, (1 << wValue)); in __usbhsh_hub_port_feature()
1202 usbhsh_port_stat_clear(hpriv, (1 << wValue)); in __usbhsh_hub_port_feature()
1207 static int __usbhsh_hub_get_status(struct usbhsh_hpriv *hpriv, in __usbhsh_hub_get_status() argument
1211 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in __usbhsh_hub_get_status()
1228 *(__le32 *)buf = cpu_to_le32(usbhsh_port_stat_get(hpriv)); in __usbhsh_hub_get_status()
1251 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd); in usbhsh_hub_control() local
1252 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv); in usbhsh_hub_control()
1261 ret = __usbhsh_hub_hub_feature(hpriv, typeReq, in usbhsh_hub_control()
1268 ret = __usbhsh_hub_port_feature(hpriv, typeReq, in usbhsh_hub_control()
1276 ret = __usbhsh_hub_get_status(hpriv, typeReq, in usbhsh_hub_control()
1282 typeReq, ret, usbhsh_port_stat_get(hpriv)); in usbhsh_hub_control()
1327 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_irq_attch() local
1332 usbhsh_port_stat_set(hpriv, USB_PORT_STAT_CONNECTION); in usbhsh_irq_attch()
1333 usbhsh_port_stat_set(hpriv, USB_PORT_STAT_C_CONNECTION << 16); in usbhsh_irq_attch()
1346 hpriv->mod.irq_attch = NULL; in usbhsh_irq_attch()
1347 usbhs_irq_callback_update(priv, &hpriv->mod); in usbhsh_irq_attch()
1355 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_irq_dtch() local
1360 usbhsh_port_stat_clear(hpriv, USB_PORT_STAT_CONNECTION); in usbhsh_irq_dtch()
1361 usbhsh_port_stat_set(hpriv, USB_PORT_STAT_C_CONNECTION << 16); in usbhsh_irq_dtch()
1372 hpriv->mod.irq_attch = usbhsh_irq_attch; in usbhsh_irq_dtch()
1373 usbhs_irq_callback_update(priv, &hpriv->mod); in usbhsh_irq_dtch()
1387 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_irq_setup_ack() local
1392 complete(&hpriv->setup_ack_done); /* see usbhsh_urb_enqueue() */ in usbhsh_irq_setup_ack()
1400 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_irq_setup_err() local
1405 complete(&hpriv->setup_ack_done); /* see usbhsh_urb_enqueue() */ in usbhsh_irq_setup_err()
1415 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_pipe_init_for_host() local
1450 usbhsh_hpriv_to_dcp(hpriv) = pipe; in usbhsh_pipe_init_for_host()
1463 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_start() local
1464 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv); in usbhsh_start()
1507 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhsh_stop() local
1508 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv); in usbhsh_stop()
1533 struct usbhsh_hpriv *hpriv; in usbhs_mod_host_probe() local
1555 hpriv = usbhsh_hcd_to_hpriv(hcd); in usbhs_mod_host_probe()
1560 usbhs_mod_register(priv, &hpriv->mod, USBHS_HOST); in usbhs_mod_host_probe()
1563 hpriv->mod.name = "host"; in usbhs_mod_host_probe()
1564 hpriv->mod.start = usbhsh_start; in usbhs_mod_host_probe()
1565 hpriv->mod.stop = usbhsh_stop; in usbhs_mod_host_probe()
1566 usbhsh_port_stat_init(hpriv); in usbhs_mod_host_probe()
1569 usbhsh_for_each_udev_with_dev0(udev, hpriv, i) { in usbhs_mod_host_probe()
1581 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv); in usbhs_mod_host_remove() local
1582 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv); in usbhs_mod_host_remove()