[PATCH qemu 02/38] aspeed: QOMify the CPU object and attach it to the SoC

Joel Stanley joel at jms.id.au
Mon Nov 21 18:25:10 AEDT 2016


On Sat, Nov 19, 2016 at 12:51 AM, Cédric Le Goater <clg at kaod.org> wrote:
> Signed-off-by: Cédric Le Goater <clg at kaod.org>

Reviewed-by: Joel Stanley <joel at jms.id.au>

> ---
>  hw/arm/aspeed_soc.c         | 17 ++++++++++++++---
>  include/hw/arm/aspeed_soc.h |  2 +-
>  2 files changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/hw/arm/aspeed_soc.c b/hw/arm/aspeed_soc.c
> index e14f5c217eab..db145e201451 100644
> --- a/hw/arm/aspeed_soc.c
> +++ b/hw/arm/aspeed_soc.c
> @@ -87,9 +87,13 @@ static void aspeed_soc_init(Object *obj)
>  {
>      AspeedSoCState *s = ASPEED_SOC(obj);
>      AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(s);
> +    char *cpu_typename;
>      int i;
>
> -    s->cpu = cpu_arm_init(sc->info->cpu_model);
> +    cpu_typename = g_strdup_printf("%s-" TYPE_ARM_CPU, sc->info->cpu_model);
> +    object_initialize(&s->cpu, sizeof(s->cpu), cpu_typename);
> +    object_property_add_child(obj, "cpu", OBJECT(&s->cpu), NULL);
> +    g_free(cpu_typename);
>
>      object_initialize(&s->vic, sizeof(s->vic), TYPE_ASPEED_VIC);
>      object_property_add_child(obj, "vic", OBJECT(&s->vic), NULL);
> @@ -146,6 +150,13 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
>      memory_region_add_subregion_overlap(get_system_memory(),
>                                          ASPEED_SOC_IOMEM_BASE, &s->iomem, -1);
>
> +    /* CPU */
> +    object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err);
> +    if (err) {
> +        error_propagate(errp, err);
> +        return;
> +    }
> +
>      /* VIC */
>      object_property_set_bool(OBJECT(&s->vic), true, "realized", &err);
>      if (err) {
> @@ -154,9 +165,9 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
>      }
>      sysbus_mmio_map(SYS_BUS_DEVICE(&s->vic), 0, ASPEED_SOC_VIC_BASE);
>      sysbus_connect_irq(SYS_BUS_DEVICE(&s->vic), 0,
> -                       qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_IRQ));
> +                       qdev_get_gpio_in(DEVICE(&s->cpu), ARM_CPU_IRQ));
>      sysbus_connect_irq(SYS_BUS_DEVICE(&s->vic), 1,
> -                       qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_FIQ));
> +                       qdev_get_gpio_in(DEVICE(&s->cpu), ARM_CPU_FIQ));
>
>      /* Timer */
>      object_property_set_bool(OBJECT(&s->timerctrl), true, "realized", &err);
> diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h
> index 5406b498d7ef..6f1b679c97b1 100644
> --- a/include/hw/arm/aspeed_soc.h
> +++ b/include/hw/arm/aspeed_soc.h
> @@ -27,7 +27,7 @@ typedef struct AspeedSoCState {
>      DeviceState parent;
>
>      /*< public >*/
> -    ARMCPU *cpu;
> +    ARMCPU cpu;
>      MemoryRegion iomem;
>      AspeedVICState vic;
>      AspeedTimerCtrlState timerctrl;
> --
> 2.7.4
>
> _______________________________________________
> openbmc mailing list
> openbmc at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/openbmc


More information about the openbmc mailing list