On Tue, 2016-11-29 at 16:44 +0100, Cédric Le Goater wrote: > This enables reboot of a guest from U-Boot and Linux. > > Signed-off-by: Cédric Le Goater <c...@kaod.org> > Reviewed-by: Joel Stanley <j...@jms.id.au>
Reviewed-by: Andrew Jeffery <and...@aj.id.au> > --- > hw/arm/aspeed_soc.c | 13 +++++++++++++ > include/hw/arm/aspeed_soc.h | 2 ++ > 2 files changed, 15 insertions(+) > > diff --git a/hw/arm/aspeed_soc.c b/hw/arm/aspeed_soc.c > index 4fb777e6df6e..6df76382f007 100644 > --- a/hw/arm/aspeed_soc.c > +++ b/hw/arm/aspeed_soc.c > @@ -31,6 +31,7 @@ > #define ASPEED_SOC_SCU_BASE 0x1E6E2000 > #define ASPEED_SOC_SRAM_BASE 0x1E720000 > #define ASPEED_SOC_TIMER_BASE 0x1E782000 > +#define ASPEED_SOC_WDT_BASE 0x1E785000 > #define ASPEED_SOC_I2C_BASE 0x1E78A000 > > static const int uart_irqs[] = { 9, 32, 33, 34, 10 }; > @@ -170,6 +171,10 @@ static void aspeed_soc_init(Object *obj) > sc->info->silicon_rev); > object_property_add_alias(obj, "ram-size", OBJECT(&s->sdmc), > "ram-size", &error_abort); > + > + object_initialize(&s->wdt, sizeof(s->wdt), TYPE_ASPEED_WDT); > + object_property_add_child(obj, "wdt", OBJECT(&s->wdt), NULL); > + qdev_set_parent_bus(DEVICE(&s->wdt), sysbus_get_default()); > } > > static void aspeed_soc_realize(DeviceState *dev, Error **errp) > @@ -289,6 +294,14 @@ static void aspeed_soc_realize(DeviceState *dev, > Error **errp) > return; > } > sysbus_mmio_map(SYS_BUS_DEVICE(&s->sdmc), 0, > ASPEED_SOC_SDMC_BASE); > + > + /* Watch dog */ > + object_property_set_bool(OBJECT(&s->wdt), true, "realized", > &err); > + if (err) { > + error_propagate(errp, err); > + return; > + } > + sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt), 0, > ASPEED_SOC_WDT_BASE); > } > > static void aspeed_soc_class_init(ObjectClass *oc, void *data) > diff --git a/include/hw/arm/aspeed_soc.h > b/include/hw/arm/aspeed_soc.h > index 1ab5deaa0813..dbec0c159885 100644 > --- a/include/hw/arm/aspeed_soc.h > +++ b/include/hw/arm/aspeed_soc.h > @@ -19,6 +19,7 @@ > #include "hw/timer/aspeed_timer.h" > #include "hw/i2c/aspeed_i2c.h" > #include "hw/ssi/aspeed_smc.h" > +#include "hw/watchdog/wdt_aspeed.h" > > #define ASPEED_SPIS_NUM 2 > > @@ -37,6 +38,7 @@ typedef struct AspeedSoCState { > AspeedSMCState fmc; > AspeedSMCState spi[ASPEED_SPIS_NUM]; > AspeedSDMCState sdmc; > + AspeedWDTState wdt; > } AspeedSoCState; > > #define TYPE_ASPEED_SOC "aspeed-soc"
signature.asc
Description: This is a digitally signed message part