Commit 480b9f24d75eb8fcd25ead73b6f0265b08218c5e
1 parent
378e2aea
Add Simba device ID
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6465 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
3 changed files
with
11 additions
and
8 deletions
hw/apb_pci.c
| @@ -266,9 +266,11 @@ PCIBus *pci_apb_init(target_phys_addr_t special_base, | @@ -266,9 +266,11 @@ PCIBus *pci_apb_init(target_phys_addr_t special_base, | ||
| 266 | d->config[0x0E] = 0x00; // header_type | 266 | d->config[0x0E] = 0x00; // header_type |
| 267 | 267 | ||
| 268 | /* APB secondary busses */ | 268 | /* APB secondary busses */ |
| 269 | - *bus2 = pci_bridge_init(s->bus, 8, 0x108e5000, pci_apb_map_irq, | 269 | + *bus2 = pci_bridge_init(s->bus, 8, PCI_VENDOR_ID_SUN, |
| 270 | + PCI_DEVICE_ID_SUN_SIMBA, pci_apb_map_irq, | ||
| 270 | "Advanced PCI Bus secondary bridge 1"); | 271 | "Advanced PCI Bus secondary bridge 1"); |
| 271 | - *bus3 = pci_bridge_init(s->bus, 9, 0x108e5000, pci_apb_map_irq, | 272 | + *bus3 = pci_bridge_init(s->bus, 9, PCI_VENDOR_ID_SUN, |
| 273 | + PCI_DEVICE_ID_SUN_SIMBA, pci_apb_map_irq, | ||
| 272 | "Advanced PCI Bus secondary bridge 2"); | 274 | "Advanced PCI Bus secondary bridge 2"); |
| 273 | return s->bus; | 275 | return s->bus; |
| 274 | } | 276 | } |
hw/pci.c
| @@ -713,16 +713,16 @@ static void pci_bridge_write_config(PCIDevice *d, | @@ -713,16 +713,16 @@ static void pci_bridge_write_config(PCIDevice *d, | ||
| 713 | pci_default_write_config(d, address, val, len); | 713 | pci_default_write_config(d, address, val, len); |
| 714 | } | 714 | } |
| 715 | 715 | ||
| 716 | -PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint32_t id, | 716 | +PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint16_t vid, uint16_t did, |
| 717 | pci_map_irq_fn map_irq, const char *name) | 717 | pci_map_irq_fn map_irq, const char *name) |
| 718 | { | 718 | { |
| 719 | PCIBridge *s; | 719 | PCIBridge *s; |
| 720 | s = (PCIBridge *)pci_register_device(bus, name, sizeof(PCIBridge), | 720 | s = (PCIBridge *)pci_register_device(bus, name, sizeof(PCIBridge), |
| 721 | devfn, NULL, pci_bridge_write_config); | 721 | devfn, NULL, pci_bridge_write_config); |
| 722 | - s->dev.config[0x00] = id >> 16; | ||
| 723 | - s->dev.config[0x01] = id >> 24; | ||
| 724 | - s->dev.config[0x02] = id; // device_id | ||
| 725 | - s->dev.config[0x03] = id >> 8; | 722 | + |
| 723 | + pci_config_set_vendor_id(s->dev.config, vid); | ||
| 724 | + pci_config_set_device_id(s->dev.config, did); | ||
| 725 | + | ||
| 726 | s->dev.config[0x04] = 0x06; // command = bus master, pci mem | 726 | s->dev.config[0x04] = 0x06; // command = bus master, pci mem |
| 727 | s->dev.config[0x05] = 0x00; | 727 | s->dev.config[0x05] = 0x00; |
| 728 | s->dev.config[0x06] = 0xa0; // status = fast back-to-back, 66MHz, no error | 728 | s->dev.config[0x06] = 0xa0; // status = fast back-to-back, 66MHz, no error |
hw/pci.h
| @@ -31,6 +31,7 @@ extern target_phys_addr_t pci_mem_base; | @@ -31,6 +31,7 @@ extern target_phys_addr_t pci_mem_base; | ||
| 31 | 31 | ||
| 32 | #define PCI_VENDOR_ID_SUN 0x108e | 32 | #define PCI_VENDOR_ID_SUN 0x108e |
| 33 | #define PCI_DEVICE_ID_SUN_EBUS 0x1000 | 33 | #define PCI_DEVICE_ID_SUN_EBUS 0x1000 |
| 34 | +#define PCI_DEVICE_ID_SUN_SIMBA 0x5000 | ||
| 34 | #define PCI_DEVICE_ID_SUN_SABRE 0xa000 | 35 | #define PCI_DEVICE_ID_SUN_SABRE 0xa000 |
| 35 | 36 | ||
| 36 | #define PCI_VENDOR_ID_CMD 0x1095 | 37 | #define PCI_VENDOR_ID_CMD 0x1095 |
| @@ -183,7 +184,7 @@ int pci_bus_num(PCIBus *s); | @@ -183,7 +184,7 @@ int pci_bus_num(PCIBus *s); | ||
| 183 | void pci_for_each_device(int bus_num, void (*fn)(PCIDevice *d)); | 184 | void pci_for_each_device(int bus_num, void (*fn)(PCIDevice *d)); |
| 184 | 185 | ||
| 185 | void pci_info(void); | 186 | void pci_info(void); |
| 186 | -PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint32_t id, | 187 | +PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint16_t vid, uint16_t did, |
| 187 | pci_map_irq_fn map_irq, const char *name); | 188 | pci_map_irq_fn map_irq, const char *name); |
| 188 | 189 | ||
| 189 | static inline void | 190 | static inline void |