mirror of
https://github.com/torvalds/linux.git
synced 2024-12-28 13:51:44 +00:00
cf892f38e8
like pull-enable, pull should be optional has this region is available on
every controllers. Also, the g12a feature a new region "ds" for the
drive-strength
All this region thing is one big mess. I suspect that there is only one
big GPIO region with holes in it. All registers between the current
regions reads '0' so it is probably just spare space to handle more pins.
Since we need to continue to handle the existing controllers, switching to
one single region now would not simplify things. However, if more
organisation layouts and features keep on being added, we may have to look
at this again
Fixes: 3cd3c83f67
("pinctrl: Add compatibles for Amlogic Meson G12A pin controllers")
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
83 lines
2.6 KiB
Plaintext
83 lines
2.6 KiB
Plaintext
== 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"
|
|
- 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 generic properties "bias-disable",
|
|
"bias-pull-up" and "bias-pull-down", described in file
|
|
pinctrl-bindings.txt
|
|
|
|
=== 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";
|
|
};
|
|
};
|
|
};
|