== 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";
			};
		};
	};
