Message ID | 1506480022-8995-2-git-send-email-yamada.masahiro@socionext.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Sep 27, 2017 at 4:40 AM, Masahiro Yamada <yamada.masahiro@socionext.com> wrote: > This GPIO controller is used on UniPhier SoC family. > > The vendor specific property "socionext,interrupt-ranges" is for > specifying interrupt mapping to the parent interrupt controller > because the mapping is not contiguous. It works like "ranges", > but transforms "interrupts" instead of "reg". > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> > Acked-by: Rob Herring <robh@kernel.org> Patch applied. > +- socionext,interrupt-ranges: Specifies an interrupt number mapping between > + this GPIO controller and its interrupt parent, in the form of arbitrary > + number of <child-interrupt-base parent-interrupt-base length> triplets. (...) > + socionext,interrupt-ranges = <0 48 16>, <16 154 5>, <21 217 3>; Still uncertain about that thing. But as it is, you need running code, and we have rough consensus. So merging. If it turns out to be a bad binding we may need to patch in an alternative later. Yours, Linus Walleij
On Wed, Oct 11, 2017 at 10:35 AM, Linus Walleij <linus.walleij@linaro.org> wrote: > On Wed, Sep 27, 2017 at 4:40 AM, Masahiro Yamada > <yamada.masahiro@socionext.com> wrote: > >> This GPIO controller is used on UniPhier SoC family. >> >> The vendor specific property "socionext,interrupt-ranges" is for >> specifying interrupt mapping to the parent interrupt controller >> because the mapping is not contiguous. It works like "ranges", >> but transforms "interrupts" instead of "reg". >> >> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> >> Acked-by: Rob Herring <robh@kernel.org> > > Patch applied. > >> +- socionext,interrupt-ranges: Specifies an interrupt number mapping between >> + this GPIO controller and its interrupt parent, in the form of arbitrary >> + number of <child-interrupt-base parent-interrupt-base length> triplets. > (...) >> + socionext,interrupt-ranges = <0 48 16>, <16 154 5>, <21 217 3>; > > Still uncertain about that thing. > > But as it is, you need running code, and we have rough consensus. > > So merging. > > If it turns out to be a bad binding we may need to patch in an alternative > later. Sorry I had to take it back out, because the <dt-bindings/*> stuff in the other patch should also be in this patch rather than in the driver. Please move that over here, and if you insist on those macros, also use them in the example so we understand how this is supposed to be used, i.e. also add a consumer node to the bindings example if it is gonna use magic macros. Yours, Linus Walleij
diff --git a/Documentation/devicetree/bindings/gpio/gpio-uniphier.txt b/Documentation/devicetree/bindings/gpio/gpio-uniphier.txt new file mode 100644 index 0000000..6d9251a --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-uniphier.txt @@ -0,0 +1,40 @@ +UniPhier GPIO controller + +Required properties: +- compatible: Should be "socionext,uniphier-gpio". +- reg: Specifies offset and length of the register set for the device. +- gpio-controller: Marks the device node as a GPIO controller. +- #gpio-cells: Should be 2. The first cell is the pin number and the second + cell is used to specify optional parameters. +- interrupt-parent: Specifies the parent interrupt controller. +- interrupt-controller: Marks the device node as an interrupt controller. +- #interrupt-cells: Should be 2. The first cell defines the interrupt number. + The second cell bits[3:0] is used to specify trigger type as follows: + 1 = low-to-high edge triggered + 2 = high-to-low edge triggered + 4 = active high level-sensitive + 8 = active low level-sensitive + Valid combinations are 1, 2, 3, 4, 8. +- ngpios: Specifies the number of GPIO lines. +- gpio-ranges: Mapping to pin controller pins (as described in gpio.txt) +- socionext,interrupt-ranges: Specifies an interrupt number mapping between + this GPIO controller and its interrupt parent, in the form of arbitrary + number of <child-interrupt-base parent-interrupt-base length> triplets. + +Optional properties: +- gpio-ranges-group-names: Used for named gpio ranges (as described in gpio.txt) + +Example: + gpio: gpio@55000000 { + compatible = "socionext,uniphier-gpio"; + reg = <0x55000000 0x200>; + interrupt-parent = <&aidet>; + interrupt-controller; + #interrupt-cells = <2>; + gpio-controller; + #gpio-cells = <2>; + gpio-ranges = <&pinctrl 0 0 0>; + gpio-ranges-group-names = "gpio_range"; + ngpios = <248>; + socionext,interrupt-ranges = <0 48 16>, <16 154 5>, <21 217 3>; + };