On [2021 Oct 18] Mon 15:26:06, Cédric Le Goater wrote: > Next changes will map the WDT2 registers in the AST2600 FMC memory > region. Make sure the MemoryRegion pointers are correctly initialized > before setting the object links. > > Do the same in the Aspeed AST2400 and AST2500 SoC models for > consistency. > > Signed-off-by: Cédric Le Goater <c...@kaod.org>
Reviewed-by: Francisco Iglesias <frasse.igles...@gmail.com> > --- > hw/arm/aspeed_ast2600.c | 36 ++++++++++++++++++------------------ > hw/arm/aspeed_soc.c | 36 ++++++++++++++++++------------------ > 2 files changed, 36 insertions(+), 36 deletions(-) > > diff --git a/hw/arm/aspeed_ast2600.c b/hw/arm/aspeed_ast2600.c > index 0384357a9510..3a7aa910b157 100644 > --- a/hw/arm/aspeed_ast2600.c > +++ b/hw/arm/aspeed_ast2600.c > @@ -148,6 +148,11 @@ static void aspeed_soc_ast2600_init(Object *obj) > snprintf(typename, sizeof(typename), "aspeed.timer-%s", socname); > object_initialize_child(obj, "timerctrl", &s->timerctrl, typename); > > + for (i = 0; i < sc->wdts_num; i++) { > + snprintf(typename, sizeof(typename), "aspeed.wdt-%s", socname); > + object_initialize_child(obj, "wdt[*]", &s->wdt[i], typename); > + } > + > snprintf(typename, sizeof(typename), "aspeed.adc-%s", socname); > object_initialize_child(obj, "adc", &s->adc, typename); > > @@ -175,11 +180,6 @@ static void aspeed_soc_ast2600_init(Object *obj) > object_property_add_alias(obj, "max-ram-size", OBJECT(&s->sdmc), > "max-ram-size"); > > - for (i = 0; i < sc->wdts_num; i++) { > - snprintf(typename, sizeof(typename), "aspeed.wdt-%s", socname); > - object_initialize_child(obj, "wdt[*]", &s->wdt[i], typename); > - } > - > for (i = 0; i < sc->macs_num; i++) { > object_initialize_child(obj, "ftgmac100[*]", &s->ftgmac100[i], > TYPE_FTGMAC100); > @@ -325,6 +325,19 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, > Error **errp) > sysbus_connect_irq(SYS_BUS_DEVICE(&s->timerctrl), i, irq); > } > > + /* Watch dog */ > + for (i = 0; i < sc->wdts_num; i++) { > + AspeedWDTClass *awc = ASPEED_WDT_GET_CLASS(&s->wdt[i]); > + > + object_property_set_link(OBJECT(&s->wdt[i]), "scu", OBJECT(&s->scu), > + &error_abort); > + if (!sysbus_realize(SYS_BUS_DEVICE(&s->wdt[i]), errp)) { > + return; > + } > + sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt[i]), 0, > + sc->memmap[ASPEED_DEV_WDT] + i * awc->offset); > + } > + > /* ADC */ > if (!sysbus_realize(SYS_BUS_DEVICE(&s->adc), errp)) { > return; > @@ -395,19 +408,6 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, > Error **errp) > } > sysbus_mmio_map(SYS_BUS_DEVICE(&s->sdmc), 0, > sc->memmap[ASPEED_DEV_SDMC]); > > - /* Watch dog */ > - for (i = 0; i < sc->wdts_num; i++) { > - AspeedWDTClass *awc = ASPEED_WDT_GET_CLASS(&s->wdt[i]); > - > - object_property_set_link(OBJECT(&s->wdt[i]), "scu", OBJECT(&s->scu), > - &error_abort); > - if (!sysbus_realize(SYS_BUS_DEVICE(&s->wdt[i]), errp)) { > - return; > - } > - sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt[i]), 0, > - sc->memmap[ASPEED_DEV_WDT] + i * awc->offset); > - } > - > /* Net */ > for (i = 0; i < sc->macs_num; i++) { > object_property_set_bool(OBJECT(&s->ftgmac100[i]), "aspeed", true, > diff --git a/hw/arm/aspeed_soc.c b/hw/arm/aspeed_soc.c > index 7d53cf2f5133..2eb30d14cf94 100644 > --- a/hw/arm/aspeed_soc.c > +++ b/hw/arm/aspeed_soc.c > @@ -162,6 +162,11 @@ static void aspeed_soc_init(Object *obj) > snprintf(typename, sizeof(typename), "aspeed.timer-%s", socname); > object_initialize_child(obj, "timerctrl", &s->timerctrl, typename); > > + for (i = 0; i < sc->wdts_num; i++) { > + snprintf(typename, sizeof(typename), "aspeed.wdt-%s", socname); > + object_initialize_child(obj, "wdt[*]", &s->wdt[i], typename); > + } > + > snprintf(typename, sizeof(typename), "aspeed.adc-%s", socname); > object_initialize_child(obj, "adc", &s->adc, typename); > > @@ -189,11 +194,6 @@ static void aspeed_soc_init(Object *obj) > object_property_add_alias(obj, "max-ram-size", OBJECT(&s->sdmc), > "max-ram-size"); > > - for (i = 0; i < sc->wdts_num; i++) { > - snprintf(typename, sizeof(typename), "aspeed.wdt-%s", socname); > - object_initialize_child(obj, "wdt[*]", &s->wdt[i], typename); > - } > - > for (i = 0; i < sc->macs_num; i++) { > object_initialize_child(obj, "ftgmac100[*]", &s->ftgmac100[i], > TYPE_FTGMAC100); > @@ -290,6 +290,19 @@ static void aspeed_soc_realize(DeviceState *dev, Error > **errp) > sysbus_connect_irq(SYS_BUS_DEVICE(&s->timerctrl), i, irq); > } > > + /* Watch dog */ > + for (i = 0; i < sc->wdts_num; i++) { > + AspeedWDTClass *awc = ASPEED_WDT_GET_CLASS(&s->wdt[i]); > + > + object_property_set_link(OBJECT(&s->wdt[i]), "scu", OBJECT(&s->scu), > + &error_abort); > + if (!sysbus_realize(SYS_BUS_DEVICE(&s->wdt[i]), errp)) { > + return; > + } > + sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt[i]), 0, > + sc->memmap[ASPEED_DEV_WDT] + i * awc->offset); > + } > + > /* ADC */ > if (!sysbus_realize(SYS_BUS_DEVICE(&s->adc), errp)) { > return; > @@ -354,19 +367,6 @@ static void aspeed_soc_realize(DeviceState *dev, Error > **errp) > } > sysbus_mmio_map(SYS_BUS_DEVICE(&s->sdmc), 0, > sc->memmap[ASPEED_DEV_SDMC]); > > - /* Watch dog */ > - for (i = 0; i < sc->wdts_num; i++) { > - AspeedWDTClass *awc = ASPEED_WDT_GET_CLASS(&s->wdt[i]); > - > - object_property_set_link(OBJECT(&s->wdt[i]), "scu", OBJECT(&s->scu), > - &error_abort); > - if (!sysbus_realize(SYS_BUS_DEVICE(&s->wdt[i]), errp)) { > - return; > - } > - sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt[i]), 0, > - sc->memmap[ASPEED_DEV_WDT] + i * awc->offset); > - } > - > /* Net */ > for (i = 0; i < sc->macs_num; i++) { > object_property_set_bool(OBJECT(&s->ftgmac100[i]), "aspeed", true, > -- > 2.31.1 > >