diff mbox

[1/4] ARM: shmobile: sh73a0: Set control-parent for all irqpin nodes

Message ID 1418869570-13529-2-git-send-email-laurent.pinchart+renesas@ideasonboard.com (mailing list archive)
State Deferred
Delegated to: Simon Horman
Headers show

Commit Message

Laurent Pinchart Dec. 18, 2014, 2:26 a.m. UTC
The sh73a0 INTC can't mask interrupts properly most likely due to a
hardware bug. Set the control-parent property to delegate masking to the
parent interrupt controller.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
 arch/arm/boot/dts/sh73a0.dtsi | 3 +++
 1 file changed, 3 insertions(+)

Comments

Magnus Damm Dec. 18, 2014, 3:17 a.m. UTC | #1
Hi Laurent,

On Thu, Dec 18, 2014 at 11:26 AM, Laurent Pinchart
<laurent.pinchart+renesas@ideasonboard.com> wrote:
> The sh73a0 INTC can't mask interrupts properly most likely due to a
> hardware bug. Set the control-parent property to delegate masking to the
> parent interrupt controller.

Thanks for your patch. Are you sure it is needed for all interrupts?
If so, perhaps it we should consider to enable this in the driver
based on the SoC compat string?

Cheers,

/ magnus
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Laurent Pinchart Dec. 18, 2014, 3:24 a.m. UTC | #2
Hi Magnus,

On Thursday 18 December 2014 12:17:16 Magnus Damm wrote:
> On Thu, Dec 18, 2014 at 11:26 AM, Laurent Pinchart wrote:
> > The sh73a0 INTC can't mask interrupts properly most likely due to a
> > hardware bug. Set the control-parent property to delegate masking to the
> > parent interrupt controller.
> 
> Thanks for your patch. Are you sure it is needed for all interrupts?

I'm not as I can't test all interrupts, but given that it's needed for two 
interrupts on two different INTC instances (well, two different INTC DT nodes, 
but it's really the same IP core) I'm pretty confident that the workaround is 
needed for all INTC interrupts on sh73a0.

> If so, perhaps it we should consider to enable this in the driver based on
> the SoC compat string?

I was thinking about that. We could then remove the property from the DT 
bindings.
Geert Uytterhoeven Jan. 6, 2015, 1:02 p.m. UTC | #3
Hi Laurent,

On Thu, Dec 18, 2014 at 3:26 AM, Laurent Pinchart
<laurent.pinchart+renesas@ideasonboard.com> wrote:
> The sh73a0 INTC can't mask interrupts properly most likely due to a
> hardware bug. Set the control-parent property to delegate masking to the
> parent interrupt controller.

Thanks a lot!

Without this, accessing the three-axis digital accelerometer ADXL345
through /dev/input/event0 causes an interrupt storm, which requires a
power-cycle to recover from.

> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>

Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/boot/dts/sh73a0.dtsi b/arch/arm/boot/dts/sh73a0.dtsi
index 5dae3d335a5d..2d2f0766a099 100644
--- a/arch/arm/boot/dts/sh73a0.dtsi
+++ b/arch/arm/boot/dts/sh73a0.dtsi
@@ -154,6 +154,7 @@ 
 		power-domains = <&pd_a4s>;
 		stop-latency = <250000>;
 		start-latency = <250000>;
+		control-parent;
 	};
 
 	irqpin1: irqpin@e6900004 {
@@ -201,6 +202,7 @@ 
 		power-domains = <&pd_a4s>;
 		stop-latency = <250000>;
 		start-latency = <250000>;
+		control-parent;
 	};
 
 	irqpin3: irqpin@e690000c {
@@ -224,6 +226,7 @@ 
 		power-domains = <&pd_a4s>;
 		stop-latency = <250000>;
 		start-latency = <250000>;
+		control-parent;
 	};
 
 	i2c0: i2c@e6820000 {