[PATCH 03/10] dt-bindings: interrupt-controllers: add description of SIC1 and SIC2
Rob Herring
robh at kernel.org
Fri Nov 20 08:58:35 PST 2015
On Fri, Nov 20, 2015 at 03:28:38AM +0200, Vladimir Zapolskiy wrote:
> NXP LPC32xx has three interrupt controllers, namely root Main
> Interrupt Controller (MIC) and two supplementary Sub Interrupt
> Controllers (SIC1 and SIC2), four interrupt outputs from SIC1 and SIC2
> are connected to MIC.
>
> Also the change describes two additional optional properties:
> * interrupt-controller-name - human readable name of an interrupt
> controller,
Why? compatible is human readable. If you don't like that, then put the
string in the driver.
> * wakeup-sources - list of mappings between a hardware interrupt and
> its correspondent wakeup source to exit CPU STOP mode.
This needs further discussion as I mentioned.
The rest looks fine.
Rob
> Signed-off-by: Vladimir Zapolskiy <vz at mleia.com>
> ---
> .../interrupt-controller/nxp,lpc3220-mic.txt | 99 ++++++++++++++++------
> 1 file changed, 75 insertions(+), 24 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/interrupt-controller/nxp,lpc3220-mic.txt b/Documentation/devicetree/bindings/interrupt-controller/nxp,lpc3220-mic.txt
> index 539adca..99e41ca 100644
> --- a/Documentation/devicetree/bindings/interrupt-controller/nxp,lpc3220-mic.txt
> +++ b/Documentation/devicetree/bindings/interrupt-controller/nxp,lpc3220-mic.txt
> @@ -1,38 +1,89 @@
> -* NXP LPC32xx Main Interrupt Controller
> - (MIC, including SIC1 and SIC2 secondary controllers)
> +* NXP LPC32xx MIC, SIC1 and SIC2 Interrupt Controllers
>
> Required properties:
> -- compatible: Should be "nxp,lpc3220-mic"
> -- interrupt-controller: Identifies the node as an interrupt controller.
> -- interrupt-parent: Empty for the interrupt controller itself
> -- #interrupt-cells: The number of cells to define the interrupts. Should be 2.
> - The first cell is the IRQ number
> - The second cell is used to specify mode:
> - 1 = low-to-high edge triggered
> - 2 = high-to-low edge triggered
> - 4 = active high level-sensitive
> - 8 = active low level-sensitive
> - Default for internal sources should be set to 4 (active high).
> -- reg: Should contain MIC registers location and length
> +- compatible: "nxp,lpc3220-mic" or "nxp,lpc3220-sic".
> +- reg: should contain IC registers location and length
> +- interrupt-controller: identifies the node as an interrupt controller.
> +- #interrupt-cells: the number of cells to define an interrupt, should be 2.
> + The first cell is the IRQ number, the second cell is used to specify
> + one of the supported modes:
> + IRQ_TYPE_EDGE_RISING = low-to-high edge triggered
> + IRQ_TYPE_EDGE_FALLING = high-to-low edge triggered
> + IRQ_TYPE_LEVEL_HIGH = active high level-sensitive
> + IRQ_TYPE_LEVEL_LOW = active low level-sensitive
> + Default for internal sources should be set to IRQ_TYPE_LEVEL_HIGH.
> +
> +Optional properties:
> +- interrupt-parent: empty for MIC interrupt controller, link to parent
> + MIC interrupt controller for SIC1 and SIC2
> +- interrupts: empty for MIC interrupt controller, cascaded MIC
> + hardware interrupts for SIC1 and SIC2
> +- interrupt-controller-name: readable interrupt controller name
> +- wakeup-sources: mapping of interrupts handled by the controller and
> + which may serve as a wakeup source.
>
> Examples:
> - /*
> - * MIC
> - */
> +
> + /* LPC32xx MIC, SIC1 and SIC2 interrupt controllers */
> mic: interrupt-controller at 40008000 {
> compatible = "nxp,lpc3220-mic";
> + reg = <0x40008000 0x4000>;
> + interrupt-controller;
> + interrupt-controller-name = "mic";
> + #interrupt-cells = <2>;
> +
> + wakeup-sources = <&wakeup_int 7 29>,
> + <&wakeup_int 25 27>;
> + };
> +
> + sic1: interrupt-controller at 4000C000 {
> + compatible = "nxp,lpc3220-sic";
> + reg = <0x4000C000 0x4000>;
> + interrupt-controller;
> + interrupt-controller-name = "sic1";
> + #interrupt-cells = <2>;
> +
> + interrupt-parent = <&mic>;
> + interrupts = <0 IRQ_TYPE_LEVEL_LOW>,
> + <30 IRQ_TYPE_LEVEL_LOW>;
> +
> + wakeup-sources = <&wakeup_int 16 22>, <&wakeup_int 19 26>,
> + <&wakeup_int 20 25>, <&wakeup_int 21 31>,
> + <&wakeup_int 24 20>, <&wakeup_int 29 8>,
> + <&wakeup_int 30 6>, <&wakeup_int 31 7>,
> + <&wakeup_pin 25 4>;
> + };
> +
> + sic2: interrupt-controller at 40010000 {
> + compatible = "nxp,lpc3220-sic";
> + reg = <0x40010000 0x4000>;
> interrupt-controller;
> - interrupt-parent;
> + interrupt-controller-name = "sic2";
> #interrupt-cells = <2>;
> - reg = <0x40008000 0xC000>;
> +
> + interrupt-parent = <&mic>;
> + interrupts = <1 IRQ_TYPE_LEVEL_LOW>,
> + <31 IRQ_TYPE_LEVEL_LOW>;
> +
> + wakeup-sources = <&wakeup_int 0 0>, <&wakeup_int 1 1>,
> + <&wakeup_int 2 2>, <&wakeup_int 3 3>,
> + <&wakeup_int 4 4>, <&wakeup_int 5 5>,
> + <&wakeup_int 6 8>, <&wakeup_pin 3 9>,
> + <&wakeup_pin 4 10>, <&wakeup_pin 5 11>,
> + <&wakeup_pin 6 6>, <&wakeup_pin 7 15>,
> + <&wakeup_pin 8 20>, <&wakeup_pin 9 31>,
> + <&wakeup_pin 10 22>, <&wakeup_pin 11 23>,
> + <&wakeup_pin 12 24>, <&wakeup_pin 13 25>,
> + <&wakeup_pin 14 26>, <&wakeup_pin 15 27>,
> + <&wakeup_pin 16 27>, <&wakeup_pin 18 18>,
> + <&wakeup_pin 23 7>, <&wakeup_pin 26 19>,
> + <&wakeup_pin 30 12>;
> };
>
> - /*
> - * ADC
> - */
> + /* ADC */
> adc at 40048000 {
> compatible = "nxp,lpc3220-adc";
> reg = <0x40048000 0x1000>;
> - interrupt-parent = <&mic>;
> - interrupts = <39 4>;
> + interrupt-parent = <&sic1>;
> + interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
> };
> --
> 2.1.4
>
More information about the linux-arm-kernel
mailing list