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

dt-bindings: pinctrl: Add bindings for BCM21664 pin controller

Add device tree bindings for the pin controller included in the
BCM21664 chip. The bindings are based off brcm,bcm11351-pinctrl.yaml;
both chips use the same driver, but have different pins, and the
BCM21664 has 6 alt modes instead of 4.

Signed-off-by: Artur Weber <aweber.kernel@gmail.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/20250303-bcm21664-pinctrl-v3-1-5f8b80e4ab51@gmail.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

authored by

Artur Weber and committed by
Linus Walleij
df3a388e e97435ab

+152
+152
Documentation/devicetree/bindings/pinctrl/brcm,bcm21664-pinctrl.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/pinctrl/brcm,bcm21664-pinctrl.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Broadcom BCM21664 pin controller 8 + 9 + maintainers: 10 + - Florian Fainelli <florian.fainelli@broadcom.com> 11 + - Ray Jui <rjui@broadcom.com> 12 + - Scott Branden <sbranden@broadcom.com> 13 + 14 + allOf: 15 + - $ref: pinctrl.yaml# 16 + 17 + properties: 18 + compatible: 19 + const: brcm,bcm21664-pinctrl 20 + 21 + reg: 22 + maxItems: 1 23 + 24 + patternProperties: 25 + '-pins$': 26 + type: object 27 + additionalProperties: false 28 + 29 + patternProperties: 30 + '-grp[0-9]$': 31 + type: object 32 + 33 + properties: 34 + pins: 35 + description: 36 + Specifies the name(s) of one or more pins to be configured by 37 + this node. 38 + items: 39 + enum: [ adcsyn, batrm, bsc1clk, bsc1dat, camcs0, camcs1, clk32k, 40 + clk_cx8, dclk1, dclk4, dclkreq1, dclkreq4, dmic0clk, 41 + dmic0dq, dsi0te, gpio00, gpio01, gpio02, gpio03, gpio04, 42 + gpio05, gpio06, gpio07, gpio08, gpio09, gpio10, gpio11, 43 + gpio12, gpio13, gpio14, gpio15, gpio16, gpio17, gpio18, 44 + gpio19, gpio20, gpio21, gpio22, gpio23, gpio24, gpio25, 45 + gpio26, gpio27, gpio28, gpio32, gpio33, gpio34, gpio93, 46 + gpio94, gps_calreq, gps_hostreq, gps_pablank, gps_tmark, 47 + icusbdm, icusbdp, lcdcs0, lcdres, lcdscl, lcdsda, lcdte, 48 + mdmgpio00, mdmgpio01, mdmgpio02, mdmgpio03, mdmgpio04, 49 + mdmgpio05, mdmgpio06, mdmgpio07, mdmgpio08, mmc0ck, 50 + mmc0cmd, mmc0dat0, mmc0dat1, mmc0dat2, mmc0dat3, mmc0dat4, 51 + mmc0dat5, mmc0dat6, mmc0dat7, mmc0rst, mmc1ck, mmc1cmd, 52 + mmc1dat0, mmc1dat1, mmc1dat2, mmc1dat3, mmc1dat4, 53 + mmc1dat5, mmc1dat6, mmc1dat7, mmc1rst, pc1, pc2, pmbscclk, 54 + pmbscdat, pmuint, resetn, rfst2g_mtsloten3g, 55 + rtxdata2g_txdata3g1, rtxen2g_txdata3g2, rxdata3g0, 56 + rxdata3g1, rxdata3g2, sdck, sdcmd, sddat0, sddat1, sddat2, 57 + sddat3, simclk, simdat, simdet, simrst, spi0clk, spi0fss, 58 + spi0rxd, spi0txd, sri_c, sri_d, sri_e, sspck, sspdi, 59 + sspdo, sspsyn, stat1, stat2, swclktck, swdiotms, sysclken, 60 + tdi, tdo, testmode, traceclk, tracedt00, tracedt01, 61 + tracedt02, tracedt03, tracedt04, tracedt05, tracedt06, 62 + tracedt07, tracedt08, tracedt09, tracedt10, tracedt11, 63 + tracedt12, tracedt13, tracedt14, tracedt15, trstb, 64 + txdata3g0, ubctsn, ubrtsn, ubrx, ubtx ] 65 + 66 + function: 67 + description: 68 + Specifies the pin mux selection. 69 + enum: [ alt1, alt2, alt3, alt4, alt5, alt6 ] 70 + 71 + bias-disable: true 72 + 73 + bias-pull-up: 74 + type: boolean 75 + 76 + bias-pull-down: 77 + type: boolean 78 + 79 + slew-rate: 80 + description: | 81 + Meaning depends on configured pin mux: 82 + bsc*clk/pmbscclk or bsc*dat/pmbscdat or gpio16/gpio17: 83 + 0: Standard (100 kbps) & Fast (400 kbps) mode 84 + 1: Highspeed (3.4 Mbps) mode 85 + Otherwise: 86 + 0: fast slew rate 87 + 1: normal slew rate 88 + 89 + drive-strength: 90 + enum: [ 2, 4, 6, 8, 10, 12, 14, 16 ] 91 + 92 + input-enable: true 93 + input-disable: true 94 + 95 + input-schmitt-enable: true 96 + input-schmitt-disable: true 97 + 98 + required: 99 + - pins 100 + 101 + additionalProperties: false 102 + 103 + allOf: 104 + - $ref: pincfg-node.yaml# 105 + # Limitations for I2C pins 106 + - if: 107 + properties: 108 + pins: 109 + contains: 110 + enum: [ bsc1clk, bsc1dat, gpio16, gpio17, pmbscclk, 111 + pmbscdat ] 112 + then: 113 + properties: 114 + drive-strength: false 115 + bias-pull-down: false 116 + input-schmitt-enable: false 117 + input-schmitt-disable: false 118 + 119 + 120 + required: 121 + - compatible 122 + - reg 123 + 124 + unevaluatedProperties: false 125 + 126 + examples: 127 + - | 128 + pinctrl@35004800 { 129 + compatible = "brcm,bcm21664-pinctrl"; 130 + reg = <0x35004800 0x7f0>; 131 + 132 + dev-a-active-pins { 133 + /* group node defining 1 standard pin */ 134 + std-grp0 { 135 + pins = "gpio00"; 136 + function = "alt1"; 137 + input-schmitt-enable; 138 + bias-disable; 139 + slew-rate = <1>; 140 + drive-strength = <4>; 141 + }; 142 + 143 + /* group node defining 2 I2C pins */ 144 + i2c-grp0 { 145 + pins = "bsc1clk", "bsc1dat"; 146 + function = "alt2"; 147 + bias-pull-up; 148 + input-enable; 149 + }; 150 + }; 151 + }; 152 + ...