[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Xen-devel] [PATCH 18/32] hw/mips/mips_malta: Extract the PIIX4 creation code as piix4_create()
 
- To: Philippe Mathieu-Daudé <philmd@xxxxxxxxxx>
 
- From: Aleksandar Markovic <aleksandar.m.mail@xxxxxxxxx>
 
- Date: Thu, 17 Oct 2019 16:46:25 +0200
 
- Cc: Laurent Vivier <lvivier@xxxxxxxxxx>, Thomas Huth <thuth@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Eduardo Habkost <ehabkost@xxxxxxxxxx>, "kvm@xxxxxxxxxxxxxxx" <kvm@xxxxxxxxxxxxxxx>, Paul Durrant <paul@xxxxxxx>, "Michael S. Tsirkin" <mst@xxxxxxxxxx>, "qemu-devel@xxxxxxxxxx" <qemu-devel@xxxxxxxxxx>, Igor Mammedov <imammedo@xxxxxxxxxx>, Hervé Poussineau <hpoussin@xxxxxxxxxxx>, Aleksandar Markovic <amarkovic@xxxxxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Anthony Perard <anthony.perard@xxxxxxxxxx>, Paolo Bonzini <pbonzini@xxxxxxxxxx>, Aleksandar Rikalo <aleksandar.rikalo@xxxxxxxxx>, Aurelien Jarno <aurelien@xxxxxxxxxxx>, Richard Henderson <rth@xxxxxxxxxxx>
 
- Delivery-date: Thu, 17 Oct 2019 14:46:32 +0000
 
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
 
 
 
  On Tuesday, October 15, 2019, Philippe Mathieu-Daudé <philmd@xxxxxxxxxx> wrote:
 The Malta board instantiate a PIIX4 chipset doing various 
calls. Refactor all those related calls into a single 
function: piix4_create(). 
 
Signed-off-by: Philippe Mathieu-Daudé <philmd@xxxxxxxxxx> 
--- 
 hw/mips/mips_malta.c | 47 +++++++++++++++++++++++++++----------------- 
 1 file changed, 29 insertions(+), 18 deletions(-) 
  
 
 
 
   
diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c 
index 774bb810f6..0d4312840b 100644 
--- a/hw/mips/mips_malta.c 
+++ b/hw/mips/mips_malta.c 
@@ -1210,6 +1210,34 @@ static void mips_create_cpu(MachineState *ms, MaltaState *s, 
     } 
 } 
 
+static DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus, 
+                                 I2CBus **smbus, size_t ide_buses) 
+{ 
+    const size_t ide_drives = ide_buses * MAX_IDE_DEVS; 
+    DriveInfo **hd; 
+    PCIDevice *pci; 
+    DeviceState *dev; 
+ 
+    pci = pci_create_simple_multifunction(pci_bus, PCI_DEVFN(10, 0), 
+                                          true, TYPE_PIIX4_PCI_DEVICE); 
+    dev = DEVICE(pci); 
+    if (isa_bus) { 
+        *isa_bus = ISA_BUS(qdev_get_child_bus(dev, "isa.0")); 
+    } 
+ 
+    hd = g_new(DriveInfo *, ide_drives); 
+    ide_drive_get(hd, ide_drives); 
+    pci_piix4_ide_init(pci_bus, hd, pci->devfn + 1); 
+    g_free(hd); 
+    pci_create_simple(pci_bus, pci->devfn + 2, "piix4-usb-uhci"); 
+    if (smbus) { 
+        *smbus = piix4_pm_init(pci_bus, pci->devfn + 3, 0x1100, 
+                               isa_get_irq(NULL, 9), NULL, 0, NULL); 
+   } 
+ 
+    return dev; 
+} 
+ 
 static 
 void mips_malta_init(MachineState *machine) 
 { 
@@ -1231,12 +1259,8 @@ void mips_malta_init(MachineState *machine) 
     PCIBus *pci_bus; 
     ISABus *isa_bus; 
     qemu_irq cbus_irq, i8259_irq; 
-    PCIDevice *pci; 
-    int piix4_devfn; 
     I2CBus *smbus; 
     DriveInfo *dinfo; 
-    const size_t ide_drives = MAX_IDE_BUS * MAX_IDE_DEVS; 
-    DriveInfo **hd; 
     int fl_idx = 0; 
     int be; 
 
@@ -1407,14 +1431,7 @@ void mips_malta_init(MachineState *machine) 
     pci_bus = gt64120_register(s->i8259); 
 
     /* Southbridge */ 
-    hd = g_new(DriveInfo *, ide_drives); 
-    ide_drive_get(hd, ide_drives); 
- 
-    pci = pci_create_simple_multifunction(pci_bus, PCI_DEVFN(10, 0), 
-                                          true, TYPE_PIIX4_PCI_DEVICE); 
-    dev = DEVICE(pci); 
-    isa_bus = ISA_BUS(qdev_get_child_bus(dev, "isa.0")); 
-    piix4_devfn = pci->devfn; 
+    dev = piix4_create(pci_bus, &isa_bus, &smbus, MAX_IDE_BUS); 
 
     /* Interrupt controller */ 
     qdev_connect_gpio_out_named(dev, "intr", 0, i8259_irq); 
@@ -1422,12 +1439,6 @@ void mips_malta_init(MachineState *machine) 
         s->i8259[i] = qdev_get_gpio_in_named(dev, "isa", i); 
     } 
 
-    pci_piix4_ide_init(pci_bus, hd, piix4_devfn + 1); 
-    g_free(hd); 
-    pci_create_simple(pci_bus, piix4_devfn + 2, "piix4-usb-uhci"); 
-    smbus = piix4_pm_init(pci_bus, piix4_devfn + 3, 0x1100, 
-                          isa_get_irq(NULL, 9), NULL, 0, NULL); 
- 
     /* generate SPD EEPROM data */ 
     generate_eeprom_spd(&smbus_eeprom_buf[0 * 256], ram_size); 
     generate_eeprom_serial(&smbus_eeprom_buf[6 * 256]); 
--  
2.21.0 
 
 
 
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel 
 
    
     |