Commit abcebc7e803f243ef244e06349a4b911daa738f4
1 parent
f1587550
Devfn number for network PCI cards, by Aurelien Jarno.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2314 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
10 changed files
with
20 additions
and
20 deletions
hw/ne2000.c
@@ -781,7 +781,7 @@ static void ne2000_map(PCIDevice *pci_dev, int region_num, | @@ -781,7 +781,7 @@ static void ne2000_map(PCIDevice *pci_dev, int region_num, | ||
781 | register_ioport_read(addr + 0x1f, 1, 1, ne2000_reset_ioport_read, s); | 781 | register_ioport_read(addr + 0x1f, 1, 1, ne2000_reset_ioport_read, s); |
782 | } | 782 | } |
783 | 783 | ||
784 | -void pci_ne2000_init(PCIBus *bus, NICInfo *nd) | 784 | +void pci_ne2000_init(PCIBus *bus, NICInfo *nd, int devfn) |
785 | { | 785 | { |
786 | PCINE2000State *d; | 786 | PCINE2000State *d; |
787 | NE2000State *s; | 787 | NE2000State *s; |
@@ -789,7 +789,7 @@ void pci_ne2000_init(PCIBus *bus, NICInfo *nd) | @@ -789,7 +789,7 @@ void pci_ne2000_init(PCIBus *bus, NICInfo *nd) | ||
789 | 789 | ||
790 | d = (PCINE2000State *)pci_register_device(bus, | 790 | d = (PCINE2000State *)pci_register_device(bus, |
791 | "NE2000", sizeof(PCINE2000State), | 791 | "NE2000", sizeof(PCINE2000State), |
792 | - -1, | 792 | + devfn, |
793 | NULL, NULL); | 793 | NULL, NULL); |
794 | pci_conf = d->dev.config; | 794 | pci_conf = d->dev.config; |
795 | pci_conf[0x00] = 0xec; // Realtek 8029 | 795 | pci_conf[0x00] = 0xec; // Realtek 8029 |
hw/pc.c
@@ -668,7 +668,7 @@ static void pc_init1(int ram_size, int vga_ram_size, int boot_device, | @@ -668,7 +668,7 @@ static void pc_init1(int ram_size, int vga_ram_size, int boot_device, | ||
668 | if (strcmp(nd->model, "ne2k_isa") == 0) { | 668 | if (strcmp(nd->model, "ne2k_isa") == 0) { |
669 | pc_init_ne2k_isa(nd); | 669 | pc_init_ne2k_isa(nd); |
670 | } else if (pci_enabled) { | 670 | } else if (pci_enabled) { |
671 | - pci_nic_init(pci_bus, nd); | 671 | + pci_nic_init(pci_bus, nd, -1); |
672 | } else { | 672 | } else { |
673 | fprintf(stderr, "qemu: Unsupported NIC: %s\n", nd->model); | 673 | fprintf(stderr, "qemu: Unsupported NIC: %s\n", nd->model); |
674 | exit(1); | 674 | exit(1); |
hw/pci.c
@@ -544,14 +544,14 @@ void pci_info(void) | @@ -544,14 +544,14 @@ void pci_info(void) | ||
544 | } | 544 | } |
545 | 545 | ||
546 | /* Initialize a PCI NIC. */ | 546 | /* Initialize a PCI NIC. */ |
547 | -void pci_nic_init(PCIBus *bus, NICInfo *nd) | 547 | +void pci_nic_init(PCIBus *bus, NICInfo *nd, int devfn) |
548 | { | 548 | { |
549 | if (strcmp(nd->model, "ne2k_pci") == 0) { | 549 | if (strcmp(nd->model, "ne2k_pci") == 0) { |
550 | - pci_ne2000_init(bus, nd); | 550 | + pci_ne2000_init(bus, nd, devfn); |
551 | } else if (strcmp(nd->model, "rtl8139") == 0) { | 551 | } else if (strcmp(nd->model, "rtl8139") == 0) { |
552 | - pci_rtl8139_init(bus, nd); | 552 | + pci_rtl8139_init(bus, nd, devfn); |
553 | } else if (strcmp(nd->model, "pcnet") == 0) { | 553 | } else if (strcmp(nd->model, "pcnet") == 0) { |
554 | - pci_pcnet_init(bus, nd); | 554 | + pci_pcnet_init(bus, nd, devfn); |
555 | } else { | 555 | } else { |
556 | fprintf(stderr, "qemu: Unsupported NIC: %s\n", nd->model); | 556 | fprintf(stderr, "qemu: Unsupported NIC: %s\n", nd->model); |
557 | exit (1); | 557 | exit (1); |
hw/pcnet.c
@@ -1889,7 +1889,7 @@ static void pci_physical_memory_read(void *dma_opaque, target_phys_addr_t addr, | @@ -1889,7 +1889,7 @@ static void pci_physical_memory_read(void *dma_opaque, target_phys_addr_t addr, | ||
1889 | cpu_physical_memory_read(addr, buf, len); | 1889 | cpu_physical_memory_read(addr, buf, len); |
1890 | } | 1890 | } |
1891 | 1891 | ||
1892 | -void pci_pcnet_init(PCIBus *bus, NICInfo *nd) | 1892 | +void pci_pcnet_init(PCIBus *bus, NICInfo *nd, int devfn) |
1893 | { | 1893 | { |
1894 | PCNetState *d; | 1894 | PCNetState *d; |
1895 | uint8_t *pci_conf; | 1895 | uint8_t *pci_conf; |
@@ -1900,7 +1900,7 @@ void pci_pcnet_init(PCIBus *bus, NICInfo *nd) | @@ -1900,7 +1900,7 @@ void pci_pcnet_init(PCIBus *bus, NICInfo *nd) | ||
1900 | #endif | 1900 | #endif |
1901 | 1901 | ||
1902 | d = (PCNetState *)pci_register_device(bus, "PCNet", sizeof(PCNetState), | 1902 | d = (PCNetState *)pci_register_device(bus, "PCNet", sizeof(PCNetState), |
1903 | - -1, NULL, NULL); | 1903 | + devfn, NULL, NULL); |
1904 | 1904 | ||
1905 | pci_conf = d->dev.config; | 1905 | pci_conf = d->dev.config; |
1906 | 1906 |
hw/ppc_chrp.c
@@ -436,7 +436,7 @@ static void ppc_chrp_init(int ram_size, int vga_ram_size, int boot_device, | @@ -436,7 +436,7 @@ static void ppc_chrp_init(int ram_size, int vga_ram_size, int boot_device, | ||
436 | for(i = 0; i < nb_nics; i++) { | 436 | for(i = 0; i < nb_nics; i++) { |
437 | if (!nd_table[i].model) | 437 | if (!nd_table[i].model) |
438 | nd_table[i].model = "ne2k_pci"; | 438 | nd_table[i].model = "ne2k_pci"; |
439 | - pci_nic_init(pci_bus, &nd_table[i]); | 439 | + pci_nic_init(pci_bus, &nd_table[i], -1); |
440 | } | 440 | } |
441 | 441 | ||
442 | pci_cmd646_ide_init(pci_bus, &bs_table[0], 0); | 442 | pci_cmd646_ide_init(pci_bus, &bs_table[0], 0); |
@@ -483,7 +483,7 @@ static void ppc_chrp_init(int ram_size, int vga_ram_size, int boot_device, | @@ -483,7 +483,7 @@ static void ppc_chrp_init(int ram_size, int vga_ram_size, int boot_device, | ||
483 | serial_init(&pic_set_irq_new, isa_pic, 0x3f8, 4, serial_hds[0]); | 483 | serial_init(&pic_set_irq_new, isa_pic, 0x3f8, 4, serial_hds[0]); |
484 | 484 | ||
485 | for(i = 0; i < nb_nics; i++) { | 485 | for(i = 0; i < nb_nics; i++) { |
486 | - pci_ne2000_init(pci_bus, &nd_table[i]); | 486 | + pci_ne2000_init(pci_bus, &nd_table[i], -1); |
487 | } | 487 | } |
488 | 488 | ||
489 | #if 1 | 489 | #if 1 |
hw/realview.c
@@ -71,7 +71,7 @@ static void realview_init(int ram_size, int vga_ram_size, int boot_device, | @@ -71,7 +71,7 @@ static void realview_init(int ram_size, int vga_ram_size, int boot_device, | ||
71 | if (strcmp(nd->model, "smc91c111") == 0) { | 71 | if (strcmp(nd->model, "smc91c111") == 0) { |
72 | smc91c111_init(nd, 0x4e000000, pic, 28); | 72 | smc91c111_init(nd, 0x4e000000, pic, 28); |
73 | } else { | 73 | } else { |
74 | - pci_nic_init(pci_bus, nd); | 74 | + pci_nic_init(pci_bus, nd, -1); |
75 | } | 75 | } |
76 | } | 76 | } |
77 | 77 |
hw/rtl8139.c
@@ -3409,7 +3409,7 @@ static void rtl8139_timer(void *opaque) | @@ -3409,7 +3409,7 @@ static void rtl8139_timer(void *opaque) | ||
3409 | } | 3409 | } |
3410 | #endif /* RTL8139_ONBOARD_TIMER */ | 3410 | #endif /* RTL8139_ONBOARD_TIMER */ |
3411 | 3411 | ||
3412 | -void pci_rtl8139_init(PCIBus *bus, NICInfo *nd) | 3412 | +void pci_rtl8139_init(PCIBus *bus, NICInfo *nd, int devfn) |
3413 | { | 3413 | { |
3414 | PCIRTL8139State *d; | 3414 | PCIRTL8139State *d; |
3415 | RTL8139State *s; | 3415 | RTL8139State *s; |
@@ -3417,7 +3417,7 @@ void pci_rtl8139_init(PCIBus *bus, NICInfo *nd) | @@ -3417,7 +3417,7 @@ void pci_rtl8139_init(PCIBus *bus, NICInfo *nd) | ||
3417 | 3417 | ||
3418 | d = (PCIRTL8139State *)pci_register_device(bus, | 3418 | d = (PCIRTL8139State *)pci_register_device(bus, |
3419 | "RTL8139", sizeof(PCIRTL8139State), | 3419 | "RTL8139", sizeof(PCIRTL8139State), |
3420 | - -1, | 3420 | + devfn, |
3421 | NULL, NULL); | 3421 | NULL, NULL); |
3422 | pci_conf = d->dev.config; | 3422 | pci_conf = d->dev.config; |
3423 | pci_conf[0x00] = 0xec; /* Realtek 8139 */ | 3423 | pci_conf[0x00] = 0xec; /* Realtek 8139 */ |
hw/sun4u.c
@@ -344,7 +344,7 @@ static void sun4u_init(int ram_size, int vga_ram_size, int boot_device, | @@ -344,7 +344,7 @@ static void sun4u_init(int ram_size, int vga_ram_size, int boot_device, | ||
344 | for(i = 0; i < nb_nics; i++) { | 344 | for(i = 0; i < nb_nics; i++) { |
345 | if (!nd_table[i].model) | 345 | if (!nd_table[i].model) |
346 | nd_table[i].model = "ne2k_pci"; | 346 | nd_table[i].model = "ne2k_pci"; |
347 | - pci_nic_init(pci_bus, &nd_table[i]); | 347 | + pci_nic_init(pci_bus, &nd_table[i], -1); |
348 | } | 348 | } |
349 | 349 | ||
350 | pci_cmd646_ide_init(pci_bus, bs_table, 1); | 350 | pci_cmd646_ide_init(pci_bus, bs_table, 1); |
hw/versatilepb.c
@@ -188,7 +188,7 @@ static void versatile_init(int ram_size, int vga_ram_size, int boot_device, | @@ -188,7 +188,7 @@ static void versatile_init(int ram_size, int vga_ram_size, int boot_device, | ||
188 | if (strcmp(nd->model, "smc91c111") == 0) { | 188 | if (strcmp(nd->model, "smc91c111") == 0) { |
189 | smc91c111_init(nd, 0x10010000, sic, 25); | 189 | smc91c111_init(nd, 0x10010000, sic, 25); |
190 | } else { | 190 | } else { |
191 | - pci_nic_init(pci_bus, nd); | 191 | + pci_nic_init(pci_bus, nd, -1); |
192 | } | 192 | } |
193 | } | 193 | } |
194 | if (usb_enabled) { | 194 | if (usb_enabled) { |
vl.h
@@ -793,7 +793,7 @@ typedef int (*pci_map_irq_fn)(PCIDevice *pci_dev, int irq_num); | @@ -793,7 +793,7 @@ typedef int (*pci_map_irq_fn)(PCIDevice *pci_dev, int irq_num); | ||
793 | PCIBus *pci_register_bus(pci_set_irq_fn set_irq, pci_map_irq_fn map_irq, | 793 | PCIBus *pci_register_bus(pci_set_irq_fn set_irq, pci_map_irq_fn map_irq, |
794 | void *pic, int devfn_min, int nirq); | 794 | void *pic, int devfn_min, int nirq); |
795 | 795 | ||
796 | -void pci_nic_init(PCIBus *bus, NICInfo *nd); | 796 | +void pci_nic_init(PCIBus *bus, NICInfo *nd, int devfn); |
797 | void pci_data_write(void *opaque, uint32_t addr, uint32_t val, int len); | 797 | void pci_data_write(void *opaque, uint32_t addr, uint32_t val, int len); |
798 | uint32_t pci_data_read(void *opaque, uint32_t addr, int len); | 798 | uint32_t pci_data_read(void *opaque, uint32_t addr, int len); |
799 | int pci_bus_num(PCIBus *s); | 799 | int pci_bus_num(PCIBus *s); |
@@ -956,15 +956,15 @@ int fdctrl_get_drive_type(fdctrl_t *fdctrl, int drive_num); | @@ -956,15 +956,15 @@ int fdctrl_get_drive_type(fdctrl_t *fdctrl, int drive_num); | ||
956 | /* ne2000.c */ | 956 | /* ne2000.c */ |
957 | 957 | ||
958 | void isa_ne2000_init(int base, int irq, NICInfo *nd); | 958 | void isa_ne2000_init(int base, int irq, NICInfo *nd); |
959 | -void pci_ne2000_init(PCIBus *bus, NICInfo *nd); | 959 | +void pci_ne2000_init(PCIBus *bus, NICInfo *nd, int devfn); |
960 | 960 | ||
961 | /* rtl8139.c */ | 961 | /* rtl8139.c */ |
962 | 962 | ||
963 | -void pci_rtl8139_init(PCIBus *bus, NICInfo *nd); | 963 | +void pci_rtl8139_init(PCIBus *bus, NICInfo *nd, int devfn); |
964 | 964 | ||
965 | /* pcnet.c */ | 965 | /* pcnet.c */ |
966 | 966 | ||
967 | -void pci_pcnet_init(PCIBus *bus, NICInfo *nd); | 967 | +void pci_pcnet_init(PCIBus *bus, NICInfo *nd, int devfn); |
968 | void pcnet_h_reset(void *opaque); | 968 | void pcnet_h_reset(void *opaque); |
969 | void *lance_init(NICInfo *nd, uint32_t leaddr, void *dma_opaque); | 969 | void *lance_init(NICInfo *nd, uint32_t leaddr, void *dma_opaque); |
970 | 970 |