Revision 21eea4b3

b/hw/pci.c
98 98
    }
99 99
}
100 100

  
101
PCIBus *pci_register_bus(DeviceState *parent, const char *name,
102
                         pci_set_irq_fn set_irq, pci_map_irq_fn map_irq,
103
                         void *irq_opaque, int devfn_min, int nirq)
101
void pci_bus_new_inplace(PCIBus *bus, DeviceState *parent,
102
                         const char *name, int devfn_min)
104 103
{
105
    PCIBus *bus;
106 104
    static int nbus = 0;
107 105

  
108
    bus = FROM_QBUS(PCIBus, qbus_create(&pci_bus_info, parent, name));
109
    bus->set_irq = set_irq;
110
    bus->map_irq = map_irq;
111
    bus->irq_opaque = irq_opaque;
106
    qbus_create_inplace(&bus->qbus, &pci_bus_info, parent, name);
112 107
    bus->devfn_min = devfn_min;
113
    bus->nirq = nirq;
114
    bus->irq_count = qemu_mallocz(nirq * sizeof(bus->irq_count[0]));
115 108
    bus->next = first_bus;
116 109
    first_bus = bus;
117 110
    vmstate_register(nbus++, &vmstate_pcibus, bus);
118 111
    qemu_register_reset(pci_bus_reset, bus);
112
}
113

  
114
PCIBus *pci_bus_new(DeviceState *parent, const char *name, int devfn_min)
115
{
116
    PCIBus *bus;
117

  
118
    bus = qemu_mallocz(sizeof(*bus));
119
    bus->qbus.qdev_allocated = 1;
120
    pci_bus_new_inplace(bus, parent, name, devfn_min);
121
    return bus;
122
}
123

  
124
void pci_bus_irqs(PCIBus *bus, pci_set_irq_fn set_irq, pci_map_irq_fn map_irq,
125
                  void *irq_opaque, int nirq)
126
{
127
    bus->set_irq = set_irq;
128
    bus->map_irq = map_irq;
129
    bus->irq_opaque = irq_opaque;
130
    bus->nirq = nirq;
131
    bus->irq_count = qemu_mallocz(nirq * sizeof(bus->irq_count[0]));
132
}
133

  
134
PCIBus *pci_register_bus(DeviceState *parent, const char *name,
135
                         pci_set_irq_fn set_irq, pci_map_irq_fn map_irq,
136
                         void *irq_opaque, int devfn_min, int nirq)
137
{
138
    PCIBus *bus;
139

  
140
    bus = pci_bus_new(parent, name, devfn_min);
141
    pci_bus_irqs(bus, set_irq, map_irq, irq_opaque, nirq);
119 142
    return bus;
120 143
}
121 144

  
b/hw/pci.h
248 248

  
249 249
typedef void (*pci_set_irq_fn)(void *opaque, int irq_num, int level);
250 250
typedef int (*pci_map_irq_fn)(PCIDevice *pci_dev, int irq_num);
251
void pci_bus_new_inplace(PCIBus *bus, DeviceState *parent,
252
                         const char *name, int devfn_min);
253
PCIBus *pci_bus_new(DeviceState *parent, const char *name, int devfn_min);
254
void pci_bus_irqs(PCIBus *bus, pci_set_irq_fn set_irq, pci_map_irq_fn map_irq,
255
                  void *irq_opaque, int nirq);
251 256
PCIBus *pci_register_bus(DeviceState *parent, const char *name,
252 257
                         pci_set_irq_fn set_irq, pci_map_irq_fn map_irq,
253 258
                         void *irq_opaque, int devfn_min, int nirq);

Also available in: Unified diff