[RFC] sh: highlander: Handle virq offset in cascaded IRL demux

Message ID 4fcb0d08a2b372431c41e04312742dc9e41e1be4.1688908186.git.geert+renesas@glider.be
State New
Headers
Series [RFC] sh: highlander: Handle virq offset in cascaded IRL demux |

Commit Message

Geert Uytterhoeven July 9, 2023, 1:10 p.m. UTC
  Take into account the virq offset when translating cascaded IRL
interrupts.

Fixes: a8ac2961148e8c72 ("sh: Avoid using IRQ0 on SH3 and SH4")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
Compile-tested only, but the fix is identical to the fix for rts7751r2d.
---
 arch/sh/boards/mach-highlander/setup.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Comments

John Paul Adrian Glaubitz July 12, 2023, 5:15 a.m. UTC | #1
On Sun, 2023-07-09 at 15:10 +0200, Geert Uytterhoeven wrote:
> Take into account the virq offset when translating cascaded IRL
> interrupts.
> 
> Fixes: a8ac2961148e8c72 ("sh: Avoid using IRQ0 on SH3 and SH4")
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> ---
> Compile-tested only, but the fix is identical to the fix for rts7751r2d.
> ---
>  arch/sh/boards/mach-highlander/setup.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/sh/boards/mach-highlander/setup.c b/arch/sh/boards/mach-highlander/setup.c
> index 533393d779c2b97f..a821a1b155473d93 100644
> --- a/arch/sh/boards/mach-highlander/setup.c
> +++ b/arch/sh/boards/mach-highlander/setup.c
> @@ -389,10 +389,10 @@ static unsigned char irl2irq[HL_NR_IRL];
>  
>  static int highlander_irq_demux(int irq)
>  {
> -	if (irq >= HL_NR_IRL || irq < 0 || !irl2irq[irq])
> +	if (irq >= 16 + HL_NR_IRL || irq < 16 || !irl2irq[irq - 16])
>  		return irq;
>  
> -	return irl2irq[irq];
> +	return irl2irq[irq - 16];
>  }
>  
>  static void __init highlander_init_irq(void)

Reviewed-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
  
John Paul Adrian Glaubitz July 13, 2023, 6:54 a.m. UTC | #2
On Sun, 2023-07-09 at 15:10 +0200, Geert Uytterhoeven wrote:
> Take into account the virq offset when translating cascaded IRL
> interrupts.
> 
> Fixes: a8ac2961148e8c72 ("sh: Avoid using IRQ0 on SH3 and SH4")
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> ---
> Compile-tested only, but the fix is identical to the fix for rts7751r2d.
> ---
>  arch/sh/boards/mach-highlander/setup.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/sh/boards/mach-highlander/setup.c b/arch/sh/boards/mach-highlander/setup.c
> index 533393d779c2b97f..a821a1b155473d93 100644
> --- a/arch/sh/boards/mach-highlander/setup.c
> +++ b/arch/sh/boards/mach-highlander/setup.c
> @@ -389,10 +389,10 @@ static unsigned char irl2irq[HL_NR_IRL];
>  
>  static int highlander_irq_demux(int irq)
>  {
> -	if (irq >= HL_NR_IRL || irq < 0 || !irl2irq[irq])
> +	if (irq >= 16 + HL_NR_IRL || irq < 16 || !irl2irq[irq - 16])
>  		return irq;
>  
> -	return irl2irq[irq];
> +	return irl2irq[irq - 16];
>  }
>  
>  static void __init highlander_init_irq(void)

Applied to my for-linus branch.

Thanks,
Adrian
  
John Paul Adrian Glaubitz July 13, 2023, 6:55 a.m. UTC | #3
On Sun, 2023-07-09 at 15:10 +0200, Geert Uytterhoeven wrote:
> Take into account the virq offset when translating cascaded IRL
> interrupts.
> 
> Fixes: a8ac2961148e8c72 ("sh: Avoid using IRQ0 on SH3 and SH4")
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> ---
> Compile-tested only, but the fix is identical to the fix for rts7751r2d.
> ---
>  arch/sh/boards/mach-highlander/setup.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/sh/boards/mach-highlander/setup.c b/arch/sh/boards/mach-highlander/setup.c
> index 533393d779c2b97f..a821a1b155473d93 100644
> --- a/arch/sh/boards/mach-highlander/setup.c
> +++ b/arch/sh/boards/mach-highlander/setup.c
> @@ -389,10 +389,10 @@ static unsigned char irl2irq[HL_NR_IRL];
>  
>  static int highlander_irq_demux(int irq)
>  {
> -	if (irq >= HL_NR_IRL || irq < 0 || !irl2irq[irq])
> +	if (irq >= 16 + HL_NR_IRL || irq < 16 || !irl2irq[irq - 16])
>  		return irq;
>  
> -	return irl2irq[irq];
> +	return irl2irq[irq - 16];
>  }
>  
>  static void __init highlander_init_irq(void)

Applied to my for-linus branch.

Thanks,
Adrian
  

Patch

diff --git a/arch/sh/boards/mach-highlander/setup.c b/arch/sh/boards/mach-highlander/setup.c
index 533393d779c2b97f..a821a1b155473d93 100644
--- a/arch/sh/boards/mach-highlander/setup.c
+++ b/arch/sh/boards/mach-highlander/setup.c
@@ -389,10 +389,10 @@  static unsigned char irl2irq[HL_NR_IRL];
 
 static int highlander_irq_demux(int irq)
 {
-	if (irq >= HL_NR_IRL || irq < 0 || !irl2irq[irq])
+	if (irq >= 16 + HL_NR_IRL || irq < 16 || !irl2irq[irq - 16])
 		return irq;
 
-	return irl2irq[irq];
+	return irl2irq[irq - 16];
 }
 
 static void __init highlander_init_irq(void)