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