Revision e1c6bbab hw/unin_pci.c

b/hw/unin_pci.c
94 94
    return 0;
95 95
}
96 96

  
97
static int pci_dec_21154_init_device(SysBusDevice *dev)
98
{
99
    UNINState *s;
100
    int pci_mem_config, pci_mem_data;
101

  
102
    /* Uninorth bridge */
103
    s = FROM_SYSBUS(UNINState, dev);
104

  
105
    // XXX: s = &pci_bridge[2];
106
    pci_mem_config = pci_host_conf_register_mmio_noswap(&s->host_state);
107
    pci_mem_data = pci_host_data_register_mmio(&s->host_state);
108
    sysbus_init_mmio(dev, 0x1000, pci_mem_config);
109
    sysbus_init_mmio(dev, 0x1000, pci_mem_data);
110
    return 0;
111
}
112

  
113 97
static int pci_unin_agp_init_device(SysBusDevice *dev)
114 98
{
115 99
    UNINState *s;
......
204 188
    return 0;
205 189
}
206 190

  
207
static int dec_21154_pci_host_init(PCIDevice *d)
208
{
209
    /* pci-to-pci bridge */
210
    pci_config_set_vendor_id(d->config, PCI_VENDOR_ID_DEC);
211
    pci_config_set_device_id(d->config, PCI_DEVICE_ID_DEC_21154);
212
    d->config[0x08] = 0x05; // revision
213
    pci_config_set_class(d->config, PCI_CLASS_BRIDGE_PCI);
214
    d->config[0x0C] = 0x08; // cache_line_size
215
    d->config[0x0D] = 0x20; // latency_timer
216
    d->config[PCI_HEADER_TYPE] = PCI_HEADER_TYPE_BRIDGE; // header_type
217

  
218
    d->config[0x18] = 0x01; // primary_bus
219
    d->config[0x19] = 0x02; // secondary_bus
220
    d->config[0x1A] = 0x02; // subordinate_bus
221
    d->config[0x1B] = 0x20; // secondary_latency_timer
222
    d->config[0x1C] = 0x11; // io_base
223
    d->config[0x1D] = 0x01; // io_limit
224
    d->config[0x20] = 0x00; // memory_base
225
    d->config[0x21] = 0x80;
226
    d->config[0x22] = 0x00; // memory_limit
227
    d->config[0x23] = 0x80;
228
    d->config[0x24] = 0x01; // prefetchable_memory_base
229
    d->config[0x25] = 0x80;
230
    d->config[0x26] = 0xF1; // prefectchable_memory_limit
231
    d->config[0x27] = 0x7F;
232
    // d->config[0x34] = 0xdc // capabilities_pointer
233
    return 0;
234
}
235

  
236 191
static int unin_agp_pci_host_init(PCIDevice *d)
237 192
{
238 193
    pci_config_set_vendor_id(d->config, PCI_VENDOR_ID_APPLE);
......
265 220
    .init      = unin_main_pci_host_init,
266 221
};
267 222

  
268
static PCIDeviceInfo dec_21154_pci_host_info = {
269
    .qdev.name = "dec-21154",
270
    .qdev.size = sizeof(PCIDevice),
271
    .init      = dec_21154_pci_host_init,
272
    .header_type  = PCI_HEADER_TYPE_BRIDGE,
273
};
274

  
275 223
static PCIDeviceInfo unin_agp_pci_host_info = {
276 224
    .qdev.name = "uni-north-agp",
277 225
    .qdev.size = sizeof(PCIDevice),
......
289 237
    sysbus_register_dev("uni-north", sizeof(UNINState),
290 238
                        pci_unin_main_init_device);
291 239
    pci_qdev_register(&unin_main_pci_host_info);
292
    sysbus_register_dev("dec-21154", sizeof(UNINState),
293
                        pci_dec_21154_init_device);
294
    pci_qdev_register(&dec_21154_pci_host_info);
295 240
    sysbus_register_dev("uni-north-agp", sizeof(UNINState),
296 241
                        pci_unin_agp_init_device);
297 242
    pci_qdev_register(&unin_agp_pci_host_info);

Also available in: Unified diff