switch usb bus to inplace allocation.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
Gerd Hoffmann 2009-09-16 22:25:29 +02:00 committed by Anthony Liguori
parent ca9c39faed
commit b2317837f0
5 changed files with 12 additions and 15 deletions

View File

@ -14,16 +14,13 @@ static struct BusInfo usb_bus_info = {
static int next_usb_bus = 0;
static QTAILQ_HEAD(, USBBus) busses = QTAILQ_HEAD_INITIALIZER(busses);
USBBus *usb_bus_new(DeviceState *host)
void usb_bus_new(USBBus *bus, DeviceState *host)
{
USBBus *bus;
bus = FROM_QBUS(USBBus, qbus_create(&usb_bus_info, host, NULL));
qbus_create_inplace(&bus->qbus, &usb_bus_info, host, NULL);
bus->busnr = next_usb_bus++;
QTAILQ_INIT(&bus->free);
QTAILQ_INIT(&bus->used);
QTAILQ_INSERT_TAIL(&busses, bus, next);
return bus;
}
USBBus *usb_bus_find(int busnr)

View File

@ -281,7 +281,7 @@ typedef struct {
struct MUSBState {
qemu_irq *irqs;
USBBus *bus;
USBBus bus;
USBPort port;
int idx;
@ -331,8 +331,8 @@ struct MUSBState {
s->ep[i].epnum = i;
}
s->bus = usb_bus_new(NULL /* FIXME */);
usb_register_port(s->bus, &s->port, s, 0, musb_attach);
usb_bus_new(&s->bus, NULL /* FIXME */);
usb_register_port(&s->bus, &s->port, s, 0, musb_attach);
return s;
}

View File

@ -65,7 +65,7 @@ enum ohci_type {
};
typedef struct {
USBBus *bus;
USBBus bus;
qemu_irq irq;
enum ohci_type type;
int mem;
@ -1690,10 +1690,10 @@ static void usb_ohci_init(OHCIState *ohci, DeviceState *dev,
ohci->irq = irq;
ohci->type = type;
ohci->bus = usb_bus_new(dev);
usb_bus_new(&ohci->bus, dev);
ohci->num_ports = num_ports;
for (i = 0; i < num_ports; i++) {
usb_register_port(ohci->bus, &ohci->rhport[i].port, ohci, i, ohci_attach);
usb_register_port(&ohci->bus, &ohci->rhport[i].port, ohci, i, ohci_attach);
}
ohci->async_td = 0;

View File

@ -122,7 +122,7 @@ typedef struct UHCIPort {
typedef struct UHCIState {
PCIDevice dev;
USBBus *bus;
USBBus bus;
uint16_t cmd; /* cmd register */
uint16_t status;
uint16_t intr; /* interrupt enable register */
@ -1083,9 +1083,9 @@ static int usb_uhci_common_initfn(UHCIState *s)
pci_conf[0x3d] = 4; // interrupt pin 3
pci_conf[0x60] = 0x10; // release number
s->bus = usb_bus_new(&s->dev.qdev);
usb_bus_new(&s->bus, &s->dev.qdev);
for(i = 0; i < NB_PORTS; i++) {
usb_register_port(s->bus, &s->ports[i].port, s, i, uhci_attach);
usb_register_port(&s->bus, &s->ports[i].port, s, i, uhci_attach);
}
s->frame_timer = qemu_new_timer(vm_clock, uhci_frame_timer, s);

View File

@ -303,7 +303,7 @@ struct USBBus {
QTAILQ_ENTRY(USBBus) next;
};
USBBus *usb_bus_new(DeviceState *host);
void usb_bus_new(USBBus *bus, DeviceState *host);
USBBus *usb_bus_find(int busnr);
void usb_qdev_register(USBDeviceInfo *info);
void usb_qdev_register_many(USBDeviceInfo *info);