blob: 42ec72a14cf92eb51bc31c66b3f74200d0dd891f [file] [log] [blame]
From 3422f9f5073e5bbd67b6e182af7a839dd9499d23 Mon Sep 17 00:00:00 2001
From: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Date: Wed, 19 Jun 2013 07:53:09 +0200
Subject: ARM: shmobile: irqpin: add a DT property to enable masking on parent
To disable spurious interrupts, that get triggered on certain hardware, the
irqpin driver masks them on the parent interrupt controller. To specify
such broken devices a .control_parent parameter can be provided in the
platform data. In the DT case we need a property, to do the same.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Acked-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
(cherry picked from commit c4fa4946f177ae214523586cd794ac18d34b1430)
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
---
.../bindings/interrupt-controller/renesas,intc-irqpin.txt | 2 ++
drivers/irqchip/irq-renesas-intc-irqpin.c | 7 +++++--
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/interrupt-controller/renesas,intc-irqpin.txt b/Documentation/devicetree/bindings/interrupt-controller/renesas,intc-irqpin.txt
index 66fcaf5b..1f8b0c50 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/renesas,intc-irqpin.txt
+++ b/Documentation/devicetree/bindings/interrupt-controller/renesas,intc-irqpin.txt
@@ -12,3 +12,5 @@ Optional properties:
properties
- sense-bitfield-width: width of a single sense bitfield in the SENSE register,
if different from the default 4 bits
+- control-parent: disable and enable interrupts on the parent interrupt
+ controller, needed for some broken implementations
diff --git a/drivers/irqchip/irq-renesas-intc-irqpin.c b/drivers/irqchip/irq-renesas-intc-irqpin.c
index 4aca1b2b..82cec63a 100644
--- a/drivers/irqchip/irq-renesas-intc-irqpin.c
+++ b/drivers/irqchip/irq-renesas-intc-irqpin.c
@@ -348,11 +348,14 @@ static int intc_irqpin_probe(struct platform_device *pdev)
}
/* deal with driver instance configuration */
- if (pdata)
+ if (pdata) {
memcpy(&p->config, pdata, sizeof(*pdata));
- else
+ } else {
of_property_read_u32(pdev->dev.of_node, "sense-bitfield-width",
&p->config.sense_bitfield_width);
+ p->config.control_parent = of_property_read_bool(pdev->dev.of_node,
+ "control-parent");
+ }
if (!p->config.sense_bitfield_width)
p->config.sense_bitfield_width = 4; /* default to 4 bits */
--
1.8.4.3.gca3854a