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