Lines Matching defs:hpriv

118 #define usbhsh_for_each_udev(pos, hpriv, i)	\
119 __usbhsh_for_each_udev(1, pos, hpriv, i)
121 #define usbhsh_for_each_udev_with_dev0(pos, hpriv, i) \
122 __usbhsh_for_each_udev(0, pos, hpriv, i)
164 static struct usbhsh_request *usbhsh_ureq_alloc(struct usbhsh_hpriv *hpriv,
169 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv);
185 static void usbhsh_ureq_free(struct usbhsh_hpriv *hpriv,
197 static int usbhsh_is_running(struct usbhsh_hpriv *hpriv)
206 return (hpriv->mod.irq_attch == NULL);
212 static void usbhsh_endpoint_sequence_save(struct usbhsh_hpriv *hpriv,
254 static struct usbhsh_device *usbhsh_device_get(struct usbhsh_hpriv *hpriv,
257 static int usbhsh_pipe_attach(struct usbhsh_hpriv *hpriv,
260 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv);
262 struct usbhsh_device *udev = usbhsh_device_get(hpriv, urb);
313 usbhsh_device_number(hpriv, udev),
318 usbhsh_device_number(hpriv, udev),
337 static void usbhsh_pipe_detach(struct usbhsh_hpriv *hpriv,
340 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv);
366 usbhsh_device_number(hpriv, udev),
378 static int usbhsh_endpoint_attach(struct usbhsh_hpriv *hpriv,
382 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv);
383 struct usbhsh_device *udev = usbhsh_device_get(hpriv, urb);
414 usbhsh_device_number(hpriv, udev),
420 static void usbhsh_endpoint_detach(struct usbhsh_hpriv *hpriv,
423 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv);
432 usbhsh_device_number(hpriv, usbhsh_uep_to_udev(uep)),
436 usbhsh_pipe_detach(hpriv, uep);
454 static void usbhsh_endpoint_detach_all(struct usbhsh_hpriv *hpriv,
460 usbhsh_endpoint_detach(hpriv, usbhsh_uep_to_ep(uep));
479 static struct usbhsh_device *usbhsh_device_get(struct usbhsh_hpriv *hpriv,
491 return usbhsh_device0(hpriv);
497 static struct usbhsh_device *usbhsh_device_attach(struct usbhsh_hpriv *hpriv,
501 struct usbhsh_device *udev0 = usbhsh_device0(hpriv);
503 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv);
506 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv);
529 usbhsh_for_each_udev(pos, hpriv, i) {
556 usbhsh_endpoint_detach_all(hpriv, udev);
561 usbhsh_endpoint_detach_all(hpriv, udev0);
583 upphub = usbhsh_device_number(hpriv, parent);
591 usbhsh_device_number(hpriv, udev),
595 usbhsh_device_number(hpriv, udev), udev);
600 static void usbhsh_device_detach(struct usbhsh_hpriv *hpriv,
603 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv);
604 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv);
610 usbhsh_device_number(hpriv, udev), udev);
614 usbhsh_endpoint_detach_all(hpriv, udev);
623 if (0 == usbhsh_device_number(hpriv, udev))
647 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv);
648 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv);
660 if (!usbhsh_is_running(hpriv))
665 usbhsh_endpoint_sequence_save(hpriv, urb, pkt);
666 usbhsh_ureq_free(hpriv, ureq);
668 usbhsh_pipe_detach(hpriv, usbhsh_ep_to_uep(urb->ep));
678 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd);
692 ureq = usbhsh_ureq_alloc(hpriv, urb, mem_flags);
764 static void usbhsh_setup_stage_packet_push(struct usbhsh_hpriv *hpriv,
768 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv);
778 init_completion(&hpriv->setup_ack_done);
794 req.wValue = usbhsh_device_number(hpriv, udev);
804 wait_for_completion(&hpriv->setup_ack_done);
816 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv);
820 usbhsh_ureq_free(hpriv, ureq);
823 static int usbhsh_data_stage_packet_push(struct usbhsh_hpriv *hpriv,
832 ureq = usbhsh_ureq_alloc(hpriv, urb, mem_flags);
854 static int usbhsh_status_stage_packet_push(struct usbhsh_hpriv *hpriv,
862 ureq = usbhsh_ureq_alloc(hpriv, urb, mem_flags);
884 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd);
897 usbhsh_setup_stage_packet_push(hpriv, urb, pipe);
905 ret = usbhsh_data_stage_packet_push(hpriv, urb, pipe, mflags);
915 ret = usbhsh_status_stage_packet_push(hpriv, urb, pipe, mflags);
966 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd);
967 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv);
976 if (!usbhsh_is_running(hpriv)) {
992 if (!usbhsh_device_get(hpriv, urb)) {
993 new_udev = usbhsh_device_attach(hpriv, urb);
1006 ret = usbhsh_endpoint_attach(hpriv, urb, mem_flags);
1017 ret = usbhsh_pipe_attach(hpriv, urb);
1034 usbhsh_endpoint_detach(hpriv, ep);
1037 usbhsh_device_detach(hpriv, new_udev);
1047 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd);
1051 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv);
1066 struct usbhsh_hpriv *hpriv;
1076 hpriv = usbhsh_hcd_to_hpriv(hcd);
1078 usbhsh_endpoint_detach(hpriv, ep);
1085 usbhsh_device_detach(hpriv, udev);
1090 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd);
1097 if (usbhsh_port_stat_get(hpriv) & 0xFFFF0000)
1105 static int __usbhsh_hub_hub_feature(struct usbhsh_hpriv *hpriv,
1109 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv);
1122 static int __usbhsh_hub_port_feature(struct usbhsh_hpriv *hpriv,
1126 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv);
1157 usbhsh_port_stat_clear(hpriv,
1185 usbhsh_port_stat_set(hpriv, speed);
1186 usbhsh_port_stat_set(hpriv, USB_PORT_STAT_ENABLE);
1200 usbhsh_port_stat_set(hpriv, (1 << wValue));
1202 usbhsh_port_stat_clear(hpriv, (1 << wValue));
1207 static int __usbhsh_hub_get_status(struct usbhsh_hpriv *hpriv,
1211 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv);
1228 *(__le32 *)buf = cpu_to_le32(usbhsh_port_stat_get(hpriv));
1250 struct usbhsh_hpriv *hpriv = usbhsh_hcd_to_hpriv(hcd);
1251 struct usbhs_priv *priv = usbhsh_hpriv_to_priv(hpriv);
1260 ret = __usbhsh_hub_hub_feature(hpriv, typeReq,
1267 ret = __usbhsh_hub_port_feature(hpriv, typeReq,
1275 ret = __usbhsh_hub_get_status(hpriv, typeReq,
1281 typeReq, ret, usbhsh_port_stat_get(hpriv));
1326 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv);
1331 usbhsh_port_stat_set(hpriv, USB_PORT_STAT_CONNECTION);
1332 usbhsh_port_stat_set(hpriv, USB_PORT_STAT_C_CONNECTION << 16);
1345 hpriv->mod.irq_attch = NULL;
1346 usbhs_irq_callback_update(priv, &hpriv->mod);
1354 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv);
1359 usbhsh_port_stat_clear(hpriv, USB_PORT_STAT_CONNECTION);
1360 usbhsh_port_stat_set(hpriv, USB_PORT_STAT_C_CONNECTION << 16);
1371 hpriv->mod.irq_attch = usbhsh_irq_attch;
1372 usbhs_irq_callback_update(priv, &hpriv->mod);
1386 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv);
1391 complete(&hpriv->setup_ack_done); /* see usbhsh_urb_enqueue() */
1399 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv);
1404 complete(&hpriv->setup_ack_done); /* see usbhsh_urb_enqueue() */
1414 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv);
1449 usbhsh_hpriv_to_dcp(hpriv) = pipe;
1462 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv);
1463 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv);
1506 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv);
1507 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv);
1532 struct usbhsh_hpriv *hpriv;
1554 hpriv = usbhsh_hcd_to_hpriv(hcd);
1559 usbhs_mod_register(priv, &hpriv->mod, USBHS_HOST);
1561 /* init hpriv */
1562 hpriv->mod.name = "host";
1563 hpriv->mod.start = usbhsh_start;
1564 hpriv->mod.stop = usbhsh_stop;
1565 usbhsh_port_stat_init(hpriv);
1568 usbhsh_for_each_udev_with_dev0(udev, hpriv, i) {
1580 struct usbhsh_hpriv *hpriv = usbhsh_priv_to_hpriv(priv);
1581 struct usb_hcd *hcd = usbhsh_hpriv_to_hcd(hpriv);