|  | == Amlogic Meson pinmux controller == | 
|  |  | 
|  | Required properties for the root node: | 
|  | - compatible: "amlogic,meson8-pinctrl" or "amlogic,meson8b-pinctrl" | 
|  | - reg: address and size of registers controlling irq functionality | 
|  |  | 
|  | === GPIO sub-nodes === | 
|  |  | 
|  | The 2 power domains of the controller (regular and always-on) are | 
|  | represented as sub-nodes and each of them acts as a GPIO controller. | 
|  |  | 
|  | Required properties for sub-nodes are: | 
|  | - reg: should contain address and size for mux, pull-enable, pull and | 
|  | gpio register sets | 
|  | - reg-names: an array of strings describing the "reg" entries. Must | 
|  | contain "mux", "pull" and "gpio". "pull-enable" is optional and | 
|  | when it is missing the "pull" registers are used instead | 
|  | - gpio-controller: identifies the node as a gpio controller | 
|  | - #gpio-cells: must be 2 | 
|  |  | 
|  | Valid sub-node names are: | 
|  | - "banks" for the regular domain | 
|  | - "ao-bank" for the always-on domain | 
|  |  | 
|  | === 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-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>; | 
|  | }; | 
|  |  | 
|  | gpio_ao: ao-bank@c1108030 { | 
|  | reg = <0xc8100014 0x4>, | 
|  | <0xc810002c 0x4>, | 
|  | <0xc8100024 0x8>; | 
|  | reg-names = "mux", "pull", "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"; | 
|  | }; | 
|  | }; | 
|  |  | 
|  | uart_ao_a { | 
|  | mux { | 
|  | groups = "uart_tx_ao_a", "uart_rx_ao_a", | 
|  | "uart_cts_ao_a", "uart_rts_ao_a"; | 
|  | function = "uart_ao"; | 
|  | }; | 
|  |  | 
|  | conf { | 
|  | pins = "GPIOAO_0", "GPIOAO_1", | 
|  | "GPIOAO_2", "GPIOAO_3"; | 
|  | bias-disable; | 
|  | }; | 
|  | }; | 
|  | }; |