[v8,2/2] dt-bindings: pinctrl: intel: Add for new SoC
diff mbox series

Message ID b59afc497e41404fea06aa48d633cba183ee944d.1573797249.git.rahul.tanwar@linux.intel.com
State New
Headers show
Series
  • pinctrl: Add new pinctrl/GPIO driver
Related show

Commit Message

Rahul Tanwar Nov. 15, 2019, 9:25 a.m. UTC
Add dt bindings document for pinmux & GPIO controller driver of
Intel Lightning Mountain SoC.

Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com>
---
 .../bindings/pinctrl/intel,lgm-pinctrl.yaml        | 116 +++++++++++++++++++++
 1 file changed, 116 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/pinctrl/intel,lgm-pinctrl.yaml

Comments

Linus Walleij Nov. 21, 2019, 1:53 p.m. UTC | #1
On Fri, Nov 15, 2019 at 10:25 AM Rahul Tanwar
<rahul.tanwar@linux.intel.com> wrote:

> Add dt bindings document for pinmux & GPIO controller driver of
> Intel Lightning Mountain SoC.
>
> Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com>

Patch applied, you worked hard to get these bindings done in the
right YAML format and all.

I have some generic bindings from Rob merged simultaneously
so it'd be great if you could investigate whether it is possible
to follow up with a patch to switch over from some of the local
grammar and toward including pinmux-node.yaml and
pincfg-node.yaml into these bindings.

The method for inclusion of external generic files can be seen
in e.g. the display panel bindings, like how
panel-common.yaml is included into other bindings under
display/panel/*.yaml.

Tell us if you have any problems with this!

Yours,
Linus Walleij
Rahul Tanwar Nov. 22, 2019, 2:24 a.m. UTC | #2
Hi Linus,

On 21/11/2019 9:53 PM, Linus Walleij wrote:
> On Fri, Nov 15, 2019 at 10:25 AM Rahul Tanwar
> <rahul.tanwar@linux.intel.com> wrote:
>
>> Add dt bindings document for pinmux & GPIO controller driver of
>> Intel Lightning Mountain SoC.
>>
>> Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com>
> Patch applied, you worked hard to get these bindings done in the
> right YAML format and all.
>
> I have some generic bindings from Rob merged simultaneously
> so it'd be great if you could investigate whether it is possible
> to follow up with a patch to switch over from some of the local
> grammar and toward including pinmux-node.yaml and
> pincfg-node.yaml into these bindings.
>
> The method for inclusion of external generic files can be seen
> in e.g. the display panel bindings, like how
> panel-common.yaml is included into other bindings under
> display/panel/*.yaml.
>
> Tell us if you have any problems with this!

Thanks. Yes, i have gone through Rob's generic pinctrl bindings patch
seriesand i was double minded if you should still proceed with this
patch or waitfor generic bindings patch to get merged.

I will take it up to revise this patch to include external generic
files from Robas soon as kernel 5.5 is released.

Regards,
Rahul
Rahul Tanwar Nov. 22, 2019, 2:53 a.m. UTC | #3
On 22/11/2019 10:24 AM, Tanwar, Rahul wrote:
> Hi Linus,
>
> On 21/11/2019 9:53 PM, Linus Walleij wrote:
>> On Fri, Nov 15, 2019 at 10:25 AM Rahul Tanwar
>> <rahul.tanwar@linux.intel.com> wrote:
>>
>>> Add dt bindings document for pinmux & GPIO controller driver of
>>> Intel Lightning Mountain SoC.
>>>
>>> Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com>
>> Patch applied, you worked hard to get these bindings done in the
>> right YAML format and all.
>>
>> I have some generic bindings from Rob merged simultaneously
>> so it'd be great if you could investigate whether it is possible
>> to follow up with a patch to switch over from some of the local
>> grammar and toward including pinmux-node.yaml and
>> pincfg-node.yaml into these bindings.
>>
>> The method for inclusion of external generic files can be seen
>> in e.g. the display panel bindings, like how
>> panel-common.yaml is included into other bindings under
>> display/panel/*.yaml.
>>
>> Tell us if you have any problems with this!
> Thanks. Yes, i have gone through Rob's generic pinctrl bindings patch
> series and i was double minded if *i should still proceed with this
> patch or wait for generic bindings patch to get merged.
>
> I will take it up to revise this patch to include external generic
> files from Rob as soon as kernel 5.5 is released.

*Fix typo above.

> Regards,
> Rahul
Linus Walleij Nov. 22, 2019, 7:35 a.m. UTC | #4
On Fri, Nov 22, 2019 at 3:24 AM Tanwar, Rahul
<rahul.tanwar@linux.intel.com> wrote:

> Thanks. Yes, i have gone through Rob's generic pinctrl bindings patch
> seriesand i was double minded if you should still proceed with this
> patch or waitfor generic bindings patch to get merged.

It's a compromise actually.

It's a bit of struggle and tough sometimes since I care both
about the kernel and the autonomy of the DT bindings
communities.

We are in a transition phase to YAML bindings, and what is important
for me as maintainer is to have developer buy-in, and
it is more motivating for developers to work on this in-tree
than having patches held back. I personally know how
important it is to feel that things move forward in
development.

Now it should be a separate task on top of what we have,
which is less stressful and gives the feeling of a bit of
accomplishment.

When the new generic YAML bindings are proven to work
on two drivers or so I will be more demanding that people
use them in their bindings from day 1. But we need to make
sure it works first and that is a separate task.

Yours,
Linus Walleij

Patch
diff mbox series

diff --git a/Documentation/devicetree/bindings/pinctrl/intel,lgm-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/intel,lgm-pinctrl.yaml
new file mode 100644
index 000000000000..240d429f773b
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/intel,lgm-pinctrl.yaml
@@ -0,0 +1,116 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/bindings/pinctrl/intel,lgm-pinctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Intel Lightning Mountain SoC pinmux & GPIO controller binding
+
+maintainers:
+  - Rahul Tanwar <rahul.tanwar@linux.intel.com>
+
+description: |
+  Pinmux & GPIO controller controls pin multiplexing & configuration including
+  GPIO function selection & GPIO attributes configuration.
+
+  Please refer to [1] for details of the common pinctrl bindings used by the
+  client devices.
+
+  [1] Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
+
+properties:
+  compatible:
+    const: intel,lgm-io
+
+  reg:
+    maxItems: 1
+
+# Client device subnode's properties
+patternProperties:
+  '-pins$':
+    type: object
+    description:
+      Pinctrl node's client devices use subnodes for desired pin configuration.
+      Client device subnodes use below standard properties.
+
+    properties:
+      function:
+        $ref: /schemas/types.yaml#/definitions/string
+        description:
+          A string containing the name of the function to mux to the group.
+
+      groups:
+        $ref: /schemas/types.yaml#/definitions/string-array
+        description:
+          An array of strings identifying the list of groups.
+
+      pins:
+        $ref: /schemas/types.yaml#/definitions/uint32-array
+        description:
+          List of pins to select with this function.
+
+      pinmux:
+        description: The applicable mux group.
+        allOf:
+          - $ref: "/schemas/types.yaml#/definitions/uint32-array"
+
+      bias-pull-up:
+        type: boolean
+
+      bias-pull-down:
+        type: boolean
+
+      drive-strength:
+        description: |
+          Selects the drive strength for the specified pins in mA.
+          0: 2 mA
+          1: 4 mA
+          2: 8 mA
+          3: 12 mA
+        allOf:
+          - $ref: /schemas/types.yaml#/definitions/uint32
+          - enum: [0, 1, 2, 3]
+
+      slew-rate:
+        type: boolean
+        description: |
+          Sets slew rate for specified pins.
+          0: slow slew
+          1: fast slew
+
+      drive-open-drain:
+        type: boolean
+
+      output-enable:
+        type: boolean
+
+    required:
+      - function
+      - groups
+
+    additionalProperties: false
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  # Pinmux controller node
+  - |
+    pinctrl: pinctrl@e2880000 {
+        compatible = "intel,lgm-pinctrl";
+        reg = <0xe2880000 0x100000>;
+
+        uart0-pins {
+             pins = <64>, /* UART_RX0 */
+                    <65>; /* UART_TX0 */
+             function = "CONSOLE_UART0";
+             pinmux = <1>,
+                      <1>;
+             groups = "CONSOLE_UART0";
+          };
+    };
+
+...