> On May 15, 2022, at 10:56 PM, Cédric Le Goater <c...@kaod.org> wrote: > > and make routine aspeed_soc_get_irq() common to all SoCs. This will be > useful to share code.
Looks good, I just tested that I could rebase my changes on it and recompile/etc. Reviewed-by: Peter Delevoryas <p...@fb.com> > > Cc: Jamin Lin <jamin_...@aspeedtech.com> > Cc: Peter Delevoryas <p...@fb.com> > Signed-off-by: Cédric Le Goater <c...@kaod.org> > --- > include/hw/arm/aspeed_soc.h | 3 +++ > hw/arm/aspeed_ast10x0.c | 5 +++-- > hw/arm/aspeed_ast2600.c | 5 +++-- > hw/arm/aspeed_soc.c | 13 ++++++++++--- > 4 files changed, 19 insertions(+), 7 deletions(-) > > diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h > index e13af374b923..3789f38603e5 100644 > --- a/include/hw/arm/aspeed_soc.h > +++ b/include/hw/arm/aspeed_soc.h > @@ -94,6 +94,7 @@ struct AspeedSoCClass { > const int *irqmap; > const hwaddr *memmap; > uint32_t num_cpus; > + qemu_irq (*get_irq)(AspeedSoCState *s, int dev); > }; > > > @@ -153,4 +154,6 @@ enum { > ASPEED_DEV_I3C, > }; > > +qemu_irq aspeed_soc_get_irq(AspeedSoCState *s, int dev); > + > #endif /* ASPEED_SOC_H */ > diff --git a/hw/arm/aspeed_ast10x0.c b/hw/arm/aspeed_ast10x0.c > index 427154928254..9ae9efaac144 100644 > --- a/hw/arm/aspeed_ast10x0.c > +++ b/hw/arm/aspeed_ast10x0.c > @@ -61,11 +61,11 @@ static const int aspeed_soc_ast1030_irqmap[] = { > [ASPEED_DEV_KCS] = 138, /* 138 -> 142 */ > }; > > -static qemu_irq aspeed_soc_get_irq(AspeedSoCState *s, int ctrl) > +static qemu_irq aspeed_soc_ast1030_get_irq(AspeedSoCState *s, int dev) > { > AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(s); > > - return qdev_get_gpio_in(DEVICE(&s->armv7m), sc->irqmap[ctrl]); > + return qdev_get_gpio_in(DEVICE(&s->armv7m), sc->irqmap[dev]); > } > > static void aspeed_soc_ast1030_init(Object *obj) > @@ -280,6 +280,7 @@ static void aspeed_soc_ast1030_class_init(ObjectClass > *klass, void *data) > sc->irqmap = aspeed_soc_ast1030_irqmap; > sc->memmap = aspeed_soc_ast1030_memmap; > sc->num_cpus = 1; > + sc->get_irq = aspeed_soc_ast1030_get_irq; > } > > static const TypeInfo aspeed_soc_ast1030_type_info = { > diff --git a/hw/arm/aspeed_ast2600.c b/hw/arm/aspeed_ast2600.c > index eedda7badc37..4161a0cc4bbe 100644 > --- a/hw/arm/aspeed_ast2600.c > +++ b/hw/arm/aspeed_ast2600.c > @@ -114,11 +114,11 @@ static const int aspeed_soc_ast2600_irqmap[] = { > [ASPEED_DEV_I3C] = 102, /* 102 -> 107 */ > }; > > -static qemu_irq aspeed_soc_get_irq(AspeedSoCState *s, int ctrl) > +static qemu_irq aspeed_soc_ast2600_get_irq(AspeedSoCState *s, int dev) > { > AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(s); > > - return qdev_get_gpio_in(DEVICE(&s->a7mpcore), sc->irqmap[ctrl]); > + return qdev_get_gpio_in(DEVICE(&s->a7mpcore), sc->irqmap[dev]); > } > > static void aspeed_soc_ast2600_init(Object *obj) > @@ -572,6 +572,7 @@ static void aspeed_soc_ast2600_class_init(ObjectClass > *oc, void *data) > sc->irqmap = aspeed_soc_ast2600_irqmap; > sc->memmap = aspeed_soc_ast2600_memmap; > sc->num_cpus = 2; > + sc->get_irq = aspeed_soc_ast2600_get_irq; > } > > static const TypeInfo aspeed_soc_ast2600_type_info = { > diff --git a/hw/arm/aspeed_soc.c b/hw/arm/aspeed_soc.c > index 58714cb2a01d..c339b5c74de5 100644 > --- a/hw/arm/aspeed_soc.c > +++ b/hw/arm/aspeed_soc.c > @@ -121,11 +121,11 @@ static const int aspeed_soc_ast2400_irqmap[] = { > > #define aspeed_soc_ast2500_irqmap aspeed_soc_ast2400_irqmap > > -static qemu_irq aspeed_soc_get_irq(AspeedSoCState *s, int ctrl) > +static qemu_irq aspeed_soc_ast2400_get_irq(AspeedSoCState *s, int dev) > { > AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(s); > > - return qdev_get_gpio_in(DEVICE(&s->vic), sc->irqmap[ctrl]); > + return qdev_get_gpio_in(DEVICE(&s->vic), sc->irqmap[dev]); > } > > static void aspeed_soc_init(Object *obj) > @@ -487,6 +487,7 @@ static void aspeed_soc_ast2400_class_init(ObjectClass > *oc, void *data) > sc->irqmap = aspeed_soc_ast2400_irqmap; > sc->memmap = aspeed_soc_ast2400_memmap; > sc->num_cpus = 1; > + sc->get_irq = aspeed_soc_ast2400_get_irq; > } > > static const TypeInfo aspeed_soc_ast2400_type_info = { > @@ -512,6 +513,7 @@ static void aspeed_soc_ast2500_class_init(ObjectClass > *oc, void *data) > sc->irqmap = aspeed_soc_ast2500_irqmap; > sc->memmap = aspeed_soc_ast2500_memmap; > sc->num_cpus = 1; > + sc->get_irq = aspeed_soc_ast2400_get_irq; > } > > static const TypeInfo aspeed_soc_ast2500_type_info = { > @@ -528,4 +530,9 @@ static void aspeed_soc_register_types(void) > type_register_static(&aspeed_soc_ast2500_type_info); > }; > > -type_init(aspeed_soc_register_types) > +type_init(aspeed_soc_register_types); > + > +qemu_irq aspeed_soc_get_irq(AspeedSoCState *s, int dev) > +{ > + return ASPEED_SOC_GET_CLASS(s)->get_irq(s, dev); > +} > -- > 2.35.1 >