dt-bindings: pinctrl: Convert Amlogic Meson pinctrl binding

Convert Amlogic Meson pin controller binding to yaml.

Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Link: https://lore.kernel.org/r/dd29c1b7-05db-dd98-df40-20a238d89a96@gmail.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
Heiner Kallweit 2023-03-25 12:54:40 +01:00 committed by Linus Walleij
parent 966b0e64b6
commit 94df03a452
7 changed files with 418 additions and 94 deletions

View file

@ -0,0 +1,67 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/pinctrl/amlogic,meson-pinctrl-a1.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Amlogic Meson A1 pinmux controller
maintainers:
- Neil Armstrong <neil.armstrong@linaro.org>
allOf:
- $ref: amlogic,meson-pinctrl-common.yaml#
properties:
compatible:
enum:
- amlogic,meson-a1-periphs-pinctrl
- amlogic,meson-s4-periphs-pinctrl
required:
- compatible
patternProperties:
"^bank@[0-9a-z]+$":
$ref: amlogic,meson-pinctrl-common.yaml#/$defs/meson-gpio
unevaluatedProperties: false
properties:
reg:
maxItems: 2
reg-names:
items:
- const: mux
- const: gpio
unevaluatedProperties:
type: object
$ref: amlogic,meson-pinctrl-common.yaml#/$defs/meson-pins
examples:
- |
periphs_pinctrl: pinctrl {
compatible = "amlogic,meson-a1-periphs-pinctrl";
#address-cells = <1>;
#size-cells = <1>;
ranges;
bank@400 {
reg = <0x0400 0x003c>,
<0x0480 0x0118>;
reg-names = "mux", "gpio";
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = <&periphs_pinctrl 0 0 62>;
};
cec_ao_a_h_pins: cec_ao_a_h {
mux {
groups = "cec_ao_a_h";
function = "cec_ao_a_h";
bias-disable;
};
};
};

View file

@ -0,0 +1,57 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/pinctrl/amlogic,meson-pinctrl-common.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Amlogic Meson pinmux controller
maintainers:
- Neil Armstrong <neil.armstrong@linaro.org>
allOf:
- $ref: pinctrl.yaml#
properties:
ranges: true
"#address-cells":
enum: [1, 2]
"#size-cells":
enum: [1, 2]
required:
- ranges
- "#address-cells"
- "#size-cells"
additionalProperties: true
$defs:
meson-gpio:
type: object
properties:
gpio-controller: true
"#gpio-cells":
const: 2
gpio-ranges:
maxItems: 1
required:
- reg
- reg-names
- gpio-controller
- "#gpio-cells"
- gpio-ranges
meson-pins:
type: object
additionalProperties:
type: object
allOf:
- $ref: pincfg-node.yaml#
- $ref: pinmux-node.yaml#

View file

@ -0,0 +1,68 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/pinctrl/amlogic,meson-pinctrl-g12a-aobus.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Amlogic Meson G12 AOBUS pinmux controller
maintainers:
- Neil Armstrong <neil.armstrong@linaro.org>
allOf:
- $ref: amlogic,meson-pinctrl-common.yaml#
properties:
compatible:
enum:
- amlogic,meson-g12a-aobus-pinctrl
required:
- compatible
patternProperties:
"^bank@[0-9a-z]+$":
$ref: amlogic,meson-pinctrl-common.yaml#/$defs/meson-gpio
unevaluatedProperties: false
properties:
reg:
maxItems: 3
reg-names:
items:
- const: mux
- const: ds
- const: gpio
unevaluatedProperties:
type: object
$ref: amlogic,meson-pinctrl-common.yaml#/$defs/meson-pins
examples:
- |
ao_pinctrl: pinctrl {
compatible = "amlogic,meson-g12a-aobus-pinctrl";
#address-cells = <1>;
#size-cells = <1>;
ranges;
bank@14 {
reg = <0x14 0x8>,
<0x1c 0x8>,
<0x24 0x14>;
reg-names = "mux", "ds", "gpio";
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = <&ao_pinctrl 0 0 15>;
};
cec_ao_a_h_pins: cec_ao_a_h {
mux {
groups = "cec_ao_a_h";
function = "cec_ao_a_h";
bias-disable;
};
};
};

View file

@ -0,0 +1,72 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/pinctrl/amlogic,meson-pinctrl-g12a-periphs.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Amlogic Meson G12 PERIPHS pinmux controller
maintainers:
- Neil Armstrong <neil.armstrong@linaro.org>
allOf:
- $ref: amlogic,meson-pinctrl-common.yaml#
properties:
compatible:
enum:
- amlogic,meson-g12a-periphs-pinctrl
required:
- compatible
patternProperties:
"^bank@[0-9a-z]+$":
$ref: amlogic,meson-pinctrl-common.yaml#/$defs/meson-gpio
unevaluatedProperties: false
properties:
reg:
maxItems: 5
reg-names:
items:
- const: gpio
- const: pull
- const: pull-enable
- const: mux
- const: ds
unevaluatedProperties:
type: object
$ref: amlogic,meson-pinctrl-common.yaml#/$defs/meson-pins
examples:
- |
periphs_pinctrl: pinctrl {
compatible = "amlogic,meson-g12a-periphs-pinctrl";
#address-cells = <1>;
#size-cells = <1>;
ranges;
bank@40 {
reg = <0x40 0x4c>,
<0xe8 0x18>,
<0x120 0x18>,
<0x2c0 0x40>,
<0x340 0x1c>;
reg-names = "gpio", "pull", "pull-enable", "mux", "ds";
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = <&periphs_pinctrl 0 0 86>;
};
cec_ao_a_h_pins: cec_ao_a_h {
mux {
groups = "cec_ao_a_h";
function = "cec_ao_a_h";
bias-disable;
};
};
};

View file

@ -0,0 +1,76 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/pinctrl/amlogic,meson8-pinctrl-aobus.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Amlogic Meson8 AOBUS pinmux controller
maintainers:
- Neil Armstrong <neil.armstrong@linaro.org>
allOf:
- $ref: amlogic,meson-pinctrl-common.yaml#
properties:
compatible:
oneOf:
- enum:
- amlogic,meson8-aobus-pinctrl
- amlogic,meson8b-aobus-pinctrl
- amlogic,meson-gxbb-aobus-pinctrl
- amlogic,meson-gxl-aobus-pinctrl
- amlogic,meson-axg-aobus-pinctrl
- items:
- const: amlogic,meson8m2-aobus-pinctrl
- const: amlogic,meson8-aobus-pinctrl
required:
- compatible
patternProperties:
"^bank@[0-9a-z]+$":
$ref: amlogic,meson-pinctrl-common.yaml#/$defs/meson-gpio
unevaluatedProperties: false
properties:
reg:
maxItems: 3
reg-names:
items:
- const: mux
- const: pull
- const: gpio
unevaluatedProperties:
type: object
$ref: amlogic,meson-pinctrl-common.yaml#/$defs/meson-pins
examples:
- |
pinctrl_aobus: pinctrl {
compatible = "amlogic,meson8-aobus-pinctrl";
#address-cells = <1>;
#size-cells = <1>;
ranges;
bank@14 {
reg = <0x14 0x4>,
<0x2c 0x4>,
<0x24 0x8>;
reg-names = "mux", "pull", "gpio";
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = <&pinctrl_aobus 0 0 16>;
};
cec_ao_a_h_pins: cec_ao_a_h {
mux {
groups = "cec_ao_a_h";
function = "cec_ao_a_h";
bias-disable;
};
};
};

View file

@ -0,0 +1,78 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/pinctrl/amlogic,meson8-pinctrl-cbus.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Amlogic Meson8 CBUS pinmux controller
maintainers:
- Neil Armstrong <neil.armstrong@linaro.org>
allOf:
- $ref: amlogic,meson-pinctrl-common.yaml#
properties:
compatible:
oneOf:
- enum:
- amlogic,meson8-cbus-pinctrl
- amlogic,meson8b-cbus-pinctrl
- amlogic,meson-gxbb-periphs-pinctrl
- amlogic,meson-gxl-periphs-pinctrl
- amlogic,meson-axg-periphs-pinctrl
- items:
- const: amlogic,meson8m2-cbus-pinctrl
- const: amlogic,meson8-cbus-pinctrl
required:
- compatible
patternProperties:
"^bank@[0-9a-z]+$":
$ref: amlogic,meson-pinctrl-common.yaml#/$defs/meson-gpio
unevaluatedProperties: false
properties:
reg:
maxItems: 4
reg-names:
items:
- const: mux
- const: pull
- const: pull-enable
- const: gpio
unevaluatedProperties:
type: object
$ref: amlogic,meson-pinctrl-common.yaml#/$defs/meson-pins
examples:
- |
pinctrl_cbus: pinctrl {
compatible = "amlogic,meson8-cbus-pinctrl";
#address-cells = <1>;
#size-cells = <1>;
ranges;
bank@80b0 {
reg = <0x80b0 0x28>,
<0x80e8 0x18>,
<0x8120 0x18>,
<0x8030 0x30>;
reg-names = "mux", "pull", "pull-enable", "gpio";
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = <&pinctrl_cbus 0 0 120>;
};
cec_ao_a_h_pins: cec_ao_a_h {
mux {
groups = "cec_ao_a_h";
function = "cec_ao_a_h";
bias-disable;
};
};
};

View file

@ -1,94 +0,0 @@
== Amlogic Meson pinmux controller ==
Required properties for the root node:
- compatible: one of "amlogic,meson8-cbus-pinctrl"
"amlogic,meson8b-cbus-pinctrl"
"amlogic,meson8m2-cbus-pinctrl"
"amlogic,meson8-aobus-pinctrl"
"amlogic,meson8b-aobus-pinctrl"
"amlogic,meson8m2-aobus-pinctrl"
"amlogic,meson-gxbb-periphs-pinctrl"
"amlogic,meson-gxbb-aobus-pinctrl"
"amlogic,meson-gxl-periphs-pinctrl"
"amlogic,meson-gxl-aobus-pinctrl"
"amlogic,meson-axg-periphs-pinctrl"
"amlogic,meson-axg-aobus-pinctrl"
"amlogic,meson-g12a-periphs-pinctrl"
"amlogic,meson-g12a-aobus-pinctrl"
"amlogic,meson-a1-periphs-pinctrl"
"amlogic,meson-s4-periphs-pinctrl"
- reg: address and size of registers controlling irq functionality
=== GPIO sub-nodes ===
The GPIO bank for the controller is represented as a sub-node and it acts as a
GPIO controller.
Required properties for sub-nodes are:
- reg: should contain a list of address and size, one tuple for each entry
in reg-names.
- reg-names: an array of strings describing the "reg" entries.
Must contain "mux" and "gpio".
May contain "pull", "pull-enable" and "ds" when appropriate.
- gpio-controller: identifies the node as a gpio controller
- #gpio-cells: must be 2
=== Other sub-nodes ===
Child nodes without the "gpio-controller" represent some desired
configuration for a pin or a group. Those nodes can be pinmux nodes or
configuration nodes.
Required properties for pinmux nodes are:
- groups: a list of pinmux groups. The list of all available groups
depends on the SoC and can be found in driver sources.
- function: the name of a function to activate for the specified set
of groups. The list of all available functions depends on the SoC
and can be found in driver sources.
Required properties for configuration nodes:
- pins: a list of pin names
Configuration nodes support the following generic properties, as
described in file pinctrl-bindings.txt:
- "bias-disable"
- "bias-pull-up"
- "bias-pull-down"
- "output-enable"
- "output-disable"
- "output-low"
- "output-high"
Optional properties :
- drive-strength-microamp: Drive strength for the specified pins in uA.
This property is only valid for G12A and newer.
=== Example ===
pinctrl: pinctrl@c1109880 {
compatible = "amlogic,meson8-cbus-pinctrl";
reg = <0xc1109880 0x10>;
#address-cells = <1>;
#size-cells = <1>;
ranges;
gpio: banks@c11080b0 {
reg = <0xc11080b0 0x28>,
<0xc11080e8 0x18>,
<0xc1108120 0x18>,
<0xc1108030 0x30>;
reg-names = "mux", "pull", "pull-enable", "gpio";
gpio-controller;
#gpio-cells = <2>;
};
nand {
mux {
groups = "nand_io", "nand_io_ce0", "nand_io_ce1",
"nand_io_rb0", "nand_ale", "nand_cle",
"nand_wen_clk", "nand_ren_clk", "nand_dqs",
"nand_ce2", "nand_ce3";
function = "nand";
};
};
};