| 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 |
| |