Hi Cedric, 

> Subject: Re: [PATCH v3 18/28] hw/arm/aspeed: Add SoC and Machine Support
> for AST2700 A1
> 
> On 2/13/25 04:35, Jamin Lin wrote:
> > The memory map for AST2700 A1 remains compatible with AST2700 A0.
> > However, the IRQ mapping has been updated for AST2700 A1, with GIC
> > interrupts now ranging from 192 to 201. Add a new IRQ map table for
> AST2700 A1.
> > Add "aspeed_soc_ast2700a1_class_init" to initialize the AST2700 A1 SoC.
> > Introduce "aspeed_machine_ast2700a1_evb_class_init" to initialize the
> > AST2700 A1 EVB.
> >
> > Signed-off-by: Jamin Lin <jamin_...@aspeedtech.com>
> > ---
> >   hw/arm/aspeed.c         | 13 +++++++
> >   hw/arm/aspeed_ast27x0.c | 80
> +++++++++++++++++++++++++++++++++++++++++
> >   2 files changed, 93 insertions(+)
> >
> > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index
> > 6ddfdbdeba..c0539e5950 100644
> > --- a/hw/arm/aspeed.c
> > +++ b/hw/arm/aspeed.c
> > @@ -1672,6 +1672,15 @@ static void
> aspeed_machine_ast2700a0_evb_class_init(ObjectClass *oc, void *data)
> >       mc->default_ram_size = 1 * GiB;
> >       aspeed_machine_class_init_cpus_defaults(mc);
> >   }
> > +
> > +static void aspeed_machine_ast2700a1_evb_class_init(ObjectClass *oc,
> > +void *data) {
> > +    MachineClass *mc = MACHINE_CLASS(oc);
> > +    AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);
> > +
> > +    mc->desc = "Aspeed AST2700 A1 EVB (Cortex-A35)";
> > +    amc->soc_name  = "ast2700-a1";
> > +}
> >   #endif
> >
> >   static void aspeed_machine_qcom_dc_scm_v1_class_init(ObjectClass
> > *oc, @@ -1798,6 +1807,10 @@ static const TypeInfo
> aspeed_machine_types[] = {
> >           .name          = MACHINE_TYPE_NAME("ast2700a0-evb"),
> >           .parent        = TYPE_ASPEED_MACHINE,
> >           .class_init    = aspeed_machine_ast2700a0_evb_class_init,
> > +        }, {
> > +        .name          = MACHINE_TYPE_NAME("ast2700a1-evb"),
> > +        .parent        = MACHINE_TYPE_NAME("ast2700a0-evb"),
> 
> Shouldn't the parent be TYPE_ASPEED_MACHINE instead ?
> 

Will update it.
Thanks for your review.
Jamin

> > +        .class_init    = aspeed_machine_ast2700a1_evb_class_init,
> >   #endif
> >       }, {
> >           .name          = TYPE_ASPEED_MACHINE,
> > diff --git a/hw/arm/aspeed_ast27x0.c b/hw/arm/aspeed_ast27x0.c index
> > 0ccec774de..926b4c3e76 100644
> > --- a/hw/arm/aspeed_ast27x0.c
> > +++ b/hw/arm/aspeed_ast27x0.c
> > @@ -119,6 +119,52 @@ static const int aspeed_soc_ast2700a0_irqmap[] = {
> >       [ASPEED_DEV_SDHCI]     = 133,
> >   };
> >
> > +static const int aspeed_soc_ast2700a1_irqmap[] = {
> > +    [ASPEED_DEV_SDMC]      = 0,
> > +    [ASPEED_DEV_HACE]      = 4,
> > +    [ASPEED_DEV_XDMA]      = 5,
> > +    [ASPEED_DEV_UART4]     = 8,
> > +    [ASPEED_DEV_SCU]       = 12,
> > +    [ASPEED_DEV_RTC]       = 13,
> > +    [ASPEED_DEV_EMMC]      = 15,
> > +    [ASPEED_DEV_TIMER1]    = 16,
> > +    [ASPEED_DEV_TIMER2]    = 17,
> > +    [ASPEED_DEV_TIMER3]    = 18,
> > +    [ASPEED_DEV_TIMER4]    = 19,
> > +    [ASPEED_DEV_TIMER5]    = 20,
> > +    [ASPEED_DEV_TIMER6]    = 21,
> > +    [ASPEED_DEV_TIMER7]    = 22,
> > +    [ASPEED_DEV_TIMER8]    = 23,
> > +    [ASPEED_DEV_DP]        = 28,
> > +    [ASPEED_DEV_LPC]       = 192,
> > +    [ASPEED_DEV_IBT]       = 192,
> > +    [ASPEED_DEV_KCS]       = 192,
> > +    [ASPEED_DEV_I2C]       = 194,
> > +    [ASPEED_DEV_ADC]       = 194,
> > +    [ASPEED_DEV_GPIO]      = 194,
> > +    [ASPEED_DEV_FMC]       = 195,
> > +    [ASPEED_DEV_WDT]       = 195,
> > +    [ASPEED_DEV_PWM]       = 195,
> > +    [ASPEED_DEV_I3C]       = 195,
> > +    [ASPEED_DEV_UART0]     = 196,
> > +    [ASPEED_DEV_UART1]     = 196,
> > +    [ASPEED_DEV_UART2]     = 196,
> > +    [ASPEED_DEV_UART3]     = 196,
> > +    [ASPEED_DEV_UART5]     = 196,
> > +    [ASPEED_DEV_UART6]     = 196,
> > +    [ASPEED_DEV_UART7]     = 196,
> > +    [ASPEED_DEV_UART8]     = 196,
> > +    [ASPEED_DEV_UART9]     = 196,
> > +    [ASPEED_DEV_UART10]    = 196,
> > +    [ASPEED_DEV_UART11]    = 196,
> > +    [ASPEED_DEV_UART12]    = 196,
> > +    [ASPEED_DEV_ETH1]      = 196,
> > +    [ASPEED_DEV_ETH2]      = 196,
> > +    [ASPEED_DEV_ETH3]      = 196,
> > +    [ASPEED_DEV_PECI]      = 197,
> > +    [ASPEED_DEV_SDHCI]     = 197,
> > +};
> > +
> >   /* GICINT 128 */
> >   /* GICINT 192 */
> >   static const int ast2700_gic128_gic192_intcmap[] = { @@ -838,6
> > +884,34 @@ static void aspeed_soc_ast2700a0_class_init(ObjectClass *oc,
> void *data)
> >       sc->get_irq      = aspeed_soc_ast2700_get_irq;
> >   }
> >
> > +static void aspeed_soc_ast2700a1_class_init(ObjectClass *oc, void
> > +*data) {
> > +    static const char * const valid_cpu_types[] = {
> > +        ARM_CPU_TYPE_NAME("cortex-a35"),
> > +        NULL
> > +    };
> > +    DeviceClass *dc = DEVICE_CLASS(oc);
> > +    AspeedSoCClass *sc = ASPEED_SOC_CLASS(oc);
> > +
> > +    /* Reason: The Aspeed SoC can only be instantiated from a board */
> > +    dc->user_creatable = false;
> > +    dc->realize      = aspeed_soc_ast2700_realize;
> > +
> > +    sc->name         = "ast2700-a1";
> > +    sc->valid_cpu_types = valid_cpu_types;
> > +    sc->silicon_rev  = AST2700_A1_SILICON_REV;
> > +    sc->sram_size    = 0x20000;
> > +    sc->spis_num     = 3;
> > +    sc->wdts_num     = 8;
> > +    sc->macs_num     = 3;
> > +    sc->uarts_num    = 13;
> > +    sc->num_cpus     = 4;
> > +    sc->uarts_base   = ASPEED_DEV_UART0;
> > +    sc->irqmap       = aspeed_soc_ast2700a1_irqmap;
> > +    sc->memmap       = aspeed_soc_ast2700_memmap;
> > +    sc->get_irq      = aspeed_soc_ast2700_get_irq;
> > +}
> > +
> >   static const TypeInfo aspeed_soc_ast27x0_types[] = {
> >       {
> >           .name           = TYPE_ASPEED27X0_SOC,
> > @@ -850,6 +924,12 @@ static const TypeInfo aspeed_soc_ast27x0_types[] =
> {
> >           .instance_init  = aspeed_soc_ast2700_init,
> >           .class_init     = aspeed_soc_ast2700a0_class_init,
> >       },
> > +    {
> > +        .name           = "ast2700-a1",
> > +        .parent         = TYPE_ASPEED27X0_SOC,
> > +        .instance_init  = aspeed_soc_ast2700_init,
> > +        .class_init     = aspeed_soc_ast2700a1_class_init,
> > +    },
> >   };
> >
> >   DEFINE_TYPES(aspeed_soc_ast27x0_types)

Reply via email to