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