xref: /openbmc/linux/Documentation/devicetree/bindings/pinctrl/mediatek,mt6779-pinctrl.yaml (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
17ee193e2SAndy Teng# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
27ee193e2SAndy Teng%YAML 1.2
37ee193e2SAndy Teng---
47ee193e2SAndy Teng$id: http://devicetree.org/schemas/pinctrl/mediatek,mt6779-pinctrl.yaml#
57ee193e2SAndy Teng$schema: http://devicetree.org/meta-schemas/core.yaml#
67ee193e2SAndy Teng
7a9d44c4cSArınç ÜNALtitle: MediaTek MT6779 Pin Controller
87ee193e2SAndy Teng
97ee193e2SAndy Tengmaintainers:
107ee193e2SAndy Teng  - Andy Teng <andy.teng@mediatek.com>
116c873654SYassine Oudjana  - Sean Wang <sean.wang@kernel.org>
127ee193e2SAndy Teng
13c5a402a3SYassine Oudjanadescription:
14c911ad22SArınç ÜNAL  The MediaTek pin controller on MT6779 is used to control pin functions, pull
15c911ad22SArınç ÜNAL  up/down resistance and drive strength options.
167ee193e2SAndy Teng
177ee193e2SAndy Tengproperties:
187ee193e2SAndy Teng  compatible:
196c873654SYassine Oudjana    enum:
206c873654SYassine Oudjana      - mediatek,mt6779-pinctrl
216c873654SYassine Oudjana      - mediatek,mt6797-pinctrl
227ee193e2SAndy Teng
237ee193e2SAndy Teng  reg:
246c873654SYassine Oudjana    description: Physical addresses for GPIO base(s) and EINT registers.
257ee193e2SAndy Teng
266c873654SYassine Oudjana  reg-names: true
277ee193e2SAndy Teng
287ee193e2SAndy Teng  gpio-controller: true
297ee193e2SAndy Teng
307ee193e2SAndy Teng  "#gpio-cells":
317ee193e2SAndy Teng    const: 2
32c911ad22SArınç ÜNAL    description:
33c911ad22SArınç ÜNAL      Number of cells in GPIO specifier. Since the generic GPIO binding is used,
34c911ad22SArınç ÜNAL      the amount of cells must be specified as 2. See the below mentioned gpio
35c911ad22SArınç ÜNAL      binding representation for description of particular cells.
367ee193e2SAndy Teng
377ee193e2SAndy Teng  gpio-ranges:
387ee193e2SAndy Teng    minItems: 1
397ee193e2SAndy Teng    maxItems: 5
40c911ad22SArınç ÜNAL    description:
417ee193e2SAndy Teng      GPIO valid number range.
427ee193e2SAndy Teng
437ee193e2SAndy Teng  interrupt-controller: true
447ee193e2SAndy Teng
457ee193e2SAndy Teng  interrupts:
467ee193e2SAndy Teng    maxItems: 1
47c911ad22SArınç ÜNAL    description:
487ee193e2SAndy Teng      Specifies the summary IRQ.
497ee193e2SAndy Teng
507ee193e2SAndy Teng  "#interrupt-cells":
517ee193e2SAndy Teng    const: 2
527ee193e2SAndy Teng
537ee193e2SAndy Tengrequired:
547ee193e2SAndy Teng  - compatible
557ee193e2SAndy Teng  - reg
567ee193e2SAndy Teng  - reg-names
577ee193e2SAndy Teng  - gpio-controller
587ee193e2SAndy Teng  - "#gpio-cells"
596c873654SYassine Oudjana
606c873654SYassine OudjanaallOf:
616a735ad5SArınç ÜNAL  - $ref: pinctrl.yaml#
626c873654SYassine Oudjana  - if:
636c873654SYassine Oudjana      properties:
646c873654SYassine Oudjana        compatible:
656c873654SYassine Oudjana          contains:
666c873654SYassine Oudjana            const: mediatek,mt6779-pinctrl
676c873654SYassine Oudjana    then:
686c873654SYassine Oudjana      properties:
696c873654SYassine Oudjana        reg:
706c873654SYassine Oudjana          minItems: 9
716c873654SYassine Oudjana          maxItems: 9
726c873654SYassine Oudjana
736c873654SYassine Oudjana        reg-names:
746c873654SYassine Oudjana          items:
756c873654SYassine Oudjana            - const: gpio
766c873654SYassine Oudjana            - const: iocfg_rm
776c873654SYassine Oudjana            - const: iocfg_br
786c873654SYassine Oudjana            - const: iocfg_lm
796c873654SYassine Oudjana            - const: iocfg_lb
806c873654SYassine Oudjana            - const: iocfg_rt
816c873654SYassine Oudjana            - const: iocfg_lt
826c873654SYassine Oudjana            - const: iocfg_tl
836c873654SYassine Oudjana            - const: eint
846c873654SYassine Oudjana  - if:
856c873654SYassine Oudjana      properties:
866c873654SYassine Oudjana        compatible:
876c873654SYassine Oudjana          contains:
886c873654SYassine Oudjana            const: mediatek,mt6797-pinctrl
896c873654SYassine Oudjana    then:
906c873654SYassine Oudjana      properties:
916c873654SYassine Oudjana        reg:
926c873654SYassine Oudjana          minItems: 5
936c873654SYassine Oudjana          maxItems: 5
946c873654SYassine Oudjana
956c873654SYassine Oudjana        reg-names:
966c873654SYassine Oudjana          items:
976c873654SYassine Oudjana            - const: gpio
986c873654SYassine Oudjana            - const: iocfgl
996c873654SYassine Oudjana            - const: iocfgb
1006c873654SYassine Oudjana            - const: iocfgr
1016c873654SYassine Oudjana            - const: iocfgt
1026c873654SYassine Oudjana  - if:
1036c873654SYassine Oudjana      properties:
1046c873654SYassine Oudjana        reg-names:
1056c873654SYassine Oudjana          contains:
1066c873654SYassine Oudjana            const: eint
1076c873654SYassine Oudjana    then:
1086c873654SYassine Oudjana      required:
1097ee193e2SAndy Teng        - interrupts
1106c873654SYassine Oudjana        - interrupt-controller
1117ee193e2SAndy Teng        - "#interrupt-cells"
1127ee193e2SAndy Teng
1137ee193e2SAndy TengpatternProperties:
1147ee193e2SAndy Teng  '-[0-9]*$':
1157ee193e2SAndy Teng    type: object
1169194e0f8SRob Herring    additionalProperties: false
1179194e0f8SRob Herring
1187ee193e2SAndy Teng    patternProperties:
1197ee193e2SAndy Teng      '-pins*$':
1207ee193e2SAndy Teng        type: object
121c911ad22SArınç ÜNAL        description:
1227ee193e2SAndy Teng          A pinctrl node should contain at least one subnodes representing the
1237ee193e2SAndy Teng          pinctrl groups available on the machine. Each subnode will list the
1247ee193e2SAndy Teng          pins it needs, and how they should be configured, with regard to muxer
125c911ad22SArınç ÜNAL          configuration, pullups, drive strength, input enable/disable and input
126c911ad22SArınç ÜNAL          schmitt.
1276a735ad5SArınç ÜNAL        $ref: /schemas/pinctrl/pincfg-node.yaml
1287ee193e2SAndy Teng
1297ee193e2SAndy Teng        properties:
1307ee193e2SAndy Teng          pinmux:
1317ee193e2SAndy Teng            description:
132c911ad22SArınç ÜNAL              Integer array, represents gpio pin number and mux setting.
133c911ad22SArınç ÜNAL              Supported pin number and mux varies for different SoCs, and are
13403af785eSArınç ÜNAL              defined as macros in dt-bindings/pinctrl/<soc>-pinfunc.h directly.
1357ee193e2SAndy Teng
1367ee193e2SAndy Teng          bias-disable: true
1377ee193e2SAndy Teng
1387ee193e2SAndy Teng          bias-pull-up: true
1397ee193e2SAndy Teng
1407ee193e2SAndy Teng          bias-pull-down: true
1417ee193e2SAndy Teng
1427ee193e2SAndy Teng          input-enable: true
1437ee193e2SAndy Teng
1447ee193e2SAndy Teng          input-disable: true
1457ee193e2SAndy Teng
1467ee193e2SAndy Teng          output-low: true
1477ee193e2SAndy Teng
1487ee193e2SAndy Teng          output-high: true
1497ee193e2SAndy Teng
1507ee193e2SAndy Teng          input-schmitt-enable: true
1517ee193e2SAndy Teng
1527ee193e2SAndy Teng          input-schmitt-disable: true
1537ee193e2SAndy Teng
1546c873654SYassine Oudjana          drive-strength:
1556c873654SYassine Oudjana            enum: [2, 4, 8, 12, 16]
1566c873654SYassine Oudjana
1576c873654SYassine Oudjana          slew-rate:
1586c873654SYassine Oudjana            enum: [0, 1]
1596c873654SYassine Oudjana
1607ee193e2SAndy Teng          mediatek,pull-up-adv:
1617ee193e2SAndy Teng            description: |
162*47aab533SBjorn Helgaas              Pull up settings for 2 pull resistors, R0 and R1. User can
163c911ad22SArınç ÜNAL              configure those special pins. Valid arguments are described as
164c911ad22SArınç ÜNAL              below:
1657ee193e2SAndy Teng              0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
1667ee193e2SAndy Teng              1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
1677ee193e2SAndy Teng              2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
1687ee193e2SAndy Teng              3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
1697ee193e2SAndy Teng            $ref: /schemas/types.yaml#/definitions/uint32
1707ee193e2SAndy Teng            enum: [0, 1, 2, 3]
1717ee193e2SAndy Teng
1727ee193e2SAndy Teng          mediatek,pull-down-adv:
1737ee193e2SAndy Teng            description: |
1747ee193e2SAndy Teng              Pull down settings for 2 pull resistors, R0 and R1. User can
175c911ad22SArınç ÜNAL              configure those special pins. Valid arguments are described as
176c911ad22SArınç ÜNAL              below:
1777ee193e2SAndy Teng              0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
1787ee193e2SAndy Teng              1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
1797ee193e2SAndy Teng              2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
1807ee193e2SAndy Teng              3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
1817ee193e2SAndy Teng            $ref: /schemas/types.yaml#/definitions/uint32
1827ee193e2SAndy Teng            enum: [0, 1, 2, 3]
1837ee193e2SAndy Teng
1847ee193e2SAndy Teng        required:
1857ee193e2SAndy Teng          - pinmux
1867ee193e2SAndy Teng
1877ee193e2SAndy Teng        additionalProperties: false
1887ee193e2SAndy Teng
1897ee193e2SAndy TengadditionalProperties: false
1907ee193e2SAndy Teng
1917ee193e2SAndy Tengexamples:
1927ee193e2SAndy Teng  - |
1937ee193e2SAndy Teng    #include <dt-bindings/interrupt-controller/irq.h>
1947ee193e2SAndy Teng    #include <dt-bindings/interrupt-controller/arm-gic.h>
1957ee193e2SAndy Teng    #include <dt-bindings/pinctrl/mt6779-pinfunc.h>
1967ee193e2SAndy Teng
1977ee193e2SAndy Teng    soc {
1987ee193e2SAndy Teng        #address-cells = <2>;
1997ee193e2SAndy Teng        #size-cells = <2>;
2007ee193e2SAndy Teng
2017ee193e2SAndy Teng        pio: pinctrl@10005000 {
2027ee193e2SAndy Teng            compatible = "mediatek,mt6779-pinctrl";
2037ee193e2SAndy Teng            reg = <0 0x10005000 0 0x1000>,
2047ee193e2SAndy Teng                <0 0x11c20000 0 0x1000>,
2057ee193e2SAndy Teng                <0 0x11d10000 0 0x1000>,
2067ee193e2SAndy Teng                <0 0x11e20000 0 0x1000>,
2077ee193e2SAndy Teng                <0 0x11e70000 0 0x1000>,
2087ee193e2SAndy Teng                <0 0x11ea0000 0 0x1000>,
2097ee193e2SAndy Teng                <0 0x11f20000 0 0x1000>,
2107ee193e2SAndy Teng                <0 0x11f30000 0 0x1000>,
2117ee193e2SAndy Teng                <0 0x1000b000 0 0x1000>;
2127ee193e2SAndy Teng            reg-names = "gpio", "iocfg_rm",
2137ee193e2SAndy Teng              "iocfg_br", "iocfg_lm",
2147ee193e2SAndy Teng              "iocfg_lb", "iocfg_rt",
2157ee193e2SAndy Teng              "iocfg_lt", "iocfg_tl",
2167ee193e2SAndy Teng              "eint";
2177ee193e2SAndy Teng            gpio-controller;
2187ee193e2SAndy Teng            #gpio-cells = <2>;
2197ee193e2SAndy Teng            gpio-ranges = <&pio 0 0 210>;
2207ee193e2SAndy Teng            interrupt-controller;
2217ee193e2SAndy Teng            #interrupt-cells = <2>;
2227ee193e2SAndy Teng            interrupts = <GIC_SPI 204 IRQ_TYPE_LEVEL_HIGH>;
2237ee193e2SAndy Teng
2247ee193e2SAndy Teng            mmc0_pins_default: mmc0-0 {
2257ee193e2SAndy Teng                cmd-dat-pins {
2267ee193e2SAndy Teng                    pinmux = <PINMUX_GPIO168__FUNC_MSDC0_DAT0>,
2277ee193e2SAndy Teng                        <PINMUX_GPIO172__FUNC_MSDC0_DAT1>,
2287ee193e2SAndy Teng                        <PINMUX_GPIO169__FUNC_MSDC0_DAT2>,
2297ee193e2SAndy Teng                        <PINMUX_GPIO177__FUNC_MSDC0_DAT3>,
2307ee193e2SAndy Teng                        <PINMUX_GPIO170__FUNC_MSDC0_DAT4>,
2317ee193e2SAndy Teng                        <PINMUX_GPIO173__FUNC_MSDC0_DAT5>,
2327ee193e2SAndy Teng                        <PINMUX_GPIO171__FUNC_MSDC0_DAT6>,
2337ee193e2SAndy Teng                        <PINMUX_GPIO174__FUNC_MSDC0_DAT7>,
2347ee193e2SAndy Teng                        <PINMUX_GPIO167__FUNC_MSDC0_CMD>;
2357ee193e2SAndy Teng                    input-enable;
2367ee193e2SAndy Teng                    mediatek,pull-up-adv = <1>;
2377ee193e2SAndy Teng                };
2387ee193e2SAndy Teng                clk-pins {
2397ee193e2SAndy Teng                    pinmux = <PINMUX_GPIO176__FUNC_MSDC0_CLK>;
2407ee193e2SAndy Teng                    mediatek,pull-down-adv = <2>;
2417ee193e2SAndy Teng                };
2427ee193e2SAndy Teng                rst-pins {
2437ee193e2SAndy Teng                    pinmux = <PINMUX_GPIO178__FUNC_MSDC0_RSTB>;
2447ee193e2SAndy Teng                    mediatek,pull-up-adv = <0>;
2457ee193e2SAndy Teng                };
2467ee193e2SAndy Teng            };
2477ee193e2SAndy Teng        };
2487ee193e2SAndy Teng
2497ee193e2SAndy Teng        mmc0 {
2507ee193e2SAndy Teng           pinctrl-0 = <&mmc0_pins_default>;
2517ee193e2SAndy Teng           pinctrl-names = "default";
2527ee193e2SAndy Teng        };
2537ee193e2SAndy Teng    };
254