The AST1040 GPIO controller is compatible with the AST2700 GPIO controller implementation.
Reuse the existing "aspeed.gpio-ast2700" device model for AST1040 instead of introducing a separate implementation. Add the GPIO device initialization, MMIO mapping, and IRQ wiring for the AST1040 SoC model. Signed-off-by: Jamin Lin <[email protected]> Reviewed-by: Cédric Le Goater <[email protected]> --- hw/arm/aspeed_ast1040.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hw/arm/aspeed_ast1040.c b/hw/arm/aspeed_ast1040.c index 9ae0a0e7a4..c6b22186ce 100644 --- a/hw/arm/aspeed_ast1040.c +++ b/hw/arm/aspeed_ast1040.c @@ -111,6 +111,7 @@ static void aspeed_soc_ast1040_init(Object *obj) object_initialize_child(obj, "adc", &s->adc, TYPE_ASPEED_2700_ADC); object_initialize_child(obj, "peci", &s->peci, TYPE_ASPEED_PECI); + object_initialize_child(obj, "gpio", &s->gpio, "aspeed.gpio-ast2700"); object_initialize_child(obj, "pwm", &s->pwm, TYPE_UNIMPLEMENTED_DEVICE); object_initialize_child(obj, "espi", &s->espi, TYPE_UNIMPLEMENTED_DEVICE); @@ -211,6 +212,15 @@ static void aspeed_soc_ast1040_realize(DeviceState *dev_soc, Error **errp) sysbus_connect_irq(SYS_BUS_DEVICE(&s->peci), 0, aspeed_soc_ast1040_get_irq(s, ASPEED_DEV_PECI)); + /* GPIO */ + if (!sysbus_realize(SYS_BUS_DEVICE(&s->gpio), errp)) { + return; + } + aspeed_mmio_map(s->memory, SYS_BUS_DEVICE(&s->gpio), 0, + sc->memmap[ASPEED_DEV_GPIO]); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->gpio), 0, + aspeed_soc_ast1040_get_irq(s, ASPEED_DEV_GPIO)); + /* Unimplemented peripherals */ aspeed_mmio_map_unimplemented(s->memory, SYS_BUS_DEVICE(&s->pwm), "aspeed.pwm", -- 2.43.0
