Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at nocache-cleanup 306 lines 10 kB view raw
1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/pinctrl/starfive,jh7100-pinctrl.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: StarFive JH7100 Pin Controller 8 9description: | 10 Bindings for the JH7100 RISC-V SoC from StarFive Ltd. 11 12 Out of the SoC's many pins only the ones named PAD_GPIO[0] to PAD_GPIO[63] 13 and PAD_FUNC_SHARE[0] to PAD_FUNC_SHARE[141] can be multiplexed and have 14 configurable bias, drive strength, schmitt trigger etc. The SoC has an 15 interesting 2-layered approach to pin muxing best illustrated by the diagram 16 below. 17 18 Signal group 0, 1, ... or 6 19 ___|___ 20 | | 21 LCD output -----------------| | 22 CMOS Camera interface ------| |--- PAD_GPIO[0] 23 Ethernet PHY interface -----| MUX |--- PAD_GPIO[1] 24 ... | | ... 25 | |--- PAD_GPIO[63] 26 -------- GPIO0 ------------| | 27 | -------|-- GPIO1 --------| |--- PAD_FUNC_SHARE[0] 28 | | | | | |--- PAD_FUNC_SHARE[1] 29 | | | | ... | | ... 30 | | | | | |--- PAD_FUNC_SHARE[141] 31 | | -----|---|-- GPIO63 ---| | 32 | | | | | | ------- 33 UART0 UART1 -- 34 35 The big MUX in the diagram only has 7 different ways of mapping peripherals 36 on the left to pins on the right. StarFive calls the 7 configurations "signal 37 groups". 38 However some peripherals have their I/O go through the 64 "GPIOs". The 39 diagram only shows UART0 and UART1, but this also includes a number of other 40 UARTs, I2Cs, SPIs, PWMs etc. All these peripherals are connected to all 64 41 GPIOs such that any GPIO can be set up to be controlled by any of the 42 peripherals. 43 Note that signal group 0 doesn't map any of the GPIOs to pins, and only 44 signal group 1 maps the GPIOs to the pins named PAD_GPIO[0] to PAD_GPIO[63]. 45 46maintainers: 47 - Emil Renner Berthing <kernel@esmil.dk> 48 - Drew Fustini <drew@beagleboard.org> 49 50properties: 51 compatible: 52 const: starfive,jh7100-pinctrl 53 54 reg: 55 minItems: 2 56 maxItems: 2 57 58 reg-names: 59 items: 60 - const: gpio 61 - const: padctl 62 63 clocks: 64 maxItems: 1 65 66 resets: 67 maxItems: 1 68 69 gpio-controller: true 70 71 "#gpio-cells": 72 const: 2 73 74 interrupts: 75 maxItems: 1 76 description: The GPIO parent interrupt. 77 78 interrupt-controller: true 79 80 "#interrupt-cells": 81 const: 2 82 83 starfive,signal-group: 84 description: | 85 Select one of the 7 signal groups. If this property is not set it 86 defaults to the configuration already chosen by the earlier boot stages. 87 $ref: /schemas/types.yaml#/definitions/uint32 88 enum: [0, 1, 2, 3, 4, 5, 6] 89 90required: 91 - compatible 92 - reg 93 - reg-names 94 - clocks 95 - gpio-controller 96 - "#gpio-cells" 97 - interrupts 98 - interrupt-controller 99 - "#interrupt-cells" 100 101patternProperties: 102 '-[0-9]+$': 103 type: object 104 patternProperties: 105 '-pins$': 106 type: object 107 description: | 108 A pinctrl node should contain at least one subnode representing the 109 pinctrl groups available on the machine. Each subnode will list the 110 pins it needs, and how they should be configured, with regard to 111 muxer configuration, bias, input enable/disable, input schmitt 112 trigger enable/disable, slew-rate and drive strength. 113 $ref: /schemas/pinctrl/pincfg-node.yaml 114 115 properties: 116 pins: 117 description: | 118 The list of pin identifiers that properties in the node apply to. 119 This should be set using either the PAD_GPIO or PAD_FUNC_SHARE 120 macros. 121 Either this or "pinmux" has to be specified, but not both. 122 $ref: /schemas/pinctrl/pinmux-node.yaml#/properties/pins 123 124 pinmux: 125 description: | 126 The list of GPIOs and their mux settings that properties in the 127 node apply to. This should be set using the GPIOMUX macro. 128 Either this or "pins" has to be specified, but not both. 129 $ref: /schemas/pinctrl/pinmux-node.yaml#/properties/pinmux 130 131 bias-disable: true 132 133 bias-pull-up: 134 type: boolean 135 136 bias-pull-down: 137 type: boolean 138 139 drive-strength: 140 enum: [ 14, 21, 28, 35, 42, 49, 56, 63 ] 141 142 input-enable: true 143 144 input-disable: true 145 146 input-schmitt-enable: true 147 148 input-schmitt-disable: true 149 150 slew-rate: 151 maximum: 7 152 153 starfive,strong-pull-up: 154 description: enable strong pull-up. 155 type: boolean 156 157 additionalProperties: false 158 159 additionalProperties: false 160 161additionalProperties: false 162 163examples: 164 - | 165 #include <dt-bindings/clock/starfive-jh7100.h> 166 #include <dt-bindings/reset/starfive-jh7100.h> 167 #include <dt-bindings/pinctrl/pinctrl-starfive-jh7100.h> 168 169 soc { 170 #address-cells = <2>; 171 #size-cells = <2>; 172 173 pinctrl@11910000 { 174 compatible = "starfive,jh7100-pinctrl"; 175 reg = <0x0 0x11910000 0x0 0x10000>, 176 <0x0 0x11858000 0x0 0x1000>; 177 reg-names = "gpio", "padctl"; 178 clocks = <&clkgen JH7100_CLK_GPIO_APB>; 179 resets = <&clkgen JH7100_RSTN_GPIO_APB>; 180 interrupts = <32>; 181 gpio-controller; 182 #gpio-cells = <2>; 183 interrupt-controller; 184 #interrupt-cells = <2>; 185 starfive,signal-group = <6>; 186 187 gmac_pins_default: gmac-0 { 188 gtxclk-pins { 189 pins = <PAD_FUNC_SHARE(115)>; 190 bias-pull-up; 191 drive-strength = <35>; 192 input-enable; 193 input-schmitt-enable; 194 slew-rate = <0>; 195 }; 196 miitxclk-pins { 197 pins = <PAD_FUNC_SHARE(116)>; 198 bias-pull-up; 199 drive-strength = <14>; 200 input-enable; 201 input-schmitt-disable; 202 slew-rate = <0>; 203 }; 204 tx-pins { 205 pins = <PAD_FUNC_SHARE(117)>, 206 <PAD_FUNC_SHARE(119)>, 207 <PAD_FUNC_SHARE(120)>, 208 <PAD_FUNC_SHARE(121)>, 209 <PAD_FUNC_SHARE(122)>, 210 <PAD_FUNC_SHARE(123)>, 211 <PAD_FUNC_SHARE(124)>, 212 <PAD_FUNC_SHARE(125)>, 213 <PAD_FUNC_SHARE(126)>; 214 bias-disable; 215 drive-strength = <35>; 216 input-disable; 217 input-schmitt-disable; 218 slew-rate = <0>; 219 }; 220 rxclk-pins { 221 pins = <PAD_FUNC_SHARE(127)>; 222 bias-pull-up; 223 drive-strength = <14>; 224 input-enable; 225 input-schmitt-disable; 226 slew-rate = <6>; 227 }; 228 rxer-pins { 229 pins = <PAD_FUNC_SHARE(129)>; 230 bias-pull-up; 231 drive-strength = <14>; 232 input-enable; 233 input-schmitt-disable; 234 slew-rate = <0>; 235 }; 236 rx-pins { 237 pins = <PAD_FUNC_SHARE(128)>, 238 <PAD_FUNC_SHARE(130)>, 239 <PAD_FUNC_SHARE(131)>, 240 <PAD_FUNC_SHARE(132)>, 241 <PAD_FUNC_SHARE(133)>, 242 <PAD_FUNC_SHARE(134)>, 243 <PAD_FUNC_SHARE(135)>, 244 <PAD_FUNC_SHARE(136)>, 245 <PAD_FUNC_SHARE(137)>, 246 <PAD_FUNC_SHARE(138)>, 247 <PAD_FUNC_SHARE(139)>, 248 <PAD_FUNC_SHARE(140)>, 249 <PAD_FUNC_SHARE(141)>; 250 bias-pull-up; 251 drive-strength = <14>; 252 input-enable; 253 input-schmitt-enable; 254 slew-rate = <0>; 255 }; 256 }; 257 258 i2c0_pins_default: i2c0-0 { 259 i2c-pins { 260 pinmux = <GPIOMUX(62, GPO_LOW, 261 GPO_I2C0_PAD_SCK_OEN, 262 GPI_I2C0_PAD_SCK_IN)>, 263 <GPIOMUX(61, GPO_LOW, 264 GPO_I2C0_PAD_SDA_OEN, 265 GPI_I2C0_PAD_SDA_IN)>; 266 bias-disable; /* external pull-up */ 267 input-enable; 268 input-schmitt-enable; 269 }; 270 }; 271 272 uart3_pins_default: uart3-0 { 273 rx-pins { 274 pinmux = <GPIOMUX(13, GPO_LOW, GPO_DISABLE, 275 GPI_UART3_PAD_SIN)>; 276 bias-pull-up; 277 input-enable; 278 input-schmitt-enable; 279 }; 280 tx-pins { 281 pinmux = <GPIOMUX(14, GPO_UART3_PAD_SOUT, 282 GPO_ENABLE, GPI_NONE)>; 283 bias-disable; 284 input-disable; 285 input-schmitt-disable; 286 }; 287 }; 288 }; 289 290 gmac { 291 pinctrl-0 = <&gmac_pins_default>; 292 pinctrl-names = "default"; 293 }; 294 295 i2c { 296 pinctrl-0 = <&i2c0_pins_default>; 297 pinctrl-names = "default"; 298 }; 299 300 uart3 { 301 pinctrl-0 = <&uart3_pins_default>; 302 pinctrl-names = "default"; 303 }; 304 }; 305 306...