1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
4 $id: http://devicetree.org/schemas/pinctrl/pinctrl-mt8195.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Mediatek MT8195 Pin Controller
10 - Sean Wang <sean.wang@mediatek.com>
13 The Mediatek's Pin controller is used to control SoC pins.
17 const: mediatek,mt8195-pinctrl
23 Number of cells in GPIO specifier. Since the generic GPIO binding is used,
24 the amount of cells must be specified as 2. See the below
25 mentioned gpio binding representation for description of particular cells.
29 description: gpio valid number range.
34 Physical address base for gpio base registers. There are 8 GPIO
35 physical address base in mt8195.
40 Gpio base register names.
43 interrupt-controller: true
49 description: The interrupt outputs to sysirq.
52 mediatek,rsel_resistance_in_si_unit:
55 Identifying i2c pins pull up/down type which is RSEL. It can support
56 RSEL define or si unit value(ohm) to set different resistance.
58 # PIN CONFIGURATION NODES
62 additionalProperties: false
66 additionalProperties: false
68 A pinctrl node should contain at least one subnodes representing the
69 pinctrl groups available on the machine. Each subnode will list the
70 pins it needs, and how they should be configured, with regard to muxer
71 configuration, pullups, drive strength, input enable/disable and
73 An example of using macro:
75 /* GPIO0 set as multifunction GPIO0 */
78 pinmux = <PINMUX_GPIO0__FUNC_GPIO0>;
81 /* GPIO8 set as multifunction SDA0 */
84 pinmux = <PINMUX_GPIO8__FUNC_SDA0>;
88 $ref: "pinmux-node.yaml"
93 Integer array, represents gpio pin number and mux setting.
94 Supported pin number and mux varies for different SoCs, and are
95 defined as macros in dt-bindings/pinctrl/<soc>-pinfunc.h
99 enum: [2, 4, 6, 8, 10, 12, 14, 16]
104 - enum: [100, 101, 102, 103]
105 description: mt8195 pull down PUPD/R0/R1 type define value.
106 - enum: [200, 201, 202, 203, 204, 205, 206, 207]
107 description: mt8195 pull down RSEL type define value.
108 - enum: [75000, 5000]
109 description: mt8195 pull down RSEL type si unit value(ohm).
111 For pull down type is normal, it don't need add RSEL & R1R0 define
112 and resistance value.
113 For pull down type is PUPD/R0/R1 type, it can add R1R0 define to
114 set different resistance. It can support "MTK_PUPD_SET_R1R0_00" &
115 "MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" &
116 "MTK_PUPD_SET_R1R0_11" define in mt8195.
117 For pull down type is RSEL, it can add RSEL define & resistance
118 value(ohm) to set different resistance by identifying property
119 "mediatek,rsel_resistance_in_si_unit".
120 It can support "MTK_PULL_SET_RSEL_000" & "MTK_PULL_SET_RSEL_001"
121 & "MTK_PULL_SET_RSEL_010" & "MTK_PULL_SET_RSEL_011"
122 & "MTK_PULL_SET_RSEL_100" & "MTK_PULL_SET_RSEL_101"
123 & "MTK_PULL_SET_RSEL_110" & "MTK_PULL_SET_RSEL_111"
124 define in mt8195. It can also support resistance value(ohm)
125 "75000" & "5000" in mt8195.
127 An example of using RSEL define:
131 pinmux = <PINMUX_GPIO8__FUNC_SDA0>;
132 bias-pull-down = <MTK_PULL_SET_RSEL_001>;
136 An example of using si unit resistance value(ohm):
138 mediatek,rsel_resistance_in_si_unit;
143 pinmux = <PINMUX_GPIO8__FUNC_SDA0>;
144 bias-pull-down = <75000>;
152 - enum: [100, 101, 102, 103]
153 description: mt8195 pull up PUPD/R0/R1 type define value.
154 - enum: [200, 201, 202, 203, 204, 205, 206, 207]
155 description: mt8195 pull up RSEL type define value.
156 - enum: [1000, 1500, 2000, 3000, 4000, 5000, 10000, 75000]
157 description: mt8195 pull up RSEL type si unit value(ohm).
159 For pull up type is normal, it don't need add RSEL & R1R0 define
160 and resistance value.
161 For pull up type is PUPD/R0/R1 type, it can add R1R0 define to
162 set different resistance. It can support "MTK_PUPD_SET_R1R0_00" &
163 "MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" &
164 "MTK_PUPD_SET_R1R0_11" define in mt8195.
165 For pull up type is RSEL, it can add RSEL define & resistance
166 value(ohm) to set different resistance by identifying property
167 "mediatek,rsel_resistance_in_si_unit".
168 It can support "MTK_PULL_SET_RSEL_000" & "MTK_PULL_SET_RSEL_001"
169 & "MTK_PULL_SET_RSEL_010" & "MTK_PULL_SET_RSEL_011"
170 & "MTK_PULL_SET_RSEL_100" & "MTK_PULL_SET_RSEL_101"
171 & "MTK_PULL_SET_RSEL_110" & "MTK_PULL_SET_RSEL_111"
172 define in mt8195. It can also support resistance value(ohm)
173 "1000" & "1500" & "2000" & "3000" & "4000" & "5000" & "10000" &
175 An example of using RSEL define:
179 pinmux = <PINMUX_GPIO8__FUNC_SDA0>;
180 bias-pull-up = <MTK_PULL_SET_RSEL_001>;
184 An example of using si unit resistance value(ohm):
186 mediatek,rsel_resistance_in_si_unit;
191 pinmux = <PINMUX_GPIO8__FUNC_SDA0>;
192 bias-pull-up = <1000>;
207 input-schmitt-enable: true
209 input-schmitt-disable: true
215 - $ref: "pinctrl.yaml#"
221 - interrupt-controller
227 additionalProperties: false
231 #include <dt-bindings/pinctrl/mt8195-pinfunc.h>
232 #include <dt-bindings/interrupt-controller/arm-gic.h>
234 pio: pinctrl@10005000 {
235 compatible = "mediatek,mt8195-pinctrl";
236 reg = <0x10005000 0x1000>,
244 reg-names = "iocfg0", "iocfg_bm", "iocfg_bl",
245 "iocfg_br", "iocfg_lm", "iocfg_rb",
249 gpio-ranges = <&pio 0 0 144>;
250 interrupt-controller;
251 interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH 0>;
252 #interrupt-cells = <2>;
256 pinmux = <PINMUX_GPIO0__FUNC_GPIO0>;
263 pinmux = <PINMUX_GPIO132__FUNC_SPIM0_CSB>,
264 <PINMUX_GPIO134__FUNC_SPIM0_MO>,
265 <PINMUX_GPIO133__FUNC_SPIM0_CLK>;
269 pinmux = <PINMUX_GPIO135__FUNC_SPIM0_MI>;