Thread (142 messages) 142 messages, 11 authors, 2017-07-31

Re: [PATCH 05/13] MIPS: jz4740: DTS: Add node for the jz4740-pinctrl driver

From: Linus Walleij <hidden>
Date: 2017-01-18 23:59:15
Also in: linux-devicetree, linux-gpio, linux-mips, linux-mmc, linux-pwm, lkml

On Wed, Jan 18, 2017 at 12:14 AM, Paul Cercueil [off-list ref] wrote:
For a description of the devicetree node, please read
Documentation/devicetree/bindings/pinctrl/ingenic,pinctrl.txt

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
(...)
+       pinctrl: ingenic-pinctrl@10010000 {
+               compatible = "ingenic,jz4740-pinctrl";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               gpio-chips {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+
+                       gpa: gpa {
+                               reg = <0x10010000 0x100>;
+
+                               gpio-controller;
+                               #gpio-cells = <2>;
+
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+
+                               interrupt-parent = <&intc>;
+                               interrupts = <28>;
+
+                               ingenic,pull-ups = <0xffffffff>;
+                       };
+
+                       gpb: gpb {
+                               reg = <0x10010100 0x100>;
+
+                               gpio-controller;
+                               #gpio-cells = <2>;
+
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+
+                               interrupt-parent = <&intc>;
+                               interrupts = <27>;
+
+                               ingenic,pull-ups = <0xffffffff>;
+                       };
+
+                       gpc: gpc {
+                               reg = <0x10010200 0x100>;
+
+                               gpio-controller;
+                               #gpio-cells = <2>;
+
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+
+                               interrupt-parent = <&intc>;
+                               interrupts = <26>;
+
+                               ingenic,pull-ups = <0xffffffff>;
+                       };
+
+                       gpd: gpd {
+                               reg = <0x10010300 0x100>;
+
+                               gpio-controller;
+                               #gpio-cells = <2>;
+
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+
+                               interrupt-parent = <&intc>;
+                               interrupts = <25>;
+
+                               ingenic,pull-ups = <0xdfffffff>;
+                       };
+               };
Just pull all these down two levels and make them one device
each instead of having them inside the pin controller node
like this.

Then make a pin controller node separately, it can reference the
pin controller by phandles if necessary, and use the standard
gpio-ranges property to cross make GPIO and pin control.

It seems you driver is similar to for example the
drivers/pinctrl/nomadik/* pin controller.

Look in arch/arm/boot/dts/ste-dbx500.dtsi for examples,
NB: I'm not fully using standard bindings in it, because they
were not invented at the time.

Yours,
Linus Walleij
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help