1# 2# PINCTRL infrastructure and drivers 3# 4 5menu "Pin controllers" 6 7config PINCTRL 8 bool "Support pin controllers" 9 depends on DM 10 help 11 This enables the basic support for pinctrl framework. You may want 12 to enable some more options depending on what you want to do. 13 14config PINCTRL_FULL 15 bool "Support full pin controllers" 16 depends on PINCTRL && OF_CONTROL 17 default y 18 help 19 This provides Linux-compatible device tree interface for the pinctrl 20 subsystem. This feature depends on device tree configuration because 21 it parses a device tree to look for the pinctrl device which the 22 peripheral device is associated with. 23 24 If this option is disabled (it is the only possible choice for non-DT 25 boards), the pinctrl core provides no systematic mechanism for 26 identifying peripheral devices, applying needed pinctrl settings. 27 It is totally up to the implementation of each low-level driver. 28 You can save memory footprint in return for some limitations. 29 30config PINCTRL_GENERIC 31 bool "Support generic pin controllers" 32 depends on PINCTRL_FULL 33 default y 34 help 35 Say Y here if you want to use the pinctrl subsystem through the 36 generic DT interface. If enabled, some functions become available 37 to parse common properties such as "pins", "groups", "functions" and 38 some pin configuration parameters. It would be easier if you only 39 need the generic DT interface for pin muxing and pin configuration. 40 If you need to handle vendor-specific DT properties, you can disable 41 this option and implement your own set_state callback in the pinctrl 42 operations. 43 44config PINMUX 45 bool "Support pin multiplexing controllers" 46 depends on PINCTRL_GENERIC 47 default y 48 help 49 This option enables pin multiplexing through the generic pinctrl 50 framework. Most SoCs have their own multiplexing arrangement where 51 a single pin can be used for several functions. An SoC pinctrl driver 52 allows the required function to be selected for each pin. 53 The driver is typically controlled by the device tree. 54 55config PINCONF 56 bool "Support pin configuration controllers" 57 depends on PINCTRL_GENERIC 58 help 59 This option enables pin configuration through the generic pinctrl 60 framework. 61 62config PINCONF_RECURSIVE 63 bool "Support recursive binding for pin configuration nodes" 64 depends on PINCTRL_FULL 65 default n if ARCH_STM32MP 66 default y 67 help 68 In the Linux pinctrl binding, the pin configuration nodes need not be 69 direct children of the pin controller device (may be grandchildren for 70 example). It is define is each individual pin controller device. 71 Say Y here if you want to keep this behavior with the pinconfig 72 u-class: all sub are recursively bounded. 73 If the option is disabled, this behavior is deactivated and only 74 the direct children of pin controller will be assumed as pin 75 configuration; you can save memory footprint when this feature is 76 no needed. 77 78config SPL_PINCTRL 79 bool "Support pin controllers in SPL" 80 depends on SPL && SPL_DM 81 help 82 This option is an SPL-variant of the PINCTRL option. 83 See the help of PINCTRL for details. 84 85config TPL_PINCTRL 86 bool "Support pin controllers in TPL" 87 depends on TPL && TPL_DM 88 help 89 This option is an TPL variant of the PINCTRL option. 90 See the help of PINCTRL for details. 91 92config VPL_PINCTRL 93 bool "Support pin controllers in VPL" 94 depends on VPL && VPL_DM 95 help 96 This option is an VPL variant of the PINCTRL option. 97 See the help of PINCTRL for details. 98 99config SPL_PINCTRL_FULL 100 bool "Support full pin controllers in SPL" 101 depends on SPL_PINCTRL && SPL_OF_CONTROL 102 default n if TARGET_STM32F746_DISCO 103 default y 104 help 105 This option is an SPL variant of the PINCTRL_FULL option. 106 See the help of PINCTRL_FULL for details. 107 108config TPL_PINCTRL_FULL 109 bool "Support full pin controllers in TPL" 110 depends on TPL_PINCTRL && TPL_OF_CONTROL 111 help 112 This option is a TPL variant of the PINCTRL_FULL option. 113 See the help of PINCTRL_FULL for details. 114 115config VPL_PINCTRL_FULL 116 bool "Support full pin controllers in VPL" 117 depends on VPL_PINCTRL && VPL_OF_CONTROL 118 help 119 This option is a VPL variant of the PINCTRL_FULL option. 120 See the help of PINCTRL_FULL for details. 121 122config SPL_PINCTRL_GENERIC 123 bool "Support generic pin controllers in SPL" 124 depends on SPL_PINCTRL_FULL 125 default y 126 help 127 This option is an SPL-variant of the PINCTRL_GENERIC option. 128 See the help of PINCTRL_GENERIC for details. 129 130config TPL_PINCTRL_GENERIC 131 bool "Support generic pin controllers in TPL" 132 depends on TPL_PINCTRL_FULL 133 default y 134 help 135 This option is a TPL-variant of the PINCTRL_GENERIC option. 136 See the help of PINCTRL_GENERIC for details. 137 138config SPL_PINMUX 139 bool "Support pin multiplexing controllers in SPL" 140 depends on SPL_PINCTRL_GENERIC 141 default y 142 help 143 This option is an SPL-variant of the PINMUX option. 144 See the help of PINMUX for details. 145 The pinctrl subsystem can add a substantial overhead to the SPL 146 image since it typically requires quite a few tables either in the 147 driver or in the device tree. If this is acceptable and you need 148 to adjust pin multiplexing in SPL in order to boot into U-Boot, 149 enable this option. You will need to enable device tree in SPL 150 for this to work. 151 152config SPL_PINCONF 153 bool "Support pin configuration controllers in SPL" 154 depends on SPL_PINCTRL_GENERIC 155 help 156 This option is an SPL-variant of the PINCONF option. 157 See the help of PINCONF for details. 158 159config SPL_PINCONF_RECURSIVE 160 bool "Support recursive binding for pin configuration nodes in SPL" 161 depends on SPL_PINCTRL_FULL 162 default n if ARCH_STM32MP 163 default y 164 help 165 This option is an SPL-variant of the PINCONF_RECURSIVE option. 166 See the help of PINCONF_RECURSIVE for details. 167 168if PINCTRL || SPL_PINCTRL 169 170config PINCTRL_APPLE 171 bool "Apple pinctrl driver" 172 depends on DM && PINCTRL_GENERIC && ARCH_APPLE 173 default y 174 help 175 Support pin multiplexing on Apple SoCs. 176 177 The driver is controlled by a device tree node which contains 178 both the GPIO definitions and pin control functions for each 179 available multiplex function. 180 181config PINCTRL_ADI 182 bool "ADI pinctrl driver" 183 depends on DM && ARCH_SC5XX 184 help 185 This driver enables pinctrl support on SC5xx processors. This 186 driver covers only the pin configuration functionality, and 187 GPIO functionality is contained in the separate GPIO driver. 188 189config PINCTRL_AR933X 190 bool "QCA/Athores ar933x pin control driver" 191 depends on DM && SOC_AR933X 192 help 193 Support pin multiplexing control on QCA/Athores ar933x SoCs. 194 The driver is controlled by a device tree node which contains 195 both the GPIO definitions and pin control functions for each 196 available multiplex function. 197 198config PINCTRL_AT91 199 bool "AT91 pinctrl driver" 200 depends on DM 201 help 202 This option is to enable the AT91 pinctrl driver for AT91 PIO 203 controller. 204 205 AT91 PIO controller is a combined gpio-controller, pin-mux and 206 pin-config module. Each I/O pin may be dedicated as a general-purpose 207 I/O or be assigned to a function of an embedded peripheral. Each I/O 208 pin has a glitch filter providing rejection of glitches lower than 209 one-half of peripheral clock cycle and a debouncing filter providing 210 rejection of unwanted pulses from key or push button operations. You 211 can also control the multi-driver capability, pull-up and pull-down 212 feature on each I/O pin. 213 214config PINCTRL_AT91PIO4 215 bool "AT91 PIO4 pinctrl driver" 216 depends on DM 217 help 218 This option is to enable the AT91 pinctrl driver for AT91 PIO4 219 controller which is available on SAMA5D2 SoC. 220 221config PINCTRL_INTEL 222 bool "Standard Intel pin-control and pin-mux driver" 223 help 224 Recent Intel chips such as Apollo Lake (APL) use a common pin control 225 and GPIO scheme. The settings for this come from an SoC-specific 226 driver which must be separately enabled. The driver supports setting 227 pins on start-up and changing the GPIO attributes. 228 229config PINCTRL_PIC32 230 bool "Microchip PIC32 pin-control and pin-mux driver" 231 depends on DM && MACH_PIC32 232 default y 233 help 234 Supports individual pin selection and configuration for each 235 remappable peripheral available on Microchip PIC32 236 SoCs. This driver is controlled by a device tree node which 237 contains both GPIO definition and pin control functions. 238 239config PINCTRL_QCA953X 240 bool "QCA/Athores qca953x pin control driver" 241 depends on DM && SOC_QCA953X 242 help 243 Support pin multiplexing control on QCA/Athores qca953x SoCs. 244 245 The driver is controlled by a device tree node which contains both 246 the GPIO definitions and pin control functions for each available 247 multiplex function. 248 249config PINCTRL_QE 250 bool "QE based pinctrl driver, like on mpc83xx" 251 depends on DM 252 help 253 This option is to enable the QE pinctrl driver for QE based io 254 controller. 255 256config PINCTRL_ROCKCHIP_RV1108 257 bool "Rockchip rv1108 pin control driver" 258 depends on DM 259 help 260 Support pin multiplexing control on Rockchip rv1108 SoC. 261 262 The driver is controlled by a device tree node which contains 263 both the GPIO definitions and pin control functions for each 264 available multiplex function. 265 266config PINCTRL_SX150X 267 bool "Semtech SX150x I2C GPIO expander pinctrl driver" 268 depends on DM && PINCTRL_FULL 269 help 270 Say yes here to provide support for Semtech SX150x-series I2C 271 GPIO expanders as pinctrl module. 272 Compatible models include: 273 - 8 bits: sx1508q, sx1502q 274 - 16 bits: sx1509q, sx1506q 275 276config SPL_PINCTRL_SX150X 277 bool "Semtech SX150x I2C GPIO expander pinctrl driver in SPL" 278 depends on DM && SPL_PINCTRL_FULL 279 help 280 This option is an SPL-variant of the PINCTRL_SX150X option. 281 See the help of PINCTRL_SX150X for details. 282 283 284config PINCTRL_SANDBOX 285 bool "Sandbox pinctrl driver" 286 depends on SANDBOX 287 help 288 This enables pinctrl driver for sandbox. 289 290 Currently, this driver actually does nothing but print debug 291 messages when pinctrl operations are invoked. 292 293config PINCTRL_SINGLE 294 bool "Single register pin-control and pin-multiplex driver" 295 depends on DM 296 help 297 This enables pinctrl driver for systems using a single register for 298 pin configuration and multiplexing. TI's AM335X SoCs are examples of 299 such systems. 300 301 Depending on the platform make sure to also enable OF_TRANSLATE and 302 eventually SPL_OF_TRANSLATE to get correct address translations. 303 304config PINCTRL_STI 305 bool "STMicroelectronics STi pin-control and pin-mux driver" 306 depends on DM && ARCH_STI 307 default y 308 help 309 Support pin multiplexing control on STMicroelectronics STi SoCs. 310 311 The driver is controlled by a device tree node which contains both 312 the GPIO definitions and pin control functions for each available 313 multiplex function. 314 315config PINCTRL_STM32 316 bool "ST STM32 pin control driver" 317 depends on DM 318 help 319 Supports pin multiplexing control on stm32 SoCs. 320 321 The driver is controlled by a device tree node which contains both 322 the GPIO definitions and pin control functions for each available 323 multiplex function. 324 325config PINCTRL_STMFX 326 bool "STMicroelectronics STMFX I2C GPIO expander pinctrl driver" 327 depends on DM && PINCTRL_FULL 328 help 329 I2C driver for STMicroelectronics Multi-Function eXpander (STMFX) 330 GPIO expander. 331 Supports pin multiplexing control on stm32 SoCs. 332 333 The driver is controlled by a device tree node which contains both 334 the GPIO definitions and pin control functions for each available 335 multiplex function. 336 337config SPL_PINCTRL_STMFX 338 bool "STMicroelectronics STMFX I2C GPIO expander pinctrl driver in SPL" 339 depends on SPL_PINCTRL_FULL 340 help 341 This option is an SPL-variant of the SPL_PINCTRL_STMFX option. 342 See the help of PINCTRL_STMFX for details. 343 344config PINCTRL_TH1520 345 bool "T-Head TH1520 pinctrl driver" 346 depends on DM && PINCTRL_FULL 347 select PINCONF 348 help 349 Support pin multiplexing and configuration control blocks on the 350 T-Head TH1520 SoC. 351 352config ASPEED_AST2500_PINCTRL 353 bool "Aspeed AST2500 pin control driver" 354 depends on DM && PINCTRL_GENERIC && ASPEED_AST2500 355 default y 356 help 357 Support pin multiplexing control on Aspeed ast2500 SoC. The driver 358 uses Generic Pinctrl framework and is compatible with the Linux 359 driver, i.e. it uses the same device tree configuration. 360 361config ASPEED_AST2600_PINCTRL 362 bool "Aspeed AST2600 pin control driver" 363 depends on DM && PINCTRL_GENERIC && ASPEED_AST2600 364 default y 365 help 366 Support pin multiplexing control on Aspeed ast2600 SoC. The driver 367 uses Generic Pinctrl framework and is compatible with the Linux 368 driver, i.e. it uses the same device tree configuration. 369 370config PINCTRL_K210 371 bool "Kendryte K210 Fully-Programmable Input/Output Array driver" 372 depends on DM && PINCTRL_GENERIC 373 help 374 Support pin multiplexing on the K210. The "FPIOA" can remap any 375 supported function to any multifunctional IO pin. It can also perform 376 basic GPIO functions, such as reading the current value of a pin. 377 378config PINCTRL_ZYNQMP 379 bool "Xilinx ZynqMP pin control driver" 380 depends on DM && PINCTRL_GENERIC && ARCH_ZYNQMP 381 default y 382 help 383 Support pin multiplexing control on Xilinx ZynqMP. The driver uses 384 Generic Pinctrl framework and is compatible with the Linux driver, 385 i.e. it uses the same device tree configuration. 386 387endif 388 389source "drivers/pinctrl/broadcom/Kconfig" 390source "drivers/pinctrl/exynos/Kconfig" 391source "drivers/pinctrl/intel/Kconfig" 392source "drivers/pinctrl/mediatek/Kconfig" 393source "drivers/pinctrl/meson/Kconfig" 394source "drivers/pinctrl/mscc/Kconfig" 395source "drivers/pinctrl/mtmips/Kconfig" 396source "drivers/pinctrl/mvebu/Kconfig" 397source "drivers/pinctrl/nexell/Kconfig" 398source "drivers/pinctrl/nuvoton/Kconfig" 399source "drivers/pinctrl/nxp/Kconfig" 400source "drivers/pinctrl/qcom/Kconfig" 401source "drivers/pinctrl/renesas/Kconfig" 402source "drivers/pinctrl/rockchip/Kconfig" 403source "drivers/pinctrl/sunxi/Kconfig" 404source "drivers/pinctrl/tegra/Kconfig" 405source "drivers/pinctrl/uniphier/Kconfig" 406source "drivers/pinctrl/starfive/Kconfig" 407 408endmenu 409