vhci_hcd
static inline struct vhci_hcd *hcd_to_vhci_hcd(struct usb_hcd *hcd)
return (struct vhci_hcd *) (hcd->hcd_priv);
static inline struct usb_hcd *vhci_hcd_to_hcd(struct vhci_hcd *vhci_hcd)
return container_of((void *) vhci_hcd, struct usb_hcd, hcd_priv);
static inline struct vhci_hcd *vdev_to_vhci_hcd(struct vhci_device *vdev)
return container_of((void *)(vdev - vdev->rhport), struct vhci_hcd, vdev);
struct vhci_hcd *vhci_hcd_hs;
struct vhci_hcd *vhci_hcd_ss;
struct vhci_hcd *vhci_hcd = hcd_to_vhci_hcd(hcd);
spin_lock_init(&vhci_hcd->vhci->lock);
struct vhci_device *vdev = &vhci_hcd->vdev[rhport];
atomic_set(&vhci_hcd->seqnum, 0);
struct vhci_hcd *vhci_hcd = hcd_to_vhci_hcd(hcd);
struct vhci_device *vdev = &vhci_hcd->vdev[rhport];
.hcd_priv_size = sizeof(struct vhci_hcd),
struct vhci_hcd *vhci_hcd = vdev_to_vhci_hcd(vdev);
struct vhci *vhci = vhci_hcd->vhci;
status = vhci_hcd->port_status[rhport];
vhci_hcd->port_status[rhport] = status;
usb_hcd_poll_rh_status(vhci_hcd_to_hcd(vhci_hcd));
struct vhci_hcd *vhci_hcd = vdev_to_vhci_hcd(vdev);
struct vhci *vhci = vhci_hcd->vhci;
status = vhci_hcd->port_status[rhport];
vhci_hcd->port_status[rhport] = status;
usb_hcd_poll_rh_status(vhci_hcd_to_hcd(vhci_hcd));
struct vhci_hcd *vhci_hcd = hcd_to_vhci_hcd(hcd);
struct vhci *vhci = vhci_hcd->vhci;
if ((vhci_hcd->port_status[rhport] & PORT_C_MASK)) {
struct vhci_hcd *vhci_hcd;
vhci_hcd = hcd_to_vhci_hcd(hcd);
vhci = vhci_hcd->vhci;
memcpy(prev_port_status, vhci_hcd->port_status,
if (vhci_hcd->port_status[rhport] & USB_PORT_STAT_SUSPEND) {
vhci_hcd->resuming = 1;
vhci_hcd->re_timeout = jiffies + msecs_to_jiffies(20);
vhci_hcd->port_status[rhport] &= ~USB_SS_PORT_STAT_POWER;
vhci_hcd->port_status[rhport] &= ~USB_PORT_STAT_POWER;
static int vhci_start(struct usb_hcd *vhci_hcd);
vhci_hcd->port_status[rhport] &= ~(1 << wValue);
if (vhci_hcd->resuming && time_after(jiffies, vhci_hcd->re_timeout)) {
vhci_hcd->port_status[rhport] |= (1 << USB_PORT_FEAT_C_SUSPEND);
vhci_hcd->port_status[rhport] &= ~(1 << USB_PORT_FEAT_SUSPEND);
vhci_hcd->resuming = 0;
vhci_hcd->re_timeout = 0;
if ((vhci_hcd->port_status[rhport] & (1 << USB_PORT_FEAT_RESET)) !=
0 && time_after(jiffies, vhci_hcd->re_timeout)) {
vhci_hcd->port_status[rhport] |= (1 << USB_PORT_FEAT_C_RESET);
vhci_hcd->port_status[rhport] &= ~(1 << USB_PORT_FEAT_RESET);
vhci_hcd->re_timeout = 0;
if (vhci_hcd->vdev[rhport].ud.status ==
vhci_hcd->vdev[rhport].ud.status ==
vhci_hcd->vdev[rhport].ud.status);
vhci_hcd->port_status[rhport] |=
switch (vhci_hcd->vdev[rhport].speed) {
vhci_hcd->port_status[rhport] |=
vhci_hcd->port_status[rhport] |=
((__le16 *) buf)[0] = cpu_to_le16(vhci_hcd->port_status[rhport]);
cpu_to_le16(vhci_hcd->port_status[rhport] >> 16);
vhci_hcd->port_status[rhport] |= USB_PORT_STAT_SUSPEND;
vhci_hcd->port_status[rhport] |= USB_SS_PORT_STAT_POWER;
vhci_hcd->port_status[rhport] |= USB_PORT_STAT_POWER;
vhci_hcd->port_status[rhport] = 0;
vhci_hcd->port_status[rhport] =
} else if (vhci_hcd->port_status[rhport] & USB_PORT_STAT_ENABLE) {
vhci_hcd->port_status[rhport] &= ~(USB_PORT_STAT_ENABLE
vhci_hcd->re_timeout = jiffies + msecs_to_jiffies(50);
if ((vhci_hcd->port_status[rhport] &
vhci_hcd->port_status[rhport] |= (1 << wValue);
if ((vhci_hcd->port_status[rhport] &
vhci_hcd->port_status[rhport] |= (1 << wValue);
vhci_hcd->port_status[rhport],
(vhci_hcd->port_status[rhport] & PORT_C_MASK) != 0) {
struct vhci_hcd *vhci_hcd = vdev_to_vhci_hcd(vdev);
priv->seqnum = (u32)atomic_inc_return(&vhci_hcd->seqnum);
struct vhci_hcd *vhci_hcd = hcd_to_vhci_hcd(hcd);
struct vhci *vhci = vhci_hcd->vhci;
vdev = &vhci_hcd->vdev[portnum-1];
struct vhci_hcd *vhci_hcd = hcd_to_vhci_hcd(hcd);
struct vhci *vhci = vhci_hcd->vhci;
unlink->seqnum = atomic_inc_return(&vhci_hcd->seqnum);
struct vhci_hcd *vhci_hcd = vdev_to_vhci_hcd(vdev);
struct usb_hcd *hcd = vhci_hcd_to_hcd(vhci_hcd);
struct vhci *vhci = vhci_hcd->vhci;
usb_hcd_unlink_urb_from_ep(vhci_hcd_to_hcd(vhci_hcd), urb);
usb_hcd_giveback_urb(vhci_hcd_to_hcd(vhci_hcd), urb, urb->status);
struct vhci_hcd *vhci_hcd = vdev_to_vhci_hcd(vdev);
struct vhci *vhci = vhci_hcd->vhci;
usb_hcd_unlink_urb_from_ep(vhci_hcd_to_hcd(vhci_hcd), urb);
usb_hcd_giveback_urb(vhci_hcd_to_hcd(vhci_hcd), urb, urb->status);
struct vhci_hcd *vhci_hcd = vdev_to_vhci_hcd(vdev);
struct vhci *vhci = vhci_hcd->vhci;
atomic_read(&vhci_hcd->seqnum));
static int vhci_port_disconnect(struct vhci_hcd *vhci_hcd, __u32 rhport)
struct vhci_device *vdev = &vhci_hcd->vdev[rhport];
struct vhci *vhci = vhci_hcd->vhci;
struct vhci_hcd *vhci_hcd;
vhci_hcd = hcd_to_vhci_hcd(hcd)->vhci->vhci_hcd_ss;
vhci_hcd = hcd_to_vhci_hcd(hcd)->vhci->vhci_hcd_hs;
ret = vhci_port_disconnect(vhci_hcd, rhport);
struct vhci_hcd *vhci_hcd;
vhci_hcd = hcd_to_vhci_hcd(hcd);
vhci = vhci_hcd->vhci;
struct vhci_hcd *vhci_hcd;
vhci_hcd = hcd_to_vhci_hcd(hcd);
vhci = vhci_hcd->vhci;