> -----Original Message-----
> From: Yubin Zou <[email protected]>
> Sent: Wednesday, December 17, 2025 8:22 AM
> To: [email protected]
> Cc: Cédric Le Goater <[email protected]>; Peter Maydell
> <[email protected]>; Steven Lee <[email protected]>; Troy
> Lee <[email protected]>; Jamin Lin <[email protected]>; Andrew
> Jeffery <[email protected]>; Joel Stanley <[email protected]>;
> Fabiano Rosas <[email protected]>; Laurent Vivier <[email protected]>;
> Paolo Bonzini <[email protected]>; Kane Chen
> <[email protected]>; Nabih Estefan <[email protected]>;
> [email protected]; Yubin Zou <[email protected]>
> Subject: [PATCH v4 4/6] hw/arm/aspeed_soc: Update Aspeed SoC to support
> two SGPIO controllers
> 
> This commit updates the Aspeed SoC model to support two SGPIO controllers,
> reflecting the hardware capabilities of the AST2700
> 
> The memory map and interrupt map are updated to include entries for two
> SGPIO controllers (SGPIOM0 and SGPIOM1). This change is a prerequisite for
> the full implementation of the SGPIO device model.
> 
> Signed-off-by: Yubin Zou <[email protected]>
> ---
>  include/hw/arm/aspeed_soc.h |  8 ++++++--
>  hw/arm/aspeed_ast10x0.c     |  6 +++---
>  hw/arm/aspeed_ast27x0.c     | 10 ++++++++++
>  3 files changed, 19 insertions(+), 5 deletions(-)
> 
> diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h
> index
> 4b8e599f1a53bfb2e4d3196d5495cd316f799354..18ff961a38508c5df83b46e1
> 87f732d736443f20 100644
> --- a/include/hw/arm/aspeed_soc.h
> +++ b/include/hw/arm/aspeed_soc.h
> @@ -32,6 +32,7 @@
>  #include "hw/net/ftgmac100.h"
>  #include "target/arm/cpu.h"
>  #include "hw/gpio/aspeed_gpio.h"
> +#include "hw/gpio/aspeed_sgpio.h"
>  #include "hw/sd/aspeed_sdhci.h"
>  #include "hw/usb/hcd-ehci.h"
>  #include "qom/object.h"
> @@ -46,6 +47,7 @@
>  #define VBOOTROM_FILE_NAME  "ast27x0_bootrom.bin"
> 
>  #define ASPEED_SPIS_NUM  3
> +#define ASPEED_SGPIO_NUM 2
>  #define ASPEED_EHCIS_NUM 4
>  #define ASPEED_WDTS_NUM  8
>  #define ASPEED_CPUS_NUM  4
> @@ -89,6 +91,7 @@ struct AspeedSoCState {
>      AspeedMiiState mii[ASPEED_MACS_NUM];
>      AspeedGPIOState gpio;
>      AspeedGPIOState gpio_1_8v;
> +    AspeedSGPIOState sgpiom[ASPEED_SGPIO_NUM];
>      AspeedSDHCIState sdhci;
>      AspeedSDHCIState emmc;
>      AspeedLPCState lpc;
> @@ -106,7 +109,6 @@ struct AspeedSoCState {
>      UnimplementedDeviceState pwm;
>      UnimplementedDeviceState espi;
>      UnimplementedDeviceState udc;
> -    UnimplementedDeviceState sgpiom;
>      UnimplementedDeviceState ltpi;
>      UnimplementedDeviceState jtag[ASPEED_JTAG_NUM];
>      AspeedAPB2OPBState fsi[2];
> @@ -166,6 +168,7 @@ struct AspeedSoCClass {
>      uint64_t secsram_size;
>      int pcie_num;
>      int spis_num;
> +    int sgpio_num;
>      int ehcis_num;
>      int wdts_num;
>      int macs_num;
> @@ -221,6 +224,8 @@ enum {
>      ASPEED_DEV_SDHCI,
>      ASPEED_DEV_GPIO,
>      ASPEED_DEV_GPIO_1_8V,
> +    ASPEED_DEV_SGPIOM0,
> +    ASPEED_DEV_SGPIOM1,
>      ASPEED_DEV_RTC,
>      ASPEED_DEV_TIMER1,
>      ASPEED_DEV_TIMER2,
> @@ -263,7 +268,6 @@ enum {
>      ASPEED_DEV_I3C,
>      ASPEED_DEV_ESPI,
>      ASPEED_DEV_UDC,
> -    ASPEED_DEV_SGPIOM,
>      ASPEED_DEV_JTAG0,
>      ASPEED_DEV_JTAG1,
>      ASPEED_DEV_FSI1,
> diff --git a/hw/arm/aspeed_ast10x0.c b/hw/arm/aspeed_ast10x0.c index
> 7f49c13391be0b923e317409a0fccfa741f5e658..c141cc080422579ca6b69653
> 69d84dfbe416247b 100644
> --- a/hw/arm/aspeed_ast10x0.c
> +++ b/hw/arm/aspeed_ast10x0.c
> @@ -36,7 +36,7 @@ static const hwaddr aspeed_soc_ast1030_memmap[] = {
>      [ASPEED_DEV_ESPI]      = 0x7E6EE000,
>      [ASPEED_DEV_SBC]       = 0x7E6F2000,
>      [ASPEED_DEV_GPIO]      = 0x7E780000,
> -    [ASPEED_DEV_SGPIOM]    = 0x7E780500,
> +    [ASPEED_DEV_SGPIOM0]   = 0x7E780500,
>      [ASPEED_DEV_TIMER1]    = 0x7E782000,
>      [ASPEED_DEV_UART1]     = 0x7E783000,
>      [ASPEED_DEV_UART2]     = 0x7E78D000,
> @@ -94,7 +94,7 @@ static const int aspeed_soc_ast1030_irqmap[] = {
>      [ASPEED_DEV_I2C]       = 110, /* 110 ~ 123 */
>      [ASPEED_DEV_KCS]       = 138, /* 138 -> 142 */
>      [ASPEED_DEV_UDC]       = 9,
> -    [ASPEED_DEV_SGPIOM]    = 51,
> +    [ASPEED_DEV_SGPIOM0]   = 51,
>      [ASPEED_DEV_JTAG0]     = 27,
>      [ASPEED_DEV_JTAG1]     = 53,
>  };
> @@ -427,7 +427,7 @@ static void aspeed_soc_ast1030_realize(DeviceState
> *dev_soc, Error **errp)
>                                    sc->memmap[ASPEED_DEV_UDC],
> 0x1000);
>      aspeed_mmio_map_unimplemented(s->memory,
> SYS_BUS_DEVICE(&s->sgpiom),
>                                    "aspeed.sgpiom",
> -
> sc->memmap[ASPEED_DEV_SGPIOM], 0x100);
> +
> sc->memmap[ASPEED_DEV_SGPIOM0],
> + 0x100);
> 
>      aspeed_mmio_map_unimplemented(s->memory,
> SYS_BUS_DEVICE(&s->jtag[0]),
>                                    "aspeed.jtag", diff --git
> a/hw/arm/aspeed_ast27x0.c b/hw/arm/aspeed_ast27x0.c index
> c484bcd4e22fb49faf9c16992ae2cdfd6cd82da4..e5f04bd16e80696e41005d90
> 62a6df6d060b8088 100644
> --- a/hw/arm/aspeed_ast27x0.c
> +++ b/hw/arm/aspeed_ast27x0.c
> @@ -69,6 +69,8 @@ static const hwaddr aspeed_soc_ast2700_memmap[] = {
>      [ASPEED_DEV_ADC]       =  0x14C00000,
>      [ASPEED_DEV_SCUIO]     =  0x14C02000,
>      [ASPEED_DEV_GPIO]      =  0x14C0B000,
> +    [ASPEED_DEV_SGPIOM0]   =  0x14C0C000,
> +    [ASPEED_DEV_SGPIOM1]   =  0x14C0D000,
>      [ASPEED_DEV_I2C]       =  0x14C0F000,
>      [ASPEED_DEV_INTCIO]    =  0x14C18000,
>      [ASPEED_DEV_PCIE_PHY2] =  0x14C1C000, @@ -122,6 +124,8 @@
> static const int aspeed_soc_ast2700a0_irqmap[] = {
>      [ASPEED_DEV_KCS]       = 128,
>      [ASPEED_DEV_ADC]       = 130,
>      [ASPEED_DEV_GPIO]      = 130,
> +    [ASPEED_DEV_SGPIOM0]   = 130,
> +    [ASPEED_DEV_SGPIOM1]   = 130,
>      [ASPEED_DEV_I2C]       = 130,
>      [ASPEED_DEV_FMC]       = 131,
>      [ASPEED_DEV_WDT]       = 131,
> @@ -173,6 +177,8 @@ static const int aspeed_soc_ast2700a1_irqmap[] = {
>      [ASPEED_DEV_I2C]       = 194,
>      [ASPEED_DEV_ADC]       = 194,
>      [ASPEED_DEV_GPIO]      = 194,
> +    [ASPEED_DEV_SGPIOM0]   = 194,
> +    [ASPEED_DEV_SGPIOM1]   = 194,
>      [ASPEED_DEV_FMC]       = 195,
>      [ASPEED_DEV_WDT]       = 195,
>      [ASPEED_DEV_PWM]       = 195,
> @@ -214,6 +220,8 @@ static const int ast2700_gic130_gic194_intcmap[] = {
>      [ASPEED_DEV_I2C]        = 0,
>      [ASPEED_DEV_ADC]        = 16,
>      [ASPEED_DEV_GPIO]       = 18,
> +    [ASPEED_DEV_SGPIOM0]    = 21,
> +    [ASPEED_DEV_SGPIOM1]    = 24,
>  };
> 
>  /* GICINT 131 */
> @@ -1061,6 +1069,7 @@ static void
> aspeed_soc_ast2700a0_class_init(ObjectClass *oc, const void *data)
>      sc->sram_size    = 0x20000;
>      sc->pcie_num     = 0;
>      sc->spis_num     = 3;
> +    sc->sgpio_num    = 2;
>      sc->ehcis_num    = 2;
>      sc->wdts_num     = 8;
>      sc->macs_num     = 1;
> @@ -1089,6 +1098,7 @@ static void
> aspeed_soc_ast2700a1_class_init(ObjectClass *oc, const void *data)
>      sc->sram_size    = 0x20000;
>      sc->pcie_num     = 3;
>      sc->spis_num     = 3;
> +    sc->sgpio_num    = 2;
>      sc->ehcis_num    = 4;
>      sc->wdts_num     = 8;
>      sc->macs_num     = 3;
> 
> --
> 2.52.0.305.g3fc767764a-goog

Hi Yubin,

Since there are no code changes between v2 and v4 for this part, I think
you can keep the review tag that Cédric added.

Best Regards,
Kane

Reply via email to