18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/pinctrl/pinctrl-mt8192.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Mediatek MT8192 Pin Controller
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Sean Wang <sean.wang@mediatek.com>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_cidescription: |
138c2ecf20Sopenharmony_ci  The Mediatek's Pin controller is used to control SoC pins.
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ciproperties:
168c2ecf20Sopenharmony_ci  compatible:
178c2ecf20Sopenharmony_ci    const: mediatek,mt8192-pinctrl
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci  gpio-controller: true
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci  '#gpio-cells':
228c2ecf20Sopenharmony_ci    description: |
238c2ecf20Sopenharmony_ci      Number of cells in GPIO specifier. Since the generic GPIO binding is used,
248c2ecf20Sopenharmony_ci      the amount of cells must be specified as 2. See the below
258c2ecf20Sopenharmony_ci      mentioned gpio binding representation for description of particular cells.
268c2ecf20Sopenharmony_ci    const: 2
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci  gpio-ranges:
298c2ecf20Sopenharmony_ci    description: gpio valid number range.
308c2ecf20Sopenharmony_ci    maxItems: 1
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci  reg:
338c2ecf20Sopenharmony_ci    description: |
348c2ecf20Sopenharmony_ci      Physical address base for gpio base registers. There are 11 GPIO
358c2ecf20Sopenharmony_ci      physical address base in mt8192.
368c2ecf20Sopenharmony_ci    maxItems: 11
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci  reg-names:
398c2ecf20Sopenharmony_ci    description: |
408c2ecf20Sopenharmony_ci      Gpio base register names.
418c2ecf20Sopenharmony_ci    maxItems: 11
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci  interrupt-controller: true
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci  '#interrupt-cells':
468c2ecf20Sopenharmony_ci    const: 2
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci  interrupts:
498c2ecf20Sopenharmony_ci    description: The interrupt outputs to sysirq.
508c2ecf20Sopenharmony_ci    maxItems: 1
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci#PIN CONFIGURATION NODES
538c2ecf20Sopenharmony_cipatternProperties:
548c2ecf20Sopenharmony_ci  '^pins':
558c2ecf20Sopenharmony_ci    type: object
568c2ecf20Sopenharmony_ci    description: |
578c2ecf20Sopenharmony_ci      A pinctrl node should contain at least one subnodes representing the
588c2ecf20Sopenharmony_ci      pinctrl groups available on the machine. Each subnode will list the
598c2ecf20Sopenharmony_ci      pins it needs, and how they should be configured, with regard to muxer
608c2ecf20Sopenharmony_ci      configuration, pullups, drive strength, input enable/disable and
618c2ecf20Sopenharmony_ci      input schmitt.
628c2ecf20Sopenharmony_ci      An example of using macro:
638c2ecf20Sopenharmony_ci      pincontroller {
648c2ecf20Sopenharmony_ci        /* GPIO0 set as multifunction GPIO0 */
658c2ecf20Sopenharmony_ci        state_0_node_a {
668c2ecf20Sopenharmony_ci          pinmux = <PINMUX_GPIO0__FUNC_GPIO0>;
678c2ecf20Sopenharmony_ci        };
688c2ecf20Sopenharmony_ci        /* GPIO1 set as multifunction PWM */
698c2ecf20Sopenharmony_ci        state_0_node_b {
708c2ecf20Sopenharmony_ci          pinmux = <PINMUX_GPIO1__FUNC_PWM_1>;
718c2ecf20Sopenharmony_ci        };
728c2ecf20Sopenharmony_ci      };
738c2ecf20Sopenharmony_ci    $ref: "pinmux-node.yaml"
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_ci    properties:
768c2ecf20Sopenharmony_ci      pinmux:
778c2ecf20Sopenharmony_ci        description: |
788c2ecf20Sopenharmony_ci          Integer array, represents gpio pin number and mux setting.
798c2ecf20Sopenharmony_ci          Supported pin number and mux varies for different SoCs, and are defined
808c2ecf20Sopenharmony_ci          as macros in dt-bindings/pinctrl/<soc>-pinfunc.h directly.
818c2ecf20Sopenharmony_ci
828c2ecf20Sopenharmony_ci      drive-strength:
838c2ecf20Sopenharmony_ci        description: |
848c2ecf20Sopenharmony_ci          It can support some arguments, such as MTK_DRIVE_4mA, MTK_DRIVE_6mA, etc. See
858c2ecf20Sopenharmony_ci          dt-bindings/pinctrl/mt65xx.h. It can only support 2/4/6/8/10/12/14/16mA in mt8192.
868c2ecf20Sopenharmony_ci        enum: [2, 4, 6, 8, 10, 12, 14, 16]
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_ci      bias-pull-down: true
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ci      bias-pull-up: true
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ci      bias-disable: true
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci      output-high: true
958c2ecf20Sopenharmony_ci
968c2ecf20Sopenharmony_ci      output-low: true
978c2ecf20Sopenharmony_ci
988c2ecf20Sopenharmony_ci      input-enable: true
998c2ecf20Sopenharmony_ci
1008c2ecf20Sopenharmony_ci      input-disable: true
1018c2ecf20Sopenharmony_ci
1028c2ecf20Sopenharmony_ci      input-schmitt-enable: true
1038c2ecf20Sopenharmony_ci
1048c2ecf20Sopenharmony_ci      input-schmitt-disable: true
1058c2ecf20Sopenharmony_ci
1068c2ecf20Sopenharmony_ci    required:
1078c2ecf20Sopenharmony_ci      - pinmux
1088c2ecf20Sopenharmony_ci
1098c2ecf20Sopenharmony_ci    additionalProperties: false
1108c2ecf20Sopenharmony_ci
1118c2ecf20Sopenharmony_cirequired:
1128c2ecf20Sopenharmony_ci  - compatible
1138c2ecf20Sopenharmony_ci  - reg
1148c2ecf20Sopenharmony_ci  - interrupts
1158c2ecf20Sopenharmony_ci  - interrupt-controller
1168c2ecf20Sopenharmony_ci  - '#interrupt-cells'
1178c2ecf20Sopenharmony_ci  - gpio-controller
1188c2ecf20Sopenharmony_ci  - '#gpio-cells'
1198c2ecf20Sopenharmony_ci  - gpio-ranges
1208c2ecf20Sopenharmony_ci
1218c2ecf20Sopenharmony_ciadditionalProperties: false
1228c2ecf20Sopenharmony_ci
1238c2ecf20Sopenharmony_ciexamples:
1248c2ecf20Sopenharmony_ci  - |
1258c2ecf20Sopenharmony_ci            #include <dt-bindings/pinctrl/mt8192-pinfunc.h>
1268c2ecf20Sopenharmony_ci            #include <dt-bindings/interrupt-controller/arm-gic.h>
1278c2ecf20Sopenharmony_ci            pio: pinctrl@10005000 {
1288c2ecf20Sopenharmony_ci                    compatible = "mediatek,mt8192-pinctrl";
1298c2ecf20Sopenharmony_ci                    reg = <0x10005000 0x1000>,
1308c2ecf20Sopenharmony_ci                          <0x11c20000 0x1000>,
1318c2ecf20Sopenharmony_ci                          <0x11d10000 0x1000>,
1328c2ecf20Sopenharmony_ci                          <0x11d30000 0x1000>,
1338c2ecf20Sopenharmony_ci                          <0x11d40000 0x1000>,
1348c2ecf20Sopenharmony_ci                          <0x11e20000 0x1000>,
1358c2ecf20Sopenharmony_ci                          <0x11e70000 0x1000>,
1368c2ecf20Sopenharmony_ci                          <0x11ea0000 0x1000>,
1378c2ecf20Sopenharmony_ci                          <0x11f20000 0x1000>,
1388c2ecf20Sopenharmony_ci                          <0x11f30000 0x1000>,
1398c2ecf20Sopenharmony_ci                          <0x1000b000 0x1000>;
1408c2ecf20Sopenharmony_ci                    reg-names = "iocfg0", "iocfg_rm", "iocfg_bm",
1418c2ecf20Sopenharmony_ci                          "iocfg_bl", "iocfg_br", "iocfg_lm",
1428c2ecf20Sopenharmony_ci                          "iocfg_lb", "iocfg_rt", "iocfg_lt",
1438c2ecf20Sopenharmony_ci                          "iocfg_tl", "eint";
1448c2ecf20Sopenharmony_ci                    gpio-controller;
1458c2ecf20Sopenharmony_ci                    #gpio-cells = <2>;
1468c2ecf20Sopenharmony_ci                    gpio-ranges = <&pio 0 0 220>;
1478c2ecf20Sopenharmony_ci                    interrupt-controller;
1488c2ecf20Sopenharmony_ci                    interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH 0>;
1498c2ecf20Sopenharmony_ci                    #interrupt-cells = <2>;
1508c2ecf20Sopenharmony_ci
1518c2ecf20Sopenharmony_ci                    pins {
1528c2ecf20Sopenharmony_ci                      pinmux = <PINMUX_GPIO0__FUNC_GPIO0>;
1538c2ecf20Sopenharmony_ci                      output-low;
1548c2ecf20Sopenharmony_ci                    };
1558c2ecf20Sopenharmony_ci            };
156