|
| From: | Gerd Hoffmann |
| Subject: | Re: [Qemu-devel] [PATCH 10/11] usb-uhci: Add support for being a companion controller |
| Date: | Wed, 29 Jun 2011 12:57:36 +0200 |
| User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.18) Gecko/20110617 Red Hat/3.1.11-2.el6_1 Thunderbird/3.1.11 |
Hi,
+ if (s->masterbus) {
+ USBPort *ports[NB_PORTS];
+ for(i = 0; i< NB_PORTS; i++) {
+ s->ports[i].port.ops =&uhci_port_ops;
+ s->ports[i].port.opaque = s;
+ s->ports[i].port.index = i;
+ s->ports[i].port.speedmask =
+ USB_SPEED_MASK_LOW | USB_SPEED_MASK_FULL;
+ usb_port_location(&s->ports[i].port, NULL, i+1);
+ ports[i] =&s->ports[i].port;
+ }
+ if (usb_bus_register_companion(s->masterbus, ports, NB_PORTS,
+ s->firstport) != 0) {
+ return -1;
+ }
+ } else {
+ usb_bus_new(&s->bus,&uhci_bus_ops,&s->dev.qdev);
+ for(i = 0; i< NB_PORTS; i++) {
+ usb_register_port(&s->bus,&s->ports[i].port, s, i,&uhci_port_ops,
+ USB_SPEED_MASK_LOW | USB_SPEED_MASK_FULL);
+ usb_port_location(&s->ports[i].port, NULL, i+1);
+ }
This looks like we'll want a usb_register_companion_port() function which looks like usb_register_port() but accepts masterbus & portindex instead of a USBBus pointer. Then register the companion ports one by one, so that the code path for the companion case looks almost identical to the non-companion case.
Otherwise the whole patchset looks very good. cheers, Gerd
| [Prev in Thread] | Current Thread | [Next in Thread] |