1ff01f753SArınç ÜNAL# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2ff01f753SArınç ÜNAL%YAML 1.2 3ff01f753SArınç ÜNAL--- 4ff01f753SArınç ÜNAL$id: http://devicetree.org/schemas/pinctrl/mediatek,mt8186-pinctrl.yaml# 5ff01f753SArınç ÜNAL$schema: http://devicetree.org/meta-schemas/core.yaml# 6ff01f753SArınç ÜNAL 7*a9d44c4cSArınç ÜNALtitle: MediaTek MT8186 Pin Controller 8ff01f753SArınç ÜNAL 9ff01f753SArınç ÜNALmaintainers: 10ff01f753SArınç ÜNAL - Sean Wang <sean.wang@mediatek.com> 11ff01f753SArınç ÜNAL 12ff01f753SArınç ÜNALdescription: | 13*a9d44c4cSArınç ÜNAL The MediaTek's MT8186 Pin controller is used to control SoC pins. 14ff01f753SArınç ÜNAL 15ff01f753SArınç ÜNALproperties: 16ff01f753SArınç ÜNAL compatible: 17ff01f753SArınç ÜNAL const: mediatek,mt8186-pinctrl 18ff01f753SArınç ÜNAL 19ff01f753SArınç ÜNAL gpio-controller: true 20ff01f753SArınç ÜNAL 21ff01f753SArınç ÜNAL '#gpio-cells': 22ff01f753SArınç ÜNAL description: | 23ff01f753SArınç ÜNAL Number of cells in GPIO specifier. Since the generic GPIO binding is used, 24ff01f753SArınç ÜNAL the amount of cells must be specified as 2. See the below 25ff01f753SArınç ÜNAL mentioned gpio binding representation for description of particular cells. 26ff01f753SArınç ÜNAL const: 2 27ff01f753SArınç ÜNAL 28ff01f753SArınç ÜNAL gpio-ranges: 29ff01f753SArınç ÜNAL maxItems: 1 30ff01f753SArınç ÜNAL 31ff01f753SArınç ÜNAL gpio-line-names: true 32ff01f753SArınç ÜNAL 33ff01f753SArınç ÜNAL reg: 34ff01f753SArınç ÜNAL description: | 35ff01f753SArınç ÜNAL Physical address base for gpio base registers. There are 8 different GPIO 36ff01f753SArınç ÜNAL physical address base in mt8186. 37ff01f753SArınç ÜNAL maxItems: 8 38ff01f753SArınç ÜNAL 39ff01f753SArınç ÜNAL reg-names: 40ff01f753SArınç ÜNAL description: | 41ff01f753SArınç ÜNAL Gpio base register names. 42ff01f753SArınç ÜNAL items: 43ff01f753SArınç ÜNAL - const: iocfg0 44ff01f753SArınç ÜNAL - const: iocfg_lt 45ff01f753SArınç ÜNAL - const: iocfg_lm 46ff01f753SArınç ÜNAL - const: iocfg_lb 47ff01f753SArınç ÜNAL - const: iocfg_bl 48ff01f753SArınç ÜNAL - const: iocfg_rb 49ff01f753SArınç ÜNAL - const: iocfg_rt 50ff01f753SArınç ÜNAL - const: eint 51ff01f753SArınç ÜNAL 52ff01f753SArınç ÜNAL interrupt-controller: true 53ff01f753SArınç ÜNAL 54ff01f753SArınç ÜNAL '#interrupt-cells': 55ff01f753SArınç ÜNAL const: 2 56ff01f753SArınç ÜNAL 57ff01f753SArınç ÜNAL interrupts: 58ff01f753SArınç ÜNAL description: The interrupt outputs to sysirq 59ff01f753SArınç ÜNAL maxItems: 1 60ff01f753SArınç ÜNAL 61ff01f753SArınç ÜNAL mediatek,rsel-resistance-in-si-unit: 62ff01f753SArınç ÜNAL type: boolean 63ff01f753SArınç ÜNAL description: | 64ff01f753SArınç ÜNAL Identifying i2c pins pull up/down type which is RSEL. It can support 65ff01f753SArınç ÜNAL RSEL define or si unit value(ohm) to set different resistance. 66ff01f753SArınç ÜNAL 67ff01f753SArınç ÜNAL# PIN CONFIGURATION NODES 68ff01f753SArınç ÜNALpatternProperties: 69ff01f753SArınç ÜNAL '-pins$': 70ff01f753SArınç ÜNAL type: object 71ff01f753SArınç ÜNAL additionalProperties: false 72ff01f753SArınç ÜNAL patternProperties: 73ff01f753SArınç ÜNAL '^pins': 74ff01f753SArınç ÜNAL type: object 75ff01f753SArınç ÜNAL additionalProperties: false 76ff01f753SArınç ÜNAL description: | 77ff01f753SArınç ÜNAL A pinctrl node should contain at least one subnodes representing the 78ff01f753SArınç ÜNAL pinctrl groups available on the machine. Each subnode will list the 79ff01f753SArınç ÜNAL pins it needs, and how they should be configured, with regard to muxer 80ff01f753SArınç ÜNAL configuration, pullups, drive strength, input enable/disable and 81ff01f753SArınç ÜNAL input schmitt. 82ff01f753SArınç ÜNAL An example of using macro: 83ff01f753SArınç ÜNAL pincontroller { 84ff01f753SArınç ÜNAL /* GPIO0 set as multifunction GPIO0 */ 85ff01f753SArınç ÜNAL gpio-pins { 86ff01f753SArınç ÜNAL pins { 87ff01f753SArınç ÜNAL pinmux = <PINMUX_GPIO0__FUNC_GPIO0>; 88ff01f753SArınç ÜNAL } 89ff01f753SArınç ÜNAL }; 90ff01f753SArınç ÜNAL /* GPIO128 set as multifunction SDA0 */ 91ff01f753SArınç ÜNAL i2c0-pins { 92ff01f753SArınç ÜNAL pins { 93ff01f753SArınç ÜNAL pinmux = <PINMUX_GPIO128__FUNC_SDA0>; 94ff01f753SArınç ÜNAL } 95ff01f753SArınç ÜNAL }; 96ff01f753SArınç ÜNAL }; 97ff01f753SArınç ÜNAL $ref: "pinmux-node.yaml" 98ff01f753SArınç ÜNAL 99ff01f753SArınç ÜNAL properties: 100ff01f753SArınç ÜNAL pinmux: 101ff01f753SArınç ÜNAL description: | 102ff01f753SArınç ÜNAL Integer array, represents gpio pin number and mux setting. 103ff01f753SArınç ÜNAL Supported pin number and mux varies for different SoCs, and are 104ff01f753SArınç ÜNAL defined as macros in dt-bindings/pinctrl/<soc>-pinfunc.h 105ff01f753SArınç ÜNAL directly. 106ff01f753SArınç ÜNAL 107ff01f753SArınç ÜNAL drive-strength: 108ff01f753SArınç ÜNAL enum: [2, 4, 6, 8, 10, 12, 14, 16] 109ff01f753SArınç ÜNAL 110ff01f753SArınç ÜNAL drive-strength-microamp: 111ff01f753SArınç ÜNAL enum: [125, 250, 500, 1000] 112ff01f753SArınç ÜNAL 113ff01f753SArınç ÜNAL bias-pull-down: 114ff01f753SArınç ÜNAL oneOf: 115ff01f753SArınç ÜNAL - type: boolean 116ff01f753SArınç ÜNAL - enum: [100, 101, 102, 103] 117ff01f753SArınç ÜNAL description: mt8186 pull down PUPD/R0/R1 type define value. 118ff01f753SArınç ÜNAL - enum: [200, 201, 202, 203] 119ff01f753SArınç ÜNAL description: mt8186 pull down RSEL type define value. 120ff01f753SArınç ÜNAL - enum: [75000, 5000] 121ff01f753SArınç ÜNAL description: mt8186 pull down RSEL type si unit value(ohm). 122ff01f753SArınç ÜNAL description: | 123ff01f753SArınç ÜNAL For pull down type is normal, it don't need add RSEL & R1R0 define 124ff01f753SArınç ÜNAL and resistance value. 125ff01f753SArınç ÜNAL For pull down type is PUPD/R0/R1 type, it can add R1R0 define to 126ff01f753SArınç ÜNAL set different resistance. It can support "MTK_PUPD_SET_R1R0_00" & 127ff01f753SArınç ÜNAL "MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" & 128ff01f753SArınç ÜNAL "MTK_PUPD_SET_R1R0_11" define in mt8186. 129ff01f753SArınç ÜNAL For pull down type is RSEL, it can add RSEL define & resistance 130ff01f753SArınç ÜNAL value(ohm) to set different resistance by identifying property 131ff01f753SArınç ÜNAL "mediatek,rsel-resistance-in-si-unit". 132ff01f753SArınç ÜNAL It can support "MTK_PULL_SET_RSEL_000" & "MTK_PULL_SET_RSEL_001" 133ff01f753SArınç ÜNAL & "MTK_PULL_SET_RSEL_010" & "MTK_PULL_SET_RSEL_011" 134ff01f753SArınç ÜNAL define in mt8186. It can also support resistance value(ohm) 135ff01f753SArınç ÜNAL "75000" & "5000" in mt8186. 136ff01f753SArınç ÜNAL An example of using RSEL define: 137ff01f753SArınç ÜNAL pincontroller { 138ff01f753SArınç ÜNAL i2c0_pin { 139ff01f753SArınç ÜNAL pins { 140ff01f753SArınç ÜNAL pinmux = <PINMUX_GPIO128__FUNC_SDA0>; 141ff01f753SArınç ÜNAL bias-pull-down = <MTK_PULL_SET_RSEL_001>; 142ff01f753SArınç ÜNAL } 143ff01f753SArınç ÜNAL }; 144ff01f753SArınç ÜNAL }; 145ff01f753SArınç ÜNAL An example of using si unit resistance value(ohm): 146ff01f753SArınç ÜNAL &pio { 147ff01f753SArınç ÜNAL mediatek,rsel-resistance-in-si-unit; 148ff01f753SArınç ÜNAL } 149ff01f753SArınç ÜNAL pincontroller { 150ff01f753SArınç ÜNAL i2c0_pin { 151ff01f753SArınç ÜNAL pins { 152ff01f753SArınç ÜNAL pinmux = <PINMUX_GPIO128__FUNC_SDA0>; 153ff01f753SArınç ÜNAL bias-pull-down = <75000>; 154ff01f753SArınç ÜNAL } 155ff01f753SArınç ÜNAL }; 156ff01f753SArınç ÜNAL }; 157ff01f753SArınç ÜNAL 158ff01f753SArınç ÜNAL bias-pull-up: 159ff01f753SArınç ÜNAL oneOf: 160ff01f753SArınç ÜNAL - type: boolean 161ff01f753SArınç ÜNAL - enum: [100, 101, 102, 103] 162ff01f753SArınç ÜNAL description: mt8186 pull up PUPD/R0/R1 type define value. 163ff01f753SArınç ÜNAL - enum: [200, 201, 202, 203] 164ff01f753SArınç ÜNAL description: mt8186 pull up RSEL type define value. 165ff01f753SArınç ÜNAL - enum: [1000, 5000, 10000, 75000] 166ff01f753SArınç ÜNAL description: mt8186 pull up RSEL type si unit value(ohm). 167ff01f753SArınç ÜNAL description: | 168ff01f753SArınç ÜNAL For pull up type is normal, it don't need add RSEL & R1R0 define 169ff01f753SArınç ÜNAL and resistance value. 170ff01f753SArınç ÜNAL For pull up type is PUPD/R0/R1 type, it can add R1R0 define to 171ff01f753SArınç ÜNAL set different resistance. It can support "MTK_PUPD_SET_R1R0_00" & 172ff01f753SArınç ÜNAL "MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" & 173ff01f753SArınç ÜNAL "MTK_PUPD_SET_R1R0_11" define in mt8186. 174ff01f753SArınç ÜNAL For pull up type is RSEL, it can add RSEL define & resistance 175ff01f753SArınç ÜNAL value(ohm) to set different resistance by identifying property 176ff01f753SArınç ÜNAL "mediatek,rsel-resistance-in-si-unit". 177ff01f753SArınç ÜNAL It can support "MTK_PULL_SET_RSEL_000" & "MTK_PULL_SET_RSEL_001" 178ff01f753SArınç ÜNAL & "MTK_PULL_SET_RSEL_010" & "MTK_PULL_SET_RSEL_011" 179ff01f753SArınç ÜNAL define in mt8186. It can also support resistance value(ohm) 180ff01f753SArınç ÜNAL "1000" & "5000" & "10000" & "75000" in mt8186. 181ff01f753SArınç ÜNAL An example of using si unit resistance value(ohm): 182ff01f753SArınç ÜNAL &pio { 183ff01f753SArınç ÜNAL mediatek,rsel-resistance-in-si-unit; 184ff01f753SArınç ÜNAL } 185ff01f753SArınç ÜNAL pincontroller { 186ff01f753SArınç ÜNAL i2c0-pins { 187ff01f753SArınç ÜNAL pins { 188ff01f753SArınç ÜNAL pinmux = <PINMUX_GPIO128__FUNC_SDA0>; 189ff01f753SArınç ÜNAL bias-pull-up = <1000>; 190ff01f753SArınç ÜNAL } 191ff01f753SArınç ÜNAL }; 192ff01f753SArınç ÜNAL }; 193ff01f753SArınç ÜNAL 194ff01f753SArınç ÜNAL bias-disable: true 195ff01f753SArınç ÜNAL 196ff01f753SArınç ÜNAL output-high: true 197ff01f753SArınç ÜNAL 198ff01f753SArınç ÜNAL output-low: true 199ff01f753SArınç ÜNAL 200ff01f753SArınç ÜNAL input-enable: true 201ff01f753SArınç ÜNAL 202ff01f753SArınç ÜNAL input-disable: true 203ff01f753SArınç ÜNAL 204ff01f753SArınç ÜNAL input-schmitt-enable: true 205ff01f753SArınç ÜNAL 206ff01f753SArınç ÜNAL input-schmitt-disable: true 207ff01f753SArınç ÜNAL 208ff01f753SArınç ÜNAL required: 209ff01f753SArınç ÜNAL - pinmux 210ff01f753SArınç ÜNAL 211ff01f753SArınç ÜNALrequired: 212ff01f753SArınç ÜNAL - compatible 213ff01f753SArınç ÜNAL - reg 214ff01f753SArınç ÜNAL - interrupts 215ff01f753SArınç ÜNAL - interrupt-controller 216ff01f753SArınç ÜNAL - '#interrupt-cells' 217ff01f753SArınç ÜNAL - gpio-controller 218ff01f753SArınç ÜNAL - '#gpio-cells' 219ff01f753SArınç ÜNAL - gpio-ranges 220ff01f753SArınç ÜNAL 221ff01f753SArınç ÜNALadditionalProperties: false 222ff01f753SArınç ÜNAL 223ff01f753SArınç ÜNALexamples: 224ff01f753SArınç ÜNAL - | 225ff01f753SArınç ÜNAL #include <dt-bindings/pinctrl/mt8186-pinfunc.h> 226ff01f753SArınç ÜNAL #include <dt-bindings/interrupt-controller/arm-gic.h> 227ff01f753SArınç ÜNAL 228ff01f753SArınç ÜNAL pio: pinctrl@10005000 { 229ff01f753SArınç ÜNAL compatible = "mediatek,mt8186-pinctrl"; 230ff01f753SArınç ÜNAL reg = <0x10005000 0x1000>, 231ff01f753SArınç ÜNAL <0x10002000 0x0200>, 232ff01f753SArınç ÜNAL <0x10002200 0x0200>, 233ff01f753SArınç ÜNAL <0x10002400 0x0200>, 234ff01f753SArınç ÜNAL <0x10002600 0x0200>, 235ff01f753SArınç ÜNAL <0x10002A00 0x0200>, 236ff01f753SArınç ÜNAL <0x10002c00 0x0200>, 237ff01f753SArınç ÜNAL <0x1000b000 0x1000>; 238ff01f753SArınç ÜNAL reg-names = "iocfg0", "iocfg_lt", "iocfg_lm", 239ff01f753SArınç ÜNAL "iocfg_lb", "iocfg_bl", "iocfg_rb", 240ff01f753SArınç ÜNAL "iocfg_rt", "eint"; 241ff01f753SArınç ÜNAL gpio-controller; 242ff01f753SArınç ÜNAL #gpio-cells = <2>; 243ff01f753SArınç ÜNAL gpio-ranges = <&pio 0 0 185>; 244ff01f753SArınç ÜNAL interrupt-controller; 245ff01f753SArınç ÜNAL interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH 0>; 246ff01f753SArınç ÜNAL #interrupt-cells = <2>; 247ff01f753SArınç ÜNAL 248ff01f753SArınç ÜNAL pio-pins { 249ff01f753SArınç ÜNAL pins { 250ff01f753SArınç ÜNAL pinmux = <PINMUX_GPIO0__FUNC_GPIO0>; 251ff01f753SArınç ÜNAL output-low; 252ff01f753SArınç ÜNAL }; 253ff01f753SArınç ÜNAL }; 254ff01f753SArınç ÜNAL 255ff01f753SArınç ÜNAL spi0-pins { 256ff01f753SArınç ÜNAL pins-spi { 257ff01f753SArınç ÜNAL pinmux = <PINMUX_GPIO0__FUNC_SPI0_CLK_B>, 258ff01f753SArınç ÜNAL <PINMUX_GPIO1__FUNC_SPI0_CSB_B>, 259ff01f753SArınç ÜNAL <PINMUX_GPIO2__FUNC_SPI0_MO_B>; 260ff01f753SArınç ÜNAL bias-disable; 261ff01f753SArınç ÜNAL }; 262ff01f753SArınç ÜNAL pins-spi-mi { 263ff01f753SArınç ÜNAL pinmux = <PINMUX_GPIO3__FUNC_SPI0_MI_B>; 264ff01f753SArınç ÜNAL bias-pull-down; 265ff01f753SArınç ÜNAL }; 266ff01f753SArınç ÜNAL }; 267ff01f753SArınç ÜNAL 268ff01f753SArınç ÜNAL i2c0-pins { 269ff01f753SArınç ÜNAL pins { 270ff01f753SArınç ÜNAL pinmux = <PINMUX_GPIO127__FUNC_SCL0>, 271ff01f753SArınç ÜNAL <PINMUX_GPIO128__FUNC_SDA0>; 272ff01f753SArınç ÜNAL bias-pull-up = <MTK_PULL_SET_RSEL_001>; 273ff01f753SArınç ÜNAL drive-strength-microamp = <1000>; 274ff01f753SArınç ÜNAL }; 275ff01f753SArınç ÜNAL }; 276ff01f753SArınç ÜNAL }; 277