[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 5/7] macio: move OpenPIC inside macio-newworld device
From: |
David Gibson |
Subject: |
Re: [PATCH v2 5/7] macio: move OpenPIC inside macio-newworld device |
Date: |
Thu, 31 Dec 2020 17:48:22 +1100 |
On Tue, Dec 29, 2020 at 05:56:17PM +0000, Mark Cave-Ayland wrote:
> The OpenPIC device is located within the macio device on real hardware so
> make it
> a child of the macio-newworld device. This also removes the need for setting
> and
> checking a separate PIC object property link on the macio-newworld device
> which
> currently causes the automated QOM introspection tests to fail.
>
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> hw/misc/macio/macio.c | 19 +++++++++----------
> hw/ppc/mac_newworld.c | 25 +++++++++++--------------
> include/hw/misc/macio/macio.h | 2 +-
> 3 files changed, 21 insertions(+), 25 deletions(-)
>
> diff --git a/hw/misc/macio/macio.c b/hw/misc/macio/macio.c
> index cfb87da6c9..36be77cede 100644
> --- a/hw/misc/macio/macio.c
> +++ b/hw/misc/macio/macio.c
> @@ -273,7 +273,7 @@ static void macio_newworld_realize(PCIDevice *d, Error
> **errp)
> {
> MacIOState *s = MACIO(d);
> NewWorldMacIOState *ns = NEWWORLD_MACIO(d);
> - DeviceState *pic_dev = DEVICE(ns->pic);
> + DeviceState *pic_dev = DEVICE(&ns->pic);
> Error *err = NULL;
> SysBusDevice *sysbus_dev;
> MemoryRegion *timer_memory = NULL;
> @@ -284,17 +284,19 @@ static void macio_newworld_realize(PCIDevice *d, Error
> **errp)
> return;
> }
>
> + /* OpenPIC */
> + qdev_prop_set_uint32(pic_dev, "model", OPENPIC_MODEL_KEYLARGO);
> + sysbus_dev = SYS_BUS_DEVICE(&ns->pic);
> + sysbus_realize_and_unref(sysbus_dev, &error_fatal);
> + memory_region_add_subregion(&s->bar, 0x40000,
> + sysbus_mmio_get_region(sysbus_dev, 0));
> +
> sysbus_dev = SYS_BUS_DEVICE(&s->escc);
> sysbus_connect_irq(sysbus_dev, 0, qdev_get_gpio_in(pic_dev,
> NEWWORLD_ESCCB_IRQ));
> sysbus_connect_irq(sysbus_dev, 1, qdev_get_gpio_in(pic_dev,
> NEWWORLD_ESCCA_IRQ));
>
> - /* OpenPIC */
> - sysbus_dev = SYS_BUS_DEVICE(ns->pic);
> - memory_region_add_subregion(&s->bar, 0x40000,
> - sysbus_mmio_get_region(sysbus_dev, 0));
> -
> /* IDE buses */
> macio_realize_ide(s, &ns->ide[0],
> qdev_get_gpio_in(pic_dev, NEWWORLD_IDE0_IRQ),
> @@ -369,10 +371,7 @@ static void macio_newworld_init(Object *obj)
> NewWorldMacIOState *ns = NEWWORLD_MACIO(obj);
> int i;
>
> - object_property_add_link(obj, "pic", TYPE_OPENPIC,
> - (Object **) &ns->pic,
> - qdev_prop_allow_set_link_before_realize,
> - 0);
> + object_initialize_child(OBJECT(s), "pic", &ns->pic, TYPE_OPENPIC);
>
> object_initialize_child(OBJECT(s), "gpio", &ns->gpio, TYPE_MACIO_GPIO);
>
> diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
> index 708bb2f1ab..e991db4add 100644
> --- a/hw/ppc/mac_newworld.c
> +++ b/hw/ppc/mac_newworld.c
> @@ -293,18 +293,6 @@ static void ppc_core99_init(MachineState *machine)
> }
> }
>
> - pic_dev = qdev_new(TYPE_OPENPIC);
> - qdev_prop_set_uint32(pic_dev, "model", OPENPIC_MODEL_KEYLARGO);
> - s = SYS_BUS_DEVICE(pic_dev);
> - sysbus_realize_and_unref(s, &error_fatal);
> - k = 0;
> - for (i = 0; i < smp_cpus; i++) {
> - for (j = 0; j < OPENPIC_OUTPUT_NB; j++) {
> - sysbus_connect_irq(s, k++, openpic_irqs[i].irq[j]);
> - }
> - }
> - g_free(openpic_irqs);
> -
> if (PPC_INPUT(env) == PPC_FLAGS_INPUT_970) {
> /* 970 gets a U3 bus */
> /* Uninorth AGP bus */
> @@ -378,8 +366,6 @@ static void ppc_core99_init(MachineState *machine)
> qdev_prop_set_uint64(dev, "frequency", tbfreq);
> qdev_prop_set_bit(dev, "has-pmu", has_pmu);
> qdev_prop_set_bit(dev, "has-adb", has_adb);
> - object_property_set_link(OBJECT(macio), "pic", OBJECT(pic_dev),
> - &error_abort);
>
> escc = ESCC(object_resolve_path_component(OBJECT(macio), "escc"));
> qdev_prop_set_chr(DEVICE(escc), "chrA", serial_hd(0));
> @@ -387,6 +373,7 @@ static void ppc_core99_init(MachineState *machine)
>
> pci_realize_and_unref(macio, pci_bus, &error_fatal);
>
> + pic_dev = DEVICE(object_resolve_path_component(OBJECT(macio), "pic"));
> for (i = 0; i < 4; i++) {
> qdev_connect_gpio_out(DEVICE(uninorth_pci), i,
> qdev_get_gpio_in(pic_dev, 0x1b + i));
> @@ -407,6 +394,16 @@ static void ppc_core99_init(MachineState *machine)
> }
> }
>
> + /* OpenPIC */
> + s = SYS_BUS_DEVICE(pic_dev);
> + k = 0;
> + for (i = 0; i < smp_cpus; i++) {
> + for (j = 0; j < OPENPIC_OUTPUT_NB; j++) {
> + sysbus_connect_irq(s, k++, openpic_irqs[i].irq[j]);
> + }
> + }
> + g_free(openpic_irqs);
> +
> /* We only emulate 2 out of 3 IDE controllers for now */
> ide_drive_get(hd, ARRAY_SIZE(hd));
>
> diff --git a/include/hw/misc/macio/macio.h b/include/hw/misc/macio/macio.h
> index 707dfab50c..6c05f3bfd2 100644
> --- a/include/hw/misc/macio/macio.h
> +++ b/include/hw/misc/macio/macio.h
> @@ -115,7 +115,7 @@ struct NewWorldMacIOState {
>
> bool has_pmu;
> bool has_adb;
> - OpenPICState *pic;
> + OpenPICState pic;
> MACIOIDEState ide[2];
> MacIOGPIOState gpio;
> };
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature
- [PATCH v2 0/7] macio: remove PIC object property links, Mark Cave-Ayland, 2020/12/29
- [PATCH v2 1/7] mac_oldworld: remove duplicate bus check for PPC_INPUT(env), Mark Cave-Ayland, 2020/12/29
- [PATCH v2 2/7] mac_oldworld: move initialisation of grackle before heathrow, Mark Cave-Ayland, 2020/12/29
- [PATCH v2 3/7] macio: move heathrow PIC inside macio-oldworld device, Mark Cave-Ayland, 2020/12/29
- [PATCH v2 4/7] mac_newworld: delay wiring of PCI IRQs in New World machine, Mark Cave-Ayland, 2020/12/29
- [PATCH v2 5/7] macio: move OpenPIC inside macio-newworld device, Mark Cave-Ayland, 2020/12/29
- Re: [PATCH v2 5/7] macio: move OpenPIC inside macio-newworld device,
David Gibson <=
- [PATCH v2 6/7] macio: wire macio GPIOs to OpenPIC using sysbus IRQs, Mark Cave-Ayland, 2020/12/29
- [PATCH v2 7/7] macio: don't set user_creatable to false, Mark Cave-Ayland, 2020/12/29