diff mbox series

hw/ppc/sam460ex: Support short options for adding drives

Message ID 20240305225721.E9A404E6005@zero.eik.bme.hu
State New
Headers show
Series hw/ppc/sam460ex: Support short options for adding drives | expand

Commit Message

BALATON Zoltan March 5, 2024, 10:57 p.m. UTC
Having to use -drive if=none,... and -device ide-[cd,hd] is
inconvenient. Add support for shorter convenience options such as
-cdrom and -drive media=disk. Also adjust two nearby comments for code
style.

Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
---
 hw/ppc/sam460ex.c | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

Comments

BALATON Zoltan March 9, 2024, 11:34 a.m. UTC | #1
On Tue, 5 Mar 2024, BALATON Zoltan wrote:
> Having to use -drive if=none,... and -device ide-[cd,hd] is
> inconvenient. Add support for shorter convenience options such as
> -cdrom and -drive media=disk. Also adjust two nearby comments for code
> style.
>
> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>

Ping for freeze? (Forgot to cc qemu-ppc, now adding that too.)

> ---
> hw/ppc/sam460ex.c | 24 +++++++++++++++++++-----
> 1 file changed, 19 insertions(+), 5 deletions(-)
>
> diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c
> index 7e34b6c5e0..d42b677898 100644
> --- a/hw/ppc/sam460ex.c
> +++ b/hw/ppc/sam460ex.c
> @@ -33,6 +33,7 @@
> #include "hw/char/serial.h"
> #include "hw/i2c/ppc4xx_i2c.h"
> #include "hw/i2c/smbus_eeprom.h"
> +#include "hw/ide/pci.h"
> #include "hw/usb/hcd-ehci.h"
> #include "hw/ppc/fdt.h"
> #include "hw/qdev-properties.h"
> @@ -449,15 +450,27 @@ static void sam460ex_init(MachineState *machine)
>
>     /* PCI devices */
>     pci_create_simple(pci_bus, PCI_DEVFN(6, 0), "sm501");
> -    /* SoC has a single SATA port but we don't emulate that yet
> +    /*
> +     * SoC has a single SATA port but we don't emulate that
>      * However, firmware and usual clients have driver for SiI311x
> -     * so add one for convenience by default */
> +     * PCI SATA card so add one for convenience by default
> +     */
>     if (defaults_enabled()) {
> -        pci_create_simple(pci_bus, -1, "sii3112");
> +        PCIIDEState *s = PCI_IDE(pci_create_simple(pci_bus, -1, "sii3112"));
> +        DriveInfo *di;
> +
> +        di = drive_get_by_index(IF_IDE, 0);
> +        if (di) {
> +            ide_bus_create_drive(&s->bus[0], 0, di);
> +        }
> +        /* Use index 2 only if 1 does not exist, this allows -cdrom */
> +        di = drive_get_by_index(IF_IDE, 1) ?: drive_get_by_index(IF_IDE, 2);
> +        if (di) {
> +            ide_bus_create_drive(&s->bus[1], 0, di);
> +        }
>     }
>
> -    /* SoC has 4 UARTs
> -     * but board has only one wired and two are present in fdt */
> +    /* SoC has 4 UARTs but board has only one wired and two described in fdt */
>     if (serial_hd(0) != NULL) {
>         serial_mm_init(get_system_memory(), 0x4ef600300, 0,
>                        qdev_get_gpio_in(uic[1], 1),
> @@ -531,6 +544,7 @@ static void sam460ex_machine_init(MachineClass *mc)
> {
>     mc->desc = "aCube Sam460ex";
>     mc->init = sam460ex_init;
> +    mc->block_default_type = IF_IDE;
>     mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("460exb");
>     mc->default_ram_size = 512 * MiB;
>     mc->default_ram_id = "ppc4xx.sdram";
>
Philippe Mathieu-Daudé March 11, 2024, 8 p.m. UTC | #2
On 9/3/24 12:34, BALATON Zoltan wrote:
> On Tue, 5 Mar 2024, BALATON Zoltan wrote:
>> Having to use -drive if=none,... and -device ide-[cd,hd] is
>> inconvenient. Add support for shorter convenience options such as
>> -cdrom and -drive media=disk. Also adjust two nearby comments for code
>> style.
>>
>> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> 
> Ping for freeze? (Forgot to cc qemu-ppc, now adding that too.)
> 
>> ---
>> hw/ppc/sam460ex.c | 24 +++++++++++++++++++-----
>> 1 file changed, 19 insertions(+), 5 deletions(-)

I'm queuing this patch, thanks.
diff mbox series

Patch

diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c
index 7e34b6c5e0..d42b677898 100644
--- a/hw/ppc/sam460ex.c
+++ b/hw/ppc/sam460ex.c
@@ -33,6 +33,7 @@ 
 #include "hw/char/serial.h"
 #include "hw/i2c/ppc4xx_i2c.h"
 #include "hw/i2c/smbus_eeprom.h"
+#include "hw/ide/pci.h"
 #include "hw/usb/hcd-ehci.h"
 #include "hw/ppc/fdt.h"
 #include "hw/qdev-properties.h"
@@ -449,15 +450,27 @@  static void sam460ex_init(MachineState *machine)
 
     /* PCI devices */
     pci_create_simple(pci_bus, PCI_DEVFN(6, 0), "sm501");
-    /* SoC has a single SATA port but we don't emulate that yet
+    /*
+     * SoC has a single SATA port but we don't emulate that
      * However, firmware and usual clients have driver for SiI311x
-     * so add one for convenience by default */
+     * PCI SATA card so add one for convenience by default
+     */
     if (defaults_enabled()) {
-        pci_create_simple(pci_bus, -1, "sii3112");
+        PCIIDEState *s = PCI_IDE(pci_create_simple(pci_bus, -1, "sii3112"));
+        DriveInfo *di;
+
+        di = drive_get_by_index(IF_IDE, 0);
+        if (di) {
+            ide_bus_create_drive(&s->bus[0], 0, di);
+        }
+        /* Use index 2 only if 1 does not exist, this allows -cdrom */
+        di = drive_get_by_index(IF_IDE, 1) ?: drive_get_by_index(IF_IDE, 2);
+        if (di) {
+            ide_bus_create_drive(&s->bus[1], 0, di);
+        }
     }
 
-    /* SoC has 4 UARTs
-     * but board has only one wired and two are present in fdt */
+    /* SoC has 4 UARTs but board has only one wired and two described in fdt */
     if (serial_hd(0) != NULL) {
         serial_mm_init(get_system_memory(), 0x4ef600300, 0,
                        qdev_get_gpio_in(uic[1], 1),
@@ -531,6 +544,7 @@  static void sam460ex_machine_init(MachineClass *mc)
 {
     mc->desc = "aCube Sam460ex";
     mc->init = sam460ex_init;
+    mc->block_default_type = IF_IDE;
     mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("460exb");
     mc->default_ram_size = 512 * MiB;
     mc->default_ram_id = "ppc4xx.sdram";