276 lines · yaml
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)2%YAML 1.23---4$id: http://devicetree.org/schemas/pinctrl/mediatek,mt8186-pinctrl.yaml#5$schema: http://devicetree.org/meta-schemas/core.yaml#6 7title: MediaTek MT8186 Pin Controller8 9maintainers:10 - Sean Wang <sean.wang@mediatek.com>11 12description:13 The MediaTek's MT8186 Pin controller is used to control SoC pins.14 15properties:16 compatible:17 const: mediatek,mt8186-pinctrl18 19 gpio-controller: true20 21 '#gpio-cells':22 description: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 mentioned gpio25 binding representation for description of particular cells.26 const: 227 28 gpio-ranges:29 maxItems: 130 31 gpio-line-names: true32 33 reg:34 description:35 Physical address base for GPIO base registers. There are 8 different GPIO36 physical address base in mt8186.37 maxItems: 838 39 reg-names:40 description:41 GPIO base register names.42 items:43 - const: iocfg044 - const: iocfg_lt45 - const: iocfg_lm46 - const: iocfg_lb47 - const: iocfg_bl48 - const: iocfg_rb49 - const: iocfg_rt50 - const: eint51 52 interrupt-controller: true53 54 '#interrupt-cells':55 const: 256 57 interrupts:58 description: The interrupt outputs to sysirq59 maxItems: 160 61 mediatek,rsel-resistance-in-si-unit:62 type: boolean63 description:64 Identifying i2c pins pull up/down type which is RSEL. It can support RSEL65 define or si unit value(ohm) to set different resistance.66 67# PIN CONFIGURATION NODES68patternProperties:69 '-pins$':70 type: object71 additionalProperties: false72 patternProperties:73 '^pins':74 type: object75 additionalProperties: false76 description: |77 A pinctrl node should contain at least one subnodes representing the78 pinctrl groups available on the machine. Each subnode will list the79 pins it needs, and how they should be configured, with regard to muxer80 configuration, pullups, drive strength, input enable/disable and input81 schmitt.82 An example of using macro:83 pincontroller {84 /* GPIO0 set as multifunction GPIO0 */85 gpio-pins {86 pins {87 pinmux = <PINMUX_GPIO0__FUNC_GPIO0>;88 }89 };90 /* GPIO128 set as multifunction SDA0 */91 i2c0-pins {92 pins {93 pinmux = <PINMUX_GPIO128__FUNC_SDA0>;94 }95 };96 };97 $ref: pinmux-node.yaml98 99 properties:100 pinmux:101 description:102 Integer array, represents gpio pin number and mux setting.103 Supported pin number and mux varies for different SoCs, and are104 defined as macros in dt-bindings/pinctrl/<soc>-pinfunc.h directly.105 106 drive-strength:107 enum: [2, 4, 6, 8, 10, 12, 14, 16]108 109 drive-strength-microamp:110 enum: [125, 250, 500, 1000]111 112 bias-pull-down:113 oneOf:114 - type: boolean115 - enum: [100, 101, 102, 103]116 description: mt8186 pull down PUPD/R0/R1 type define value.117 - enum: [200, 201, 202, 203]118 description: mt8186 pull down RSEL type define value.119 - enum: [75000, 5000]120 description: mt8186 pull down RSEL type si unit value(ohm).121 description: |122 For pull down type is normal, it don't need add RSEL & R1R0 define123 and resistance value.124 For pull down type is PUPD/R0/R1 type, it can add R1R0 define to125 set different resistance. It can support "MTK_PUPD_SET_R1R0_00" &126 "MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" &127 "MTK_PUPD_SET_R1R0_11" define in mt8186.128 For pull down type is RSEL, it can add RSEL define & resistance129 value(ohm) to set different resistance by identifying property130 "mediatek,rsel-resistance-in-si-unit".131 It can support "MTK_PULL_SET_RSEL_000" & "MTK_PULL_SET_RSEL_001" &132 "MTK_PULL_SET_RSEL_010" & "MTK_PULL_SET_RSEL_011" define in133 mt8186. It can also support resistance value(ohm) "75000" & "5000"134 in mt8186.135 An example of using RSEL define:136 pincontroller {137 i2c0_pin {138 pins {139 pinmux = <PINMUX_GPIO128__FUNC_SDA0>;140 bias-pull-down = <MTK_PULL_SET_RSEL_001>;141 }142 };143 };144 An example of using si unit resistance value(ohm):145 &pio {146 mediatek,rsel-resistance-in-si-unit;147 }148 pincontroller {149 i2c0_pin {150 pins {151 pinmux = <PINMUX_GPIO128__FUNC_SDA0>;152 bias-pull-down = <75000>;153 }154 };155 };156 157 bias-pull-up:158 oneOf:159 - type: boolean160 - enum: [100, 101, 102, 103]161 description: mt8186 pull up PUPD/R0/R1 type define value.162 - enum: [200, 201, 202, 203]163 description: mt8186 pull up RSEL type define value.164 - enum: [1000, 5000, 10000, 75000]165 description: mt8186 pull up RSEL type si unit value(ohm).166 description: |167 For pull up type is normal, it don't need add RSEL & R1R0 define168 and resistance value.169 For pull up type is PUPD/R0/R1 type, it can add R1R0 define to170 set different resistance. It can support "MTK_PUPD_SET_R1R0_00" &171 "MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" &172 "MTK_PUPD_SET_R1R0_11" define in mt8186.173 For pull up type is RSEL, it can add RSEL define & resistance174 value(ohm) to set different resistance by identifying property175 "mediatek,rsel-resistance-in-si-unit".176 It can support "MTK_PULL_SET_RSEL_000" & "MTK_PULL_SET_RSEL_001" &177 "MTK_PULL_SET_RSEL_010" & "MTK_PULL_SET_RSEL_011" define in178 mt8186. It can also support resistance value(ohm) "1000" & "5000"179 & "10000" & "75000" in mt8186.180 An example of using si unit resistance value(ohm):181 &pio {182 mediatek,rsel-resistance-in-si-unit;183 }184 pincontroller {185 i2c0-pins {186 pins {187 pinmux = <PINMUX_GPIO128__FUNC_SDA0>;188 bias-pull-up = <1000>;189 }190 };191 };192 193 bias-disable: true194 195 output-high: true196 197 output-low: true198 199 input-enable: true200 201 input-disable: true202 203 input-schmitt-enable: true204 205 input-schmitt-disable: true206 207 required:208 - pinmux209 210required:211 - compatible212 - reg213 - interrupts214 - interrupt-controller215 - '#interrupt-cells'216 - gpio-controller217 - '#gpio-cells'218 - gpio-ranges219 220additionalProperties: false221 222examples:223 - |224 #include <dt-bindings/pinctrl/mt8186-pinfunc.h>225 #include <dt-bindings/interrupt-controller/arm-gic.h>226 227 pio: pinctrl@10005000 {228 compatible = "mediatek,mt8186-pinctrl";229 reg = <0x10005000 0x1000>,230 <0x10002000 0x0200>,231 <0x10002200 0x0200>,232 <0x10002400 0x0200>,233 <0x10002600 0x0200>,234 <0x10002A00 0x0200>,235 <0x10002c00 0x0200>,236 <0x1000b000 0x1000>;237 reg-names = "iocfg0", "iocfg_lt", "iocfg_lm",238 "iocfg_lb", "iocfg_bl", "iocfg_rb",239 "iocfg_rt", "eint";240 gpio-controller;241 #gpio-cells = <2>;242 gpio-ranges = <&pio 0 0 185>;243 interrupt-controller;244 interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH 0>;245 #interrupt-cells = <2>;246 247 pio-pins {248 pins {249 pinmux = <PINMUX_GPIO0__FUNC_GPIO0>;250 output-low;251 };252 };253 254 spi0-pins {255 pins-spi {256 pinmux = <PINMUX_GPIO0__FUNC_SPI0_CLK_B>,257 <PINMUX_GPIO1__FUNC_SPI0_CSB_B>,258 <PINMUX_GPIO2__FUNC_SPI0_MO_B>;259 bias-disable;260 };261 pins-spi-mi {262 pinmux = <PINMUX_GPIO3__FUNC_SPI0_MI_B>;263 bias-pull-down;264 };265 };266 267 i2c0-pins {268 pins {269 pinmux = <PINMUX_GPIO127__FUNC_SCL0>,270 <PINMUX_GPIO128__FUNC_SDA0>;271 bias-pull-up = <MTK_PULL_SET_RSEL_001>;272 drive-strength-microamp = <1000>;273 };274 };275 };276