All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Fix via-ide for fuloong2e
@ 2020-12-24 23:23 BALATON Zoltan via
  2020-12-24 23:23 ` [PATCH 2/2] via-ide: Fix fuloong2e support BALATON Zoltan via
  2020-12-24 23:23 ` [PATCH 1/2] ide: Make room for flags in PCIIDEState and add one for legacy mode BALATON Zoltan via
  0 siblings, 2 replies; 10+ messages in thread
From: BALATON Zoltan via @ 2020-12-24 23:23 UTC (permalink / raw)
  To: qemu-devel
  Cc: philmd, Huacai Chen, Mark Cave-Ayland, John Snow, Guenter Roeck

This implements the legacy-mode emulation option for via-ide which is
needed for Linux on fuloong2e. I've tested that the Debian kernel now
finds CD ROM and MorphOS on pegasos2 is not affected by this.

BALATON Zoltan (1):
  ide: Make room for flags in PCIIDEState and add one for legacy mode

Guenter Roeck (1):
  via-ide: Fix fuloong2e support

 hw/ide/cmd646.c      |  4 ++--
 hw/ide/via.c         | 19 +++++++++++++++++--
 hw/mips/fuloong2e.c  |  4 +++-
 hw/sparc64/sun4u.c   |  2 +-
 include/hw/ide/pci.h |  7 ++++++-
 5 files changed, 29 insertions(+), 7 deletions(-)

-- 
2.21.3



^ permalink raw reply	[flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] via-ide: Fix fuloong2e support
@ 2020-12-25  0:37 Guenter Roeck
  0 siblings, 0 replies; 10+ messages in thread
From: Guenter Roeck @ 2020-12-25  0:37 UTC (permalink / raw)
  To: BALATON Zoltan
  Cc: philmd, Huacai Chen, Mark Cave-Ayland, qemu-devel, John Snow

On Fri, Dec 25, 2020 at 12:23:37AM +0100, BALATON Zoltan wrote:
> From: Guenter Roeck <linux@roeck-us.net>
> 
> Fuloong2e needs to use legacy mode for IDE support to work with Linux.
> Add property to via-ide driver to make the mode configurable, and set
> legacy mode for Fuloong2e.
> 
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
> [balaton: Use bit in flags for property, add comment for missing BAR4]
> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>

Tested-by: Guenter Roeck <linux@roeck-us.net>

> ---
>  hw/ide/via.c        | 19 +++++++++++++++++--
>  hw/mips/fuloong2e.c |  4 +++-
>  2 files changed, 20 insertions(+), 3 deletions(-)
> 
> diff --git a/hw/ide/via.c b/hw/ide/via.c
> index be09912b33..7d54d7e829 100644
> --- a/hw/ide/via.c
> +++ b/hw/ide/via.c
> @@ -26,6 +26,7 @@
>  
>  #include "qemu/osdep.h"
>  #include "hw/pci/pci.h"
> +#include "hw/qdev-properties.h"
>  #include "migration/vmstate.h"
>  #include "qemu/module.h"
>  #include "sysemu/dma.h"
> @@ -185,12 +186,19 @@ static void via_ide_realize(PCIDevice *dev, Error **errp)
>                            &d->bus[1], "via-ide1-cmd", 4);
>      pci_register_bar(dev, 3, PCI_BASE_ADDRESS_SPACE_IO, &d->cmd_bar[1]);
>  
> -    bmdma_setup_bar(d);
> -    pci_register_bar(dev, 4, PCI_BASE_ADDRESS_SPACE_IO, &d->bmdma_bar);
> +    if (!(d->flags & BIT(PCI_IDE_LEGACY_MODE))) {
> +        /* Missing BAR4 will make Linux driver fall back to legacy PIO mode */
> +        bmdma_setup_bar(d);
> +        pci_register_bar(dev, 4, PCI_BASE_ADDRESS_SPACE_IO, &d->bmdma_bar);
> +    }
>  
>      qdev_init_gpio_in(ds, via_ide_set_irq, 2);
>      for (i = 0; i < 2; i++) {
>          ide_bus_new(&d->bus[i], sizeof(d->bus[i]), ds, i, 2);
> +        if (d->flags & BIT(PCI_IDE_LEGACY_MODE)) {
> +            ide_init_ioport(&d->bus[i], NULL, i ? 0x170 : 0x1f0,
> +                            i ? 0x376 : 0x3f6);
> +        }
>          ide_init2(&d->bus[i], qdev_get_gpio_in(ds, i));
>  
>          bmdma_init(&d->bus[i], &d->bmdma[i], d);
> @@ -210,6 +218,12 @@ static void via_ide_exitfn(PCIDevice *dev)
>      }
>  }
>  
> +static Property via_ide_properties[] = {
> +    DEFINE_PROP_BIT("legacy_mode", PCIIDEState, flags, PCI_IDE_LEGACY_MODE,
> +                    false),
> +    DEFINE_PROP_END_OF_LIST(),
> +};
> +
>  static void via_ide_class_init(ObjectClass *klass, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(klass);
> @@ -223,6 +237,7 @@ static void via_ide_class_init(ObjectClass *klass, void *data)
>      k->device_id = PCI_DEVICE_ID_VIA_IDE;
>      k->revision = 0x06;
>      k->class_id = PCI_CLASS_STORAGE_IDE;
> +    device_class_set_props(dc, via_ide_properties);
>      set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
>  }
>  
> diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c
> index 45c596f4fe..f0733e87b7 100644
> --- a/hw/mips/fuloong2e.c
> +++ b/hw/mips/fuloong2e.c
> @@ -253,7 +253,9 @@ static void vt82c686b_southbridge_init(PCIBus *pci_bus, int slot, qemu_irq intc,
>      /* Super I/O */
>      isa_create_simple(isa_bus, TYPE_VT82C686B_SUPERIO);
>  
> -    dev = pci_create_simple(pci_bus, PCI_DEVFN(slot, 1), "via-ide");
> +    dev = pci_new(PCI_DEVFN(slot, 1), "via-ide");
> +    qdev_prop_set_bit(&dev->qdev, "legacy_mode", true);
> +    pci_realize_and_unref(dev, pci_bus, &error_fatal);
>      pci_ide_create_devs(dev);
>  
>      pci_create_simple(pci_bus, PCI_DEVFN(slot, 2), "vt82c686b-usb-uhci");
> -- 
> 2.21.3
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-12-27 22:29 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-24 23:23 [PATCH 0/2] Fix via-ide for fuloong2e BALATON Zoltan via
2020-12-24 23:23 ` [PATCH 2/2] via-ide: Fix fuloong2e support BALATON Zoltan via
2020-12-27 15:18   ` Philippe Mathieu-Daudé
2020-12-27 16:40     ` BALATON Zoltan via
2020-12-27 17:24       ` Philippe Mathieu-Daudé
2020-12-27 17:43         ` Guenter Roeck
2020-12-27 22:27         ` BALATON Zoltan via
2020-12-24 23:23 ` [PATCH 1/2] ide: Make room for flags in PCIIDEState and add one for legacy mode BALATON Zoltan via
2020-12-27 14:16   ` Philippe Mathieu-Daudé
2020-12-25  0:37 [PATCH 2/2] via-ide: Fix fuloong2e support Guenter Roeck

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.