Lines Matching full:port
40 USBPort port; member
162 0x00, /* (per-port OC, no power switching) */
169 static bool usb_hub_port_change(USBHubPort *port, uint16_t status) in usb_hub_port_change() argument
174 port->wPortChange |= status; in usb_hub_port_change()
180 static bool usb_hub_port_set(USBHubPort *port, uint16_t status) in usb_hub_port_set() argument
182 if (port->wPortStatus & status) { in usb_hub_port_set()
185 port->wPortStatus |= status; in usb_hub_port_set()
186 return usb_hub_port_change(port, status); in usb_hub_port_set()
189 static bool usb_hub_port_clear(USBHubPort *port, uint16_t status) in usb_hub_port_clear() argument
191 if (!(port->wPortStatus & status)) { in usb_hub_port_clear()
194 port->wPortStatus &= ~status; in usb_hub_port_clear()
195 return usb_hub_port_change(port, status); in usb_hub_port_clear()
198 static bool usb_hub_port_update(USBHubPort *port) in usb_hub_port_update() argument
202 if (port->port.dev && port->port.dev->attached) { in usb_hub_port_update()
203 notify = usb_hub_port_set(port, PORT_STAT_CONNECTION); in usb_hub_port_update()
204 if (port->port.dev->speed == USB_SPEED_LOW) { in usb_hub_port_update()
205 usb_hub_port_set(port, PORT_STAT_LOW_SPEED); in usb_hub_port_update()
207 usb_hub_port_clear(port, PORT_STAT_LOW_SPEED); in usb_hub_port_update()
230 USBHubPort *port = &s->ports[port1->index]; in usb_hub_attach() local
233 usb_hub_port_update(port); in usb_hub_attach()
240 USBHubPort *port = &s->ports[port1->index]; in usb_hub_detach() local
245 /* Let upstream know the device on this port is gone */ in usb_hub_detach()
246 s->dev.port->ops->child_detach(s->dev.port, port1->dev); in usb_hub_detach()
248 usb_hub_port_clear(port, PORT_STAT_CONNECTION); in usb_hub_detach()
249 usb_hub_port_clear(port, PORT_STAT_ENABLE); in usb_hub_detach()
250 usb_hub_port_clear(port, PORT_STAT_SUSPEND); in usb_hub_detach()
259 s->dev.port->ops->child_detach(s->dev.port, child); in usb_hub_child_detach()
265 USBHubPort *port = &s->ports[port1->index]; in usb_hub_wakeup() local
267 if (usb_hub_port_clear(port, PORT_STAT_SUSPEND)) { in usb_hub_wakeup()
272 static void usb_hub_complete(USBPort *port, USBPacket *packet) in usb_hub_complete() argument
274 USBHubState *s = port->opaque; in usb_hub_complete()
286 s->dev.port->ops->complete(s->dev.port, packet); in usb_hub_complete()
292 USBHubPort *port; in usb_hub_find_device() local
297 port = &s->ports[i]; in usb_hub_find_device()
298 if (!(port->wPortStatus & PORT_STAT_ENABLE)) { in usb_hub_find_device()
301 downstream = usb_find_device(&port->port, addr); in usb_hub_find_device()
312 USBHubPort *port; in usb_hub_handle_reset() local
317 port = s->ports + i; in usb_hub_handle_reset()
318 port->wPortStatus = 0; in usb_hub_handle_reset()
319 port->wPortChange = 0; in usb_hub_handle_reset()
320 usb_hub_port_set(port, PORT_STAT_POWER); in usb_hub_handle_reset()
321 usb_hub_port_update(port); in usb_hub_handle_reset()
380 USBHubPort *port; in usb_hub_handle_control() local
384 port = &s->ports[n]; in usb_hub_handle_control()
386 port->wPortStatus, in usb_hub_handle_control()
387 port->wPortChange); in usb_hub_handle_control()
388 data[0] = port->wPortStatus; in usb_hub_handle_control()
389 data[1] = port->wPortStatus >> 8; in usb_hub_handle_control()
390 data[2] = port->wPortChange; in usb_hub_handle_control()
391 data[3] = port->wPortChange >> 8; in usb_hub_handle_control()
404 USBHubPort *port; in usb_hub_handle_control() local
413 port = &s->ports[n]; in usb_hub_handle_control()
414 pdev = port->port.dev; in usb_hub_handle_control()
417 port->wPortStatus |= PORT_STAT_SUSPEND; in usb_hub_handle_control()
420 usb_hub_port_set(port, PORT_STAT_RESET); in usb_hub_handle_control()
421 usb_hub_port_clear(port, PORT_STAT_RESET); in usb_hub_handle_control()
424 usb_hub_port_set(port, PORT_STAT_ENABLE); in usb_hub_handle_control()
431 usb_hub_port_set(port, PORT_STAT_POWER); in usb_hub_handle_control()
443 USBHubPort *port; in usb_hub_handle_control() local
451 port = &s->ports[n]; in usb_hub_handle_control()
454 port->wPortStatus &= ~PORT_STAT_ENABLE; in usb_hub_handle_control()
457 port->wPortChange &= ~PORT_STAT_C_ENABLE; in usb_hub_handle_control()
460 usb_hub_port_clear(port, PORT_STAT_SUSPEND); in usb_hub_handle_control()
463 port->wPortChange &= ~PORT_STAT_C_SUSPEND; in usb_hub_handle_control()
466 port->wPortChange &= ~PORT_STAT_C_CONNECTION; in usb_hub_handle_control()
469 port->wPortChange &= ~PORT_STAT_C_OVERCURRENT; in usb_hub_handle_control()
472 port->wPortChange &= ~PORT_STAT_C_RESET; in usb_hub_handle_control()
476 usb_hub_port_clear(port, PORT_STAT_POWER); in usb_hub_handle_control()
477 usb_hub_port_clear(port, PORT_STAT_CONNECTION); in usb_hub_handle_control()
478 usb_hub_port_clear(port, PORT_STAT_ENABLE); in usb_hub_handle_control()
479 usb_hub_port_clear(port, PORT_STAT_SUSPEND); in usb_hub_handle_control()
480 port->wPortChange = 0; in usb_hub_handle_control()
532 USBHubPort *port; in usb_hub_handle_data() local
545 port = &s->ports[i]; in usb_hub_handle_data()
546 if (port->wPortChange) in usb_hub_handle_data()
577 &s->ports[i].port); in usb_hub_unrealize()
594 USBHubPort *port; in usb_hub_realize() local
603 if (dev->port->hubcount == 5) { in usb_hub_realize()
614 port = &s->ports[i]; in usb_hub_realize()
616 &port->port, s, i, &usb_hub_port_ops, in usb_hub_realize()
618 usb_port_location(&port->port, dev->port, i+1); in usb_hub_realize()
624 .name = "usb-hub-port",
642 .name = "usb-hub/port-timer",
670 DEFINE_PROP_BOOL("port-power", USBHubState, port_power, false),