[PATCH] aspeed: Introduce a get_irq AspeedSoCClass method

Cédric Le Goater posted 1 patch 1 year, 10 months ago
There is a newer version of this series
include/hw/arm/aspeed_soc.h |  3 +++
hw/arm/aspeed_ast10x0.c     |  3 ++-
hw/arm/aspeed_ast2600.c     |  3 ++-
hw/arm/aspeed_soc.c         | 11 +++++++++--
4 files changed, 16 insertions(+), 4 deletions(-)
[PATCH] aspeed: Introduce a get_irq AspeedSoCClass method
Posted by Cédric Le Goater 1 year, 10 months ago
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>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
 include/hw/arm/aspeed_soc.h |  3 +++
 hw/arm/aspeed_ast10x0.c     |  3 ++-
 hw/arm/aspeed_ast2600.c     |  3 ++-
 hw/arm/aspeed_soc.c         | 11 +++++++++--
 4 files changed, 16 insertions(+), 4 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..ddec5706f3c1 100644
--- a/hw/arm/aspeed_ast10x0.c
+++ b/hw/arm/aspeed_ast10x0.c
@@ -61,7 +61,7 @@ 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);
 
@@ -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..255dbc6b95ab 100644
--- a/hw/arm/aspeed_ast2600.c
+++ b/hw/arm/aspeed_ast2600.c
@@ -114,7 +114,7 @@ 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);
 
@@ -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..15b641da9a36 100644
--- a/hw/arm/aspeed_soc.c
+++ b/hw/arm/aspeed_soc.c
@@ -121,7 +121,7 @@ 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);
 
@@ -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, ctrl);
+}
-- 
2.35.1


Re: [PATCH] aspeed: Introduce a get_irq AspeedSoCClass method
Posted by Peter Delevoryas 1 year, 10 months ago
> On May 15, 2022, at 2:10 PM, Cédric Le Goater <clg@kaod.org> wrote:
> 
> 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>
> Signed-off-by: Cédric Le Goater <clg@kaod.org>
> ---
> include/hw/arm/aspeed_soc.h |  3 +++
> hw/arm/aspeed_ast10x0.c     |  3 ++-
> hw/arm/aspeed_ast2600.c     |  3 ++-
> hw/arm/aspeed_soc.c         | 11 +++++++++--
> 4 files changed, 16 insertions(+), 4 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..ddec5706f3c1 100644
> --- a/hw/arm/aspeed_ast10x0.c
> +++ b/hw/arm/aspeed_ast10x0.c
> @@ -61,7 +61,7 @@ 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);
> 
> @@ -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..255dbc6b95ab 100644
> --- a/hw/arm/aspeed_ast2600.c
> +++ b/hw/arm/aspeed_ast2600.c
> @@ -114,7 +114,7 @@ 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);
> 
> @@ -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..15b641da9a36 100644
> --- a/hw/arm/aspeed_soc.c
> +++ b/hw/arm/aspeed_soc.c
> @@ -121,7 +121,7 @@ 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);
> 
> @@ -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, ctrl);
> +}

I think “dev” needs to be changed to “ctrl” or vice-versa.
(Compilation failure)

> -- 
> 2.35.1
> 

Re: [PATCH] aspeed: Introduce a get_irq AspeedSoCClass method
Posted by Cédric Le Goater 1 year, 10 months ago
On 5/16/22 01:01, Peter Delevoryas wrote:
> 
>> On May 15, 2022, at 2:10 PM, Cédric Le Goater <clg@kaod.org> wrote:
>>
>> 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>
>> Signed-off-by: Cédric Le Goater <clg@kaod.org>
>> ---
>> include/hw/arm/aspeed_soc.h |  3 +++
>> hw/arm/aspeed_ast10x0.c     |  3 ++-
>> hw/arm/aspeed_ast2600.c     |  3 ++-
>> hw/arm/aspeed_soc.c         | 11 +++++++++--
>> 4 files changed, 16 insertions(+), 4 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..ddec5706f3c1 100644
>> --- a/hw/arm/aspeed_ast10x0.c
>> +++ b/hw/arm/aspeed_ast10x0.c
>> @@ -61,7 +61,7 @@ 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);
>>
>> @@ -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..255dbc6b95ab 100644
>> --- a/hw/arm/aspeed_ast2600.c
>> +++ b/hw/arm/aspeed_ast2600.c
>> @@ -114,7 +114,7 @@ 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);
>>
>> @@ -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..15b641da9a36 100644
>> --- a/hw/arm/aspeed_soc.c
>> +++ b/hw/arm/aspeed_soc.c
>> @@ -121,7 +121,7 @@ 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);
>>
>> @@ -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, ctrl);
>> +}
> 
> I think “dev” needs to be changed to “ctrl” or vice-versa.
> (Compilation failure)

Last minute changes ... Sent a v2 !

Thanks,

C.