All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Cc: thuth@redhat.com, qemu-ppc@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [PATCH v2 5/7] macio: move OpenPIC inside macio-newworld device
Date: Thu, 31 Dec 2020 17:48:22 +1100	[thread overview]
Message-ID: <20201231064822.GB25471@yekko.fritz.box> (raw)
In-Reply-To: <20201229175619.6051-6-mark.cave-ayland@ilande.co.uk>

[-- Attachment #1: Type: text/plain, Size: 5814 bytes --]

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

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2020-12-31  7:24 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-29 17:56 [PATCH v2 0/7] macio: remove PIC object property links Mark Cave-Ayland
2020-12-29 17:56 ` [PATCH v2 1/7] mac_oldworld: remove duplicate bus check for PPC_INPUT(env) Mark Cave-Ayland
2020-12-29 17:56 ` [PATCH v2 2/7] mac_oldworld: move initialisation of grackle before heathrow Mark Cave-Ayland
2020-12-30  1:25   ` David Gibson
2020-12-29 17:56 ` [PATCH v2 3/7] macio: move heathrow PIC inside macio-oldworld device Mark Cave-Ayland
2020-12-30  1:36   ` David Gibson
2020-12-29 17:56 ` [PATCH v2 4/7] mac_newworld: delay wiring of PCI IRQs in New World machine Mark Cave-Ayland
2020-12-31  6:44   ` David Gibson
2020-12-29 17:56 ` [PATCH v2 5/7] macio: move OpenPIC inside macio-newworld device Mark Cave-Ayland
2020-12-31  6:48   ` David Gibson [this message]
2020-12-29 17:56 ` [PATCH v2 6/7] macio: wire macio GPIOs to OpenPIC using sysbus IRQs Mark Cave-Ayland
2020-12-29 17:56 ` [PATCH v2 7/7] macio: don't set user_creatable to false Mark Cave-Ayland
2021-01-07 14:26 ` [PATCH v2 0/7] macio: remove PIC object property links Mark Cave-Ayland
2021-01-07 23:24   ` David Gibson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201231064822.GB25471@yekko.fritz.box \
    --to=david@gibson.dropbear.id.au \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.