11d45ecb0SArınç ÜNAL# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 21d45ecb0SArınç ÜNAL%YAML 1.2 31d45ecb0SArınç ÜNAL--- 41d45ecb0SArınç ÜNAL$id: http://devicetree.org/schemas/pinctrl/mediatek,mt8195-pinctrl.yaml# 51d45ecb0SArınç ÜNAL$schema: http://devicetree.org/meta-schemas/core.yaml# 61d45ecb0SArınç ÜNAL 7*a9d44c4cSArınç ÜNALtitle: MediaTek MT8195 Pin Controller 81d45ecb0SArınç ÜNAL 91d45ecb0SArınç ÜNALmaintainers: 101d45ecb0SArınç ÜNAL - Sean Wang <sean.wang@mediatek.com> 111d45ecb0SArınç ÜNAL 121d45ecb0SArınç ÜNALdescription: | 13*a9d44c4cSArınç ÜNAL The MediaTek's MT8195 Pin controller is used to control SoC pins. 141d45ecb0SArınç ÜNAL 151d45ecb0SArınç ÜNALproperties: 161d45ecb0SArınç ÜNAL compatible: 171d45ecb0SArınç ÜNAL const: mediatek,mt8195-pinctrl 181d45ecb0SArınç ÜNAL 191d45ecb0SArınç ÜNAL gpio-controller: true 201d45ecb0SArınç ÜNAL 211d45ecb0SArınç ÜNAL '#gpio-cells': 221d45ecb0SArınç ÜNAL description: | 231d45ecb0SArınç ÜNAL Number of cells in GPIO specifier. Since the generic GPIO binding is used, 241d45ecb0SArınç ÜNAL the amount of cells must be specified as 2. See the below 251d45ecb0SArınç ÜNAL mentioned gpio binding representation for description of particular cells. 261d45ecb0SArınç ÜNAL const: 2 271d45ecb0SArınç ÜNAL 281d45ecb0SArınç ÜNAL gpio-ranges: 291d45ecb0SArınç ÜNAL description: gpio valid number range. 301d45ecb0SArınç ÜNAL maxItems: 1 311d45ecb0SArınç ÜNAL 321d45ecb0SArınç ÜNAL gpio-line-names: true 331d45ecb0SArınç ÜNAL 341d45ecb0SArınç ÜNAL reg: 351d45ecb0SArınç ÜNAL description: | 361d45ecb0SArınç ÜNAL Physical address base for gpio base registers. There are 8 GPIO 371d45ecb0SArınç ÜNAL physical address base in mt8195. 381d45ecb0SArınç ÜNAL maxItems: 8 391d45ecb0SArınç ÜNAL 401d45ecb0SArınç ÜNAL reg-names: 411d45ecb0SArınç ÜNAL description: | 421d45ecb0SArınç ÜNAL Gpio base register names. 431d45ecb0SArınç ÜNAL maxItems: 8 441d45ecb0SArınç ÜNAL 451d45ecb0SArınç ÜNAL interrupt-controller: true 461d45ecb0SArınç ÜNAL 471d45ecb0SArınç ÜNAL '#interrupt-cells': 481d45ecb0SArınç ÜNAL const: 2 491d45ecb0SArınç ÜNAL 501d45ecb0SArınç ÜNAL interrupts: 511d45ecb0SArınç ÜNAL description: The interrupt outputs to sysirq. 521d45ecb0SArınç ÜNAL maxItems: 1 531d45ecb0SArınç ÜNAL 541d45ecb0SArınç ÜNAL mediatek,rsel-resistance-in-si-unit: 551d45ecb0SArınç ÜNAL type: boolean 561d45ecb0SArınç ÜNAL description: | 571d45ecb0SArınç ÜNAL Identifying i2c pins pull up/down type which is RSEL. It can support 581d45ecb0SArınç ÜNAL RSEL define or si unit value(ohm) to set different resistance. 591d45ecb0SArınç ÜNAL 601d45ecb0SArınç ÜNAL# PIN CONFIGURATION NODES 611d45ecb0SArınç ÜNALpatternProperties: 621d45ecb0SArınç ÜNAL '-pins$': 631d45ecb0SArınç ÜNAL type: object 641d45ecb0SArınç ÜNAL additionalProperties: false 651d45ecb0SArınç ÜNAL patternProperties: 661d45ecb0SArınç ÜNAL '^pins': 671d45ecb0SArınç ÜNAL type: object 681d45ecb0SArınç ÜNAL additionalProperties: false 691d45ecb0SArınç ÜNAL description: | 701d45ecb0SArınç ÜNAL A pinctrl node should contain at least one subnodes representing the 711d45ecb0SArınç ÜNAL pinctrl groups available on the machine. Each subnode will list the 721d45ecb0SArınç ÜNAL pins it needs, and how they should be configured, with regard to muxer 731d45ecb0SArınç ÜNAL configuration, pullups, drive strength, input enable/disable and 741d45ecb0SArınç ÜNAL input schmitt. 751d45ecb0SArınç ÜNAL An example of using macro: 761d45ecb0SArınç ÜNAL pincontroller { 771d45ecb0SArınç ÜNAL /* GPIO0 set as multifunction GPIO0 */ 781d45ecb0SArınç ÜNAL gpio-pins { 791d45ecb0SArınç ÜNAL pins { 801d45ecb0SArınç ÜNAL pinmux = <PINMUX_GPIO0__FUNC_GPIO0>; 811d45ecb0SArınç ÜNAL } 821d45ecb0SArınç ÜNAL }; 831d45ecb0SArınç ÜNAL /* GPIO8 set as multifunction SDA0 */ 841d45ecb0SArınç ÜNAL i2c0-pins { 851d45ecb0SArınç ÜNAL pins { 861d45ecb0SArınç ÜNAL pinmux = <PINMUX_GPIO8__FUNC_SDA0>; 871d45ecb0SArınç ÜNAL } 881d45ecb0SArınç ÜNAL }; 891d45ecb0SArınç ÜNAL }; 901d45ecb0SArınç ÜNAL $ref: "pinmux-node.yaml" 911d45ecb0SArınç ÜNAL 921d45ecb0SArınç ÜNAL properties: 931d45ecb0SArınç ÜNAL pinmux: 941d45ecb0SArınç ÜNAL description: | 951d45ecb0SArınç ÜNAL Integer array, represents gpio pin number and mux setting. 961d45ecb0SArınç ÜNAL Supported pin number and mux varies for different SoCs, and are 971d45ecb0SArınç ÜNAL defined as macros in dt-bindings/pinctrl/<soc>-pinfunc.h 981d45ecb0SArınç ÜNAL directly. 991d45ecb0SArınç ÜNAL 1001d45ecb0SArınç ÜNAL drive-strength: 1011d45ecb0SArınç ÜNAL enum: [2, 4, 6, 8, 10, 12, 14, 16] 1021d45ecb0SArınç ÜNAL 1031d45ecb0SArınç ÜNAL drive-strength-microamp: 1041d45ecb0SArınç ÜNAL enum: [125, 250, 500, 1000] 1051d45ecb0SArınç ÜNAL 1061d45ecb0SArınç ÜNAL bias-pull-down: 1071d45ecb0SArınç ÜNAL oneOf: 1081d45ecb0SArınç ÜNAL - type: boolean 1091d45ecb0SArınç ÜNAL - enum: [100, 101, 102, 103] 1101d45ecb0SArınç ÜNAL description: mt8195 pull down PUPD/R0/R1 type define value. 1111d45ecb0SArınç ÜNAL - enum: [200, 201, 202, 203, 204, 205, 206, 207] 1121d45ecb0SArınç ÜNAL description: mt8195 pull down RSEL type define value. 1131d45ecb0SArınç ÜNAL - enum: [75000, 5000] 1141d45ecb0SArınç ÜNAL description: mt8195 pull down RSEL type si unit value(ohm). 1151d45ecb0SArınç ÜNAL description: | 1161d45ecb0SArınç ÜNAL For pull down type is normal, it don't need add RSEL & R1R0 define 1171d45ecb0SArınç ÜNAL and resistance value. 1181d45ecb0SArınç ÜNAL For pull down type is PUPD/R0/R1 type, it can add R1R0 define to 1191d45ecb0SArınç ÜNAL set different resistance. It can support "MTK_PUPD_SET_R1R0_00" & 1201d45ecb0SArınç ÜNAL "MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" & 1211d45ecb0SArınç ÜNAL "MTK_PUPD_SET_R1R0_11" define in mt8195. 1221d45ecb0SArınç ÜNAL For pull down type is RSEL, it can add RSEL define & resistance 1231d45ecb0SArınç ÜNAL value(ohm) to set different resistance by identifying property 1241d45ecb0SArınç ÜNAL "mediatek,rsel-resistance-in-si-unit". 1251d45ecb0SArınç ÜNAL It can support "MTK_PULL_SET_RSEL_000" & "MTK_PULL_SET_RSEL_001" 1261d45ecb0SArınç ÜNAL & "MTK_PULL_SET_RSEL_010" & "MTK_PULL_SET_RSEL_011" 1271d45ecb0SArınç ÜNAL & "MTK_PULL_SET_RSEL_100" & "MTK_PULL_SET_RSEL_101" 1281d45ecb0SArınç ÜNAL & "MTK_PULL_SET_RSEL_110" & "MTK_PULL_SET_RSEL_111" 1291d45ecb0SArınç ÜNAL define in mt8195. It can also support resistance value(ohm) 1301d45ecb0SArınç ÜNAL "75000" & "5000" in mt8195. 1311d45ecb0SArınç ÜNAL 1321d45ecb0SArınç ÜNAL An example of using RSEL define: 1331d45ecb0SArınç ÜNAL pincontroller { 1341d45ecb0SArınç ÜNAL i2c0_pin { 1351d45ecb0SArınç ÜNAL pins { 1361d45ecb0SArınç ÜNAL pinmux = <PINMUX_GPIO8__FUNC_SDA0>; 1371d45ecb0SArınç ÜNAL bias-pull-down = <MTK_PULL_SET_RSEL_001>; 1381d45ecb0SArınç ÜNAL } 1391d45ecb0SArınç ÜNAL }; 1401d45ecb0SArınç ÜNAL }; 1411d45ecb0SArınç ÜNAL An example of using si unit resistance value(ohm): 1421d45ecb0SArınç ÜNAL &pio { 1431d45ecb0SArınç ÜNAL mediatek,rsel-resistance-in-si-unit; 1441d45ecb0SArınç ÜNAL } 1451d45ecb0SArınç ÜNAL pincontroller { 1461d45ecb0SArınç ÜNAL i2c0_pin { 1471d45ecb0SArınç ÜNAL pins { 1481d45ecb0SArınç ÜNAL pinmux = <PINMUX_GPIO8__FUNC_SDA0>; 1491d45ecb0SArınç ÜNAL bias-pull-down = <75000>; 1501d45ecb0SArınç ÜNAL } 1511d45ecb0SArınç ÜNAL }; 1521d45ecb0SArınç ÜNAL }; 1531d45ecb0SArınç ÜNAL 1541d45ecb0SArınç ÜNAL bias-pull-up: 1551d45ecb0SArınç ÜNAL oneOf: 1561d45ecb0SArınç ÜNAL - type: boolean 1571d45ecb0SArınç ÜNAL - enum: [100, 101, 102, 103] 1581d45ecb0SArınç ÜNAL description: mt8195 pull up PUPD/R0/R1 type define value. 1591d45ecb0SArınç ÜNAL - enum: [200, 201, 202, 203, 204, 205, 206, 207] 1601d45ecb0SArınç ÜNAL description: mt8195 pull up RSEL type define value. 1611d45ecb0SArınç ÜNAL - enum: [1000, 1500, 2000, 3000, 4000, 5000, 10000, 75000] 1621d45ecb0SArınç ÜNAL description: mt8195 pull up RSEL type si unit value(ohm). 1631d45ecb0SArınç ÜNAL description: | 1641d45ecb0SArınç ÜNAL For pull up type is normal, it don't need add RSEL & R1R0 define 1651d45ecb0SArınç ÜNAL and resistance value. 1661d45ecb0SArınç ÜNAL For pull up type is PUPD/R0/R1 type, it can add R1R0 define to 1671d45ecb0SArınç ÜNAL set different resistance. It can support "MTK_PUPD_SET_R1R0_00" & 1681d45ecb0SArınç ÜNAL "MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" & 1691d45ecb0SArınç ÜNAL "MTK_PUPD_SET_R1R0_11" define in mt8195. 1701d45ecb0SArınç ÜNAL For pull up type is RSEL, it can add RSEL define & resistance 1711d45ecb0SArınç ÜNAL value(ohm) to set different resistance by identifying property 1721d45ecb0SArınç ÜNAL "mediatek,rsel-resistance-in-si-unit". 1731d45ecb0SArınç ÜNAL It can support "MTK_PULL_SET_RSEL_000" & "MTK_PULL_SET_RSEL_001" 1741d45ecb0SArınç ÜNAL & "MTK_PULL_SET_RSEL_010" & "MTK_PULL_SET_RSEL_011" 1751d45ecb0SArınç ÜNAL & "MTK_PULL_SET_RSEL_100" & "MTK_PULL_SET_RSEL_101" 1761d45ecb0SArınç ÜNAL & "MTK_PULL_SET_RSEL_110" & "MTK_PULL_SET_RSEL_111" 1771d45ecb0SArınç ÜNAL define in mt8195. It can also support resistance value(ohm) 1781d45ecb0SArınç ÜNAL "1000" & "1500" & "2000" & "3000" & "4000" & "5000" & "10000" & 1791d45ecb0SArınç ÜNAL "75000" in mt8195. 1801d45ecb0SArınç ÜNAL An example of using RSEL define: 1811d45ecb0SArınç ÜNAL pincontroller { 1821d45ecb0SArınç ÜNAL i2c0-pins { 1831d45ecb0SArınç ÜNAL pins { 1841d45ecb0SArınç ÜNAL pinmux = <PINMUX_GPIO8__FUNC_SDA0>; 1851d45ecb0SArınç ÜNAL bias-pull-up = <MTK_PULL_SET_RSEL_001>; 1861d45ecb0SArınç ÜNAL } 1871d45ecb0SArınç ÜNAL }; 1881d45ecb0SArınç ÜNAL }; 1891d45ecb0SArınç ÜNAL An example of using si unit resistance value(ohm): 1901d45ecb0SArınç ÜNAL &pio { 1911d45ecb0SArınç ÜNAL mediatek,rsel-resistance-in-si-unit; 1921d45ecb0SArınç ÜNAL } 1931d45ecb0SArınç ÜNAL pincontroller { 1941d45ecb0SArınç ÜNAL i2c0-pins { 1951d45ecb0SArınç ÜNAL pins { 1961d45ecb0SArınç ÜNAL pinmux = <PINMUX_GPIO8__FUNC_SDA0>; 1971d45ecb0SArınç ÜNAL bias-pull-up = <1000>; 1981d45ecb0SArınç ÜNAL } 1991d45ecb0SArınç ÜNAL }; 2001d45ecb0SArınç ÜNAL }; 2011d45ecb0SArınç ÜNAL 2021d45ecb0SArınç ÜNAL bias-disable: true 2031d45ecb0SArınç ÜNAL 2041d45ecb0SArınç ÜNAL output-high: true 2051d45ecb0SArınç ÜNAL 2061d45ecb0SArınç ÜNAL output-low: true 2071d45ecb0SArınç ÜNAL 2081d45ecb0SArınç ÜNAL input-enable: true 2091d45ecb0SArınç ÜNAL 2101d45ecb0SArınç ÜNAL input-disable: true 2111d45ecb0SArınç ÜNAL 2121d45ecb0SArınç ÜNAL input-schmitt-enable: true 2131d45ecb0SArınç ÜNAL 2141d45ecb0SArınç ÜNAL input-schmitt-disable: true 2151d45ecb0SArınç ÜNAL 2161d45ecb0SArınç ÜNAL required: 2171d45ecb0SArınç ÜNAL - pinmux 2181d45ecb0SArınç ÜNAL 2191d45ecb0SArınç ÜNALallOf: 2201d45ecb0SArınç ÜNAL - $ref: "pinctrl.yaml#" 2211d45ecb0SArınç ÜNAL 2221d45ecb0SArınç ÜNALrequired: 2231d45ecb0SArınç ÜNAL - compatible 2241d45ecb0SArınç ÜNAL - reg 2251d45ecb0SArınç ÜNAL - interrupts 2261d45ecb0SArınç ÜNAL - interrupt-controller 2271d45ecb0SArınç ÜNAL - '#interrupt-cells' 2281d45ecb0SArınç ÜNAL - gpio-controller 2291d45ecb0SArınç ÜNAL - '#gpio-cells' 2301d45ecb0SArınç ÜNAL - gpio-ranges 2311d45ecb0SArınç ÜNAL 2321d45ecb0SArınç ÜNALadditionalProperties: false 2331d45ecb0SArınç ÜNAL 2341d45ecb0SArınç ÜNALexamples: 2351d45ecb0SArınç ÜNAL - | 2361d45ecb0SArınç ÜNAL #include <dt-bindings/pinctrl/mt8195-pinfunc.h> 2371d45ecb0SArınç ÜNAL #include <dt-bindings/interrupt-controller/arm-gic.h> 2381d45ecb0SArınç ÜNAL # 2391d45ecb0SArınç ÜNAL pio: pinctrl@10005000 { 2401d45ecb0SArınç ÜNAL compatible = "mediatek,mt8195-pinctrl"; 2411d45ecb0SArınç ÜNAL reg = <0x10005000 0x1000>, 2421d45ecb0SArınç ÜNAL <0x11d10000 0x1000>, 2431d45ecb0SArınç ÜNAL <0x11d30000 0x1000>, 2441d45ecb0SArınç ÜNAL <0x11d40000 0x1000>, 2451d45ecb0SArınç ÜNAL <0x11e20000 0x1000>, 2461d45ecb0SArınç ÜNAL <0x11eb0000 0x1000>, 2471d45ecb0SArınç ÜNAL <0x11f40000 0x1000>, 2481d45ecb0SArınç ÜNAL <0x1000b000 0x1000>; 2491d45ecb0SArınç ÜNAL reg-names = "iocfg0", "iocfg_bm", "iocfg_bl", 2501d45ecb0SArınç ÜNAL "iocfg_br", "iocfg_lm", "iocfg_rb", 2511d45ecb0SArınç ÜNAL "iocfg_tl", "eint"; 2521d45ecb0SArınç ÜNAL gpio-controller; 2531d45ecb0SArınç ÜNAL #gpio-cells = <2>; 2541d45ecb0SArınç ÜNAL gpio-ranges = <&pio 0 0 144>; 2551d45ecb0SArınç ÜNAL interrupt-controller; 2561d45ecb0SArınç ÜNAL interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH 0>; 2571d45ecb0SArınç ÜNAL #interrupt-cells = <2>; 2581d45ecb0SArınç ÜNAL 2591d45ecb0SArınç ÜNAL pio-pins { 2601d45ecb0SArınç ÜNAL pins { 2611d45ecb0SArınç ÜNAL pinmux = <PINMUX_GPIO0__FUNC_GPIO0>; 2621d45ecb0SArınç ÜNAL output-low; 2631d45ecb0SArınç ÜNAL }; 2641d45ecb0SArınç ÜNAL }; 2651d45ecb0SArınç ÜNAL 2661d45ecb0SArınç ÜNAL spi0-pins { 2671d45ecb0SArınç ÜNAL pins-spi { 2681d45ecb0SArınç ÜNAL pinmux = <PINMUX_GPIO132__FUNC_SPIM0_CSB>, 2691d45ecb0SArınç ÜNAL <PINMUX_GPIO134__FUNC_SPIM0_MO>, 2701d45ecb0SArınç ÜNAL <PINMUX_GPIO133__FUNC_SPIM0_CLK>; 2711d45ecb0SArınç ÜNAL bias-disable; 2721d45ecb0SArınç ÜNAL }; 2731d45ecb0SArınç ÜNAL pins-spi-mi { 2741d45ecb0SArınç ÜNAL pinmux = <PINMUX_GPIO135__FUNC_SPIM0_MI>; 2751d45ecb0SArınç ÜNAL bias-pull-down; 2761d45ecb0SArınç ÜNAL }; 2771d45ecb0SArınç ÜNAL }; 2781d45ecb0SArınç ÜNAL 2791d45ecb0SArınç ÜNAL i2c0-pins { 2801d45ecb0SArınç ÜNAL pins { 2811d45ecb0SArınç ÜNAL pinmux = <PINMUX_GPIO8__FUNC_SDA0>, 2821d45ecb0SArınç ÜNAL <PINMUX_GPIO9__FUNC_SCL0>; 2831d45ecb0SArınç ÜNAL bias-disable; 2841d45ecb0SArınç ÜNAL drive-strength-microamp = <1000>; 2851d45ecb0SArınç ÜNAL }; 2861d45ecb0SArınç ÜNAL }; 2871d45ecb0SArınç ÜNAL }; 288