aspeed: Introduce a get_irq AspeedSoCClass method
and make routine aspeed_soc_get_irq() common to all SoCs. This will be useful to share code. Cc: Jamin Lin <jamin_lin@aspeedtech.com> Cc: Peter Delevoryas <pdel@fb.com> Reviewed-by: Peter Delevoryas <pdel@fb.com> Signed-off-by: Cédric Le Goater <clg@kaod.org> Message-Id: <20220516055620.2380197-1-clg@kaod.org> Signed-off-by: Cédric Le Goater <clg@kaod.org>
This commit is contained in:
parent
188052a133
commit
699db71520
@ -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 = {
|
||||
|
@ -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 = {
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user