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

dt-bindings: pinctrl: qcom,qcs404: convert to dtschema

Convert Qualcomm QCS404 pin controller bindings to DT schema. Keep the
parsing of pin configuration subnodes consistent with other Qualcomm
schemas (children named with '-state' suffix, their children with
'-pins').

Changes during conversion: add sdc1_rclk pins (used in qcs404-evb.dtsi).

Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20221104161131.57719-2-krzysztof.kozlowski@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

+176 -199
-199
Documentation/devicetree/bindings/pinctrl/qcom,qcs404-pinctrl.txt
··· 1 - Qualcomm QCS404 TLMM block 2 - 3 - This binding describes the Top Level Mode Multiplexer block found in the 4 - QCS404 platform. 5 - 6 - - compatible: 7 - Usage: required 8 - Value type: <string> 9 - Definition: must be "qcom,qcs404-pinctrl" 10 - 11 - - reg: 12 - Usage: required 13 - Value type: <prop-encoded-array> 14 - Definition: the base address and size of the north, south and east TLMM 15 - tiles. 16 - 17 - - reg-names: 18 - Usage: required 19 - Value type: <stringlist> 20 - Defintiion: names for the cells of reg, must contain "north", "south" 21 - and "east". 22 - 23 - - interrupts: 24 - Usage: required 25 - Value type: <prop-encoded-array> 26 - Definition: should specify the TLMM summary IRQ. 27 - 28 - - interrupt-controller: 29 - Usage: required 30 - Value type: <none> 31 - Definition: identifies this node as an interrupt controller 32 - 33 - - #interrupt-cells: 34 - Usage: required 35 - Value type: <u32> 36 - Definition: must be 2. Specifying the pin number and flags, as defined 37 - in <dt-bindings/interrupt-controller/irq.h> 38 - 39 - - gpio-controller: 40 - Usage: required 41 - Value type: <none> 42 - Definition: identifies this node as a gpio controller 43 - 44 - - #gpio-cells: 45 - Usage: required 46 - Value type: <u32> 47 - Definition: must be 2. Specifying the pin number and flags, as defined 48 - in <dt-bindings/gpio/gpio.h> 49 - 50 - - gpio-ranges: 51 - Usage: required 52 - Definition: see ../gpio/gpio.txt 53 - 54 - Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for 55 - a general description of GPIO and interrupt bindings. 56 - 57 - Please refer to pinctrl-bindings.txt in this directory for details of the 58 - common pinctrl bindings used by client devices, including the meaning of the 59 - phrase "pin configuration node". 60 - 61 - The pin configuration nodes act as a container for an arbitrary number of 62 - subnodes. Each of these subnodes represents some desired configuration for a 63 - pin, a group, or a list of pins or groups. This configuration can include the 64 - mux function to select on those pin(s)/group(s), and various pin configuration 65 - parameters, such as pull-up, drive strength, etc. 66 - 67 - 68 - PIN CONFIGURATION NODES: 69 - 70 - The name of each subnode is not important; all subnodes should be enumerated 71 - and processed purely based on their content. 72 - 73 - Each subnode only affects those parameters that are explicitly listed. In 74 - other words, a subnode that lists a mux function but no pin configuration 75 - parameters implies no information about any pin configuration parameters. 76 - Similarly, a pin subnode that describes a pullup parameter implies no 77 - information about e.g. the mux function. 78 - 79 - 80 - The following generic properties as defined in pinctrl-bindings.txt are valid 81 - to specify in a pin configuration subnode: 82 - 83 - - pins: 84 - Usage: required 85 - Value type: <string-array> 86 - Definition: List of gpio pins affected by the properties specified in 87 - this subnode. 88 - 89 - Valid pins are: 90 - gpio0-gpio119 91 - Supports mux, bias and drive-strength 92 - 93 - sdc1_clk, sdc1_cmd, sdc1_data, sdc2_clk, sdc2_cmd, 94 - sdc2_data 95 - Supports bias and drive-strength 96 - 97 - ufs_reset 98 - Supports bias and drive-strength 99 - 100 - - function: 101 - Usage: required 102 - Value type: <string> 103 - Definition: Specify the alternative function to be configured for the 104 - specified pins. Functions are only valid for gpio pins. 105 - Valid values are: 106 - 107 - gpio, hdmi_tx, hdmi_ddc, blsp_uart_tx_a2, blsp_spi2, m_voc, 108 - qdss_cti_trig_in_a0, blsp_uart_rx_a2, qdss_tracectl_a, 109 - blsp_uart2, aud_cdc, blsp_i2c_sda_a2, qdss_tracedata_a, 110 - blsp_i2c_scl_a2, qdss_tracectl_b, qdss_cti_trig_in_b0, 111 - blsp_uart1, blsp_spi_mosi_a1, blsp_spi_miso_a1, 112 - qdss_tracedata_b, blsp_i2c1, blsp_spi_cs_n_a1, gcc_plltest, 113 - blsp_spi_clk_a1, rgb_data0, blsp_uart5, blsp_spi5, 114 - adsp_ext, rgb_data1, prng_rosc, rgb_data2, blsp_i2c5, 115 - gcc_gp1_clk_b, rgb_data3, gcc_gp2_clk_b, blsp_spi0, 116 - blsp_uart0, gcc_gp3_clk_b, blsp_i2c0, qdss_traceclk_b, 117 - pcie_clk, nfc_irq, blsp_spi4, nfc_dwl, audio_ts, rgb_data4, 118 - spi_lcd, blsp_uart_tx_b2, gcc_gp3_clk_a, rgb_data5, 119 - blsp_uart_rx_b2, blsp_i2c_sda_b2, blsp_i2c_scl_b2, 120 - pwm_led11, i2s_3_data0_a, ebi2_lcd, i2s_3_data1_a, 121 - i2s_3_data2_a, atest_char, pwm_led3, i2s_3_data3_a, 122 - pwm_led4, i2s_4, ebi2_a, dsd_clk_b, pwm_led5, pwm_led6, 123 - pwm_led7, pwm_led8, pwm_led24, spkr_dac0, blsp_i2c4, 124 - pwm_led9, pwm_led10, spdifrx_opt, pwm_led12, pwm_led13, 125 - pwm_led14, wlan1_adc1, rgb_data_b0, pwm_led15, 126 - blsp_spi_mosi_b1, wlan1_adc0, rgb_data_b1, pwm_led16, 127 - blsp_spi_miso_b1, qdss_cti_trig_out_b0, wlan2_adc1, 128 - rgb_data_b2, pwm_led17, blsp_spi_cs_n_b1, wlan2_adc0, 129 - rgb_data_b3, pwm_led18, blsp_spi_clk_b1, rgb_data_b4, 130 - pwm_led19, ext_mclk1_b, qdss_traceclk_a, rgb_data_b5, 131 - pwm_led20, atest_char3, i2s_3_sck_b, ldo_update, bimc_dte0, 132 - rgb_hsync, pwm_led21, i2s_3_ws_b, dbg_out, rgb_vsync, 133 - i2s_3_data0_b, ldo_en, hdmi_dtest, rgb_de, i2s_3_data1_b, 134 - hdmi_lbk9, rgb_clk, atest_char1, i2s_3_data2_b, ebi_cdc, 135 - hdmi_lbk8, rgb_mdp, atest_char0, i2s_3_data3_b, hdmi_lbk7, 136 - rgb_data_b6, rgb_data_b7, hdmi_lbk6, rgmii_int, cri_trng1, 137 - rgmii_wol, cri_trng0, gcc_tlmm, rgmii_ck, rgmii_tx, 138 - hdmi_lbk5, hdmi_pixel, hdmi_rcv, hdmi_lbk4, rgmii_ctl, 139 - ext_lpass, rgmii_rx, cri_trng, hdmi_lbk3, hdmi_lbk2, 140 - qdss_cti_trig_out_b1, rgmii_mdio, hdmi_lbk1, rgmii_mdc, 141 - hdmi_lbk0, ir_in, wsa_en, rgb_data6, rgb_data7, 142 - atest_char2, ebi_ch0, blsp_uart3, blsp_spi3, sd_write, 143 - blsp_i2c3, gcc_gp1_clk_a, qdss_cti_trig_in_b1, 144 - gcc_gp2_clk_a, ext_mclk0, mclk_in1, i2s_1, dsd_clk_a, 145 - qdss_cti_trig_in_a1, rgmi_dll1, pwm_led22, pwm_led23, 146 - qdss_cti_trig_out_a0, rgmi_dll2, pwm_led1, 147 - qdss_cti_trig_out_a1, pwm_led2, i2s_2, pll_bist, 148 - ext_mclk1_a, mclk_in2, bimc_dte1, i2s_3_sck_a, i2s_3_ws_a 149 - 150 - - bias-disable: 151 - Usage: optional 152 - Value type: <none> 153 - Definition: The specified pins should be configured as no pull. 154 - 155 - - bias-pull-down: 156 - Usage: optional 157 - Value type: <none> 158 - Definition: The specified pins should be configured as pull down. 159 - 160 - - bias-pull-up: 161 - Usage: optional 162 - Value type: <none> 163 - Definition: The specified pins should be configured as pull up. 164 - 165 - - output-high: 166 - Usage: optional 167 - Value type: <none> 168 - Definition: The specified pins are configured in output mode, driven 169 - high. 170 - Not valid for sdc pins. 171 - 172 - - output-low: 173 - Usage: optional 174 - Value type: <none> 175 - Definition: The specified pins are configured in output mode, driven 176 - low. 177 - Not valid for sdc pins. 178 - 179 - - drive-strength: 180 - Usage: optional 181 - Value type: <u32> 182 - Definition: Selects the drive strength for the specified pins, in mA. 183 - Valid values are: 2, 4, 6, 8, 10, 12, 14 and 16 184 - 185 - Example: 186 - 187 - tlmm: pinctrl@1000000 { 188 - compatible = "qcom,qcs404-pinctrl"; 189 - reg = <0x01000000 0x200000>, 190 - <0x01300000 0x200000>, 191 - <0x07b00000 0x200000>; 192 - reg-names = "south", "north", "east"; 193 - interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>; 194 - gpio-controller; 195 - #gpio-cells = <2>; 196 - gpio-ranges = <&tlmm 0 0 120>; 197 - interrupt-controller; 198 - #interrupt-cells = <2>; 199 - };
+176
Documentation/devicetree/bindings/pinctrl/qcom,qcs404-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/qcom,qcs404-pinctrl.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Qualcomm QCS404 TLMM pin controller 8 + 9 + maintainers: 10 + - Bjorn Andersson <andersson@kernel.org> 11 + - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> 12 + 13 + description: 14 + Top Level Mode Multiplexer pin controller in Qualcomm QCS404 SoC. 15 + 16 + properties: 17 + compatible: 18 + const: qcom,qcs404-pinctrl 19 + 20 + reg: 21 + maxItems: 3 22 + 23 + reg-names: 24 + items: 25 + - const: south 26 + - const: north 27 + - const: east 28 + 29 + interrupts: true 30 + interrupt-controller: true 31 + "#interrupt-cells": true 32 + gpio-controller: true 33 + "#gpio-cells": true 34 + gpio-ranges: true 35 + wakeup-parent: true 36 + 37 + gpio-reserved-ranges: 38 + minItems: 1 39 + maxItems: 60 40 + 41 + gpio-line-names: 42 + maxItems: 120 43 + 44 + patternProperties: 45 + "-state$": 46 + oneOf: 47 + - $ref: "#/$defs/qcom-qcs404-tlmm-state" 48 + - patternProperties: 49 + "-pins$": 50 + $ref: "#/$defs/qcom-qcs404-tlmm-state" 51 + additionalProperties: false 52 + 53 + $defs: 54 + qcom-qcs404-tlmm-state: 55 + type: object 56 + description: 57 + Pinctrl node's client devices use subnodes for desired pin configuration. 58 + Client device subnodes use below standard properties. 59 + $ref: qcom,tlmm-common.yaml#/$defs/qcom-tlmm-state 60 + 61 + properties: 62 + pins: 63 + description: 64 + List of gpio pins affected by the properties specified in this 65 + subnode. 66 + items: 67 + oneOf: 68 + - pattern: "^gpio([0-9]|[1-9][0-9]|1[0-1][0-9])$" 69 + - enum: [ sdc1_clk, sdc1_cmd, sdc1_data, sdc1_rclk, sdc2_clk, 70 + sdc2_cmd, sdc2_data, ufs_reset ] 71 + minItems: 1 72 + maxItems: 36 73 + 74 + function: 75 + description: 76 + Specify the alternative function to be configured for the specified 77 + pins. 78 + 79 + enum: [ gpio, adsp_ext, atest_char, atest_char0, atest_char1, 80 + atest_char2, atest_char3, aud_cdc, audio_ts, bimc_dte0, 81 + bimc_dte1, blsp_i2c0, blsp_i2c1, blsp_i2c3, blsp_i2c4, 82 + blsp_i2c5, blsp_i2c_scl_a2, blsp_i2c_scl_b2, blsp_i2c_sda_a2, 83 + blsp_i2c_sda_b2, blsp_spi0, blsp_spi2, blsp_spi3, blsp_spi4, 84 + blsp_spi5, blsp_spi_clk_a1, blsp_spi_clk_b1, blsp_spi_cs_n_a1, 85 + blsp_spi_cs_n_b1, blsp_spi_miso_a1, blsp_spi_miso_b1, 86 + blsp_spi_mosi_a1, blsp_spi_mosi_b1, blsp_uart0, blsp_uart1, 87 + blsp_uart2, blsp_uart3, blsp_uart5, blsp_uart_rx_a2, 88 + blsp_uart_rx_b2, blsp_uart_tx_a2, blsp_uart_tx_b2, cri_trng, 89 + cri_trng0, cri_trng1, dbg_out, dsd_clk_a, dsd_clk_b, ebi2_a, 90 + ebi2_lcd, ebi_cdc, ebi_ch0, ext_lpass, ext_mclk0, ext_mclk1_a, 91 + ext_mclk1_b, gcc_gp1_clk_a, gcc_gp1_clk_b, gcc_gp2_clk_a, 92 + gcc_gp2_clk_b, gcc_gp3_clk_a, gcc_gp3_clk_b, gcc_plltest, 93 + gcc_tlmm, hdmi_ddc, hdmi_dtest, hdmi_lbk0, hdmi_lbk1, 94 + hdmi_lbk2, hdmi_lbk3, hdmi_lbk4, hdmi_lbk5, hdmi_lbk6, 95 + hdmi_lbk7, hdmi_lbk8, hdmi_lbk9, hdmi_pixel, hdmi_rcv, hdmi_tx, 96 + i2s_1, i2s_2, i2s_3_data0_a, i2s_3_data0_b, i2s_3_data1_a, 97 + i2s_3_data1_b, i2s_3_data2_a, i2s_3_data2_b, i2s_3_data3_a, 98 + i2s_3_data3_b, i2s_3_sck_a, i2s_3_sck_b, i2s_3_ws_a, 99 + i2s_3_ws_b, i2s_4, ir_in, ldo_en, ldo_update, mclk_in1, 100 + mclk_in2, m_voc, nfc_dwl, nfc_irq, pcie_clk, pll_bist, 101 + prng_rosc, pwm_led1, pwm_led10, pwm_led11, pwm_led12, 102 + pwm_led13, pwm_led14, pwm_led15, pwm_led16, pwm_led17, 103 + pwm_led18, pwm_led19, pwm_led2, pwm_led20, pwm_led21, 104 + pwm_led22, pwm_led23, pwm_led24, pwm_led3, pwm_led4, pwm_led5, 105 + pwm_led6, pwm_led7, pwm_led8, pwm_led9, qdss_cti_trig_in_a0, 106 + qdss_cti_trig_in_a1, qdss_cti_trig_in_b0, qdss_cti_trig_in_b1, 107 + qdss_cti_trig_out_a0, qdss_cti_trig_out_a1, 108 + qdss_cti_trig_out_b0, qdss_cti_trig_out_b1, qdss_traceclk_a, 109 + qdss_traceclk_b, qdss_tracectl_a, qdss_tracectl_b, 110 + qdss_tracedata_a, qdss_tracedata_b, rgb_clk, rgb_data0, 111 + rgb_data1, rgb_data2, rgb_data3, rgb_data4, rgb_data5, 112 + rgb_data6, rgb_data7, rgb_data_b0, rgb_data_b1, rgb_data_b2, 113 + rgb_data_b3, rgb_data_b4, rgb_data_b5, rgb_data_b6, 114 + rgb_data_b7, rgb_de, rgb_hsync, rgb_mdp, rgb_vsync, rgmi_dll1, 115 + rgmi_dll2, rgmii_ck, rgmii_ctl, rgmii_int, rgmii_mdc, 116 + rgmii_mdio, rgmii_rx, rgmii_tx, rgmii_wol, sd_write, 117 + spdifrx_opt, spi_lcd, spkr_dac0, wlan1_adc0, wlan1_adc1, 118 + wlan2_adc0, wlan2_adc1, wsa_en ] 119 + 120 + bias-pull-down: true 121 + bias-pull-up: true 122 + bias-disable: true 123 + drive-strength: true 124 + input-enable: true 125 + output-high: true 126 + output-low: true 127 + 128 + required: 129 + - pins 130 + 131 + additionalProperties: false 132 + 133 + allOf: 134 + - $ref: /schemas/pinctrl/qcom,tlmm-common.yaml# 135 + 136 + required: 137 + - compatible 138 + - reg 139 + 140 + additionalProperties: false 141 + 142 + examples: 143 + - | 144 + #include <dt-bindings/interrupt-controller/arm-gic.h> 145 + 146 + tlmm: pinctrl@1000000 { 147 + compatible = "qcom,qcs404-pinctrl"; 148 + reg = <0x01000000 0x200000>, 149 + <0x01300000 0x200000>, 150 + <0x07b00000 0x200000>; 151 + reg-names = "south", "north", "east"; 152 + interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>; 153 + gpio-ranges = <&tlmm 0 0 120>; 154 + gpio-controller; 155 + #gpio-cells = <2>; 156 + interrupt-controller; 157 + #interrupt-cells = <2>; 158 + 159 + 160 + blsp1-i2c1-default-state { 161 + pins = "gpio24", "gpio25"; 162 + function = "blsp_i2c1"; 163 + }; 164 + 165 + blsp1-i2c2-default-state { 166 + sda-pins { 167 + pins = "gpio19"; 168 + function = "blsp_i2c_sda_a2"; 169 + }; 170 + 171 + scl-pins { 172 + pins = "gpio20"; 173 + function = "blsp_i2c_scl_a2"; 174 + }; 175 + }; 176 + };