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

Merge tag 'pinctrl-v6.0-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl

Pull pin control updates from Linus Walleij:
"Outside the pinctrl driver and DT bindings we hit some Arm DT files,
patched by the maintainers.

Other than that it is business as usual.

Core changes:

- Add PINCTRL_PINGROUP() helper macro (and use it in the AMD driver).

New drivers:

- Intel Meteor Lake support.

- Reneasas RZ/V2M and r8a779g0 (R-Car V4H).

- AXP209 variants AXP221, AXP223 and AXP809.

- Qualcomm MSM8909, PM8226, PMP8074 and SM6375.

- Allwinner D1.

Improvements:

- Proper pin multiplexing in the AMD driver.

- Mediatek MT8192 can use generic drive strength and pin bias, then
fixes on top plus some I2C pin group fixes.

- Have the Allwinner Sunplus SP7021 use the generic DT schema and
make interrupts optional.

- Handle Qualcomm SC7280 ADSP.

- Handle Qualcomm MSM8916 CAMSS GP clock muxing.

- High impedance bias on ZynqMP.

- Serialize StarFive access to MMIO.

- Immutable gpiochip for BCM2835, Ingenic, Qualcomm SPMI GPIO"

* tag 'pinctrl-v6.0-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (117 commits)
dt-bindings: pinctrl: qcom,pmic-gpio: add PM8226 constraints
pinctrl: qcom: Make PINCTRL_SM8450 depend on PINCTRL_MSM
pinctrl: qcom: sm8250: Fix PDC map
pinctrl: amd: Fix an unused variable
dt-bindings: pinctrl: mt8186: Add and use drive-strength-microamp
dt-bindings: pinctrl: mt8186: Add gpio-line-names property
ARM: dts: imxrt1170-pinfunc: Add pinctrl binding header
pinctrl: amd: Use unicode for debugfs output
pinctrl: amd: Fix newline declaration in debugfs output
pinctrl: at91: Fix typo 'the the' in comment
dt-bindings: pinctrl: st,stm32: Correct 'resets' property name
pinctrl: mvebu: Missing a blank line after declarations.
pinctrl: qcom: Add SM6375 TLMM driver
dt-bindings: pinctrl: Add DT schema for SM6375 TLMM
dt-bindings: pinctrl: mt8195: Use drive-strength-microamp in examples
Revert "pinctrl: qcom: spmi-gpio: make the irqchip immutable"
pinctrl: imx93: Add MODULE_DEVICE_TABLE()
pinctrl: sunxi: Add driver for Allwinner D1
pinctrl: sunxi: Make some layout parameters dynamic
pinctrl: sunxi: Refactor register/offset calculation
...

+13352 -665
+6
Documentation/devicetree/bindings/gpio/x-powers,axp209-gpio.yaml
··· 19 19 oneOf: 20 20 - enum: 21 21 - x-powers,axp209-gpio 22 + - x-powers,axp221-gpio 22 23 - x-powers,axp813-gpio 24 + - items: 25 + - enum: 26 + - x-powers,axp223-gpio 27 + - x-powers,axp809-gpio 28 + - const: x-powers,axp221-gpio 23 29 - items: 24 30 - const: x-powers,axp803-gpio 25 31 - const: x-powers,axp813-gpio
+13 -3
Documentation/devicetree/bindings/pinctrl/allwinner,sun4i-a10-pinctrl.yaml
··· 46 46 - allwinner,sun8i-v3s-pinctrl 47 47 - allwinner,sun9i-a80-pinctrl 48 48 - allwinner,sun9i-a80-r-pinctrl 49 + - allwinner,sun20i-d1-pinctrl 49 50 - allwinner,sun50i-a64-pinctrl 50 51 - allwinner,sun50i-a64-r-pinctrl 51 52 - allwinner,sun50i-a100-pinctrl ··· 80 79 - const: apb 81 80 - const: hosc 82 81 - const: losc 83 - 84 - resets: 85 - maxItems: 1 86 82 87 83 gpio-controller: true 88 84 interrupt-controller: true ··· 178 180 interrupts: 179 181 minItems: 7 180 182 maxItems: 7 183 + 184 + - if: 185 + properties: 186 + compatible: 187 + enum: 188 + - allwinner,sun20i-d1-pinctrl 189 + 190 + then: 191 + properties: 192 + interrupts: 193 + minItems: 6 194 + maxItems: 6 181 195 182 196 - if: 183 197 properties:
+1 -1
Documentation/devicetree/bindings/pinctrl/nuvoton,wpcm450-pinctrl.yaml
··· 152 152 pinctrl-names = "default"; 153 153 pinctrl-0 = <&pinctrl_uid>, <&pinmux_uid>; 154 154 155 - uid { 155 + button-uid { 156 156 label = "UID"; 157 157 linux,code = <102>; 158 158 gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
+5 -26
Documentation/devicetree/bindings/pinctrl/pinctrl-mt8186.yaml
··· 28 28 gpio-ranges: 29 29 maxItems: 1 30 30 31 + gpio-line-names: true 32 + 31 33 reg: 32 34 description: | 33 35 Physical address base for gpio base registers. There are 8 different GPIO ··· 107 105 drive-strength: 108 106 enum: [2, 4, 6, 8, 10, 12, 14, 16] 109 107 110 - mediatek,drive-strength-adv: 111 - description: | 112 - Describe the specific driving setup property. 113 - For I2C pins, the existing generic driving setup can only support 114 - 2/4/6/8/10/12/14/16mA driving. But in specific driving setup, they 115 - can support 0.125/0.25/0.5/1mA adjustment. If we enable specific 116 - driving setup, the existing generic setup will be disabled. 117 - The specific driving setup is controlled by E1E0EN. 118 - When E1=0/E0=0, the strength is 0.125mA. 119 - When E1=0/E0=1, the strength is 0.25mA. 120 - When E1=1/E0=0, the strength is 0.5mA. 121 - When E1=1/E0=1, the strength is 1mA. 122 - EN is used to enable or disable the specific driving setup. 123 - Valid arguments are described as below: 124 - 0: (E1, E0, EN) = (0, 0, 0) 125 - 1: (E1, E0, EN) = (0, 0, 1) 126 - 2: (E1, E0, EN) = (0, 1, 0) 127 - 3: (E1, E0, EN) = (0, 1, 1) 128 - 4: (E1, E0, EN) = (1, 0, 0) 129 - 5: (E1, E0, EN) = (1, 0, 1) 130 - 6: (E1, E0, EN) = (1, 1, 0) 131 - 7: (E1, E0, EN) = (1, 1, 1) 132 - So the valid arguments are from 0 to 7. 133 - $ref: /schemas/types.yaml#/definitions/uint32 134 - enum: [0, 1, 2, 3, 4, 5, 6, 7] 108 + drive-strength-microamp: 109 + enum: [125, 250, 500, 1000] 135 110 136 111 bias-pull-down: 137 112 oneOf: ··· 270 291 pinmux = <PINMUX_GPIO127__FUNC_SCL0>, 271 292 <PINMUX_GPIO128__FUNC_SDA0>; 272 293 bias-pull-up = <MTK_PULL_SET_RSEL_001>; 273 - mediatek,drive-strength-adv = <7>; 294 + drive-strength-microamp = <1000>; 274 295 }; 275 296 }; 276 297 };
+22 -38
Documentation/devicetree/bindings/pinctrl/pinctrl-mt8192.yaml
··· 80 80 dt-bindings/pinctrl/mt65xx.h. It can only support 2/4/6/8/10/12/14/16mA in mt8192. 81 81 enum: [2, 4, 6, 8, 10, 12, 14, 16] 82 82 83 - mediatek,drive-strength-adv: 84 - description: | 85 - Describe the specific driving setup property. 86 - For I2C pins, the existing generic driving setup can only support 87 - 2/4/6/8/10/12/14/16mA driving. But in specific driving setup, they 88 - can support 0.125/0.25/0.5/1mA adjustment. If we enable specific 89 - driving setup, the existing generic setup will be disabled. 90 - The specific driving setup is controlled by E1E0EN. 91 - When E1=0/E0=0, the strength is 0.125mA. 92 - When E1=0/E0=1, the strength is 0.25mA. 93 - When E1=1/E0=0, the strength is 0.5mA. 94 - When E1=1/E0=1, the strength is 1mA. 95 - EN is used to enable or disable the specific driving setup. 96 - Valid arguments are described as below: 97 - 0: (E1, E0, EN) = (0, 0, 0) 98 - 1: (E1, E0, EN) = (0, 0, 1) 99 - 2: (E1, E0, EN) = (0, 1, 0) 100 - 3: (E1, E0, EN) = (0, 1, 1) 101 - 4: (E1, E0, EN) = (1, 0, 0) 102 - 5: (E1, E0, EN) = (1, 0, 1) 103 - 6: (E1, E0, EN) = (1, 1, 0) 104 - 7: (E1, E0, EN) = (1, 1, 1) 105 - So the valid arguments are from 0 to 7. 106 - $ref: /schemas/types.yaml#/definitions/uint32 107 - enum: [0, 1, 2, 3, 4, 5, 6, 7] 83 + drive-strength-microamp: 84 + enum: [125, 250, 500, 1000] 108 85 109 - mediatek,pull-up-adv: 110 - description: | 111 - Pull up settings for 2 pull resistors, R0 and R1. User can 112 - configure those special pins. Valid arguments are described as below: 113 - 0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled. 114 - 1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled. 115 - 2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled. 116 - 3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled. 117 - $ref: /schemas/types.yaml#/definitions/uint32 118 - enum: [0, 1, 2, 3] 86 + bias-pull-down: 87 + oneOf: 88 + - type: boolean 89 + description: normal pull down. 90 + - enum: [100, 101, 102, 103] 91 + description: PUPD/R1/R0 pull down type. See MTK_PUPD_SET_R1R0_ 92 + defines in dt-bindings/pinctrl/mt65xx.h. 93 + - enum: [200, 201, 202, 203] 94 + description: RSEL pull down type. See MTK_PULL_SET_RSEL_ 95 + defines in dt-bindings/pinctrl/mt65xx.h. 119 96 120 - bias-pull-down: true 121 - 122 - bias-pull-up: true 97 + bias-pull-up: 98 + oneOf: 99 + - type: boolean 100 + description: normal pull up. 101 + - enum: [100, 101, 102, 103] 102 + description: PUPD/R1/R0 pull up type. See MTK_PUPD_SET_R1R0_ 103 + defines in dt-bindings/pinctrl/mt65xx.h. 104 + - enum: [200, 201, 202, 203] 105 + description: RSEL pull up type. See MTK_PULL_SET_RSEL_ 106 + defines in dt-bindings/pinctrl/mt65xx.h. 123 107 124 108 bias-disable: true 125 109
+10 -31
Documentation/devicetree/bindings/pinctrl/pinctrl-mt8195.yaml
··· 29 29 description: gpio valid number range. 30 30 maxItems: 1 31 31 32 + gpio-line-names: true 33 + 32 34 reg: 33 35 description: | 34 36 Physical address base for gpio base registers. There are 8 GPIO ··· 51 49 description: The interrupt outputs to sysirq. 52 50 maxItems: 1 53 51 54 - mediatek,rsel_resistance_in_si_unit: 52 + mediatek,rsel-resistance-in-si-unit: 55 53 type: boolean 56 54 description: | 57 55 Identifying i2c pins pull up/down type which is RSEL. It can support ··· 100 98 drive-strength: 101 99 enum: [2, 4, 6, 8, 10, 12, 14, 16] 102 100 103 - mediatek,drive-strength-adv: 104 - description: | 105 - Describe the specific driving setup property. 106 - For I2C pins, the existing generic driving setup can only support 107 - 2/4/6/8/10/12/14/16mA driving. But in specific driving setup, they 108 - can support 0.125/0.25/0.5/1mA adjustment. If we enable specific 109 - driving setup, the existing generic setup will be disabled. 110 - The specific driving setup is controlled by E1E0EN. 111 - When E1=0/E0=0, the strength is 0.125mA. 112 - When E1=0/E0=1, the strength is 0.25mA. 113 - When E1=1/E0=0, the strength is 0.5mA. 114 - When E1=1/E0=1, the strength is 1mA. 115 - EN is used to enable or disable the specific driving setup. 116 - Valid arguments are described as below: 117 - 0: (E1, E0, EN) = (0, 0, 0) 118 - 1: (E1, E0, EN) = (0, 0, 1) 119 - 2: (E1, E0, EN) = (0, 1, 0) 120 - 3: (E1, E0, EN) = (0, 1, 1) 121 - 4: (E1, E0, EN) = (1, 0, 0) 122 - 5: (E1, E0, EN) = (1, 0, 1) 123 - 6: (E1, E0, EN) = (1, 1, 0) 124 - 7: (E1, E0, EN) = (1, 1, 1) 125 - So the valid arguments are from 0 to 7. 126 - $ref: /schemas/types.yaml#/definitions/uint32 127 - enum: [0, 1, 2, 3, 4, 5, 6, 7] 101 + drive-strength-microamp: 102 + enum: [125, 250, 500, 1000] 128 103 129 104 bias-pull-down: 130 105 oneOf: ··· 121 142 "MTK_PUPD_SET_R1R0_11" define in mt8195. 122 143 For pull down type is RSEL, it can add RSEL define & resistance 123 144 value(ohm) to set different resistance by identifying property 124 - "mediatek,rsel_resistance_in_si_unit". 145 + "mediatek,rsel-resistance-in-si-unit". 125 146 It can support "MTK_PULL_SET_RSEL_000" & "MTK_PULL_SET_RSEL_001" 126 147 & "MTK_PULL_SET_RSEL_010" & "MTK_PULL_SET_RSEL_011" 127 148 & "MTK_PULL_SET_RSEL_100" & "MTK_PULL_SET_RSEL_101" ··· 140 161 }; 141 162 An example of using si unit resistance value(ohm): 142 163 &pio { 143 - mediatek,rsel_resistance_in_si_unit; 164 + mediatek,rsel-resistance-in-si-unit; 144 165 } 145 166 pincontroller { 146 167 i2c0_pin { ··· 169 190 "MTK_PUPD_SET_R1R0_11" define in mt8195. 170 191 For pull up type is RSEL, it can add RSEL define & resistance 171 192 value(ohm) to set different resistance by identifying property 172 - "mediatek,rsel_resistance_in_si_unit". 193 + "mediatek,rsel-resistance-in-si-unit". 173 194 It can support "MTK_PULL_SET_RSEL_000" & "MTK_PULL_SET_RSEL_001" 174 195 & "MTK_PULL_SET_RSEL_010" & "MTK_PULL_SET_RSEL_011" 175 196 & "MTK_PULL_SET_RSEL_100" & "MTK_PULL_SET_RSEL_101" ··· 188 209 }; 189 210 An example of using si unit resistance value(ohm): 190 211 &pio { 191 - mediatek,rsel_resistance_in_si_unit; 212 + mediatek,rsel-resistance-in-si-unit; 192 213 } 193 214 pincontroller { 194 215 i2c0-pins { ··· 281 302 pinmux = <PINMUX_GPIO8__FUNC_SDA0>, 282 303 <PINMUX_GPIO9__FUNC_SCL0>; 283 304 bias-disable; 284 - mediatek,drive-strength-adv = <7>; 305 + drive-strength-microamp = <1000>; 285 306 }; 286 307 }; 287 308 };
+152
Documentation/devicetree/bindings/pinctrl/qcom,msm8909-tlmm.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,msm8909-tlmm.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Qualcomm Technologies, Inc. MSM8909 TLMM block 8 + 9 + maintainers: 10 + - Stephan Gerhold <stephan@gerhold.net> 11 + 12 + description: | 13 + This binding describes the Top Level Mode Multiplexer (TLMM) block found 14 + in the MSM8909 platform. 15 + 16 + allOf: 17 + - $ref: /schemas/pinctrl/qcom,tlmm-common.yaml# 18 + 19 + properties: 20 + compatible: 21 + const: qcom,msm8909-tlmm 22 + 23 + reg: 24 + maxItems: 1 25 + 26 + interrupts: true 27 + interrupt-controller: true 28 + '#interrupt-cells': true 29 + gpio-controller: true 30 + gpio-reserved-ranges: true 31 + '#gpio-cells': true 32 + gpio-ranges: true 33 + wakeup-parent: true 34 + 35 + required: 36 + - compatible 37 + - reg 38 + 39 + additionalProperties: false 40 + 41 + patternProperties: 42 + '-state$': 43 + oneOf: 44 + - $ref: "#/$defs/qcom-msm8909-tlmm-state" 45 + - patternProperties: 46 + ".*": 47 + $ref: "#/$defs/qcom-msm8909-tlmm-state" 48 + 49 + $defs: 50 + qcom-msm8909-tlmm-state: 51 + type: object 52 + description: 53 + Pinctrl node's client devices use subnodes for desired pin configuration. 54 + Client device subnodes use below standard properties. 55 + $ref: "qcom,tlmm-common.yaml#/$defs/qcom-tlmm-state" 56 + 57 + properties: 58 + pins: 59 + description: 60 + List of gpio pins affected by the properties specified in this 61 + subnode. 62 + items: 63 + oneOf: 64 + - pattern: "^gpio([0-9]|[1-9][0-9]|10[0-9]|11[0-7])$" 65 + - enum: [ sdc1_clk, sdc1_cmd, sdc1_data, sdc2_clk, sdc2_cmd, 66 + sdc2_data, qdsd_clk, qdsd_cmd, qdsd_data0, qdsd_data1, 67 + qdsd_data2, qdsd_data3 ] 68 + minItems: 1 69 + maxItems: 16 70 + 71 + function: 72 + description: 73 + Specify the alternative function to be configured for the specified 74 + pins. 75 + enum: [ adsp_ext, atest_bbrx0, atest_bbrx1, atest_char, atest_char0, 76 + atest_char1, atest_char2, atest_char3, atest_combodac, 77 + atest_gpsadc0, atest_gpsadc1, atest_wlan0, atest_wlan1, 78 + bimc_dte0, bimc_dte1, blsp_i2c1, blsp_i2c2, blsp_i2c3, 79 + blsp_i2c4, blsp_i2c5, blsp_i2c6, blsp_spi1, blsp_spi1_cs1, 80 + blsp_spi1_cs2, blsp_spi1_cs3, blsp_spi2, blsp_spi2_cs1, 81 + blsp_spi2_cs2, blsp_spi2_cs3, blsp_spi3, blsp_spi3_cs1, 82 + blsp_spi3_cs2, blsp_spi3_cs3, blsp_spi4, blsp_spi5, blsp_spi6, 83 + blsp_uart1, blsp_uart2, blsp_uim1, blsp_uim2, cam_mclk, 84 + cci_async, cci_timer0, cci_timer1, cci_timer2, cdc_pdm0, 85 + dbg_out, dmic0_clk, dmic0_data, ebi0_wrcdc, ebi2_a, ebi2_lcd, 86 + ext_lpass, gcc_gp1_clk_a, gcc_gp1_clk_b, gcc_gp2_clk_a, 87 + gcc_gp2_clk_b, gcc_gp3_clk_a, gcc_gp3_clk_b, gcc_plltest, gpio, 88 + gsm0_tx, ldo_en, ldo_update, m_voc, mdp_vsync, modem_tsync, 89 + nav_pps, nav_tsync, pa_indicator, pbs0, pbs1, pbs2, 90 + pri_mi2s_data0_a, pri_mi2s_data0_b, pri_mi2s_data1_a, 91 + pri_mi2s_data1_b, pri_mi2s_mclk_a, pri_mi2s_mclk_b, 92 + pri_mi2s_sck_a, pri_mi2s_sck_b, pri_mi2s_ws_a, pri_mi2s_ws_b, 93 + prng_rosc, pwr_crypto_enabled_a, pwr_crypto_enabled_b, 94 + pwr_modem_enabled_a, pwr_modem_enabled_b, pwr_nav_enabled_a, 95 + pwr_nav_enabled_b, qdss_cti_trig_in_a0, qdss_cti_trig_in_a1, 96 + qdss_cti_trig_in_b0, qdss_cti_trig_in_b1, qdss_cti_trig_out_a0, 97 + qdss_cti_trig_out_a1, qdss_cti_trig_out_b0, 98 + qdss_cti_trig_out_b1, qdss_traceclk_a, qdss_tracectl_a, 99 + qdss_tracedata_a, qdss_tracedata_b, sd_write, sec_mi2s, 100 + smb_int, ssbi0, ssbi1, uim1_clk, uim1_data, uim1_present, 101 + uim1_reset, uim2_clk, uim2_data, uim2_present, uim2_reset, 102 + uim3_clk, uim3_data, uim3_present, uim3_reset, uim_batt, 103 + wcss_bt, wcss_fm, wcss_wlan ] 104 + 105 + bias-disable: true 106 + bias-pull-down: true 107 + bias-pull-up: true 108 + drive-strength: true 109 + input-enable: true 110 + output-high: true 111 + output-low: true 112 + 113 + required: 114 + - pins 115 + - function 116 + 117 + additionalProperties: false 118 + 119 + examples: 120 + - | 121 + #include <dt-bindings/interrupt-controller/arm-gic.h> 122 + 123 + pinctrl@1000000 { 124 + compatible = "qcom,msm8909-tlmm"; 125 + reg = <0x1000000 0x300000>; 126 + interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>; 127 + gpio-controller; 128 + #gpio-cells = <2>; 129 + gpio-ranges = <&tlmm 0 0 117>; 130 + interrupt-controller; 131 + #interrupt-cells = <2>; 132 + 133 + gpio-wo-subnode-state { 134 + pins = "gpio1"; 135 + function = "gpio"; 136 + }; 137 + 138 + uart-w-subnodes-state { 139 + rx { 140 + pins = "gpio4"; 141 + function = "blsp_uart1"; 142 + bias-pull-up; 143 + }; 144 + 145 + tx { 146 + pins = "gpio5"; 147 + function = "blsp_uart1"; 148 + bias-disable; 149 + }; 150 + }; 151 + }; 152 + ...
+4
Documentation/devicetree/bindings/pinctrl/qcom,pmic-gpio.yaml
··· 52 52 - qcom,pmi8998-gpio 53 53 - qcom,pmk8350-gpio 54 54 - qcom,pmm8155au-gpio 55 + - qcom,pmp8074-gpio 55 56 - qcom,pmr735a-gpio 56 57 - qcom,pmr735b-gpio 57 58 - qcom,pms405-gpio ··· 159 158 compatible: 160 159 contains: 161 160 enum: 161 + - qcom,pm8226-gpio 162 162 - qcom,pm8350b-gpio 163 163 - qcom,pm8950-gpio 164 164 then: ··· 235 233 - qcom,pm8150b-gpio 236 234 - qcom,pm8150l-gpio 237 235 - qcom,pmc8180c-gpio 236 + - qcom,pmp8074-gpio 238 237 - qcom,pms405-gpio 239 238 then: 240 239 properties: ··· 418 415 - gpio1-gpio10 for pmi8994 419 416 - gpio1-gpio4 for pmk8350 420 417 - gpio1-gpio10 for pmm8155au 418 + - gpio1-gpio12 for pmp8074 (holes on gpio1 and gpio12) 421 419 - gpio1-gpio4 for pmr735a 422 420 - gpio1-gpio4 for pmr735b 423 421 - gpio1-gpio12 for pms405 (holes on gpio1, gpio9
+5
Documentation/devicetree/bindings/pinctrl/qcom,sc7280-lpass-lpi-pinctrl.yaml
··· 19 19 compatible: 20 20 const: qcom,sc7280-lpass-lpi-pinctrl 21 21 22 + qcom,adsp-bypass-mode: 23 + description: 24 + Tells ADSP is in bypass mode. 25 + type: boolean 26 + 22 27 reg: 23 28 minItems: 2 24 29 maxItems: 2
+158
Documentation/devicetree/bindings/pinctrl/qcom,sm6375-tlmm.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,sm6375-tlmm.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Qualcomm Technologies, Inc. SM6375 TLMM block 8 + 9 + maintainers: 10 + - Konrad Dybcio <konrad.dybcio@somainline.org> 11 + 12 + description: | 13 + This binding describes the Top Level Mode Multiplexer (TLMM) block found 14 + in the SM6375 platform. 15 + 16 + allOf: 17 + - $ref: "pinctrl.yaml#" 18 + - $ref: /schemas/pinctrl/qcom,tlmm-common.yaml# 19 + 20 + properties: 21 + compatible: 22 + const: qcom,sm6375-tlmm 23 + 24 + reg: 25 + maxItems: 1 26 + 27 + interrupts: true 28 + interrupt-controller: true 29 + '#interrupt-cells': true 30 + gpio-controller: true 31 + gpio-reserved-ranges: true 32 + '#gpio-cells': true 33 + gpio-ranges: true 34 + wakeup-parent: true 35 + 36 + required: 37 + - compatible 38 + - reg 39 + 40 + additionalProperties: false 41 + 42 + patternProperties: 43 + '-state$': 44 + oneOf: 45 + - $ref: "#/$defs/qcom-sm6375-tlmm-state" 46 + - patternProperties: 47 + ".*": 48 + $ref: "#/$defs/qcom-sm6375-tlmm-state" 49 + 50 + $defs: 51 + qcom-sm6375-tlmm-state: 52 + type: object 53 + description: 54 + Pinctrl node's client devices use subnodes for desired pin configuration. 55 + Client device subnodes use below standard properties. 56 + $ref: "qcom,tlmm-common.yaml#/$defs/qcom-tlmm-state" 57 + 58 + properties: 59 + pins: 60 + description: 61 + List of gpio pins affected by the properties specified in this 62 + subnode. 63 + items: 64 + oneOf: 65 + - pattern: "^gpio([0-9]|[1-9][0-9]|1[0-4][0-9]|15[0-6])$" 66 + - enum: [ ufs_reset, sdc1_clk, sdc1_cmd, sdc1_data, sdc2_clk, 67 + sdc2_cmd, sdc2_data ] 68 + minItems: 1 69 + maxItems: 36 70 + 71 + function: 72 + description: 73 + Specify the alternative function to be configured for the specified 74 + pins. 75 + 76 + enum: [ adsp_ext, agera_pll, atest_char, atest_char0, atest_char1, 77 + atest_char2, atest_char3, atest_tsens, atest_tsens2, 78 + atest_usb1, atest_usb10, atest_usb11, atest_usb12, 79 + atest_usb13, atest_usb2, atest_usb20, atest_usb21, 80 + atest_usb22, atest_usb23, audio_ref, btfm_slimbus, cam_mclk, 81 + cci_async, cci_i2c, cci_timer0, cci_timer1, cci_timer2, 82 + cci_timer3, cci_timer4, cri_trng, dbg_out, ddr_bist, 83 + ddr_pxi0, ddr_pxi1, ddr_pxi2, ddr_pxi3, dp_hot, edp_lcd, 84 + gcc_gp1, gcc_gp2, gcc_gp3, gp_pdm0, gp_pdm1, gp_pdm2, gpio, 85 + gps_tx, ibi_i3c, jitter_bist, ldo_en, ldo_update, lpass_ext, 86 + m_voc, mclk, mdp_vsync, mdp_vsync0, mdp_vsync1, mdp_vsync2, 87 + mdp_vsync3, mi2s_0, mi2s_1, mi2s_2, mss_lte, nav_gpio, 88 + nav_pps, pa_indicator, phase_flag0, phase_flag1, phase_flag10, 89 + phase_flag11, phase_flag12, phase_flag13, phase_flag14, 90 + phase_flag15, phase_flag16, phase_flag17, phase_flag18, 91 + phase_flag19, phase_flag2, phase_flag20, phase_flag21, 92 + phase_flag22, phase_flag23, phase_flag24, phase_flag25, 93 + phase_flag26, phase_flag27, phase_flag28, phase_flag29, 94 + phase_flag3, phase_flag30, phase_flag31, phase_flag4, 95 + phase_flag5, phase_flag6, phase_flag7, phase_flag8, 96 + phase_flag9, pll_bist, pll_bypassnl, pll_clk, pll_reset, 97 + prng_rosc0, prng_rosc1, prng_rosc2, prng_rosc3, qdss_cti, 98 + qdss_gpio, qdss_gpio0, qdss_gpio1, qdss_gpio10, qdss_gpio11, 99 + qdss_gpio12, qdss_gpio13, qdss_gpio14, qdss_gpio15, 100 + qdss_gpio2, qdss_gpio3, qdss_gpio4, qdss_gpio5, qdss_gpio6, 101 + qdss_gpio7, qdss_gpio8, qdss_gpio9, qlink0_enable, 102 + qlink0_request, qlink0_wmss, qlink1_enable, qlink1_request, 103 + qlink1_wmss, qup00, qup01, qup02, qup10, qup11_f1, qup11_f2, 104 + qup12, qup13_f1, qup13_f2, qup14, sd_write, sdc1_tb, sdc2_tb, 105 + sp_cmu, tgu_ch0, tgu_ch1, tgu_ch2, tgu_ch3, tsense_pwm1, 106 + tsense_pwm2, uim1_clk, uim1_data, uim1_present, uim1_reset, 107 + uim2_clk, uim2_data, uim2_present, uim2_reset, usb2phy_ac, 108 + usb_phy, vfr_1, vsense_trigger, wlan1_adc0, wlan1_adc1, 109 + wlan2_adc0, wlan2_adc1 ] 110 + 111 + 112 + bias-disable: true 113 + bias-pull-down: true 114 + bias-pull-up: true 115 + drive-strength: true 116 + input-enable: true 117 + output-high: true 118 + output-low: true 119 + 120 + required: 121 + - pins 122 + - function 123 + 124 + additionalProperties: false 125 + 126 + examples: 127 + - | 128 + #include <dt-bindings/interrupt-controller/arm-gic.h> 129 + pinctrl@500000 { 130 + compatible = "qcom,sm6375-tlmm"; 131 + reg = <0x00500000 0x800000>; 132 + interrupts = <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>; 133 + gpio-controller; 134 + #gpio-cells = <2>; 135 + interrupt-controller; 136 + #interrupt-cells = <2>; 137 + gpio-ranges = <&tlmm 0 0 157>; 138 + 139 + gpio-wo-subnode-state { 140 + pins = "gpio1"; 141 + function = "gpio"; 142 + }; 143 + 144 + uart-w-subnodes-state { 145 + rx { 146 + pins = "gpio18"; 147 + function = "qup13_f2"; 148 + bias-pull-up; 149 + }; 150 + 151 + tx { 152 + pins = "gpio19"; 153 + function = "qup13_f2"; 154 + bias-disable; 155 + }; 156 + }; 157 + }; 158 + ...
+1
Documentation/devicetree/bindings/pinctrl/renesas,pfc.yaml
··· 45 45 - renesas,pfc-r8a77995 # R-Car D3 46 46 - renesas,pfc-r8a779a0 # R-Car V3U 47 47 - renesas,pfc-r8a779f0 # R-Car S4-8 48 + - renesas,pfc-r8a779g0 # R-Car V4H 48 49 - renesas,pfc-sh73a0 # SH-Mobile AG5 49 50 50 51 reg:
+170
Documentation/devicetree/bindings/pinctrl/renesas,rzv2m-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/renesas,rzv2m-pinctrl.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Renesas RZ/V2M combined Pin and GPIO controller 8 + 9 + maintainers: 10 + - Geert Uytterhoeven <geert+renesas@glider.be> 11 + - Phil Edworthy <phil.edworthy@renesas.com> 12 + 13 + description: 14 + The Renesas RZ/V2M SoC features a combined Pin and GPIO controller. 15 + Pin multiplexing and GPIO configuration is performed on a per-pin basis. 16 + Each port features up to 16 pins, each of them configurable for GPIO function 17 + (port mode) or in alternate function mode. 18 + Up to 8 different alternate function modes exist for each single pin. 19 + 20 + properties: 21 + compatible: 22 + const: renesas,r9a09g011-pinctrl # RZ/V2M 23 + 24 + reg: 25 + maxItems: 1 26 + 27 + gpio-controller: true 28 + 29 + '#gpio-cells': 30 + const: 2 31 + description: 32 + The first cell contains the global GPIO port index, constructed using the 33 + RZV2M_GPIO() helper macro in <dt-bindings/pinctrl/rzv2m-pinctrl.h> and the 34 + second cell represents consumer flag as mentioned in ../gpio/gpio.txt 35 + E.g. "RZV2M_GPIO(8, 1)" for P8_1. 36 + 37 + gpio-ranges: 38 + maxItems: 1 39 + 40 + interrupts: 41 + description: INEXINT[0..38] corresponding to individual pin inputs. 42 + maxItems: 39 43 + 44 + clocks: 45 + maxItems: 1 46 + 47 + power-domains: 48 + maxItems: 1 49 + 50 + resets: 51 + maxItems: 1 52 + 53 + additionalProperties: 54 + anyOf: 55 + - type: object 56 + allOf: 57 + - $ref: pincfg-node.yaml# 58 + - $ref: pinmux-node.yaml# 59 + 60 + description: 61 + Pin controller client devices use pin configuration subnodes (children 62 + and grandchildren) for desired pin configuration. 63 + Client device subnodes use below standard properties. 64 + 65 + properties: 66 + phandle: true 67 + pinmux: 68 + description: 69 + Values are constructed from GPIO port number, pin number, and 70 + alternate function configuration number using the RZV2M_PORT_PINMUX() 71 + helper macro in <dt-bindings/pinctrl/rzv2m-pinctrl.h>. 72 + pins: true 73 + bias-disable: true 74 + bias-pull-down: true 75 + bias-pull-up: true 76 + drive-strength-microamp: 77 + # Superset of supported values 78 + enum: [ 1600, 1800, 2000, 3200, 3800, 4000, 6400, 7800, 8000, 79 + 9000, 9600, 11000, 12000, 13000, 18000 ] 80 + slew-rate: 81 + description: 0 is slow slew rate, 1 is fast slew rate 82 + enum: [ 0, 1 ] 83 + gpio-hog: true 84 + gpios: true 85 + output-high: true 86 + output-low: true 87 + line-name: true 88 + 89 + - type: object 90 + properties: 91 + phandle: true 92 + 93 + additionalProperties: 94 + $ref: "#/additionalProperties/anyOf/0" 95 + 96 + allOf: 97 + - $ref: "pinctrl.yaml#" 98 + 99 + required: 100 + - compatible 101 + - reg 102 + - gpio-controller 103 + - '#gpio-cells' 104 + - gpio-ranges 105 + - interrupts 106 + - clocks 107 + - power-domains 108 + - resets 109 + 110 + examples: 111 + - | 112 + #include <dt-bindings/pinctrl/rzv2m-pinctrl.h> 113 + #include <dt-bindings/clock/r9a09g011-cpg.h> 114 + #include <dt-bindings/interrupt-controller/arm-gic.h> 115 + 116 + pinctrl: pinctrl@b6250000 { 117 + compatible = "renesas,r9a09g011-pinctrl"; 118 + reg = <0xb6250000 0x800>; 119 + 120 + gpio-controller; 121 + #gpio-cells = <2>; 122 + gpio-ranges = <&pinctrl 0 0 352>; 123 + interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>, 124 + <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>, 125 + <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>, 126 + <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>, 127 + <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>, 128 + <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>, 129 + <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>, 130 + <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>, 131 + <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>, 132 + <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>, 133 + <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>, 134 + <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>, 135 + <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>, 136 + <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>, 137 + <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>, 138 + <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>, 139 + <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>, 140 + <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>, 141 + <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>, 142 + <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>, 143 + <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>, 144 + <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>, 145 + <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>, 146 + <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>, 147 + <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>, 148 + <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>, 149 + <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>, 150 + <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>, 151 + <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>, 152 + <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>, 153 + <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>, 154 + <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>, 155 + <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>, 156 + <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>, 157 + <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>, 158 + <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>, 159 + <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>, 160 + <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>, 161 + <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>; 162 + clocks = <&cpg CPG_MOD R9A09G011_PFC_PCLK>; 163 + resets = <&cpg R9A09G011_PFC_PRESETN>; 164 + power-domains = <&cpg>; 165 + 166 + i2c2_pins: i2c2 { 167 + pinmux = <RZV2M_PORT_PINMUX(3, 8, 2)>, /* SDA */ 168 + <RZV2M_PORT_PINMUX(3, 9, 2)>; /* SCL */ 169 + }; 170 + };
+2 -2
Documentation/devicetree/bindings/pinctrl/st,stm32-pinctrl.yaml
··· 59 59 patternProperties: 60 60 '^gpio@[0-9a-f]*$': 61 61 type: object 62 + additionalProperties: false 62 63 properties: 63 64 gpio-controller: true 64 65 '#gpio-cells': ··· 69 68 maxItems: 1 70 69 clocks: 71 70 maxItems: 1 72 - reset: 73 - minItems: 1 71 + resets: 74 72 maxItems: 1 75 73 gpio-ranges: 76 74 minItems: 1
+4 -1
Documentation/devicetree/bindings/pinctrl/sunplus,sp7021-pinctrl.yaml
··· 288 288 289 289 additionalProperties: false 290 290 291 + allOf: 292 + - $ref: "pinctrl.yaml#" 293 + 291 294 examples: 292 295 - | 293 296 #include <dt-bindings/pinctrl/sppctl-sp7021.h> 294 297 295 - pinctl@9c000100 { 298 + pinctrl@9c000100 { 296 299 compatible = "sunplus,sp7021-pctl"; 297 300 reg = <0x9c000100 0x100>, <0x9c000300 0x100>, 298 301 <0x9c0032e4 0x1c>, <0x9c000080 0x20>;
+4
Documentation/devicetree/bindings/pinctrl/xlnx,zynqmp-pinctrl.yaml
··· 274 274 slew-rate: 275 275 enum: [0, 1] 276 276 277 + output-enable: 278 + description: 279 + This will internally disable the tri-state for MIO pins. 280 + 277 281 drive-strength: 278 282 description: 279 283 Selects the drive strength for MIO pins, in mA.
+1
MAINTAINERS
··· 16061 16061 F: Documentation/devicetree/bindings/pinctrl/ 16062 16062 F: Documentation/driver-api/pin-control.rst 16063 16063 F: drivers/pinctrl/ 16064 + F: include/dt-bindings/pinctrl/ 16064 16065 F: include/linux/pinctrl/ 16065 16066 16066 16067 PIN CONTROLLER - AMD
+1561
arch/arm/boot/dts/imxrt1170-pinfunc.h
··· 1 + /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ 2 + /* 3 + * Copyright (C) 2021 4 + * Author(s): Jesse Taube <Mr.Bossman075@gmail.com> 5 + */ 6 + 7 + #ifndef _DT_BINDINGS_PINCTRL_IMXRT1170_PINFUNC_H 8 + #define _DT_BINDINGS_PINCTRL_IMXRT1170_PINFUNC_H 9 + 10 + #define IMX_PAD_SION 0x40000000 11 + 12 + /* 13 + * The pin function ID is a tuple of 14 + * <mux_reg conf_reg input_reg mux_mode input_val> 15 + */ 16 + 17 + #define IOMUXC_GPIO_LPSR_00_FLEXCAN3_TX 0x000 0x040 0x0 0x0 0x0 18 + #define IOMUXC_GPIO_LPSR_00_MIC_CLK 0x000 0x040 0x0 0x1 0x0 19 + #define IOMUXC_GPIO_LPSR_00_MQS_RIGHT 0x000 0x040 0x0 0x2 0x0 20 + #define IOMUXC_GPIO_LPSR_00_ARM_CM4_EVENTO 0x000 0x040 0x0 0x3 0x0 21 + #define IOMUXC_GPIO_LPSR_00_GPIO_MUX6_IO00 0x000 0x040 0x0 0x5 0x0 22 + #define IOMUXC_GPIO_LPSR_00_LPUART12_TXD 0x000 0x040 0x0B0 0x6 0x0 23 + #define IOMUXC_GPIO_LPSR_00_SAI4_MCLK 0x000 0x040 0x0C8 0x7 0x0 24 + #define IOMUXC_GPIO_LPSR_00_GPIO12_IO00 0x000 0x040 0x0 0xA 0x0 25 + 26 + #define IOMUXC_GPIO_LPSR_01_FLEXCAN3_RX 0x004 0x044 0x080 0x0 0x0 27 + #define IOMUXC_GPIO_LPSR_01_MIC_BITSTREAM0 0x004 0x044 0x0B4 0x1 0x0 28 + #define IOMUXC_GPIO_LPSR_01_MQS_LEFT 0x004 0x044 0x0 0x2 0x0 29 + #define IOMUXC_GPIO_LPSR_01_ARM_CM4_EVENTI 0x004 0x044 0x0 0x3 0x0 30 + #define IOMUXC_GPIO_LPSR_01_GPIO_MUX6_IO01 0x004 0x044 0x0 0x5 0x0 31 + #define IOMUXC_GPIO_LPSR_01_LPUART12_RXD 0x004 0x044 0x0AC 0x6 0x0 32 + #define IOMUXC_GPIO_LPSR_01_GPIO12_IO01 0x004 0x044 0x0 0xA 0x0 33 + 34 + #define IOMUXC_GPIO_LPSR_02_GPIO12_IO02 0x008 0x048 0x0 0xA 0x0 35 + #define IOMUXC_GPIO_LPSR_02_SRC_BOOT_MODE00 0x008 0x048 0x0 0x0 0x0 36 + #define IOMUXC_GPIO_LPSR_02_LPSPI5_SCK 0x008 0x048 0x098 0x1 0x0 37 + #define IOMUXC_GPIO_LPSR_02_SAI4_TX_DATA 0x008 0x048 0x0 0x2 0x0 38 + #define IOMUXC_GPIO_LPSR_02_MQS_RIGHT 0x008 0x048 0x0 0x3 0x0 39 + #define IOMUXC_GPIO_LPSR_02_GPIO_MUX6_IO02 0x008 0x048 0x0 0x5 0x0 40 + 41 + #define IOMUXC_GPIO_LPSR_03_SRC_BOOT_MODE01 0x00C 0x04C 0x0 0x0 0x0 42 + #define IOMUXC_GPIO_LPSR_03_LPSPI5_PCS0 0x00C 0x04C 0x094 0x1 0x0 43 + #define IOMUXC_GPIO_LPSR_03_SAI4_TX_SYNC 0x00C 0x04C 0x0DC 0x2 0x0 44 + #define IOMUXC_GPIO_LPSR_03_MQS_LEFT 0x00C 0x04C 0x0 0x3 0x0 45 + #define IOMUXC_GPIO_LPSR_03_GPIO_MUX6_IO03 0x00C 0x04C 0x0 0x5 0x0 46 + #define IOMUXC_GPIO_LPSR_03_GPIO12_IO03 0x00C 0x04C 0x0 0xA 0x0 47 + 48 + #define IOMUXC_GPIO_LPSR_04_LPI2C5_SDA 0x010 0x050 0x088 0x0 0x0 49 + #define IOMUXC_GPIO_LPSR_04_LPSPI5_SOUT 0x010 0x050 0x0A0 0x1 0x0 50 + #define IOMUXC_GPIO_LPSR_04_SAI4_TX_BCLK 0x010 0x050 0x0D8 0x2 0x0 51 + #define IOMUXC_GPIO_LPSR_04_LPUART12_RTS_B 0x010 0x050 0x0 0x3 0x0 52 + #define IOMUXC_GPIO_LPSR_04_GPIO_MUX6_IO04 0x010 0x050 0x0 0x5 0x0 53 + #define IOMUXC_GPIO_LPSR_04_LPUART11_TXD 0x010 0x050 0x0A8 0x6 0x0 54 + #define IOMUXC_GPIO_LPSR_04_GPIO12_IO04 0x010 0x050 0x0 0xA 0x0 55 + 56 + #define IOMUXC_GPIO_LPSR_05_GPIO12_IO05 0x014 0x054 0x0 0xA 0x0 57 + #define IOMUXC_GPIO_LPSR_05_LPI2C5_SCL 0x014 0x054 0x084 0x0 0x0 58 + #define IOMUXC_GPIO_LPSR_05_LPSPI5_SIN 0x014 0x054 0x09C 0x1 0x0 59 + #define IOMUXC_GPIO_LPSR_05_SAI4_MCLK 0x014 0x054 0x0C8 0x2 0x1 60 + #define IOMUXC_GPIO_LPSR_05_LPUART12_CTS_B 0x014 0x054 0x0 0x3 0x0 61 + #define IOMUXC_GPIO_LPSR_05_GPIO_MUX6_IO05 0x014 0x054 0x0 0x5 0x0 62 + #define IOMUXC_GPIO_LPSR_05_LPUART11_RXD 0x014 0x054 0x0A4 0x6 0x0 63 + #define IOMUXC_GPIO_LPSR_05_NMI_GLUE_NMI 0x014 0x054 0x0C4 0x7 0x0 64 + 65 + #define IOMUXC_GPIO_LPSR_06_LPI2C6_SDA 0x018 0x058 0x090 0x0 0x0 66 + #define IOMUXC_GPIO_LPSR_06_SAI4_RX_DATA 0x018 0x058 0x0D0 0x2 0x0 67 + #define IOMUXC_GPIO_LPSR_06_LPUART12_TXD 0x018 0x058 0x0B0 0x3 0x1 68 + #define IOMUXC_GPIO_LPSR_06_LPSPI6_PCS3 0x018 0x058 0x0 0x4 0x0 69 + #define IOMUXC_GPIO_LPSR_06_GPIO_MUX6_IO06 0x018 0x058 0x0 0x5 0x0 70 + #define IOMUXC_GPIO_LPSR_06_FLEXCAN3_TX 0x018 0x058 0x0 0x6 0x0 71 + #define IOMUXC_GPIO_LPSR_06_PIT2_TRIGGER3 0x018 0x058 0x0 0x7 0x0 72 + #define IOMUXC_GPIO_LPSR_06_LPSPI5_PCS1 0x018 0x058 0x0 0x8 0x0 73 + #define IOMUXC_GPIO_LPSR_06_GPIO12_IO06 0x018 0x058 0x0 0xA 0x0 74 + 75 + #define IOMUXC_GPIO_LPSR_07_LPI2C6_SCL 0x01C 0x05C 0x08C 0x0 0x0 76 + #define IOMUXC_GPIO_LPSR_07_SAI4_RX_BCLK 0x01C 0x05C 0x0CC 0x2 0x0 77 + #define IOMUXC_GPIO_LPSR_07_LPUART12_RXD 0x01C 0x05C 0x0AC 0x3 0x1 78 + #define IOMUXC_GPIO_LPSR_07_LPSPI6_PCS2 0x01C 0x05C 0x0 0x4 0x0 79 + #define IOMUXC_GPIO_LPSR_07_GPIO_MUX6_IO07 0x01C 0x05C 0x0 0x5 0x0 80 + #define IOMUXC_GPIO_LPSR_07_FLEXCAN3_RX 0x01C 0x05C 0x080 0x6 0x1 81 + #define IOMUXC_GPIO_LPSR_07_PIT2_TRIGGER2 0x01C 0x05C 0x0 0x7 0x0 82 + #define IOMUXC_GPIO_LPSR_07_LPSPI5_PCS2 0x01C 0x05C 0x0 0x8 0x0 83 + #define IOMUXC_GPIO_LPSR_07_GPIO12_IO07 0x01C 0x05C 0x0 0xA 0x0 84 + 85 + #define IOMUXC_GPIO_LPSR_08_GPIO12_IO08 0x020 0x060 0x0 0xA 0x0 86 + #define IOMUXC_GPIO_LPSR_08_LPUART11_TXD 0x020 0x060 0x0A8 0x0 0x1 87 + #define IOMUXC_GPIO_LPSR_08_FLEXCAN3_TX 0x020 0x060 0x0 0x1 0x0 88 + #define IOMUXC_GPIO_LPSR_08_SAI4_RX_SYNC 0x020 0x060 0x0D4 0x2 0x0 89 + #define IOMUXC_GPIO_LPSR_08_MIC_CLK 0x020 0x060 0x0 0x3 0x0 90 + #define IOMUXC_GPIO_LPSR_08_LPSPI6_PCS1 0x020 0x060 0x0 0x4 0x0 91 + #define IOMUXC_GPIO_LPSR_08_GPIO_MUX6_IO08 0x020 0x060 0x0 0x5 0x0 92 + #define IOMUXC_GPIO_LPSR_08_LPI2C5_SDA 0x020 0x060 0x088 0x6 0x1 93 + #define IOMUXC_GPIO_LPSR_08_PIT2_TRIGGER1 0x020 0x060 0x0 0x7 0x0 94 + #define IOMUXC_GPIO_LPSR_08_LPSPI5_PCS3 0x020 0x060 0x0 0x8 0x0 95 + 96 + #define IOMUXC_GPIO_LPSR_09_GPIO12_IO09 0x024 0x064 0x0 0xA 0x0 97 + #define IOMUXC_GPIO_LPSR_09_LPUART11_RXD 0x024 0x064 0x0A4 0x0 0x1 98 + #define IOMUXC_GPIO_LPSR_09_FLEXCAN3_RX 0x024 0x064 0x080 0x1 0x2 99 + #define IOMUXC_GPIO_LPSR_09_PIT2_TRIGGER0 0x024 0x064 0x0 0x2 0x0 100 + #define IOMUXC_GPIO_LPSR_09_MIC_BITSTREAM0 0x024 0x064 0x0B4 0x3 0x1 101 + #define IOMUXC_GPIO_LPSR_09_LPSPI6_PCS0 0x024 0x064 0x0 0x4 0x0 102 + #define IOMUXC_GPIO_LPSR_09_GPIO_MUX6_IO09 0x024 0x064 0x0 0x5 0x0 103 + #define IOMUXC_GPIO_LPSR_09_LPI2C5_SCL 0x024 0x064 0x084 0x6 0x1 104 + #define IOMUXC_GPIO_LPSR_09_SAI4_TX_DATA 0x024 0x064 0x0 0x7 0x0 105 + 106 + #define IOMUXC_GPIO_LPSR_10_GPIO12_IO10 0x028 0x068 0x0 0xA 0x0 107 + #define IOMUXC_GPIO_LPSR_10_JTAG_MUX_TRSTB 0x028 0x068 0x0 0x0 0x0 108 + #define IOMUXC_GPIO_LPSR_10_LPUART11_CTS_B 0x028 0x068 0x0 0x1 0x0 109 + #define IOMUXC_GPIO_LPSR_10_LPI2C6_SDA 0x028 0x068 0x090 0x2 0x1 110 + #define IOMUXC_GPIO_LPSR_10_MIC_BITSTREAM1 0x028 0x068 0x0B8 0x3 0x0 111 + #define IOMUXC_GPIO_LPSR_10_LPSPI6_SCK 0x028 0x068 0x0 0x4 0x0 112 + #define IOMUXC_GPIO_LPSR_10_GPIO_MUX6_IO10 0x028 0x068 0x0 0x5 0x0 113 + #define IOMUXC_GPIO_LPSR_10_LPI2C5_SCLS 0x028 0x068 0x0 0x6 0x0 114 + #define IOMUXC_GPIO_LPSR_10_SAI4_TX_SYNC 0x028 0x068 0x0DC 0x7 0x1 115 + #define IOMUXC_GPIO_LPSR_10_LPUART12_TXD 0x028 0x068 0x0B0 0x8 0x2 116 + 117 + #define IOMUXC_GPIO_LPSR_11_JTAG_MUX_TDO 0x02C 0x06C 0x0 0x0 0x0 118 + #define IOMUXC_GPIO_LPSR_11_LPUART11_RTS_B 0x02C 0x06C 0x0 0x1 0x0 119 + #define IOMUXC_GPIO_LPSR_11_LPI2C6_SCL 0x02C 0x06C 0x08C 0x2 0x1 120 + #define IOMUXC_GPIO_LPSR_11_MIC_BITSTREAM2 0x02C 0x06C 0x0BC 0x3 0x0 121 + #define IOMUXC_GPIO_LPSR_11_LPSPI6_SOUT 0x02C 0x06C 0x0 0x4 0x0 122 + #define IOMUXC_GPIO_LPSR_11_GPIO_MUX6_IO11 0x02C 0x06C 0x0 0x5 0x0 123 + #define IOMUXC_GPIO_LPSR_11_LPI2C5_SDAS 0x02C 0x06C 0x0 0x6 0x0 124 + #define IOMUXC_GPIO_LPSR_11_ARM_TRACE_SWO 0x02C 0x06C 0x0 0x7 0x0 125 + #define IOMUXC_GPIO_LPSR_11_LPUART12_RXD 0x02C 0x06C 0x0AC 0x8 0x2 126 + #define IOMUXC_GPIO_LPSR_11_GPIO12_IO11 0x02C 0x06C 0x0 0xA 0x0 127 + 128 + #define IOMUXC_GPIO_LPSR_12_GPIO12_IO12 0x030 0x070 0x0 0xA 0x0 129 + #define IOMUXC_GPIO_LPSR_12_JTAG_MUX_TDI 0x030 0x070 0x0 0x0 0x0 130 + #define IOMUXC_GPIO_LPSR_12_PIT2_TRIGGER0 0x030 0x070 0x0 0x1 0x0 131 + #define IOMUXC_GPIO_LPSR_12_MIC_BITSTREAM3 0x030 0x070 0x0C0 0x3 0x0 132 + #define IOMUXC_GPIO_LPSR_12_LPSPI6_SIN 0x030 0x070 0x0 0x4 0x0 133 + #define IOMUXC_GPIO_LPSR_12_GPIO_MUX6_IO12 0x030 0x070 0x0 0x5 0x0 134 + #define IOMUXC_GPIO_LPSR_12_LPI2C5_HREQ 0x030 0x070 0x0 0x6 0x0 135 + #define IOMUXC_GPIO_LPSR_12_SAI4_TX_BCLK 0x030 0x070 0x0D8 0x7 0x1 136 + #define IOMUXC_GPIO_LPSR_12_LPSPI5_SCK 0x030 0x070 0x098 0x8 0x1 137 + 138 + #define IOMUXC_GPIO_LPSR_13_GPIO12_IO13 0x034 0x074 0x0 0xA 0x0 139 + #define IOMUXC_GPIO_LPSR_13_JTAG_MUX_MOD 0x034 0x074 0x0 0x0 0x0 140 + #define IOMUXC_GPIO_LPSR_13_MIC_BITSTREAM1 0x034 0x074 0x0B8 0x1 0x1 141 + #define IOMUXC_GPIO_LPSR_13_PIT2_TRIGGER1 0x034 0x074 0x0 0x2 0x0 142 + #define IOMUXC_GPIO_LPSR_13_GPIO_MUX6_IO13 0x034 0x074 0x0 0x5 0x0 143 + #define IOMUXC_GPIO_LPSR_13_SAI4_RX_DATA 0x034 0x074 0x0D0 0x7 0x1 144 + #define IOMUXC_GPIO_LPSR_13_LPSPI5_PCS0 0x034 0x074 0x094 0x8 0x1 145 + 146 + #define IOMUXC_GPIO_LPSR_14_JTAG_MUX_TCK 0x038 0x078 0x0 0x0 0x0 147 + #define IOMUXC_GPIO_LPSR_14_MIC_BITSTREAM2 0x038 0x078 0x0BC 0x1 0x1 148 + #define IOMUXC_GPIO_LPSR_14_PIT2_TRIGGER2 0x038 0x078 0x0 0x2 0x0 149 + #define IOMUXC_GPIO_LPSR_14_GPIO_MUX6_IO14 0x038 0x078 0x0 0x5 0x0 150 + #define IOMUXC_GPIO_LPSR_14_SAI4_RX_BCLK 0x038 0x078 0x0CC 0x7 0x1 151 + #define IOMUXC_GPIO_LPSR_14_LPSPI5_SOUT 0x038 0x078 0x0A0 0x8 0x1 152 + #define IOMUXC_GPIO_LPSR_14_GPIO12_IO14 0x038 0x078 0x0 0xA 0x0 153 + 154 + #define IOMUXC_GPIO_LPSR_15_GPIO12_IO15 0x03C 0x07C 0x0 0xA 0x0 155 + #define IOMUXC_GPIO_LPSR_15_JTAG_MUX_TMS 0x03C 0x07C 0x0 0x0 0x0 156 + #define IOMUXC_GPIO_LPSR_15_MIC_BITSTREAM3 0x03C 0x07C 0x0C0 0x1 0x1 157 + #define IOMUXC_GPIO_LPSR_15_PIT2_TRIGGER3 0x03C 0x07C 0x0 0x2 0x0 158 + #define IOMUXC_GPIO_LPSR_15_GPIO_MUX6_IO15 0x03C 0x07C 0x0 0x5 0x0 159 + #define IOMUXC_GPIO_LPSR_15_SAI4_RX_SYNC 0x03C 0x07C 0x0D4 0x7 0x1 160 + #define IOMUXC_GPIO_LPSR_15_LPSPI5_SIN 0x03C 0x07C 0x09C 0x8 0x1 161 + 162 + #define IOMUXC_WAKEUP_DIG_GPIO13_IO00 0x40C94000 0x40C94040 0x0 0x5 0x0 163 + #define IOMUXC_WAKEUP_DIG_NMI_GLUE_NMI 0x40C94000 0x40C94040 0x0C4 0x7 0x1 164 + 165 + #define IOMUXC_PMIC_ON_REQ_DIG_SNVS_LP_PMIC_ON_REQ 0x40C94004 0x40C94044 0x0 0x0 0x0 166 + #define IOMUXC_PMIC_ON_REQ_DIG_GPIO13_IO01 0x40C94004 0x40C94044 0x0 0x5 0x0 167 + 168 + #define IOMUXC_PMIC_STBY_REQ_DIG_CCM_PMIC_VSTBY_REQ 0x40C94008 0x40C94048 0x0 0x0 0x0 169 + #define IOMUXC_PMIC_STBY_REQ_DIG_GPIO13_IO02 0x40C94008 0x40C94048 0x0 0x5 0x0 170 + 171 + #define IOMUXC_GPIO_SNVS_00_DIG_SNVS_TAMPER0 0x40C9400C 0x40C9404C 0x0 0x0 0x0 172 + #define IOMUXC_GPIO_SNVS_00_DIG_GPIO13_IO03 0x40C9400C 0x40C9404C 0x0 0x5 0x0 173 + 174 + #define IOMUXC_GPIO_SNVS_01_DIG_SNVS_TAMPER1 0x40C94010 0x40C94050 0x0 0x0 0x0 175 + #define IOMUXC_GPIO_SNVS_01_DIG_GPIO13_IO04 0x40C94010 0x40C94050 0x0 0x5 0x0 176 + 177 + #define IOMUXC_GPIO_SNVS_02_DIG_SNVS_TAMPER2 0x40C94014 0x40C94054 0x0 0x0 0x0 178 + #define IOMUXC_GPIO_SNVS_02_DIG_GPIO13_IO05 0x40C94014 0x40C94054 0x0 0x5 0x0 179 + 180 + #define IOMUXC_GPIO_SNVS_03_DIG_SNVS_TAMPER3 0x40C94018 0x40C94058 0x0 0x0 0x0 181 + #define IOMUXC_GPIO_SNVS_03_DIG_GPIO13_IO06 0x40C94018 0x40C94058 0x0 0x5 0x0 182 + 183 + #define IOMUXC_GPIO_SNVS_04_DIG_SNVS_TAMPER4 0x40C9401C 0x40C9405C 0x0 0x0 0x0 184 + #define IOMUXC_GPIO_SNVS_04_DIG_GPIO13_IO07 0x40C9401C 0x40C9405C 0x0 0x5 0x0 185 + 186 + #define IOMUXC_GPIO_SNVS_05_DIG_SNVS_TAMPER5 0x40C94020 0x40C94060 0x0 0x0 0x0 187 + #define IOMUXC_GPIO_SNVS_05_DIG_GPIO13_IO08 0x40C94020 0x40C94060 0x0 0x5 0x0 188 + 189 + #define IOMUXC_GPIO_SNVS_06_DIG_SNVS_TAMPER6 0x40C94024 0x40C94064 0x0 0x0 0x0 190 + #define IOMUXC_GPIO_SNVS_06_DIG_GPIO13_IO09 0x40C94024 0x40C94064 0x0 0x5 0x0 191 + 192 + #define IOMUXC_GPIO_SNVS_07_DIG_SNVS_TAMPER7 0x40C94028 0x40C94068 0x0 0x0 0x0 193 + #define IOMUXC_GPIO_SNVS_07_DIG_GPIO13_IO10 0x40C94028 0x40C94068 0x0 0x5 0x0 194 + 195 + #define IOMUXC_GPIO_SNVS_08_DIG_SNVS_TAMPER8 0x40C9402C 0x40C9406C 0x0 0x0 0x0 196 + #define IOMUXC_GPIO_SNVS_08_DIG_GPIO13_IO11 0x40C9402C 0x40C9406C 0x0 0x5 0x0 197 + 198 + #define IOMUXC_GPIO_SNVS_09_DIG_SNVS_TAMPER9 0x40C94030 0x40C94070 0x0 0x0 0x0 199 + #define IOMUXC_GPIO_SNVS_09_DIG_GPIO13_IO12 0x40C94030 0x40C94070 0x0 0x5 0x0 200 + 201 + #define IOMUXC_TEST_MODE_DIG 0x0 0x40C94034 0x0 0x0 0x0 202 + 203 + #define IOMUXC_POR_B_DIG 0x0 0x40C94038 0x0 0x0 0x0 204 + 205 + #define IOMUXC_ONOFF_DIG 0x0 0x40C9403C 0x0 0x0 0x0 206 + 207 + #define IOMUXC_GPIO_EMC_B1_00_SEMC_DATA00 0x010 0x254 0x0 0x0 0x0 208 + #define IOMUXC_GPIO_EMC_B1_00_FLEXPWM4_PWM0_A 0x010 0x254 0x0 0x1 0x0 209 + #define IOMUXC_GPIO_EMC_B1_00_GPIO_MUX1_IO00 0x010 0x254 0x0 0x5 0x0 210 + #define IOMUXC_GPIO_EMC_B1_00_FLEXIO1_D00 0x010 0x254 0x0 0x8 0x0 211 + #define IOMUXC_GPIO_EMC_B1_00_GPIO7_IO00 0x010 0x254 0x0 0xA 0x0 212 + 213 + #define IOMUXC_GPIO_EMC_B1_01_GPIO7_IO01 0x014 0x258 0x0 0xA 0x0 214 + #define IOMUXC_GPIO_EMC_B1_01_SEMC_DATA01 0x014 0x258 0x0 0x0 0x0 215 + #define IOMUXC_GPIO_EMC_B1_01_FLEXPWM4_PWM0_B 0x014 0x258 0x0 0x1 0x0 216 + #define IOMUXC_GPIO_EMC_B1_01_GPIO_MUX1_IO01 0x014 0x258 0x0 0x5 0x0 217 + #define IOMUXC_GPIO_EMC_B1_01_FLEXIO1_D01 0x014 0x258 0x0 0x8 0x0 218 + 219 + #define IOMUXC_GPIO_EMC_B1_02_SEMC_DATA02 0x018 0x25C 0x0 0x0 0x0 220 + #define IOMUXC_GPIO_EMC_B1_02_FLEXPWM4_PWM1_A 0x018 0x25C 0x0 0x1 0x0 221 + #define IOMUXC_GPIO_EMC_B1_02_GPIO_MUX1_IO02 0x018 0x25C 0x0 0x5 0x0 222 + #define IOMUXC_GPIO_EMC_B1_02_FLEXIO1_D02 0x018 0x25C 0x0 0x8 0x0 223 + #define IOMUXC_GPIO_EMC_B1_02_GPIO7_IO02 0x018 0x25C 0x0 0xA 0x0 224 + 225 + #define IOMUXC_GPIO_EMC_B1_03_SEMC_DATA03 0x01C 0x260 0x0 0x0 0x0 226 + #define IOMUXC_GPIO_EMC_B1_03_FLEXPWM4_PWM1_B 0x01C 0x260 0x0 0x1 0x0 227 + #define IOMUXC_GPIO_EMC_B1_03_GPIO_MUX1_IO03 0x01C 0x260 0x0 0x5 0x0 228 + #define IOMUXC_GPIO_EMC_B1_03_FLEXIO1_D03 0x01C 0x260 0x0 0x8 0x0 229 + #define IOMUXC_GPIO_EMC_B1_03_GPIO7_IO03 0x01C 0x260 0x0 0xA 0x0 230 + 231 + #define IOMUXC_GPIO_EMC_B1_04_GPIO7_IO04 0x020 0x264 0x0 0xA 0x0 232 + #define IOMUXC_GPIO_EMC_B1_04_SEMC_DATA04 0x020 0x264 0x0 0x0 0x0 233 + #define IOMUXC_GPIO_EMC_B1_04_FLEXPWM4_PWM2_A 0x020 0x264 0x0 0x1 0x0 234 + #define IOMUXC_GPIO_EMC_B1_04_GPIO_MUX1_IO04 0x020 0x264 0x0 0x5 0x0 235 + #define IOMUXC_GPIO_EMC_B1_04_FLEXIO1_D04 0x020 0x264 0x0 0x8 0x0 236 + 237 + #define IOMUXC_GPIO_EMC_B1_05_SEMC_DATA05 0x024 0x268 0x0 0x0 0x0 238 + #define IOMUXC_GPIO_EMC_B1_05_FLEXPWM4_PWM2_B 0x024 0x268 0x0 0x1 0x0 239 + #define IOMUXC_GPIO_EMC_B1_05_GPIO_MUX1_IO05 0x024 0x268 0x0 0x5 0x0 240 + #define IOMUXC_GPIO_EMC_B1_05_FLEXIO1_D05 0x024 0x268 0x0 0x8 0x0 241 + #define IOMUXC_GPIO_EMC_B1_05_GPIO7_IO05 0x024 0x268 0x0 0xA 0x0 242 + 243 + #define IOMUXC_GPIO_EMC_B1_06_SEMC_DATA06 0x028 0x26C 0x0 0x0 0x0 244 + #define IOMUXC_GPIO_EMC_B1_06_FLEXPWM2_PWM0_A 0x028 0x26C 0x518 0x1 0x0 245 + #define IOMUXC_GPIO_EMC_B1_06_GPIO_MUX1_IO06 0x028 0x26C 0x0 0x5 0x0 246 + #define IOMUXC_GPIO_EMC_B1_06_FLEXIO1_D06 0x028 0x26C 0x0 0x8 0x0 247 + #define IOMUXC_GPIO_EMC_B1_06_GPIO7_IO06 0x028 0x26C 0x0 0xA 0x0 248 + 249 + #define IOMUXC_GPIO_EMC_B1_07_GPIO7_IO07 0x02C 0x270 0x0 0xA 0x0 250 + #define IOMUXC_GPIO_EMC_B1_07_SEMC_DATA07 0x02C 0x270 0x0 0x0 0x0 251 + #define IOMUXC_GPIO_EMC_B1_07_FLEXPWM2_PWM0_B 0x02C 0x270 0x524 0x1 0x0 252 + #define IOMUXC_GPIO_EMC_B1_07_GPIO_MUX1_IO07 0x02C 0x270 0x0 0x5 0x0 253 + #define IOMUXC_GPIO_EMC_B1_07_FLEXIO1_D07 0x02C 0x270 0x0 0x8 0x0 254 + 255 + #define IOMUXC_GPIO_EMC_B1_08_SEMC_DM00 0x030 0x274 0x0 0x0 0x0 256 + #define IOMUXC_GPIO_EMC_B1_08_FLEXPWM2_PWM1_A 0x030 0x274 0x51C 0x1 0x0 257 + #define IOMUXC_GPIO_EMC_B1_08_GPIO_MUX1_IO08 0x030 0x274 0x0 0x5 0x0 258 + #define IOMUXC_GPIO_EMC_B1_08_FLEXIO1_D08 0x030 0x274 0x0 0x8 0x0 259 + #define IOMUXC_GPIO_EMC_B1_08_GPIO7_IO08 0x030 0x274 0x0 0xA 0x0 260 + 261 + #define IOMUXC_GPIO_EMC_B1_09_SEMC_ADDR00 0x034 0x278 0x0 0x0 0x0 262 + #define IOMUXC_GPIO_EMC_B1_09_FLEXPWM2_PWM1_B 0x034 0x278 0x528 0x1 0x0 263 + #define IOMUXC_GPIO_EMC_B1_09_GPT5_CAPTURE1 0x034 0x278 0x0 0x2 0x0 264 + #define IOMUXC_GPIO_EMC_B1_09_GPIO_MUX1_IO09 0x034 0x278 0x0 0x5 0x0 265 + #define IOMUXC_GPIO_EMC_B1_09_FLEXIO1_D09 0x034 0x278 0x0 0x8 0x0 266 + #define IOMUXC_GPIO_EMC_B1_09_GPIO7_IO09 0x034 0x278 0x0 0xA 0x0 267 + 268 + #define IOMUXC_GPIO_EMC_B1_10_SEMC_ADDR01 0x038 0x27C 0x0 0x0 0x0 269 + #define IOMUXC_GPIO_EMC_B1_10_FLEXPWM2_PWM2_A 0x038 0x27C 0x520 0x1 0x0 270 + #define IOMUXC_GPIO_EMC_B1_10_GPT5_CAPTURE2 0x038 0x27C 0x0 0x2 0x0 271 + #define IOMUXC_GPIO_EMC_B1_10_GPIO_MUX1_IO10 0x038 0x27C 0x0 0x5 0x0 272 + #define IOMUXC_GPIO_EMC_B1_10_FLEXIO1_D10 0x038 0x27C 0x0 0x8 0x0 273 + #define IOMUXC_GPIO_EMC_B1_10_GPIO7_IO10 0x038 0x27C 0x0 0xA 0x0 274 + 275 + #define IOMUXC_GPIO_EMC_B1_11_GPIO7_IO11 0x03C 0x280 0x0 0xA 0x0 276 + #define IOMUXC_GPIO_EMC_B1_11_SEMC_ADDR02 0x03C 0x280 0x0 0x0 0x0 277 + #define IOMUXC_GPIO_EMC_B1_11_FLEXPWM2_PWM2_B 0x03C 0x280 0x52C 0x1 0x0 278 + #define IOMUXC_GPIO_EMC_B1_11_GPT5_COMPARE1 0x03C 0x280 0x0 0x2 0x0 279 + #define IOMUXC_GPIO_EMC_B1_11_GPIO_MUX1_IO11 0x03C 0x280 0x0 0x5 0x0 280 + #define IOMUXC_GPIO_EMC_B1_11_FLEXIO1_D11 0x03C 0x280 0x0 0x8 0x0 281 + 282 + #define IOMUXC_GPIO_EMC_B1_12_SEMC_ADDR03 0x040 0x284 0x0 0x0 0x0 283 + #define IOMUXC_GPIO_EMC_B1_12_XBAR1_INOUT04 0x040 0x284 0x0 0x1 0x0 284 + #define IOMUXC_GPIO_EMC_B1_12_GPT5_COMPARE2 0x040 0x284 0x0 0x2 0x0 285 + #define IOMUXC_GPIO_EMC_B1_12_GPIO_MUX1_IO12 0x040 0x284 0x0 0x5 0x0 286 + #define IOMUXC_GPIO_EMC_B1_12_FLEXIO1_D12 0x040 0x284 0x0 0x8 0x0 287 + #define IOMUXC_GPIO_EMC_B1_12_GPIO7_IO12 0x040 0x284 0x0 0xA 0x0 288 + 289 + #define IOMUXC_GPIO_EMC_B1_13_SEMC_ADDR04 0x044 0x288 0x0 0x0 0x0 290 + #define IOMUXC_GPIO_EMC_B1_13_XBAR1_INOUT05 0x044 0x288 0x0 0x1 0x0 291 + #define IOMUXC_GPIO_EMC_B1_13_GPT5_COMPARE3 0x044 0x288 0x0 0x2 0x0 292 + #define IOMUXC_GPIO_EMC_B1_13_GPIO_MUX1_IO13 0x044 0x288 0x0 0x5 0x0 293 + #define IOMUXC_GPIO_EMC_B1_13_FLEXIO1_D13 0x044 0x288 0x0 0x8 0x0 294 + #define IOMUXC_GPIO_EMC_B1_13_GPIO7_IO13 0x044 0x288 0x0 0xA 0x0 295 + 296 + #define IOMUXC_GPIO_EMC_B1_14_GPIO7_IO14 0x048 0x28C 0x0 0xA 0x0 297 + #define IOMUXC_GPIO_EMC_B1_14_SEMC_ADDR05 0x048 0x28C 0x0 0x0 0x0 298 + #define IOMUXC_GPIO_EMC_B1_14_XBAR1_INOUT06 0x048 0x28C 0x0 0x1 0x0 299 + #define IOMUXC_GPIO_EMC_B1_14_GPT5_CLK 0x048 0x28C 0x0 0x2 0x0 300 + #define IOMUXC_GPIO_EMC_B1_14_GPIO_MUX1_IO14 0x048 0x28C 0x0 0x5 0x0 301 + #define IOMUXC_GPIO_EMC_B1_14_FLEXIO1_D14 0x048 0x28C 0x0 0x8 0x0 302 + 303 + #define IOMUXC_GPIO_EMC_B1_15_SEMC_ADDR06 0x04C 0x290 0x0 0x0 0x0 304 + #define IOMUXC_GPIO_EMC_B1_15_XBAR1_INOUT07 0x04C 0x290 0x0 0x1 0x0 305 + #define IOMUXC_GPIO_EMC_B1_15_GPIO_MUX1_IO15 0x04C 0x290 0x0 0x5 0x0 306 + #define IOMUXC_GPIO_EMC_B1_15_FLEXIO1_D15 0x04C 0x290 0x0 0x8 0x0 307 + #define IOMUXC_GPIO_EMC_B1_15_GPIO7_IO15 0x04C 0x290 0x0 0xA 0x0 308 + 309 + #define IOMUXC_GPIO_EMC_B1_16_SEMC_ADDR07 0x050 0x294 0x0 0x0 0x0 310 + #define IOMUXC_GPIO_EMC_B1_16_XBAR1_INOUT08 0x050 0x294 0x0 0x1 0x0 311 + #define IOMUXC_GPIO_EMC_B1_16_GPIO_MUX1_IO16 0x050 0x294 0x0 0x5 0x0 312 + #define IOMUXC_GPIO_EMC_B1_16_FLEXIO1_D16 0x050 0x294 0x0 0x8 0x0 313 + #define IOMUXC_GPIO_EMC_B1_16_GPIO7_IO16 0x050 0x294 0x0 0xA 0x0 314 + 315 + #define IOMUXC_GPIO_EMC_B1_17_GPIO7_IO17 0x054 0x298 0x0 0xA 0x0 316 + #define IOMUXC_GPIO_EMC_B1_17_SEMC_ADDR08 0x054 0x298 0x0 0x0 0x0 317 + #define IOMUXC_GPIO_EMC_B1_17_FLEXPWM4_PWM3_A 0x054 0x298 0x0 0x1 0x0 318 + #define IOMUXC_GPIO_EMC_B1_17_TMR1_TIMER0 0x054 0x298 0x63C 0x2 0x0 319 + #define IOMUXC_GPIO_EMC_B1_17_GPIO_MUX1_IO17 0x054 0x298 0x0 0x5 0x0 320 + #define IOMUXC_GPIO_EMC_B1_17_FLEXIO1_D17 0x054 0x298 0x0 0x8 0x0 321 + 322 + #define IOMUXC_GPIO_EMC_B1_18_SEMC_ADDR09 0x058 0x29C 0x0 0x0 0x0 323 + #define IOMUXC_GPIO_EMC_B1_18_FLEXPWM4_PWM3_B 0x058 0x29C 0x0 0x1 0x0 324 + #define IOMUXC_GPIO_EMC_B1_18_TMR2_TIMER0 0x058 0x29C 0x648 0x2 0x0 325 + #define IOMUXC_GPIO_EMC_B1_18_GPIO_MUX1_IO18 0x058 0x29C 0x0 0x5 0x0 326 + #define IOMUXC_GPIO_EMC_B1_18_FLEXIO1_D18 0x058 0x29C 0x0 0x8 0x0 327 + #define IOMUXC_GPIO_EMC_B1_18_GPIO7_IO18 0x058 0x29C 0x0 0xA 0x0 328 + 329 + #define IOMUXC_GPIO_EMC_B1_19_SEMC_ADDR11 0x05C 0x2A0 0x0 0x0 0x0 330 + #define IOMUXC_GPIO_EMC_B1_19_FLEXPWM2_PWM3_A 0x05C 0x2A0 0x0 0x1 0x0 331 + #define IOMUXC_GPIO_EMC_B1_19_TMR3_TIMER0 0x05C 0x2A0 0x654 0x2 0x0 332 + #define IOMUXC_GPIO_EMC_B1_19_GPIO_MUX1_IO19 0x05C 0x2A0 0x0 0x5 0x0 333 + #define IOMUXC_GPIO_EMC_B1_19_FLEXIO1_D19 0x05C 0x2A0 0x0 0x8 0x0 334 + #define IOMUXC_GPIO_EMC_B1_19_GPIO7_IO19 0x05C 0x2A0 0x0 0xA 0x0 335 + 336 + #define IOMUXC_GPIO_EMC_B1_20_SEMC_ADDR12 0x060 0x2A4 0x0 0x0 0x0 337 + #define IOMUXC_GPIO_EMC_B1_20_FLEXPWM2_PWM3_B 0x060 0x2A4 0x0 0x1 0x0 338 + #define IOMUXC_GPIO_EMC_B1_20_TMR4_TIMER0 0x060 0x2A4 0x660 0x2 0x0 339 + #define IOMUXC_GPIO_EMC_B1_20_GPIO_MUX1_IO20 0x060 0x2A4 0x0 0x5 0x0 340 + #define IOMUXC_GPIO_EMC_B1_20_FLEXIO1_D20 0x060 0x2A4 0x0 0x8 0x0 341 + #define IOMUXC_GPIO_EMC_B1_20_GPIO7_IO20 0x060 0x2A4 0x0 0xA 0x0 342 + 343 + #define IOMUXC_GPIO_EMC_B1_21_GPIO7_IO21 0x064 0x2A8 0x0 0xA 0x0 344 + #define IOMUXC_GPIO_EMC_B1_21_SEMC_BA0 0x064 0x2A8 0x0 0x0 0x0 345 + #define IOMUXC_GPIO_EMC_B1_21_FLEXPWM3_PWM3_A 0x064 0x2A8 0x53C 0x1 0x0 346 + #define IOMUXC_GPIO_EMC_B1_21_GPIO_MUX1_IO21 0x064 0x2A8 0x0 0x5 0x0 347 + #define IOMUXC_GPIO_EMC_B1_21_FLEXIO1_D21 0x064 0x2A8 0x0 0x8 0x0 348 + 349 + #define IOMUXC_GPIO_EMC_B1_22_GPIO7_IO22 0x068 0x2AC 0x0 0xA 0x0 350 + #define IOMUXC_GPIO_EMC_B1_22_SEMC_BA1 0x068 0x2AC 0x0 0x0 0x0 351 + #define IOMUXC_GPIO_EMC_B1_22_FLEXPWM3_PWM3_B 0x068 0x2AC 0x54C 0x1 0x0 352 + #define IOMUXC_GPIO_EMC_B1_22_GPIO_MUX1_IO22 0x068 0x2AC 0x0 0x5 0x0 353 + #define IOMUXC_GPIO_EMC_B1_22_FLEXIO1_D22 0x068 0x2AC 0x0 0x8 0x0 354 + 355 + #define IOMUXC_GPIO_EMC_B1_23_SEMC_ADDR10 0x06C 0x2B0 0x0 0x0 0x0 356 + #define IOMUXC_GPIO_EMC_B1_23_FLEXPWM1_PWM0_A 0x06C 0x2B0 0x500 0x1 0x0 357 + #define IOMUXC_GPIO_EMC_B1_23_GPIO_MUX1_IO23 0x06C 0x2B0 0x0 0x5 0x0 358 + #define IOMUXC_GPIO_EMC_B1_23_FLEXIO1_D23 0x06C 0x2B0 0x0 0x8 0x0 359 + #define IOMUXC_GPIO_EMC_B1_23_GPIO7_IO23 0x06C 0x2B0 0x0 0xA 0x0 360 + 361 + #define IOMUXC_GPIO_EMC_B1_24_GPIO7_IO24 0x070 0x2B4 0x0 0xA 0x0 362 + #define IOMUXC_GPIO_EMC_B1_24_SEMC_CAS 0x070 0x2B4 0x0 0x0 0x0 363 + #define IOMUXC_GPIO_EMC_B1_24_FLEXPWM1_PWM0_B 0x070 0x2B4 0x50C 0x1 0x0 364 + #define IOMUXC_GPIO_EMC_B1_24_GPIO_MUX1_IO24 0x070 0x2B4 0x0 0x5 0x0 365 + #define IOMUXC_GPIO_EMC_B1_24_FLEXIO1_D24 0x070 0x2B4 0x0 0x8 0x0 366 + 367 + #define IOMUXC_GPIO_EMC_B1_25_GPIO7_IO25 0x074 0x2B8 0x0 0xA 0x0 368 + #define IOMUXC_GPIO_EMC_B1_25_SEMC_RAS 0x074 0x2B8 0x0 0x0 0x0 369 + #define IOMUXC_GPIO_EMC_B1_25_FLEXPWM1_PWM1_A 0x074 0x2B8 0x504 0x1 0x0 370 + #define IOMUXC_GPIO_EMC_B1_25_GPIO_MUX1_IO25 0x074 0x2B8 0x0 0x5 0x0 371 + #define IOMUXC_GPIO_EMC_B1_25_FLEXIO1_D25 0x074 0x2B8 0x0 0x8 0x0 372 + 373 + #define IOMUXC_GPIO_EMC_B1_26_SEMC_CLK 0x078 0x2BC 0x0 0x0 0x0 374 + #define IOMUXC_GPIO_EMC_B1_26_FLEXPWM1_PWM1_B 0x078 0x2BC 0x510 0x1 0x0 375 + #define IOMUXC_GPIO_EMC_B1_26_GPIO_MUX1_IO26 0x078 0x2BC 0x0 0x5 0x0 376 + #define IOMUXC_GPIO_EMC_B1_26_FLEXIO1_D26 0x078 0x2BC 0x0 0x8 0x0 377 + #define IOMUXC_GPIO_EMC_B1_26_GPIO7_IO26 0x078 0x2BC 0x0 0xA 0x0 378 + 379 + #define IOMUXC_GPIO_EMC_B1_27_GPIO7_IO27 0x07C 0x2C0 0x0 0xA 0x0 380 + #define IOMUXC_GPIO_EMC_B1_27_SEMC_CKE 0x07C 0x2C0 0x0 0x0 0x0 381 + #define IOMUXC_GPIO_EMC_B1_27_FLEXPWM1_PWM2_A 0x07C 0x2C0 0x508 0x1 0x0 382 + #define IOMUXC_GPIO_EMC_B1_27_GPIO_MUX1_IO27 0x07C 0x2C0 0x0 0x5 0x0 383 + #define IOMUXC_GPIO_EMC_B1_27_FLEXIO1_D27 0x07C 0x2C0 0x0 0x8 0x0 384 + 385 + #define IOMUXC_GPIO_EMC_B1_28_GPIO7_IO28 0x080 0x2C4 0x0 0xA 0x0 386 + #define IOMUXC_GPIO_EMC_B1_28_SEMC_WE 0x080 0x2C4 0x0 0x0 0x0 387 + #define IOMUXC_GPIO_EMC_B1_28_FLEXPWM1_PWM2_B 0x080 0x2C4 0x514 0x1 0x0 388 + #define IOMUXC_GPIO_EMC_B1_28_GPIO_MUX1_IO28 0x080 0x2C4 0x0 0x5 0x0 389 + #define IOMUXC_GPIO_EMC_B1_28_FLEXIO1_D28 0x080 0x2C4 0x0 0x8 0x0 390 + 391 + #define IOMUXC_GPIO_EMC_B1_29_SEMC_CS0 0x084 0x2C8 0x0 0x0 0x0 392 + #define IOMUXC_GPIO_EMC_B1_29_FLEXPWM3_PWM0_A 0x084 0x2C8 0x530 0x1 0x0 393 + #define IOMUXC_GPIO_EMC_B1_29_GPIO_MUX1_IO29 0x084 0x2C8 0x0 0x5 0x0 394 + #define IOMUXC_GPIO_EMC_B1_29_FLEXIO1_D29 0x084 0x2C8 0x0 0x8 0x0 395 + #define IOMUXC_GPIO_EMC_B1_29_GPIO7_IO29 0x084 0x2C8 0x0 0xA 0x0 396 + 397 + #define IOMUXC_GPIO_EMC_B1_30_SEMC_DATA08 0x088 0x2CC 0x0 0x0 0x0 398 + #define IOMUXC_GPIO_EMC_B1_30_FLEXPWM3_PWM0_B 0x088 0x2CC 0x540 0x1 0x0 399 + #define IOMUXC_GPIO_EMC_B1_30_GPIO_MUX1_IO30 0x088 0x2CC 0x0 0x5 0x0 400 + #define IOMUXC_GPIO_EMC_B1_30_FLEXIO1_D30 0x088 0x2CC 0x0 0x8 0x0 401 + #define IOMUXC_GPIO_EMC_B1_30_GPIO7_IO30 0x088 0x2CC 0x0 0xA 0x0 402 + 403 + #define IOMUXC_GPIO_EMC_B1_31_GPIO7_IO31 0x08C 0x2D0 0x0 0xA 0x0 404 + #define IOMUXC_GPIO_EMC_B1_31_SEMC_DATA09 0x08C 0x2D0 0x0 0x0 0x0 405 + #define IOMUXC_GPIO_EMC_B1_31_FLEXPWM3_PWM1_A 0x08C 0x2D0 0x534 0x1 0x0 406 + #define IOMUXC_GPIO_EMC_B1_31_GPIO_MUX1_IO31 0x08C 0x2D0 0x0 0x5 0x0 407 + #define IOMUXC_GPIO_EMC_B1_31_FLEXIO1_D31 0x08C 0x2D0 0x0 0x8 0x0 408 + 409 + #define IOMUXC_GPIO_EMC_B1_32_GPIO8_IO00 0x090 0x2D4 0x0 0xA 0x0 410 + #define IOMUXC_GPIO_EMC_B1_32_SEMC_DATA10 0x090 0x2D4 0x0 0x0 0x0 411 + #define IOMUXC_GPIO_EMC_B1_32_FLEXPWM3_PWM1_B 0x090 0x2D4 0x544 0x1 0x0 412 + #define IOMUXC_GPIO_EMC_B1_32_GPIO_MUX2_IO00 0x090 0x2D4 0x0 0x5 0x0 413 + 414 + #define IOMUXC_GPIO_EMC_B1_33_SEMC_DATA11 0x094 0x2D8 0x0 0x0 0x0 415 + #define IOMUXC_GPIO_EMC_B1_33_FLEXPWM3_PWM2_A 0x094 0x2D8 0x538 0x1 0x0 416 + #define IOMUXC_GPIO_EMC_B1_33_GPIO_MUX2_IO01 0x094 0x2D8 0x0 0x5 0x0 417 + #define IOMUXC_GPIO_EMC_B1_33_GPIO8_IO01 0x094 0x2D8 0x0 0xA 0x0 418 + 419 + #define IOMUXC_GPIO_EMC_B1_34_GPIO8_IO02 0x098 0x2DC 0x0 0xA 0x0 420 + #define IOMUXC_GPIO_EMC_B1_34_SEMC_DATA12 0x098 0x2DC 0x0 0x0 0x0 421 + #define IOMUXC_GPIO_EMC_B1_34_FLEXPWM3_PWM2_B 0x098 0x2DC 0x548 0x1 0x0 422 + #define IOMUXC_GPIO_EMC_B1_34_GPIO_MUX2_IO02 0x098 0x2DC 0x0 0x5 0x0 423 + 424 + #define IOMUXC_GPIO_EMC_B1_35_GPIO8_IO03 0x09C 0x2E0 0x0 0xA 0x0 425 + #define IOMUXC_GPIO_EMC_B1_35_SEMC_DATA13 0x09C 0x2E0 0x0 0x0 0x0 426 + #define IOMUXC_GPIO_EMC_B1_35_XBAR1_INOUT09 0x09C 0x2E0 0x0 0x1 0x0 427 + #define IOMUXC_GPIO_EMC_B1_35_GPIO_MUX2_IO03 0x09C 0x2E0 0x0 0x5 0x0 428 + 429 + #define IOMUXC_GPIO_EMC_B1_36_SEMC_DATA14 0x0A0 0x2E4 0x0 0x0 0x0 430 + #define IOMUXC_GPIO_EMC_B1_36_XBAR1_INOUT10 0x0A0 0x2E4 0x0 0x1 0x0 431 + #define IOMUXC_GPIO_EMC_B1_36_GPIO_MUX2_IO04 0x0A0 0x2E4 0x0 0x5 0x0 432 + #define IOMUXC_GPIO_EMC_B1_36_GPIO8_IO04 0x0A0 0x2E4 0x0 0xA 0x0 433 + 434 + #define IOMUXC_GPIO_EMC_B1_37_GPIO8_IO05 0x0A4 0x2E8 0x0 0xA 0x0 435 + #define IOMUXC_GPIO_EMC_B1_37_SEMC_DATA15 0x0A4 0x2E8 0x0 0x0 0x0 436 + #define IOMUXC_GPIO_EMC_B1_37_XBAR1_INOUT11 0x0A4 0x2E8 0x0 0x1 0x0 437 + #define IOMUXC_GPIO_EMC_B1_37_GPIO_MUX2_IO05 0x0A4 0x2E8 0x0 0x5 0x0 438 + 439 + #define IOMUXC_GPIO_EMC_B1_38_GPIO8_IO06 0x0A8 0x2EC 0x0 0xA 0x0 440 + #define IOMUXC_GPIO_EMC_B1_38_SEMC_DM01 0x0A8 0x2EC 0x0 0x0 0x0 441 + #define IOMUXC_GPIO_EMC_B1_38_FLEXPWM1_PWM3_A 0x0A8 0x2EC 0x0 0x1 0x0 442 + #define IOMUXC_GPIO_EMC_B1_38_TMR1_TIMER1 0x0A8 0x2EC 0x640 0x2 0x0 443 + #define IOMUXC_GPIO_EMC_B1_38_GPIO_MUX2_IO06 0x0A8 0x2EC 0x0 0x5 0x0 444 + 445 + #define IOMUXC_GPIO_EMC_B1_39_SEMC_DQS 0x0AC 0x2F0 0x0 0x0 0x0 446 + #define IOMUXC_GPIO_EMC_B1_39_FLEXPWM1_PWM3_B 0x0AC 0x2F0 0x0 0x1 0x0 447 + #define IOMUXC_GPIO_EMC_B1_39_TMR2_TIMER1 0x0AC 0x2F0 0x64C 0x2 0x0 448 + #define IOMUXC_GPIO_EMC_B1_39_GPIO_MUX2_IO07 0x0AC 0x2F0 0x0 0x5 0x0 449 + #define IOMUXC_GPIO_EMC_B1_39_GPIO8_IO07 0x0AC 0x2F0 0x0 0xA 0x0 450 + 451 + #define IOMUXC_GPIO_EMC_B1_40_SEMC_RDY 0x0B0 0x2F4 0x0 0x0 0x0 452 + #define IOMUXC_GPIO_EMC_B1_40_XBAR1_INOUT12 0x0B0 0x2F4 0x0 0x1 0x0 453 + #define IOMUXC_GPIO_EMC_B1_40_MQS_RIGHT 0x0B0 0x2F4 0x0 0x2 0x0 454 + #define IOMUXC_GPIO_EMC_B1_40_LPUART6_TXD 0x0B0 0x2F4 0x0 0x3 0x0 455 + #define IOMUXC_GPIO_EMC_B1_40_GPIO_MUX2_IO08 0x0B0 0x2F4 0x0 0x5 0x0 456 + #define IOMUXC_GPIO_EMC_B1_40_ENET_1G_MDC 0x0B0 0x2F4 0x0 0x7 0x0 457 + #define IOMUXC_GPIO_EMC_B1_40_CCM_CLKO1 0x0B0 0x2F4 0x0 0x9 0x0 458 + #define IOMUXC_GPIO_EMC_B1_40_GPIO8_IO08 0x0B0 0x2F4 0x0 0xA 0x0 459 + 460 + #define IOMUXC_GPIO_EMC_B1_41_GPIO8_IO09 0x0B4 0x2F8 0x0 0xA 0x0 461 + #define IOMUXC_GPIO_EMC_B1_41_SEMC_CSX00 0x0B4 0x2F8 0x0 0x0 0x0 462 + #define IOMUXC_GPIO_EMC_B1_41_XBAR1_INOUT13 0x0B4 0x2F8 0x0 0x1 0x0 463 + #define IOMUXC_GPIO_EMC_B1_41_MQS_LEFT 0x0B4 0x2F8 0x0 0x2 0x0 464 + #define IOMUXC_GPIO_EMC_B1_41_LPUART6_RXD 0x0B4 0x2F8 0x0 0x3 0x0 465 + #define IOMUXC_GPIO_EMC_B1_41_FLEXSPI2_B_DATA07 0x0B4 0x2F8 0x0 0x4 0x0 466 + #define IOMUXC_GPIO_EMC_B1_41_GPIO_MUX2_IO09 0x0B4 0x2F8 0x0 0x5 0x0 467 + #define IOMUXC_GPIO_EMC_B1_41_ENET_1G_MDIO 0x0B4 0x2F8 0x4C8 0x7 0x0 468 + #define IOMUXC_GPIO_EMC_B1_41_CCM_CLKO2 0x0B4 0x2F8 0x0 0x9 0x0 469 + 470 + #define IOMUXC_GPIO_EMC_B2_00_SEMC_DATA16 0x0B8 0x2FC 0x0 0x0 0x0 471 + #define IOMUXC_GPIO_EMC_B2_00_CCM_ENET_REF_CLK_25M 0x0B8 0x2FC 0x0 0x1 0x0 472 + #define IOMUXC_GPIO_EMC_B2_00_TMR3_TIMER1 0x0B8 0x2FC 0x658 0x2 0x0 473 + #define IOMUXC_GPIO_EMC_B2_00_LPUART6_CTS_B 0x0B8 0x2FC 0x0 0x3 0x0 474 + #define IOMUXC_GPIO_EMC_B2_00_FLEXSPI2_B_DATA06 0x0B8 0x2FC 0x0 0x4 0x0 475 + #define IOMUXC_GPIO_EMC_B2_00_GPIO_MUX2_IO10 0x0B8 0x2FC 0x0 0x5 0x0 476 + #define IOMUXC_GPIO_EMC_B2_00_XBAR1_INOUT20 0x0B8 0x2FC 0x6D8 0x6 0x0 477 + #define IOMUXC_GPIO_EMC_B2_00_ENET_QOS_1588_EVENT1_OUT 0x0B8 0x2FC 0x0 0x7 0x0 478 + #define IOMUXC_GPIO_EMC_B2_00_LPSPI1_SCK 0x0B8 0x2FC 0x5D0 0x8 0x0 479 + #define IOMUXC_GPIO_EMC_B2_00_LPI2C2_SCL 0x0B8 0x2FC 0x5B4 0x9 0x0 480 + #define IOMUXC_GPIO_EMC_B2_00_GPIO8_IO10 0x0B8 0x2FC 0x0 0xA 0x0 481 + #define IOMUXC_GPIO_EMC_B2_00_FLEXPWM3_PWM0_A 0x0B8 0x2FC 0x530 0xB 0x1 482 + 483 + #define IOMUXC_GPIO_EMC_B2_01_SEMC_DATA17 0x0BC 0x300 0x0 0x0 0x0 484 + #define IOMUXC_GPIO_EMC_B2_01_USDHC2_CD_B 0x0BC 0x300 0x6D0 0x1 0x0 485 + #define IOMUXC_GPIO_EMC_B2_01_TMR4_TIMER1 0x0BC 0x300 0x664 0x2 0x0 486 + #define IOMUXC_GPIO_EMC_B2_01_LPUART6_RTS_B 0x0BC 0x300 0x0 0x3 0x0 487 + #define IOMUXC_GPIO_EMC_B2_01_FLEXSPI2_B_DATA05 0x0BC 0x300 0x0 0x4 0x0 488 + #define IOMUXC_GPIO_EMC_B2_01_GPIO_MUX2_IO11 0x0BC 0x300 0x0 0x5 0x0 489 + #define IOMUXC_GPIO_EMC_B2_01_XBAR1_INOUT21 0x0BC 0x300 0x6DC 0x6 0x0 490 + #define IOMUXC_GPIO_EMC_B2_01_ENET_QOS_1588_EVENT1_IN 0x0BC 0x300 0x0 0x7 0x0 491 + #define IOMUXC_GPIO_EMC_B2_01_LPSPI1_PCS0 0x0BC 0x300 0x5CC 0x8 0x0 492 + #define IOMUXC_GPIO_EMC_B2_01_LPI2C2_SDA 0x0BC 0x300 0x5B8 0x9 0x0 493 + #define IOMUXC_GPIO_EMC_B2_01_GPIO8_IO11 0x0BC 0x300 0x0 0xA 0x0 494 + #define IOMUXC_GPIO_EMC_B2_01_FLEXPWM3_PWM0_B 0x0BC 0x300 0x540 0xB 0x1 495 + 496 + #define IOMUXC_GPIO_EMC_B2_02_SEMC_DATA18 0x0C0 0x304 0x0 0x0 0x0 497 + #define IOMUXC_GPIO_EMC_B2_02_USDHC2_WP 0x0C0 0x304 0x6D4 0x1 0x0 498 + #define IOMUXC_GPIO_EMC_B2_02_VIDEO_MUX_CSI_DATA23 0x0C0 0x304 0x0 0x3 0x0 499 + #define IOMUXC_GPIO_EMC_B2_02_FLEXSPI2_B_DATA04 0x0C0 0x304 0x0 0x4 0x0 500 + #define IOMUXC_GPIO_EMC_B2_02_GPIO_MUX2_IO12 0x0C0 0x304 0x0 0x5 0x0 501 + #define IOMUXC_GPIO_EMC_B2_02_XBAR1_INOUT22 0x0C0 0x304 0x6E0 0x6 0x0 502 + #define IOMUXC_GPIO_EMC_B2_02_ENET_QOS_1588_EVENT1_AUX_IN 0x0C0 0x304 0x0 0x7 0x0 503 + #define IOMUXC_GPIO_EMC_B2_02_LPSPI1_SOUT 0x0C0 0x304 0x5D8 0x8 0x0 504 + #define IOMUXC_GPIO_EMC_B2_02_GPIO8_IO12 0x0C0 0x304 0x0 0xA 0x0 505 + #define IOMUXC_GPIO_EMC_B2_02_FLEXPWM3_PWM1_A 0x0C0 0x304 0x534 0xB 0x1 506 + 507 + #define IOMUXC_GPIO_EMC_B2_03_SEMC_DATA19 0x0C4 0x308 0x0 0x0 0x0 508 + #define IOMUXC_GPIO_EMC_B2_03_USDHC2_VSELECT 0x0C4 0x308 0x0 0x1 0x0 509 + #define IOMUXC_GPIO_EMC_B2_03_VIDEO_MUX_CSI_DATA22 0x0C4 0x308 0x0 0x3 0x0 510 + #define IOMUXC_GPIO_EMC_B2_03_FLEXSPI2_B_DATA03 0x0C4 0x308 0x0 0x4 0x0 511 + #define IOMUXC_GPIO_EMC_B2_03_GPIO_MUX2_IO13 0x0C4 0x308 0x0 0x5 0x0 512 + #define IOMUXC_GPIO_EMC_B2_03_XBAR1_INOUT23 0x0C4 0x308 0x6E4 0x6 0x0 513 + #define IOMUXC_GPIO_EMC_B2_03_ENET_1G_TX_DATA03 0x0C4 0x308 0x0 0x7 0x0 514 + #define IOMUXC_GPIO_EMC_B2_03_LPSPI1_SIN 0x0C4 0x308 0x5D4 0x8 0x0 515 + #define IOMUXC_GPIO_EMC_B2_03_GPIO8_IO13 0x0C4 0x308 0x0 0xA 0x0 516 + #define IOMUXC_GPIO_EMC_B2_03_FLEXPWM3_PWM1_B 0x0C4 0x308 0x544 0xB 0x1 517 + 518 + #define IOMUXC_GPIO_EMC_B2_04_SEMC_DATA20 0x0C8 0x30C 0x0 0x0 0x0 519 + #define IOMUXC_GPIO_EMC_B2_04_USDHC2_RESET_B 0x0C8 0x30C 0x0 0x1 0x0 520 + #define IOMUXC_GPIO_EMC_B2_04_SAI2_MCLK 0x0C8 0x30C 0x0 0x2 0x0 521 + #define IOMUXC_GPIO_EMC_B2_04_VIDEO_MUX_CSI_DATA21 0x0C8 0x30C 0x0 0x3 0x0 522 + #define IOMUXC_GPIO_EMC_B2_04_FLEXSPI2_B_DATA02 0x0C8 0x30C 0x0 0x4 0x0 523 + #define IOMUXC_GPIO_EMC_B2_04_GPIO_MUX2_IO14 0x0C8 0x30C 0x0 0x5 0x0 524 + #define IOMUXC_GPIO_EMC_B2_04_XBAR1_INOUT24 0x0C8 0x30C 0x6E8 0x6 0x0 525 + #define IOMUXC_GPIO_EMC_B2_04_ENET_1G_TX_DATA02 0x0C8 0x30C 0x0 0x7 0x0 526 + #define IOMUXC_GPIO_EMC_B2_04_LPSPI3_SCK 0x0C8 0x30C 0x600 0x8 0x0 527 + #define IOMUXC_GPIO_EMC_B2_04_GPIO8_IO14 0x0C8 0x30C 0x0 0xA 0x0 528 + #define IOMUXC_GPIO_EMC_B2_04_FLEXPWM3_PWM2_A 0x0C8 0x30C 0x538 0xB 0x1 529 + 530 + #define IOMUXC_GPIO_EMC_B2_05_SEMC_DATA21 0x0CC 0x310 0x0 0x0 0x0 531 + #define IOMUXC_GPIO_EMC_B2_05_GPT3_CLK 0x0CC 0x310 0x598 0x1 0x0 532 + #define IOMUXC_GPIO_EMC_B2_05_SAI2_RX_SYNC 0x0CC 0x310 0x0 0x2 0x0 533 + #define IOMUXC_GPIO_EMC_B2_05_VIDEO_MUX_CSI_DATA20 0x0CC 0x310 0x0 0x3 0x0 534 + #define IOMUXC_GPIO_EMC_B2_05_FLEXSPI2_B_DATA01 0x0CC 0x310 0x0 0x4 0x0 535 + #define IOMUXC_GPIO_EMC_B2_05_GPIO_MUX2_IO15 0x0CC 0x310 0x0 0x5 0x0 536 + #define IOMUXC_GPIO_EMC_B2_05_XBAR1_INOUT25 0x0CC 0x310 0x6EC 0x6 0x0 537 + #define IOMUXC_GPIO_EMC_B2_05_ENET_1G_RX_CLK 0x0CC 0x310 0x4CC 0x7 0x0 538 + #define IOMUXC_GPIO_EMC_B2_05_LPSPI3_PCS0 0x0CC 0x310 0x5F0 0x8 0x0 539 + #define IOMUXC_GPIO_EMC_B2_05_PIT1_TRIGGER0 0x0CC 0x310 0x0 0x9 0x0 540 + #define IOMUXC_GPIO_EMC_B2_05_GPIO8_IO15 0x0CC 0x310 0x0 0xA 0x0 541 + #define IOMUXC_GPIO_EMC_B2_05_FLEXPWM3_PWM2_B 0x0CC 0x310 0x548 0xB 0x1 542 + 543 + #define IOMUXC_GPIO_EMC_B2_06_SEMC_DATA22 0x0D0 0x314 0x0 0x0 0x0 544 + #define IOMUXC_GPIO_EMC_B2_06_GPT3_CAPTURE1 0x0D0 0x314 0x590 0x1 0x0 545 + #define IOMUXC_GPIO_EMC_B2_06_GPIO8_IO16 0x0D0 0x314 0x0 0xA 0x0 546 + #define IOMUXC_GPIO_EMC_B2_06_SAI2_RX_BCLK 0x0D0 0x314 0x0 0x2 0x0 547 + #define IOMUXC_GPIO_EMC_B2_06_FLEXPWM3_PWM3_A 0x0D0 0x314 0x53C 0xB 0x1 548 + #define IOMUXC_GPIO_EMC_B2_06_VIDEO_MUX_CSI_DATA19 0x0D0 0x314 0x0 0x3 0x0 549 + #define IOMUXC_GPIO_EMC_B2_06_FLEXSPI2_B_DATA00 0x0D0 0x314 0x0 0x4 0x0 550 + #define IOMUXC_GPIO_EMC_B2_06_GPIO_MUX2_IO16 0x0D0 0x314 0x0 0x5 0x0 551 + #define IOMUXC_GPIO_EMC_B2_06_XBAR1_INOUT26 0x0D0 0x314 0x6F0 0x6 0x0 552 + #define IOMUXC_GPIO_EMC_B2_06_ENET_1G_TX_ER 0x0D0 0x314 0x0 0x7 0x0 553 + #define IOMUXC_GPIO_EMC_B2_06_LPSPI3_SOUT 0x0D0 0x314 0x608 0x8 0x0 554 + #define IOMUXC_GPIO_EMC_B2_06_PIT1_TRIGGER1 0x0D0 0x314 0x0 0x9 0x0 555 + 556 + #define IOMUXC_GPIO_EMC_B2_07_SEMC_DATA23 0x0D4 0x318 0x0 0x0 0x0 557 + #define IOMUXC_GPIO_EMC_B2_07_GPT3_CAPTURE2 0x0D4 0x318 0x594 0x1 0x0 558 + #define IOMUXC_GPIO_EMC_B2_07_SAI2_RX_DATA 0x0D4 0x318 0x0 0x2 0x0 559 + #define IOMUXC_GPIO_EMC_B2_07_VIDEO_MUX_CSI_DATA18 0x0D4 0x318 0x0 0x3 0x0 560 + #define IOMUXC_GPIO_EMC_B2_07_FLEXSPI2_B_DQS 0x0D4 0x318 0x0 0x4 0x0 561 + #define IOMUXC_GPIO_EMC_B2_07_GPIO_MUX2_IO17 0x0D4 0x318 0x0 0x5 0x0 562 + #define IOMUXC_GPIO_EMC_B2_07_XBAR1_INOUT27 0x0D4 0x318 0x6F4 0x6 0x0 563 + #define IOMUXC_GPIO_EMC_B2_07_ENET_1G_RX_DATA03 0x0D4 0x318 0x4DC 0x7 0x0 564 + #define IOMUXC_GPIO_EMC_B2_07_LPSPI3_SIN 0x0D4 0x318 0x604 0x8 0x0 565 + #define IOMUXC_GPIO_EMC_B2_07_PIT1_TRIGGER2 0x0D4 0x318 0x0 0x9 0x0 566 + #define IOMUXC_GPIO_EMC_B2_07_GPIO8_IO17 0x0D4 0x318 0x0 0xA 0x0 567 + #define IOMUXC_GPIO_EMC_B2_07_FLEXPWM3_PWM3_B 0x0D4 0x318 0x54C 0xB 0x1 568 + 569 + #define IOMUXC_GPIO_EMC_B2_08_SEMC_DM02 0x0D8 0x31C 0x0 0x0 0x0 570 + #define IOMUXC_GPIO_EMC_B2_08_GPT3_COMPARE1 0x0D8 0x31C 0x0 0x1 0x0 571 + #define IOMUXC_GPIO_EMC_B2_08_SAI2_TX_DATA 0x0D8 0x31C 0x0 0x2 0x0 572 + #define IOMUXC_GPIO_EMC_B2_08_VIDEO_MUX_CSI_DATA17 0x0D8 0x31C 0x0 0x3 0x0 573 + #define IOMUXC_GPIO_EMC_B2_08_FLEXSPI2_B_SS0_B 0x0D8 0x31C 0x0 0x4 0x0 574 + #define IOMUXC_GPIO_EMC_B2_08_GPIO_MUX2_IO18 0x0D8 0x31C 0x0 0x5 0x0 575 + #define IOMUXC_GPIO_EMC_B2_08_XBAR1_INOUT28 0x0D8 0x31C 0x6F8 0x6 0x0 576 + #define IOMUXC_GPIO_EMC_B2_08_ENET_1G_RX_DATA02 0x0D8 0x31C 0x4D8 0x7 0x0 577 + #define IOMUXC_GPIO_EMC_B2_08_LPSPI3_PCS1 0x0D8 0x31C 0x5F4 0x8 0x0 578 + #define IOMUXC_GPIO_EMC_B2_08_PIT1_TRIGGER3 0x0D8 0x31C 0x0 0x9 0x0 579 + #define IOMUXC_GPIO_EMC_B2_08_GPIO8_IO18 0x0D8 0x31C 0x0 0xA 0x0 580 + 581 + #define IOMUXC_GPIO_EMC_B2_09_GPIO8_IO19 0x0DC 0x320 0x0 0xA 0x0 582 + #define IOMUXC_GPIO_EMC_B2_09_SEMC_DATA24 0x0DC 0x320 0x0 0x0 0x0 583 + #define IOMUXC_GPIO_EMC_B2_09_GPT3_COMPARE2 0x0DC 0x320 0x0 0x1 0x0 584 + #define IOMUXC_GPIO_EMC_B2_09_SAI2_TX_BCLK 0x0DC 0x320 0x0 0x2 0x0 585 + #define IOMUXC_GPIO_EMC_B2_09_VIDEO_MUX_CSI_DATA16 0x0DC 0x320 0x0 0x3 0x0 586 + #define IOMUXC_GPIO_EMC_B2_09_FLEXSPI2_B_SCLK 0x0DC 0x320 0x0 0x4 0x0 587 + #define IOMUXC_GPIO_EMC_B2_09_GPIO_MUX2_IO19 0x0DC 0x320 0x0 0x5 0x0 588 + #define IOMUXC_GPIO_EMC_B2_09_XBAR1_INOUT29 0x0DC 0x320 0x6FC 0x6 0x0 589 + #define IOMUXC_GPIO_EMC_B2_09_ENET_1G_CRS 0x0DC 0x320 0x0 0x7 0x0 590 + #define IOMUXC_GPIO_EMC_B2_09_LPSPI3_PCS2 0x0DC 0x320 0x5F8 0x8 0x0 591 + #define IOMUXC_GPIO_EMC_B2_09_TMR1_TIMER0 0x0DC 0x320 0x63C 0x9 0x1 592 + 593 + #define IOMUXC_GPIO_EMC_B2_10_GPIO8_IO20 0x0E0 0x324 0x0 0xA 0x0 594 + #define IOMUXC_GPIO_EMC_B2_10_SEMC_DATA25 0x0E0 0x324 0x0 0x0 0x0 595 + #define IOMUXC_GPIO_EMC_B2_10_GPT3_COMPARE3 0x0E0 0x324 0x0 0x1 0x0 596 + #define IOMUXC_GPIO_EMC_B2_10_SAI2_TX_SYNC 0x0E0 0x324 0x0 0x2 0x0 597 + #define IOMUXC_GPIO_EMC_B2_10_VIDEO_MUX_CSI_FIELD 0x0E0 0x324 0x0 0x3 0x0 598 + #define IOMUXC_GPIO_EMC_B2_10_FLEXSPI2_A_SCLK 0x0E0 0x324 0x58C 0x4 0x0 599 + #define IOMUXC_GPIO_EMC_B2_10_GPIO_MUX2_IO20 0x0E0 0x324 0x0 0x5 0x0 600 + #define IOMUXC_GPIO_EMC_B2_10_XBAR1_INOUT30 0x0E0 0x324 0x700 0x6 0x0 601 + #define IOMUXC_GPIO_EMC_B2_10_ENET_1G_COL 0x0E0 0x324 0x0 0x7 0x0 602 + #define IOMUXC_GPIO_EMC_B2_10_LPSPI3_PCS3 0x0E0 0x324 0x5FC 0x8 0x0 603 + #define IOMUXC_GPIO_EMC_B2_10_TMR1_TIMER1 0x0E0 0x324 0x640 0x9 0x1 604 + 605 + #define IOMUXC_GPIO_EMC_B2_11_SEMC_DATA26 0x0E4 0x328 0x0 0x0 0x0 606 + #define IOMUXC_GPIO_EMC_B2_11_SPDIF_IN 0x0E4 0x328 0x6B4 0x1 0x0 607 + #define IOMUXC_GPIO_EMC_B2_11_ENET_1G_TX_DATA00 0x0E4 0x328 0x0 0x2 0x0 608 + #define IOMUXC_GPIO_EMC_B2_11_SAI3_RX_SYNC 0x0E4 0x328 0x0 0x3 0x0 609 + #define IOMUXC_GPIO_EMC_B2_11_FLEXSPI2_A_SS0_B 0x0E4 0x328 0x0 0x4 0x0 610 + #define IOMUXC_GPIO_EMC_B2_11_GPIO_MUX2_IO21 0x0E4 0x328 0x0 0x5 0x0 611 + #define IOMUXC_GPIO_EMC_B2_11_XBAR1_INOUT31 0x0E4 0x328 0x704 0x6 0x0 612 + #define IOMUXC_GPIO_EMC_B2_11_EMVSIM1_IO 0x0E4 0x328 0x69C 0x8 0x0 613 + #define IOMUXC_GPIO_EMC_B2_11_TMR1_TIMER2 0x0E4 0x328 0x644 0x9 0x0 614 + #define IOMUXC_GPIO_EMC_B2_11_GPIO8_IO21 0x0E4 0x328 0x0 0xA 0x0 615 + 616 + #define IOMUXC_GPIO_EMC_B2_12_SEMC_DATA27 0x0E8 0x32C 0x0 0x0 0x0 617 + #define IOMUXC_GPIO_EMC_B2_12_SPDIF_OUT 0x0E8 0x32C 0x0 0x1 0x0 618 + #define IOMUXC_GPIO_EMC_B2_12_ENET_1G_TX_DATA01 0x0E8 0x32C 0x0 0x2 0x0 619 + #define IOMUXC_GPIO_EMC_B2_12_SAI3_RX_BCLK 0x0E8 0x32C 0x0 0x3 0x0 620 + #define IOMUXC_GPIO_EMC_B2_12_FLEXSPI2_A_DQS 0x0E8 0x32C 0x0 0x4 0x0 621 + #define IOMUXC_GPIO_EMC_B2_12_GPIO_MUX2_IO22 0x0E8 0x32C 0x0 0x5 0x0 622 + #define IOMUXC_GPIO_EMC_B2_12_XBAR1_INOUT32 0x0E8 0x32C 0x708 0x6 0x0 623 + #define IOMUXC_GPIO_EMC_B2_12_EMVSIM1_CLK 0x0E8 0x32C 0x0 0x8 0x0 624 + #define IOMUXC_GPIO_EMC_B2_12_TMR1_TIMER3 0x0E8 0x32C 0x0 0x9 0x0 625 + #define IOMUXC_GPIO_EMC_B2_12_GPIO8_IO22 0x0E8 0x32C 0x0 0xA 0x0 626 + 627 + #define IOMUXC_GPIO_EMC_B2_13_GPIO8_IO23 0x0EC 0x330 0x0 0xA 0x0 628 + #define IOMUXC_GPIO_EMC_B2_13_SEMC_DATA28 0x0EC 0x330 0x0 0x0 0x0 629 + #define IOMUXC_GPIO_EMC_B2_13_ENET_1G_TX_EN 0x0EC 0x330 0x0 0x2 0x0 630 + #define IOMUXC_GPIO_EMC_B2_13_SAI3_RX_DATA 0x0EC 0x330 0x0 0x3 0x0 631 + #define IOMUXC_GPIO_EMC_B2_13_FLEXSPI2_A_DATA00 0x0EC 0x330 0x57C 0x4 0x0 632 + #define IOMUXC_GPIO_EMC_B2_13_GPIO_MUX2_IO23 0x0EC 0x330 0x0 0x5 0x0 633 + #define IOMUXC_GPIO_EMC_B2_13_XBAR1_INOUT33 0x0EC 0x330 0x70C 0x6 0x0 634 + #define IOMUXC_GPIO_EMC_B2_13_EMVSIM1_RST 0x0EC 0x330 0x0 0x8 0x0 635 + #define IOMUXC_GPIO_EMC_B2_13_TMR2_TIMER0 0x0EC 0x330 0x648 0x9 0x1 636 + 637 + #define IOMUXC_GPIO_EMC_B2_14_SEMC_DATA29 0x0F0 0x334 0x0 0x0 0x0 638 + #define IOMUXC_GPIO_EMC_B2_14_ENET_1G_TX_CLK_IO 0x0F0 0x334 0x4E8 0x2 0x0 639 + #define IOMUXC_GPIO_EMC_B2_14_SAI3_TX_DATA 0x0F0 0x334 0x0 0x3 0x0 640 + #define IOMUXC_GPIO_EMC_B2_14_FLEXSPI2_A_DATA01 0x0F0 0x334 0x580 0x4 0x0 641 + #define IOMUXC_GPIO_EMC_B2_14_GPIO_MUX2_IO24 0x0F0 0x334 0x0 0x5 0x0 642 + #define IOMUXC_GPIO_EMC_B2_14_XBAR1_INOUT34 0x0F0 0x334 0x710 0x6 0x0 643 + #define IOMUXC_GPIO_EMC_B2_14_SFA_ipp_do_atx_clk_under_test 0x0F0 0x334 0x0 0x7 0x0 644 + #define IOMUXC_GPIO_EMC_B2_14_EMVSIM1_SVEN 0x0F0 0x334 0x0 0x8 0x0 645 + #define IOMUXC_GPIO_EMC_B2_14_TMR2_TIMER1 0x0F0 0x334 0x64C 0x9 0x1 646 + #define IOMUXC_GPIO_EMC_B2_14_GPIO8_IO24 0x0F0 0x334 0x0 0xA 0x0 647 + 648 + #define IOMUXC_GPIO_EMC_B2_15_SEMC_DATA30 0x0F4 0x338 0x0 0x0 0x0 649 + #define IOMUXC_GPIO_EMC_B2_15_ENET_1G_RX_DATA00 0x0F4 0x338 0x4D0 0x2 0x0 650 + #define IOMUXC_GPIO_EMC_B2_15_SAI3_TX_BCLK 0x0F4 0x338 0x0 0x3 0x0 651 + #define IOMUXC_GPIO_EMC_B2_15_FLEXSPI2_A_DATA02 0x0F4 0x338 0x584 0x4 0x0 652 + #define IOMUXC_GPIO_EMC_B2_15_GPIO_MUX2_IO25 0x0F4 0x338 0x0 0x5 0x0 653 + #define IOMUXC_GPIO_EMC_B2_15_XBAR1_INOUT35 0x0F4 0x338 0x714 0x6 0x0 654 + #define IOMUXC_GPIO_EMC_B2_15_EMVSIM1_PD 0x0F4 0x338 0x6A0 0x8 0x0 655 + #define IOMUXC_GPIO_EMC_B2_15_TMR2_TIMER2 0x0F4 0x338 0x650 0x9 0x0 656 + #define IOMUXC_GPIO_EMC_B2_15_GPIO8_IO25 0x0F4 0x338 0x0 0xA 0x0 657 + 658 + #define IOMUXC_GPIO_EMC_B2_16_GPIO8_IO26 0x0F8 0x33C 0x0 0xA 0x0 659 + #define IOMUXC_GPIO_EMC_B2_16_SEMC_DATA31 0x0F8 0x33C 0x0 0x0 0x0 660 + #define IOMUXC_GPIO_EMC_B2_16_XBAR1_INOUT14 0x0F8 0x33C 0x0 0x1 0x0 661 + #define IOMUXC_GPIO_EMC_B2_16_ENET_1G_RX_DATA01 0x0F8 0x33C 0x4D4 0x2 0x0 662 + #define IOMUXC_GPIO_EMC_B2_16_SAI3_TX_SYNC 0x0F8 0x33C 0x0 0x3 0x0 663 + #define IOMUXC_GPIO_EMC_B2_16_FLEXSPI2_A_DATA03 0x0F8 0x33C 0x588 0x4 0x0 664 + #define IOMUXC_GPIO_EMC_B2_16_GPIO_MUX2_IO26 0x0F8 0x33C 0x0 0x5 0x0 665 + #define IOMUXC_GPIO_EMC_B2_16_EMVSIM1_POWER_FAIL 0x0F8 0x33C 0x6A4 0x8 0x0 666 + #define IOMUXC_GPIO_EMC_B2_16_TMR2_TIMER3 0x0F8 0x33C 0x0 0x9 0x0 667 + 668 + #define IOMUXC_GPIO_EMC_B2_17_SEMC_DM03 0x0FC 0x340 0x0 0x0 0x0 669 + #define IOMUXC_GPIO_EMC_B2_17_XBAR1_INOUT15 0x0FC 0x340 0x0 0x1 0x0 670 + #define IOMUXC_GPIO_EMC_B2_17_ENET_1G_RX_EN 0x0FC 0x340 0x4E0 0x2 0x0 671 + #define IOMUXC_GPIO_EMC_B2_17_SAI3_MCLK 0x0FC 0x340 0x0 0x3 0x0 672 + #define IOMUXC_GPIO_EMC_B2_17_FLEXSPI2_A_DATA04 0x0FC 0x340 0x0 0x4 0x0 673 + #define IOMUXC_GPIO_EMC_B2_17_GPIO_MUX2_IO27 0x0FC 0x340 0x0 0x5 0x0 674 + #define IOMUXC_GPIO_EMC_B2_17_WDOG1_ANY 0x0FC 0x340 0x0 0x8 0x0 675 + #define IOMUXC_GPIO_EMC_B2_17_TMR3_TIMER0 0x0FC 0x340 0x654 0x9 0x1 676 + #define IOMUXC_GPIO_EMC_B2_17_GPIO8_IO27 0x0FC 0x340 0x0 0xA 0x0 677 + 678 + #define IOMUXC_GPIO_EMC_B2_18_SEMC_DQS4 0x100 0x344 0x0 0x0 0x0 679 + #define IOMUXC_GPIO_EMC_B2_18_XBAR1_INOUT16 0x100 0x344 0x0 0x1 0x0 680 + #define IOMUXC_GPIO_EMC_B2_18_ENET_1G_RX_ER 0x100 0x344 0x4E4 0x2 0x0 681 + #define IOMUXC_GPIO_EMC_B2_18_EWM_OUT_B 0x100 0x344 0x0 0x3 0x0 682 + #define IOMUXC_GPIO_EMC_B2_18_FLEXSPI2_A_DATA05 0x100 0x344 0x0 0x4 0x0 683 + #define IOMUXC_GPIO_EMC_B2_18_GPIO_MUX2_IO28 0x100 0x344 0x0 0x5 0x0 684 + #define IOMUXC_GPIO_EMC_B2_18_FLEXSPI1_A_DQS 0x100 0x344 0x550 0x6 0x0 685 + #define IOMUXC_GPIO_EMC_B2_18_WDOG1_B 0x100 0x344 0x0 0x8 0x0 686 + #define IOMUXC_GPIO_EMC_B2_18_TMR3_TIMER1 0x100 0x344 0x658 0x9 0x1 687 + #define IOMUXC_GPIO_EMC_B2_18_GPIO8_IO28 0x100 0x344 0x0 0xA 0x0 688 + 689 + #define IOMUXC_GPIO_EMC_B2_19_GPIO8_IO29 0x104 0x348 0x0 0xA 0x0 690 + #define IOMUXC_GPIO_EMC_B2_19_SEMC_CLKX00 0x104 0x348 0x0 0x0 0x0 691 + #define IOMUXC_GPIO_EMC_B2_19_ENET_MDC 0x104 0x348 0x0 0x1 0x0 692 + #define IOMUXC_GPIO_EMC_B2_19_ENET_1G_MDC 0x104 0x348 0x0 0x2 0x0 693 + #define IOMUXC_GPIO_EMC_B2_19_ENET_1G_REF_CLK 0x104 0x348 0x4C4 0x3 0x0 694 + #define IOMUXC_GPIO_EMC_B2_19_FLEXSPI2_A_DATA06 0x104 0x348 0x0 0x4 0x0 695 + #define IOMUXC_GPIO_EMC_B2_19_GPIO_MUX2_IO29 0x104 0x348 0x0 0x5 0x0 696 + #define IOMUXC_GPIO_EMC_B2_19_ENET_QOS_MDC 0x104 0x348 0x0 0x8 0x0 697 + #define IOMUXC_GPIO_EMC_B2_19_TMR3_TIMER2 0x104 0x348 0x65C 0x9 0x0 698 + 699 + #define IOMUXC_GPIO_EMC_B2_20_GPIO8_IO30 0x108 0x34C 0x0 0xA 0x0 700 + #define IOMUXC_GPIO_EMC_B2_20_SEMC_CLKX01 0x108 0x34C 0x0 0x0 0x0 701 + #define IOMUXC_GPIO_EMC_B2_20_ENET_MDIO 0x108 0x34C 0x4AC 0x1 0x0 702 + #define IOMUXC_GPIO_EMC_B2_20_ENET_1G_MDIO 0x108 0x34C 0x4C8 0x2 0x1 703 + #define IOMUXC_GPIO_EMC_B2_20_ENET_QOS_REF_CLK 0x108 0x34C 0x4A0 0x3 0x0 704 + #define IOMUXC_GPIO_EMC_B2_20_FLEXSPI2_A_DATA07 0x108 0x34C 0x0 0x4 0x0 705 + #define IOMUXC_GPIO_EMC_B2_20_GPIO_MUX2_IO30 0x108 0x34C 0x0 0x5 0x0 706 + #define IOMUXC_GPIO_EMC_B2_20_ENET_QOS_MDIO 0x108 0x34C 0x4EC 0x8 0x0 707 + #define IOMUXC_GPIO_EMC_B2_20_TMR3_TIMER3 0x108 0x34C 0x0 0x9 0x0 708 + 709 + #define IOMUXC_GPIO_AD_00_GPIO8_IO31 0x10C 0x350 0x0 0xA 0x0 710 + #define IOMUXC_GPIO_AD_00_EMVSIM1_IO 0x10C 0x350 0x69C 0x0 0x1 711 + #define IOMUXC_GPIO_AD_00_FLEXCAN2_TX 0x10C 0x350 0x0 0x1 0x0 712 + #define IOMUXC_GPIO_AD_00_ENET_1G_1588_EVENT1_IN 0x10C 0x350 0x0 0x2 0x0 713 + #define IOMUXC_GPIO_AD_00_GPT2_CAPTURE1 0x10C 0x350 0x0 0x3 0x0 714 + #define IOMUXC_GPIO_AD_00_FLEXPWM1_PWM0_A 0x10C 0x350 0x500 0x4 0x1 715 + #define IOMUXC_GPIO_AD_00_GPIO_MUX2_IO31 0x10C 0x350 0x0 0x5 0x0 716 + #define IOMUXC_GPIO_AD_00_LPUART7_TXD 0x10C 0x350 0x630 0x6 0x0 717 + #define IOMUXC_GPIO_AD_00_FLEXIO2_D00 0x10C 0x350 0x0 0x8 0x0 718 + #define IOMUXC_GPIO_AD_00_FLEXSPI2_B_SS1_B 0x10C 0x350 0x0 0x9 0x0 719 + 720 + #define IOMUXC_GPIO_AD_01_GPIO9_IO00 0x110 0x354 0x0 0xA 0x0 721 + #define IOMUXC_GPIO_AD_01_EMVSIM1_CLK 0x110 0x354 0x0 0x0 0x0 722 + #define IOMUXC_GPIO_AD_01_FLEXCAN2_RX 0x110 0x354 0x49C 0x1 0x0 723 + #define IOMUXC_GPIO_AD_01_ENET_1G_1588_EVENT1_OUT 0x110 0x354 0x0 0x2 0x0 724 + #define IOMUXC_GPIO_AD_01_GPT2_CAPTURE2 0x110 0x354 0x0 0x3 0x0 725 + #define IOMUXC_GPIO_AD_01_FLEXPWM1_PWM0_B 0x110 0x354 0x50C 0x4 0x1 726 + #define IOMUXC_GPIO_AD_01_GPIO_MUX3_IO00 0x110 0x354 0x0 0x5 0x0 727 + #define IOMUXC_GPIO_AD_01_LPUART7_RXD 0x110 0x354 0x62C 0x6 0x0 728 + #define IOMUXC_GPIO_AD_01_FLEXIO2_D01 0x110 0x354 0x0 0x8 0x0 729 + #define IOMUXC_GPIO_AD_01_FLEXSPI2_A_SS1_B 0x110 0x354 0x0 0x9 0x0 730 + 731 + #define IOMUXC_GPIO_AD_02_GPIO9_IO01 0x114 0x358 0x0 0xA 0x0 732 + #define IOMUXC_GPIO_AD_02_EMVSIM1_RST 0x114 0x358 0x0 0x0 0x0 733 + #define IOMUXC_GPIO_AD_02_LPUART7_CTS_B 0x114 0x358 0x0 0x1 0x0 734 + #define IOMUXC_GPIO_AD_02_ENET_1G_1588_EVENT2_IN 0x114 0x358 0x0 0x2 0x0 735 + #define IOMUXC_GPIO_AD_02_GPT2_COMPARE1 0x114 0x358 0x0 0x3 0x0 736 + #define IOMUXC_GPIO_AD_02_FLEXPWM1_PWM1_A 0x114 0x358 0x504 0x4 0x1 737 + #define IOMUXC_GPIO_AD_02_GPIO_MUX3_IO01 0x114 0x358 0x0 0x5 0x0 738 + #define IOMUXC_GPIO_AD_02_LPUART8_TXD 0x114 0x358 0x638 0x6 0x0 739 + #define IOMUXC_GPIO_AD_02_FLEXIO2_D02 0x114 0x358 0x0 0x8 0x0 740 + #define IOMUXC_GPIO_AD_02_VIDEO_MUX_EXT_DCIC1 0x114 0x358 0x0 0x9 0x0 741 + 742 + #define IOMUXC_GPIO_AD_03_GPIO9_IO02 0x118 0x35C 0x0 0xA 0x0 743 + #define IOMUXC_GPIO_AD_03_EMVSIM1_SVEN 0x118 0x35C 0x0 0x0 0x0 744 + #define IOMUXC_GPIO_AD_03_LPUART7_RTS_B 0x118 0x35C 0x0 0x1 0x0 745 + #define IOMUXC_GPIO_AD_03_ENET_1G_1588_EVENT2_OUT 0x118 0x35C 0x0 0x2 0x0 746 + #define IOMUXC_GPIO_AD_03_GPT2_COMPARE2 0x118 0x35C 0x0 0x3 0x0 747 + #define IOMUXC_GPIO_AD_03_FLEXPWM1_PWM1_B 0x118 0x35C 0x510 0x4 0x1 748 + #define IOMUXC_GPIO_AD_03_GPIO_MUX3_IO02 0x118 0x35C 0x0 0x5 0x0 749 + #define IOMUXC_GPIO_AD_03_LPUART8_RXD 0x118 0x35C 0x634 0x6 0x0 750 + #define IOMUXC_GPIO_AD_03_FLEXIO2_D03 0x118 0x35C 0x0 0x8 0x0 751 + #define IOMUXC_GPIO_AD_03_VIDEO_MUX_EXT_DCIC2 0x118 0x35C 0x0 0x9 0x0 752 + 753 + #define IOMUXC_GPIO_AD_04_EMVSIM1_PD 0x11C 0x360 0x6A0 0x0 0x1 754 + #define IOMUXC_GPIO_AD_04_LPUART8_CTS_B 0x11C 0x360 0x0 0x1 0x0 755 + #define IOMUXC_GPIO_AD_04_ENET_1G_1588_EVENT3_IN 0x11C 0x360 0x0 0x2 0x0 756 + #define IOMUXC_GPIO_AD_04_GPT2_COMPARE3 0x11C 0x360 0x0 0x3 0x0 757 + #define IOMUXC_GPIO_AD_04_FLEXPWM1_PWM2_A 0x11C 0x360 0x508 0x4 0x1 758 + #define IOMUXC_GPIO_AD_04_GPIO_MUX3_IO03 0x11C 0x360 0x0 0x5 0x0 759 + #define IOMUXC_GPIO_AD_04_WDOG1_B 0x11C 0x360 0x0 0x6 0x0 760 + #define IOMUXC_GPIO_AD_04_FLEXIO2_D04 0x11C 0x360 0x0 0x8 0x0 761 + #define IOMUXC_GPIO_AD_04_TMR4_TIMER0 0x11C 0x360 0x660 0x9 0x1 762 + #define IOMUXC_GPIO_AD_04_GPIO9_IO03 0x11C 0x360 0x0 0xA 0x0 763 + 764 + #define IOMUXC_GPIO_AD_05_EMVSIM1_POWER_FAIL 0x120 0x364 0x6A4 0x0 0x1 765 + #define IOMUXC_GPIO_AD_05_LPUART8_RTS_B 0x120 0x364 0x0 0x1 0x0 766 + #define IOMUXC_GPIO_AD_05_ENET_1G_1588_EVENT3_OUT 0x120 0x364 0x0 0x2 0x0 767 + #define IOMUXC_GPIO_AD_05_GPT2_CLK 0x120 0x364 0x0 0x3 0x0 768 + #define IOMUXC_GPIO_AD_05_FLEXPWM1_PWM2_B 0x120 0x364 0x514 0x4 0x1 769 + #define IOMUXC_GPIO_AD_05_GPIO_MUX3_IO04 0x120 0x364 0x0 0x5 0x0 770 + #define IOMUXC_GPIO_AD_05_WDOG2_B 0x120 0x364 0x0 0x6 0x0 771 + #define IOMUXC_GPIO_AD_05_FLEXIO2_D05 0x120 0x364 0x0 0x8 0x0 772 + #define IOMUXC_GPIO_AD_05_TMR4_TIMER1 0x120 0x364 0x664 0x9 0x1 773 + #define IOMUXC_GPIO_AD_05_GPIO9_IO04 0x120 0x364 0x0 0xA 0x0 774 + 775 + #define IOMUXC_GPIO_AD_06_USB_OTG2_OC 0x124 0x368 0x6B8 0x0 0x0 776 + #define IOMUXC_GPIO_AD_06_FLEXCAN1_TX 0x124 0x368 0x0 0x1 0x0 777 + #define IOMUXC_GPIO_AD_06_EMVSIM2_IO 0x124 0x368 0x6A8 0x2 0x0 778 + #define IOMUXC_GPIO_AD_06_GPT3_CAPTURE1 0x124 0x368 0x590 0x3 0x1 779 + #define IOMUXC_GPIO_AD_06_VIDEO_MUX_CSI_DATA15 0x124 0x368 0x0 0x4 0x0 780 + #define IOMUXC_GPIO_AD_06_GPIO_MUX3_IO05 0x124 0x368 0x0 0x5 0x0 781 + #define IOMUXC_GPIO_AD_06_ENET_1588_EVENT1_IN 0x124 0x368 0x0 0x6 0x0 782 + #define IOMUXC_GPIO_AD_06_FLEXIO2_D06 0x124 0x368 0x0 0x8 0x0 783 + #define IOMUXC_GPIO_AD_06_TMR4_TIMER2 0x124 0x368 0x668 0x9 0x0 784 + #define IOMUXC_GPIO_AD_06_GPIO9_IO05 0x124 0x368 0x0 0xA 0x0 785 + #define IOMUXC_GPIO_AD_06_FLEXPWM1_PWM0_X 0x124 0x368 0x0 0xB 0x0 786 + 787 + #define IOMUXC_GPIO_AD_07_USB_OTG2_PWR 0x128 0x36C 0x0 0x0 0x0 788 + #define IOMUXC_GPIO_AD_07_FLEXCAN1_RX 0x128 0x36C 0x498 0x1 0x0 789 + #define IOMUXC_GPIO_AD_07_EMVSIM2_CLK 0x128 0x36C 0x0 0x2 0x0 790 + #define IOMUXC_GPIO_AD_07_GPT3_CAPTURE2 0x128 0x36C 0x594 0x3 0x1 791 + #define IOMUXC_GPIO_AD_07_VIDEO_MUX_CSI_DATA14 0x128 0x36C 0x0 0x4 0x0 792 + #define IOMUXC_GPIO_AD_07_GPIO_MUX3_IO06 0x128 0x36C 0x0 0x5 0x0 793 + #define IOMUXC_GPIO_AD_07_ENET_1588_EVENT1_OUT 0x128 0x36C 0x0 0x6 0x0 794 + #define IOMUXC_GPIO_AD_07_FLEXIO2_D07 0x128 0x36C 0x0 0x8 0x0 795 + #define IOMUXC_GPIO_AD_07_TMR4_TIMER3 0x128 0x36C 0x0 0x9 0x0 796 + #define IOMUXC_GPIO_AD_07_GPIO9_IO06 0x128 0x36C 0x0 0xA 0x0 797 + #define IOMUXC_GPIO_AD_07_FLEXPWM1_PWM1_X 0x128 0x36C 0x0 0xB 0x0 798 + 799 + #define IOMUXC_GPIO_AD_08_USBPHY2_OTG_ID 0x12C 0x370 0x6C4 0x0 0x0 800 + #define IOMUXC_GPIO_AD_08_LPI2C1_SCL 0x12C 0x370 0x5AC 0x1 0x0 801 + #define IOMUXC_GPIO_AD_08_EMVSIM2_RST 0x12C 0x370 0x0 0x2 0x0 802 + #define IOMUXC_GPIO_AD_08_GPT3_COMPARE1 0x12C 0x370 0x0 0x3 0x0 803 + #define IOMUXC_GPIO_AD_08_VIDEO_MUX_CSI_DATA13 0x12C 0x370 0x0 0x4 0x0 804 + #define IOMUXC_GPIO_AD_08_GPIO_MUX3_IO07 0x12C 0x370 0x0 0x5 0x0 805 + #define IOMUXC_GPIO_AD_08_ENET_1588_EVENT2_IN 0x12C 0x370 0x0 0x6 0x0 806 + #define IOMUXC_GPIO_AD_08_FLEXIO2_D08 0x12C 0x370 0x0 0x8 0x0 807 + #define IOMUXC_GPIO_AD_08_GPIO9_IO07 0x12C 0x370 0x0 0xA 0x0 808 + #define IOMUXC_GPIO_AD_08_FLEXPWM1_PWM2_X 0x12C 0x370 0x0 0xB 0x0 809 + 810 + #define IOMUXC_GPIO_AD_09_USBPHY1_OTG_ID 0x130 0x374 0x6C0 0x0 0x0 811 + #define IOMUXC_GPIO_AD_09_LPI2C1_SDA 0x130 0x374 0x5B0 0x1 0x0 812 + #define IOMUXC_GPIO_AD_09_EMVSIM2_SVEN 0x130 0x374 0x0 0x2 0x0 813 + #define IOMUXC_GPIO_AD_09_GPT3_COMPARE2 0x130 0x374 0x0 0x3 0x0 814 + #define IOMUXC_GPIO_AD_09_VIDEO_MUX_CSI_DATA12 0x130 0x374 0x0 0x4 0x0 815 + #define IOMUXC_GPIO_AD_09_GPIO_MUX3_IO08 0x130 0x374 0x0 0x5 0x0 816 + #define IOMUXC_GPIO_AD_09_ENET_1588_EVENT2_OUT 0x130 0x374 0x0 0x6 0x0 817 + #define IOMUXC_GPIO_AD_09_FLEXIO2_D09 0x130 0x374 0x0 0x8 0x0 818 + #define IOMUXC_GPIO_AD_09_GPIO9_IO08 0x130 0x374 0x0 0xA 0x0 819 + #define IOMUXC_GPIO_AD_09_FLEXPWM1_PWM3_X 0x130 0x374 0x0 0xB 0x0 820 + 821 + #define IOMUXC_GPIO_AD_10_USB_OTG1_PWR 0x134 0x378 0x0 0x0 0x0 822 + #define IOMUXC_GPIO_AD_10_LPI2C1_SCLS 0x134 0x378 0x0 0x1 0x0 823 + #define IOMUXC_GPIO_AD_10_EMVSIM2_PD 0x134 0x378 0x6AC 0x2 0x0 824 + #define IOMUXC_GPIO_AD_10_GPT3_COMPARE3 0x134 0x378 0x0 0x3 0x0 825 + #define IOMUXC_GPIO_AD_10_VIDEO_MUX_CSI_DATA11 0x134 0x378 0x0 0x4 0x0 826 + #define IOMUXC_GPIO_AD_10_GPIO_MUX3_IO09 0x134 0x378 0x0 0x5 0x0 827 + #define IOMUXC_GPIO_AD_10_ENET_1588_EVENT3_IN 0x134 0x378 0x0 0x6 0x0 828 + #define IOMUXC_GPIO_AD_10_FLEXIO2_D10 0x134 0x378 0x0 0x8 0x0 829 + #define IOMUXC_GPIO_AD_10_GPIO9_IO09 0x134 0x378 0x0 0xA 0x0 830 + #define IOMUXC_GPIO_AD_10_FLEXPWM2_PWM0_X 0x134 0x378 0x0 0xB 0x0 831 + 832 + #define IOMUXC_GPIO_AD_11_USB_OTG1_OC 0x138 0x37C 0x6BC 0x0 0x0 833 + #define IOMUXC_GPIO_AD_11_LPI2C1_SDAS 0x138 0x37C 0x0 0x1 0x0 834 + #define IOMUXC_GPIO_AD_11_EMVSIM2_POWER_FAIL 0x138 0x37C 0x6B0 0x2 0x0 835 + #define IOMUXC_GPIO_AD_11_GPT3_CLK 0x138 0x37C 0x598 0x3 0x1 836 + #define IOMUXC_GPIO_AD_11_VIDEO_MUX_CSI_DATA10 0x138 0x37C 0x0 0x4 0x0 837 + #define IOMUXC_GPIO_AD_11_GPIO_MUX3_IO10 0x138 0x37C 0x0 0x5 0x0 838 + #define IOMUXC_GPIO_AD_11_ENET_1588_EVENT3_OUT 0x138 0x37C 0x0 0x6 0x0 839 + #define IOMUXC_GPIO_AD_11_FLEXIO2_D11 0x138 0x37C 0x0 0x8 0x0 840 + #define IOMUXC_GPIO_AD_11_GPIO9_IO10 0x138 0x37C 0x0 0xA 0x0 841 + #define IOMUXC_GPIO_AD_11_FLEXPWM2_PWM1_X 0x138 0x37C 0x0 0xB 0x0 842 + 843 + #define IOMUXC_GPIO_AD_12_SPDIF_LOCK 0x13C 0x380 0x0 0x0 0x0 844 + #define IOMUXC_GPIO_AD_12_LPI2C1_HREQ 0x13C 0x380 0x0 0x1 0x0 845 + #define IOMUXC_GPIO_AD_12_GPT1_CAPTURE1 0x13C 0x380 0x0 0x2 0x0 846 + #define IOMUXC_GPIO_AD_12_FLEXSPI1_B_DATA03 0x13C 0x380 0x570 0x3 0x0 847 + #define IOMUXC_GPIO_AD_12_VIDEO_MUX_CSI_PIXCLK 0x13C 0x380 0x0 0x4 0x0 848 + #define IOMUXC_GPIO_AD_12_GPIO_MUX3_IO11 0x13C 0x380 0x0 0x5 0x0 849 + #define IOMUXC_GPIO_AD_12_ENET_TX_DATA03 0x13C 0x380 0x0 0x6 0x0 850 + #define IOMUXC_GPIO_AD_12_FLEXIO2_D12 0x13C 0x380 0x0 0x8 0x0 851 + #define IOMUXC_GPIO_AD_12_EWM_OUT_B 0x13C 0x380 0x0 0x9 0x0 852 + #define IOMUXC_GPIO_AD_12_GPIO9_IO11 0x13C 0x380 0x0 0xA 0x0 853 + #define IOMUXC_GPIO_AD_12_FLEXPWM2_PWM2_X 0x13C 0x380 0x0 0xB 0x0 854 + 855 + #define IOMUXC_GPIO_AD_13_SPDIF_SR_CLK 0x140 0x384 0x0 0x0 0x0 856 + #define IOMUXC_GPIO_AD_13_PIT1_TRIGGER0 0x140 0x384 0x0 0x1 0x0 857 + #define IOMUXC_GPIO_AD_13_GPT1_CAPTURE2 0x140 0x384 0x0 0x2 0x0 858 + #define IOMUXC_GPIO_AD_13_FLEXSPI1_B_DATA02 0x140 0x384 0x56C 0x3 0x0 859 + #define IOMUXC_GPIO_AD_13_VIDEO_MUX_CSI_MCLK 0x140 0x384 0x0 0x4 0x0 860 + #define IOMUXC_GPIO_AD_13_GPIO_MUX3_IO12 0x140 0x384 0x0 0x5 0x0 861 + #define IOMUXC_GPIO_AD_13_ENET_TX_DATA02 0x140 0x384 0x0 0x6 0x0 862 + #define IOMUXC_GPIO_AD_13_FLEXIO2_D13 0x140 0x384 0x0 0x8 0x0 863 + #define IOMUXC_GPIO_AD_13_REF_CLK_32K 0x140 0x384 0x0 0x9 0x0 864 + #define IOMUXC_GPIO_AD_13_GPIO9_IO12 0x140 0x384 0x0 0xA 0x0 865 + #define IOMUXC_GPIO_AD_13_FLEXPWM2_PWM3_X 0x140 0x384 0x0 0xB 0x0 866 + 867 + #define IOMUXC_GPIO_AD_14_SPDIF_EXT_CLK 0x144 0x388 0x0 0x0 0x0 868 + #define IOMUXC_GPIO_AD_14_REF_CLK_24M 0x144 0x388 0x0 0x1 0x0 869 + #define IOMUXC_GPIO_AD_14_GPT1_COMPARE1 0x144 0x388 0x0 0x2 0x0 870 + #define IOMUXC_GPIO_AD_14_FLEXSPI1_B_DATA01 0x144 0x388 0x568 0x3 0x0 871 + #define IOMUXC_GPIO_AD_14_VIDEO_MUX_CSI_VSYNC 0x144 0x388 0x0 0x4 0x0 872 + #define IOMUXC_GPIO_AD_14_GPIO_MUX3_IO13 0x144 0x388 0x0 0x5 0x0 873 + #define IOMUXC_GPIO_AD_14_ENET_RX_CLK 0x144 0x388 0x0 0x6 0x0 874 + #define IOMUXC_GPIO_AD_14_FLEXIO2_D14 0x144 0x388 0x0 0x8 0x0 875 + #define IOMUXC_GPIO_AD_14_CCM_ENET_REF_CLK_25M 0x144 0x388 0x0 0x9 0x0 876 + #define IOMUXC_GPIO_AD_14_GPIO9_IO13 0x144 0x388 0x0 0xA 0x0 877 + #define IOMUXC_GPIO_AD_14_FLEXPWM3_PWM0_X 0x144 0x388 0x0 0xB 0x0 878 + 879 + #define IOMUXC_GPIO_AD_15_GPIO9_IO14 0x148 0x38C 0x0 0xA 0x0 880 + #define IOMUXC_GPIO_AD_15_FLEXPWM3_PWM1_X 0x148 0x38C 0x0 0xB 0x0 881 + #define IOMUXC_GPIO_AD_15_SPDIF_IN 0x148 0x38C 0x6B4 0x0 0x1 882 + #define IOMUXC_GPIO_AD_15_LPUART10_TXD 0x148 0x38C 0x628 0x1 0x0 883 + #define IOMUXC_GPIO_AD_15_GPT1_COMPARE2 0x148 0x38C 0x0 0x2 0x0 884 + #define IOMUXC_GPIO_AD_15_FLEXSPI1_B_DATA00 0x148 0x38C 0x564 0x3 0x0 885 + #define IOMUXC_GPIO_AD_15_VIDEO_MUX_CSI_HSYNC 0x148 0x38C 0x0 0x4 0x0 886 + #define IOMUXC_GPIO_AD_15_GPIO_MUX3_IO14 0x148 0x38C 0x0 0x5 0x0 887 + #define IOMUXC_GPIO_AD_15_ENET_TX_ER 0x148 0x38C 0x0 0x6 0x0 888 + #define IOMUXC_GPIO_AD_15_FLEXIO2_D15 0x148 0x38C 0x0 0x8 0x0 889 + 890 + #define IOMUXC_GPIO_AD_16_SPDIF_OUT 0x14C 0x390 0x0 0x0 0x0 891 + #define IOMUXC_GPIO_AD_16_LPUART10_RXD 0x14C 0x390 0x624 0x1 0x0 892 + #define IOMUXC_GPIO_AD_16_GPT1_COMPARE3 0x14C 0x390 0x0 0x2 0x0 893 + #define IOMUXC_GPIO_AD_16_FLEXSPI1_B_SCLK 0x14C 0x390 0x578 0x3 0x0 894 + #define IOMUXC_GPIO_AD_16_VIDEO_MUX_CSI_DATA09 0x14C 0x390 0x0 0x4 0x0 895 + #define IOMUXC_GPIO_AD_16_GPIO_MUX3_IO15 0x14C 0x390 0x0 0x5 0x0 896 + #define IOMUXC_GPIO_AD_16_ENET_RX_DATA03 0x14C 0x390 0x0 0x6 0x0 897 + #define IOMUXC_GPIO_AD_16_FLEXIO2_D16 0x14C 0x390 0x0 0x8 0x0 898 + #define IOMUXC_GPIO_AD_16_ENET_1G_MDC 0x14C 0x390 0x0 0x9 0x0 899 + #define IOMUXC_GPIO_AD_16_GPIO9_IO15 0x14C 0x390 0x0 0xA 0x0 900 + #define IOMUXC_GPIO_AD_16_FLEXPWM3_PWM2_X 0x14C 0x390 0x0 0xB 0x0 901 + 902 + #define IOMUXC_GPIO_AD_17_SAI1_MCLK 0x150 0x394 0x66C 0x0 0x0 903 + #define IOMUXC_GPIO_AD_17_ACMP1_OUT 0x150 0x394 0x0 0x1 0x0 904 + #define IOMUXC_GPIO_AD_17_GPT1_CLK 0x150 0x394 0x0 0x2 0x0 905 + #define IOMUXC_GPIO_AD_17_FLEXSPI1_A_DQS 0x150 0x394 0x550 0x3 0x1 906 + #define IOMUXC_GPIO_AD_17_VIDEO_MUX_CSI_DATA08 0x150 0x394 0x0 0x4 0x0 907 + #define IOMUXC_GPIO_AD_17_GPIO_MUX3_IO16 0x150 0x394 0x0 0x5 0x0 908 + #define IOMUXC_GPIO_AD_17_ENET_RX_DATA02 0x150 0x394 0x0 0x6 0x0 909 + #define IOMUXC_GPIO_AD_17_FLEXIO2_D17 0x150 0x394 0x0 0x8 0x0 910 + #define IOMUXC_GPIO_AD_17_ENET_1G_MDIO 0x150 0x394 0x4C8 0x9 0x2 911 + #define IOMUXC_GPIO_AD_17_GPIO9_IO16 0x150 0x394 0x0 0xA 0x0 912 + #define IOMUXC_GPIO_AD_17_FLEXPWM3_PWM3_X 0x150 0x394 0x0 0xB 0x0 913 + 914 + #define IOMUXC_GPIO_AD_18_GPIO9_IO17 0x154 0x398 0x0 0xA 0x0 915 + #define IOMUXC_GPIO_AD_18_FLEXPWM4_PWM0_X 0x154 0x398 0x0 0xB 0x0 916 + #define IOMUXC_GPIO_AD_18_SAI1_RX_SYNC 0x154 0x398 0x678 0x0 0x0 917 + #define IOMUXC_GPIO_AD_18_ACMP2_OUT 0x154 0x398 0x0 0x1 0x0 918 + #define IOMUXC_GPIO_AD_18_LPSPI1_PCS1 0x154 0x398 0x0 0x2 0x0 919 + #define IOMUXC_GPIO_AD_18_FLEXSPI1_A_SS0_B 0x154 0x398 0x0 0x3 0x0 920 + #define IOMUXC_GPIO_AD_18_VIDEO_MUX_CSI_DATA07 0x154 0x398 0x0 0x4 0x0 921 + #define IOMUXC_GPIO_AD_18_GPIO_MUX3_IO17 0x154 0x398 0x0 0x5 0x0 922 + #define IOMUXC_GPIO_AD_18_ENET_CRS 0x154 0x398 0x0 0x6 0x0 923 + #define IOMUXC_GPIO_AD_18_FLEXIO2_D18 0x154 0x398 0x0 0x8 0x0 924 + #define IOMUXC_GPIO_AD_18_LPI2C2_SCL 0x154 0x398 0x5B4 0x9 0x1 925 + 926 + #define IOMUXC_GPIO_AD_19_SAI1_RX_BCLK 0x158 0x39C 0x670 0x0 0x0 927 + #define IOMUXC_GPIO_AD_19_ACMP3_OUT 0x158 0x39C 0x0 0x1 0x0 928 + #define IOMUXC_GPIO_AD_19_LPSPI1_PCS2 0x158 0x39C 0x0 0x2 0x0 929 + #define IOMUXC_GPIO_AD_19_FLEXSPI1_A_SCLK 0x158 0x39C 0x574 0x3 0x0 930 + #define IOMUXC_GPIO_AD_19_VIDEO_MUX_CSI_DATA06 0x158 0x39C 0x0 0x4 0x0 931 + #define IOMUXC_GPIO_AD_19_GPIO_MUX3_IO18 0x158 0x39C 0x0 0x5 0x0 932 + #define IOMUXC_GPIO_AD_19_ENET_COL 0x158 0x39C 0x0 0x6 0x0 933 + #define IOMUXC_GPIO_AD_19_FLEXIO2_D19 0x158 0x39C 0x0 0x8 0x0 934 + #define IOMUXC_GPIO_AD_19_LPI2C2_SDA 0x158 0x39C 0x5B8 0x9 0x1 935 + #define IOMUXC_GPIO_AD_19_GPIO9_IO18 0x158 0x39C 0x0 0xA 0x0 936 + #define IOMUXC_GPIO_AD_19_FLEXPWM4_PWM1_X 0x158 0x39C 0x0 0xB 0x0 937 + 938 + #define IOMUXC_GPIO_AD_20_SAI1_RX_DATA00 0x15C 0x3A0 0x674 0x0 0x0 939 + #define IOMUXC_GPIO_AD_20_ACMP4_OUT 0x15C 0x3A0 0x0 0x1 0x0 940 + #define IOMUXC_GPIO_AD_20_LPSPI1_PCS3 0x15C 0x3A0 0x0 0x2 0x0 941 + #define IOMUXC_GPIO_AD_20_FLEXSPI1_A_DATA00 0x15C 0x3A0 0x554 0x3 0x0 942 + #define IOMUXC_GPIO_AD_20_VIDEO_MUX_CSI_DATA05 0x15C 0x3A0 0x0 0x4 0x0 943 + #define IOMUXC_GPIO_AD_20_GPIO_MUX3_IO19 0x15C 0x3A0 0x0 0x5 0x0 944 + #define IOMUXC_GPIO_AD_20_KPP_ROW07 0x15C 0x3A0 0x5A8 0x6 0x0 945 + #define IOMUXC_GPIO_AD_20_FLEXIO2_D20 0x15C 0x3A0 0x0 0x8 0x0 946 + #define IOMUXC_GPIO_AD_20_ENET_QOS_1588_EVENT2_OUT 0x15C 0x3A0 0x0 0x9 0x0 947 + #define IOMUXC_GPIO_AD_20_GPIO9_IO19 0x15C 0x3A0 0x0 0xA 0x0 948 + #define IOMUXC_GPIO_AD_20_FLEXPWM4_PWM2_X 0x15C 0x3A0 0x0 0xB 0x0 949 + 950 + #define IOMUXC_GPIO_AD_21_SAI1_TX_DATA00 0x160 0x3A4 0x0 0x0 0x0 951 + #define IOMUXC_GPIO_AD_21_LPSPI2_PCS1 0x160 0x3A4 0x5E0 0x2 0x0 952 + #define IOMUXC_GPIO_AD_21_FLEXSPI1_A_DATA01 0x160 0x3A4 0x558 0x3 0x0 953 + #define IOMUXC_GPIO_AD_21_VIDEO_MUX_CSI_DATA04 0x160 0x3A4 0x0 0x4 0x0 954 + #define IOMUXC_GPIO_AD_21_GPIO_MUX3_IO20 0x160 0x3A4 0x0 0x5 0x0 955 + #define IOMUXC_GPIO_AD_21_KPP_COL07 0x160 0x3A4 0x5A0 0x6 0x0 956 + #define IOMUXC_GPIO_AD_21_FLEXIO2_D21 0x160 0x3A4 0x0 0x8 0x0 957 + #define IOMUXC_GPIO_AD_21_ENET_QOS_1588_EVENT2_IN 0x160 0x3A4 0x0 0x9 0x0 958 + #define IOMUXC_GPIO_AD_21_GPIO9_IO20 0x160 0x3A4 0x0 0xA 0x0 959 + #define IOMUXC_GPIO_AD_21_FLEXPWM4_PWM3_X 0x160 0x3A4 0x0 0xB 0x0 960 + 961 + #define IOMUXC_GPIO_AD_22_GPIO9_IO21 0x164 0x3A8 0x0 0xA 0x0 962 + #define IOMUXC_GPIO_AD_22_SAI1_TX_BCLK 0x164 0x3A8 0x67C 0x0 0x0 963 + #define IOMUXC_GPIO_AD_22_LPSPI2_PCS2 0x164 0x3A8 0x0 0x2 0x0 964 + #define IOMUXC_GPIO_AD_22_FLEXSPI1_A_DATA02 0x164 0x3A8 0x55C 0x3 0x0 965 + #define IOMUXC_GPIO_AD_22_VIDEO_MUX_CSI_DATA03 0x164 0x3A8 0x0 0x4 0x0 966 + #define IOMUXC_GPIO_AD_22_GPIO_MUX3_IO21 0x164 0x3A8 0x0 0x5 0x0 967 + #define IOMUXC_GPIO_AD_22_KPP_ROW06 0x164 0x3A8 0x5A4 0x6 0x0 968 + #define IOMUXC_GPIO_AD_22_FLEXIO2_D22 0x164 0x3A8 0x0 0x8 0x0 969 + #define IOMUXC_GPIO_AD_22_ENET_QOS_1588_EVENT3_OUT 0x164 0x3A8 0x0 0x9 0x0 970 + 971 + #define IOMUXC_GPIO_AD_23_SAI1_TX_SYNC 0x168 0x3AC 0x680 0x0 0x0 972 + #define IOMUXC_GPIO_AD_23_LPSPI2_PCS3 0x168 0x3AC 0x0 0x2 0x0 973 + #define IOMUXC_GPIO_AD_23_FLEXSPI1_A_DATA03 0x168 0x3AC 0x560 0x3 0x0 974 + #define IOMUXC_GPIO_AD_23_VIDEO_MUX_CSI_DATA02 0x168 0x3AC 0x0 0x4 0x0 975 + #define IOMUXC_GPIO_AD_23_GPIO_MUX3_IO22 0x168 0x3AC 0x0 0x5 0x0 976 + #define IOMUXC_GPIO_AD_23_KPP_COL06 0x168 0x3AC 0x59C 0x6 0x0 977 + #define IOMUXC_GPIO_AD_23_FLEXIO2_D23 0x168 0x3AC 0x0 0x8 0x0 978 + #define IOMUXC_GPIO_AD_23_ENET_QOS_1588_EVENT3_IN 0x168 0x3AC 0x0 0x9 0x0 979 + #define IOMUXC_GPIO_AD_23_GPIO9_IO22 0x168 0x3AC 0x0 0xA 0x0 980 + 981 + #define IOMUXC_GPIO_AD_24_LPUART1_TXD 0x16C 0x3B0 0x620 0x0 0x0 982 + #define IOMUXC_GPIO_AD_24_LPSPI2_SCK 0x16C 0x3B0 0x5E4 0x1 0x0 983 + #define IOMUXC_GPIO_AD_24_VIDEO_MUX_CSI_DATA00 0x16C 0x3B0 0x0 0x2 0x0 984 + #define IOMUXC_GPIO_AD_24_ENET_RX_EN 0x16C 0x3B0 0x4B8 0x3 0x0 985 + #define IOMUXC_GPIO_AD_24_FLEXPWM2_PWM0_A 0x16C 0x3B0 0x518 0x4 0x1 986 + #define IOMUXC_GPIO_AD_24_GPIO_MUX3_IO23 0x16C 0x3B0 0x0 0x5 0x0 987 + #define IOMUXC_GPIO_AD_24_KPP_ROW05 0x16C 0x3B0 0x0 0x6 0x0 988 + #define IOMUXC_GPIO_AD_24_FLEXIO2_D24 0x16C 0x3B0 0x0 0x8 0x0 989 + #define IOMUXC_GPIO_AD_24_LPI2C4_SCL 0x16C 0x3B0 0x5C4 0x9 0x0 990 + #define IOMUXC_GPIO_AD_24_GPIO9_IO23 0x16C 0x3B0 0x0 0xA 0x0 991 + 992 + #define IOMUXC_GPIO_AD_25_GPIO9_IO24 0x170 0x3B4 0x0 0xA 0x0 993 + #define IOMUXC_GPIO_AD_25_LPUART1_RXD 0x170 0x3B4 0x61C 0x0 0x0 994 + #define IOMUXC_GPIO_AD_25_LPSPI2_PCS0 0x170 0x3B4 0x5DC 0x1 0x0 995 + #define IOMUXC_GPIO_AD_25_VIDEO_MUX_CSI_DATA01 0x170 0x3B4 0x0 0x2 0x0 996 + #define IOMUXC_GPIO_AD_25_ENET_RX_ER 0x170 0x3B4 0x4BC 0x3 0x0 997 + #define IOMUXC_GPIO_AD_25_FLEXPWM2_PWM0_B 0x170 0x3B4 0x524 0x4 0x1 998 + #define IOMUXC_GPIO_AD_25_GPIO_MUX3_IO24 0x170 0x3B4 0x0 0x5 0x0 999 + #define IOMUXC_GPIO_AD_25_KPP_COL05 0x170 0x3B4 0x0 0x6 0x0 1000 + #define IOMUXC_GPIO_AD_25_FLEXIO2_D25 0x170 0x3B4 0x0 0x8 0x0 1001 + #define IOMUXC_GPIO_AD_25_LPI2C4_SDA 0x170 0x3B4 0x5C8 0x9 0x0 1002 + 1003 + #define IOMUXC_GPIO_AD_26_LPUART1_CTS_B 0x174 0x3B8 0x0 0x0 0x0 1004 + #define IOMUXC_GPIO_AD_26_LPSPI2_SOUT 0x174 0x3B8 0x5EC 0x1 0x0 1005 + #define IOMUXC_GPIO_AD_26_SEMC_CSX01 0x174 0x3B8 0x0 0x2 0x0 1006 + #define IOMUXC_GPIO_AD_26_ENET_RX_DATA00 0x174 0x3B8 0x4B0 0x3 0x0 1007 + #define IOMUXC_GPIO_AD_26_FLEXPWM2_PWM1_A 0x174 0x3B8 0x51C 0x4 0x1 1008 + #define IOMUXC_GPIO_AD_26_GPIO_MUX3_IO25 0x174 0x3B8 0x0 0x5 0x0 1009 + #define IOMUXC_GPIO_AD_26_KPP_ROW04 0x174 0x3B8 0x0 0x6 0x0 1010 + #define IOMUXC_GPIO_AD_26_FLEXIO2_D26 0x174 0x3B8 0x0 0x8 0x0 1011 + #define IOMUXC_GPIO_AD_26_ENET_QOS_MDC 0x174 0x3B8 0x0 0x9 0x0 1012 + #define IOMUXC_GPIO_AD_26_GPIO9_IO25 0x174 0x3B8 0x0 0xA 0x0 1013 + #define IOMUXC_GPIO_AD_26_USDHC2_CD_B 0x174 0x3B8 0x6D0 0xB 0x1 1014 + 1015 + #define IOMUXC_GPIO_AD_27_LPUART1_RTS_B 0x178 0x3BC 0x0 0x0 0x0 1016 + #define IOMUXC_GPIO_AD_27_LPSPI2_SIN 0x178 0x3BC 0x5E8 0x1 0x0 1017 + #define IOMUXC_GPIO_AD_27_SEMC_CSX02 0x178 0x3BC 0x0 0x2 0x0 1018 + #define IOMUXC_GPIO_AD_27_ENET_RX_DATA01 0x178 0x3BC 0x4B4 0x3 0x0 1019 + #define IOMUXC_GPIO_AD_27_FLEXPWM2_PWM1_B 0x178 0x3BC 0x528 0x4 0x1 1020 + #define IOMUXC_GPIO_AD_27_GPIO_MUX3_IO26 0x178 0x3BC 0x0 0x5 0x0 1021 + #define IOMUXC_GPIO_AD_27_KPP_COL04 0x178 0x3BC 0x0 0x6 0x0 1022 + #define IOMUXC_GPIO_AD_27_FLEXIO2_D27 0x178 0x3BC 0x0 0x8 0x0 1023 + #define IOMUXC_GPIO_AD_27_ENET_QOS_MDIO 0x178 0x3BC 0x4EC 0x9 0x1 1024 + #define IOMUXC_GPIO_AD_27_GPIO9_IO26 0x178 0x3BC 0x0 0xA 0x0 1025 + #define IOMUXC_GPIO_AD_27_USDHC2_WP 0x178 0x3BC 0x6D4 0xB 0x1 1026 + 1027 + #define IOMUXC_GPIO_AD_28_GPIO9_IO27 0x17C 0x3C0 0x0 0xA 0x0 1028 + #define IOMUXC_GPIO_AD_28_USDHC2_VSELECT 0x17C 0x3C0 0x0 0xB 0x0 1029 + #define IOMUXC_GPIO_AD_28_LPSPI1_SCK 0x17C 0x3C0 0x5D0 0x0 0x1 1030 + #define IOMUXC_GPIO_AD_28_LPUART5_TXD 0x17C 0x3C0 0x0 0x1 0x0 1031 + #define IOMUXC_GPIO_AD_28_SEMC_CSX03 0x17C 0x3C0 0x0 0x2 0x0 1032 + #define IOMUXC_GPIO_AD_28_ENET_TX_EN 0x17C 0x3C0 0x0 0x3 0x0 1033 + #define IOMUXC_GPIO_AD_28_FLEXPWM2_PWM2_A 0x17C 0x3C0 0x520 0x4 0x1 1034 + #define IOMUXC_GPIO_AD_28_GPIO_MUX3_IO27 0x17C 0x3C0 0x0 0x5 0x0 1035 + #define IOMUXC_GPIO_AD_28_KPP_ROW03 0x17C 0x3C0 0x0 0x6 0x0 1036 + #define IOMUXC_GPIO_AD_28_FLEXIO2_D28 0x17C 0x3C0 0x0 0x8 0x0 1037 + #define IOMUXC_GPIO_AD_28_VIDEO_MUX_EXT_DCIC1 0x17C 0x3C0 0x0 0x9 0x0 1038 + 1039 + #define IOMUXC_GPIO_AD_29_LPSPI1_PCS0 0x180 0x3C4 0x5CC 0x0 0x1 1040 + #define IOMUXC_GPIO_AD_29_LPUART5_RXD 0x180 0x3C4 0x0 0x1 0x0 1041 + #define IOMUXC_GPIO_AD_29_ENET_REF_CLK 0x180 0x3C4 0x4A8 0x2 0x0 1042 + #define IOMUXC_GPIO_AD_29_ENET_TX_CLK 0x180 0x3C4 0x4C0 0x3 0x0 1043 + #define IOMUXC_GPIO_AD_29_FLEXPWM2_PWM2_B 0x180 0x3C4 0x52C 0x4 0x1 1044 + #define IOMUXC_GPIO_AD_29_GPIO_MUX3_IO28 0x180 0x3C4 0x0 0x5 0x0 1045 + #define IOMUXC_GPIO_AD_29_KPP_COL03 0x180 0x3C4 0x0 0x6 0x0 1046 + #define IOMUXC_GPIO_AD_29_FLEXIO2_D29 0x180 0x3C4 0x0 0x8 0x0 1047 + #define IOMUXC_GPIO_AD_29_VIDEO_MUX_EXT_DCIC2 0x180 0x3C4 0x0 0x9 0x0 1048 + #define IOMUXC_GPIO_AD_29_GPIO9_IO28 0x180 0x3C4 0x0 0xA 0x0 1049 + #define IOMUXC_GPIO_AD_29_USDHC2_RESET_B 0x180 0x3C4 0x0 0xB 0x0 1050 + 1051 + #define IOMUXC_GPIO_AD_30_LPSPI1_SOUT 0x184 0x3C8 0x5D8 0x0 0x1 1052 + #define IOMUXC_GPIO_AD_30_USB_OTG2_OC 0x184 0x3C8 0x6B8 0x1 0x1 1053 + #define IOMUXC_GPIO_AD_30_FLEXCAN2_TX 0x184 0x3C8 0x0 0x2 0x0 1054 + #define IOMUXC_GPIO_AD_30_ENET_TX_DATA00 0x184 0x3C8 0x0 0x3 0x0 1055 + #define IOMUXC_GPIO_AD_30_LPUART3_TXD 0x184 0x3C8 0x0 0x4 0x0 1056 + #define IOMUXC_GPIO_AD_30_GPIO_MUX3_IO29 0x184 0x3C8 0x0 0x5 0x0 1057 + #define IOMUXC_GPIO_AD_30_KPP_ROW02 0x184 0x3C8 0x0 0x6 0x0 1058 + #define IOMUXC_GPIO_AD_30_FLEXIO2_D30 0x184 0x3C8 0x0 0x8 0x0 1059 + #define IOMUXC_GPIO_AD_30_WDOG2_RESET_B_DEB 0x184 0x3C8 0x0 0x9 0x0 1060 + #define IOMUXC_GPIO_AD_30_GPIO9_IO29 0x184 0x3C8 0x0 0xA 0x0 1061 + 1062 + #define IOMUXC_GPIO_AD_31_LPSPI1_SIN 0x188 0x3CC 0x5D4 0x0 0x1 1063 + #define IOMUXC_GPIO_AD_31_USB_OTG2_PWR 0x188 0x3CC 0x0 0x1 0x0 1064 + #define IOMUXC_GPIO_AD_31_FLEXCAN2_RX 0x188 0x3CC 0x49C 0x2 0x1 1065 + #define IOMUXC_GPIO_AD_31_ENET_TX_DATA01 0x188 0x3CC 0x0 0x3 0x0 1066 + #define IOMUXC_GPIO_AD_31_LPUART3_RXD 0x188 0x3CC 0x0 0x4 0x0 1067 + #define IOMUXC_GPIO_AD_31_GPIO_MUX3_IO30 0x188 0x3CC 0x0 0x5 0x0 1068 + #define IOMUXC_GPIO_AD_31_KPP_COL02 0x188 0x3CC 0x0 0x6 0x0 1069 + #define IOMUXC_GPIO_AD_31_FLEXIO2_D31 0x188 0x3CC 0x0 0x8 0x0 1070 + #define IOMUXC_GPIO_AD_31_WDOG1_RESET_B_DEB 0x188 0x3CC 0x0 0x9 0x0 1071 + #define IOMUXC_GPIO_AD_31_GPIO9_IO30 0x188 0x3CC 0x0 0xA 0x0 1072 + 1073 + #define IOMUXC_GPIO_AD_32_GPIO9_IO31 0x18C 0x3D0 0x0 0xA 0x0 1074 + #define IOMUXC_GPIO_AD_32_LPI2C1_SCL 0x18C 0x3D0 0x5AC 0x0 0x1 1075 + #define IOMUXC_GPIO_AD_32_USBPHY2_OTG_ID 0x18C 0x3D0 0x6C4 0x1 0x1 1076 + #define IOMUXC_GPIO_AD_32_PGMC_PMIC_RDY 0x18C 0x3D0 0x0 0x2 0x0 1077 + #define IOMUXC_GPIO_AD_32_ENET_MDC 0x18C 0x3D0 0x0 0x3 0x0 1078 + #define IOMUXC_GPIO_AD_32_USDHC1_CD_B 0x18C 0x3D0 0x6C8 0x4 0x0 1079 + #define IOMUXC_GPIO_AD_32_GPIO_MUX3_IO31 0x18C 0x3D0 0x0 0x5 0x0 1080 + #define IOMUXC_GPIO_AD_32_KPP_ROW01 0x18C 0x3D0 0x0 0x6 0x0 1081 + #define IOMUXC_GPIO_AD_32_LPUART10_TXD 0x18C 0x3D0 0x628 0x8 0x1 1082 + #define IOMUXC_GPIO_AD_32_ENET_1G_MDC 0x18C 0x3D0 0x0 0x9 0x0 1083 + 1084 + #define IOMUXC_GPIO_AD_33_LPI2C1_SDA 0x190 0x3D4 0x5B0 0x0 0x1 1085 + #define IOMUXC_GPIO_AD_33_USBPHY1_OTG_ID 0x190 0x3D4 0x6C0 0x1 0x1 1086 + #define IOMUXC_GPIO_AD_33_XBAR1_INOUT17 0x190 0x3D4 0x0 0x2 0x0 1087 + #define IOMUXC_GPIO_AD_33_ENET_MDIO 0x190 0x3D4 0x4AC 0x3 0x1 1088 + #define IOMUXC_GPIO_AD_33_USDHC1_WP 0x190 0x3D4 0x6CC 0x4 0x0 1089 + #define IOMUXC_GPIO_AD_33_GPIO_MUX4_IO00 0x190 0x3D4 0x0 0x5 0x0 1090 + #define IOMUXC_GPIO_AD_33_KPP_COL01 0x190 0x3D4 0x0 0x6 0x0 1091 + #define IOMUXC_GPIO_AD_33_LPUART10_RXD 0x190 0x3D4 0x624 0x8 0x1 1092 + #define IOMUXC_GPIO_AD_33_ENET_1G_MDIO 0x190 0x3D4 0x4C8 0x9 0x3 1093 + #define IOMUXC_GPIO_AD_33_GPIO10_IO00 0x190 0x3D4 0x0 0xA 0x0 1094 + 1095 + #define IOMUXC_GPIO_AD_34_ENET_1G_1588_EVENT0_IN 0x194 0x3D8 0x0 0x0 0x0 1096 + #define IOMUXC_GPIO_AD_34_USB_OTG1_PWR 0x194 0x3D8 0x0 0x1 0x0 1097 + #define IOMUXC_GPIO_AD_34_XBAR1_INOUT18 0x194 0x3D8 0x0 0x2 0x0 1098 + #define IOMUXC_GPIO_AD_34_ENET_1588_EVENT0_IN 0x194 0x3D8 0x0 0x3 0x0 1099 + #define IOMUXC_GPIO_AD_34_USDHC1_VSELECT 0x194 0x3D8 0x0 0x4 0x0 1100 + #define IOMUXC_GPIO_AD_34_GPIO_MUX4_IO01 0x194 0x3D8 0x0 0x5 0x0 1101 + #define IOMUXC_GPIO_AD_34_KPP_ROW00 0x194 0x3D8 0x0 0x6 0x0 1102 + #define IOMUXC_GPIO_AD_34_LPUART10_CTS_B 0x194 0x3D8 0x0 0x8 0x0 1103 + #define IOMUXC_GPIO_AD_34_WDOG1_ANY 0x194 0x3D8 0x0 0x9 0x0 1104 + #define IOMUXC_GPIO_AD_34_GPIO10_IO01 0x194 0x3D8 0x0 0xA 0x0 1105 + 1106 + #define IOMUXC_GPIO_AD_35_GPIO10_IO02 0x198 0x3DC 0x0 0xA 0x0 1107 + #define IOMUXC_GPIO_AD_35_ENET_1G_1588_EVENT0_OUT 0x198 0x3DC 0x0 0x0 0x0 1108 + #define IOMUXC_GPIO_AD_35_USB_OTG1_OC 0x198 0x3DC 0x6BC 0x1 0x1 1109 + #define IOMUXC_GPIO_AD_35_XBAR1_INOUT19 0x198 0x3DC 0x0 0x2 0x0 1110 + #define IOMUXC_GPIO_AD_35_ENET_1588_EVENT0_OUT 0x198 0x3DC 0x0 0x3 0x0 1111 + #define IOMUXC_GPIO_AD_35_USDHC1_RESET_B 0x198 0x3DC 0x0 0x4 0x0 1112 + #define IOMUXC_GPIO_AD_35_GPIO_MUX4_IO02 0x198 0x3DC 0x0 0x5 0x0 1113 + #define IOMUXC_GPIO_AD_35_KPP_COL00 0x198 0x3DC 0x0 0x6 0x0 1114 + #define IOMUXC_GPIO_AD_35_LPUART10_RTS_B 0x198 0x3DC 0x0 0x8 0x0 1115 + #define IOMUXC_GPIO_AD_35_FLEXSPI1_B_SS1_B 0x198 0x3DC 0x0 0x9 0x0 1116 + 1117 + #define IOMUXC_GPIO_SD_B1_00_USDHC1_CMD 0x19C 0x3E0 0x0 0x0 0x0 1118 + #define IOMUXC_GPIO_SD_B1_00_XBAR1_INOUT20 0x19C 0x3E0 0x6D8 0x2 0x1 1119 + #define IOMUXC_GPIO_SD_B1_00_GPT4_CAPTURE1 0x19C 0x3E0 0x0 0x3 0x0 1120 + #define IOMUXC_GPIO_SD_B1_00_GPIO_MUX4_IO03 0x19C 0x3E0 0x0 0x5 0x0 1121 + #define IOMUXC_GPIO_SD_B1_00_FLEXSPI2_A_SS0_B 0x19C 0x3E0 0x0 0x6 0x0 1122 + #define IOMUXC_GPIO_SD_B1_00_KPP_ROW07 0x19C 0x3E0 0x5A8 0x8 0x1 1123 + #define IOMUXC_GPIO_SD_B1_00_GPIO10_IO03 0x19C 0x3E0 0x0 0xA 0x0 1124 + 1125 + #define IOMUXC_GPIO_SD_B1_01_USDHC1_CLK 0x1A0 0x3E4 0x0 0x0 0x0 1126 + #define IOMUXC_GPIO_SD_B1_01_XBAR1_INOUT21 0x1A0 0x3E4 0x6DC 0x2 0x1 1127 + #define IOMUXC_GPIO_SD_B1_01_GPT4_CAPTURE2 0x1A0 0x3E4 0x0 0x3 0x0 1128 + #define IOMUXC_GPIO_SD_B1_01_GPIO_MUX4_IO04 0x1A0 0x3E4 0x0 0x5 0x0 1129 + #define IOMUXC_GPIO_SD_B1_01_FLEXSPI2_A_SCLK 0x1A0 0x3E4 0x58C 0x6 0x1 1130 + #define IOMUXC_GPIO_SD_B1_01_KPP_COL07 0x1A0 0x3E4 0x5A0 0x8 0x1 1131 + #define IOMUXC_GPIO_SD_B1_01_GPIO10_IO04 0x1A0 0x3E4 0x0 0xA 0x0 1132 + 1133 + #define IOMUXC_GPIO_SD_B1_02_GPIO10_IO05 0x1A4 0x3E8 0x0 0xA 0x0 1134 + #define IOMUXC_GPIO_SD_B1_02_USDHC1_DATA0 0x1A4 0x3E8 0x0 0x0 0x0 1135 + #define IOMUXC_GPIO_SD_B1_02_XBAR1_INOUT22 0x1A4 0x3E8 0x6E0 0x2 0x1 1136 + #define IOMUXC_GPIO_SD_B1_02_GPT4_COMPARE1 0x1A4 0x3E8 0x0 0x3 0x0 1137 + #define IOMUXC_GPIO_SD_B1_02_GPIO_MUX4_IO05 0x1A4 0x3E8 0x0 0x5 0x0 1138 + #define IOMUXC_GPIO_SD_B1_02_FLEXSPI2_A_DATA00 0x1A4 0x3E8 0x57C 0x6 0x1 1139 + #define IOMUXC_GPIO_SD_B1_02_KPP_ROW06 0x1A4 0x3E8 0x5A4 0x8 0x1 1140 + #define IOMUXC_GPIO_SD_B1_02_FLEXSPI1_A_SS1_B 0x1A4 0x3E8 0x0 0x9 0x0 1141 + 1142 + #define IOMUXC_GPIO_SD_B1_03_USDHC1_DATA1 0x1A8 0x3EC 0x0 0x0 0x0 1143 + #define IOMUXC_GPIO_SD_B1_03_XBAR1_INOUT23 0x1A8 0x3EC 0x6E4 0x2 0x1 1144 + #define IOMUXC_GPIO_SD_B1_03_GPT4_COMPARE2 0x1A8 0x3EC 0x0 0x3 0x0 1145 + #define IOMUXC_GPIO_SD_B1_03_GPIO_MUX4_IO06 0x1A8 0x3EC 0x0 0x5 0x0 1146 + #define IOMUXC_GPIO_SD_B1_03_FLEXSPI2_A_DATA01 0x1A8 0x3EC 0x580 0x6 0x1 1147 + #define IOMUXC_GPIO_SD_B1_03_KPP_COL06 0x1A8 0x3EC 0x59C 0x8 0x1 1148 + #define IOMUXC_GPIO_SD_B1_03_FLEXSPI1_B_SS1_B 0x1A8 0x3EC 0x0 0x9 0x0 1149 + #define IOMUXC_GPIO_SD_B1_03_GPIO10_IO06 0x1A8 0x3EC 0x0 0xA 0x0 1150 + 1151 + #define IOMUXC_GPIO_SD_B1_04_USDHC1_DATA2 0x1AC 0x3F0 0x0 0x0 0x0 1152 + #define IOMUXC_GPIO_SD_B1_04_XBAR1_INOUT24 0x1AC 0x3F0 0x6E8 0x2 0x1 1153 + #define IOMUXC_GPIO_SD_B1_04_GPT4_COMPARE3 0x1AC 0x3F0 0x0 0x3 0x0 1154 + #define IOMUXC_GPIO_SD_B1_04_GPIO_MUX4_IO07 0x1AC 0x3F0 0x0 0x5 0x0 1155 + #define IOMUXC_GPIO_SD_B1_04_FLEXSPI2_A_DATA02 0x1AC 0x3F0 0x584 0x6 0x1 1156 + #define IOMUXC_GPIO_SD_B1_04_FLEXSPI1_B_SS0_B 0x1AC 0x3F0 0x0 0x8 0x0 1157 + #define IOMUXC_GPIO_SD_B1_04_ENET_QOS_1588_EVENT2_AUX_IN 0x1AC 0x3F0 0x0 0x9 0x0 1158 + #define IOMUXC_GPIO_SD_B1_04_GPIO10_IO07 0x1AC 0x3F0 0x0 0xA 0x0 1159 + 1160 + #define IOMUXC_GPIO_SD_B1_05_GPIO10_IO08 0x1B0 0x3F4 0x0 0xA 0x0 1161 + #define IOMUXC_GPIO_SD_B1_05_USDHC1_DATA3 0x1B0 0x3F4 0x0 0x0 0x0 1162 + #define IOMUXC_GPIO_SD_B1_05_XBAR1_INOUT25 0x1B0 0x3F4 0x6EC 0x2 0x1 1163 + #define IOMUXC_GPIO_SD_B1_05_GPT4_CLK 0x1B0 0x3F4 0x0 0x3 0x0 1164 + #define IOMUXC_GPIO_SD_B1_05_GPIO_MUX4_IO08 0x1B0 0x3F4 0x0 0x5 0x0 1165 + #define IOMUXC_GPIO_SD_B1_05_FLEXSPI2_A_DATA03 0x1B0 0x3F4 0x588 0x6 0x1 1166 + #define IOMUXC_GPIO_SD_B1_05_FLEXSPI1_B_DQS 0x1B0 0x3F4 0x0 0x8 0x0 1167 + #define IOMUXC_GPIO_SD_B1_05_ENET_QOS_1588_EVENT3_AUX_IN 0x1B0 0x3F4 0x0 0x9 0x0 1168 + 1169 + #define IOMUXC_GPIO_SD_B2_00_GPIO10_IO09 0x1B4 0x3F8 0x0 0xA 0x0 1170 + #define IOMUXC_GPIO_SD_B2_00_USDHC2_DATA3 0x1B4 0x3F8 0x0 0x0 0x0 1171 + #define IOMUXC_GPIO_SD_B2_00_FLEXSPI1_B_DATA03 0x1B4 0x3F8 0x570 0x1 0x1 1172 + #define IOMUXC_GPIO_SD_B2_00_ENET_1G_RX_EN 0x1B4 0x3F8 0x4E0 0x2 0x1 1173 + #define IOMUXC_GPIO_SD_B2_00_LPUART9_TXD 0x1B4 0x3F8 0x0 0x3 0x0 1174 + #define IOMUXC_GPIO_SD_B2_00_LPSPI4_SCK 0x1B4 0x3F8 0x610 0x4 0x0 1175 + #define IOMUXC_GPIO_SD_B2_00_GPIO_MUX4_IO09 0x1B4 0x3F8 0x0 0x5 0x0 1176 + 1177 + #define IOMUXC_GPIO_SD_B2_01_USDHC2_DATA2 0x1B8 0x3FC 0x0 0x0 0x0 1178 + #define IOMUXC_GPIO_SD_B2_01_FLEXSPI1_B_DATA02 0x1B8 0x3FC 0x56C 0x1 0x1 1179 + #define IOMUXC_GPIO_SD_B2_01_ENET_1G_RX_CLK 0x1B8 0x3FC 0x4CC 0x2 0x1 1180 + #define IOMUXC_GPIO_SD_B2_01_LPUART9_RXD 0x1B8 0x3FC 0x0 0x3 0x0 1181 + #define IOMUXC_GPIO_SD_B2_01_LPSPI4_PCS0 0x1B8 0x3FC 0x60C 0x4 0x0 1182 + #define IOMUXC_GPIO_SD_B2_01_GPIO_MUX4_IO10 0x1B8 0x3FC 0x0 0x5 0x0 1183 + #define IOMUXC_GPIO_SD_B2_01_GPIO10_IO10 0x1B8 0x3FC 0x0 0xA 0x0 1184 + 1185 + #define IOMUXC_GPIO_SD_B2_02_GPIO10_IO11 0x1BC 0x400 0x0 0xA 0x0 1186 + #define IOMUXC_GPIO_SD_B2_02_USDHC2_DATA1 0x1BC 0x400 0x0 0x0 0x0 1187 + #define IOMUXC_GPIO_SD_B2_02_FLEXSPI1_B_DATA01 0x1BC 0x400 0x568 0x1 0x1 1188 + #define IOMUXC_GPIO_SD_B2_02_ENET_1G_RX_DATA00 0x1BC 0x400 0x4D0 0x2 0x1 1189 + #define IOMUXC_GPIO_SD_B2_02_LPUART9_CTS_B 0x1BC 0x400 0x0 0x3 0x0 1190 + #define IOMUXC_GPIO_SD_B2_02_LPSPI4_SOUT 0x1BC 0x400 0x618 0x4 0x0 1191 + #define IOMUXC_GPIO_SD_B2_02_GPIO_MUX4_IO11 0x1BC 0x400 0x0 0x5 0x0 1192 + 1193 + #define IOMUXC_GPIO_SD_B2_03_GPIO10_IO12 0x1C0 0x404 0x0 0xA 0x0 1194 + #define IOMUXC_GPIO_SD_B2_03_USDHC2_DATA0 0x1C0 0x404 0x0 0x0 0x0 1195 + #define IOMUXC_GPIO_SD_B2_03_FLEXSPI1_B_DATA00 0x1C0 0x404 0x564 0x1 0x1 1196 + #define IOMUXC_GPIO_SD_B2_03_ENET_1G_RX_DATA01 0x1C0 0x404 0x4D4 0x2 0x1 1197 + #define IOMUXC_GPIO_SD_B2_03_LPUART9_RTS_B 0x1C0 0x404 0x0 0x3 0x0 1198 + #define IOMUXC_GPIO_SD_B2_03_LPSPI4_SIN 0x1C0 0x404 0x614 0x4 0x0 1199 + #define IOMUXC_GPIO_SD_B2_03_GPIO_MUX4_IO12 0x1C0 0x404 0x0 0x5 0x0 1200 + 1201 + #define IOMUXC_GPIO_SD_B2_04_USDHC2_CLK 0x1C4 0x408 0x0 0x0 0x0 1202 + #define IOMUXC_GPIO_SD_B2_04_FLEXSPI1_B_SCLK 0x1C4 0x408 0x578 0x1 0x1 1203 + #define IOMUXC_GPIO_SD_B2_04_ENET_1G_RX_DATA02 0x1C4 0x408 0x4D8 0x2 0x1 1204 + #define IOMUXC_GPIO_SD_B2_04_FLEXSPI1_A_SS1_B 0x1C4 0x408 0x0 0x3 0x0 1205 + #define IOMUXC_GPIO_SD_B2_04_LPSPI4_PCS1 0x1C4 0x408 0x0 0x4 0x0 1206 + #define IOMUXC_GPIO_SD_B2_04_GPIO_MUX4_IO13 0x1C4 0x408 0x0 0x5 0x0 1207 + #define IOMUXC_GPIO_SD_B2_04_GPIO10_IO13 0x1C4 0x408 0x0 0xA 0x0 1208 + 1209 + #define IOMUXC_GPIO_SD_B2_05_GPIO10_IO14 0x1C8 0x40C 0x0 0xA 0x0 1210 + #define IOMUXC_GPIO_SD_B2_05_USDHC2_CMD 0x1C8 0x40C 0x0 0x0 0x0 1211 + #define IOMUXC_GPIO_SD_B2_05_FLEXSPI1_A_DQS 0x1C8 0x40C 0x550 0x1 0x2 1212 + #define IOMUXC_GPIO_SD_B2_05_ENET_1G_RX_DATA03 0x1C8 0x40C 0x4DC 0x2 0x1 1213 + #define IOMUXC_GPIO_SD_B2_05_FLEXSPI1_B_SS0_B 0x1C8 0x40C 0x0 0x3 0x0 1214 + #define IOMUXC_GPIO_SD_B2_05_LPSPI4_PCS2 0x1C8 0x40C 0x0 0x4 0x0 1215 + #define IOMUXC_GPIO_SD_B2_05_GPIO_MUX4_IO14 0x1C8 0x40C 0x0 0x5 0x0 1216 + 1217 + #define IOMUXC_GPIO_SD_B2_06_GPIO10_IO15 0x1CC 0x410 0x0 0xA 0x0 1218 + #define IOMUXC_GPIO_SD_B2_06_USDHC2_RESET_B 0x1CC 0x410 0x0 0x0 0x0 1219 + #define IOMUXC_GPIO_SD_B2_06_FLEXSPI1_A_SS0_B 0x1CC 0x410 0x0 0x1 0x0 1220 + #define IOMUXC_GPIO_SD_B2_06_ENET_1G_TX_DATA03 0x1CC 0x410 0x0 0x2 0x0 1221 + #define IOMUXC_GPIO_SD_B2_06_LPSPI4_PCS3 0x1CC 0x410 0x0 0x3 0x0 1222 + #define IOMUXC_GPIO_SD_B2_06_GPT6_CAPTURE1 0x1CC 0x410 0x0 0x4 0x0 1223 + #define IOMUXC_GPIO_SD_B2_06_GPIO_MUX4_IO15 0x1CC 0x410 0x0 0x5 0x0 1224 + 1225 + #define IOMUXC_GPIO_SD_B2_07_USDHC2_STROBE 0x1D0 0x414 0x0 0x0 0x0 1226 + #define IOMUXC_GPIO_SD_B2_07_FLEXSPI1_A_SCLK 0x1D0 0x414 0x574 0x1 0x1 1227 + #define IOMUXC_GPIO_SD_B2_07_ENET_1G_TX_DATA02 0x1D0 0x414 0x0 0x2 0x0 1228 + #define IOMUXC_GPIO_SD_B2_07_LPUART3_CTS_B 0x1D0 0x414 0x0 0x3 0x0 1229 + #define IOMUXC_GPIO_SD_B2_07_GPT6_CAPTURE2 0x1D0 0x414 0x0 0x4 0x0 1230 + #define IOMUXC_GPIO_SD_B2_07_GPIO_MUX4_IO16 0x1D0 0x414 0x0 0x5 0x0 1231 + #define IOMUXC_GPIO_SD_B2_07_LPSPI2_SCK 0x1D0 0x414 0x5E4 0x6 0x1 1232 + #define IOMUXC_GPIO_SD_B2_07_ENET_TX_ER 0x1D0 0x414 0x0 0x8 0x0 1233 + #define IOMUXC_GPIO_SD_B2_07_ENET_QOS_REF_CLK 0x1D0 0x414 0x4A0 0x9 0x1 1234 + #define IOMUXC_GPIO_SD_B2_07_GPIO10_IO16 0x1D0 0x414 0x0 0xA 0x0 1235 + 1236 + #define IOMUXC_GPIO_SD_B2_08_GPIO10_IO17 0x1D4 0x418 0x0 0xA 0x0 1237 + #define IOMUXC_GPIO_SD_B2_08_USDHC2_DATA4 0x1D4 0x418 0x0 0x0 0x0 1238 + #define IOMUXC_GPIO_SD_B2_08_FLEXSPI1_A_DATA00 0x1D4 0x418 0x554 0x1 0x1 1239 + #define IOMUXC_GPIO_SD_B2_08_ENET_1G_TX_DATA01 0x1D4 0x418 0x0 0x2 0x0 1240 + #define IOMUXC_GPIO_SD_B2_08_LPUART3_RTS_B 0x1D4 0x418 0x0 0x3 0x0 1241 + #define IOMUXC_GPIO_SD_B2_08_GPT6_COMPARE1 0x1D4 0x418 0x0 0x4 0x0 1242 + #define IOMUXC_GPIO_SD_B2_08_GPIO_MUX4_IO17 0x1D4 0x418 0x0 0x5 0x0 1243 + #define IOMUXC_GPIO_SD_B2_08_LPSPI2_PCS0 0x1D4 0x418 0x5DC 0x6 0x1 1244 + 1245 + #define IOMUXC_GPIO_SD_B2_09_GPIO10_IO18 0x1D8 0x41C 0x0 0xA 0x0 1246 + #define IOMUXC_GPIO_SD_B2_09_USDHC2_DATA5 0x1D8 0x41C 0x0 0x0 0x0 1247 + #define IOMUXC_GPIO_SD_B2_09_FLEXSPI1_A_DATA01 0x1D8 0x41C 0x558 0x1 0x1 1248 + #define IOMUXC_GPIO_SD_B2_09_ENET_1G_TX_DATA00 0x1D8 0x41C 0x0 0x2 0x0 1249 + #define IOMUXC_GPIO_SD_B2_09_LPUART5_CTS_B 0x1D8 0x41C 0x0 0x3 0x0 1250 + #define IOMUXC_GPIO_SD_B2_09_GPT6_COMPARE2 0x1D8 0x41C 0x0 0x4 0x0 1251 + #define IOMUXC_GPIO_SD_B2_09_GPIO_MUX4_IO18 0x1D8 0x41C 0x0 0x5 0x0 1252 + #define IOMUXC_GPIO_SD_B2_09_LPSPI2_SOUT 0x1D8 0x41C 0x5EC 0x6 0x1 1253 + 1254 + #define IOMUXC_GPIO_SD_B2_10_GPIO10_IO19 0x1DC 0x420 0x0 0xA 0x0 1255 + #define IOMUXC_GPIO_SD_B2_10_USDHC2_DATA6 0x1DC 0x420 0x0 0x0 0x0 1256 + #define IOMUXC_GPIO_SD_B2_10_FLEXSPI1_A_DATA02 0x1DC 0x420 0x55C 0x1 0x1 1257 + #define IOMUXC_GPIO_SD_B2_10_ENET_1G_TX_EN 0x1DC 0x420 0x0 0x2 0x0 1258 + #define IOMUXC_GPIO_SD_B2_10_LPUART5_RTS_B 0x1DC 0x420 0x0 0x3 0x0 1259 + #define IOMUXC_GPIO_SD_B2_10_GPT6_COMPARE3 0x1DC 0x420 0x0 0x4 0x0 1260 + #define IOMUXC_GPIO_SD_B2_10_GPIO_MUX4_IO19 0x1DC 0x420 0x0 0x5 0x0 1261 + #define IOMUXC_GPIO_SD_B2_10_LPSPI2_SIN 0x1DC 0x420 0x5E8 0x6 0x1 1262 + 1263 + #define IOMUXC_GPIO_SD_B2_11_USDHC2_DATA7 0x1E0 0x424 0x0 0x0 0x0 1264 + #define IOMUXC_GPIO_SD_B2_11_FLEXSPI1_A_DATA03 0x1E0 0x424 0x560 0x1 0x1 1265 + #define IOMUXC_GPIO_SD_B2_11_ENET_1G_TX_CLK_IO 0x1E0 0x424 0x4E8 0x2 0x1 1266 + #define IOMUXC_GPIO_SD_B2_11_ENET_1G_REF_CLK 0x1E0 0x424 0x4C4 0x3 0x1 1267 + #define IOMUXC_GPIO_SD_B2_11_GPT6_CLK 0x1E0 0x424 0x0 0x4 0x0 1268 + #define IOMUXC_GPIO_SD_B2_11_GPIO_MUX4_IO20 0x1E0 0x424 0x0 0x5 0x0 1269 + #define IOMUXC_GPIO_SD_B2_11_LPSPI2_PCS1 0x1E0 0x424 0x5E0 0x6 0x1 1270 + #define IOMUXC_GPIO_SD_B2_11_GPIO10_IO20 0x1E0 0x424 0x0 0xA 0x0 1271 + 1272 + #define IOMUXC_GPIO_DISP_B1_00_VIDEO_MUX_LCDIF_CLK 0x1E4 0x428 0x0 0x0 0x0 1273 + #define IOMUXC_GPIO_DISP_B1_00_ENET_1G_RX_EN 0x1E4 0x428 0x4E0 0x1 0x2 1274 + #define IOMUXC_GPIO_DISP_B1_00_TMR1_TIMER0 0x1E4 0x428 0x63C 0x3 0x2 1275 + #define IOMUXC_GPIO_DISP_B1_00_XBAR1_INOUT26 0x1E4 0x428 0x6F0 0x4 0x1 1276 + #define IOMUXC_GPIO_DISP_B1_00_GPIO_MUX4_IO21 0x1E4 0x428 0x0 0x5 0x0 1277 + #define IOMUXC_GPIO_DISP_B1_00_ENET_QOS_RX_EN 0x1E4 0x428 0x4F8 0x8 0x0 1278 + #define IOMUXC_GPIO_DISP_B1_00_GPIO10_IO21 0x1E4 0x428 0x0 0xA 0x0 1279 + 1280 + #define IOMUXC_GPIO_DISP_B1_01_VIDEO_MUX_LCDIF_ENABLE 0x1E8 0x42C 0x0 0x0 0x0 1281 + #define IOMUXC_GPIO_DISP_B1_01_ENET_1G_RX_CLK 0x1E8 0x42C 0x4CC 0x1 0x2 1282 + #define IOMUXC_GPIO_DISP_B1_01_ENET_1G_RX_ER 0x1E8 0x42C 0x4E4 0x2 0x1 1283 + #define IOMUXC_GPIO_DISP_B1_01_TMR1_TIMER1 0x1E8 0x42C 0x640 0x3 0x2 1284 + #define IOMUXC_GPIO_DISP_B1_01_XBAR1_INOUT27 0x1E8 0x42C 0x6F4 0x4 0x1 1285 + #define IOMUXC_GPIO_DISP_B1_01_GPIO_MUX4_IO22 0x1E8 0x42C 0x0 0x5 0x0 1286 + #define IOMUXC_GPIO_DISP_B1_01_ENET_QOS_RX_CLK 0x1E8 0x42C 0x0 0x8 0x0 1287 + #define IOMUXC_GPIO_DISP_B1_01_ENET_QOS_RX_ER 0x1E8 0x42C 0x4FC 0x9 0x0 1288 + #define IOMUXC_GPIO_DISP_B1_01_GPIO10_IO22 0x1E8 0x42C 0x0 0xA 0x0 1289 + 1290 + #define IOMUXC_GPIO_DISP_B1_02_GPIO10_IO23 0x1EC 0x430 0x0 0xA 0x0 1291 + #define IOMUXC_GPIO_DISP_B1_02_VIDEO_MUX_LCDIF_HSYNC 0x1EC 0x430 0x0 0x0 0x0 1292 + #define IOMUXC_GPIO_DISP_B1_02_ENET_1G_RX_DATA00 0x1EC 0x430 0x4D0 0x1 0x2 1293 + #define IOMUXC_GPIO_DISP_B1_02_LPI2C3_SCL 0x1EC 0x430 0x5BC 0x2 0x0 1294 + #define IOMUXC_GPIO_DISP_B1_02_TMR1_TIMER2 0x1EC 0x430 0x644 0x3 0x1 1295 + #define IOMUXC_GPIO_DISP_B1_02_XBAR1_INOUT28 0x1EC 0x430 0x6F8 0x4 0x1 1296 + #define IOMUXC_GPIO_DISP_B1_02_GPIO_MUX4_IO23 0x1EC 0x430 0x0 0x5 0x0 1297 + #define IOMUXC_GPIO_DISP_B1_02_ENET_QOS_RX_DATA00 0x1EC 0x430 0x4F0 0x8 0x0 1298 + #define IOMUXC_GPIO_DISP_B1_02_LPUART1_TXD 0x1EC 0x430 0x620 0x9 0x1 1299 + 1300 + #define IOMUXC_GPIO_DISP_B1_03_VIDEO_MUX_LCDIF_VSYNC 0x1F0 0x434 0x0 0x0 0x0 1301 + #define IOMUXC_GPIO_DISP_B1_03_ENET_1G_RX_DATA01 0x1F0 0x434 0x4D4 0x1 0x2 1302 + #define IOMUXC_GPIO_DISP_B1_03_LPI2C3_SDA 0x1F0 0x434 0x5C0 0x2 0x0 1303 + #define IOMUXC_GPIO_DISP_B1_03_TMR2_TIMER0 0x1F0 0x434 0x648 0x3 0x2 1304 + #define IOMUXC_GPIO_DISP_B1_03_XBAR1_INOUT29 0x1F0 0x434 0x6FC 0x4 0x1 1305 + #define IOMUXC_GPIO_DISP_B1_03_GPIO_MUX4_IO24 0x1F0 0x434 0x0 0x5 0x0 1306 + #define IOMUXC_GPIO_DISP_B1_03_ENET_QOS_RX_DATA01 0x1F0 0x434 0x4F4 0x8 0x0 1307 + #define IOMUXC_GPIO_DISP_B1_03_LPUART1_RXD 0x1F0 0x434 0x61C 0x9 0x1 1308 + #define IOMUXC_GPIO_DISP_B1_03_GPIO10_IO24 0x1F0 0x434 0x0 0xA 0x0 1309 + 1310 + #define IOMUXC_GPIO_DISP_B1_04_VIDEO_MUX_LCDIF_DATA00 0x1F4 0x438 0x0 0x0 0x0 1311 + #define IOMUXC_GPIO_DISP_B1_04_ENET_1G_RX_DATA02 0x1F4 0x438 0x4D8 0x1 0x2 1312 + #define IOMUXC_GPIO_DISP_B1_04_LPUART4_RXD 0x1F4 0x438 0x0 0x2 0x0 1313 + #define IOMUXC_GPIO_DISP_B1_04_TMR2_TIMER1 0x1F4 0x438 0x64C 0x3 0x2 1314 + #define IOMUXC_GPIO_DISP_B1_04_XBAR1_INOUT30 0x1F4 0x438 0x700 0x4 0x1 1315 + #define IOMUXC_GPIO_DISP_B1_04_GPIO_MUX4_IO25 0x1F4 0x438 0x0 0x5 0x0 1316 + #define IOMUXC_GPIO_DISP_B1_04_ENET_QOS_RX_DATA02 0x1F4 0x438 0x0 0x8 0x0 1317 + #define IOMUXC_GPIO_DISP_B1_04_LPSPI3_SCK 0x1F4 0x438 0x600 0x9 0x1 1318 + #define IOMUXC_GPIO_DISP_B1_04_GPIO10_IO25 0x1F4 0x438 0x0 0xA 0x0 1319 + 1320 + #define IOMUXC_GPIO_DISP_B1_05_GPIO10_IO26 0x1F8 0x43C 0x0 0xA 0x0 1321 + #define IOMUXC_GPIO_DISP_B1_05_VIDEO_MUX_LCDIF_DATA01 0x1F8 0x43C 0x0 0x0 0x0 1322 + #define IOMUXC_GPIO_DISP_B1_05_ENET_1G_RX_DATA03 0x1F8 0x43C 0x4DC 0x1 0x2 1323 + #define IOMUXC_GPIO_DISP_B1_05_LPUART4_CTS_B 0x1F8 0x43C 0x0 0x2 0x0 1324 + #define IOMUXC_GPIO_DISP_B1_05_TMR2_TIMER2 0x1F8 0x43C 0x650 0x3 0x1 1325 + #define IOMUXC_GPIO_DISP_B1_05_XBAR1_INOUT31 0x1F8 0x43C 0x704 0x4 0x1 1326 + #define IOMUXC_GPIO_DISP_B1_05_GPIO_MUX4_IO26 0x1F8 0x43C 0x0 0x5 0x0 1327 + #define IOMUXC_GPIO_DISP_B1_05_ENET_QOS_RX_DATA03 0x1F8 0x43C 0x0 0x8 0x0 1328 + #define IOMUXC_GPIO_DISP_B1_05_LPSPI3_SIN 0x1F8 0x43C 0x604 0x9 0x1 1329 + 1330 + #define IOMUXC_GPIO_DISP_B1_06_VIDEO_MUX_LCDIF_DATA02 0x1FC 0x440 0x0 0x0 0x0 1331 + #define IOMUXC_GPIO_DISP_B1_06_ENET_1G_TX_DATA03 0x1FC 0x440 0x0 0x1 0x0 1332 + #define IOMUXC_GPIO_DISP_B1_06_LPUART4_TXD 0x1FC 0x440 0x0 0x2 0x0 1333 + #define IOMUXC_GPIO_DISP_B1_06_TMR3_TIMER0 0x1FC 0x440 0x654 0x3 0x2 1334 + #define IOMUXC_GPIO_DISP_B1_06_XBAR1_INOUT32 0x1FC 0x440 0x708 0x4 0x1 1335 + #define IOMUXC_GPIO_DISP_B1_06_GPIO_MUX4_IO27 0x1FC 0x440 0x0 0x5 0x0 1336 + #define IOMUXC_GPIO_DISP_B1_06_SRC_BT_CFG00 0x1FC 0x440 0x0 0x6 0x0 1337 + #define IOMUXC_GPIO_DISP_B1_06_ENET_QOS_TX_DATA03 0x1FC 0x440 0x0 0x8 0x0 1338 + #define IOMUXC_GPIO_DISP_B1_06_LPSPI3_SOUT 0x1FC 0x440 0x608 0x9 0x1 1339 + #define IOMUXC_GPIO_DISP_B1_06_GPIO10_IO27 0x1FC 0x440 0x0 0xA 0x0 1340 + 1341 + #define IOMUXC_GPIO_DISP_B1_07_VIDEO_MUX_LCDIF_DATA03 0x200 0x444 0x0 0x0 0x0 1342 + #define IOMUXC_GPIO_DISP_B1_07_ENET_1G_TX_DATA02 0x200 0x444 0x0 0x1 0x0 1343 + #define IOMUXC_GPIO_DISP_B1_07_LPUART4_RTS_B 0x200 0x444 0x0 0x2 0x0 1344 + #define IOMUXC_GPIO_DISP_B1_07_TMR3_TIMER1 0x200 0x444 0x658 0x3 0x2 1345 + #define IOMUXC_GPIO_DISP_B1_07_XBAR1_INOUT33 0x200 0x444 0x70C 0x4 0x1 1346 + #define IOMUXC_GPIO_DISP_B1_07_GPIO_MUX4_IO28 0x200 0x444 0x0 0x5 0x0 1347 + #define IOMUXC_GPIO_DISP_B1_07_SRC_BT_CFG01 0x200 0x444 0x0 0x6 0x0 1348 + #define IOMUXC_GPIO_DISP_B1_07_ENET_QOS_TX_DATA02 0x200 0x444 0x0 0x8 0x0 1349 + #define IOMUXC_GPIO_DISP_B1_07_LPSPI3_PCS0 0x200 0x444 0x5F0 0x9 0x1 1350 + #define IOMUXC_GPIO_DISP_B1_07_GPIO10_IO28 0x200 0x444 0x0 0xA 0x0 1351 + 1352 + #define IOMUXC_GPIO_DISP_B1_08_GPIO10_IO29 0x204 0x448 0x0 0xA 0x0 1353 + #define IOMUXC_GPIO_DISP_B1_08_VIDEO_MUX_LCDIF_DATA04 0x204 0x448 0x0 0x0 0x0 1354 + #define IOMUXC_GPIO_DISP_B1_08_ENET_1G_TX_DATA01 0x204 0x448 0x0 0x1 0x0 1355 + #define IOMUXC_GPIO_DISP_B1_08_USDHC1_CD_B 0x204 0x448 0x6C8 0x2 0x1 1356 + #define IOMUXC_GPIO_DISP_B1_08_TMR3_TIMER2 0x204 0x448 0x65C 0x3 0x1 1357 + #define IOMUXC_GPIO_DISP_B1_08_XBAR1_INOUT34 0x204 0x448 0x710 0x4 0x1 1358 + #define IOMUXC_GPIO_DISP_B1_08_GPIO_MUX4_IO29 0x204 0x448 0x0 0x5 0x0 1359 + #define IOMUXC_GPIO_DISP_B1_08_SRC_BT_CFG02 0x204 0x448 0x0 0x6 0x0 1360 + #define IOMUXC_GPIO_DISP_B1_08_ENET_QOS_TX_DATA01 0x204 0x448 0x0 0x8 0x0 1361 + #define IOMUXC_GPIO_DISP_B1_08_LPSPI3_PCS1 0x204 0x448 0x5F4 0x9 0x1 1362 + 1363 + #define IOMUXC_GPIO_DISP_B1_09_VIDEO_MUX_LCDIF_DATA05 0x208 0x44C 0x0 0x0 0x0 1364 + #define IOMUXC_GPIO_DISP_B1_09_ENET_1G_TX_DATA00 0x208 0x44C 0x0 0x1 0x0 1365 + #define IOMUXC_GPIO_DISP_B1_09_USDHC1_WP 0x208 0x44C 0x6CC 0x2 0x1 1366 + #define IOMUXC_GPIO_DISP_B1_09_TMR4_TIMER0 0x208 0x44C 0x660 0x3 0x2 1367 + #define IOMUXC_GPIO_DISP_B1_09_XBAR1_INOUT35 0x208 0x44C 0x714 0x4 0x1 1368 + #define IOMUXC_GPIO_DISP_B1_09_GPIO_MUX4_IO30 0x208 0x44C 0x0 0x5 0x0 1369 + #define IOMUXC_GPIO_DISP_B1_09_SRC_BT_CFG03 0x208 0x44C 0x0 0x6 0x0 1370 + #define IOMUXC_GPIO_DISP_B1_09_ENET_QOS_TX_DATA00 0x208 0x44C 0x0 0x8 0x0 1371 + #define IOMUXC_GPIO_DISP_B1_09_LPSPI3_PCS2 0x208 0x44C 0x5F8 0x9 0x1 1372 + #define IOMUXC_GPIO_DISP_B1_09_GPIO10_IO30 0x208 0x44C 0x0 0xA 0x0 1373 + 1374 + #define IOMUXC_GPIO_DISP_B1_10_VIDEO_MUX_LCDIF_DATA06 0x20C 0x450 0x0 0x0 0x0 1375 + #define IOMUXC_GPIO_DISP_B1_10_ENET_1G_TX_EN 0x20C 0x450 0x0 0x1 0x0 1376 + #define IOMUXC_GPIO_DISP_B1_10_USDHC1_RESET_B 0x20C 0x450 0x0 0x2 0x0 1377 + #define IOMUXC_GPIO_DISP_B1_10_TMR4_TIMER1 0x20C 0x450 0x664 0x3 0x2 1378 + #define IOMUXC_GPIO_DISP_B1_10_XBAR1_INOUT36 0x20C 0x450 0x0 0x4 0x0 1379 + #define IOMUXC_GPIO_DISP_B1_10_GPIO_MUX4_IO31 0x20C 0x450 0x0 0x5 0x0 1380 + #define IOMUXC_GPIO_DISP_B1_10_SRC_BT_CFG04 0x20C 0x450 0x0 0x6 0x0 1381 + #define IOMUXC_GPIO_DISP_B1_10_ENET_QOS_TX_EN 0x20C 0x450 0x0 0x8 0x0 1382 + #define IOMUXC_GPIO_DISP_B1_10_LPSPI3_PCS3 0x20C 0x450 0x5FC 0x9 0x1 1383 + #define IOMUXC_GPIO_DISP_B1_10_GPIO10_IO31 0x20C 0x450 0x0 0xA 0x0 1384 + 1385 + #define IOMUXC_GPIO_DISP_B1_11_VIDEO_MUX_LCDIF_DATA07 0x210 0x454 0x0 0x0 0x0 1386 + #define IOMUXC_GPIO_DISP_B1_11_ENET_1G_TX_CLK_IO 0x210 0x454 0x4E8 0x1 0x2 1387 + #define IOMUXC_GPIO_DISP_B1_11_ENET_1G_REF_CLK 0x210 0x454 0x4C4 0x2 0x2 1388 + #define IOMUXC_GPIO_DISP_B1_11_TMR4_TIMER2 0x210 0x454 0x668 0x3 0x1 1389 + #define IOMUXC_GPIO_DISP_B1_11_XBAR1_INOUT37 0x210 0x454 0x0 0x4 0x0 1390 + #define IOMUXC_GPIO_DISP_B1_11_GPIO_MUX5_IO00 0x210 0x454 0x0 0x5 0x0 1391 + #define IOMUXC_GPIO_DISP_B1_11_SRC_BT_CFG05 0x210 0x454 0x0 0x6 0x0 1392 + #define IOMUXC_GPIO_DISP_B1_11_ENET_QOS_TX_CLK 0x210 0x454 0x4A4 0x8 0x0 1393 + #define IOMUXC_GPIO_DISP_B1_11_ENET_QOS_REF_CLK 0x210 0x454 0x4A0 0x9 0x2 1394 + #define IOMUXC_GPIO_DISP_B1_11_GPIO11_IO00 0x210 0x454 0x0 0xA 0x0 1395 + 1396 + #define IOMUXC_GPIO_DISP_B2_00_GPIO11_IO01 0x214 0x458 0x0 0xA 0x0 1397 + #define IOMUXC_GPIO_DISP_B2_00_VIDEO_MUX_LCDIF_DATA08 0x214 0x458 0x0 0x0 0x0 1398 + #define IOMUXC_GPIO_DISP_B2_00_WDOG1_B 0x214 0x458 0x0 0x1 0x0 1399 + #define IOMUXC_GPIO_DISP_B2_00_MQS_RIGHT 0x214 0x458 0x0 0x2 0x0 1400 + #define IOMUXC_GPIO_DISP_B2_00_ENET_1G_TX_ER 0x214 0x458 0x0 0x3 0x0 1401 + #define IOMUXC_GPIO_DISP_B2_00_SAI1_TX_DATA03 0x214 0x458 0x0 0x4 0x0 1402 + #define IOMUXC_GPIO_DISP_B2_00_GPIO_MUX5_IO01 0x214 0x458 0x0 0x5 0x0 1403 + #define IOMUXC_GPIO_DISP_B2_00_SRC_BT_CFG06 0x214 0x458 0x0 0x6 0x0 1404 + #define IOMUXC_GPIO_DISP_B2_00_ENET_QOS_TX_ER 0x214 0x458 0x0 0x8 0x0 1405 + 1406 + #define IOMUXC_GPIO_DISP_B2_01_VIDEO_MUX_LCDIF_DATA09 0x218 0x45C 0x0 0x0 0x0 1407 + #define IOMUXC_GPIO_DISP_B2_01_USDHC1_VSELECT 0x218 0x45C 0x0 0x1 0x0 1408 + #define IOMUXC_GPIO_DISP_B2_01_MQS_LEFT 0x218 0x45C 0x0 0x2 0x0 1409 + #define IOMUXC_GPIO_DISP_B2_01_WDOG2_B 0x218 0x45C 0x0 0x3 0x0 1410 + #define IOMUXC_GPIO_DISP_B2_01_SAI1_TX_DATA02 0x218 0x45C 0x0 0x4 0x0 1411 + #define IOMUXC_GPIO_DISP_B2_01_GPIO_MUX5_IO02 0x218 0x45C 0x0 0x5 0x0 1412 + #define IOMUXC_GPIO_DISP_B2_01_SRC_BT_CFG07 0x218 0x45C 0x0 0x6 0x0 1413 + #define IOMUXC_GPIO_DISP_B2_01_EWM_OUT_B 0x218 0x45C 0x0 0x8 0x0 1414 + #define IOMUXC_GPIO_DISP_B2_01_CCM_ENET_REF_CLK_25M 0x218 0x45C 0x0 0x9 0x0 1415 + #define IOMUXC_GPIO_DISP_B2_01_GPIO11_IO02 0x218 0x45C 0x0 0xA 0x0 1416 + 1417 + #define IOMUXC_GPIO_DISP_B2_02_GPIO11_IO03 0x21C 0x460 0x0 0xA 0x0 1418 + #define IOMUXC_GPIO_DISP_B2_02_VIDEO_MUX_LCDIF_DATA10 0x21C 0x460 0x0 0x0 0x0 1419 + #define IOMUXC_GPIO_DISP_B2_02_ENET_TX_DATA00 0x21C 0x460 0x0 0x1 0x0 1420 + #define IOMUXC_GPIO_DISP_B2_02_PIT1_TRIGGER3 0x21C 0x460 0x0 0x2 0x0 1421 + #define IOMUXC_GPIO_DISP_B2_02_ARM_TRACE00 0x21C 0x460 0x0 0x3 0x0 1422 + #define IOMUXC_GPIO_DISP_B2_02_SAI1_TX_DATA01 0x21C 0x460 0x0 0x4 0x0 1423 + #define IOMUXC_GPIO_DISP_B2_02_GPIO_MUX5_IO03 0x21C 0x460 0x0 0x5 0x0 1424 + #define IOMUXC_GPIO_DISP_B2_02_SRC_BT_CFG08 0x21C 0x460 0x0 0x6 0x0 1425 + #define IOMUXC_GPIO_DISP_B2_02_ENET_QOS_TX_DATA00 0x21C 0x460 0x0 0x8 0x0 1426 + 1427 + #define IOMUXC_GPIO_DISP_B2_03_GPIO11_IO04 0x220 0x464 0x0 0xA 0x0 1428 + #define IOMUXC_GPIO_DISP_B2_03_VIDEO_MUX_LCDIF_DATA11 0x220 0x464 0x0 0x0 0x0 1429 + #define IOMUXC_GPIO_DISP_B2_03_ENET_TX_DATA01 0x220 0x464 0x0 0x1 0x0 1430 + #define IOMUXC_GPIO_DISP_B2_03_PIT1_TRIGGER2 0x220 0x464 0x0 0x2 0x0 1431 + #define IOMUXC_GPIO_DISP_B2_03_ARM_TRACE01 0x220 0x464 0x0 0x3 0x0 1432 + #define IOMUXC_GPIO_DISP_B2_03_SAI1_MCLK 0x220 0x464 0x66C 0x4 0x1 1433 + #define IOMUXC_GPIO_DISP_B2_03_GPIO_MUX5_IO04 0x220 0x464 0x0 0x5 0x0 1434 + #define IOMUXC_GPIO_DISP_B2_03_SRC_BT_CFG09 0x220 0x464 0x0 0x6 0x0 1435 + #define IOMUXC_GPIO_DISP_B2_03_ENET_QOS_TX_DATA01 0x220 0x464 0x0 0x8 0x0 1436 + 1437 + #define IOMUXC_GPIO_DISP_B2_04_VIDEO_MUX_LCDIF_DATA12 0x224 0x468 0x0 0x0 0x0 1438 + #define IOMUXC_GPIO_DISP_B2_04_ENET_TX_EN 0x224 0x468 0x0 0x1 0x0 1439 + #define IOMUXC_GPIO_DISP_B2_04_PIT1_TRIGGER1 0x224 0x468 0x0 0x2 0x0 1440 + #define IOMUXC_GPIO_DISP_B2_04_ARM_TRACE02 0x224 0x468 0x0 0x3 0x0 1441 + #define IOMUXC_GPIO_DISP_B2_04_SAI1_RX_SYNC 0x224 0x468 0x678 0x4 0x1 1442 + #define IOMUXC_GPIO_DISP_B2_04_GPIO_MUX5_IO05 0x224 0x468 0x0 0x5 0x0 1443 + #define IOMUXC_GPIO_DISP_B2_04_SRC_BT_CFG10 0x224 0x468 0x0 0x6 0x0 1444 + #define IOMUXC_GPIO_DISP_B2_04_ENET_QOS_TX_EN 0x224 0x468 0x0 0x8 0x0 1445 + #define IOMUXC_GPIO_DISP_B2_04_GPIO11_IO05 0x224 0x468 0x0 0xA 0x0 1446 + 1447 + #define IOMUXC_GPIO_DISP_B2_05_GPIO11_IO06 0x228 0x46C 0x0 0xA 0x0 1448 + #define IOMUXC_GPIO_DISP_B2_05_VIDEO_MUX_LCDIF_DATA13 0x228 0x46C 0x0 0x0 0x0 1449 + #define IOMUXC_GPIO_DISP_B2_05_ENET_TX_CLK 0x228 0x46C 0x4C0 0x1 0x1 1450 + #define IOMUXC_GPIO_DISP_B2_05_ENET_REF_CLK 0x228 0x46C 0x4A8 0x2 0x1 1451 + #define IOMUXC_GPIO_DISP_B2_05_ARM_TRACE03 0x228 0x46C 0x0 0x3 0x0 1452 + #define IOMUXC_GPIO_DISP_B2_05_SAI1_RX_BCLK 0x228 0x46C 0x670 0x4 0x1 1453 + #define IOMUXC_GPIO_DISP_B2_05_GPIO_MUX5_IO06 0x228 0x46C 0x0 0x5 0x0 1454 + #define IOMUXC_GPIO_DISP_B2_05_SRC_BT_CFG11 0x228 0x46C 0x0 0x6 0x0 1455 + #define IOMUXC_GPIO_DISP_B2_05_ENET_QOS_TX_CLK 0x228 0x46C 0x4A4 0x8 0x1 1456 + 1457 + #define IOMUXC_GPIO_DISP_B2_06_GPIO11_IO07 0x22C 0x470 0x0 0xA 0x0 1458 + #define IOMUXC_GPIO_DISP_B2_06_VIDEO_MUX_LCDIF_DATA14 0x22C 0x470 0x0 0x0 0x0 1459 + #define IOMUXC_GPIO_DISP_B2_06_ENET_RX_DATA00 0x22C 0x470 0x4B0 0x1 0x1 1460 + #define IOMUXC_GPIO_DISP_B2_06_LPUART7_TXD 0x22C 0x470 0x630 0x2 0x1 1461 + #define IOMUXC_GPIO_DISP_B2_06_ARM_TRACE_CLK 0x22C 0x470 0x0 0x3 0x0 1462 + #define IOMUXC_GPIO_DISP_B2_06_SAI1_RX_DATA00 0x22C 0x470 0x674 0x4 0x1 1463 + #define IOMUXC_GPIO_DISP_B2_06_GPIO_MUX5_IO07 0x22C 0x470 0x0 0x5 0x0 1464 + #define IOMUXC_GPIO_DISP_B2_06_ENET_QOS_RX_DATA00 0x22C 0x470 0x4F0 0x8 0x1 1465 + 1466 + #define IOMUXC_GPIO_DISP_B2_07_VIDEO_MUX_LCDIF_DATA15 0x230 0x474 0x0 0x0 0x0 1467 + #define IOMUXC_GPIO_DISP_B2_07_ENET_RX_DATA01 0x230 0x474 0x4B4 0x1 0x1 1468 + #define IOMUXC_GPIO_DISP_B2_07_LPUART7_RXD 0x230 0x474 0x62C 0x2 0x1 1469 + #define IOMUXC_GPIO_DISP_B2_07_ARM_TRACE_SWO 0x230 0x474 0x0 0x3 0x0 1470 + #define IOMUXC_GPIO_DISP_B2_07_SAI1_TX_DATA00 0x230 0x474 0x0 0x4 0x0 1471 + #define IOMUXC_GPIO_DISP_B2_07_GPIO_MUX5_IO08 0x230 0x474 0x0 0x5 0x0 1472 + #define IOMUXC_GPIO_DISP_B2_07_ENET_QOS_RX_DATA01 0x230 0x474 0x4F4 0x8 0x1 1473 + #define IOMUXC_GPIO_DISP_B2_07_GPIO11_IO08 0x230 0x474 0x0 0xA 0x0 1474 + 1475 + #define IOMUXC_GPIO_DISP_B2_08_GPIO11_IO09 0x234 0x478 0x0 0xA 0x0 1476 + #define IOMUXC_GPIO_DISP_B2_08_VIDEO_MUX_LCDIF_DATA16 0x234 0x478 0x0 0x0 0x0 1477 + #define IOMUXC_GPIO_DISP_B2_08_ENET_RX_EN 0x234 0x478 0x4B8 0x1 0x1 1478 + #define IOMUXC_GPIO_DISP_B2_08_LPUART8_TXD 0x234 0x478 0x638 0x2 0x1 1479 + #define IOMUXC_GPIO_DISP_B2_08_ARM_CM7_EVENTO 0x234 0x478 0x0 0x3 0x0 1480 + #define IOMUXC_GPIO_DISP_B2_08_SAI1_TX_BCLK 0x234 0x478 0x67C 0x4 0x1 1481 + #define IOMUXC_GPIO_DISP_B2_08_GPIO_MUX5_IO09 0x234 0x478 0x0 0x5 0x0 1482 + #define IOMUXC_GPIO_DISP_B2_08_ENET_QOS_RX_EN 0x234 0x478 0x4F8 0x8 0x1 1483 + #define IOMUXC_GPIO_DISP_B2_08_LPUART1_TXD 0x234 0x478 0x620 0x9 0x2 1484 + 1485 + #define IOMUXC_GPIO_DISP_B2_09_GPIO11_IO10 0x238 0x47C 0x0 0xA 0x0 1486 + #define IOMUXC_GPIO_DISP_B2_09_VIDEO_MUX_LCDIF_DATA17 0x238 0x47C 0x0 0x0 0x0 1487 + #define IOMUXC_GPIO_DISP_B2_09_ENET_RX_ER 0x238 0x47C 0x4BC 0x1 0x1 1488 + #define IOMUXC_GPIO_DISP_B2_09_LPUART8_RXD 0x238 0x47C 0x634 0x2 0x1 1489 + #define IOMUXC_GPIO_DISP_B2_09_ARM_CM7_EVENTI 0x238 0x47C 0x0 0x3 0x0 1490 + #define IOMUXC_GPIO_DISP_B2_09_SAI1_TX_SYNC 0x238 0x47C 0x680 0x4 0x1 1491 + #define IOMUXC_GPIO_DISP_B2_09_GPIO_MUX5_IO10 0x238 0x47C 0x0 0x5 0x0 1492 + #define IOMUXC_GPIO_DISP_B2_09_ENET_QOS_RX_ER 0x238 0x47C 0x4FC 0x8 0x1 1493 + #define IOMUXC_GPIO_DISP_B2_09_LPUART1_RXD 0x238 0x47C 0x61C 0x9 0x2 1494 + 1495 + #define IOMUXC_GPIO_DISP_B2_10_GPIO11_IO11 0x23C 0x480 0x0 0xA 0x0 1496 + #define IOMUXC_GPIO_DISP_B2_10_VIDEO_MUX_LCDIF_DATA18 0x23C 0x480 0x0 0x0 0x0 1497 + #define IOMUXC_GPIO_DISP_B2_10_EMVSIM2_IO 0x23C 0x480 0x6A8 0x1 0x1 1498 + #define IOMUXC_GPIO_DISP_B2_10_LPUART2_TXD 0x23C 0x480 0x0 0x2 0x0 1499 + #define IOMUXC_GPIO_DISP_B2_10_WDOG2_RESET_B_DEB 0x23C 0x480 0x0 0x3 0x0 1500 + #define IOMUXC_GPIO_DISP_B2_10_XBAR1_INOUT38 0x23C 0x480 0x0 0x4 0x0 1501 + #define IOMUXC_GPIO_DISP_B2_10_GPIO_MUX5_IO11 0x23C 0x480 0x0 0x5 0x0 1502 + #define IOMUXC_GPIO_DISP_B2_10_LPI2C3_SCL 0x23C 0x480 0x5BC 0x6 0x1 1503 + #define IOMUXC_GPIO_DISP_B2_10_ENET_QOS_RX_ER 0x23C 0x480 0x4FC 0x8 0x2 1504 + #define IOMUXC_GPIO_DISP_B2_10_SPDIF_IN 0x23C 0x480 0x6B4 0x9 0x2 1505 + 1506 + #define IOMUXC_GPIO_DISP_B2_11_VIDEO_MUX_LCDIF_DATA19 0x240 0x484 0x0 0x0 0x0 1507 + #define IOMUXC_GPIO_DISP_B2_11_EMVSIM2_CLK 0x240 0x484 0x0 0x1 0x0 1508 + #define IOMUXC_GPIO_DISP_B2_11_LPUART2_RXD 0x240 0x484 0x0 0x2 0x0 1509 + #define IOMUXC_GPIO_DISP_B2_11_WDOG1_RESET_B_DEB 0x240 0x484 0x0 0x3 0x0 1510 + #define IOMUXC_GPIO_DISP_B2_11_XBAR1_INOUT39 0x240 0x484 0x0 0x4 0x0 1511 + #define IOMUXC_GPIO_DISP_B2_11_GPIO_MUX5_IO12 0x240 0x484 0x0 0x5 0x0 1512 + #define IOMUXC_GPIO_DISP_B2_11_LPI2C3_SDA 0x240 0x484 0x5C0 0x6 0x1 1513 + #define IOMUXC_GPIO_DISP_B2_11_ENET_QOS_CRS 0x240 0x484 0x0 0x8 0x0 1514 + #define IOMUXC_GPIO_DISP_B2_11_SPDIF_OUT 0x240 0x484 0x0 0x9 0x0 1515 + #define IOMUXC_GPIO_DISP_B2_11_GPIO11_IO12 0x240 0x484 0x0 0xA 0x0 1516 + 1517 + #define IOMUXC_GPIO_DISP_B2_12_GPIO11_IO13 0x244 0x488 0x0 0xA 0x0 1518 + #define IOMUXC_GPIO_DISP_B2_12_VIDEO_MUX_LCDIF_DATA20 0x244 0x488 0x0 0x0 0x0 1519 + #define IOMUXC_GPIO_DISP_B2_12_EMVSIM2_RST 0x244 0x488 0x0 0x1 0x0 1520 + #define IOMUXC_GPIO_DISP_B2_12_FLEXCAN1_TX 0x244 0x488 0x0 0x2 0x0 1521 + #define IOMUXC_GPIO_DISP_B2_12_LPUART2_CTS_B 0x244 0x488 0x0 0x3 0x0 1522 + #define IOMUXC_GPIO_DISP_B2_12_XBAR1_INOUT40 0x244 0x488 0x0 0x4 0x0 1523 + #define IOMUXC_GPIO_DISP_B2_12_GPIO_MUX5_IO13 0x244 0x488 0x0 0x5 0x0 1524 + #define IOMUXC_GPIO_DISP_B2_12_LPI2C4_SCL 0x244 0x488 0x5C4 0x6 0x1 1525 + #define IOMUXC_GPIO_DISP_B2_12_ENET_QOS_COL 0x244 0x488 0x0 0x8 0x0 1526 + #define IOMUXC_GPIO_DISP_B2_12_LPSPI4_SCK 0x244 0x488 0x610 0x9 0x1 1527 + 1528 + #define IOMUXC_GPIO_DISP_B2_13_GPIO11_IO14 0x248 0x48C 0x0 0xA 0x0 1529 + #define IOMUXC_GPIO_DISP_B2_13_VIDEO_MUX_LCDIF_DATA21 0x248 0x48C 0x0 0x0 0x0 1530 + #define IOMUXC_GPIO_DISP_B2_13_EMVSIM2_SVEN 0x248 0x48C 0x0 0x1 0x0 1531 + #define IOMUXC_GPIO_DISP_B2_13_FLEXCAN1_RX 0x248 0x48C 0x498 0x2 0x1 1532 + #define IOMUXC_GPIO_DISP_B2_13_LPUART2_RTS_B 0x248 0x48C 0x0 0x3 0x0 1533 + #define IOMUXC_GPIO_DISP_B2_13_ENET_REF_CLK 0x248 0x48C 0x4A8 0x4 0x2 1534 + #define IOMUXC_GPIO_DISP_B2_13_GPIO_MUX5_IO14 0x248 0x48C 0x0 0x5 0x0 1535 + #define IOMUXC_GPIO_DISP_B2_13_LPI2C4_SDA 0x248 0x48C 0x5C8 0x6 0x1 1536 + #define IOMUXC_GPIO_DISP_B2_13_ENET_QOS_1588_EVENT0_OUT 0x248 0x48C 0x0 0x8 0x0 1537 + #define IOMUXC_GPIO_DISP_B2_13_LPSPI4_SIN 0x248 0x48C 0x614 0x9 0x1 1538 + 1539 + #define IOMUXC_GPIO_DISP_B2_14_GPIO_MUX5_IO15 0x24C 0x490 0x0 0x5 0x0 1540 + #define IOMUXC_GPIO_DISP_B2_14_FLEXCAN1_TX 0x24C 0x490 0x0 0x6 0x0 1541 + #define IOMUXC_GPIO_DISP_B2_14_ENET_QOS_1588_EVENT0_IN 0x24C 0x490 0x0 0x8 0x0 1542 + #define IOMUXC_GPIO_DISP_B2_14_LPSPI4_SOUT 0x24C 0x490 0x618 0x9 0x1 1543 + #define IOMUXC_GPIO_DISP_B2_14_GPIO11_IO15 0x24C 0x490 0x0 0xA 0x0 1544 + #define IOMUXC_GPIO_DISP_B2_14_VIDEO_MUX_LCDIF_DATA22 0x24C 0x490 0x0 0x0 0x0 1545 + #define IOMUXC_GPIO_DISP_B2_14_EMVSIM2_PD 0x24C 0x490 0x6AC 0x1 0x1 1546 + #define IOMUXC_GPIO_DISP_B2_14_WDOG2_B 0x24C 0x490 0x0 0x2 0x0 1547 + #define IOMUXC_GPIO_DISP_B2_14_VIDEO_MUX_EXT_DCIC1 0x24C 0x490 0x0 0x3 0x0 1548 + #define IOMUXC_GPIO_DISP_B2_14_ENET_1G_REF_CLK 0x24C 0x490 0x4C4 0x4 0x3 1549 + 1550 + #define IOMUXC_GPIO_DISP_B2_15_VIDEO_MUX_LCDIF_DATA23 0x250 0x494 0x0 0x0 0x0 1551 + #define IOMUXC_GPIO_DISP_B2_15_EMVSIM2_POWER_FAIL 0x250 0x494 0x6B0 0x1 0x1 1552 + #define IOMUXC_GPIO_DISP_B2_15_WDOG1_B 0x250 0x494 0x0 0x2 0x0 1553 + #define IOMUXC_GPIO_DISP_B2_15_VIDEO_MUX_EXT_DCIC2 0x250 0x494 0x0 0x3 0x0 1554 + #define IOMUXC_GPIO_DISP_B2_15_PIT1_TRIGGER0 0x250 0x494 0x0 0x4 0x0 1555 + #define IOMUXC_GPIO_DISP_B2_15_GPIO_MUX5_IO16 0x250 0x494 0x0 0x5 0x0 1556 + #define IOMUXC_GPIO_DISP_B2_15_FLEXCAN1_RX 0x250 0x494 0x498 0x6 0x2 1557 + #define IOMUXC_GPIO_DISP_B2_15_ENET_QOS_1588_EVENT0_AUX_IN 0x250 0x494 0x0 0x8 0x0 1558 + #define IOMUXC_GPIO_DISP_B2_15_LPSPI4_PCS0 0x250 0x494 0x60C 0x9 0x1 1559 + #define IOMUXC_GPIO_DISP_B2_15_GPIO11_IO16 0x250 0x494 0x0 0xA 0x0 1560 + 1561 + #endif /* _DT_BINDINGS_PINCTRL_IMXRT1170_PINFUNC_H */
-1
arch/arm/boot/dts/sun6i-a31.dtsi
··· 1389 1389 <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>; 1390 1390 clocks = <&apb0_gates 0>, <&osc24M>, <&rtc CLK_OSC32K>; 1391 1391 clock-names = "apb", "hosc", "losc"; 1392 - resets = <&apb0_rst 0>; 1393 1392 gpio-controller; 1394 1393 interrupt-controller; 1395 1394 #interrupt-cells = <3>;
-1
arch/arm/boot/dts/sun8i-a23-a33.dtsi
··· 814 814 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; 815 815 clocks = <&apb0_gates 0>, <&osc24M>, <&rtc CLK_OSC32K>; 816 816 clock-names = "apb", "hosc", "losc"; 817 - resets = <&apb0_rst 0>; 818 817 gpio-controller; 819 818 interrupt-controller; 820 819 #interrupt-cells = <3>;
-1
arch/arm/boot/dts/sun9i-a80.dtsi
··· 1218 1218 <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>; 1219 1219 clocks = <&apbs_gates 0>, <&osc24M>, <&osc32k>; 1220 1220 clock-names = "apb", "hosc", "losc"; 1221 - resets = <&apbs_rst 0>; 1222 1221 gpio-controller; 1223 1222 interrupt-controller; 1224 1223 #interrupt-cells = <3>;
+1 -1
drivers/pinctrl/Kconfig
··· 311 311 LED controller. 312 312 313 313 config PINCTRL_OCELOT 314 - bool "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs" 314 + tristate "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs" 315 315 depends on OF 316 316 depends on HAS_IOMEM 317 317 select GPIOLIB
+1 -1
drivers/pinctrl/aspeed/pinmux-aspeed.h
··· 632 632 SIG_EXPR_LIST_ALIAS(pin, sig, group) 633 633 634 634 /** 635 - * Similar to the above, but for pins with a dual expressions (DE) and 635 + * Similar to the above, but for pins with a dual expressions (DE) 636 636 * and a single group (SG) of pins. 637 637 * 638 638 * @pin: The pin the signal will be routed to
+12 -9
drivers/pinctrl/bcm/pinctrl-bcm2835.c
··· 507 507 } 508 508 } 509 509 510 - static void bcm2835_gpio_irq_enable(struct irq_data *data) 510 + static void bcm2835_gpio_irq_unmask(struct irq_data *data) 511 511 { 512 512 struct gpio_chip *chip = irq_data_get_irq_chip_data(data); 513 513 struct bcm2835_pinctrl *pc = gpiochip_get_data(chip); ··· 516 516 unsigned bank = GPIO_REG_OFFSET(gpio); 517 517 unsigned long flags; 518 518 519 + gpiochip_enable_irq(chip, gpio); 520 + 519 521 raw_spin_lock_irqsave(&pc->irq_lock[bank], flags); 520 522 set_bit(offset, &pc->enabled_irq_map[bank]); 521 523 bcm2835_gpio_irq_config(pc, gpio, true); 522 524 raw_spin_unlock_irqrestore(&pc->irq_lock[bank], flags); 523 525 } 524 526 525 - static void bcm2835_gpio_irq_disable(struct irq_data *data) 527 + static void bcm2835_gpio_irq_mask(struct irq_data *data) 526 528 { 527 529 struct gpio_chip *chip = irq_data_get_irq_chip_data(data); 528 530 struct bcm2835_pinctrl *pc = gpiochip_get_data(chip); ··· 539 537 bcm2835_gpio_set_bit(pc, GPEDS0, gpio); 540 538 clear_bit(offset, &pc->enabled_irq_map[bank]); 541 539 raw_spin_unlock_irqrestore(&pc->irq_lock[bank], flags); 540 + 541 + gpiochip_disable_irq(chip, gpio); 542 542 } 543 543 544 544 static int __bcm2835_gpio_irq_set_type_disabled(struct bcm2835_pinctrl *pc, ··· 697 693 return ret; 698 694 } 699 695 700 - static struct irq_chip bcm2835_gpio_irq_chip = { 696 + static const struct irq_chip bcm2835_gpio_irq_chip = { 701 697 .name = MODULE_NAME, 702 - .irq_enable = bcm2835_gpio_irq_enable, 703 - .irq_disable = bcm2835_gpio_irq_disable, 704 698 .irq_set_type = bcm2835_gpio_irq_set_type, 705 699 .irq_ack = bcm2835_gpio_irq_ack, 706 - .irq_mask = bcm2835_gpio_irq_disable, 707 - .irq_unmask = bcm2835_gpio_irq_enable, 700 + .irq_mask = bcm2835_gpio_irq_mask, 701 + .irq_unmask = bcm2835_gpio_irq_unmask, 708 702 .irq_set_wake = bcm2835_gpio_irq_set_wake, 709 - .flags = IRQCHIP_MASK_ON_SUSPEND, 703 + .flags = (IRQCHIP_MASK_ON_SUSPEND | IRQCHIP_IMMUTABLE), 704 + GPIOCHIP_IRQ_RESOURCE_HELPERS, 710 705 }; 711 706 712 707 static int bcm2835_pctl_get_groups_count(struct pinctrl_dev *pctldev) ··· 1283 1280 pinctrl_add_gpio_range(pc->pctl_dev, &pc->gpio_range); 1284 1281 1285 1282 girq = &pc->gpio_chip.irq; 1286 - girq->chip = &bcm2835_gpio_irq_chip; 1283 + gpio_irq_chip_set_chip(girq, &bcm2835_gpio_irq_chip); 1287 1284 girq->parent_handler = bcm2835_gpio_irq_handler; 1288 1285 girq->num_parents = BCM2835_NUM_IRQS; 1289 1286 girq->parents = devm_kcalloc(dev, BCM2835_NUM_IRQS,
+1 -1
drivers/pinctrl/core.c
··· 126 126 mutex_lock(&pinctrldev_list_mutex); 127 127 128 128 list_for_each_entry(pctldev, &pinctrldev_list, node) 129 - if (pctldev->dev->of_node == np) { 129 + if (device_match_of_node(pctldev->dev, np)) { 130 130 mutex_unlock(&pinctrldev_list_mutex); 131 131 return pctldev; 132 132 }
+1
drivers/pinctrl/freescale/pinctrl-imx93.c
··· 247 247 { .compatible = "fsl,imx93-iomuxc", }, 248 248 { /* sentinel */ } 249 249 }; 250 + MODULE_DEVICE_TABLE(of, imx93_pinctrl_of_match); 250 251 251 252 static int imx93_pinctrl_probe(struct platform_device *pdev) 252 253 {
+8
drivers/pinctrl/intel/Kconfig
··· 151 151 This pinctrl driver provides an interface that allows configuring 152 152 of Intel Lewisburg pins and using them as GPIOs. 153 153 154 + config PINCTRL_METEORLAKE 155 + tristate "Intel Meteor Lake pinctrl and GPIO driver" 156 + depends on ACPI 157 + select PINCTRL_INTEL 158 + help 159 + This pinctrl driver provides an interface that allows configuring 160 + of Intel Meteor Lake pins and using them as GPIOs. 161 + 154 162 config PINCTRL_SUNRISEPOINT 155 163 tristate "Intel Sunrisepoint pinctrl and GPIO driver" 156 164 depends on ACPI
+1
drivers/pinctrl/intel/Makefile
··· 18 18 obj-$(CONFIG_PINCTRL_JASPERLAKE) += pinctrl-jasperlake.o 19 19 obj-$(CONFIG_PINCTRL_LAKEFIELD) += pinctrl-lakefield.o 20 20 obj-$(CONFIG_PINCTRL_LEWISBURG) += pinctrl-lewisburg.o 21 + obj-$(CONFIG_PINCTRL_METEORLAKE) += pinctrl-meteorlake.o 21 22 obj-$(CONFIG_PINCTRL_SUNRISEPOINT) += pinctrl-sunrisepoint.o 22 23 obj-$(CONFIG_PINCTRL_TIGERLAKE) += pinctrl-tigerlake.o
+9 -9
drivers/pinctrl/intel/pinctrl-baytrail.c
··· 603 603 { 604 604 struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctldev); 605 605 606 - return vg->soc->groups[selector].name; 606 + return vg->soc->groups[selector].grp.name; 607 607 } 608 608 609 609 static int byt_get_group_pins(struct pinctrl_dev *pctldev, ··· 613 613 { 614 614 struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctldev); 615 615 616 - *pins = vg->soc->groups[selector].pins; 617 - *num_pins = vg->soc->groups[selector].npins; 616 + *pins = vg->soc->groups[selector].grp.pins; 617 + *num_pins = vg->soc->groups[selector].grp.npins; 618 618 619 619 return 0; 620 620 } ··· 662 662 663 663 raw_spin_lock_irqsave(&byt_lock, flags); 664 664 665 - for (i = 0; i < group.npins; i++) { 665 + for (i = 0; i < group.grp.npins; i++) { 666 666 void __iomem *padcfg0; 667 667 u32 value; 668 668 669 - padcfg0 = byt_gpio_reg(vg, group.pins[i], BYT_CONF0_REG); 669 + padcfg0 = byt_gpio_reg(vg, group.grp.pins[i], BYT_CONF0_REG); 670 670 if (!padcfg0) { 671 671 dev_warn(vg->dev, 672 672 "Group %s, pin %i not muxed (no padcfg0)\n", 673 - group.name, i); 673 + group.grp.name, i); 674 674 continue; 675 675 } 676 676 ··· 692 692 693 693 raw_spin_lock_irqsave(&byt_lock, flags); 694 694 695 - for (i = 0; i < group.npins; i++) { 695 + for (i = 0; i < group.grp.npins; i++) { 696 696 void __iomem *padcfg0; 697 697 u32 value; 698 698 699 - padcfg0 = byt_gpio_reg(vg, group.pins[i], BYT_CONF0_REG); 699 + padcfg0 = byt_gpio_reg(vg, group.grp.pins[i], BYT_CONF0_REG); 700 700 if (!padcfg0) { 701 701 dev_warn(vg->dev, 702 702 "Group %s, pin %i not muxed (no padcfg0)\n", 703 - group.name, i); 703 + group.grp.name, i); 704 704 continue; 705 705 } 706 706
+8 -8
drivers/pinctrl/intel/pinctrl-cherryview.c
··· 627 627 { 628 628 struct intel_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); 629 629 630 - return pctrl->soc->groups[group].name; 630 + return pctrl->soc->groups[group].grp.name; 631 631 } 632 632 633 633 static int chv_get_group_pins(struct pinctrl_dev *pctldev, unsigned int group, ··· 635 635 { 636 636 struct intel_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); 637 637 638 - *pins = pctrl->soc->groups[group].pins; 639 - *npins = pctrl->soc->groups[group].npins; 638 + *pins = pctrl->soc->groups[group].grp.pins; 639 + *npins = pctrl->soc->groups[group].grp.npins; 640 640 return 0; 641 641 } 642 642 ··· 721 721 raw_spin_lock_irqsave(&chv_lock, flags); 722 722 723 723 /* Check first that the pad is not locked */ 724 - for (i = 0; i < grp->npins; i++) { 725 - if (chv_pad_locked(pctrl, grp->pins[i])) { 724 + for (i = 0; i < grp->grp.npins; i++) { 725 + if (chv_pad_locked(pctrl, grp->grp.pins[i])) { 726 726 raw_spin_unlock_irqrestore(&chv_lock, flags); 727 - dev_warn(dev, "unable to set mode for locked pin %u\n", grp->pins[i]); 727 + dev_warn(dev, "unable to set mode for locked pin %u\n", grp->grp.pins[i]); 728 728 return -EBUSY; 729 729 } 730 730 } 731 731 732 - for (i = 0; i < grp->npins; i++) { 733 - int pin = grp->pins[i]; 732 + for (i = 0; i < grp->grp.npins; i++) { 733 + int pin = grp->grp.pins[i]; 734 734 unsigned int mode; 735 735 bool invert_oe; 736 736 u32 value;
+7 -7
drivers/pinctrl/intel/pinctrl-intel.c
··· 279 279 { 280 280 struct intel_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); 281 281 282 - return pctrl->soc->groups[group].name; 282 + return pctrl->soc->groups[group].grp.name; 283 283 } 284 284 285 285 static int intel_get_group_pins(struct pinctrl_dev *pctldev, unsigned int group, ··· 287 287 { 288 288 struct intel_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); 289 289 290 - *pins = pctrl->soc->groups[group].pins; 291 - *npins = pctrl->soc->groups[group].npins; 290 + *pins = pctrl->soc->groups[group].grp.pins; 291 + *npins = pctrl->soc->groups[group].grp.npins; 292 292 return 0; 293 293 } 294 294 ··· 391 391 * All pins in the groups needs to be accessible and writable 392 392 * before we can enable the mux for this group. 393 393 */ 394 - for (i = 0; i < grp->npins; i++) { 395 - if (!intel_pad_usable(pctrl, grp->pins[i])) { 394 + for (i = 0; i < grp->grp.npins; i++) { 395 + if (!intel_pad_usable(pctrl, grp->grp.pins[i])) { 396 396 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 397 397 return -EBUSY; 398 398 } 399 399 } 400 400 401 401 /* Now enable the mux setting for each pin in the group */ 402 - for (i = 0; i < grp->npins; i++) { 402 + for (i = 0; i < grp->grp.npins; i++) { 403 403 void __iomem *padcfg0; 404 404 u32 value; 405 405 406 - padcfg0 = intel_get_padcfg(pctrl, grp->pins[i], PADCFG0); 406 + padcfg0 = intel_get_padcfg(pctrl, grp->grp.pins[i], PADCFG0); 407 407 value = readl(padcfg0); 408 408 409 409 value &= ~PADCFG0_PMODE_MASK;
+8 -17
drivers/pinctrl/intel/pinctrl-intel.h
··· 24 24 25 25 /** 26 26 * struct intel_pingroup - Description about group of pins 27 - * @name: Name of the groups 28 - * @pins: All pins in this group 29 - * @npins: Number of pins in this groups 30 - * @mode: Native mode in which the group is muxed out @pins. Used if @modes 31 - * is %NULL. 27 + * @grp: Generic data of the pin group (name and pins) 28 + * @mode: Native mode in which the group is muxed out @pins. Used if @modes is %NULL. 32 29 * @modes: If not %NULL this will hold mode for each pin in @pins 33 30 */ 34 31 struct intel_pingroup { 35 - const char *name; 36 - const unsigned int *pins; 37 - size_t npins; 32 + struct pingroup grp; 38 33 unsigned short mode; 39 34 const unsigned int *modes; 40 35 }; ··· 151 156 * a single integer or an array of integers in which case mode is per 152 157 * pin. 153 158 */ 154 - #define PIN_GROUP(n, p, m) \ 155 - { \ 156 - .name = (n), \ 157 - .pins = (p), \ 158 - .npins = ARRAY_SIZE((p)), \ 159 - .mode = __builtin_choose_expr( \ 160 - __builtin_constant_p((m)), (m), 0), \ 161 - .modes = __builtin_choose_expr( \ 162 - __builtin_constant_p((m)), NULL, (m)), \ 159 + #define PIN_GROUP(n, p, m) \ 160 + { \ 161 + .grp = PINCTRL_PINGROUP((n), (p), ARRAY_SIZE((p))), \ 162 + .mode = __builtin_choose_expr(__builtin_constant_p((m)), (m), 0), \ 163 + .modes = __builtin_choose_expr(__builtin_constant_p((m)), NULL, (m)), \ 163 164 } 164 165 165 166 #define FUNCTION(n, g) \
+5 -5
drivers/pinctrl/intel/pinctrl-lynxpoint.c
··· 282 282 { 283 283 struct intel_pinctrl *lg = pinctrl_dev_get_drvdata(pctldev); 284 284 285 - return lg->soc->groups[selector].name; 285 + return lg->soc->groups[selector].grp.name; 286 286 } 287 287 288 288 static int lp_get_group_pins(struct pinctrl_dev *pctldev, ··· 292 292 { 293 293 struct intel_pinctrl *lg = pinctrl_dev_get_drvdata(pctldev); 294 294 295 - *pins = lg->soc->groups[selector].pins; 296 - *num_pins = lg->soc->groups[selector].npins; 295 + *pins = lg->soc->groups[selector].grp.pins; 296 + *num_pins = lg->soc->groups[selector].grp.npins; 297 297 298 298 return 0; 299 299 } ··· 366 366 raw_spin_lock_irqsave(&lg->lock, flags); 367 367 368 368 /* Now enable the mux setting for each pin in the group */ 369 - for (i = 0; i < grp->npins; i++) { 370 - void __iomem *reg = lp_gpio_reg(&lg->chip, grp->pins[i], LP_CONFIG1); 369 + for (i = 0; i < grp->grp.npins; i++) { 370 + void __iomem *reg = lp_gpio_reg(&lg->chip, grp->grp.pins[i], LP_CONFIG1); 371 371 u32 value; 372 372 373 373 value = ioread32(reg);
+7 -7
drivers/pinctrl/intel/pinctrl-merrifield.c
··· 520 520 { 521 521 struct mrfld_pinctrl *mp = pinctrl_dev_get_drvdata(pctldev); 522 522 523 - return mp->groups[group].name; 523 + return mp->groups[group].grp.name; 524 524 } 525 525 526 526 static int mrfld_get_group_pins(struct pinctrl_dev *pctldev, unsigned int group, ··· 528 528 { 529 529 struct mrfld_pinctrl *mp = pinctrl_dev_get_drvdata(pctldev); 530 530 531 - *pins = mp->groups[group].pins; 532 - *npins = mp->groups[group].npins; 531 + *pins = mp->groups[group].grp.pins; 532 + *npins = mp->groups[group].grp.npins; 533 533 return 0; 534 534 } 535 535 ··· 604 604 * All pins in the groups needs to be accessible and writable 605 605 * before we can enable the mux for this group. 606 606 */ 607 - for (i = 0; i < grp->npins; i++) { 608 - if (!mrfld_buf_available(mp, grp->pins[i])) 607 + for (i = 0; i < grp->grp.npins; i++) { 608 + if (!mrfld_buf_available(mp, grp->grp.pins[i])) 609 609 return -EBUSY; 610 610 } 611 611 612 612 /* Now enable the mux setting for each pin in the group */ 613 613 raw_spin_lock_irqsave(&mp->lock, flags); 614 - for (i = 0; i < grp->npins; i++) 615 - mrfld_update_bufcfg(mp, grp->pins[i], bits, mask); 614 + for (i = 0; i < grp->grp.npins; i++) 615 + mrfld_update_bufcfg(mp, grp->grp.pins[i], bits, mask); 616 616 raw_spin_unlock_irqrestore(&mp->lock, flags); 617 617 618 618 return 0;
+417
drivers/pinctrl/intel/pinctrl-meteorlake.c
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* 3 + * Intel Meteor Lake PCH pinctrl/GPIO driver 4 + * 5 + * Copyright (C) 2022, Intel Corporation 6 + * Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com> 7 + */ 8 + 9 + #include <linux/mod_devicetable.h> 10 + #include <linux/module.h> 11 + #include <linux/platform_device.h> 12 + 13 + #include <linux/pinctrl/pinctrl.h> 14 + 15 + #include "pinctrl-intel.h" 16 + 17 + #define MTL_PAD_OWN 0x0b0 18 + #define MTL_PADCFGLOCK 0x110 19 + #define MTL_HOSTSW_OWN 0x140 20 + #define MTL_GPI_IS 0x200 21 + #define MTL_GPI_IE 0x210 22 + 23 + #define MTL_GPP(r, s, e, g) \ 24 + { \ 25 + .reg_num = (r), \ 26 + .base = (s), \ 27 + .size = ((e) - (s) + 1), \ 28 + .gpio_base = (g), \ 29 + } 30 + 31 + #define MTL_COMMUNITY(b, s, e, g) \ 32 + { \ 33 + .barno = (b), \ 34 + .padown_offset = MTL_PAD_OWN, \ 35 + .padcfglock_offset = MTL_PADCFGLOCK, \ 36 + .hostown_offset = MTL_HOSTSW_OWN, \ 37 + .is_offset = MTL_GPI_IS, \ 38 + .ie_offset = MTL_GPI_IE, \ 39 + .pin_base = (s), \ 40 + .npins = ((e) - (s) + 1), \ 41 + .gpps = (g), \ 42 + .ngpps = ARRAY_SIZE(g), \ 43 + } 44 + 45 + /* Meteor Lake-P */ 46 + static const struct pinctrl_pin_desc mtlp_pins[] = { 47 + /* CPU */ 48 + PINCTRL_PIN(0, "PECI"), 49 + PINCTRL_PIN(1, "UFS_RESET_B"), 50 + PINCTRL_PIN(2, "VIDSOUT"), 51 + PINCTRL_PIN(3, "VIDSCK"), 52 + PINCTRL_PIN(4, "VIDALERT_B"), 53 + /* GPP_V */ 54 + PINCTRL_PIN(5, "BATLOW_B"), 55 + PINCTRL_PIN(6, "AC_PRESENT"), 56 + PINCTRL_PIN(7, "SOC_WAKE_B"), 57 + PINCTRL_PIN(8, "PWRBTN_B"), 58 + PINCTRL_PIN(9, "SLP_S3_B"), 59 + PINCTRL_PIN(10, "SLP_S4_B"), 60 + PINCTRL_PIN(11, "SLP_A_B"), 61 + PINCTRL_PIN(12, "GPP_V_7"), 62 + PINCTRL_PIN(13, "SUSCLK"), 63 + PINCTRL_PIN(14, "SLP_WLAN_B"), 64 + PINCTRL_PIN(15, "SLP_S5_B"), 65 + PINCTRL_PIN(16, "LANPHYPC"), 66 + PINCTRL_PIN(17, "SLP_LAN_B"), 67 + PINCTRL_PIN(18, "GPP_V_13"), 68 + PINCTRL_PIN(19, "WAKE_B"), 69 + PINCTRL_PIN(20, "GPP_V_15"), 70 + PINCTRL_PIN(21, "GPP_V_16"), 71 + PINCTRL_PIN(22, "GPP_V_17"), 72 + PINCTRL_PIN(23, "GPP_V_18"), 73 + PINCTRL_PIN(24, "CATERR_B"), 74 + PINCTRL_PIN(25, "PROCHOT_B"), 75 + PINCTRL_PIN(26, "THERMTRIP_B"), 76 + PINCTRL_PIN(27, "DSI_DE_TE_2_GENLOCK_REF"), 77 + PINCTRL_PIN(28, "DSI_DE_TE_1_DISP_UTILS"), 78 + /* GPP_C */ 79 + PINCTRL_PIN(29, "SMBCLK"), 80 + PINCTRL_PIN(30, "SMBDATA"), 81 + PINCTRL_PIN(31, "SMBALERT_B"), 82 + PINCTRL_PIN(32, "SML0CLK"), 83 + PINCTRL_PIN(33, "SML0DATA"), 84 + PINCTRL_PIN(34, "GPP_C_5"), 85 + PINCTRL_PIN(35, "GPP_C_6"), 86 + PINCTRL_PIN(36, "GPP_C_7"), 87 + PINCTRL_PIN(37, "GPP_C_8"), 88 + PINCTRL_PIN(38, "GPP_C_9"), 89 + PINCTRL_PIN(39, "GPP_C_10"), 90 + PINCTRL_PIN(40, "GPP_C_11"), 91 + PINCTRL_PIN(41, "GPP_C_12"), 92 + PINCTRL_PIN(42, "GPP_C_13"), 93 + PINCTRL_PIN(43, "GPP_C_14"), 94 + PINCTRL_PIN(44, "GPP_C_15"), 95 + PINCTRL_PIN(45, "GPP_C_16"), 96 + PINCTRL_PIN(46, "GPP_C_17"), 97 + PINCTRL_PIN(47, "GPP_C_18"), 98 + PINCTRL_PIN(48, "GPP_C_19"), 99 + PINCTRL_PIN(49, "GPP_C_20"), 100 + PINCTRL_PIN(50, "GPP_C_21"), 101 + PINCTRL_PIN(51, "GPP_C_22"), 102 + PINCTRL_PIN(52, "GPP_C_23"), 103 + /* GPP_A */ 104 + PINCTRL_PIN(53, "ESPI_IO_0"), 105 + PINCTRL_PIN(54, "ESPI_IO_1"), 106 + PINCTRL_PIN(55, "ESPI_IO_2"), 107 + PINCTRL_PIN(56, "ESPI_IO_3"), 108 + PINCTRL_PIN(57, "ESPI_CS0_B"), 109 + PINCTRL_PIN(58, "ESPI_CLK"), 110 + PINCTRL_PIN(59, "ESPI_RESET_B"), 111 + PINCTRL_PIN(60, "GPP_A_7"), 112 + PINCTRL_PIN(61, "GPP_A_8"), 113 + PINCTRL_PIN(62, "GPP_A_9"), 114 + PINCTRL_PIN(63, "GPP_A_10"), 115 + PINCTRL_PIN(64, "GPP_A_11"), 116 + PINCTRL_PIN(65, "GPP_A_12"), 117 + PINCTRL_PIN(66, "ESPI_CS1_B"), 118 + PINCTRL_PIN(67, "ESPI_CS2_B"), 119 + PINCTRL_PIN(68, "ESPI_CS3_B"), 120 + PINCTRL_PIN(69, "ESPI_ALERT0_B"), 121 + PINCTRL_PIN(70, "ESPI_ALERT1_B"), 122 + PINCTRL_PIN(71, "ESPI_ALERT2_B"), 123 + PINCTRL_PIN(72, "ESPI_ALERT3_B"), 124 + PINCTRL_PIN(73, "GPP_A_20"), 125 + PINCTRL_PIN(74, "GPP_A_21"), 126 + PINCTRL_PIN(75, "GPP_A_22"), 127 + PINCTRL_PIN(76, "GPP_A_23"), 128 + PINCTRL_PIN(77, "ESPI_CLK_LOOPBK"), 129 + /* GPP_E */ 130 + PINCTRL_PIN(78, "GPP_E_0"), 131 + PINCTRL_PIN(79, "GPP_E_1"), 132 + PINCTRL_PIN(80, "GPP_E_2"), 133 + PINCTRL_PIN(81, "GPP_E_3"), 134 + PINCTRL_PIN(82, "GPP_E_4"), 135 + PINCTRL_PIN(83, "GPP_E_5"), 136 + PINCTRL_PIN(84, "GPP_E_6"), 137 + PINCTRL_PIN(85, "GPP_E_7"), 138 + PINCTRL_PIN(86, "GPP_E_8"), 139 + PINCTRL_PIN(87, "GPP_E_9"), 140 + PINCTRL_PIN(88, "GPP_E_10"), 141 + PINCTRL_PIN(89, "GPP_E_11"), 142 + PINCTRL_PIN(90, "GPP_E_12"), 143 + PINCTRL_PIN(91, "GPP_E_13"), 144 + PINCTRL_PIN(92, "GPP_E_14"), 145 + PINCTRL_PIN(93, "SLP_DRAM_B"), 146 + PINCTRL_PIN(94, "GPP_E_16"), 147 + PINCTRL_PIN(95, "GPP_E_17"), 148 + PINCTRL_PIN(96, "GPP_E_18"), 149 + PINCTRL_PIN(97, "GPP_E_19"), 150 + PINCTRL_PIN(98, "GPP_E_20"), 151 + PINCTRL_PIN(99, "GPP_E_21"), 152 + PINCTRL_PIN(100, "DNX_FORCE_RELOAD"), 153 + PINCTRL_PIN(101, "GPP_E_23"), 154 + PINCTRL_PIN(102, "THC0_GSPI0_CLK_LOOPBK"), 155 + /* GPP_H */ 156 + PINCTRL_PIN(103, "GPP_H_0"), 157 + PINCTRL_PIN(104, "GPP_H_1"), 158 + PINCTRL_PIN(105, "GPP_H_2"), 159 + PINCTRL_PIN(106, "GPP_H_3"), 160 + PINCTRL_PIN(107, "GPP_H_4"), 161 + PINCTRL_PIN(108, "GPP_H_5"), 162 + PINCTRL_PIN(109, "GPP_H_6"), 163 + PINCTRL_PIN(110, "GPP_H_7"), 164 + PINCTRL_PIN(111, "GPP_H_8"), 165 + PINCTRL_PIN(112, "GPP_H_9"), 166 + PINCTRL_PIN(113, "GPP_H_10"), 167 + PINCTRL_PIN(114, "GPP_H_11"), 168 + PINCTRL_PIN(115, "GPP_H_12"), 169 + PINCTRL_PIN(116, "CPU_C10_GATE_B"), 170 + PINCTRL_PIN(117, "GPP_H_14"), 171 + PINCTRL_PIN(118, "GPP_H_15"), 172 + PINCTRL_PIN(119, "GPP_H_16"), 173 + PINCTRL_PIN(120, "GPP_H_17"), 174 + PINCTRL_PIN(121, "GPP_H_18"), 175 + PINCTRL_PIN(122, "GPP_H_19"), 176 + PINCTRL_PIN(123, "GPP_H_20"), 177 + PINCTRL_PIN(124, "GPP_H_21"), 178 + PINCTRL_PIN(125, "GPP_H_22"), 179 + PINCTRL_PIN(126, "GPP_H_23"), 180 + PINCTRL_PIN(127, "LPI3C1_CLK_LOOPBK"), 181 + PINCTRL_PIN(128, "I3C0_CLK_LOOPBK"), 182 + /* GPP_F */ 183 + PINCTRL_PIN(129, "CNV_BRI_DT"), 184 + PINCTRL_PIN(130, "CNV_BRI_RSP"), 185 + PINCTRL_PIN(131, "CNV_RGI_DT"), 186 + PINCTRL_PIN(132, "CNV_RGI_RSP"), 187 + PINCTRL_PIN(133, "CNV_RF_RESET_B"), 188 + PINCTRL_PIN(134, "CRF_CLKREQ"), 189 + PINCTRL_PIN(135, "GPP_F_6"), 190 + PINCTRL_PIN(136, "FUSA_DIAGTEST_EN"), 191 + PINCTRL_PIN(137, "FUSA_DIAGTEST_MODE"), 192 + PINCTRL_PIN(138, "BOOTMPC"), 193 + PINCTRL_PIN(139, "GPP_F_10"), 194 + PINCTRL_PIN(140, "GPP_F_11"), 195 + PINCTRL_PIN(141, "GSXDOUT"), 196 + PINCTRL_PIN(142, "GSXSLOAD"), 197 + PINCTRL_PIN(143, "GSXDIN"), 198 + PINCTRL_PIN(144, "GSXSRESETB"), 199 + PINCTRL_PIN(145, "GSXCLK"), 200 + PINCTRL_PIN(146, "GMII_MDC_0"), 201 + PINCTRL_PIN(147, "GMII_MDIO_0"), 202 + PINCTRL_PIN(148, "GPP_F_19"), 203 + PINCTRL_PIN(149, "GPP_F_20"), 204 + PINCTRL_PIN(150, "GPP_F_21"), 205 + PINCTRL_PIN(151, "GPP_F_22"), 206 + PINCTRL_PIN(152, "GPP_F_23"), 207 + PINCTRL_PIN(153, "THC1_GSPI1_CLK_LOOPBK"), 208 + PINCTRL_PIN(154, "GSPI0A_CLK_LOOPBK"), 209 + /* SPI0 */ 210 + PINCTRL_PIN(155, "SPI0_IO_2"), 211 + PINCTRL_PIN(156, "SPI0_IO_3"), 212 + PINCTRL_PIN(157, "SPI0_MOSI_IO_0"), 213 + PINCTRL_PIN(158, "SPI0_MISO_IO_1"), 214 + PINCTRL_PIN(159, "SPI0_TPM_CS_B"), 215 + PINCTRL_PIN(160, "SPI0_FLASH_0_CS_B"), 216 + PINCTRL_PIN(161, "SPI0_FLASH_1_CS_B"), 217 + PINCTRL_PIN(162, "SPI0_CLK"), 218 + PINCTRL_PIN(163, "L_BKLTEN"), 219 + PINCTRL_PIN(164, "L_BKLTCTL"), 220 + PINCTRL_PIN(165, "L_VDDEN"), 221 + PINCTRL_PIN(166, "SYS_PWROK"), 222 + PINCTRL_PIN(167, "SYS_RESET_B"), 223 + PINCTRL_PIN(168, "MLK_RST_B"), 224 + PINCTRL_PIN(169, "SPI0_CLK_LOOPBK"), 225 + /* vGPIO_3 */ 226 + PINCTRL_PIN(170, "ESPI_USB_OCB_0"), 227 + PINCTRL_PIN(171, "ESPI_USB_OCB_1"), 228 + PINCTRL_PIN(172, "ESPI_USB_OCB_2"), 229 + PINCTRL_PIN(173, "ESPI_USB_OCB_3"), 230 + PINCTRL_PIN(174, "USB_CPU_OCB_0"), 231 + PINCTRL_PIN(175, "USB_CPU_OCB_1"), 232 + PINCTRL_PIN(176, "USB_CPU_OCB_2"), 233 + PINCTRL_PIN(177, "USB_CPU_OCB_3"), 234 + PINCTRL_PIN(178, "TS0_IN_INT"), 235 + PINCTRL_PIN(179, "TS1_IN_INT"), 236 + PINCTRL_PIN(180, "THC0_WOT_INT"), 237 + PINCTRL_PIN(181, "THC1_WOT_INT"), 238 + PINCTRL_PIN(182, "THC0_WHC_INT"), 239 + PINCTRL_PIN(183, "THC1_WHC_INT"), 240 + /* GPP_S */ 241 + PINCTRL_PIN(184, "GPP_S_0"), 242 + PINCTRL_PIN(185, "GPP_S_1"), 243 + PINCTRL_PIN(186, "GPP_S_2"), 244 + PINCTRL_PIN(187, "GPP_S_3"), 245 + PINCTRL_PIN(188, "GPP_S_4"), 246 + PINCTRL_PIN(189, "GPP_S_5"), 247 + PINCTRL_PIN(190, "GPP_S_6"), 248 + PINCTRL_PIN(191, "GPP_S_7"), 249 + /* JTAG */ 250 + PINCTRL_PIN(192, "JTAG_MBPB0"), 251 + PINCTRL_PIN(193, "JTAG_MBPB1"), 252 + PINCTRL_PIN(194, "JTAG_MBPB2"), 253 + PINCTRL_PIN(195, "JTAG_MBPB3"), 254 + PINCTRL_PIN(196, "JTAG_TDO"), 255 + PINCTRL_PIN(197, "PRDY_B"), 256 + PINCTRL_PIN(198, "PREQ_B"), 257 + PINCTRL_PIN(199, "JTAG_TDI"), 258 + PINCTRL_PIN(200, "JTAG_TMS"), 259 + PINCTRL_PIN(201, "JTAG_TCK"), 260 + PINCTRL_PIN(202, "DBG_PMODE"), 261 + PINCTRL_PIN(203, "JTAG_TRST_B"), 262 + /* GPP_B */ 263 + PINCTRL_PIN(204, "ADM_VID_0"), 264 + PINCTRL_PIN(205, "ADM_VID_1"), 265 + PINCTRL_PIN(206, "GPP_B_2"), 266 + PINCTRL_PIN(207, "GPP_B_3"), 267 + PINCTRL_PIN(208, "GPP_B_4"), 268 + PINCTRL_PIN(209, "GPP_B_5"), 269 + PINCTRL_PIN(210, "GPP_B_6"), 270 + PINCTRL_PIN(211, "GPP_B_7"), 271 + PINCTRL_PIN(212, "GPP_B_8"), 272 + PINCTRL_PIN(213, "GPP_B_9"), 273 + PINCTRL_PIN(214, "GPP_B_10"), 274 + PINCTRL_PIN(215, "GPP_B_11"), 275 + PINCTRL_PIN(216, "SLP_S0_B"), 276 + PINCTRL_PIN(217, "PLTRST_B"), 277 + PINCTRL_PIN(218, "GPP_B_14"), 278 + PINCTRL_PIN(219, "GPP_B_15"), 279 + PINCTRL_PIN(220, "GPP_B_16"), 280 + PINCTRL_PIN(221, "GPP_B_17"), 281 + PINCTRL_PIN(222, "GPP_B_18"), 282 + PINCTRL_PIN(223, "GPP_B_19"), 283 + PINCTRL_PIN(224, "GPP_B_20"), 284 + PINCTRL_PIN(225, "GPP_B_21"), 285 + PINCTRL_PIN(226, "GPP_B_22"), 286 + PINCTRL_PIN(227, "GPP_B_23"), 287 + PINCTRL_PIN(228, "ISH_I3C0_CLK_LOOPBK"), 288 + /* GPP_D */ 289 + PINCTRL_PIN(229, "GPP_D_0"), 290 + PINCTRL_PIN(230, "GPP_D_1"), 291 + PINCTRL_PIN(231, "GPP_D_2"), 292 + PINCTRL_PIN(232, "GPP_D_3"), 293 + PINCTRL_PIN(233, "GPP_D_4"), 294 + PINCTRL_PIN(234, "GPP_D_5"), 295 + PINCTRL_PIN(235, "GPP_D_6"), 296 + PINCTRL_PIN(236, "GPP_D_7"), 297 + PINCTRL_PIN(237, "GPP_D_8"), 298 + PINCTRL_PIN(238, "GPP_D_9"), 299 + PINCTRL_PIN(239, "HDA_BCLK"), 300 + PINCTRL_PIN(240, "HDA_SYNC"), 301 + PINCTRL_PIN(241, "HDA_SDO"), 302 + PINCTRL_PIN(242, "HDA_SDI_0"), 303 + PINCTRL_PIN(243, "GPP_D_14"), 304 + PINCTRL_PIN(244, "GPP_D_15"), 305 + PINCTRL_PIN(245, "GPP_D_16"), 306 + PINCTRL_PIN(246, "HDA_RST_B"), 307 + PINCTRL_PIN(247, "GPP_D_18"), 308 + PINCTRL_PIN(248, "GPP_D_19"), 309 + PINCTRL_PIN(249, "GPP_D_20"), 310 + PINCTRL_PIN(250, "UFS_REFCLK"), 311 + PINCTRL_PIN(251, "BPKI3C_SDA"), 312 + PINCTRL_PIN(252, "BPKI3C_SCL"), 313 + PINCTRL_PIN(253, "BOOTHALT_B"), 314 + /* vGPIO */ 315 + PINCTRL_PIN(254, "CNV_BTEN"), 316 + PINCTRL_PIN(255, "CNV_BT_HOST_WAKEB"), 317 + PINCTRL_PIN(256, "CNV_BT_IF_SELECT"), 318 + PINCTRL_PIN(257, "vCNV_BT_UART_TXD"), 319 + PINCTRL_PIN(258, "vCNV_BT_UART_RXD"), 320 + PINCTRL_PIN(259, "vCNV_BT_UART_CTS_B"), 321 + PINCTRL_PIN(260, "vCNV_BT_UART_RTS_B"), 322 + PINCTRL_PIN(261, "vCNV_MFUART1_TXD"), 323 + PINCTRL_PIN(262, "vCNV_MFUART1_RXD"), 324 + PINCTRL_PIN(263, "vCNV_MFUART1_CTS_B"), 325 + PINCTRL_PIN(264, "vCNV_MFUART1_RTS_B"), 326 + PINCTRL_PIN(265, "vUART0_TXD"), 327 + PINCTRL_PIN(266, "vUART0_RXD"), 328 + PINCTRL_PIN(267, "vUART0_CTS_B"), 329 + PINCTRL_PIN(268, "vUART0_RTS_B"), 330 + PINCTRL_PIN(269, "vISH_UART0_TXD"), 331 + PINCTRL_PIN(270, "vISH_UART0_RXD"), 332 + PINCTRL_PIN(271, "vISH_UART0_CTS_B"), 333 + PINCTRL_PIN(272, "vISH_UART0_RTS_B"), 334 + PINCTRL_PIN(273, "vCNV_BT_I2S_BCLK"), 335 + PINCTRL_PIN(274, "vCNV_BT_I2S_WS_SYNC"), 336 + PINCTRL_PIN(275, "vCNV_BT_I2S_SDO"), 337 + PINCTRL_PIN(276, "vCNV_BT_I2S_SDI"), 338 + PINCTRL_PIN(277, "vI2S2_SCLK"), 339 + PINCTRL_PIN(278, "vI2S2_SFRM"), 340 + PINCTRL_PIN(279, "vI2S2_TXD"), 341 + PINCTRL_PIN(280, "vI2S2_RXD"), 342 + PINCTRL_PIN(281, "vCNV_BT_I2S_BCLK_2"), 343 + PINCTRL_PIN(282, "vCNV_BT_I2S_WS_SYNC_2"), 344 + PINCTRL_PIN(283, "vCNV_BT_I2S_SDO_2"), 345 + PINCTRL_PIN(284, "vCNV_BT_I2S_SDI_2"), 346 + PINCTRL_PIN(285, "vI2S2_SCLK_2"), 347 + PINCTRL_PIN(286, "vI2S2_SFRM_2"), 348 + PINCTRL_PIN(287, "vI2S2_TXD_2"), 349 + PINCTRL_PIN(288, "vI2S2_RXD_2"), 350 + }; 351 + 352 + static const struct intel_padgroup mtlp_community0_gpps[] = { 353 + MTL_GPP(0, 0, 4, 0), /* CPU */ 354 + MTL_GPP(1, 5, 28, 32), /* GPP_V */ 355 + MTL_GPP(2, 29, 52, 64), /* GPP_C */ 356 + }; 357 + 358 + static const struct intel_padgroup mtlp_community1_gpps[] = { 359 + MTL_GPP(0, 53, 77, 96), /* GPP_A */ 360 + MTL_GPP(1, 78, 102, 128), /* GPP_E */ 361 + }; 362 + 363 + static const struct intel_padgroup mtlp_community3_gpps[] = { 364 + MTL_GPP(0, 103, 128, 160), /* GPP_H */ 365 + MTL_GPP(1, 129, 154, 192), /* GPP_F */ 366 + MTL_GPP(2, 155, 169, 224), /* SPI0 */ 367 + MTL_GPP(3, 170, 183, 256), /* vGPIO_3 */ 368 + }; 369 + 370 + static const struct intel_padgroup mtlp_community4_gpps[] = { 371 + MTL_GPP(0, 184, 191, 288), /* GPP_S */ 372 + MTL_GPP(1, 192, 203, 320), /* JTAG */ 373 + }; 374 + 375 + static const struct intel_padgroup mtlp_community5_gpps[] = { 376 + MTL_GPP(0, 204, 228, 352), /* GPP_B */ 377 + MTL_GPP(1, 229, 253, 384), /* GPP_D */ 378 + MTL_GPP(2, 254, 285, 416), /* vGPIO_0 */ 379 + MTL_GPP(3, 286, 288, 448), /* vGPIO_1 */ 380 + }; 381 + 382 + static const struct intel_community mtlp_communities[] = { 383 + MTL_COMMUNITY(0, 0, 52, mtlp_community0_gpps), 384 + MTL_COMMUNITY(1, 53, 102, mtlp_community1_gpps), 385 + MTL_COMMUNITY(2, 103, 183, mtlp_community3_gpps), 386 + MTL_COMMUNITY(3, 184, 203, mtlp_community4_gpps), 387 + MTL_COMMUNITY(4, 204, 288, mtlp_community5_gpps), 388 + }; 389 + 390 + static const struct intel_pinctrl_soc_data mtlp_soc_data = { 391 + .pins = mtlp_pins, 392 + .npins = ARRAY_SIZE(mtlp_pins), 393 + .communities = mtlp_communities, 394 + .ncommunities = ARRAY_SIZE(mtlp_communities), 395 + }; 396 + 397 + static const struct acpi_device_id mtl_pinctrl_acpi_match[] = { 398 + { "INTC1083", (kernel_ulong_t)&mtlp_soc_data }, 399 + { } 400 + }; 401 + MODULE_DEVICE_TABLE(acpi, mtl_pinctrl_acpi_match); 402 + 403 + static INTEL_PINCTRL_PM_OPS(mtl_pinctrl_pm_ops); 404 + 405 + static struct platform_driver mtl_pinctrl_driver = { 406 + .probe = intel_pinctrl_probe_by_hid, 407 + .driver = { 408 + .name = "meteorlake-pinctrl", 409 + .acpi_match_table = mtl_pinctrl_acpi_match, 410 + .pm = &mtl_pinctrl_pm_ops, 411 + }, 412 + }; 413 + module_platform_driver(mtl_pinctrl_driver); 414 + 415 + MODULE_AUTHOR("Andy Shevchenko <andriy.shevchenko@linux.intel.com>"); 416 + MODULE_DESCRIPTION("Intel Meteor Lake PCH pinctrl/GPIO driver"); 417 + MODULE_LICENSE("GPL v2");
+163 -133
drivers/pinctrl/mediatek/pinctrl-mt8192.c
··· 1107 1107 PIN_FIELD_BASE(54, 54, 1, 0x0060, 0x10, 2, 1), 1108 1108 PIN_FIELD_BASE(55, 55, 1, 0x0060, 0x10, 4, 1), 1109 1109 PIN_FIELD_BASE(56, 56, 1, 0x0060, 0x10, 3, 1), 1110 - PIN_FIELD_BASE(118, 118, 4, 0x00e0, 0x10, 31, 1), 1111 - PIN_FIELD_BASE(119, 119, 4, 0x00e0, 0x10, 31, 1), 1112 - PIN_FIELD_BASE(120, 120, 4, 0x00e0, 0x10, 31, 1), 1113 - PIN_FIELD_BASE(121, 121, 4, 0x00e0, 0x10, 31, 1), 1114 - PIN_FIELD_BASE(122, 122, 4, 0x00e0, 0x10, 31, 1), 1115 - PIN_FIELD_BASE(123, 123, 4, 0x00e0, 0x10, 31, 1), 1116 - PIN_FIELD_BASE(124, 124, 4, 0x00e0, 0x10, 31, 1), 1117 - PIN_FIELD_BASE(125, 125, 4, 0x00e0, 0x10, 31, 1), 1118 - PIN_FIELD_BASE(139, 139, 4, 0x00e0, 0x10, 31, 1), 1119 - PIN_FIELD_BASE(140, 140, 4, 0x00e0, 0x10, 31, 1), 1120 - PIN_FIELD_BASE(141, 141, 4, 0x00e0, 0x10, 31, 1), 1121 - PIN_FIELD_BASE(142, 142, 4, 0x00e0, 0x10, 31, 1), 1122 1110 PIN_FIELD_BASE(152, 152, 7, 0x0090, 0x10, 3, 1), 1123 1111 PIN_FIELD_BASE(153, 153, 7, 0x0090, 0x10, 2, 1), 1124 1112 PIN_FIELD_BASE(154, 154, 7, 0x0090, 0x10, 0, 1), 1125 1113 PIN_FIELD_BASE(155, 155, 7, 0x0090, 0x10, 1, 1), 1126 - PIN_FIELD_BASE(160, 160, 7, 0x00f0, 0x10, 31, 1), 1127 - PIN_FIELD_BASE(161, 161, 7, 0x00f0, 0x10, 31, 1), 1128 1114 PIN_FIELD_BASE(183, 183, 9, 0x0030, 0x10, 1, 1), 1129 1115 PIN_FIELD_BASE(184, 184, 9, 0x0030, 0x10, 2, 1), 1130 1116 PIN_FIELD_BASE(185, 185, 9, 0x0030, 0x10, 4, 1), ··· 1123 1137 PIN_FIELD_BASE(192, 192, 9, 0x0030, 0x10, 0, 1), 1124 1138 PIN_FIELD_BASE(193, 193, 9, 0x0030, 0x10, 5, 1), 1125 1139 PIN_FIELD_BASE(194, 194, 9, 0x0030, 0x10, 11, 1), 1126 - PIN_FIELD_BASE(200, 200, 8, 0x0070, 0x10, 31, 1), 1127 - PIN_FIELD_BASE(201, 201, 8, 0x0070, 0x10, 31, 1), 1128 - PIN_FIELD_BASE(202, 202, 5, 0x0070, 0x10, 31, 1), 1129 - PIN_FIELD_BASE(203, 203, 5, 0x0070, 0x10, 31, 1), 1130 - PIN_FIELD_BASE(204, 204, 8, 0x0070, 0x10, 31, 1), 1131 - PIN_FIELD_BASE(205, 205, 8, 0x0070, 0x10, 31, 1), 1132 1140 }; 1133 1141 1134 1142 static const struct mtk_pin_field_calc mt8192_pin_r0_range[] = { ··· 1144 1164 PIN_FIELD_BASE(54, 54, 1, 0x0080, 0x10, 2, 1), 1145 1165 PIN_FIELD_BASE(55, 55, 1, 0x0080, 0x10, 4, 1), 1146 1166 PIN_FIELD_BASE(56, 56, 1, 0x0080, 0x10, 3, 1), 1147 - PIN_FIELD_BASE(118, 118, 4, 0x00e0, 0x10, 0, 1), 1148 - PIN_FIELD_BASE(119, 119, 4, 0x00e0, 0x10, 12, 1), 1149 - PIN_FIELD_BASE(120, 120, 4, 0x00e0, 0x10, 10, 1), 1150 - PIN_FIELD_BASE(121, 121, 4, 0x00e0, 0x10, 22, 1), 1151 - PIN_FIELD_BASE(122, 122, 4, 0x00e0, 0x10, 8, 1), 1152 - PIN_FIELD_BASE(123, 123, 4, 0x00e0, 0x10, 20, 1), 1153 - PIN_FIELD_BASE(124, 124, 4, 0x00e0, 0x10, 6, 1), 1154 - PIN_FIELD_BASE(125, 125, 4, 0x00e0, 0x10, 18, 1), 1155 - PIN_FIELD_BASE(139, 139, 4, 0x00e0, 0x10, 4, 1), 1156 - PIN_FIELD_BASE(140, 140, 4, 0x00e0, 0x10, 16, 1), 1157 - PIN_FIELD_BASE(141, 141, 4, 0x00e0, 0x10, 2, 1), 1158 - PIN_FIELD_BASE(142, 142, 4, 0x00e0, 0x10, 14, 1), 1159 1167 PIN_FIELD_BASE(152, 152, 7, 0x00c0, 0x10, 3, 1), 1160 1168 PIN_FIELD_BASE(153, 153, 7, 0x00c0, 0x10, 2, 1), 1161 1169 PIN_FIELD_BASE(154, 154, 7, 0x00c0, 0x10, 0, 1), 1162 1170 PIN_FIELD_BASE(155, 155, 7, 0x00c0, 0x10, 1, 1), 1163 - PIN_FIELD_BASE(160, 160, 7, 0x00f0, 0x10, 0, 1), 1164 - PIN_FIELD_BASE(161, 161, 7, 0x00f0, 0x10, 2, 1), 1165 1171 PIN_FIELD_BASE(183, 183, 9, 0x0040, 0x10, 1, 1), 1166 1172 PIN_FIELD_BASE(184, 184, 9, 0x0040, 0x10, 2, 1), 1167 1173 PIN_FIELD_BASE(185, 185, 9, 0x0040, 0x10, 4, 1), ··· 1160 1194 PIN_FIELD_BASE(192, 192, 9, 0x0040, 0x10, 0, 1), 1161 1195 PIN_FIELD_BASE(193, 193, 9, 0x0040, 0x10, 5, 1), 1162 1196 PIN_FIELD_BASE(194, 194, 9, 0x0040, 0x10, 11, 1), 1163 - PIN_FIELD_BASE(200, 200, 8, 0x0070, 0x10, 2, 1), 1164 - PIN_FIELD_BASE(201, 201, 8, 0x0070, 0x10, 6, 1), 1165 - PIN_FIELD_BASE(202, 202, 5, 0x0070, 0x10, 0, 1), 1166 - PIN_FIELD_BASE(203, 203, 5, 0x0070, 0x10, 2, 1), 1167 - PIN_FIELD_BASE(204, 204, 8, 0x0070, 0x10, 0, 1), 1168 - PIN_FIELD_BASE(205, 205, 8, 0x0070, 0x10, 4, 1), 1169 1197 }; 1170 1198 1171 1199 static const struct mtk_pin_field_calc mt8192_pin_r1_range[] = { ··· 1181 1221 PIN_FIELD_BASE(54, 54, 1, 0x0090, 0x10, 2, 1), 1182 1222 PIN_FIELD_BASE(55, 55, 1, 0x0090, 0x10, 4, 1), 1183 1223 PIN_FIELD_BASE(56, 56, 1, 0x0090, 0x10, 3, 1), 1184 - PIN_FIELD_BASE(118, 118, 4, 0x00e0, 0x10, 1, 1), 1185 - PIN_FIELD_BASE(119, 119, 4, 0x00e0, 0x10, 13, 1), 1186 - PIN_FIELD_BASE(120, 120, 4, 0x00e0, 0x10, 11, 1), 1187 - PIN_FIELD_BASE(121, 121, 4, 0x00e0, 0x10, 23, 1), 1188 - PIN_FIELD_BASE(122, 122, 4, 0x00e0, 0x10, 9, 1), 1189 - PIN_FIELD_BASE(123, 123, 4, 0x00e0, 0x10, 21, 1), 1190 - PIN_FIELD_BASE(124, 124, 4, 0x00e0, 0x10, 7, 1), 1191 - PIN_FIELD_BASE(125, 125, 4, 0x00e0, 0x10, 19, 1), 1192 - PIN_FIELD_BASE(139, 139, 4, 0x00e0, 0x10, 5, 1), 1193 - PIN_FIELD_BASE(140, 140, 4, 0x00e0, 0x10, 17, 1), 1194 - PIN_FIELD_BASE(141, 141, 4, 0x00e0, 0x10, 3, 1), 1195 - PIN_FIELD_BASE(142, 142, 4, 0x00e0, 0x10, 15, 1), 1196 1224 PIN_FIELD_BASE(152, 152, 7, 0x00d0, 0x10, 3, 1), 1197 1225 PIN_FIELD_BASE(153, 153, 7, 0x00d0, 0x10, 2, 1), 1198 1226 PIN_FIELD_BASE(154, 154, 7, 0x00d0, 0x10, 0, 1), 1199 1227 PIN_FIELD_BASE(155, 155, 7, 0x00d0, 0x10, 1, 1), 1200 - PIN_FIELD_BASE(160, 160, 7, 0x00f0, 0x10, 1, 1), 1201 - PIN_FIELD_BASE(161, 161, 7, 0x00f0, 0x10, 3, 1), 1202 1228 PIN_FIELD_BASE(183, 183, 9, 0x0050, 0x10, 1, 1), 1203 1229 PIN_FIELD_BASE(184, 184, 9, 0x0050, 0x10, 2, 1), 1204 1230 PIN_FIELD_BASE(185, 185, 9, 0x0050, 0x10, 4, 1), ··· 1197 1251 PIN_FIELD_BASE(192, 192, 9, 0x0050, 0x10, 0, 1), 1198 1252 PIN_FIELD_BASE(193, 193, 9, 0x0050, 0x10, 5, 1), 1199 1253 PIN_FIELD_BASE(194, 194, 9, 0x0050, 0x10, 11, 1), 1200 - PIN_FIELD_BASE(200, 200, 8, 0x0070, 0x10, 3, 1), 1201 - PIN_FIELD_BASE(201, 201, 8, 0x0070, 0x10, 7, 1), 1202 - PIN_FIELD_BASE(202, 202, 5, 0x0070, 0x10, 1, 1), 1203 - PIN_FIELD_BASE(203, 203, 5, 0x0070, 0x10, 3, 1), 1204 - PIN_FIELD_BASE(204, 204, 8, 0x0070, 0x10, 1, 1), 1205 - PIN_FIELD_BASE(205, 205, 8, 0x0070, 0x10, 5, 1), 1206 1254 }; 1207 1255 1208 - static const struct mtk_pin_field_calc mt8192_pin_e1e0en_range[] = { 1209 - PIN_FIELD_BASE(118, 118, 4, 0x0040, 0x10, 0, 1), 1210 - PIN_FIELD_BASE(119, 119, 4, 0x0040, 0x10, 18, 1), 1211 - PIN_FIELD_BASE(120, 120, 4, 0x0040, 0x10, 15, 1), 1212 - PIN_FIELD_BASE(121, 121, 4, 0x0050, 0x10, 3, 1), 1213 - PIN_FIELD_BASE(122, 122, 4, 0x0040, 0x10, 12, 1), 1214 - PIN_FIELD_BASE(123, 123, 4, 0x0050, 0x10, 0, 1), 1215 - PIN_FIELD_BASE(124, 124, 4, 0x0040, 0x10, 9, 1), 1216 - PIN_FIELD_BASE(125, 125, 4, 0x0040, 0x10, 27, 1), 1217 - PIN_FIELD_BASE(139, 139, 4, 0x0040, 0x10, 6, 1), 1218 - PIN_FIELD_BASE(140, 140, 4, 0x0040, 0x10, 24, 1), 1219 - PIN_FIELD_BASE(141, 141, 4, 0x0040, 0x10, 3, 1), 1220 - PIN_FIELD_BASE(142, 142, 4, 0x0040, 0x10, 21, 1), 1221 - PIN_FIELD_BASE(160, 160, 7, 0x0030, 0x10, 0, 1), 1222 - PIN_FIELD_BASE(161, 161, 7, 0x0030, 0x10, 3, 1), 1223 - PIN_FIELD_BASE(200, 200, 8, 0x0010, 0x10, 3, 1), 1224 - PIN_FIELD_BASE(201, 201, 8, 0x0010, 0x10, 9, 1), 1225 - PIN_FIELD_BASE(202, 202, 5, 0x0020, 0x10, 0, 1), 1226 - PIN_FIELD_BASE(203, 203, 5, 0x0020, 0x10, 3, 1), 1227 - PIN_FIELD_BASE(204, 204, 8, 0x0010, 0x10, 0, 1), 1228 - PIN_FIELD_BASE(205, 205, 8, 0x0010, 0x10, 6, 1), 1256 + static const struct mtk_pin_field_calc mt8192_pin_drv_adv_range[] = { 1257 + PIN_FIELD_BASE(89, 89, 2, 0x0040, 0x10, 0, 5), 1258 + PIN_FIELD_BASE(90, 90, 2, 0x0040, 0x10, 5, 5), 1259 + 1260 + PIN_FIELD_BASE(118, 118, 4, 0x0040, 0x10, 0, 3), 1261 + PIN_FIELD_BASE(119, 119, 4, 0x0040, 0x10, 18, 3), 1262 + PIN_FIELD_BASE(120, 120, 4, 0x0040, 0x10, 15, 3), 1263 + PIN_FIELD_BASE(121, 121, 4, 0x0050, 0x10, 3, 3), 1264 + PIN_FIELD_BASE(122, 122, 4, 0x0040, 0x10, 12, 3), 1265 + PIN_FIELD_BASE(123, 123, 4, 0x0050, 0x10, 0, 3), 1266 + PIN_FIELD_BASE(124, 124, 4, 0x0040, 0x10, 9, 3), 1267 + PIN_FIELD_BASE(125, 125, 4, 0x0040, 0x10, 27, 3), 1268 + PIN_FIELD_BASE(139, 139, 4, 0x0040, 0x10, 6, 3), 1269 + PIN_FIELD_BASE(140, 140, 4, 0x0040, 0x10, 24, 3), 1270 + PIN_FIELD_BASE(141, 141, 4, 0x0040, 0x10, 3, 3), 1271 + PIN_FIELD_BASE(142, 142, 4, 0x0040, 0x10, 21, 3), 1272 + PIN_FIELD_BASE(160, 160, 7, 0x0030, 0x10, 0, 3), 1273 + PIN_FIELD_BASE(161, 161, 7, 0x0030, 0x10, 3, 3), 1274 + PIN_FIELD_BASE(200, 200, 8, 0x0010, 0x10, 3, 3), 1275 + PIN_FIELD_BASE(201, 201, 8, 0x0010, 0x10, 9, 3), 1276 + PIN_FIELD_BASE(202, 202, 5, 0x0020, 0x10, 0, 3), 1277 + PIN_FIELD_BASE(203, 203, 5, 0x0020, 0x10, 3, 3), 1278 + PIN_FIELD_BASE(204, 204, 8, 0x0010, 0x10, 0, 3), 1279 + PIN_FIELD_BASE(205, 205, 8, 0x0010, 0x10, 6, 3), 1229 1280 }; 1230 1281 1231 - static const struct mtk_pin_field_calc mt8192_pin_e0_range[] = { 1232 - PIN_FIELD_BASE(118, 118, 4, 0x0040, 0x10, 1, 1), 1233 - PIN_FIELD_BASE(119, 119, 4, 0x0040, 0x10, 19, 1), 1234 - PIN_FIELD_BASE(120, 120, 4, 0x0040, 0x10, 16, 1), 1235 - PIN_FIELD_BASE(121, 121, 4, 0x0050, 0x10, 4, 1), 1236 - PIN_FIELD_BASE(122, 122, 4, 0x0040, 0x10, 13, 1), 1237 - PIN_FIELD_BASE(123, 123, 4, 0x0050, 0x10, 1, 1), 1238 - PIN_FIELD_BASE(124, 124, 4, 0x0040, 0x10, 10, 1), 1239 - PIN_FIELD_BASE(125, 125, 4, 0x0040, 0x10, 28, 1), 1240 - PIN_FIELD_BASE(139, 139, 4, 0x0040, 0x10, 7, 1), 1241 - PIN_FIELD_BASE(140, 140, 4, 0x0040, 0x10, 25, 1), 1242 - PIN_FIELD_BASE(141, 141, 4, 0x0040, 0x10, 4, 1), 1243 - PIN_FIELD_BASE(142, 142, 4, 0x0040, 0x10, 22, 1), 1244 - PIN_FIELD_BASE(160, 160, 7, 0x0030, 0x10, 1, 1), 1245 - PIN_FIELD_BASE(161, 161, 7, 0x0030, 0x10, 4, 1), 1246 - PIN_FIELD_BASE(200, 200, 8, 0x0010, 0x10, 4, 1), 1247 - PIN_FIELD_BASE(201, 201, 8, 0x0010, 0x10, 10, 1), 1248 - PIN_FIELD_BASE(202, 202, 5, 0x0020, 0x10, 1, 1), 1249 - PIN_FIELD_BASE(203, 203, 5, 0x0020, 0x10, 4, 1), 1250 - PIN_FIELD_BASE(204, 204, 8, 0x0010, 0x10, 1, 1), 1251 - PIN_FIELD_BASE(205, 205, 8, 0x0010, 0x10, 7, 1), 1282 + static const struct mtk_pin_field_calc mt8192_pin_rsel_range[] = { 1283 + PIN_FIELD_BASE(118, 118, 4, 0x00e0, 0x10, 0, 2), 1284 + PIN_FIELD_BASE(119, 119, 4, 0x00e0, 0x10, 12, 2), 1285 + PIN_FIELD_BASE(120, 120, 4, 0x00e0, 0x10, 10, 2), 1286 + PIN_FIELD_BASE(121, 121, 4, 0x00e0, 0x10, 22, 2), 1287 + PIN_FIELD_BASE(122, 122, 4, 0x00e0, 0x10, 8, 2), 1288 + PIN_FIELD_BASE(123, 123, 4, 0x00e0, 0x10, 20, 2), 1289 + PIN_FIELD_BASE(124, 124, 4, 0x00e0, 0x10, 6, 2), 1290 + PIN_FIELD_BASE(125, 125, 4, 0x00e0, 0x10, 18, 2), 1291 + PIN_FIELD_BASE(139, 139, 4, 0x00e0, 0x10, 4, 2), 1292 + PIN_FIELD_BASE(140, 140, 4, 0x00e0, 0x10, 16, 2), 1293 + PIN_FIELD_BASE(141, 141, 4, 0x00e0, 0x10, 2, 2), 1294 + PIN_FIELD_BASE(142, 142, 4, 0x00e0, 0x10, 14, 2), 1295 + PIN_FIELD_BASE(160, 160, 7, 0x00f0, 0x10, 0, 2), 1296 + PIN_FIELD_BASE(161, 161, 7, 0x00f0, 0x10, 2, 2), 1297 + PIN_FIELD_BASE(200, 200, 8, 0x0070, 0x10, 2, 2), 1298 + PIN_FIELD_BASE(201, 201, 8, 0x0070, 0x10, 6, 2), 1299 + PIN_FIELD_BASE(202, 202, 5, 0x0070, 0x10, 0, 2), 1300 + PIN_FIELD_BASE(203, 203, 5, 0x0070, 0x10, 2, 2), 1301 + PIN_FIELD_BASE(204, 204, 8, 0x0070, 0x10, 0, 2), 1302 + PIN_FIELD_BASE(205, 205, 8, 0x0070, 0x10, 4, 2), 1252 1303 }; 1253 1304 1254 - static const struct mtk_pin_field_calc mt8192_pin_e1_range[] = { 1255 - PIN_FIELD_BASE(118, 118, 4, 0x0040, 0x10, 2, 1), 1256 - PIN_FIELD_BASE(119, 119, 4, 0x0040, 0x10, 20, 1), 1257 - PIN_FIELD_BASE(120, 120, 4, 0x0040, 0x10, 17, 1), 1258 - PIN_FIELD_BASE(121, 121, 4, 0x0050, 0x10, 5, 1), 1259 - PIN_FIELD_BASE(122, 122, 4, 0x0040, 0x10, 14, 1), 1260 - PIN_FIELD_BASE(123, 123, 4, 0x0050, 0x10, 2, 1), 1261 - PIN_FIELD_BASE(124, 124, 4, 0x0040, 0x10, 11, 1), 1262 - PIN_FIELD_BASE(125, 125, 4, 0x0040, 0x10, 29, 1), 1263 - PIN_FIELD_BASE(139, 139, 4, 0x0040, 0x10, 8, 1), 1264 - PIN_FIELD_BASE(140, 140, 4, 0x0040, 0x10, 26, 1), 1265 - PIN_FIELD_BASE(141, 141, 4, 0x0040, 0x10, 5, 1), 1266 - PIN_FIELD_BASE(142, 142, 4, 0x0040, 0x10, 23, 1), 1267 - PIN_FIELD_BASE(160, 160, 7, 0x0030, 0x10, 2, 1), 1268 - PIN_FIELD_BASE(161, 161, 7, 0x0030, 0x10, 5, 1), 1269 - PIN_FIELD_BASE(200, 200, 8, 0x0010, 0x10, 5, 1), 1270 - PIN_FIELD_BASE(201, 201, 8, 0x0010, 0x10, 11, 1), 1271 - PIN_FIELD_BASE(202, 202, 5, 0x0020, 0x10, 2, 1), 1272 - PIN_FIELD_BASE(203, 203, 5, 0x0020, 0x10, 5, 1), 1273 - PIN_FIELD_BASE(204, 204, 8, 0x0010, 0x10, 2, 1), 1274 - PIN_FIELD_BASE(205, 205, 8, 0x0010, 0x10, 8, 1), 1305 + static const unsigned int mt8192_pull_type[] = { 1306 + MTK_PULL_PU_PD_TYPE,/*0*/ MTK_PULL_PU_PD_TYPE,/*1*/ 1307 + MTK_PULL_PU_PD_TYPE,/*2*/ MTK_PULL_PU_PD_TYPE,/*3*/ 1308 + MTK_PULL_PU_PD_TYPE,/*4*/ MTK_PULL_PU_PD_TYPE,/*5*/ 1309 + MTK_PULL_PU_PD_TYPE,/*6*/ MTK_PULL_PU_PD_TYPE,/*7*/ 1310 + MTK_PULL_PU_PD_TYPE,/*8*/ MTK_PULL_PU_PD_TYPE,/*9*/ 1311 + MTK_PULL_PUPD_R1R0_TYPE,/*10*/ MTK_PULL_PUPD_R1R0_TYPE,/*11*/ 1312 + MTK_PULL_PUPD_R1R0_TYPE,/*12*/ MTK_PULL_PUPD_R1R0_TYPE,/*13*/ 1313 + MTK_PULL_PUPD_R1R0_TYPE,/*14*/ MTK_PULL_PUPD_R1R0_TYPE,/*15*/ 1314 + MTK_PULL_PU_PD_TYPE,/*16*/ MTK_PULL_PU_PD_TYPE,/*17*/ 1315 + MTK_PULL_PU_PD_TYPE,/*18*/ MTK_PULL_PU_PD_TYPE,/*19*/ 1316 + MTK_PULL_PU_PD_TYPE,/*20*/ MTK_PULL_PU_PD_TYPE,/*21*/ 1317 + MTK_PULL_PU_PD_TYPE,/*22*/ MTK_PULL_PU_PD_TYPE,/*23*/ 1318 + MTK_PULL_PU_PD_TYPE,/*24*/ MTK_PULL_PU_PD_TYPE,/*25*/ 1319 + MTK_PULL_PU_PD_TYPE,/*26*/ MTK_PULL_PU_PD_TYPE,/*27*/ 1320 + MTK_PULL_PU_PD_TYPE,/*28*/ MTK_PULL_PU_PD_TYPE,/*29*/ 1321 + MTK_PULL_PU_PD_TYPE,/*30*/ MTK_PULL_PU_PD_TYPE,/*31*/ 1322 + MTK_PULL_PU_PD_TYPE,/*32*/ MTK_PULL_PU_PD_TYPE,/*33*/ 1323 + MTK_PULL_PU_PD_TYPE,/*34*/ MTK_PULL_PU_PD_TYPE,/*35*/ 1324 + MTK_PULL_PU_PD_TYPE,/*36*/ MTK_PULL_PU_PD_TYPE,/*37*/ 1325 + MTK_PULL_PU_PD_TYPE,/*38*/ MTK_PULL_PU_PD_TYPE,/*39*/ 1326 + MTK_PULL_PU_PD_TYPE,/*40*/ MTK_PULL_PU_PD_TYPE,/*41*/ 1327 + MTK_PULL_PU_PD_TYPE,/*42*/ MTK_PULL_PU_PD_TYPE,/*43*/ 1328 + MTK_PULL_PU_PD_TYPE,/*44*/ MTK_PULL_PUPD_R1R0_TYPE,/*45*/ 1329 + MTK_PULL_PUPD_R1R0_TYPE,/*46*/ MTK_PULL_PUPD_R1R0_TYPE,/*47*/ 1330 + MTK_PULL_PUPD_R1R0_TYPE,/*48*/ MTK_PULL_PUPD_R1R0_TYPE,/*49*/ 1331 + MTK_PULL_PUPD_R1R0_TYPE,/*50*/ MTK_PULL_PUPD_R1R0_TYPE,/*51*/ 1332 + MTK_PULL_PUPD_R1R0_TYPE,/*52*/ MTK_PULL_PUPD_R1R0_TYPE,/*53*/ 1333 + MTK_PULL_PUPD_R1R0_TYPE,/*54*/ MTK_PULL_PUPD_R1R0_TYPE,/*55*/ 1334 + MTK_PULL_PUPD_R1R0_TYPE,/*56*/ MTK_PULL_PU_PD_TYPE,/*57*/ 1335 + MTK_PULL_PU_PD_TYPE,/*58*/ MTK_PULL_PU_PD_TYPE,/*59*/ 1336 + MTK_PULL_PU_PD_TYPE,/*60*/ MTK_PULL_PU_PD_TYPE,/*61*/ 1337 + MTK_PULL_PU_PD_TYPE,/*62*/ MTK_PULL_PU_PD_TYPE,/*63*/ 1338 + MTK_PULL_PU_PD_TYPE,/*64*/ MTK_PULL_PU_PD_TYPE,/*65*/ 1339 + MTK_PULL_PU_PD_TYPE,/*66*/ MTK_PULL_PU_PD_TYPE,/*67*/ 1340 + MTK_PULL_PU_PD_TYPE,/*68*/ MTK_PULL_PU_PD_TYPE,/*69*/ 1341 + MTK_PULL_PU_PD_TYPE,/*70*/ MTK_PULL_PU_PD_TYPE,/*71*/ 1342 + MTK_PULL_PU_PD_TYPE,/*72*/ MTK_PULL_PU_PD_TYPE,/*73*/ 1343 + MTK_PULL_PU_PD_TYPE,/*74*/ MTK_PULL_PU_PD_TYPE,/*75*/ 1344 + MTK_PULL_PU_PD_TYPE,/*76*/ MTK_PULL_PU_PD_TYPE,/*77*/ 1345 + MTK_PULL_PU_PD_TYPE,/*78*/ MTK_PULL_PU_PD_TYPE,/*79*/ 1346 + MTK_PULL_PU_PD_TYPE,/*80*/ MTK_PULL_PU_PD_TYPE,/*81*/ 1347 + MTK_PULL_PU_PD_TYPE,/*82*/ MTK_PULL_PU_PD_TYPE,/*83*/ 1348 + MTK_PULL_PU_PD_TYPE,/*84*/ MTK_PULL_PU_PD_TYPE,/*85*/ 1349 + MTK_PULL_PU_PD_TYPE,/*86*/ MTK_PULL_PU_PD_TYPE,/*87*/ 1350 + MTK_PULL_PU_PD_TYPE,/*88*/ MTK_PULL_PU_PD_TYPE,/*89*/ 1351 + MTK_PULL_PU_PD_TYPE,/*90*/ MTK_PULL_PU_PD_TYPE,/*91*/ 1352 + MTK_PULL_PU_PD_TYPE,/*92*/ MTK_PULL_PU_PD_TYPE,/*93*/ 1353 + MTK_PULL_PU_PD_TYPE,/*94*/ MTK_PULL_PU_PD_TYPE,/*95*/ 1354 + MTK_PULL_PU_PD_TYPE,/*96*/ MTK_PULL_PU_PD_TYPE,/*97*/ 1355 + MTK_PULL_PU_PD_TYPE,/*98*/ MTK_PULL_PU_PD_TYPE,/*99*/ 1356 + MTK_PULL_PU_PD_TYPE,/*100*/ MTK_PULL_PU_PD_TYPE,/*101*/ 1357 + MTK_PULL_PU_PD_TYPE,/*102*/ MTK_PULL_PU_PD_TYPE,/*103*/ 1358 + MTK_PULL_PU_PD_TYPE,/*104*/ MTK_PULL_PU_PD_TYPE,/*105*/ 1359 + MTK_PULL_PU_PD_TYPE,/*106*/ MTK_PULL_PU_PD_TYPE,/*107*/ 1360 + MTK_PULL_PU_PD_TYPE,/*108*/ MTK_PULL_PU_PD_TYPE,/*109*/ 1361 + MTK_PULL_PU_PD_TYPE,/*110*/ MTK_PULL_PU_PD_TYPE,/*111*/ 1362 + MTK_PULL_PU_PD_TYPE,/*112*/ MTK_PULL_PU_PD_TYPE,/*113*/ 1363 + MTK_PULL_PU_PD_TYPE,/*114*/ MTK_PULL_PU_PD_TYPE,/*115*/ 1364 + MTK_PULL_PU_PD_TYPE,/*116*/ MTK_PULL_PU_PD_TYPE,/*117*/ 1365 + MTK_PULL_PU_PD_RSEL_TYPE,/*118*/ MTK_PULL_PU_PD_RSEL_TYPE,/*119*/ 1366 + MTK_PULL_PU_PD_RSEL_TYPE,/*120*/ MTK_PULL_PU_PD_RSEL_TYPE,/*121*/ 1367 + MTK_PULL_PU_PD_RSEL_TYPE,/*122*/ MTK_PULL_PU_PD_RSEL_TYPE,/*123*/ 1368 + MTK_PULL_PU_PD_RSEL_TYPE,/*124*/ MTK_PULL_PU_PD_RSEL_TYPE,/*125*/ 1369 + MTK_PULL_PU_PD_TYPE,/*126*/ MTK_PULL_PU_PD_TYPE,/*127*/ 1370 + MTK_PULL_PU_PD_TYPE,/*128*/ MTK_PULL_PU_PD_TYPE,/*129*/ 1371 + MTK_PULL_PU_PD_TYPE,/*130*/ MTK_PULL_PU_PD_TYPE,/*131*/ 1372 + MTK_PULL_PU_PD_TYPE,/*132*/ MTK_PULL_PU_PD_TYPE,/*133*/ 1373 + MTK_PULL_PU_PD_TYPE,/*134*/ MTK_PULL_PU_PD_TYPE,/*135*/ 1374 + MTK_PULL_PU_PD_TYPE,/*136*/ MTK_PULL_PU_PD_TYPE,/*137*/ 1375 + MTK_PULL_PU_PD_TYPE,/*138*/ MTK_PULL_PU_PD_RSEL_TYPE,/*139*/ 1376 + MTK_PULL_PU_PD_RSEL_TYPE,/*140*/ MTK_PULL_PU_PD_RSEL_TYPE,/*141*/ 1377 + MTK_PULL_PU_PD_RSEL_TYPE,/*142*/ MTK_PULL_PU_PD_TYPE,/*143*/ 1378 + MTK_PULL_PU_PD_TYPE,/*144*/ MTK_PULL_PU_PD_TYPE,/*145*/ 1379 + MTK_PULL_PU_PD_TYPE,/*146*/ MTK_PULL_PU_PD_TYPE,/*147*/ 1380 + MTK_PULL_PU_PD_TYPE,/*148*/ MTK_PULL_PU_PD_TYPE,/*149*/ 1381 + MTK_PULL_PU_PD_TYPE,/*150*/ MTK_PULL_PU_PD_TYPE,/*151*/ 1382 + MTK_PULL_PUPD_R1R0_TYPE,/*152*/ MTK_PULL_PUPD_R1R0_TYPE,/*153*/ 1383 + MTK_PULL_PUPD_R1R0_TYPE,/*154*/ MTK_PULL_PUPD_R1R0_TYPE,/*155*/ 1384 + MTK_PULL_PU_PD_TYPE,/*156*/ MTK_PULL_PU_PD_TYPE,/*157*/ 1385 + MTK_PULL_PU_PD_TYPE,/*158*/ MTK_PULL_PU_PD_TYPE,/*159*/ 1386 + MTK_PULL_PU_PD_RSEL_TYPE,/*160*/ MTK_PULL_PU_PD_RSEL_TYPE,/*161*/ 1387 + MTK_PULL_PU_PD_TYPE,/*162*/ MTK_PULL_PU_PD_TYPE,/*163*/ 1388 + MTK_PULL_PU_PD_TYPE,/*164*/ MTK_PULL_PU_PD_TYPE,/*165*/ 1389 + MTK_PULL_PU_PD_TYPE,/*166*/ MTK_PULL_PU_PD_TYPE,/*167*/ 1390 + MTK_PULL_PU_PD_TYPE,/*168*/ MTK_PULL_PU_PD_TYPE,/*169*/ 1391 + MTK_PULL_PU_PD_TYPE,/*170*/ MTK_PULL_PU_PD_TYPE,/*171*/ 1392 + MTK_PULL_PU_PD_TYPE,/*172*/ MTK_PULL_PU_PD_TYPE,/*173*/ 1393 + MTK_PULL_PU_PD_TYPE,/*174*/ MTK_PULL_PU_PD_TYPE,/*175*/ 1394 + MTK_PULL_PU_PD_TYPE,/*176*/ MTK_PULL_PU_PD_TYPE,/*177*/ 1395 + MTK_PULL_PU_PD_TYPE,/*178*/ MTK_PULL_PU_PD_TYPE,/*179*/ 1396 + MTK_PULL_PU_PD_TYPE,/*180*/ MTK_PULL_PU_PD_TYPE,/*181*/ 1397 + MTK_PULL_PU_PD_TYPE,/*182*/ MTK_PULL_PUPD_R1R0_TYPE,/*183*/ 1398 + MTK_PULL_PUPD_R1R0_TYPE,/*184*/ MTK_PULL_PUPD_R1R0_TYPE,/*185*/ 1399 + MTK_PULL_PUPD_R1R0_TYPE,/*186*/ MTK_PULL_PUPD_R1R0_TYPE,/*187*/ 1400 + MTK_PULL_PUPD_R1R0_TYPE,/*188*/ MTK_PULL_PUPD_R1R0_TYPE,/*189*/ 1401 + MTK_PULL_PUPD_R1R0_TYPE,/*190*/ MTK_PULL_PUPD_R1R0_TYPE,/*191*/ 1402 + MTK_PULL_PUPD_R1R0_TYPE,/*192*/ MTK_PULL_PUPD_R1R0_TYPE,/*193*/ 1403 + MTK_PULL_PUPD_R1R0_TYPE,/*194*/ MTK_PULL_PU_PD_TYPE,/*195*/ 1404 + MTK_PULL_PU_PD_TYPE,/*196*/ MTK_PULL_PU_PD_TYPE,/*197*/ 1405 + MTK_PULL_PU_PD_TYPE,/*198*/ MTK_PULL_PU_PD_TYPE,/*199*/ 1406 + MTK_PULL_PU_PD_RSEL_TYPE,/*200*/ MTK_PULL_PU_PD_RSEL_TYPE,/*201*/ 1407 + MTK_PULL_PU_PD_RSEL_TYPE,/*202*/ MTK_PULL_PU_PD_RSEL_TYPE,/*203*/ 1408 + MTK_PULL_PU_PD_RSEL_TYPE,/*204*/ MTK_PULL_PU_PD_RSEL_TYPE,/*205*/ 1409 + MTK_PULL_PU_PD_TYPE,/*206*/ MTK_PULL_PU_PD_TYPE,/*207*/ 1410 + MTK_PULL_PU_PD_TYPE,/*208*/ MTK_PULL_PU_PD_TYPE,/*209*/ 1411 + MTK_PULL_PU_PD_TYPE,/*210*/ MTK_PULL_PU_PD_TYPE,/*211*/ 1412 + MTK_PULL_PU_PD_TYPE,/*212*/ MTK_PULL_PU_PD_TYPE,/*213*/ 1413 + MTK_PULL_PU_PD_TYPE,/*214*/ MTK_PULL_PU_PD_TYPE,/*215*/ 1414 + MTK_PULL_PU_PD_TYPE,/*216*/ MTK_PULL_PU_PD_TYPE,/*217*/ 1415 + MTK_PULL_PU_PD_TYPE,/*218*/ MTK_PULL_PU_PD_TYPE,/*219*/ 1275 1416 }; 1276 - 1277 1417 1278 1418 static const char * const mt8192_pinctrl_register_base_names[] = { 1279 1419 "iocfg0", "iocfg_rm", "iocfg_bm", "iocfg_bl", "iocfg_br", ··· 1387 1355 [PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt8192_pin_pupd_range), 1388 1356 [PINCTRL_PIN_REG_R0] = MTK_RANGE(mt8192_pin_r0_range), 1389 1357 [PINCTRL_PIN_REG_R1] = MTK_RANGE(mt8192_pin_r1_range), 1390 - [PINCTRL_PIN_REG_DRV_EN] = MTK_RANGE(mt8192_pin_e1e0en_range), 1391 - [PINCTRL_PIN_REG_DRV_E0] = MTK_RANGE(mt8192_pin_e0_range), 1392 - [PINCTRL_PIN_REG_DRV_E1] = MTK_RANGE(mt8192_pin_e1_range), 1358 + [PINCTRL_PIN_REG_DRV_ADV] = MTK_RANGE(mt8192_pin_drv_adv_range), 1359 + [PINCTRL_PIN_REG_RSEL] = MTK_RANGE(mt8192_pin_rsel_range), 1393 1360 }; 1394 1361 1395 1362 static const struct mtk_pin_soc mt8192_data = { ··· 1398 1367 .ngrps = ARRAY_SIZE(mtk_pins_mt8192), 1399 1368 .base_names = mt8192_pinctrl_register_base_names, 1400 1369 .nbase_names = ARRAY_SIZE(mt8192_pinctrl_register_base_names), 1370 + .pull_type = mt8192_pull_type, 1401 1371 .eint_hw = &mt8192_eint_hw, 1402 1372 .nfuncs = 8, 1403 1373 .gpio_m = 0, 1404 1374 .bias_set_combo = mtk_pinconf_bias_set_combo, 1405 1375 .bias_get_combo = mtk_pinconf_bias_get_combo, 1406 - .drive_set = mtk_pinconf_drive_set_raw, 1407 - .drive_get = mtk_pinconf_drive_get_raw, 1408 - .adv_pull_get = mtk_pinconf_adv_pull_get, 1409 - .adv_pull_set = mtk_pinconf_adv_pull_set, 1410 - .adv_drive_get = mtk_pinconf_adv_drive_get, 1411 - .adv_drive_set = mtk_pinconf_adv_drive_set, 1376 + .drive_set = mtk_pinconf_drive_set_rev1, 1377 + .drive_get = mtk_pinconf_drive_get_rev1, 1378 + .adv_drive_get = mtk_pinconf_adv_drive_get_raw, 1379 + .adv_drive_set = mtk_pinconf_adv_drive_set_raw, 1412 1380 }; 1413 1381 1414 1382 static const struct of_device_id mt8192_pinctrl_of_match[] = {
+10
drivers/pinctrl/mvebu/pinctrl-mvebu.c
··· 96 96 struct mvebu_pinctrl *pctl, const char *name) 97 97 { 98 98 unsigned n; 99 + 99 100 for (n = 0; n < pctl->num_groups; n++) { 100 101 if (strcmp(name, pctl->groups[n].name) == 0) 101 102 return &pctl->groups[n]; 102 103 } 104 + 103 105 return NULL; 104 106 } 105 107 ··· 110 108 unsigned long config) 111 109 { 112 110 unsigned n; 111 + 113 112 for (n = 0; n < grp->num_settings; n++) { 114 113 if (config == grp->settings[n].val) { 115 114 if (!pctl->variant || (pctl->variant & ··· 118 115 return &grp->settings[n]; 119 116 } 120 117 } 118 + 121 119 return NULL; 122 120 } 123 121 ··· 127 123 const char *name) 128 124 { 129 125 unsigned n; 126 + 130 127 for (n = 0; n < grp->num_settings; n++) { 131 128 if (strcmp(name, grp->settings[n].name) == 0) { 132 129 if (!pctl->variant || (pctl->variant & ··· 135 130 return &grp->settings[n]; 136 131 } 137 132 } 133 + 138 134 return NULL; 139 135 } 140 136 ··· 143 137 struct mvebu_pinctrl *pctl, struct mvebu_pinctrl_group *grp) 144 138 { 145 139 unsigned n; 140 + 146 141 for (n = 0; n < grp->num_settings; n++) { 147 142 if (grp->settings[n].flags & 148 143 (MVEBU_SETTING_GPO | MVEBU_SETTING_GPI)) { ··· 152 145 return &grp->settings[n]; 153 146 } 154 147 } 148 + 155 149 return NULL; 156 150 } 157 151 ··· 160 152 struct mvebu_pinctrl *pctl, const char *name) 161 153 { 162 154 unsigned n; 155 + 163 156 for (n = 0; n < pctl->num_functions; n++) { 164 157 if (strcmp(name, pctl->functions[n].name) == 0) 165 158 return &pctl->functions[n]; 166 159 } 160 + 167 161 return NULL; 168 162 } 169 163
+3 -1
drivers/pinctrl/nomadik/pinctrl-nomadik.c
··· 1421 1421 1422 1422 has_config = nmk_pinctrl_dt_get_config(np, &configs); 1423 1423 np_config = of_parse_phandle(np, "ste,config", 0); 1424 - if (np_config) 1424 + if (np_config) { 1425 1425 has_config |= nmk_pinctrl_dt_get_config(np_config, &configs); 1426 + of_node_put(np_config); 1427 + } 1426 1428 if (has_config) { 1427 1429 const char *gpio_name; 1428 1430 const char *pin;
+171 -71
drivers/pinctrl/pinctrl-amd.c
··· 6 6 * Authors: Ken Xue <Ken.Xue@amd.com> 7 7 * Wu, Jeff <Jeff.Wu@amd.com> 8 8 * 9 - * Contact Information: Nehal Shah <Nehal-bakulchandra.Shah@amd.com> 10 - * Shyam Sundar S K <Shyam-sundar.S-k@amd.com> 11 9 */ 12 10 13 11 #include <linux/err.h> ··· 29 31 #include <linux/bitops.h> 30 32 #include <linux/pinctrl/pinconf.h> 31 33 #include <linux/pinctrl/pinconf-generic.h> 34 + #include <linux/pinctrl/pinmux.h> 32 35 33 36 #include "core.h" 34 37 #include "pinctrl-utils.h" ··· 202 203 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); 203 204 204 205 bool tmr_out_unit; 205 - unsigned int time; 206 - unsigned int unit; 207 206 bool tmr_large; 208 207 209 208 char *level_trig; ··· 215 218 char *pull_up_sel; 216 219 char *pull_up_enable; 217 220 char *pull_down_enable; 218 - char *output_value; 219 - char *output_enable; 221 + char *orientation; 220 222 char debounce_value[40]; 221 223 char *debounce_enable; 222 224 223 225 for (bank = 0; bank < gpio_dev->hwbank_num; bank++) { 224 - seq_printf(s, "GPIO bank%d\t", bank); 226 + unsigned int time = 0; 227 + unsigned int unit = 0; 225 228 226 229 switch (bank) { 227 230 case 0: ··· 244 247 /* Illegal bank number, ignore */ 245 248 continue; 246 249 } 250 + seq_printf(s, "GPIO bank%d\n", bank); 247 251 for (; i < pin_num; i++) { 248 - seq_printf(s, "pin%d\t", i); 252 + seq_printf(s, "📌%d\t", i); 249 253 raw_spin_lock_irqsave(&gpio_dev->lock, flags); 250 254 pin_reg = readl(gpio_dev->base + i * 4); 251 255 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); ··· 254 256 if (pin_reg & BIT(INTERRUPT_ENABLE_OFF)) { 255 257 u8 level = (pin_reg >> ACTIVE_LEVEL_OFF) & 256 258 ACTIVE_LEVEL_MASK; 257 - interrupt_enable = "interrupt is enabled|"; 259 + interrupt_enable = "+"; 258 260 259 261 if (level == ACTIVE_LEVEL_HIGH) 260 - active_level = "Active high|"; 262 + active_level = "↑"; 261 263 else if (level == ACTIVE_LEVEL_LOW) 262 - active_level = "Active low|"; 264 + active_level = "↓"; 263 265 else if (!(pin_reg & BIT(LEVEL_TRIG_OFF)) && 264 266 level == ACTIVE_LEVEL_BOTH) 265 - active_level = "Active on both|"; 267 + active_level = "b"; 266 268 else 267 - active_level = "Unknown Active level|"; 269 + active_level = "?"; 268 270 269 271 if (pin_reg & BIT(LEVEL_TRIG_OFF)) 270 - level_trig = "Level trigger|"; 272 + level_trig = "level"; 271 273 else 272 - level_trig = "Edge trigger|"; 274 + level_trig = " edge"; 273 275 274 276 } else { 275 - interrupt_enable = 276 - "interrupt is disabled|"; 277 - active_level = " "; 278 - level_trig = " "; 277 + interrupt_enable = "∅"; 278 + active_level = "∅"; 279 + level_trig = " ∅"; 279 280 } 280 281 281 282 if (pin_reg & BIT(INTERRUPT_MASK_OFF)) 282 - interrupt_mask = 283 - "interrupt is unmasked|"; 283 + interrupt_mask = "-"; 284 284 else 285 - interrupt_mask = 286 - "interrupt is masked|"; 285 + interrupt_mask = "+"; 286 + seq_printf(s, "int %s (🎭 %s)| active-%s| %s-🔫| ", 287 + interrupt_enable, 288 + interrupt_mask, 289 + active_level, 290 + level_trig); 287 291 288 292 if (pin_reg & BIT(WAKE_CNTRL_OFF_S0I3)) 289 - wake_cntrl0 = "enable wakeup in S0i3 state|"; 293 + wake_cntrl0 = "+"; 290 294 else 291 - wake_cntrl0 = "disable wakeup in S0i3 state|"; 295 + wake_cntrl0 = "∅"; 296 + seq_printf(s, "S0i3 🌅 %s| ", wake_cntrl0); 292 297 293 298 if (pin_reg & BIT(WAKE_CNTRL_OFF_S3)) 294 - wake_cntrl1 = "enable wakeup in S3 state|"; 299 + wake_cntrl1 = "+"; 295 300 else 296 - wake_cntrl1 = "disable wakeup in S3 state|"; 301 + wake_cntrl1 = "∅"; 302 + seq_printf(s, "S3 🌅 %s| ", wake_cntrl1); 297 303 298 304 if (pin_reg & BIT(WAKE_CNTRL_OFF_S4)) 299 - wake_cntrl2 = "enable wakeup in S4/S5 state|"; 305 + wake_cntrl2 = "+"; 300 306 else 301 - wake_cntrl2 = "disable wakeup in S4/S5 state|"; 307 + wake_cntrl2 = "∅"; 308 + seq_printf(s, "S4/S5 🌅 %s| ", wake_cntrl2); 302 309 303 310 if (pin_reg & BIT(PULL_UP_ENABLE_OFF)) { 304 - pull_up_enable = "pull-up is enabled|"; 311 + pull_up_enable = "+"; 305 312 if (pin_reg & BIT(PULL_UP_SEL_OFF)) 306 - pull_up_sel = "8k pull-up|"; 313 + pull_up_sel = "8k"; 307 314 else 308 - pull_up_sel = "4k pull-up|"; 315 + pull_up_sel = "4k"; 309 316 } else { 310 - pull_up_enable = "pull-up is disabled|"; 311 - pull_up_sel = " "; 317 + pull_up_enable = "∅"; 318 + pull_up_sel = " "; 312 319 } 320 + seq_printf(s, "pull-↑ %s (%s)| ", 321 + pull_up_enable, 322 + pull_up_sel); 313 323 314 324 if (pin_reg & BIT(PULL_DOWN_ENABLE_OFF)) 315 - pull_down_enable = "pull-down is enabled|"; 325 + pull_down_enable = "+"; 316 326 else 317 - pull_down_enable = "Pull-down is disabled|"; 327 + pull_down_enable = "∅"; 328 + seq_printf(s, "pull-↓ %s| ", pull_down_enable); 318 329 319 330 if (pin_reg & BIT(OUTPUT_ENABLE_OFF)) { 320 - pin_sts = " "; 321 - output_enable = "output is enabled|"; 331 + pin_sts = "output"; 322 332 if (pin_reg & BIT(OUTPUT_VALUE_OFF)) 323 - output_value = "output is high|"; 333 + orientation = "↑"; 324 334 else 325 - output_value = "output is low|"; 335 + orientation = "↓"; 326 336 } else { 327 - output_enable = "output is disabled|"; 328 - output_value = " "; 329 - 337 + pin_sts = "input "; 330 338 if (pin_reg & BIT(PIN_STS_OFF)) 331 - pin_sts = "input is high|"; 339 + orientation = "↑"; 332 340 else 333 - pin_sts = "input is low|"; 341 + orientation = "↓"; 334 342 } 343 + seq_printf(s, "%s %s| ", pin_sts, orientation); 335 344 336 345 db_cntrl = (DB_CNTRl_MASK << DB_CNTRL_OFF) & pin_reg; 337 346 if (db_cntrl) { ··· 357 352 unit = 61; 358 353 } 359 354 if ((DB_TYPE_REMOVE_GLITCH << DB_CNTRL_OFF) == db_cntrl) 360 - debounce_enable = "debouncing filter (high and low) enabled|"; 355 + debounce_enable = "b +"; 361 356 else if ((DB_TYPE_PRESERVE_LOW_GLITCH << DB_CNTRL_OFF) == db_cntrl) 362 - debounce_enable = "debouncing filter (low) enabled|"; 357 + debounce_enable = "↓ +"; 363 358 else 364 - debounce_enable = "debouncing filter (high) enabled|"; 359 + debounce_enable = "↑ +"; 365 360 366 - snprintf(debounce_value, sizeof(debounce_value), 367 - "debouncing timeout is %u (us)|", time * unit); 368 361 } else { 369 - debounce_enable = "debouncing filter disabled|"; 370 - snprintf(debounce_value, sizeof(debounce_value), " "); 362 + debounce_enable = " ∅"; 371 363 } 372 - 373 - seq_printf(s, "%s %s %s %s %s %s\n" 374 - " %s %s %s %s %s %s %s %s %s 0x%x\n", 375 - level_trig, active_level, interrupt_enable, 376 - interrupt_mask, wake_cntrl0, wake_cntrl1, 377 - wake_cntrl2, pin_sts, pull_up_sel, 378 - pull_up_enable, pull_down_enable, 379 - output_value, output_enable, 380 - debounce_enable, debounce_value, pin_reg); 364 + snprintf(debounce_value, sizeof(debounce_value), "%u", time * unit); 365 + seq_printf(s, "debounce %s (⏰ %sus)| ", debounce_enable, debounce_value); 366 + seq_printf(s, " 0x%x\n", pin_reg); 381 367 } 382 368 } 383 369 } ··· 913 917 { 914 918 struct amd_gpio *gpio_dev = dev_get_drvdata(dev); 915 919 struct pinctrl_desc *desc = gpio_dev->pctrl->desc; 920 + unsigned long flags; 916 921 int i; 917 922 918 923 for (i = 0; i < desc->npins; i++) { ··· 922 925 if (!amd_gpio_should_save(gpio_dev, pin)) 923 926 continue; 924 927 925 - gpio_dev->saved_regs[i] = readl(gpio_dev->base + pin*4); 928 + raw_spin_lock_irqsave(&gpio_dev->lock, flags); 929 + gpio_dev->saved_regs[i] = readl(gpio_dev->base + pin * 4) & ~PIN_IRQ_PENDING; 930 + raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); 926 931 } 927 932 928 933 return 0; ··· 934 935 { 935 936 struct amd_gpio *gpio_dev = dev_get_drvdata(dev); 936 937 struct pinctrl_desc *desc = gpio_dev->pctrl->desc; 938 + unsigned long flags; 937 939 int i; 938 940 939 941 for (i = 0; i < desc->npins; i++) { ··· 943 943 if (!amd_gpio_should_save(gpio_dev, pin)) 944 944 continue; 945 945 946 - writel(gpio_dev->saved_regs[i], gpio_dev->base + pin*4); 946 + raw_spin_lock_irqsave(&gpio_dev->lock, flags); 947 + gpio_dev->saved_regs[i] |= readl(gpio_dev->base + pin * 4) & PIN_IRQ_PENDING; 948 + writel(gpio_dev->saved_regs[i], gpio_dev->base + pin * 4); 949 + raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); 947 950 } 948 951 949 952 return 0; ··· 958 955 }; 959 956 #endif 960 957 958 + static int amd_get_functions_count(struct pinctrl_dev *pctldev) 959 + { 960 + return ARRAY_SIZE(pmx_functions); 961 + } 962 + 963 + static const char *amd_get_fname(struct pinctrl_dev *pctrldev, unsigned int selector) 964 + { 965 + return pmx_functions[selector].name; 966 + } 967 + 968 + static int amd_get_groups(struct pinctrl_dev *pctrldev, unsigned int selector, 969 + const char * const **groups, 970 + unsigned int * const num_groups) 971 + { 972 + struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctrldev); 973 + 974 + if (!gpio_dev->iomux_base) { 975 + dev_err(&gpio_dev->pdev->dev, "iomux function %d group not supported\n", selector); 976 + return -EINVAL; 977 + } 978 + 979 + *groups = pmx_functions[selector].groups; 980 + *num_groups = pmx_functions[selector].ngroups; 981 + return 0; 982 + } 983 + 984 + static int amd_set_mux(struct pinctrl_dev *pctrldev, unsigned int function, unsigned int group) 985 + { 986 + struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctrldev); 987 + struct device *dev = &gpio_dev->pdev->dev; 988 + struct pin_desc *pd; 989 + int ind, index; 990 + 991 + if (!gpio_dev->iomux_base) 992 + return -EINVAL; 993 + 994 + for (index = 0; index < NSELECTS; index++) { 995 + if (strcmp(gpio_dev->groups[group].name, pmx_functions[function].groups[index])) 996 + continue; 997 + 998 + if (readb(gpio_dev->iomux_base + pmx_functions[function].index) == 999 + FUNCTION_INVALID) { 1000 + dev_err(dev, "IOMUX_GPIO 0x%x not present or supported\n", 1001 + pmx_functions[function].index); 1002 + return -EINVAL; 1003 + } 1004 + 1005 + writeb(index, gpio_dev->iomux_base + pmx_functions[function].index); 1006 + 1007 + if (index != (readb(gpio_dev->iomux_base + pmx_functions[function].index) & 1008 + FUNCTION_MASK)) { 1009 + dev_err(dev, "IOMUX_GPIO 0x%x not present or supported\n", 1010 + pmx_functions[function].index); 1011 + return -EINVAL; 1012 + } 1013 + 1014 + for (ind = 0; ind < gpio_dev->groups[group].npins; ind++) { 1015 + if (strncmp(gpio_dev->groups[group].name, "IMX_F", strlen("IMX_F"))) 1016 + continue; 1017 + 1018 + pd = pin_desc_get(gpio_dev->pctrl, gpio_dev->groups[group].pins[ind]); 1019 + pd->mux_owner = gpio_dev->groups[group].name; 1020 + } 1021 + break; 1022 + } 1023 + 1024 + return 0; 1025 + } 1026 + 1027 + static const struct pinmux_ops amd_pmxops = { 1028 + .get_functions_count = amd_get_functions_count, 1029 + .get_function_name = amd_get_fname, 1030 + .get_function_groups = amd_get_groups, 1031 + .set_mux = amd_set_mux, 1032 + }; 1033 + 961 1034 static struct pinctrl_desc amd_pinctrl_desc = { 962 1035 .pins = kerncz_pins, 963 1036 .npins = ARRAY_SIZE(kerncz_pins), 964 1037 .pctlops = &amd_pinctrl_ops, 1038 + .pmxops = &amd_pmxops, 965 1039 .confops = &amd_pinconf_ops, 966 1040 .owner = THIS_MODULE, 967 1041 }; 1042 + 1043 + static void amd_get_iomux_res(struct amd_gpio *gpio_dev) 1044 + { 1045 + struct pinctrl_desc *desc = &amd_pinctrl_desc; 1046 + struct device *dev = &gpio_dev->pdev->dev; 1047 + int index; 1048 + 1049 + index = device_property_match_string(dev, "pinctrl-resource-names", "iomux"); 1050 + if (index < 0) { 1051 + dev_warn(dev, "failed to get iomux index\n"); 1052 + goto out_no_pinmux; 1053 + } 1054 + 1055 + gpio_dev->iomux_base = devm_platform_ioremap_resource(gpio_dev->pdev, index); 1056 + if (IS_ERR(gpio_dev->iomux_base)) { 1057 + dev_warn(dev, "Failed to get iomux %d io resource\n", index); 1058 + goto out_no_pinmux; 1059 + } 1060 + 1061 + return; 1062 + 1063 + out_no_pinmux: 1064 + desc->pmxops = NULL; 1065 + } 968 1066 969 1067 static int amd_gpio_probe(struct platform_device *pdev) 970 1068 { ··· 1081 977 1082 978 raw_spin_lock_init(&gpio_dev->lock); 1083 979 1084 - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1085 - if (!res) { 980 + gpio_dev->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res); 981 + if (IS_ERR(gpio_dev->base)) { 1086 982 dev_err(&pdev->dev, "Failed to get gpio io resource.\n"); 1087 - return -EINVAL; 983 + return PTR_ERR(gpio_dev->base); 1088 984 } 1089 - 1090 - gpio_dev->base = devm_ioremap(&pdev->dev, res->start, 1091 - resource_size(res)); 1092 - if (!gpio_dev->base) 1093 - return -ENOMEM; 1094 985 1095 986 gpio_dev->irq = platform_get_irq(pdev, 0); 1096 987 if (gpio_dev->irq < 0) ··· 1119 1020 gpio_dev->ngroups = ARRAY_SIZE(kerncz_groups); 1120 1021 1121 1022 amd_pinctrl_desc.name = dev_name(&pdev->dev); 1023 + amd_get_iomux_res(gpio_dev); 1122 1024 gpio_dev->pctrl = devm_pinctrl_register(&pdev->dev, &amd_pinctrl_desc, 1123 1025 gpio_dev); 1124 1026 if (IS_ERR(gpio_dev->pctrl)) {
+1332 -44
drivers/pinctrl/pinctrl-amd.h
··· 74 74 75 75 #define CLR_INTR_STAT 0x1UL 76 76 77 - struct amd_pingroup { 78 - const char *name; 79 - const unsigned *pins; 80 - unsigned npins; 81 - }; 77 + #define NSELECTS 0x4 78 + 79 + #define FUNCTION_MASK GENMASK(1, 0) 80 + #define FUNCTION_INVALID GENMASK(7, 0) 82 81 83 82 struct amd_function { 84 83 const char *name; 85 - const char * const *groups; 84 + const char * const groups[NSELECTS]; 86 85 unsigned ngroups; 86 + int index; 87 87 }; 88 88 89 89 struct amd_gpio { 90 90 raw_spinlock_t lock; 91 91 void __iomem *base; 92 + void __iomem *iomux_base; 92 93 93 - const struct amd_pingroup *groups; 94 + const struct pingroup *groups; 94 95 u32 ngroups; 95 96 struct pinctrl_dev *pctrl; 96 97 struct gpio_chip gc; ··· 289 288 PINCTRL_PIN(183, "GPIO_183"), 290 289 }; 291 290 292 - static const unsigned i2c0_pins[] = {145, 146}; 293 - static const unsigned i2c1_pins[] = {147, 148}; 294 - static const unsigned i2c2_pins[] = {113, 114}; 295 - static const unsigned i2c3_pins[] = {19, 20}; 291 + #define AMD_PINS(...) (const unsigned int []){__VA_ARGS__} 296 292 297 - static const unsigned uart0_pins[] = {135, 136, 137, 138, 139}; 298 - static const unsigned uart1_pins[] = {140, 141, 142, 143, 144}; 293 + enum amd_functions { 294 + IMX_F0_GPIO0, 295 + IMX_F1_GPIO0, 296 + IMX_F2_GPIO0, 297 + IMX_F3_GPIO0, 298 + IMX_F0_GPIO1, 299 + IMX_F1_GPIO1, 300 + IMX_F2_GPIO1, 301 + IMX_F3_GPIO1, 302 + IMX_F0_GPIO2, 303 + IMX_F1_GPIO2, 304 + IMX_F2_GPIO2, 305 + IMX_F3_GPIO2, 306 + IMX_F0_GPIO3, 307 + IMX_F1_GPIO3, 308 + IMX_F2_GPIO3, 309 + IMX_F3_GPIO3, 310 + IMX_F0_GPIO4, 311 + IMX_F1_GPIO4, 312 + IMX_F2_GPIO4, 313 + IMX_F3_GPIO4, 314 + IMX_F0_GPIO5, 315 + IMX_F1_GPIO5, 316 + IMX_F2_GPIO5, 317 + IMX_F3_GPIO5, 318 + IMX_F0_GPIO6, 319 + IMX_F1_GPIO6, 320 + IMX_F2_GPIO6, 321 + IMX_F3_GPIO6, 322 + IMX_F0_GPIO7, 323 + IMX_F1_GPIO7, 324 + IMX_F2_GPIO7, 325 + IMX_F3_GPIO7, 326 + IMX_F0_GPIO8, 327 + IMX_F1_GPIO8, 328 + IMX_F2_GPIO8, 329 + IMX_F3_GPIO8, 330 + IMX_F0_GPIO9, 331 + IMX_F1_GPIO9, 332 + IMX_F2_GPIO9, 333 + IMX_F3_GPIO9, 334 + IMX_F0_GPIO10, 335 + IMX_F1_GPIO10, 336 + IMX_F2_GPIO10, 337 + IMX_F3_GPIO10, 338 + IMX_F0_GPIO11, 339 + IMX_F1_GPIO11, 340 + IMX_F2_GPIO11, 341 + IMX_F3_GPIO11, 342 + IMX_F0_GPIO12, 343 + IMX_F1_GPIO12, 344 + IMX_F2_GPIO12, 345 + IMX_F3_GPIO12, 346 + IMX_F0_GPIO13, 347 + IMX_F1_GPIO13, 348 + IMX_F2_GPIO13, 349 + IMX_F3_GPIO13, 350 + IMX_F0_GPIO14, 351 + IMX_F1_GPIO14, 352 + IMX_F2_GPIO14, 353 + IMX_F3_GPIO14, 354 + IMX_F0_GPIO15, 355 + IMX_F1_GPIO15, 356 + IMX_F2_GPIO15, 357 + IMX_F3_GPIO15, 358 + IMX_F0_GPIO16, 359 + IMX_F1_GPIO16, 360 + IMX_F2_GPIO16, 361 + IMX_F3_GPIO16, 362 + IMX_F0_GPIO17, 363 + IMX_F1_GPIO17, 364 + IMX_F2_GPIO17, 365 + IMX_F3_GPIO17, 366 + IMX_F0_GPIO18, 367 + IMX_F1_GPIO18, 368 + IMX_F2_GPIO18, 369 + IMX_F3_GPIO18, 370 + IMX_F0_GPIO19, 371 + IMX_F1_GPIO19, 372 + IMX_F2_GPIO19, 373 + IMX_F3_GPIO19, 374 + IMX_F0_GPIO20, 375 + IMX_F1_GPIO20, 376 + IMX_F2_GPIO20, 377 + IMX_F3_GPIO20, 378 + IMX_F0_GPIO21, 379 + IMX_F1_GPIO21, 380 + IMX_F2_GPIO21, 381 + IMX_F3_GPIO21, 382 + IMX_F0_GPIO22, 383 + IMX_F1_GPIO22, 384 + IMX_F2_GPIO22, 385 + IMX_F3_GPIO22, 386 + IMX_F0_GPIO23, 387 + IMX_F1_GPIO23, 388 + IMX_F2_GPIO23, 389 + IMX_F3_GPIO23, 390 + IMX_F0_GPIO24, 391 + IMX_F1_GPIO24, 392 + IMX_F2_GPIO24, 393 + IMX_F3_GPIO24, 394 + IMX_F0_GPIO25, 395 + IMX_F1_GPIO25, 396 + IMX_F2_GPIO25, 397 + IMX_F3_GPIO25, 398 + IMX_F0_GPIO26, 399 + IMX_F1_GPIO26, 400 + IMX_F2_GPIO26, 401 + IMX_F3_GPIO26, 402 + IMX_F0_GPIO27, 403 + IMX_F1_GPIO27, 404 + IMX_F2_GPIO27, 405 + IMX_F3_GPIO27, 406 + IMX_F0_GPIO28, 407 + IMX_F1_GPIO28, 408 + IMX_F2_GPIO28, 409 + IMX_F3_GPIO28, 410 + IMX_F0_GPIO29, 411 + IMX_F1_GPIO29, 412 + IMX_F2_GPIO29, 413 + IMX_F3_GPIO29, 414 + IMX_F0_GPIO30, 415 + IMX_F1_GPIO30, 416 + IMX_F2_GPIO30, 417 + IMX_F3_GPIO30, 418 + IMX_F0_GPIO31, 419 + IMX_F1_GPIO31, 420 + IMX_F2_GPIO31, 421 + IMX_F3_GPIO31, 422 + IMX_F0_GPIO32, 423 + IMX_F1_GPIO32, 424 + IMX_F2_GPIO32, 425 + IMX_F3_GPIO32, 426 + IMX_F0_GPIO33, 427 + IMX_F1_GPIO33, 428 + IMX_F2_GPIO33, 429 + IMX_F3_GPIO33, 430 + IMX_F0_GPIO34, 431 + IMX_F1_GPIO34, 432 + IMX_F2_GPIO34, 433 + IMX_F3_GPIO34, 434 + IMX_F0_GPIO35, 435 + IMX_F1_GPIO35, 436 + IMX_F2_GPIO35, 437 + IMX_F3_GPIO35, 438 + IMX_F0_GPIO36, 439 + IMX_F1_GPIO36, 440 + IMX_F2_GPIO36, 441 + IMX_F3_GPIO36, 442 + IMX_F0_GPIO37, 443 + IMX_F1_GPIO37, 444 + IMX_F2_GPIO37, 445 + IMX_F3_GPIO37, 446 + IMX_F0_GPIO38, 447 + IMX_F1_GPIO38, 448 + IMX_F2_GPIO38, 449 + IMX_F3_GPIO38, 450 + IMX_F0_GPIO39, 451 + IMX_F1_GPIO39, 452 + IMX_F2_GPIO39, 453 + IMX_F3_GPIO39, 454 + IMX_F0_GPIO40, 455 + IMX_F1_GPIO40, 456 + IMX_F2_GPIO40, 457 + IMX_F3_GPIO40, 458 + IMX_F0_GPIO41, 459 + IMX_F1_GPIO41, 460 + IMX_F2_GPIO41, 461 + IMX_F3_GPIO41, 462 + IMX_F0_GPIO42, 463 + IMX_F1_GPIO42, 464 + IMX_F2_GPIO42, 465 + IMX_F3_GPIO42, 466 + IMX_F0_GPIO43, 467 + IMX_F1_GPIO43, 468 + IMX_F2_GPIO43, 469 + IMX_F3_GPIO43, 470 + IMX_F0_GPIO44, 471 + IMX_F1_GPIO44, 472 + IMX_F2_GPIO44, 473 + IMX_F3_GPIO44, 474 + IMX_F0_GPIO45, 475 + IMX_F1_GPIO45, 476 + IMX_F2_GPIO45, 477 + IMX_F3_GPIO45, 478 + IMX_F0_GPIO46, 479 + IMX_F1_GPIO46, 480 + IMX_F2_GPIO46, 481 + IMX_F3_GPIO46, 482 + IMX_F0_GPIO47, 483 + IMX_F1_GPIO47, 484 + IMX_F2_GPIO47, 485 + IMX_F3_GPIO47, 486 + IMX_F0_GPIO48, 487 + IMX_F1_GPIO48, 488 + IMX_F2_GPIO48, 489 + IMX_F3_GPIO48, 490 + IMX_F0_GPIO49, 491 + IMX_F1_GPIO49, 492 + IMX_F2_GPIO49, 493 + IMX_F3_GPIO49, 494 + IMX_F0_GPIO50, 495 + IMX_F1_GPIO50, 496 + IMX_F2_GPIO50, 497 + IMX_F3_GPIO50, 498 + IMX_F0_GPIO51, 499 + IMX_F1_GPIO51, 500 + IMX_F2_GPIO51, 501 + IMX_F3_GPIO51, 502 + IMX_F0_GPIO52, 503 + IMX_F1_GPIO52, 504 + IMX_F2_GPIO52, 505 + IMX_F3_GPIO52, 506 + IMX_F0_GPIO53, 507 + IMX_F1_GPIO53, 508 + IMX_F2_GPIO53, 509 + IMX_F3_GPIO53, 510 + IMX_F0_GPIO54, 511 + IMX_F1_GPIO54, 512 + IMX_F2_GPIO54, 513 + IMX_F3_GPIO54, 514 + IMX_F0_GPIO55, 515 + IMX_F1_GPIO55, 516 + IMX_F2_GPIO55, 517 + IMX_F3_GPIO55, 518 + IMX_F0_GPIO56, 519 + IMX_F1_GPIO56, 520 + IMX_F2_GPIO56, 521 + IMX_F3_GPIO56, 522 + IMX_F0_GPIO57, 523 + IMX_F1_GPIO57, 524 + IMX_F2_GPIO57, 525 + IMX_F3_GPIO57, 526 + IMX_F0_GPIO58, 527 + IMX_F1_GPIO58, 528 + IMX_F2_GPIO58, 529 + IMX_F3_GPIO58, 530 + IMX_F0_GPIO59, 531 + IMX_F1_GPIO59, 532 + IMX_F2_GPIO59, 533 + IMX_F3_GPIO59, 534 + IMX_F0_GPIO60, 535 + IMX_F1_GPIO60, 536 + IMX_F2_GPIO60, 537 + IMX_F3_GPIO60, 538 + IMX_F0_GPIO61, 539 + IMX_F1_GPIO61, 540 + IMX_F2_GPIO61, 541 + IMX_F3_GPIO61, 542 + IMX_F0_GPIO62, 543 + IMX_F1_GPIO62, 544 + IMX_F2_GPIO62, 545 + IMX_F3_GPIO62, 546 + IMX_F0_GPIO64, 547 + IMX_F1_GPIO64, 548 + IMX_F2_GPIO64, 549 + IMX_F3_GPIO64, 550 + IMX_F0_GPIO65, 551 + IMX_F1_GPIO65, 552 + IMX_F2_GPIO65, 553 + IMX_F3_GPIO65, 554 + IMX_F0_GPIO66, 555 + IMX_F1_GPIO66, 556 + IMX_F2_GPIO66, 557 + IMX_F3_GPIO66, 558 + IMX_F0_GPIO67, 559 + IMX_F1_GPIO67, 560 + IMX_F2_GPIO67, 561 + IMX_F3_GPIO67, 562 + IMX_F0_GPIO68, 563 + IMX_F1_GPIO68, 564 + IMX_F2_GPIO68, 565 + IMX_F3_GPIO68, 566 + IMX_F0_GPIO69, 567 + IMX_F1_GPIO69, 568 + IMX_F2_GPIO69, 569 + IMX_F3_GPIO69, 570 + IMX_F0_GPIO70, 571 + IMX_F1_GPIO70, 572 + IMX_F2_GPIO70, 573 + IMX_F3_GPIO70, 574 + IMX_F0_GPIO71, 575 + IMX_F1_GPIO71, 576 + IMX_F2_GPIO71, 577 + IMX_F3_GPIO71, 578 + IMX_F0_GPIO72, 579 + IMX_F1_GPIO72, 580 + IMX_F2_GPIO72, 581 + IMX_F3_GPIO72, 582 + IMX_F0_GPIO73, 583 + IMX_F1_GPIO73, 584 + IMX_F2_GPIO73, 585 + IMX_F3_GPIO73, 586 + IMX_F0_GPIO74, 587 + IMX_F1_GPIO74, 588 + IMX_F2_GPIO74, 589 + IMX_F3_GPIO74, 590 + IMX_F0_GPIO75, 591 + IMX_F1_GPIO75, 592 + IMX_F2_GPIO75, 593 + IMX_F3_GPIO75, 594 + IMX_F0_GPIO76, 595 + IMX_F1_GPIO76, 596 + IMX_F2_GPIO76, 597 + IMX_F3_GPIO76, 598 + IMX_F0_GPIO77, 599 + IMX_F1_GPIO77, 600 + IMX_F2_GPIO77, 601 + IMX_F3_GPIO77, 602 + IMX_F0_GPIO78, 603 + IMX_F1_GPIO78, 604 + IMX_F2_GPIO78, 605 + IMX_F3_GPIO78, 606 + IMX_F0_GPIO79, 607 + IMX_F1_GPIO79, 608 + IMX_F2_GPIO79, 609 + IMX_F3_GPIO79, 610 + IMX_F0_GPIO80, 611 + IMX_F1_GPIO80, 612 + IMX_F2_GPIO80, 613 + IMX_F3_GPIO80, 614 + IMX_F0_GPIO81, 615 + IMX_F1_GPIO81, 616 + IMX_F2_GPIO81, 617 + IMX_F3_GPIO81, 618 + IMX_F0_GPIO82, 619 + IMX_F1_GPIO82, 620 + IMX_F2_GPIO82, 621 + IMX_F3_GPIO82, 622 + IMX_F0_GPIO83, 623 + IMX_F1_GPIO83, 624 + IMX_F2_GPIO83, 625 + IMX_F3_GPIO83, 626 + IMX_F0_GPIO84, 627 + IMX_F1_GPIO84, 628 + IMX_F2_GPIO84, 629 + IMX_F3_GPIO84, 630 + IMX_F0_GPIO85, 631 + IMX_F1_GPIO85, 632 + IMX_F2_GPIO85, 633 + IMX_F3_GPIO85, 634 + IMX_F0_GPIO86, 635 + IMX_F1_GPIO86, 636 + IMX_F2_GPIO86, 637 + IMX_F3_GPIO86, 638 + IMX_F0_GPIO87, 639 + IMX_F1_GPIO87, 640 + IMX_F2_GPIO87, 641 + IMX_F3_GPIO87, 642 + IMX_F0_GPIO88, 643 + IMX_F1_GPIO88, 644 + IMX_F2_GPIO88, 645 + IMX_F3_GPIO88, 646 + IMX_F0_GPIO89, 647 + IMX_F1_GPIO89, 648 + IMX_F2_GPIO89, 649 + IMX_F3_GPIO89, 650 + IMX_F0_GPIO90, 651 + IMX_F1_GPIO90, 652 + IMX_F2_GPIO90, 653 + IMX_F3_GPIO90, 654 + IMX_F0_GPIO91, 655 + IMX_F1_GPIO91, 656 + IMX_F2_GPIO91, 657 + IMX_F3_GPIO91, 658 + IMX_F0_GPIO92, 659 + IMX_F1_GPIO92, 660 + IMX_F2_GPIO92, 661 + IMX_F3_GPIO92, 662 + IMX_F0_GPIO93, 663 + IMX_F1_GPIO93, 664 + IMX_F2_GPIO93, 665 + IMX_F3_GPIO93, 666 + IMX_F0_GPIO94, 667 + IMX_F1_GPIO94, 668 + IMX_F2_GPIO94, 669 + IMX_F3_GPIO94, 670 + IMX_F0_GPIO95, 671 + IMX_F1_GPIO95, 672 + IMX_F2_GPIO95, 673 + IMX_F3_GPIO95, 674 + IMX_F0_GPIO96, 675 + IMX_F1_GPIO96, 676 + IMX_F2_GPIO96, 677 + IMX_F3_GPIO96, 678 + IMX_F0_GPIO97, 679 + IMX_F1_GPIO97, 680 + IMX_F2_GPIO97, 681 + IMX_F3_GPIO97, 682 + IMX_F0_GPIO98, 683 + IMX_F1_GPIO98, 684 + IMX_F2_GPIO98, 685 + IMX_F3_GPIO98, 686 + IMX_F0_GPIO99, 687 + IMX_F1_GPIO99, 688 + IMX_F2_GPIO99, 689 + IMX_F3_GPIO99, 690 + IMX_F0_GPIO100, 691 + IMX_F1_GPIO100, 692 + IMX_F2_GPIO100, 693 + IMX_F3_GPIO100, 694 + IMX_F0_GPIO101, 695 + IMX_F1_GPIO101, 696 + IMX_F2_GPIO101, 697 + IMX_F3_GPIO101, 698 + IMX_F0_GPIO102, 699 + IMX_F1_GPIO102, 700 + IMX_F2_GPIO102, 701 + IMX_F3_GPIO102, 702 + IMX_F0_GPIO103, 703 + IMX_F1_GPIO103, 704 + IMX_F2_GPIO103, 705 + IMX_F3_GPIO103, 706 + IMX_F0_GPIO104, 707 + IMX_F1_GPIO104, 708 + IMX_F2_GPIO104, 709 + IMX_F3_GPIO104, 710 + IMX_F0_GPIO105, 711 + IMX_F1_GPIO105, 712 + IMX_F2_GPIO105, 713 + IMX_F3_GPIO105, 714 + IMX_F0_GPIO106, 715 + IMX_F1_GPIO106, 716 + IMX_F2_GPIO106, 717 + IMX_F3_GPIO106, 718 + IMX_F0_GPIO107, 719 + IMX_F1_GPIO107, 720 + IMX_F2_GPIO107, 721 + IMX_F3_GPIO107, 722 + IMX_F0_GPIO108, 723 + IMX_F1_GPIO108, 724 + IMX_F2_GPIO108, 725 + IMX_F3_GPIO108, 726 + IMX_F0_GPIO109, 727 + IMX_F1_GPIO109, 728 + IMX_F2_GPIO109, 729 + IMX_F3_GPIO109, 730 + IMX_F0_GPIO110, 731 + IMX_F1_GPIO110, 732 + IMX_F2_GPIO110, 733 + IMX_F3_GPIO110, 734 + IMX_F0_GPIO111, 735 + IMX_F1_GPIO111, 736 + IMX_F2_GPIO111, 737 + IMX_F3_GPIO111, 738 + IMX_F0_GPIO112, 739 + IMX_F1_GPIO112, 740 + IMX_F2_GPIO112, 741 + IMX_F3_GPIO112, 742 + IMX_F0_GPIO113, 743 + IMX_F1_GPIO113, 744 + IMX_F2_GPIO113, 745 + IMX_F3_GPIO113, 746 + IMX_F0_GPIO114, 747 + IMX_F1_GPIO114, 748 + IMX_F2_GPIO114, 749 + IMX_F3_GPIO114, 750 + IMX_F0_GPIO115, 751 + IMX_F1_GPIO115, 752 + IMX_F2_GPIO115, 753 + IMX_F3_GPIO115, 754 + IMX_F0_GPIO116, 755 + IMX_F1_GPIO116, 756 + IMX_F2_GPIO116, 757 + IMX_F3_GPIO116, 758 + IMX_F0_GPIO117, 759 + IMX_F1_GPIO117, 760 + IMX_F2_GPIO117, 761 + IMX_F3_GPIO117, 762 + IMX_F0_GPIO118, 763 + IMX_F1_GPIO118, 764 + IMX_F2_GPIO118, 765 + IMX_F3_GPIO118, 766 + IMX_F0_GPIO119, 767 + IMX_F1_GPIO119, 768 + IMX_F2_GPIO119, 769 + IMX_F3_GPIO119, 770 + IMX_F0_GPIO120, 771 + IMX_F1_GPIO120, 772 + IMX_F2_GPIO120, 773 + IMX_F3_GPIO120, 774 + IMX_F0_GPIO121, 775 + IMX_F1_GPIO121, 776 + IMX_F2_GPIO121, 777 + IMX_F3_GPIO121, 778 + IMX_F0_GPIO122, 779 + IMX_F1_GPIO122, 780 + IMX_F2_GPIO122, 781 + IMX_F3_GPIO122, 782 + IMX_F0_GPIO123, 783 + IMX_F1_GPIO123, 784 + IMX_F2_GPIO123, 785 + IMX_F3_GPIO123, 786 + IMX_F0_GPIO124, 787 + IMX_F1_GPIO124, 788 + IMX_F2_GPIO124, 789 + IMX_F3_GPIO124, 790 + IMX_F0_GPIO125, 791 + IMX_F1_GPIO125, 792 + IMX_F2_GPIO125, 793 + IMX_F3_GPIO125, 794 + IMX_F0_GPIO126, 795 + IMX_F1_GPIO126, 796 + IMX_F2_GPIO126, 797 + IMX_F3_GPIO126, 798 + IMX_F0_GPIO127, 799 + IMX_F1_GPIO127, 800 + IMX_F2_GPIO127, 801 + IMX_F3_GPIO127, 802 + IMX_F0_GPIO128, 803 + IMX_F1_GPIO128, 804 + IMX_F2_GPIO128, 805 + IMX_F3_GPIO128, 806 + IMX_F0_GPIO129, 807 + IMX_F1_GPIO129, 808 + IMX_F2_GPIO129, 809 + IMX_F3_GPIO129, 810 + IMX_F0_GPIO130, 811 + IMX_F1_GPIO130, 812 + IMX_F2_GPIO130, 813 + IMX_F3_GPIO130, 814 + IMX_F0_GPIO131, 815 + IMX_F1_GPIO131, 816 + IMX_F2_GPIO131, 817 + IMX_F3_GPIO131, 818 + IMX_F0_GPIO132, 819 + IMX_F1_GPIO132, 820 + IMX_F2_GPIO132, 821 + IMX_F3_GPIO132, 822 + IMX_F0_GPIO133, 823 + IMX_F1_GPIO133, 824 + IMX_F2_GPIO133, 825 + IMX_F3_GPIO133, 826 + IMX_F0_GPIO134, 827 + IMX_F1_GPIO134, 828 + IMX_F2_GPIO134, 829 + IMX_F3_GPIO134, 830 + IMX_F0_GPIO135, 831 + IMX_F1_GPIO135, 832 + IMX_F2_GPIO135, 833 + IMX_F3_GPIO135, 834 + IMX_F0_GPIO136, 835 + IMX_F1_GPIO136, 836 + IMX_F2_GPIO136, 837 + IMX_F3_GPIO136, 838 + IMX_F0_GPIO137, 839 + IMX_F1_GPIO137, 840 + IMX_F2_GPIO137, 841 + IMX_F3_GPIO137, 842 + IMX_F0_GPIO138, 843 + IMX_F1_GPIO138, 844 + IMX_F2_GPIO138, 845 + IMX_F3_GPIO138, 846 + IMX_F0_GPIO139, 847 + IMX_F1_GPIO139, 848 + IMX_F2_GPIO139, 849 + IMX_F3_GPIO139, 850 + IMX_F0_GPIO140, 851 + IMX_F1_GPIO140, 852 + IMX_F2_GPIO140, 853 + IMX_F3_GPIO140, 854 + IMX_F0_GPIO141, 855 + IMX_F1_GPIO141, 856 + IMX_F2_GPIO141, 857 + IMX_F3_GPIO141, 858 + IMX_F0_GPIO142, 859 + IMX_F1_GPIO142, 860 + IMX_F2_GPIO142, 861 + IMX_F3_GPIO142, 862 + IMX_F0_GPIO143, 863 + IMX_F1_GPIO143, 864 + IMX_F2_GPIO143, 865 + IMX_F3_GPIO143, 866 + IMX_F0_GPIO144, 867 + IMX_F1_GPIO144, 868 + IMX_F2_GPIO144, 869 + IMX_F3_GPIO144, 870 + }; 299 871 300 - static const struct amd_pingroup kerncz_groups[] = { 301 - { 302 - .name = "i2c0", 303 - .pins = i2c0_pins, 304 - .npins = 2, 305 - }, 306 - { 307 - .name = "i2c1", 308 - .pins = i2c1_pins, 309 - .npins = 2, 310 - }, 311 - { 312 - .name = "i2c2", 313 - .pins = i2c2_pins, 314 - .npins = 2, 315 - }, 316 - { 317 - .name = "i2c3", 318 - .pins = i2c3_pins, 319 - .npins = 2, 320 - }, 321 - { 322 - .name = "uart0", 323 - .pins = uart0_pins, 324 - .npins = 5, 325 - }, 326 - { 327 - .name = "uart1", 328 - .pins = uart1_pins, 329 - .npins = 5, 330 - }, 872 + #define AMD_PINCTRL_FUNC_GRP(_number, _func) \ 873 + [IMX_F##_func##_GPIO##_number] = \ 874 + PINCTRL_PINGROUP("IMX_F"#_func "_GPIO"#_number, AMD_PINS(_number), 1) 875 + 876 + static const struct pingroup kerncz_groups[] = { 877 + AMD_PINCTRL_FUNC_GRP(0, 0), 878 + AMD_PINCTRL_FUNC_GRP(0, 1), 879 + AMD_PINCTRL_FUNC_GRP(0, 2), 880 + AMD_PINCTRL_FUNC_GRP(0, 3), 881 + AMD_PINCTRL_FUNC_GRP(1, 0), 882 + AMD_PINCTRL_FUNC_GRP(1, 1), 883 + AMD_PINCTRL_FUNC_GRP(1, 2), 884 + AMD_PINCTRL_FUNC_GRP(1, 3), 885 + AMD_PINCTRL_FUNC_GRP(2, 0), 886 + AMD_PINCTRL_FUNC_GRP(2, 1), 887 + AMD_PINCTRL_FUNC_GRP(2, 2), 888 + AMD_PINCTRL_FUNC_GRP(2, 3), 889 + AMD_PINCTRL_FUNC_GRP(3, 0), 890 + AMD_PINCTRL_FUNC_GRP(3, 1), 891 + AMD_PINCTRL_FUNC_GRP(3, 2), 892 + AMD_PINCTRL_FUNC_GRP(3, 3), 893 + AMD_PINCTRL_FUNC_GRP(4, 0), 894 + AMD_PINCTRL_FUNC_GRP(4, 1), 895 + AMD_PINCTRL_FUNC_GRP(4, 2), 896 + AMD_PINCTRL_FUNC_GRP(4, 3), 897 + AMD_PINCTRL_FUNC_GRP(5, 0), 898 + AMD_PINCTRL_FUNC_GRP(5, 1), 899 + AMD_PINCTRL_FUNC_GRP(5, 2), 900 + AMD_PINCTRL_FUNC_GRP(5, 3), 901 + AMD_PINCTRL_FUNC_GRP(6, 0), 902 + AMD_PINCTRL_FUNC_GRP(6, 1), 903 + AMD_PINCTRL_FUNC_GRP(6, 2), 904 + AMD_PINCTRL_FUNC_GRP(6, 3), 905 + AMD_PINCTRL_FUNC_GRP(7, 0), 906 + AMD_PINCTRL_FUNC_GRP(7, 1), 907 + AMD_PINCTRL_FUNC_GRP(7, 2), 908 + AMD_PINCTRL_FUNC_GRP(7, 3), 909 + AMD_PINCTRL_FUNC_GRP(8, 0), 910 + AMD_PINCTRL_FUNC_GRP(8, 1), 911 + AMD_PINCTRL_FUNC_GRP(8, 2), 912 + AMD_PINCTRL_FUNC_GRP(8, 3), 913 + AMD_PINCTRL_FUNC_GRP(9, 0), 914 + AMD_PINCTRL_FUNC_GRP(9, 1), 915 + AMD_PINCTRL_FUNC_GRP(9, 2), 916 + AMD_PINCTRL_FUNC_GRP(9, 3), 917 + AMD_PINCTRL_FUNC_GRP(10, 0), 918 + AMD_PINCTRL_FUNC_GRP(10, 1), 919 + AMD_PINCTRL_FUNC_GRP(10, 2), 920 + AMD_PINCTRL_FUNC_GRP(10, 3), 921 + AMD_PINCTRL_FUNC_GRP(11, 0), 922 + AMD_PINCTRL_FUNC_GRP(11, 1), 923 + AMD_PINCTRL_FUNC_GRP(11, 2), 924 + AMD_PINCTRL_FUNC_GRP(11, 3), 925 + AMD_PINCTRL_FUNC_GRP(12, 0), 926 + AMD_PINCTRL_FUNC_GRP(12, 1), 927 + AMD_PINCTRL_FUNC_GRP(12, 2), 928 + AMD_PINCTRL_FUNC_GRP(12, 3), 929 + AMD_PINCTRL_FUNC_GRP(13, 0), 930 + AMD_PINCTRL_FUNC_GRP(13, 1), 931 + AMD_PINCTRL_FUNC_GRP(13, 2), 932 + AMD_PINCTRL_FUNC_GRP(13, 3), 933 + AMD_PINCTRL_FUNC_GRP(14, 0), 934 + AMD_PINCTRL_FUNC_GRP(14, 1), 935 + AMD_PINCTRL_FUNC_GRP(14, 2), 936 + AMD_PINCTRL_FUNC_GRP(14, 3), 937 + AMD_PINCTRL_FUNC_GRP(15, 0), 938 + AMD_PINCTRL_FUNC_GRP(15, 1), 939 + AMD_PINCTRL_FUNC_GRP(15, 2), 940 + AMD_PINCTRL_FUNC_GRP(15, 3), 941 + AMD_PINCTRL_FUNC_GRP(16, 0), 942 + AMD_PINCTRL_FUNC_GRP(16, 1), 943 + AMD_PINCTRL_FUNC_GRP(16, 2), 944 + AMD_PINCTRL_FUNC_GRP(16, 3), 945 + AMD_PINCTRL_FUNC_GRP(17, 0), 946 + AMD_PINCTRL_FUNC_GRP(17, 1), 947 + AMD_PINCTRL_FUNC_GRP(17, 2), 948 + AMD_PINCTRL_FUNC_GRP(17, 3), 949 + AMD_PINCTRL_FUNC_GRP(18, 0), 950 + AMD_PINCTRL_FUNC_GRP(18, 1), 951 + AMD_PINCTRL_FUNC_GRP(18, 2), 952 + AMD_PINCTRL_FUNC_GRP(18, 3), 953 + AMD_PINCTRL_FUNC_GRP(19, 0), 954 + AMD_PINCTRL_FUNC_GRP(19, 1), 955 + AMD_PINCTRL_FUNC_GRP(19, 2), 956 + AMD_PINCTRL_FUNC_GRP(19, 3), 957 + AMD_PINCTRL_FUNC_GRP(20, 0), 958 + AMD_PINCTRL_FUNC_GRP(20, 1), 959 + AMD_PINCTRL_FUNC_GRP(20, 2), 960 + AMD_PINCTRL_FUNC_GRP(20, 3), 961 + AMD_PINCTRL_FUNC_GRP(21, 0), 962 + AMD_PINCTRL_FUNC_GRP(21, 1), 963 + AMD_PINCTRL_FUNC_GRP(21, 2), 964 + AMD_PINCTRL_FUNC_GRP(21, 3), 965 + AMD_PINCTRL_FUNC_GRP(22, 0), 966 + AMD_PINCTRL_FUNC_GRP(22, 1), 967 + AMD_PINCTRL_FUNC_GRP(22, 2), 968 + AMD_PINCTRL_FUNC_GRP(22, 3), 969 + AMD_PINCTRL_FUNC_GRP(23, 0), 970 + AMD_PINCTRL_FUNC_GRP(23, 1), 971 + AMD_PINCTRL_FUNC_GRP(23, 2), 972 + AMD_PINCTRL_FUNC_GRP(23, 3), 973 + AMD_PINCTRL_FUNC_GRP(24, 0), 974 + AMD_PINCTRL_FUNC_GRP(24, 1), 975 + AMD_PINCTRL_FUNC_GRP(24, 2), 976 + AMD_PINCTRL_FUNC_GRP(24, 3), 977 + AMD_PINCTRL_FUNC_GRP(25, 0), 978 + AMD_PINCTRL_FUNC_GRP(25, 1), 979 + AMD_PINCTRL_FUNC_GRP(25, 2), 980 + AMD_PINCTRL_FUNC_GRP(25, 3), 981 + AMD_PINCTRL_FUNC_GRP(26, 0), 982 + AMD_PINCTRL_FUNC_GRP(26, 1), 983 + AMD_PINCTRL_FUNC_GRP(26, 2), 984 + AMD_PINCTRL_FUNC_GRP(26, 3), 985 + AMD_PINCTRL_FUNC_GRP(27, 0), 986 + AMD_PINCTRL_FUNC_GRP(27, 1), 987 + AMD_PINCTRL_FUNC_GRP(27, 2), 988 + AMD_PINCTRL_FUNC_GRP(27, 3), 989 + AMD_PINCTRL_FUNC_GRP(28, 0), 990 + AMD_PINCTRL_FUNC_GRP(28, 1), 991 + AMD_PINCTRL_FUNC_GRP(28, 2), 992 + AMD_PINCTRL_FUNC_GRP(28, 3), 993 + AMD_PINCTRL_FUNC_GRP(29, 0), 994 + AMD_PINCTRL_FUNC_GRP(29, 1), 995 + AMD_PINCTRL_FUNC_GRP(29, 2), 996 + AMD_PINCTRL_FUNC_GRP(29, 3), 997 + AMD_PINCTRL_FUNC_GRP(30, 0), 998 + AMD_PINCTRL_FUNC_GRP(30, 1), 999 + AMD_PINCTRL_FUNC_GRP(30, 2), 1000 + AMD_PINCTRL_FUNC_GRP(30, 3), 1001 + AMD_PINCTRL_FUNC_GRP(31, 0), 1002 + AMD_PINCTRL_FUNC_GRP(31, 1), 1003 + AMD_PINCTRL_FUNC_GRP(31, 2), 1004 + AMD_PINCTRL_FUNC_GRP(31, 3), 1005 + AMD_PINCTRL_FUNC_GRP(32, 0), 1006 + AMD_PINCTRL_FUNC_GRP(32, 1), 1007 + AMD_PINCTRL_FUNC_GRP(32, 2), 1008 + AMD_PINCTRL_FUNC_GRP(32, 3), 1009 + AMD_PINCTRL_FUNC_GRP(33, 0), 1010 + AMD_PINCTRL_FUNC_GRP(33, 1), 1011 + AMD_PINCTRL_FUNC_GRP(33, 2), 1012 + AMD_PINCTRL_FUNC_GRP(33, 3), 1013 + AMD_PINCTRL_FUNC_GRP(34, 0), 1014 + AMD_PINCTRL_FUNC_GRP(34, 1), 1015 + AMD_PINCTRL_FUNC_GRP(34, 2), 1016 + AMD_PINCTRL_FUNC_GRP(34, 3), 1017 + AMD_PINCTRL_FUNC_GRP(35, 0), 1018 + AMD_PINCTRL_FUNC_GRP(35, 1), 1019 + AMD_PINCTRL_FUNC_GRP(35, 2), 1020 + AMD_PINCTRL_FUNC_GRP(35, 3), 1021 + AMD_PINCTRL_FUNC_GRP(36, 0), 1022 + AMD_PINCTRL_FUNC_GRP(36, 1), 1023 + AMD_PINCTRL_FUNC_GRP(36, 2), 1024 + AMD_PINCTRL_FUNC_GRP(36, 3), 1025 + AMD_PINCTRL_FUNC_GRP(37, 0), 1026 + AMD_PINCTRL_FUNC_GRP(37, 1), 1027 + AMD_PINCTRL_FUNC_GRP(37, 2), 1028 + AMD_PINCTRL_FUNC_GRP(37, 3), 1029 + AMD_PINCTRL_FUNC_GRP(38, 0), 1030 + AMD_PINCTRL_FUNC_GRP(38, 1), 1031 + AMD_PINCTRL_FUNC_GRP(38, 2), 1032 + AMD_PINCTRL_FUNC_GRP(38, 3), 1033 + AMD_PINCTRL_FUNC_GRP(39, 0), 1034 + AMD_PINCTRL_FUNC_GRP(39, 1), 1035 + AMD_PINCTRL_FUNC_GRP(39, 2), 1036 + AMD_PINCTRL_FUNC_GRP(39, 3), 1037 + AMD_PINCTRL_FUNC_GRP(40, 0), 1038 + AMD_PINCTRL_FUNC_GRP(40, 1), 1039 + AMD_PINCTRL_FUNC_GRP(40, 2), 1040 + AMD_PINCTRL_FUNC_GRP(40, 3), 1041 + AMD_PINCTRL_FUNC_GRP(41, 0), 1042 + AMD_PINCTRL_FUNC_GRP(41, 1), 1043 + AMD_PINCTRL_FUNC_GRP(41, 2), 1044 + AMD_PINCTRL_FUNC_GRP(41, 3), 1045 + AMD_PINCTRL_FUNC_GRP(42, 0), 1046 + AMD_PINCTRL_FUNC_GRP(42, 1), 1047 + AMD_PINCTRL_FUNC_GRP(42, 2), 1048 + AMD_PINCTRL_FUNC_GRP(42, 3), 1049 + AMD_PINCTRL_FUNC_GRP(43, 0), 1050 + AMD_PINCTRL_FUNC_GRP(43, 1), 1051 + AMD_PINCTRL_FUNC_GRP(43, 2), 1052 + AMD_PINCTRL_FUNC_GRP(43, 3), 1053 + AMD_PINCTRL_FUNC_GRP(44, 0), 1054 + AMD_PINCTRL_FUNC_GRP(44, 1), 1055 + AMD_PINCTRL_FUNC_GRP(44, 2), 1056 + AMD_PINCTRL_FUNC_GRP(44, 3), 1057 + AMD_PINCTRL_FUNC_GRP(45, 0), 1058 + AMD_PINCTRL_FUNC_GRP(45, 1), 1059 + AMD_PINCTRL_FUNC_GRP(45, 2), 1060 + AMD_PINCTRL_FUNC_GRP(45, 3), 1061 + AMD_PINCTRL_FUNC_GRP(46, 0), 1062 + AMD_PINCTRL_FUNC_GRP(46, 1), 1063 + AMD_PINCTRL_FUNC_GRP(46, 2), 1064 + AMD_PINCTRL_FUNC_GRP(46, 3), 1065 + AMD_PINCTRL_FUNC_GRP(47, 0), 1066 + AMD_PINCTRL_FUNC_GRP(47, 1), 1067 + AMD_PINCTRL_FUNC_GRP(47, 2), 1068 + AMD_PINCTRL_FUNC_GRP(47, 3), 1069 + AMD_PINCTRL_FUNC_GRP(48, 0), 1070 + AMD_PINCTRL_FUNC_GRP(48, 1), 1071 + AMD_PINCTRL_FUNC_GRP(48, 2), 1072 + AMD_PINCTRL_FUNC_GRP(48, 3), 1073 + AMD_PINCTRL_FUNC_GRP(49, 0), 1074 + AMD_PINCTRL_FUNC_GRP(49, 1), 1075 + AMD_PINCTRL_FUNC_GRP(49, 2), 1076 + AMD_PINCTRL_FUNC_GRP(49, 3), 1077 + AMD_PINCTRL_FUNC_GRP(50, 0), 1078 + AMD_PINCTRL_FUNC_GRP(50, 1), 1079 + AMD_PINCTRL_FUNC_GRP(50, 2), 1080 + AMD_PINCTRL_FUNC_GRP(50, 3), 1081 + AMD_PINCTRL_FUNC_GRP(51, 0), 1082 + AMD_PINCTRL_FUNC_GRP(51, 1), 1083 + AMD_PINCTRL_FUNC_GRP(51, 2), 1084 + AMD_PINCTRL_FUNC_GRP(51, 3), 1085 + AMD_PINCTRL_FUNC_GRP(52, 0), 1086 + AMD_PINCTRL_FUNC_GRP(52, 1), 1087 + AMD_PINCTRL_FUNC_GRP(52, 2), 1088 + AMD_PINCTRL_FUNC_GRP(52, 3), 1089 + AMD_PINCTRL_FUNC_GRP(53, 0), 1090 + AMD_PINCTRL_FUNC_GRP(53, 1), 1091 + AMD_PINCTRL_FUNC_GRP(53, 2), 1092 + AMD_PINCTRL_FUNC_GRP(53, 3), 1093 + AMD_PINCTRL_FUNC_GRP(54, 0), 1094 + AMD_PINCTRL_FUNC_GRP(54, 1), 1095 + AMD_PINCTRL_FUNC_GRP(54, 2), 1096 + AMD_PINCTRL_FUNC_GRP(54, 3), 1097 + AMD_PINCTRL_FUNC_GRP(55, 0), 1098 + AMD_PINCTRL_FUNC_GRP(55, 1), 1099 + AMD_PINCTRL_FUNC_GRP(55, 2), 1100 + AMD_PINCTRL_FUNC_GRP(55, 3), 1101 + AMD_PINCTRL_FUNC_GRP(56, 0), 1102 + AMD_PINCTRL_FUNC_GRP(56, 1), 1103 + AMD_PINCTRL_FUNC_GRP(56, 2), 1104 + AMD_PINCTRL_FUNC_GRP(56, 3), 1105 + AMD_PINCTRL_FUNC_GRP(57, 0), 1106 + AMD_PINCTRL_FUNC_GRP(57, 1), 1107 + AMD_PINCTRL_FUNC_GRP(57, 2), 1108 + AMD_PINCTRL_FUNC_GRP(57, 3), 1109 + AMD_PINCTRL_FUNC_GRP(58, 0), 1110 + AMD_PINCTRL_FUNC_GRP(58, 1), 1111 + AMD_PINCTRL_FUNC_GRP(58, 2), 1112 + AMD_PINCTRL_FUNC_GRP(58, 3), 1113 + AMD_PINCTRL_FUNC_GRP(59, 0), 1114 + AMD_PINCTRL_FUNC_GRP(59, 1), 1115 + AMD_PINCTRL_FUNC_GRP(59, 2), 1116 + AMD_PINCTRL_FUNC_GRP(59, 3), 1117 + AMD_PINCTRL_FUNC_GRP(60, 0), 1118 + AMD_PINCTRL_FUNC_GRP(60, 1), 1119 + AMD_PINCTRL_FUNC_GRP(60, 2), 1120 + AMD_PINCTRL_FUNC_GRP(60, 3), 1121 + AMD_PINCTRL_FUNC_GRP(61, 0), 1122 + AMD_PINCTRL_FUNC_GRP(61, 1), 1123 + AMD_PINCTRL_FUNC_GRP(61, 2), 1124 + AMD_PINCTRL_FUNC_GRP(61, 3), 1125 + AMD_PINCTRL_FUNC_GRP(62, 0), 1126 + AMD_PINCTRL_FUNC_GRP(62, 1), 1127 + AMD_PINCTRL_FUNC_GRP(62, 2), 1128 + AMD_PINCTRL_FUNC_GRP(62, 3), 1129 + AMD_PINCTRL_FUNC_GRP(64, 0), 1130 + AMD_PINCTRL_FUNC_GRP(64, 1), 1131 + AMD_PINCTRL_FUNC_GRP(64, 2), 1132 + AMD_PINCTRL_FUNC_GRP(64, 3), 1133 + AMD_PINCTRL_FUNC_GRP(65, 0), 1134 + AMD_PINCTRL_FUNC_GRP(65, 1), 1135 + AMD_PINCTRL_FUNC_GRP(65, 2), 1136 + AMD_PINCTRL_FUNC_GRP(65, 3), 1137 + AMD_PINCTRL_FUNC_GRP(66, 0), 1138 + AMD_PINCTRL_FUNC_GRP(66, 1), 1139 + AMD_PINCTRL_FUNC_GRP(66, 2), 1140 + AMD_PINCTRL_FUNC_GRP(66, 3), 1141 + AMD_PINCTRL_FUNC_GRP(67, 0), 1142 + AMD_PINCTRL_FUNC_GRP(67, 1), 1143 + AMD_PINCTRL_FUNC_GRP(67, 2), 1144 + AMD_PINCTRL_FUNC_GRP(67, 3), 1145 + AMD_PINCTRL_FUNC_GRP(68, 0), 1146 + AMD_PINCTRL_FUNC_GRP(68, 1), 1147 + AMD_PINCTRL_FUNC_GRP(68, 2), 1148 + AMD_PINCTRL_FUNC_GRP(68, 3), 1149 + AMD_PINCTRL_FUNC_GRP(69, 0), 1150 + AMD_PINCTRL_FUNC_GRP(69, 1), 1151 + AMD_PINCTRL_FUNC_GRP(69, 2), 1152 + AMD_PINCTRL_FUNC_GRP(69, 3), 1153 + AMD_PINCTRL_FUNC_GRP(70, 0), 1154 + AMD_PINCTRL_FUNC_GRP(70, 1), 1155 + AMD_PINCTRL_FUNC_GRP(70, 2), 1156 + AMD_PINCTRL_FUNC_GRP(70, 3), 1157 + AMD_PINCTRL_FUNC_GRP(71, 0), 1158 + AMD_PINCTRL_FUNC_GRP(71, 1), 1159 + AMD_PINCTRL_FUNC_GRP(71, 2), 1160 + AMD_PINCTRL_FUNC_GRP(71, 3), 1161 + AMD_PINCTRL_FUNC_GRP(72, 0), 1162 + AMD_PINCTRL_FUNC_GRP(72, 1), 1163 + AMD_PINCTRL_FUNC_GRP(72, 2), 1164 + AMD_PINCTRL_FUNC_GRP(72, 3), 1165 + AMD_PINCTRL_FUNC_GRP(73, 0), 1166 + AMD_PINCTRL_FUNC_GRP(73, 1), 1167 + AMD_PINCTRL_FUNC_GRP(73, 2), 1168 + AMD_PINCTRL_FUNC_GRP(73, 3), 1169 + AMD_PINCTRL_FUNC_GRP(74, 0), 1170 + AMD_PINCTRL_FUNC_GRP(74, 1), 1171 + AMD_PINCTRL_FUNC_GRP(74, 2), 1172 + AMD_PINCTRL_FUNC_GRP(74, 3), 1173 + AMD_PINCTRL_FUNC_GRP(75, 0), 1174 + AMD_PINCTRL_FUNC_GRP(75, 1), 1175 + AMD_PINCTRL_FUNC_GRP(75, 2), 1176 + AMD_PINCTRL_FUNC_GRP(75, 3), 1177 + AMD_PINCTRL_FUNC_GRP(76, 0), 1178 + AMD_PINCTRL_FUNC_GRP(76, 1), 1179 + AMD_PINCTRL_FUNC_GRP(76, 2), 1180 + AMD_PINCTRL_FUNC_GRP(76, 3), 1181 + AMD_PINCTRL_FUNC_GRP(77, 0), 1182 + AMD_PINCTRL_FUNC_GRP(77, 1), 1183 + AMD_PINCTRL_FUNC_GRP(77, 2), 1184 + AMD_PINCTRL_FUNC_GRP(77, 3), 1185 + AMD_PINCTRL_FUNC_GRP(78, 0), 1186 + AMD_PINCTRL_FUNC_GRP(78, 1), 1187 + AMD_PINCTRL_FUNC_GRP(78, 2), 1188 + AMD_PINCTRL_FUNC_GRP(78, 3), 1189 + AMD_PINCTRL_FUNC_GRP(79, 0), 1190 + AMD_PINCTRL_FUNC_GRP(79, 1), 1191 + AMD_PINCTRL_FUNC_GRP(79, 2), 1192 + AMD_PINCTRL_FUNC_GRP(79, 3), 1193 + AMD_PINCTRL_FUNC_GRP(80, 0), 1194 + AMD_PINCTRL_FUNC_GRP(80, 1), 1195 + AMD_PINCTRL_FUNC_GRP(80, 2), 1196 + AMD_PINCTRL_FUNC_GRP(80, 3), 1197 + AMD_PINCTRL_FUNC_GRP(81, 0), 1198 + AMD_PINCTRL_FUNC_GRP(81, 1), 1199 + AMD_PINCTRL_FUNC_GRP(81, 2), 1200 + AMD_PINCTRL_FUNC_GRP(81, 3), 1201 + AMD_PINCTRL_FUNC_GRP(82, 0), 1202 + AMD_PINCTRL_FUNC_GRP(82, 1), 1203 + AMD_PINCTRL_FUNC_GRP(82, 2), 1204 + AMD_PINCTRL_FUNC_GRP(82, 3), 1205 + AMD_PINCTRL_FUNC_GRP(83, 0), 1206 + AMD_PINCTRL_FUNC_GRP(83, 1), 1207 + AMD_PINCTRL_FUNC_GRP(83, 2), 1208 + AMD_PINCTRL_FUNC_GRP(83, 3), 1209 + AMD_PINCTRL_FUNC_GRP(84, 0), 1210 + AMD_PINCTRL_FUNC_GRP(84, 1), 1211 + AMD_PINCTRL_FUNC_GRP(84, 2), 1212 + AMD_PINCTRL_FUNC_GRP(84, 3), 1213 + AMD_PINCTRL_FUNC_GRP(85, 0), 1214 + AMD_PINCTRL_FUNC_GRP(85, 1), 1215 + AMD_PINCTRL_FUNC_GRP(85, 2), 1216 + AMD_PINCTRL_FUNC_GRP(85, 3), 1217 + AMD_PINCTRL_FUNC_GRP(86, 0), 1218 + AMD_PINCTRL_FUNC_GRP(86, 1), 1219 + AMD_PINCTRL_FUNC_GRP(86, 2), 1220 + AMD_PINCTRL_FUNC_GRP(86, 3), 1221 + AMD_PINCTRL_FUNC_GRP(87, 0), 1222 + AMD_PINCTRL_FUNC_GRP(87, 1), 1223 + AMD_PINCTRL_FUNC_GRP(87, 2), 1224 + AMD_PINCTRL_FUNC_GRP(87, 3), 1225 + AMD_PINCTRL_FUNC_GRP(88, 0), 1226 + AMD_PINCTRL_FUNC_GRP(88, 1), 1227 + AMD_PINCTRL_FUNC_GRP(88, 2), 1228 + AMD_PINCTRL_FUNC_GRP(88, 3), 1229 + AMD_PINCTRL_FUNC_GRP(89, 0), 1230 + AMD_PINCTRL_FUNC_GRP(89, 1), 1231 + AMD_PINCTRL_FUNC_GRP(89, 2), 1232 + AMD_PINCTRL_FUNC_GRP(89, 3), 1233 + AMD_PINCTRL_FUNC_GRP(90, 0), 1234 + AMD_PINCTRL_FUNC_GRP(90, 1), 1235 + AMD_PINCTRL_FUNC_GRP(90, 2), 1236 + AMD_PINCTRL_FUNC_GRP(90, 3), 1237 + AMD_PINCTRL_FUNC_GRP(91, 0), 1238 + AMD_PINCTRL_FUNC_GRP(91, 1), 1239 + AMD_PINCTRL_FUNC_GRP(91, 2), 1240 + AMD_PINCTRL_FUNC_GRP(91, 3), 1241 + AMD_PINCTRL_FUNC_GRP(92, 0), 1242 + AMD_PINCTRL_FUNC_GRP(92, 1), 1243 + AMD_PINCTRL_FUNC_GRP(92, 2), 1244 + AMD_PINCTRL_FUNC_GRP(92, 3), 1245 + AMD_PINCTRL_FUNC_GRP(93, 0), 1246 + AMD_PINCTRL_FUNC_GRP(93, 1), 1247 + AMD_PINCTRL_FUNC_GRP(93, 2), 1248 + AMD_PINCTRL_FUNC_GRP(93, 3), 1249 + AMD_PINCTRL_FUNC_GRP(94, 0), 1250 + AMD_PINCTRL_FUNC_GRP(94, 1), 1251 + AMD_PINCTRL_FUNC_GRP(94, 2), 1252 + AMD_PINCTRL_FUNC_GRP(94, 3), 1253 + AMD_PINCTRL_FUNC_GRP(95, 0), 1254 + AMD_PINCTRL_FUNC_GRP(95, 1), 1255 + AMD_PINCTRL_FUNC_GRP(95, 2), 1256 + AMD_PINCTRL_FUNC_GRP(95, 3), 1257 + AMD_PINCTRL_FUNC_GRP(96, 0), 1258 + AMD_PINCTRL_FUNC_GRP(96, 1), 1259 + AMD_PINCTRL_FUNC_GRP(96, 2), 1260 + AMD_PINCTRL_FUNC_GRP(96, 3), 1261 + AMD_PINCTRL_FUNC_GRP(97, 0), 1262 + AMD_PINCTRL_FUNC_GRP(97, 1), 1263 + AMD_PINCTRL_FUNC_GRP(97, 2), 1264 + AMD_PINCTRL_FUNC_GRP(97, 3), 1265 + AMD_PINCTRL_FUNC_GRP(98, 0), 1266 + AMD_PINCTRL_FUNC_GRP(98, 1), 1267 + AMD_PINCTRL_FUNC_GRP(98, 2), 1268 + AMD_PINCTRL_FUNC_GRP(98, 3), 1269 + AMD_PINCTRL_FUNC_GRP(99, 0), 1270 + AMD_PINCTRL_FUNC_GRP(99, 1), 1271 + AMD_PINCTRL_FUNC_GRP(99, 2), 1272 + AMD_PINCTRL_FUNC_GRP(99, 3), 1273 + AMD_PINCTRL_FUNC_GRP(100, 0), 1274 + AMD_PINCTRL_FUNC_GRP(100, 1), 1275 + AMD_PINCTRL_FUNC_GRP(100, 2), 1276 + AMD_PINCTRL_FUNC_GRP(100, 3), 1277 + AMD_PINCTRL_FUNC_GRP(101, 0), 1278 + AMD_PINCTRL_FUNC_GRP(101, 1), 1279 + AMD_PINCTRL_FUNC_GRP(101, 2), 1280 + AMD_PINCTRL_FUNC_GRP(101, 3), 1281 + AMD_PINCTRL_FUNC_GRP(102, 0), 1282 + AMD_PINCTRL_FUNC_GRP(102, 1), 1283 + AMD_PINCTRL_FUNC_GRP(102, 2), 1284 + AMD_PINCTRL_FUNC_GRP(102, 3), 1285 + AMD_PINCTRL_FUNC_GRP(103, 0), 1286 + AMD_PINCTRL_FUNC_GRP(103, 1), 1287 + AMD_PINCTRL_FUNC_GRP(103, 2), 1288 + AMD_PINCTRL_FUNC_GRP(103, 3), 1289 + AMD_PINCTRL_FUNC_GRP(104, 0), 1290 + AMD_PINCTRL_FUNC_GRP(104, 1), 1291 + AMD_PINCTRL_FUNC_GRP(104, 2), 1292 + AMD_PINCTRL_FUNC_GRP(104, 3), 1293 + AMD_PINCTRL_FUNC_GRP(105, 0), 1294 + AMD_PINCTRL_FUNC_GRP(105, 1), 1295 + AMD_PINCTRL_FUNC_GRP(105, 2), 1296 + AMD_PINCTRL_FUNC_GRP(105, 3), 1297 + AMD_PINCTRL_FUNC_GRP(106, 0), 1298 + AMD_PINCTRL_FUNC_GRP(106, 1), 1299 + AMD_PINCTRL_FUNC_GRP(106, 2), 1300 + AMD_PINCTRL_FUNC_GRP(106, 3), 1301 + AMD_PINCTRL_FUNC_GRP(107, 0), 1302 + AMD_PINCTRL_FUNC_GRP(107, 1), 1303 + AMD_PINCTRL_FUNC_GRP(107, 2), 1304 + AMD_PINCTRL_FUNC_GRP(107, 3), 1305 + AMD_PINCTRL_FUNC_GRP(108, 0), 1306 + AMD_PINCTRL_FUNC_GRP(108, 1), 1307 + AMD_PINCTRL_FUNC_GRP(108, 2), 1308 + AMD_PINCTRL_FUNC_GRP(108, 3), 1309 + AMD_PINCTRL_FUNC_GRP(109, 0), 1310 + AMD_PINCTRL_FUNC_GRP(109, 1), 1311 + AMD_PINCTRL_FUNC_GRP(109, 2), 1312 + AMD_PINCTRL_FUNC_GRP(109, 3), 1313 + AMD_PINCTRL_FUNC_GRP(110, 0), 1314 + AMD_PINCTRL_FUNC_GRP(110, 1), 1315 + AMD_PINCTRL_FUNC_GRP(110, 2), 1316 + AMD_PINCTRL_FUNC_GRP(110, 3), 1317 + AMD_PINCTRL_FUNC_GRP(111, 0), 1318 + AMD_PINCTRL_FUNC_GRP(111, 1), 1319 + AMD_PINCTRL_FUNC_GRP(111, 2), 1320 + AMD_PINCTRL_FUNC_GRP(111, 3), 1321 + AMD_PINCTRL_FUNC_GRP(112, 0), 1322 + AMD_PINCTRL_FUNC_GRP(112, 1), 1323 + AMD_PINCTRL_FUNC_GRP(112, 2), 1324 + AMD_PINCTRL_FUNC_GRP(112, 3), 1325 + AMD_PINCTRL_FUNC_GRP(113, 0), 1326 + AMD_PINCTRL_FUNC_GRP(113, 1), 1327 + AMD_PINCTRL_FUNC_GRP(113, 2), 1328 + AMD_PINCTRL_FUNC_GRP(113, 3), 1329 + AMD_PINCTRL_FUNC_GRP(114, 0), 1330 + AMD_PINCTRL_FUNC_GRP(114, 1), 1331 + AMD_PINCTRL_FUNC_GRP(114, 2), 1332 + AMD_PINCTRL_FUNC_GRP(114, 3), 1333 + AMD_PINCTRL_FUNC_GRP(115, 0), 1334 + AMD_PINCTRL_FUNC_GRP(115, 1), 1335 + AMD_PINCTRL_FUNC_GRP(115, 2), 1336 + AMD_PINCTRL_FUNC_GRP(115, 3), 1337 + AMD_PINCTRL_FUNC_GRP(116, 0), 1338 + AMD_PINCTRL_FUNC_GRP(116, 1), 1339 + AMD_PINCTRL_FUNC_GRP(116, 2), 1340 + AMD_PINCTRL_FUNC_GRP(116, 3), 1341 + AMD_PINCTRL_FUNC_GRP(117, 0), 1342 + AMD_PINCTRL_FUNC_GRP(117, 1), 1343 + AMD_PINCTRL_FUNC_GRP(117, 2), 1344 + AMD_PINCTRL_FUNC_GRP(117, 3), 1345 + AMD_PINCTRL_FUNC_GRP(118, 0), 1346 + AMD_PINCTRL_FUNC_GRP(118, 1), 1347 + AMD_PINCTRL_FUNC_GRP(118, 2), 1348 + AMD_PINCTRL_FUNC_GRP(118, 3), 1349 + AMD_PINCTRL_FUNC_GRP(119, 0), 1350 + AMD_PINCTRL_FUNC_GRP(119, 1), 1351 + AMD_PINCTRL_FUNC_GRP(119, 2), 1352 + AMD_PINCTRL_FUNC_GRP(119, 3), 1353 + AMD_PINCTRL_FUNC_GRP(120, 0), 1354 + AMD_PINCTRL_FUNC_GRP(120, 1), 1355 + AMD_PINCTRL_FUNC_GRP(120, 2), 1356 + AMD_PINCTRL_FUNC_GRP(120, 3), 1357 + AMD_PINCTRL_FUNC_GRP(121, 0), 1358 + AMD_PINCTRL_FUNC_GRP(121, 1), 1359 + AMD_PINCTRL_FUNC_GRP(121, 2), 1360 + AMD_PINCTRL_FUNC_GRP(121, 3), 1361 + AMD_PINCTRL_FUNC_GRP(122, 0), 1362 + AMD_PINCTRL_FUNC_GRP(122, 1), 1363 + AMD_PINCTRL_FUNC_GRP(122, 2), 1364 + AMD_PINCTRL_FUNC_GRP(122, 3), 1365 + AMD_PINCTRL_FUNC_GRP(123, 0), 1366 + AMD_PINCTRL_FUNC_GRP(123, 1), 1367 + AMD_PINCTRL_FUNC_GRP(123, 2), 1368 + AMD_PINCTRL_FUNC_GRP(123, 3), 1369 + AMD_PINCTRL_FUNC_GRP(124, 0), 1370 + AMD_PINCTRL_FUNC_GRP(124, 1), 1371 + AMD_PINCTRL_FUNC_GRP(124, 2), 1372 + AMD_PINCTRL_FUNC_GRP(124, 3), 1373 + AMD_PINCTRL_FUNC_GRP(125, 0), 1374 + AMD_PINCTRL_FUNC_GRP(125, 1), 1375 + AMD_PINCTRL_FUNC_GRP(125, 2), 1376 + AMD_PINCTRL_FUNC_GRP(125, 3), 1377 + AMD_PINCTRL_FUNC_GRP(126, 0), 1378 + AMD_PINCTRL_FUNC_GRP(126, 1), 1379 + AMD_PINCTRL_FUNC_GRP(126, 2), 1380 + AMD_PINCTRL_FUNC_GRP(126, 3), 1381 + AMD_PINCTRL_FUNC_GRP(127, 0), 1382 + AMD_PINCTRL_FUNC_GRP(127, 1), 1383 + AMD_PINCTRL_FUNC_GRP(127, 2), 1384 + AMD_PINCTRL_FUNC_GRP(127, 3), 1385 + AMD_PINCTRL_FUNC_GRP(128, 0), 1386 + AMD_PINCTRL_FUNC_GRP(128, 1), 1387 + AMD_PINCTRL_FUNC_GRP(128, 2), 1388 + AMD_PINCTRL_FUNC_GRP(128, 3), 1389 + AMD_PINCTRL_FUNC_GRP(129, 0), 1390 + AMD_PINCTRL_FUNC_GRP(129, 1), 1391 + AMD_PINCTRL_FUNC_GRP(129, 2), 1392 + AMD_PINCTRL_FUNC_GRP(129, 3), 1393 + AMD_PINCTRL_FUNC_GRP(130, 0), 1394 + AMD_PINCTRL_FUNC_GRP(130, 1), 1395 + AMD_PINCTRL_FUNC_GRP(130, 2), 1396 + AMD_PINCTRL_FUNC_GRP(130, 3), 1397 + AMD_PINCTRL_FUNC_GRP(131, 0), 1398 + AMD_PINCTRL_FUNC_GRP(131, 1), 1399 + AMD_PINCTRL_FUNC_GRP(131, 2), 1400 + AMD_PINCTRL_FUNC_GRP(131, 3), 1401 + AMD_PINCTRL_FUNC_GRP(132, 0), 1402 + AMD_PINCTRL_FUNC_GRP(132, 1), 1403 + AMD_PINCTRL_FUNC_GRP(132, 2), 1404 + AMD_PINCTRL_FUNC_GRP(132, 3), 1405 + AMD_PINCTRL_FUNC_GRP(133, 0), 1406 + AMD_PINCTRL_FUNC_GRP(133, 1), 1407 + AMD_PINCTRL_FUNC_GRP(133, 2), 1408 + AMD_PINCTRL_FUNC_GRP(133, 3), 1409 + AMD_PINCTRL_FUNC_GRP(134, 0), 1410 + AMD_PINCTRL_FUNC_GRP(134, 1), 1411 + AMD_PINCTRL_FUNC_GRP(134, 2), 1412 + AMD_PINCTRL_FUNC_GRP(134, 3), 1413 + AMD_PINCTRL_FUNC_GRP(135, 0), 1414 + AMD_PINCTRL_FUNC_GRP(135, 1), 1415 + AMD_PINCTRL_FUNC_GRP(135, 2), 1416 + AMD_PINCTRL_FUNC_GRP(135, 3), 1417 + AMD_PINCTRL_FUNC_GRP(136, 0), 1418 + AMD_PINCTRL_FUNC_GRP(136, 1), 1419 + AMD_PINCTRL_FUNC_GRP(136, 2), 1420 + AMD_PINCTRL_FUNC_GRP(136, 3), 1421 + AMD_PINCTRL_FUNC_GRP(137, 0), 1422 + AMD_PINCTRL_FUNC_GRP(137, 1), 1423 + AMD_PINCTRL_FUNC_GRP(137, 2), 1424 + AMD_PINCTRL_FUNC_GRP(137, 3), 1425 + AMD_PINCTRL_FUNC_GRP(138, 0), 1426 + AMD_PINCTRL_FUNC_GRP(138, 1), 1427 + AMD_PINCTRL_FUNC_GRP(138, 2), 1428 + AMD_PINCTRL_FUNC_GRP(138, 3), 1429 + AMD_PINCTRL_FUNC_GRP(139, 0), 1430 + AMD_PINCTRL_FUNC_GRP(139, 1), 1431 + AMD_PINCTRL_FUNC_GRP(139, 2), 1432 + AMD_PINCTRL_FUNC_GRP(139, 3), 1433 + AMD_PINCTRL_FUNC_GRP(140, 0), 1434 + AMD_PINCTRL_FUNC_GRP(140, 1), 1435 + AMD_PINCTRL_FUNC_GRP(140, 2), 1436 + AMD_PINCTRL_FUNC_GRP(140, 3), 1437 + AMD_PINCTRL_FUNC_GRP(141, 0), 1438 + AMD_PINCTRL_FUNC_GRP(141, 1), 1439 + AMD_PINCTRL_FUNC_GRP(141, 2), 1440 + AMD_PINCTRL_FUNC_GRP(141, 3), 1441 + AMD_PINCTRL_FUNC_GRP(142, 0), 1442 + AMD_PINCTRL_FUNC_GRP(142, 1), 1443 + AMD_PINCTRL_FUNC_GRP(142, 2), 1444 + AMD_PINCTRL_FUNC_GRP(142, 3), 1445 + AMD_PINCTRL_FUNC_GRP(143, 0), 1446 + AMD_PINCTRL_FUNC_GRP(143, 1), 1447 + AMD_PINCTRL_FUNC_GRP(143, 2), 1448 + AMD_PINCTRL_FUNC_GRP(143, 3), 1449 + AMD_PINCTRL_FUNC_GRP(144, 0), 1450 + AMD_PINCTRL_FUNC_GRP(144, 1), 1451 + AMD_PINCTRL_FUNC_GRP(144, 2), 1452 + AMD_PINCTRL_FUNC_GRP(144, 3), 1453 + 1454 + PINCTRL_PINGROUP("i2c0", AMD_PINS(145, 146), 2), 1455 + PINCTRL_PINGROUP("i2c1", AMD_PINS(147, 148), 2), 1456 + PINCTRL_PINGROUP("i2c2", AMD_PINS(113, 114), 2), 1457 + PINCTRL_PINGROUP("i2c3", AMD_PINS(19, 20), 2), 1458 + PINCTRL_PINGROUP("uart0", AMD_PINS(135, 136, 137, 138, 139), 5), 1459 + PINCTRL_PINGROUP("uart1", AMD_PINS(140, 141, 142, 143, 144), 5), 1460 + }; 1461 + 1462 + #define AMD_PMUX_FUNC(_number) { \ 1463 + .name = "iomux_gpio_"#_number, \ 1464 + .groups = { \ 1465 + "IMX_F0_GPIO"#_number, "IMX_F1_GPIO"#_number, \ 1466 + "IMX_F2_GPIO"#_number, "IMX_F3_GPIO"#_number, \ 1467 + }, \ 1468 + .index = _number, \ 1469 + .ngroups = NSELECTS, \ 1470 + } 1471 + 1472 + static const struct amd_function pmx_functions[] = { 1473 + AMD_PMUX_FUNC(0), 1474 + AMD_PMUX_FUNC(1), 1475 + AMD_PMUX_FUNC(2), 1476 + AMD_PMUX_FUNC(3), 1477 + AMD_PMUX_FUNC(4), 1478 + AMD_PMUX_FUNC(5), 1479 + AMD_PMUX_FUNC(6), 1480 + AMD_PMUX_FUNC(7), 1481 + AMD_PMUX_FUNC(8), 1482 + AMD_PMUX_FUNC(9), 1483 + AMD_PMUX_FUNC(10), 1484 + AMD_PMUX_FUNC(11), 1485 + AMD_PMUX_FUNC(12), 1486 + AMD_PMUX_FUNC(13), 1487 + AMD_PMUX_FUNC(14), 1488 + AMD_PMUX_FUNC(15), 1489 + AMD_PMUX_FUNC(16), 1490 + AMD_PMUX_FUNC(17), 1491 + AMD_PMUX_FUNC(18), 1492 + AMD_PMUX_FUNC(19), 1493 + AMD_PMUX_FUNC(20), 1494 + AMD_PMUX_FUNC(21), 1495 + AMD_PMUX_FUNC(22), 1496 + AMD_PMUX_FUNC(23), 1497 + AMD_PMUX_FUNC(24), 1498 + AMD_PMUX_FUNC(25), 1499 + AMD_PMUX_FUNC(26), 1500 + AMD_PMUX_FUNC(27), 1501 + AMD_PMUX_FUNC(28), 1502 + AMD_PMUX_FUNC(29), 1503 + AMD_PMUX_FUNC(30), 1504 + AMD_PMUX_FUNC(31), 1505 + AMD_PMUX_FUNC(32), 1506 + AMD_PMUX_FUNC(33), 1507 + AMD_PMUX_FUNC(34), 1508 + AMD_PMUX_FUNC(35), 1509 + AMD_PMUX_FUNC(36), 1510 + AMD_PMUX_FUNC(37), 1511 + AMD_PMUX_FUNC(38), 1512 + AMD_PMUX_FUNC(39), 1513 + AMD_PMUX_FUNC(40), 1514 + AMD_PMUX_FUNC(41), 1515 + AMD_PMUX_FUNC(42), 1516 + AMD_PMUX_FUNC(43), 1517 + AMD_PMUX_FUNC(44), 1518 + AMD_PMUX_FUNC(45), 1519 + AMD_PMUX_FUNC(46), 1520 + AMD_PMUX_FUNC(47), 1521 + AMD_PMUX_FUNC(48), 1522 + AMD_PMUX_FUNC(49), 1523 + AMD_PMUX_FUNC(50), 1524 + AMD_PMUX_FUNC(51), 1525 + AMD_PMUX_FUNC(52), 1526 + AMD_PMUX_FUNC(53), 1527 + AMD_PMUX_FUNC(54), 1528 + AMD_PMUX_FUNC(55), 1529 + AMD_PMUX_FUNC(56), 1530 + AMD_PMUX_FUNC(57), 1531 + AMD_PMUX_FUNC(58), 1532 + AMD_PMUX_FUNC(59), 1533 + AMD_PMUX_FUNC(60), 1534 + AMD_PMUX_FUNC(61), 1535 + AMD_PMUX_FUNC(62), 1536 + AMD_PMUX_FUNC(64), 1537 + AMD_PMUX_FUNC(65), 1538 + AMD_PMUX_FUNC(66), 1539 + AMD_PMUX_FUNC(67), 1540 + AMD_PMUX_FUNC(68), 1541 + AMD_PMUX_FUNC(69), 1542 + AMD_PMUX_FUNC(70), 1543 + AMD_PMUX_FUNC(71), 1544 + AMD_PMUX_FUNC(72), 1545 + AMD_PMUX_FUNC(73), 1546 + AMD_PMUX_FUNC(74), 1547 + AMD_PMUX_FUNC(75), 1548 + AMD_PMUX_FUNC(76), 1549 + AMD_PMUX_FUNC(77), 1550 + AMD_PMUX_FUNC(78), 1551 + AMD_PMUX_FUNC(79), 1552 + AMD_PMUX_FUNC(80), 1553 + AMD_PMUX_FUNC(81), 1554 + AMD_PMUX_FUNC(82), 1555 + AMD_PMUX_FUNC(83), 1556 + AMD_PMUX_FUNC(84), 1557 + AMD_PMUX_FUNC(85), 1558 + AMD_PMUX_FUNC(86), 1559 + AMD_PMUX_FUNC(87), 1560 + AMD_PMUX_FUNC(88), 1561 + AMD_PMUX_FUNC(89), 1562 + AMD_PMUX_FUNC(90), 1563 + AMD_PMUX_FUNC(91), 1564 + AMD_PMUX_FUNC(92), 1565 + AMD_PMUX_FUNC(93), 1566 + AMD_PMUX_FUNC(94), 1567 + AMD_PMUX_FUNC(95), 1568 + AMD_PMUX_FUNC(96), 1569 + AMD_PMUX_FUNC(97), 1570 + AMD_PMUX_FUNC(98), 1571 + AMD_PMUX_FUNC(99), 1572 + AMD_PMUX_FUNC(100), 1573 + AMD_PMUX_FUNC(101), 1574 + AMD_PMUX_FUNC(102), 1575 + AMD_PMUX_FUNC(103), 1576 + AMD_PMUX_FUNC(104), 1577 + AMD_PMUX_FUNC(105), 1578 + AMD_PMUX_FUNC(106), 1579 + AMD_PMUX_FUNC(107), 1580 + AMD_PMUX_FUNC(108), 1581 + AMD_PMUX_FUNC(109), 1582 + AMD_PMUX_FUNC(110), 1583 + AMD_PMUX_FUNC(111), 1584 + AMD_PMUX_FUNC(112), 1585 + AMD_PMUX_FUNC(113), 1586 + AMD_PMUX_FUNC(114), 1587 + AMD_PMUX_FUNC(115), 1588 + AMD_PMUX_FUNC(116), 1589 + AMD_PMUX_FUNC(117), 1590 + AMD_PMUX_FUNC(118), 1591 + AMD_PMUX_FUNC(119), 1592 + AMD_PMUX_FUNC(120), 1593 + AMD_PMUX_FUNC(121), 1594 + AMD_PMUX_FUNC(122), 1595 + AMD_PMUX_FUNC(123), 1596 + AMD_PMUX_FUNC(124), 1597 + AMD_PMUX_FUNC(125), 1598 + AMD_PMUX_FUNC(126), 1599 + AMD_PMUX_FUNC(127), 1600 + AMD_PMUX_FUNC(128), 1601 + AMD_PMUX_FUNC(129), 1602 + AMD_PMUX_FUNC(130), 1603 + AMD_PMUX_FUNC(131), 1604 + AMD_PMUX_FUNC(132), 1605 + AMD_PMUX_FUNC(133), 1606 + AMD_PMUX_FUNC(134), 1607 + AMD_PMUX_FUNC(135), 1608 + AMD_PMUX_FUNC(136), 1609 + AMD_PMUX_FUNC(137), 1610 + AMD_PMUX_FUNC(138), 1611 + AMD_PMUX_FUNC(139), 1612 + AMD_PMUX_FUNC(140), 1613 + AMD_PMUX_FUNC(141), 1614 + AMD_PMUX_FUNC(142), 1615 + AMD_PMUX_FUNC(143), 1616 + AMD_PMUX_FUNC(144), 331 1617 }; 332 1618 333 1619 #endif
+1 -6
drivers/pinctrl/pinctrl-at91-pio4.c
··· 237 237 BIT(pin->line)); 238 238 } 239 239 240 - #ifdef CONFIG_PM_SLEEP 241 - 242 240 static int atmel_gpio_irq_set_wake(struct irq_data *d, unsigned int on) 243 241 { 244 242 struct atmel_pioctrl *atmel_pioctrl = irq_data_get_irq_chip_data(d); ··· 253 255 254 256 return 0; 255 257 } 256 - #else 257 - #define atmel_gpio_irq_set_wake NULL 258 - #endif /* CONFIG_PM_SLEEP */ 259 258 260 259 static struct irq_chip atmel_gpio_irq_chip = { 261 260 .name = "GPIO", ··· 260 265 .irq_mask = atmel_gpio_irq_mask, 261 266 .irq_unmask = atmel_gpio_irq_unmask, 262 267 .irq_set_type = atmel_gpio_irq_set_type, 263 - .irq_set_wake = atmel_gpio_irq_set_wake, 268 + .irq_set_wake = pm_sleep_ptr(atmel_gpio_irq_set_wake), 264 269 }; 265 270 266 271 static int atmel_gpio_to_irq(struct gpio_chip *chip, unsigned int offset)
+2 -8
drivers/pinctrl/pinctrl-at91.c
··· 1615 1615 /* the interrupt is already cleared before by reading ISR */ 1616 1616 } 1617 1617 1618 - #ifdef CONFIG_PM 1619 - 1620 1618 static u32 wakeups[MAX_GPIO_BANKS]; 1621 1619 static u32 backups[MAX_GPIO_BANKS]; 1622 1620 ··· 1681 1683 } 1682 1684 } 1683 1685 1684 - #else 1685 - #define gpio_irq_set_wake NULL 1686 - #endif /* CONFIG_PM */ 1687 - 1688 1686 static void gpio_irq_handler(struct irq_desc *desc) 1689 1687 { 1690 1688 struct irq_chip *chip = irq_desc_get_chip(desc); ··· 1735 1741 gpio_irqchip->irq_disable = gpio_irq_mask; 1736 1742 gpio_irqchip->irq_mask = gpio_irq_mask; 1737 1743 gpio_irqchip->irq_unmask = gpio_irq_unmask; 1738 - gpio_irqchip->irq_set_wake = gpio_irq_set_wake; 1744 + gpio_irqchip->irq_set_wake = pm_ptr(gpio_irq_set_wake); 1739 1745 gpio_irqchip->irq_set_type = at91_gpio->ops->irq_type; 1740 1746 1741 1747 /* Disable irqs of this PIO controller */ 1742 1748 writel_relaxed(~0, at91_gpio->regbase + PIO_IDR); 1743 1749 1744 1750 /* 1745 - * Let the generic code handle this edge IRQ, the the chained 1751 + * Let the generic code handle this edge IRQ, the chained 1746 1752 * handler will perform the actual work of handling the parent 1747 1753 * interrupt. 1748 1754 */
+11 -3
drivers/pinctrl/pinctrl-axp209.c
··· 73 73 PINCTRL_PIN(2, "GPIO2"), 74 74 }; 75 75 76 - static const struct pinctrl_pin_desc axp813_pins[] = { 76 + static const struct pinctrl_pin_desc axp22x_pins[] = { 77 77 PINCTRL_PIN(0, "GPIO0"), 78 78 PINCTRL_PIN(1, "GPIO1"), 79 79 }; ··· 87 87 .adc_mux = AXP20X_MUX_ADC, 88 88 }; 89 89 90 + static const struct axp20x_pctrl_desc axp22x_data = { 91 + .pins = axp22x_pins, 92 + .npins = ARRAY_SIZE(axp22x_pins), 93 + .ldo_mask = BIT(0) | BIT(1), 94 + .gpio_status_offset = 0, 95 + }; 96 + 90 97 static const struct axp20x_pctrl_desc axp813_data = { 91 - .pins = axp813_pins, 92 - .npins = ARRAY_SIZE(axp813_pins), 98 + .pins = axp22x_pins, 99 + .npins = ARRAY_SIZE(axp22x_pins), 93 100 .ldo_mask = BIT(0) | BIT(1), 94 101 .adc_mask = BIT(0), 95 102 .gpio_status_offset = 0, ··· 395 388 396 389 static const struct of_device_id axp20x_pctl_match[] = { 397 390 { .compatible = "x-powers,axp209-gpio", .data = &axp20x_data, }, 391 + { .compatible = "x-powers,axp221-gpio", .data = &axp22x_data, }, 398 392 { .compatible = "x-powers,axp813-gpio", .data = &axp813_data, }, 399 393 { } 400 394 };
+40 -24
drivers/pinctrl/pinctrl-ingenic.c
··· 21 21 #include <linux/pinctrl/pinconf-generic.h> 22 22 #include <linux/platform_device.h> 23 23 #include <linux/regmap.h> 24 + #include <linux/seq_file.h> 24 25 #include <linux/slab.h> 25 26 26 27 #include "core.h" ··· 136 135 struct ingenic_gpio_chip { 137 136 struct ingenic_pinctrl *jzpc; 138 137 struct gpio_chip gc; 139 - struct irq_chip irq_chip; 140 138 unsigned int irq, reg_base; 141 139 }; 142 140 ··· 3393 3393 { 3394 3394 struct gpio_chip *gc = irq_data_get_irq_chip_data(irqd); 3395 3395 struct ingenic_gpio_chip *jzgc = gpiochip_get_data(gc); 3396 - int irq = irqd->hwirq; 3396 + irq_hw_number_t irq = irqd_to_hwirq(irqd); 3397 3397 3398 3398 if (is_soc_or_above(jzgc->jzpc, ID_JZ4740)) 3399 3399 ingenic_gpio_set_bit(jzgc, GPIO_MSK, irq, true); ··· 3405 3405 { 3406 3406 struct gpio_chip *gc = irq_data_get_irq_chip_data(irqd); 3407 3407 struct ingenic_gpio_chip *jzgc = gpiochip_get_data(gc); 3408 - int irq = irqd->hwirq; 3408 + irq_hw_number_t irq = irqd_to_hwirq(irqd); 3409 3409 3410 3410 if (is_soc_or_above(jzgc->jzpc, ID_JZ4740)) 3411 3411 ingenic_gpio_set_bit(jzgc, GPIO_MSK, irq, false); ··· 3417 3417 { 3418 3418 struct gpio_chip *gc = irq_data_get_irq_chip_data(irqd); 3419 3419 struct ingenic_gpio_chip *jzgc = gpiochip_get_data(gc); 3420 - int irq = irqd->hwirq; 3420 + irq_hw_number_t irq = irqd_to_hwirq(irqd); 3421 + 3422 + gpiochip_enable_irq(gc, irq); 3421 3423 3422 3424 if (is_soc_or_above(jzgc->jzpc, ID_JZ4770)) 3423 3425 ingenic_gpio_set_bit(jzgc, JZ4770_GPIO_INT, irq, true); ··· 3435 3433 { 3436 3434 struct gpio_chip *gc = irq_data_get_irq_chip_data(irqd); 3437 3435 struct ingenic_gpio_chip *jzgc = gpiochip_get_data(gc); 3438 - int irq = irqd->hwirq; 3436 + irq_hw_number_t irq = irqd_to_hwirq(irqd); 3439 3437 3440 3438 ingenic_gpio_irq_mask(irqd); 3441 3439 ··· 3445 3443 ingenic_gpio_set_bit(jzgc, JZ4740_GPIO_SELECT, irq, false); 3446 3444 else 3447 3445 ingenic_gpio_set_bit(jzgc, JZ4730_GPIO_GPIER, irq, false); 3446 + 3447 + gpiochip_disable_irq(gc, irq); 3448 3448 } 3449 3449 3450 3450 static void ingenic_gpio_irq_ack(struct irq_data *irqd) 3451 3451 { 3452 3452 struct gpio_chip *gc = irq_data_get_irq_chip_data(irqd); 3453 3453 struct ingenic_gpio_chip *jzgc = gpiochip_get_data(gc); 3454 - int irq = irqd->hwirq; 3454 + irq_hw_number_t irq = irqd_to_hwirq(irqd); 3455 3455 bool high; 3456 3456 3457 3457 if ((irqd_get_trigger_type(irqd) == IRQ_TYPE_EDGE_BOTH) && ··· 3481 3477 { 3482 3478 struct gpio_chip *gc = irq_data_get_irq_chip_data(irqd); 3483 3479 struct ingenic_gpio_chip *jzgc = gpiochip_get_data(gc); 3480 + irq_hw_number_t irq = irqd_to_hwirq(irqd); 3484 3481 3485 3482 switch (type) { 3486 3483 case IRQ_TYPE_EDGE_BOTH: ··· 3503 3498 * best we can do is to set up a single-edge interrupt and then 3504 3499 * switch to the opposing edge when ACKing the interrupt. 3505 3500 */ 3506 - bool high = ingenic_gpio_get_value(jzgc, irqd->hwirq); 3501 + bool high = ingenic_gpio_get_value(jzgc, irq); 3507 3502 3508 3503 type = high ? IRQ_TYPE_LEVEL_LOW : IRQ_TYPE_LEVEL_HIGH; 3509 3504 } 3510 3505 3511 - irq_set_type(jzgc, irqd->hwirq, type); 3506 + irq_set_type(jzgc, irq, type); 3512 3507 return 0; 3513 3508 } 3514 3509 ··· 3673 3668 static int ingenic_gpio_irq_request(struct irq_data *data) 3674 3669 { 3675 3670 struct gpio_chip *gpio_chip = irq_data_get_irq_chip_data(data); 3671 + irq_hw_number_t irq = irqd_to_hwirq(data); 3676 3672 int ret; 3677 3673 3678 - ret = ingenic_gpio_direction_input(gpio_chip, data->hwirq); 3674 + ret = ingenic_gpio_direction_input(gpio_chip, irq); 3679 3675 if (ret) 3680 3676 return ret; 3681 3677 3682 - return gpiochip_reqres_irq(gpio_chip, data->hwirq); 3678 + return gpiochip_reqres_irq(gpio_chip, irq); 3683 3679 } 3684 3680 3685 3681 static void ingenic_gpio_irq_release(struct irq_data *data) 3686 3682 { 3687 3683 struct gpio_chip *gpio_chip = irq_data_get_irq_chip_data(data); 3684 + irq_hw_number_t irq = irqd_to_hwirq(data); 3688 3685 3689 - return gpiochip_relres_irq(gpio_chip, data->hwirq); 3686 + return gpiochip_relres_irq(gpio_chip, irq); 3690 3687 } 3688 + 3689 + static void ingenic_gpio_irq_print_chip(struct irq_data *data, struct seq_file *p) 3690 + { 3691 + struct gpio_chip *gpio_chip = irq_data_get_irq_chip_data(data); 3692 + 3693 + seq_printf(p, "%s", gpio_chip->label); 3694 + } 3695 + 3696 + static const struct irq_chip ingenic_gpio_irqchip = { 3697 + .irq_enable = ingenic_gpio_irq_enable, 3698 + .irq_disable = ingenic_gpio_irq_disable, 3699 + .irq_unmask = ingenic_gpio_irq_unmask, 3700 + .irq_mask = ingenic_gpio_irq_mask, 3701 + .irq_ack = ingenic_gpio_irq_ack, 3702 + .irq_set_type = ingenic_gpio_irq_set_type, 3703 + .irq_set_wake = ingenic_gpio_irq_set_wake, 3704 + .irq_request_resources = ingenic_gpio_irq_request, 3705 + .irq_release_resources = ingenic_gpio_irq_release, 3706 + .irq_print_chip = ingenic_gpio_irq_print_chip, 3707 + .flags = IRQCHIP_MASK_ON_SUSPEND | IRQCHIP_IMMUTABLE, 3708 + }; 3691 3709 3692 3710 static int ingenic_pinmux_set_pin_fn(struct ingenic_pinctrl *jzpc, 3693 3711 int pin, int func) ··· 4200 4172 if (!jzgc->irq) 4201 4173 return -EINVAL; 4202 4174 4203 - jzgc->irq_chip.name = jzgc->gc.label; 4204 - jzgc->irq_chip.irq_enable = ingenic_gpio_irq_enable; 4205 - jzgc->irq_chip.irq_disable = ingenic_gpio_irq_disable; 4206 - jzgc->irq_chip.irq_unmask = ingenic_gpio_irq_unmask; 4207 - jzgc->irq_chip.irq_mask = ingenic_gpio_irq_mask; 4208 - jzgc->irq_chip.irq_ack = ingenic_gpio_irq_ack; 4209 - jzgc->irq_chip.irq_set_type = ingenic_gpio_irq_set_type; 4210 - jzgc->irq_chip.irq_set_wake = ingenic_gpio_irq_set_wake; 4211 - jzgc->irq_chip.irq_request_resources = ingenic_gpio_irq_request; 4212 - jzgc->irq_chip.irq_release_resources = ingenic_gpio_irq_release; 4213 - jzgc->irq_chip.flags = IRQCHIP_MASK_ON_SUSPEND; 4214 - 4215 4175 girq = &jzgc->gc.irq; 4216 - girq->chip = &jzgc->irq_chip; 4176 + gpio_irq_chip_set_chip(girq, &ingenic_gpio_irqchip); 4217 4177 girq->parent_handler = ingenic_gpio_irq_handler; 4218 4178 girq->num_parents = 1; 4219 4179 girq->parents = devm_kcalloc(dev, 1, sizeof(*girq->parents),
+3 -1
drivers/pinctrl/pinctrl-ocelot.c
··· 1944 1944 { .compatible = "microchip,lan966x-pinctrl", .data = &lan966x_desc }, 1945 1945 {}, 1946 1946 }; 1947 + MODULE_DEVICE_TABLE(of, ocelot_pinctrl_of_match); 1947 1948 1948 1949 static struct regmap *ocelot_pinctrl_create_pincfg(struct platform_device *pdev, 1949 1950 const struct ocelot_pinctrl *info) ··· 2051 2050 }, 2052 2051 .probe = ocelot_pinctrl_probe, 2053 2052 }; 2054 - builtin_platform_driver(ocelot_pinctrl_driver); 2053 + module_platform_driver(ocelot_pinctrl_driver); 2054 + MODULE_LICENSE("Dual MIT/GPL");
+5
drivers/pinctrl/pinctrl-starfive.c
··· 207 207 void __iomem *base; 208 208 void __iomem *padctl; 209 209 struct pinctrl_dev *pctl; 210 + struct mutex mutex; /* serialize adding groups and functions */ 210 211 }; 211 212 212 213 static inline unsigned int starfive_pin_to_gpio(const struct starfive_pinctrl *sfp, ··· 523 522 524 523 nmaps = 0; 525 524 ngroups = 0; 525 + mutex_lock(&sfp->mutex); 526 526 for_each_child_of_node(np, child) { 527 527 int npins; 528 528 int i; ··· 617 615 618 616 *maps = map; 619 617 *num_maps = nmaps; 618 + mutex_unlock(&sfp->mutex); 620 619 return 0; 621 620 622 621 put_child: 623 622 of_node_put(child); 624 623 free_map: 625 624 pinctrl_utils_free_map(pctldev, map, nmaps); 625 + mutex_unlock(&sfp->mutex); 626 626 return ret; 627 627 } 628 628 ··· 1271 1267 platform_set_drvdata(pdev, sfp); 1272 1268 sfp->gc.parent = dev; 1273 1269 raw_spin_lock_init(&sfp->lock); 1270 + mutex_init(&sfp->mutex); 1274 1271 1275 1272 ret = devm_pinctrl_register_and_init(dev, &starfive_desc, sfp, &sfp->pctl); 1276 1273 if (ret)
+11
drivers/pinctrl/pinctrl-zynqmp.c
··· 163 163 * @num_groups: Number of function groups. 164 164 * 165 165 * Get function's group count and group names. 166 + * 167 + * Return: 0 166 168 */ 167 169 static int zynqmp_pmux_get_function_groups(struct pinctrl_dev *pctldev, 168 170 unsigned int selector, ··· 412 410 413 411 break; 414 412 case PIN_CONFIG_BIAS_HIGH_IMPEDANCE: 413 + param = PM_PINCTRL_CONFIG_TRI_STATE; 414 + arg = PM_PINCTRL_TRI_STATE_ENABLE; 415 + ret = zynqmp_pm_pinctrl_set_config(pin, param, arg); 416 + break; 415 417 case PIN_CONFIG_MODE_LOW_POWER: 416 418 /* 417 419 * These cases are mentioned in dts but configurable ··· 423 417 * boot time warnings as of now. 424 418 */ 425 419 ret = 0; 420 + break; 421 + case PIN_CONFIG_OUTPUT_ENABLE: 422 + param = PM_PINCTRL_CONFIG_TRI_STATE; 423 + arg = PM_PINCTRL_TRI_STATE_DISABLE; 424 + ret = zynqmp_pm_pinctrl_set_config(pin, param, arg); 426 425 break; 427 426 default: 428 427 dev_warn(pctldev->dev,
+18 -1
drivers/pinctrl/qcom/Kconfig
··· 113 113 This is the pinctrl, pinmux, pinconf and gpiolib driver for the 114 114 Qualcomm TLMM block found in the Qualcomm 8974 platform. 115 115 116 + config PINCTRL_MSM8909 117 + tristate "Qualcomm 8909 pin controller driver" 118 + depends on OF 119 + depends on PINCTRL_MSM 120 + help 121 + This is the pinctrl, pinmux, pinconf and gpiolib driver for the 122 + Qualcomm TLMM block found on the Qualcomm MSM8909 platform. 123 + 116 124 config PINCTRL_MSM8916 117 125 tristate "Qualcomm 8916 pin controller driver" 118 126 depends on OF ··· 328 320 Qualcomm Technologies Inc TLMM block found on the Qualcomm 329 321 Technologies Inc SM6350 platform. 330 322 323 + config PINCTRL_SM6375 324 + tristate "Qualcomm Technologies Inc SM6375 pin controller driver" 325 + depends on GPIOLIB && OF 326 + depends on PINCTRL_MSM 327 + help 328 + This is the pinctrl, pinmux, pinconf and gpiolib driver for the 329 + Qualcomm Technologies Inc TLMM block found on the Qualcomm 330 + Technologies Inc SM6375 platform. 331 + 331 332 config PINCTRL_SDX65 332 333 tristate "Qualcomm Technologies Inc SDX65 pin controller driver" 333 334 depends on GPIOLIB && OF ··· 384 367 config PINCTRL_SM8450 385 368 tristate "Qualcomm Technologies Inc SM8450 pin controller driver" 386 369 depends on GPIOLIB && OF 387 - select PINCTRL_MSM 370 + depends on PINCTRL_MSM 388 371 help 389 372 This is the pinctrl, pinmux, pinconf and gpiolib driver for the 390 373 Qualcomm Technologies Inc TLMM block found on the Qualcomm
+2
drivers/pinctrl/qcom/Makefile
··· 11 11 obj-$(CONFIG_PINCTRL_MSM8660) += pinctrl-msm8660.o 12 12 obj-$(CONFIG_PINCTRL_MSM8960) += pinctrl-msm8960.o 13 13 obj-$(CONFIG_PINCTRL_MSM8X74) += pinctrl-msm8x74.o 14 + obj-$(CONFIG_PINCTRL_MSM8909) += pinctrl-msm8909.o 14 15 obj-$(CONFIG_PINCTRL_MSM8916) += pinctrl-msm8916.o 15 16 obj-$(CONFIG_PINCTRL_MSM8953) += pinctrl-msm8953.o 16 17 obj-$(CONFIG_PINCTRL_MSM8976) += pinctrl-msm8976.o ··· 38 37 obj-$(CONFIG_PINCTRL_SM6115) += pinctrl-sm6115.o 39 38 obj-$(CONFIG_PINCTRL_SM6125) += pinctrl-sm6125.o 40 39 obj-$(CONFIG_PINCTRL_SM6350) += pinctrl-sm6350.o 40 + obj-$(CONFIG_PINCTRL_SM6375) += pinctrl-sm6375.o 41 41 obj-$(CONFIG_PINCTRL_SDX65) += pinctrl-sdx65.o 42 42 obj-$(CONFIG_PINCTRL_SM8150) += pinctrl-sm8150.o 43 43 obj-$(CONFIG_PINCTRL_SM8250) += pinctrl-sm8250.o
+1 -1
drivers/pinctrl/qcom/pinctrl-lpass-lpi.c
··· 401 401 return dev_err_probe(dev, PTR_ERR(pctrl->slew_base), 402 402 "Slew resource not provided\n"); 403 403 404 - if (data->is_clk_optional) 404 + if (of_property_read_bool(dev->of_node, "qcom,adsp-bypass-mode")) 405 405 ret = devm_clk_bulk_get_optional(dev, MAX_LPI_NUM_CLKS, pctrl->clks); 406 406 else 407 407 ret = devm_clk_bulk_get(dev, MAX_LPI_NUM_CLKS, pctrl->clks);
-1
drivers/pinctrl/qcom/pinctrl-lpass-lpi.h
··· 77 77 int ngroups; 78 78 const struct lpi_function *functions; 79 79 int nfunctions; 80 - bool is_clk_optional; 81 80 }; 82 81 83 82 int lpi_pinctrl_probe(struct platform_device *pdev);
+956
drivers/pinctrl/qcom/pinctrl-msm8909.c
··· 1 + // SPDX-License-Identifier: GPL-2.0-only 2 + /* 3 + * Copyright (c) 2016-2018, The Linux Foundation. All rights reserved. 4 + * Copyright (C) 2022, Kernkonzept GmbH. 5 + */ 6 + 7 + #include <linux/module.h> 8 + #include <linux/of.h> 9 + #include <linux/platform_device.h> 10 + #include <linux/pinctrl/pinctrl.h> 11 + 12 + #include "pinctrl-msm.h" 13 + 14 + #define FUNCTION(fname) \ 15 + [msm_mux_##fname] = { \ 16 + .name = #fname, \ 17 + .groups = fname##_groups, \ 18 + .ngroups = ARRAY_SIZE(fname##_groups), \ 19 + } 20 + 21 + #define REG_SIZE 0x1000 22 + #define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7, f8, f9) \ 23 + { \ 24 + .name = "gpio" #id, \ 25 + .pins = gpio##id##_pins, \ 26 + .npins = ARRAY_SIZE(gpio##id##_pins), \ 27 + .funcs = (int[]){ \ 28 + msm_mux_gpio, \ 29 + msm_mux_##f1, \ 30 + msm_mux_##f2, \ 31 + msm_mux_##f3, \ 32 + msm_mux_##f4, \ 33 + msm_mux_##f5, \ 34 + msm_mux_##f6, \ 35 + msm_mux_##f7, \ 36 + msm_mux_##f8, \ 37 + msm_mux_##f9, \ 38 + }, \ 39 + .nfuncs = 10, \ 40 + .ctl_reg = REG_SIZE * id, \ 41 + .io_reg = 0x4 + REG_SIZE * id, \ 42 + .intr_cfg_reg = 0x8 + REG_SIZE * id, \ 43 + .intr_status_reg = 0xc + REG_SIZE * id, \ 44 + .intr_target_reg = 0x8 + REG_SIZE * id, \ 45 + .mux_bit = 2, \ 46 + .pull_bit = 0, \ 47 + .drv_bit = 6, \ 48 + .oe_bit = 9, \ 49 + .in_bit = 0, \ 50 + .out_bit = 1, \ 51 + .intr_enable_bit = 0, \ 52 + .intr_status_bit = 0, \ 53 + .intr_target_bit = 5, \ 54 + .intr_target_kpss_val = 4, \ 55 + .intr_raw_status_bit = 4, \ 56 + .intr_polarity_bit = 1, \ 57 + .intr_detection_bit = 2, \ 58 + .intr_detection_width = 2, \ 59 + } 60 + 61 + #define SDC_QDSD_PINGROUP(pg_name, ctl, pull, drv) \ 62 + { \ 63 + .name = #pg_name, \ 64 + .pins = pg_name##_pins, \ 65 + .npins = ARRAY_SIZE(pg_name##_pins), \ 66 + .ctl_reg = ctl, \ 67 + .io_reg = 0, \ 68 + .intr_cfg_reg = 0, \ 69 + .intr_status_reg = 0, \ 70 + .intr_target_reg = 0, \ 71 + .mux_bit = -1, \ 72 + .pull_bit = pull, \ 73 + .drv_bit = drv, \ 74 + .oe_bit = -1, \ 75 + .in_bit = -1, \ 76 + .out_bit = -1, \ 77 + .intr_enable_bit = -1, \ 78 + .intr_status_bit = -1, \ 79 + .intr_target_bit = -1, \ 80 + .intr_raw_status_bit = -1, \ 81 + .intr_polarity_bit = -1, \ 82 + .intr_detection_bit = -1, \ 83 + .intr_detection_width = -1, \ 84 + } 85 + static const struct pinctrl_pin_desc msm8909_pins[] = { 86 + PINCTRL_PIN(0, "GPIO_0"), 87 + PINCTRL_PIN(1, "GPIO_1"), 88 + PINCTRL_PIN(2, "GPIO_2"), 89 + PINCTRL_PIN(3, "GPIO_3"), 90 + PINCTRL_PIN(4, "GPIO_4"), 91 + PINCTRL_PIN(5, "GPIO_5"), 92 + PINCTRL_PIN(6, "GPIO_6"), 93 + PINCTRL_PIN(7, "GPIO_7"), 94 + PINCTRL_PIN(8, "GPIO_8"), 95 + PINCTRL_PIN(9, "GPIO_9"), 96 + PINCTRL_PIN(10, "GPIO_10"), 97 + PINCTRL_PIN(11, "GPIO_11"), 98 + PINCTRL_PIN(12, "GPIO_12"), 99 + PINCTRL_PIN(13, "GPIO_13"), 100 + PINCTRL_PIN(14, "GPIO_14"), 101 + PINCTRL_PIN(15, "GPIO_15"), 102 + PINCTRL_PIN(16, "GPIO_16"), 103 + PINCTRL_PIN(17, "GPIO_17"), 104 + PINCTRL_PIN(18, "GPIO_18"), 105 + PINCTRL_PIN(19, "GPIO_19"), 106 + PINCTRL_PIN(20, "GPIO_20"), 107 + PINCTRL_PIN(21, "GPIO_21"), 108 + PINCTRL_PIN(22, "GPIO_22"), 109 + PINCTRL_PIN(23, "GPIO_23"), 110 + PINCTRL_PIN(24, "GPIO_24"), 111 + PINCTRL_PIN(25, "GPIO_25"), 112 + PINCTRL_PIN(26, "GPIO_26"), 113 + PINCTRL_PIN(27, "GPIO_27"), 114 + PINCTRL_PIN(28, "GPIO_28"), 115 + PINCTRL_PIN(29, "GPIO_29"), 116 + PINCTRL_PIN(30, "GPIO_30"), 117 + PINCTRL_PIN(31, "GPIO_31"), 118 + PINCTRL_PIN(32, "GPIO_32"), 119 + PINCTRL_PIN(33, "GPIO_33"), 120 + PINCTRL_PIN(34, "GPIO_34"), 121 + PINCTRL_PIN(35, "GPIO_35"), 122 + PINCTRL_PIN(36, "GPIO_36"), 123 + PINCTRL_PIN(37, "GPIO_37"), 124 + PINCTRL_PIN(38, "GPIO_38"), 125 + PINCTRL_PIN(39, "GPIO_39"), 126 + PINCTRL_PIN(40, "GPIO_40"), 127 + PINCTRL_PIN(41, "GPIO_41"), 128 + PINCTRL_PIN(42, "GPIO_42"), 129 + PINCTRL_PIN(43, "GPIO_43"), 130 + PINCTRL_PIN(44, "GPIO_44"), 131 + PINCTRL_PIN(45, "GPIO_45"), 132 + PINCTRL_PIN(46, "GPIO_46"), 133 + PINCTRL_PIN(47, "GPIO_47"), 134 + PINCTRL_PIN(48, "GPIO_48"), 135 + PINCTRL_PIN(49, "GPIO_49"), 136 + PINCTRL_PIN(50, "GPIO_50"), 137 + PINCTRL_PIN(51, "GPIO_51"), 138 + PINCTRL_PIN(52, "GPIO_52"), 139 + PINCTRL_PIN(53, "GPIO_53"), 140 + PINCTRL_PIN(54, "GPIO_54"), 141 + PINCTRL_PIN(55, "GPIO_55"), 142 + PINCTRL_PIN(56, "GPIO_56"), 143 + PINCTRL_PIN(57, "GPIO_57"), 144 + PINCTRL_PIN(58, "GPIO_58"), 145 + PINCTRL_PIN(59, "GPIO_59"), 146 + PINCTRL_PIN(60, "GPIO_60"), 147 + PINCTRL_PIN(61, "GPIO_61"), 148 + PINCTRL_PIN(62, "GPIO_62"), 149 + PINCTRL_PIN(63, "GPIO_63"), 150 + PINCTRL_PIN(64, "GPIO_64"), 151 + PINCTRL_PIN(65, "GPIO_65"), 152 + PINCTRL_PIN(66, "GPIO_66"), 153 + PINCTRL_PIN(67, "GPIO_67"), 154 + PINCTRL_PIN(68, "GPIO_68"), 155 + PINCTRL_PIN(69, "GPIO_69"), 156 + PINCTRL_PIN(70, "GPIO_70"), 157 + PINCTRL_PIN(71, "GPIO_71"), 158 + PINCTRL_PIN(72, "GPIO_72"), 159 + PINCTRL_PIN(73, "GPIO_73"), 160 + PINCTRL_PIN(74, "GPIO_74"), 161 + PINCTRL_PIN(75, "GPIO_75"), 162 + PINCTRL_PIN(76, "GPIO_76"), 163 + PINCTRL_PIN(77, "GPIO_77"), 164 + PINCTRL_PIN(78, "GPIO_78"), 165 + PINCTRL_PIN(79, "GPIO_79"), 166 + PINCTRL_PIN(80, "GPIO_80"), 167 + PINCTRL_PIN(81, "GPIO_81"), 168 + PINCTRL_PIN(82, "GPIO_82"), 169 + PINCTRL_PIN(83, "GPIO_83"), 170 + PINCTRL_PIN(84, "GPIO_84"), 171 + PINCTRL_PIN(85, "GPIO_85"), 172 + PINCTRL_PIN(86, "GPIO_86"), 173 + PINCTRL_PIN(87, "GPIO_87"), 174 + PINCTRL_PIN(88, "GPIO_88"), 175 + PINCTRL_PIN(89, "GPIO_89"), 176 + PINCTRL_PIN(90, "GPIO_90"), 177 + PINCTRL_PIN(91, "GPIO_91"), 178 + PINCTRL_PIN(92, "GPIO_92"), 179 + PINCTRL_PIN(93, "GPIO_93"), 180 + PINCTRL_PIN(94, "GPIO_94"), 181 + PINCTRL_PIN(95, "GPIO_95"), 182 + PINCTRL_PIN(96, "GPIO_96"), 183 + PINCTRL_PIN(97, "GPIO_97"), 184 + PINCTRL_PIN(98, "GPIO_98"), 185 + PINCTRL_PIN(99, "GPIO_99"), 186 + PINCTRL_PIN(100, "GPIO_100"), 187 + PINCTRL_PIN(101, "GPIO_101"), 188 + PINCTRL_PIN(102, "GPIO_102"), 189 + PINCTRL_PIN(103, "GPIO_103"), 190 + PINCTRL_PIN(104, "GPIO_104"), 191 + PINCTRL_PIN(105, "GPIO_105"), 192 + PINCTRL_PIN(106, "GPIO_106"), 193 + PINCTRL_PIN(107, "GPIO_107"), 194 + PINCTRL_PIN(108, "GPIO_108"), 195 + PINCTRL_PIN(109, "GPIO_109"), 196 + PINCTRL_PIN(110, "GPIO_110"), 197 + PINCTRL_PIN(111, "GPIO_111"), 198 + PINCTRL_PIN(112, "GPIO_112"), 199 + PINCTRL_PIN(113, "SDC1_CLK"), 200 + PINCTRL_PIN(114, "SDC1_CMD"), 201 + PINCTRL_PIN(115, "SDC1_DATA"), 202 + PINCTRL_PIN(116, "SDC2_CLK"), 203 + PINCTRL_PIN(117, "SDC2_CMD"), 204 + PINCTRL_PIN(118, "SDC2_DATA"), 205 + PINCTRL_PIN(119, "QDSD_CLK"), 206 + PINCTRL_PIN(120, "QDSD_CMD"), 207 + PINCTRL_PIN(121, "QDSD_DATA0"), 208 + PINCTRL_PIN(122, "QDSD_DATA1"), 209 + PINCTRL_PIN(123, "QDSD_DATA2"), 210 + PINCTRL_PIN(124, "QDSD_DATA3"), 211 + }; 212 + 213 + #define DECLARE_MSM_GPIO_PINS(pin) \ 214 + static const unsigned int gpio##pin##_pins[] = { pin } 215 + DECLARE_MSM_GPIO_PINS(0); 216 + DECLARE_MSM_GPIO_PINS(1); 217 + DECLARE_MSM_GPIO_PINS(2); 218 + DECLARE_MSM_GPIO_PINS(3); 219 + DECLARE_MSM_GPIO_PINS(4); 220 + DECLARE_MSM_GPIO_PINS(5); 221 + DECLARE_MSM_GPIO_PINS(6); 222 + DECLARE_MSM_GPIO_PINS(7); 223 + DECLARE_MSM_GPIO_PINS(8); 224 + DECLARE_MSM_GPIO_PINS(9); 225 + DECLARE_MSM_GPIO_PINS(10); 226 + DECLARE_MSM_GPIO_PINS(11); 227 + DECLARE_MSM_GPIO_PINS(12); 228 + DECLARE_MSM_GPIO_PINS(13); 229 + DECLARE_MSM_GPIO_PINS(14); 230 + DECLARE_MSM_GPIO_PINS(15); 231 + DECLARE_MSM_GPIO_PINS(16); 232 + DECLARE_MSM_GPIO_PINS(17); 233 + DECLARE_MSM_GPIO_PINS(18); 234 + DECLARE_MSM_GPIO_PINS(19); 235 + DECLARE_MSM_GPIO_PINS(20); 236 + DECLARE_MSM_GPIO_PINS(21); 237 + DECLARE_MSM_GPIO_PINS(22); 238 + DECLARE_MSM_GPIO_PINS(23); 239 + DECLARE_MSM_GPIO_PINS(24); 240 + DECLARE_MSM_GPIO_PINS(25); 241 + DECLARE_MSM_GPIO_PINS(26); 242 + DECLARE_MSM_GPIO_PINS(27); 243 + DECLARE_MSM_GPIO_PINS(28); 244 + DECLARE_MSM_GPIO_PINS(29); 245 + DECLARE_MSM_GPIO_PINS(30); 246 + DECLARE_MSM_GPIO_PINS(31); 247 + DECLARE_MSM_GPIO_PINS(32); 248 + DECLARE_MSM_GPIO_PINS(33); 249 + DECLARE_MSM_GPIO_PINS(34); 250 + DECLARE_MSM_GPIO_PINS(35); 251 + DECLARE_MSM_GPIO_PINS(36); 252 + DECLARE_MSM_GPIO_PINS(37); 253 + DECLARE_MSM_GPIO_PINS(38); 254 + DECLARE_MSM_GPIO_PINS(39); 255 + DECLARE_MSM_GPIO_PINS(40); 256 + DECLARE_MSM_GPIO_PINS(41); 257 + DECLARE_MSM_GPIO_PINS(42); 258 + DECLARE_MSM_GPIO_PINS(43); 259 + DECLARE_MSM_GPIO_PINS(44); 260 + DECLARE_MSM_GPIO_PINS(45); 261 + DECLARE_MSM_GPIO_PINS(46); 262 + DECLARE_MSM_GPIO_PINS(47); 263 + DECLARE_MSM_GPIO_PINS(48); 264 + DECLARE_MSM_GPIO_PINS(49); 265 + DECLARE_MSM_GPIO_PINS(50); 266 + DECLARE_MSM_GPIO_PINS(51); 267 + DECLARE_MSM_GPIO_PINS(52); 268 + DECLARE_MSM_GPIO_PINS(53); 269 + DECLARE_MSM_GPIO_PINS(54); 270 + DECLARE_MSM_GPIO_PINS(55); 271 + DECLARE_MSM_GPIO_PINS(56); 272 + DECLARE_MSM_GPIO_PINS(57); 273 + DECLARE_MSM_GPIO_PINS(58); 274 + DECLARE_MSM_GPIO_PINS(59); 275 + DECLARE_MSM_GPIO_PINS(60); 276 + DECLARE_MSM_GPIO_PINS(61); 277 + DECLARE_MSM_GPIO_PINS(62); 278 + DECLARE_MSM_GPIO_PINS(63); 279 + DECLARE_MSM_GPIO_PINS(64); 280 + DECLARE_MSM_GPIO_PINS(65); 281 + DECLARE_MSM_GPIO_PINS(66); 282 + DECLARE_MSM_GPIO_PINS(67); 283 + DECLARE_MSM_GPIO_PINS(68); 284 + DECLARE_MSM_GPIO_PINS(69); 285 + DECLARE_MSM_GPIO_PINS(70); 286 + DECLARE_MSM_GPIO_PINS(71); 287 + DECLARE_MSM_GPIO_PINS(72); 288 + DECLARE_MSM_GPIO_PINS(73); 289 + DECLARE_MSM_GPIO_PINS(74); 290 + DECLARE_MSM_GPIO_PINS(75); 291 + DECLARE_MSM_GPIO_PINS(76); 292 + DECLARE_MSM_GPIO_PINS(77); 293 + DECLARE_MSM_GPIO_PINS(78); 294 + DECLARE_MSM_GPIO_PINS(79); 295 + DECLARE_MSM_GPIO_PINS(80); 296 + DECLARE_MSM_GPIO_PINS(81); 297 + DECLARE_MSM_GPIO_PINS(82); 298 + DECLARE_MSM_GPIO_PINS(83); 299 + DECLARE_MSM_GPIO_PINS(84); 300 + DECLARE_MSM_GPIO_PINS(85); 301 + DECLARE_MSM_GPIO_PINS(86); 302 + DECLARE_MSM_GPIO_PINS(87); 303 + DECLARE_MSM_GPIO_PINS(88); 304 + DECLARE_MSM_GPIO_PINS(89); 305 + DECLARE_MSM_GPIO_PINS(90); 306 + DECLARE_MSM_GPIO_PINS(91); 307 + DECLARE_MSM_GPIO_PINS(92); 308 + DECLARE_MSM_GPIO_PINS(93); 309 + DECLARE_MSM_GPIO_PINS(94); 310 + DECLARE_MSM_GPIO_PINS(95); 311 + DECLARE_MSM_GPIO_PINS(96); 312 + DECLARE_MSM_GPIO_PINS(97); 313 + DECLARE_MSM_GPIO_PINS(98); 314 + DECLARE_MSM_GPIO_PINS(99); 315 + DECLARE_MSM_GPIO_PINS(100); 316 + DECLARE_MSM_GPIO_PINS(101); 317 + DECLARE_MSM_GPIO_PINS(102); 318 + DECLARE_MSM_GPIO_PINS(103); 319 + DECLARE_MSM_GPIO_PINS(104); 320 + DECLARE_MSM_GPIO_PINS(105); 321 + DECLARE_MSM_GPIO_PINS(106); 322 + DECLARE_MSM_GPIO_PINS(107); 323 + DECLARE_MSM_GPIO_PINS(108); 324 + DECLARE_MSM_GPIO_PINS(109); 325 + DECLARE_MSM_GPIO_PINS(110); 326 + DECLARE_MSM_GPIO_PINS(111); 327 + DECLARE_MSM_GPIO_PINS(112); 328 + 329 + static const unsigned int sdc1_clk_pins[] = { 113 }; 330 + static const unsigned int sdc1_cmd_pins[] = { 114 }; 331 + static const unsigned int sdc1_data_pins[] = { 115 }; 332 + static const unsigned int sdc2_clk_pins[] = { 116 }; 333 + static const unsigned int sdc2_cmd_pins[] = { 117 }; 334 + static const unsigned int sdc2_data_pins[] = { 118 }; 335 + static const unsigned int qdsd_clk_pins[] = { 119 }; 336 + static const unsigned int qdsd_cmd_pins[] = { 120 }; 337 + static const unsigned int qdsd_data0_pins[] = { 121 }; 338 + static const unsigned int qdsd_data1_pins[] = { 122 }; 339 + static const unsigned int qdsd_data2_pins[] = { 123 }; 340 + static const unsigned int qdsd_data3_pins[] = { 124 }; 341 + 342 + enum msm8909_functions { 343 + msm_mux_gpio, 344 + msm_mux_adsp_ext, 345 + msm_mux_atest_bbrx0, 346 + msm_mux_atest_bbrx1, 347 + msm_mux_atest_char, 348 + msm_mux_atest_char0, 349 + msm_mux_atest_char1, 350 + msm_mux_atest_char2, 351 + msm_mux_atest_char3, 352 + msm_mux_atest_combodac, 353 + msm_mux_atest_gpsadc0, 354 + msm_mux_atest_gpsadc1, 355 + msm_mux_atest_wlan0, 356 + msm_mux_atest_wlan1, 357 + msm_mux_bimc_dte0, 358 + msm_mux_bimc_dte1, 359 + msm_mux_blsp_i2c1, 360 + msm_mux_blsp_i2c2, 361 + msm_mux_blsp_i2c3, 362 + msm_mux_blsp_i2c4, 363 + msm_mux_blsp_i2c5, 364 + msm_mux_blsp_i2c6, 365 + msm_mux_blsp_spi1, 366 + msm_mux_blsp_spi1_cs1, 367 + msm_mux_blsp_spi1_cs2, 368 + msm_mux_blsp_spi1_cs3, 369 + msm_mux_blsp_spi2, 370 + msm_mux_blsp_spi2_cs1, 371 + msm_mux_blsp_spi2_cs2, 372 + msm_mux_blsp_spi2_cs3, 373 + msm_mux_blsp_spi3, 374 + msm_mux_blsp_spi3_cs1, 375 + msm_mux_blsp_spi3_cs2, 376 + msm_mux_blsp_spi3_cs3, 377 + msm_mux_blsp_spi4, 378 + msm_mux_blsp_spi5, 379 + msm_mux_blsp_spi6, 380 + msm_mux_blsp_uart1, 381 + msm_mux_blsp_uart2, 382 + msm_mux_blsp_uim1, 383 + msm_mux_blsp_uim2, 384 + msm_mux_cam_mclk, 385 + msm_mux_cci_async, 386 + msm_mux_cci_timer0, 387 + msm_mux_cci_timer1, 388 + msm_mux_cci_timer2, 389 + msm_mux_cdc_pdm0, 390 + msm_mux_dbg_out, 391 + msm_mux_dmic0_clk, 392 + msm_mux_dmic0_data, 393 + msm_mux_ebi0_wrcdc, 394 + msm_mux_ebi2_a, 395 + msm_mux_ebi2_lcd, 396 + msm_mux_ext_lpass, 397 + msm_mux_gcc_gp1_clk_a, 398 + msm_mux_gcc_gp1_clk_b, 399 + msm_mux_gcc_gp2_clk_a, 400 + msm_mux_gcc_gp2_clk_b, 401 + msm_mux_gcc_gp3_clk_a, 402 + msm_mux_gcc_gp3_clk_b, 403 + msm_mux_gcc_plltest, 404 + msm_mux_gsm0_tx, 405 + msm_mux_ldo_en, 406 + msm_mux_ldo_update, 407 + msm_mux_m_voc, 408 + msm_mux_mdp_vsync, 409 + msm_mux_modem_tsync, 410 + msm_mux_nav_pps, 411 + msm_mux_nav_tsync, 412 + msm_mux_pa_indicator, 413 + msm_mux_pbs0, 414 + msm_mux_pbs1, 415 + msm_mux_pbs2, 416 + msm_mux_pri_mi2s_data0_a, 417 + msm_mux_pri_mi2s_data0_b, 418 + msm_mux_pri_mi2s_data1_a, 419 + msm_mux_pri_mi2s_data1_b, 420 + msm_mux_pri_mi2s_mclk_a, 421 + msm_mux_pri_mi2s_mclk_b, 422 + msm_mux_pri_mi2s_sck_a, 423 + msm_mux_pri_mi2s_sck_b, 424 + msm_mux_pri_mi2s_ws_a, 425 + msm_mux_pri_mi2s_ws_b, 426 + msm_mux_prng_rosc, 427 + msm_mux_pwr_crypto_enabled_a, 428 + msm_mux_pwr_crypto_enabled_b, 429 + msm_mux_pwr_modem_enabled_a, 430 + msm_mux_pwr_modem_enabled_b, 431 + msm_mux_pwr_nav_enabled_a, 432 + msm_mux_pwr_nav_enabled_b, 433 + msm_mux_qdss_cti_trig_in_a0, 434 + msm_mux_qdss_cti_trig_in_a1, 435 + msm_mux_qdss_cti_trig_in_b0, 436 + msm_mux_qdss_cti_trig_in_b1, 437 + msm_mux_qdss_cti_trig_out_a0, 438 + msm_mux_qdss_cti_trig_out_a1, 439 + msm_mux_qdss_cti_trig_out_b0, 440 + msm_mux_qdss_cti_trig_out_b1, 441 + msm_mux_qdss_traceclk_a, 442 + msm_mux_qdss_tracectl_a, 443 + msm_mux_qdss_tracedata_a, 444 + msm_mux_qdss_tracedata_b, 445 + msm_mux_sd_write, 446 + msm_mux_sec_mi2s, 447 + msm_mux_smb_int, 448 + msm_mux_ssbi0, 449 + msm_mux_ssbi1, 450 + msm_mux_uim1_clk, 451 + msm_mux_uim1_data, 452 + msm_mux_uim1_present, 453 + msm_mux_uim1_reset, 454 + msm_mux_uim2_clk, 455 + msm_mux_uim2_data, 456 + msm_mux_uim2_present, 457 + msm_mux_uim2_reset, 458 + msm_mux_uim3_clk, 459 + msm_mux_uim3_data, 460 + msm_mux_uim3_present, 461 + msm_mux_uim3_reset, 462 + msm_mux_uim_batt, 463 + msm_mux_wcss_bt, 464 + msm_mux_wcss_fm, 465 + msm_mux_wcss_wlan, 466 + msm_mux__, 467 + }; 468 + 469 + static const char * const adsp_ext_groups[] = { "gpio38" }; 470 + static const char * const atest_bbrx0_groups[] = { "gpio37" }; 471 + static const char * const atest_bbrx1_groups[] = { "gpio36" }; 472 + static const char * const atest_char0_groups[] = { "gpio62" }; 473 + static const char * const atest_char1_groups[] = { "gpio61" }; 474 + static const char * const atest_char2_groups[] = { "gpio60" }; 475 + static const char * const atest_char3_groups[] = { "gpio59" }; 476 + static const char * const atest_char_groups[] = { "gpio63" }; 477 + static const char * const atest_combodac_groups[] = { 478 + "gpio32", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42", "gpio43", 479 + "gpio44", "gpio45", "gpio47", "gpio48", "gpio66", "gpio81", "gpio83", 480 + "gpio84", "gpio85", "gpio86", "gpio94", "gpio95", "gpio110" 481 + }; 482 + static const char * const atest_gpsadc0_groups[] = { "gpio65" }; 483 + static const char * const atest_gpsadc1_groups[] = { "gpio79" }; 484 + static const char * const atest_wlan0_groups[] = { "gpio96" }; 485 + static const char * const atest_wlan1_groups[] = { "gpio97" }; 486 + static const char * const bimc_dte0_groups[] = { "gpio6", "gpio59" }; 487 + static const char * const bimc_dte1_groups[] = { "gpio7", "gpio60" }; 488 + static const char * const blsp_i2c1_groups[] = { "gpio6", "gpio7" }; 489 + static const char * const blsp_i2c2_groups[] = { "gpio111", "gpio112" }; 490 + static const char * const blsp_i2c3_groups[] = { "gpio29", "gpio30" }; 491 + static const char * const blsp_i2c4_groups[] = { "gpio14", "gpio15" }; 492 + static const char * const blsp_i2c5_groups[] = { "gpio18", "gpio19" }; 493 + static const char * const blsp_i2c6_groups[] = { "gpio10", "gpio11" }; 494 + static const char * const blsp_spi1_cs1_groups[] = { "gpio97" }; 495 + static const char * const blsp_spi1_cs2_groups[] = { "gpio37" }; 496 + static const char * const blsp_spi1_cs3_groups[] = { "gpio65" }; 497 + static const char * const blsp_spi1_groups[] = { 498 + "gpio4", "gpio5", "gpio6", "gpio7" 499 + }; 500 + static const char * const blsp_spi2_cs1_groups[] = { "gpio98" }; 501 + static const char * const blsp_spi2_cs2_groups[] = { "gpio17" }; 502 + static const char * const blsp_spi2_cs3_groups[] = { "gpio5" }; 503 + static const char * const blsp_spi2_groups[] = { 504 + "gpio20", "gpio21", "gpio111", "gpio112" 505 + }; 506 + static const char * const blsp_spi3_cs1_groups[] = { "gpio95" }; 507 + static const char * const blsp_spi3_cs2_groups[] = { "gpio65" }; 508 + static const char * const blsp_spi3_cs3_groups[] = { "gpio4" }; 509 + static const char * const blsp_spi3_groups[] = { 510 + "gpio0", "gpio1", "gpio2", "gpio3" 511 + }; 512 + static const char * const blsp_spi4_groups[] = { 513 + "gpio12", "gpio13", "gpio14", "gpio15" 514 + }; 515 + static const char * const blsp_spi5_groups[] = { 516 + "gpio16", "gpio17", "gpio18", "gpio19" 517 + }; 518 + static const char * const blsp_spi6_groups[] = { 519 + "gpio8", "gpio9", "gpio10", "gpio11" 520 + }; 521 + static const char * const blsp_uart1_groups[] = { 522 + "gpio4", "gpio5", "gpio6", "gpio7" 523 + }; 524 + static const char * const blsp_uart2_groups[] = { 525 + "gpio20", "gpio21", "gpio111", "gpio112" 526 + }; 527 + static const char * const blsp_uim1_groups[] = { "gpio4", "gpio5" }; 528 + static const char * const blsp_uim2_groups[] = { "gpio20", "gpio21" }; 529 + static const char * const cam_mclk_groups[] = { "gpio26", "gpio27" }; 530 + static const char * const cci_async_groups[] = { "gpio33" }; 531 + static const char * const cci_timer0_groups[] = { "gpio31" }; 532 + static const char * const cci_timer1_groups[] = { "gpio32" }; 533 + static const char * const cci_timer2_groups[] = { "gpio38" }; 534 + static const char * const cdc_pdm0_groups[] = { 535 + "gpio59", "gpio60", "gpio61", "gpio62", "gpio63", "gpio64" 536 + }; 537 + static const char * const dbg_out_groups[] = { "gpio10" }; 538 + static const char * const dmic0_clk_groups[] = { "gpio4" }; 539 + static const char * const dmic0_data_groups[] = { "gpio5" }; 540 + static const char * const ebi0_wrcdc_groups[] = { "gpio64" }; 541 + static const char * const ebi2_a_groups[] = { "gpio99" }; 542 + static const char * const ebi2_lcd_groups[] = { 543 + "gpio24", "gpio24", "gpio25", "gpio95" 544 + }; 545 + static const char * const ext_lpass_groups[] = { "gpio45" }; 546 + static const char * const gcc_gp1_clk_a_groups[] = { "gpio49" }; 547 + static const char * const gcc_gp1_clk_b_groups[] = { "gpio14" }; 548 + static const char * const gcc_gp2_clk_a_groups[] = { "gpio50" }; 549 + static const char * const gcc_gp2_clk_b_groups[] = { "gpio12" }; 550 + static const char * const gcc_gp3_clk_a_groups[] = { "gpio51" }; 551 + static const char * const gcc_gp3_clk_b_groups[] = { "gpio13" }; 552 + static const char * const gcc_plltest_groups[] = { "gpio66", "gpio67" }; 553 + static const char * const gpio_groups[] = { 554 + "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7", 555 + "gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14", 556 + "gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21", 557 + "gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28", 558 + "gpio29", "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35", 559 + "gpio36", "gpio37", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42", 560 + "gpio43", "gpio44", "gpio45", "gpio46", "gpio47", "gpio48", "gpio49", 561 + "gpio50", "gpio51", "gpio52", "gpio53", "gpio54", "gpio55", "gpio56", 562 + "gpio57", "gpio58", "gpio59", "gpio60", "gpio61", "gpio62", "gpio63", 563 + "gpio64", "gpio65", "gpio66", "gpio67", "gpio68", "gpio69", "gpio70", 564 + "gpio71", "gpio72", "gpio73", "gpio74", "gpio75", "gpio76", "gpio77", 565 + "gpio78", "gpio79", "gpio80", "gpio81", "gpio82", "gpio83", "gpio84", 566 + "gpio85", "gpio86", "gpio87", "gpio88", "gpio89", "gpio90", "gpio91", 567 + "gpio92", "gpio93", "gpio94", "gpio95", "gpio96", "gpio97", "gpio98", 568 + "gpio99", "gpio100", "gpio101", "gpio102", "gpio103", "gpio104", 569 + "gpio105", "gpio106", "gpio107", "gpio108", "gpio109", "gpio110", 570 + "gpio111", "gpio112" 571 + }; 572 + static const char * const gsm0_tx_groups[] = { "gpio85" }; 573 + static const char * const ldo_en_groups[] = { "gpio99" }; 574 + static const char * const ldo_update_groups[] = { "gpio98" }; 575 + static const char * const m_voc_groups[] = { "gpio8", "gpio95" }; 576 + static const char * const mdp_vsync_groups[] = { "gpio24", "gpio25" }; 577 + static const char * const modem_tsync_groups[] = { "gpio83" }; 578 + static const char * const nav_pps_groups[] = { "gpio83" }; 579 + static const char * const nav_tsync_groups[] = { "gpio83" }; 580 + static const char * const pa_indicator_groups[] = { "gpio82" }; 581 + static const char * const pbs0_groups[] = { "gpio90" }; 582 + static const char * const pbs1_groups[] = { "gpio91" }; 583 + static const char * const pbs2_groups[] = { "gpio92" }; 584 + static const char * const pri_mi2s_data0_a_groups[] = { "gpio62" }; 585 + static const char * const pri_mi2s_data0_b_groups[] = { "gpio95" }; 586 + static const char * const pri_mi2s_data1_a_groups[] = { "gpio63" }; 587 + static const char * const pri_mi2s_data1_b_groups[] = { "gpio96" }; 588 + static const char * const pri_mi2s_mclk_a_groups[] = { "gpio59" }; 589 + static const char * const pri_mi2s_mclk_b_groups[] = { "gpio98" }; 590 + static const char * const pri_mi2s_sck_a_groups[] = { "gpio60" }; 591 + static const char * const pri_mi2s_sck_b_groups[] = { "gpio94" }; 592 + static const char * const pri_mi2s_ws_a_groups[] = { "gpio61" }; 593 + static const char * const pri_mi2s_ws_b_groups[] = { "gpio110" }; 594 + static const char * const prng_rosc_groups[] = { "gpio43" }; 595 + static const char * const pwr_crypto_enabled_a_groups[] = { "gpio35" }; 596 + static const char * const pwr_crypto_enabled_b_groups[] = { "gpio96" }; 597 + static const char * const pwr_modem_enabled_a_groups[] = { "gpio28" }; 598 + static const char * const pwr_modem_enabled_b_groups[] = { "gpio94" }; 599 + static const char * const pwr_nav_enabled_a_groups[] = { "gpio34" }; 600 + static const char * const pwr_nav_enabled_b_groups[] = { "gpio95" }; 601 + static const char * const qdss_cti_trig_in_a0_groups[] = { "gpio20" }; 602 + static const char * const qdss_cti_trig_in_a1_groups[] = { "gpio49" }; 603 + static const char * const qdss_cti_trig_in_b0_groups[] = { "gpio21" }; 604 + static const char * const qdss_cti_trig_in_b1_groups[] = { "gpio50" }; 605 + static const char * const qdss_cti_trig_out_a0_groups[] = { "gpio23" }; 606 + static const char * const qdss_cti_trig_out_a1_groups[] = { "gpio52" }; 607 + static const char * const qdss_cti_trig_out_b0_groups[] = { "gpio22" }; 608 + static const char * const qdss_cti_trig_out_b1_groups[] = { "gpio51" }; 609 + static const char * const qdss_traceclk_a_groups[] = { "gpio46" }; 610 + static const char * const qdss_tracectl_a_groups[] = { "gpio45" }; 611 + static const char * const qdss_tracedata_a_groups[] = { 612 + "gpio8", "gpio9", "gpio10", "gpio39", "gpio40", "gpio41", "gpio42", 613 + "gpio43", "gpio47", "gpio48", "gpio58", "gpio65", "gpio94", "gpio96", 614 + "gpio97" 615 + }; 616 + static const char * const qdss_tracedata_b_groups[] = { 617 + "gpio14", "gpio16", "gpio17", "gpio29", "gpio30", "gpio31", "gpio32", 618 + "gpio33", "gpio34", "gpio35", "gpio36", "gpio37", "gpio93" 619 + }; 620 + static const char * const sd_write_groups[] = { "gpio99" }; 621 + static const char * const sec_mi2s_groups[] = { 622 + "gpio0", "gpio1", "gpio2", "gpio3", "gpio98" 623 + }; 624 + static const char * const smb_int_groups[] = { "gpio58" }; 625 + static const char * const ssbi0_groups[] = { "gpio88" }; 626 + static const char * const ssbi1_groups[] = { "gpio89" }; 627 + static const char * const uim1_clk_groups[] = { "gpio54" }; 628 + static const char * const uim1_data_groups[] = { "gpio53" }; 629 + static const char * const uim1_present_groups[] = { "gpio56" }; 630 + static const char * const uim1_reset_groups[] = { "gpio55" }; 631 + static const char * const uim2_clk_groups[] = { "gpio50" }; 632 + static const char * const uim2_data_groups[] = { "gpio49" }; 633 + static const char * const uim2_present_groups[] = { "gpio52" }; 634 + static const char * const uim2_reset_groups[] = { "gpio51" }; 635 + static const char * const uim3_clk_groups[] = { "gpio23" }; 636 + static const char * const uim3_data_groups[] = { "gpio20" }; 637 + static const char * const uim3_present_groups[] = { "gpio21" }; 638 + static const char * const uim3_reset_groups[] = { "gpio22" }; 639 + static const char * const uim_batt_groups[] = { "gpio57" }; 640 + static const char * const wcss_bt_groups[] = { "gpio39", "gpio47", "gpio48" }; 641 + static const char * const wcss_fm_groups[] = { "gpio45", "gpio46" }; 642 + static const char * const wcss_wlan_groups[] = { 643 + "gpio40", "gpio41", "gpio42", "gpio43", "gpio44" 644 + }; 645 + 646 + static const struct msm_function msm8909_functions[] = { 647 + FUNCTION(adsp_ext), 648 + FUNCTION(atest_bbrx0), 649 + FUNCTION(atest_bbrx1), 650 + FUNCTION(atest_char), 651 + FUNCTION(atest_char0), 652 + FUNCTION(atest_char1), 653 + FUNCTION(atest_char2), 654 + FUNCTION(atest_char3), 655 + FUNCTION(atest_combodac), 656 + FUNCTION(atest_gpsadc0), 657 + FUNCTION(atest_gpsadc1), 658 + FUNCTION(atest_wlan0), 659 + FUNCTION(atest_wlan1), 660 + FUNCTION(bimc_dte0), 661 + FUNCTION(bimc_dte1), 662 + FUNCTION(blsp_i2c1), 663 + FUNCTION(blsp_i2c2), 664 + FUNCTION(blsp_i2c3), 665 + FUNCTION(blsp_i2c4), 666 + FUNCTION(blsp_i2c5), 667 + FUNCTION(blsp_i2c6), 668 + FUNCTION(blsp_spi1), 669 + FUNCTION(blsp_spi1_cs1), 670 + FUNCTION(blsp_spi1_cs2), 671 + FUNCTION(blsp_spi1_cs3), 672 + FUNCTION(blsp_spi2), 673 + FUNCTION(blsp_spi2_cs1), 674 + FUNCTION(blsp_spi2_cs2), 675 + FUNCTION(blsp_spi2_cs3), 676 + FUNCTION(blsp_spi3), 677 + FUNCTION(blsp_spi3_cs1), 678 + FUNCTION(blsp_spi3_cs2), 679 + FUNCTION(blsp_spi3_cs3), 680 + FUNCTION(blsp_spi4), 681 + FUNCTION(blsp_spi5), 682 + FUNCTION(blsp_spi6), 683 + FUNCTION(blsp_uart1), 684 + FUNCTION(blsp_uart2), 685 + FUNCTION(blsp_uim1), 686 + FUNCTION(blsp_uim2), 687 + FUNCTION(cam_mclk), 688 + FUNCTION(cci_async), 689 + FUNCTION(cci_timer0), 690 + FUNCTION(cci_timer1), 691 + FUNCTION(cci_timer2), 692 + FUNCTION(cdc_pdm0), 693 + FUNCTION(dbg_out), 694 + FUNCTION(dmic0_clk), 695 + FUNCTION(dmic0_data), 696 + FUNCTION(ebi0_wrcdc), 697 + FUNCTION(ebi2_a), 698 + FUNCTION(ebi2_lcd), 699 + FUNCTION(ext_lpass), 700 + FUNCTION(gcc_gp1_clk_a), 701 + FUNCTION(gcc_gp1_clk_b), 702 + FUNCTION(gcc_gp2_clk_a), 703 + FUNCTION(gcc_gp2_clk_b), 704 + FUNCTION(gcc_gp3_clk_a), 705 + FUNCTION(gcc_gp3_clk_b), 706 + FUNCTION(gcc_plltest), 707 + FUNCTION(gpio), 708 + FUNCTION(gsm0_tx), 709 + FUNCTION(ldo_en), 710 + FUNCTION(ldo_update), 711 + FUNCTION(m_voc), 712 + FUNCTION(mdp_vsync), 713 + FUNCTION(modem_tsync), 714 + FUNCTION(nav_pps), 715 + FUNCTION(nav_tsync), 716 + FUNCTION(pa_indicator), 717 + FUNCTION(pbs0), 718 + FUNCTION(pbs1), 719 + FUNCTION(pbs2), 720 + FUNCTION(pri_mi2s_data0_a), 721 + FUNCTION(pri_mi2s_data0_b), 722 + FUNCTION(pri_mi2s_data1_a), 723 + FUNCTION(pri_mi2s_data1_b), 724 + FUNCTION(pri_mi2s_mclk_a), 725 + FUNCTION(pri_mi2s_mclk_b), 726 + FUNCTION(pri_mi2s_sck_a), 727 + FUNCTION(pri_mi2s_sck_b), 728 + FUNCTION(pri_mi2s_ws_a), 729 + FUNCTION(pri_mi2s_ws_b), 730 + FUNCTION(prng_rosc), 731 + FUNCTION(pwr_crypto_enabled_a), 732 + FUNCTION(pwr_crypto_enabled_b), 733 + FUNCTION(pwr_modem_enabled_a), 734 + FUNCTION(pwr_modem_enabled_b), 735 + FUNCTION(pwr_nav_enabled_a), 736 + FUNCTION(pwr_nav_enabled_b), 737 + FUNCTION(qdss_cti_trig_in_a0), 738 + FUNCTION(qdss_cti_trig_in_a1), 739 + FUNCTION(qdss_cti_trig_in_b0), 740 + FUNCTION(qdss_cti_trig_in_b1), 741 + FUNCTION(qdss_cti_trig_out_a0), 742 + FUNCTION(qdss_cti_trig_out_a1), 743 + FUNCTION(qdss_cti_trig_out_b0), 744 + FUNCTION(qdss_cti_trig_out_b1), 745 + FUNCTION(qdss_traceclk_a), 746 + FUNCTION(qdss_tracectl_a), 747 + FUNCTION(qdss_tracedata_a), 748 + FUNCTION(qdss_tracedata_b), 749 + FUNCTION(sd_write), 750 + FUNCTION(sec_mi2s), 751 + FUNCTION(smb_int), 752 + FUNCTION(ssbi0), 753 + FUNCTION(ssbi1), 754 + FUNCTION(uim1_clk), 755 + FUNCTION(uim1_data), 756 + FUNCTION(uim1_present), 757 + FUNCTION(uim1_reset), 758 + FUNCTION(uim2_clk), 759 + FUNCTION(uim2_data), 760 + FUNCTION(uim2_present), 761 + FUNCTION(uim2_reset), 762 + FUNCTION(uim3_clk), 763 + FUNCTION(uim3_data), 764 + FUNCTION(uim3_present), 765 + FUNCTION(uim3_reset), 766 + FUNCTION(uim_batt), 767 + FUNCTION(wcss_bt), 768 + FUNCTION(wcss_fm), 769 + FUNCTION(wcss_wlan), 770 + }; 771 + 772 + static const struct msm_pingroup msm8909_groups[] = { 773 + PINGROUP(0, blsp_spi3, sec_mi2s, _, _, _, _, _, _, _), 774 + PINGROUP(1, blsp_spi3, sec_mi2s, _, _, _, _, _, _, _), 775 + PINGROUP(2, blsp_spi3, sec_mi2s, _, _, _, _, _, _, _), 776 + PINGROUP(3, blsp_spi3, sec_mi2s, _, _, _, _, _, _, _), 777 + PINGROUP(4, blsp_spi1, blsp_uart1, blsp_uim1, blsp_spi3_cs3, dmic0_clk, _, _, _, _), 778 + PINGROUP(5, blsp_spi1, blsp_uart1, blsp_uim1, blsp_spi2_cs3, dmic0_data, _, _, _, _), 779 + PINGROUP(6, blsp_spi1, blsp_uart1, blsp_i2c1, _, _, _, _, _, bimc_dte0), 780 + PINGROUP(7, blsp_spi1, blsp_uart1, blsp_i2c1, _, _, _, _, _, bimc_dte1), 781 + PINGROUP(8, blsp_spi6, m_voc, _, _, _, _, _, qdss_tracedata_a, _), 782 + PINGROUP(9, blsp_spi6, _, _, _, _, _, qdss_tracedata_a, _, _), 783 + PINGROUP(10, blsp_spi6, blsp_i2c6, dbg_out, qdss_tracedata_a, _, _, _, _, _), 784 + PINGROUP(11, blsp_spi6, blsp_i2c6, _, _, _, _, _, _, _), 785 + PINGROUP(12, blsp_spi4, gcc_gp2_clk_b, _, _, _, _, _, _, _), 786 + PINGROUP(13, blsp_spi4, gcc_gp3_clk_b, _, _, _, _, _, _, _), 787 + PINGROUP(14, blsp_spi4, blsp_i2c4, gcc_gp1_clk_b, _, _, _, _, _, qdss_tracedata_b), 788 + PINGROUP(15, blsp_spi4, blsp_i2c4, _, _, _, _, _, _, _), 789 + PINGROUP(16, blsp_spi5, _, _, _, _, _, qdss_tracedata_b, _, _), 790 + PINGROUP(17, blsp_spi5, blsp_spi2_cs2, _, _, _, _, _, qdss_tracedata_b, _), 791 + PINGROUP(18, blsp_spi5, blsp_i2c5, _, _, _, _, _, _, _), 792 + PINGROUP(19, blsp_spi5, blsp_i2c5, _, _, _, _, _, _, _), 793 + PINGROUP(20, uim3_data, blsp_spi2, blsp_uart2, blsp_uim2, _, qdss_cti_trig_in_a0, _, _, _), 794 + PINGROUP(21, uim3_present, blsp_spi2, blsp_uart2, blsp_uim2, _, qdss_cti_trig_in_b0, _, _, _), 795 + PINGROUP(22, uim3_reset, _, qdss_cti_trig_out_b0, _, _, _, _, _, _), 796 + PINGROUP(23, uim3_clk, qdss_cti_trig_out_a0, _, _, _, _, _, _, _), 797 + PINGROUP(24, mdp_vsync, ebi2_lcd, ebi2_lcd, _, _, _, _, _, _), 798 + PINGROUP(25, mdp_vsync, ebi2_lcd, _, _, _, _, _, _, _), 799 + PINGROUP(26, cam_mclk, _, _, _, _, _, _, _, _), 800 + PINGROUP(27, cam_mclk, _, _, _, _, _, _, _, _), 801 + PINGROUP(28, _, pwr_modem_enabled_a, _, _, _, _, _, _, _), 802 + PINGROUP(29, blsp_i2c3, _, _, _, _, _, qdss_tracedata_b, _, _), 803 + PINGROUP(30, blsp_i2c3, _, _, _, _, _, qdss_tracedata_b, _, _), 804 + PINGROUP(31, cci_timer0, _, _, _, _, _, _, qdss_tracedata_b, _), 805 + PINGROUP(32, cci_timer1, _, qdss_tracedata_b, _, atest_combodac, _, _, _, _), 806 + PINGROUP(33, cci_async, qdss_tracedata_b, _, _, _, _, _, _, _), 807 + PINGROUP(34, pwr_nav_enabled_a, qdss_tracedata_b, _, _, _, _, _, _, _), 808 + PINGROUP(35, pwr_crypto_enabled_a, qdss_tracedata_b, _, _, _, _, _, _, _), 809 + PINGROUP(36, qdss_tracedata_b, _, atest_bbrx1, _, _, _, _, _, _), 810 + PINGROUP(37, blsp_spi1_cs2, qdss_tracedata_b, _, atest_bbrx0, _, _, _, _, _), 811 + PINGROUP(38, cci_timer2, adsp_ext, _, atest_combodac, _, _, _, _, _), 812 + PINGROUP(39, wcss_bt, qdss_tracedata_a, _, atest_combodac, _, _, _, _, _), 813 + PINGROUP(40, wcss_wlan, qdss_tracedata_a, _, atest_combodac, _, _, _, _, _), 814 + PINGROUP(41, wcss_wlan, qdss_tracedata_a, _, atest_combodac, _, _, _, _, _), 815 + PINGROUP(42, wcss_wlan, qdss_tracedata_a, _, atest_combodac, _, _, _, _, _), 816 + PINGROUP(43, wcss_wlan, prng_rosc, qdss_tracedata_a, _, atest_combodac, _, _, _, _), 817 + PINGROUP(44, wcss_wlan, _, atest_combodac, _, _, _, _, _, _), 818 + PINGROUP(45, wcss_fm, ext_lpass, qdss_tracectl_a, _, atest_combodac, _, _, _, _), 819 + PINGROUP(46, wcss_fm, qdss_traceclk_a, _, _, _, _, _, _, _), 820 + PINGROUP(47, wcss_bt, qdss_tracedata_a, _, atest_combodac, _, _, _, _, _), 821 + PINGROUP(48, wcss_bt, qdss_tracedata_a, _, atest_combodac, _, _, _, _, _), 822 + PINGROUP(49, uim2_data, gcc_gp1_clk_a, qdss_cti_trig_in_a1, _, _, _, _, _, _), 823 + PINGROUP(50, uim2_clk, gcc_gp2_clk_a, qdss_cti_trig_in_b1, _, _, _, _, _, _), 824 + PINGROUP(51, uim2_reset, gcc_gp3_clk_a, qdss_cti_trig_out_b1, _, _, _, _, _, _), 825 + PINGROUP(52, uim2_present, qdss_cti_trig_out_a1, _, _, _, _, _, _, _), 826 + PINGROUP(53, uim1_data, _, _, _, _, _, _, _, _), 827 + PINGROUP(54, uim1_clk, _, _, _, _, _, _, _, _), 828 + PINGROUP(55, uim1_reset, _, _, _, _, _, _, _, _), 829 + PINGROUP(56, uim1_present, _, _, _, _, _, _, _, _), 830 + PINGROUP(57, uim_batt, _, _, _, _, _, _, _, _), 831 + PINGROUP(58, qdss_tracedata_a, smb_int, _, _, _, _, _, _, _), 832 + PINGROUP(59, cdc_pdm0, pri_mi2s_mclk_a, atest_char3, _, _, _, _, _, bimc_dte0), 833 + PINGROUP(60, cdc_pdm0, pri_mi2s_sck_a, atest_char2, _, _, _, _, _, bimc_dte1), 834 + PINGROUP(61, cdc_pdm0, pri_mi2s_ws_a, atest_char1, _, _, _, _, _, _), 835 + PINGROUP(62, cdc_pdm0, pri_mi2s_data0_a, atest_char0, _, _, _, _, _, _), 836 + PINGROUP(63, cdc_pdm0, pri_mi2s_data1_a, atest_char, _, _, _, _, _, _), 837 + PINGROUP(64, cdc_pdm0, _, _, _, _, _, ebi0_wrcdc, _, _), 838 + PINGROUP(65, blsp_spi3_cs2, blsp_spi1_cs3, qdss_tracedata_a, _, atest_gpsadc0, _, _, _, _), 839 + PINGROUP(66, _, gcc_plltest, _, atest_combodac, _, _, _, _, _), 840 + PINGROUP(67, _, gcc_plltest, _, _, _, _, _, _, _), 841 + PINGROUP(68, _, _, _, _, _, _, _, _, _), 842 + PINGROUP(69, _, _, _, _, _, _, _, _, _), 843 + PINGROUP(70, _, _, _, _, _, _, _, _, _), 844 + PINGROUP(71, _, _, _, _, _, _, _, _, _), 845 + PINGROUP(72, _, _, _, _, _, _, _, _, _), 846 + PINGROUP(73, _, _, _, _, _, _, _, _, _), 847 + PINGROUP(74, _, _, _, _, _, _, _, _, _), 848 + PINGROUP(75, _, _, _, _, _, _, _, _, _), 849 + PINGROUP(76, _, _, _, _, _, _, _, _, _), 850 + PINGROUP(77, _, _, _, _, _, _, _, _, _), 851 + PINGROUP(78, _, _, _, _, _, _, _, _, _), 852 + PINGROUP(79, _, _, atest_gpsadc1, _, _, _, _, _, _), 853 + PINGROUP(80, _, _, _, _, _, _, _, _, _), 854 + PINGROUP(81, _, _, _, atest_combodac, _, _, _, _, _), 855 + PINGROUP(82, _, pa_indicator, _, _, _, _, _, _, _), 856 + PINGROUP(83, _, modem_tsync, nav_tsync, nav_pps, _, atest_combodac, _, _, _), 857 + PINGROUP(84, _, _, atest_combodac, _, _, _, _, _, _), 858 + PINGROUP(85, gsm0_tx, _, _, atest_combodac, _, _, _, _, _), 859 + PINGROUP(86, _, _, atest_combodac, _, _, _, _, _, _), 860 + PINGROUP(87, _, _, _, _, _, _, _, _, _), 861 + PINGROUP(88, _, ssbi0, _, _, _, _, _, _, _), 862 + PINGROUP(89, _, ssbi1, _, _, _, _, _, _, _), 863 + PINGROUP(90, pbs0, _, _, _, _, _, _, _, _), 864 + PINGROUP(91, pbs1, _, _, _, _, _, _, _, _), 865 + PINGROUP(92, pbs2, _, _, _, _, _, _, _, _), 866 + PINGROUP(93, qdss_tracedata_b, _, _, _, _, _, _, _, _), 867 + PINGROUP(94, pri_mi2s_sck_b, pwr_modem_enabled_b, qdss_tracedata_a, _, atest_combodac, _, _, _, _), 868 + PINGROUP(95, blsp_spi3_cs1, pri_mi2s_data0_b, ebi2_lcd, m_voc, pwr_nav_enabled_b, _, atest_combodac, _, _), 869 + PINGROUP(96, pri_mi2s_data1_b, _, pwr_crypto_enabled_b, qdss_tracedata_a, _, atest_wlan0, _, _, _), 870 + PINGROUP(97, blsp_spi1_cs1, qdss_tracedata_a, _, atest_wlan1, _, _, _, _, _), 871 + PINGROUP(98, sec_mi2s, pri_mi2s_mclk_b, blsp_spi2_cs1, ldo_update, _, _, _, _, _), 872 + PINGROUP(99, ebi2_a, sd_write, ldo_en, _, _, _, _, _, _), 873 + PINGROUP(100, _, _, _, _, _, _, _, _, _), 874 + PINGROUP(101, _, _, _, _, _, _, _, _, _), 875 + PINGROUP(102, _, _, _, _, _, _, _, _, _), 876 + PINGROUP(103, _, _, _, _, _, _, _, _, _), 877 + PINGROUP(104, _, _, _, _, _, _, _, _, _), 878 + PINGROUP(105, _, _, _, _, _, _, _, _, _), 879 + PINGROUP(106, _, _, _, _, _, _, _, _, _), 880 + PINGROUP(107, _, _, _, _, _, _, _, _, _), 881 + PINGROUP(108, _, _, _, _, _, _, _, _, _), 882 + PINGROUP(109, _, _, _, _, _, _, _, _, _), 883 + PINGROUP(110, pri_mi2s_ws_b, _, atest_combodac, _, _, _, _, _, _), 884 + PINGROUP(111, blsp_spi2, blsp_uart2, blsp_i2c2, _, _, _, _, _, _), 885 + PINGROUP(112, blsp_spi2, blsp_uart2, blsp_i2c2, _, _, _, _, _, _), 886 + SDC_QDSD_PINGROUP(sdc1_clk, 0x10a000, 13, 6), 887 + SDC_QDSD_PINGROUP(sdc1_cmd, 0x10a000, 11, 3), 888 + SDC_QDSD_PINGROUP(sdc1_data, 0x10a000, 9, 0), 889 + SDC_QDSD_PINGROUP(sdc2_clk, 0x109000, 14, 6), 890 + SDC_QDSD_PINGROUP(sdc2_cmd, 0x109000, 11, 3), 891 + SDC_QDSD_PINGROUP(sdc2_data, 0x109000, 9, 0), 892 + SDC_QDSD_PINGROUP(qdsd_clk, 0x19c000, 3, 0), 893 + SDC_QDSD_PINGROUP(qdsd_cmd, 0x19c000, 8, 5), 894 + SDC_QDSD_PINGROUP(qdsd_data0, 0x19c000, 13, 10), 895 + SDC_QDSD_PINGROUP(qdsd_data1, 0x19c000, 18, 15), 896 + SDC_QDSD_PINGROUP(qdsd_data2, 0x19c000, 23, 20), 897 + SDC_QDSD_PINGROUP(qdsd_data3, 0x19c000, 28, 25), 898 + }; 899 + 900 + static const struct msm_gpio_wakeirq_map msm8909_mpm_map[] = { 901 + { 65, 3 }, { 5, 4 }, { 11, 5 }, { 12, 6 }, { 64, 7 }, { 58, 8 }, 902 + { 50, 9 }, { 13, 10 }, { 49, 11 }, { 20, 12 }, { 21, 13 }, { 25, 14 }, 903 + { 46, 15 }, { 45, 16 }, { 28, 17 }, { 44, 18 }, { 31, 19 }, { 43, 20 }, 904 + { 42, 21 }, { 34, 22 }, { 35, 23 }, { 36, 24 }, { 37, 25 }, { 38, 26 }, 905 + { 39, 27 }, { 40, 28 }, { 41, 29 }, { 90, 30 }, { 91, 32 }, { 92, 33 }, 906 + { 94, 34 }, { 95, 35 }, { 96, 36 }, { 97, 37 }, { 98, 38 }, 907 + { 110, 39 }, { 111, 40 }, { 112, 41 }, { 105, 42 }, { 107, 43 }, 908 + { 47, 50 }, { 48, 51 }, 909 + }; 910 + 911 + static const struct msm_pinctrl_soc_data msm8909_pinctrl = { 912 + .pins = msm8909_pins, 913 + .npins = ARRAY_SIZE(msm8909_pins), 914 + .functions = msm8909_functions, 915 + .nfunctions = ARRAY_SIZE(msm8909_functions), 916 + .groups = msm8909_groups, 917 + .ngroups = ARRAY_SIZE(msm8909_groups), 918 + .ngpios = 113, 919 + .wakeirq_map = msm8909_mpm_map, 920 + .nwakeirq_map = ARRAY_SIZE(msm8909_mpm_map), 921 + }; 922 + 923 + static int msm8909_pinctrl_probe(struct platform_device *pdev) 924 + { 925 + return msm_pinctrl_probe(pdev, &msm8909_pinctrl); 926 + } 927 + 928 + static const struct of_device_id msm8909_pinctrl_of_match[] = { 929 + { .compatible = "qcom,msm8909-tlmm", }, 930 + { }, 931 + }; 932 + MODULE_DEVICE_TABLE(of, msm8909_pinctrl_of_match); 933 + 934 + static struct platform_driver msm8909_pinctrl_driver = { 935 + .driver = { 936 + .name = "msm8909-pinctrl", 937 + .of_match_table = msm8909_pinctrl_of_match, 938 + }, 939 + .probe = msm8909_pinctrl_probe, 940 + .remove = msm_pinctrl_remove, 941 + }; 942 + 943 + static int __init msm8909_pinctrl_init(void) 944 + { 945 + return platform_driver_register(&msm8909_pinctrl_driver); 946 + } 947 + arch_initcall(msm8909_pinctrl_init); 948 + 949 + static void __exit msm8909_pinctrl_exit(void) 950 + { 951 + platform_driver_unregister(&msm8909_pinctrl_driver); 952 + } 953 + module_exit(msm8909_pinctrl_exit); 954 + 955 + MODULE_DESCRIPTION("Qualcomm MSM8909 TLMM pinctrl driver"); 956 + MODULE_LICENSE("GPL");
+2 -2
drivers/pinctrl/qcom/pinctrl-msm8916.c
··· 844 844 PINGROUP(28, pwr_modem_enabled_a, NA, NA, NA, NA, NA, qdss_tracedata_b, NA, atest_combodac), 845 845 PINGROUP(29, cci_i2c, NA, NA, NA, NA, NA, qdss_tracedata_b, NA, atest_combodac), 846 846 PINGROUP(30, cci_i2c, NA, NA, NA, NA, NA, NA, NA, qdss_tracedata_b), 847 - PINGROUP(31, cci_timer0, NA, NA, NA, NA, NA, NA, NA, NA), 848 - PINGROUP(32, cci_timer1, NA, NA, NA, NA, NA, NA, NA, NA), 847 + PINGROUP(31, cci_timer0, flash_strobe, NA, NA, NA, NA, NA, NA, NA), 848 + PINGROUP(32, cci_timer1, flash_strobe, NA, NA, NA, NA, NA, NA, NA), 849 849 PINGROUP(33, cci_async, NA, NA, NA, NA, NA, NA, NA, qdss_tracedata_b), 850 850 PINGROUP(34, pwr_nav_enabled_a, NA, NA, NA, NA, NA, NA, NA, qdss_tracedata_b), 851 851 PINGROUP(35, pwr_crypto_enabled_a, NA, NA, NA, NA, NA, NA, NA, qdss_tracedata_b),
-1
drivers/pinctrl/qcom/pinctrl-sc7280-lpass-lpi.c
··· 141 141 .ngroups = ARRAY_SIZE(sc7280_groups), 142 142 .functions = sc7280_functions, 143 143 .nfunctions = ARRAY_SIZE(sc7280_functions), 144 - .is_clk_optional = true, 145 144 }; 146 145 147 146 static const struct of_device_id lpi_pinctrl_of_match[] = {
+1544
drivers/pinctrl/qcom/pinctrl-sm6375.c
··· 1 + // SPDX-License-Identifier: GPL-2.0-only 2 + /* 3 + * Copyright (c) 2021, The Linux Foundation. All rights reserved. 4 + * Copyright (c) 2022, Konrad Dybcio <konrad.dybcio@somainline.org> 5 + */ 6 + 7 + #include <linux/module.h> 8 + #include <linux/of.h> 9 + #include <linux/platform_device.h> 10 + #include <linux/pinctrl/pinctrl.h> 11 + 12 + #include "pinctrl-msm.h" 13 + 14 + #define FUNCTION(fname) \ 15 + [msm_mux_##fname] = { \ 16 + .name = #fname, \ 17 + .groups = fname##_groups, \ 18 + .ngroups = ARRAY_SIZE(fname##_groups), \ 19 + } 20 + 21 + #define REG_BASE 0x100000 22 + #define REG_SIZE 0x1000 23 + #define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7, f8, f9) \ 24 + { \ 25 + .name = "gpio" #id, \ 26 + .pins = gpio##id##_pins, \ 27 + .npins = (unsigned int)ARRAY_SIZE(gpio##id##_pins), \ 28 + .funcs = (int[]){ \ 29 + msm_mux_gpio, /* gpio mode */ \ 30 + msm_mux_##f1, \ 31 + msm_mux_##f2, \ 32 + msm_mux_##f3, \ 33 + msm_mux_##f4, \ 34 + msm_mux_##f5, \ 35 + msm_mux_##f6, \ 36 + msm_mux_##f7, \ 37 + msm_mux_##f8, \ 38 + msm_mux_##f9 \ 39 + }, \ 40 + .nfuncs = 10, \ 41 + .ctl_reg = REG_SIZE * id, \ 42 + .io_reg = REG_SIZE * id + 0x4, \ 43 + .intr_cfg_reg = REG_SIZE * id + 0x8, \ 44 + .intr_status_reg = REG_SIZE * id + 0xc, \ 45 + .intr_target_reg = REG_SIZE * id + 0x8, \ 46 + .mux_bit = 2, \ 47 + .pull_bit = 0, \ 48 + .drv_bit = 6, \ 49 + .egpio_enable = 12, \ 50 + .egpio_present = 11, \ 51 + .oe_bit = 9, \ 52 + .in_bit = 0, \ 53 + .out_bit = 1, \ 54 + .intr_enable_bit = 0, \ 55 + .intr_status_bit = 0, \ 56 + .intr_target_bit = 5, \ 57 + .intr_target_kpss_val = 3, \ 58 + .intr_raw_status_bit = 4, \ 59 + .intr_polarity_bit = 1, \ 60 + .intr_detection_bit = 2, \ 61 + .intr_detection_width = 2, \ 62 + } 63 + 64 + #define SDC_PINGROUP(pg_name, ctl, pull, drv) \ 65 + { \ 66 + .name = #pg_name, \ 67 + .pins = pg_name##_pins, \ 68 + .npins = (unsigned int)ARRAY_SIZE(pg_name##_pins), \ 69 + .ctl_reg = ctl, \ 70 + .io_reg = 0, \ 71 + .intr_cfg_reg = 0, \ 72 + .intr_status_reg = 0, \ 73 + .intr_target_reg = 0, \ 74 + .mux_bit = -1, \ 75 + .pull_bit = pull, \ 76 + .drv_bit = drv, \ 77 + .oe_bit = -1, \ 78 + .in_bit = -1, \ 79 + .out_bit = -1, \ 80 + .intr_enable_bit = -1, \ 81 + .intr_status_bit = -1, \ 82 + .intr_target_bit = -1, \ 83 + .intr_raw_status_bit = -1, \ 84 + .intr_polarity_bit = -1, \ 85 + .intr_detection_bit = -1, \ 86 + .intr_detection_width = -1, \ 87 + } 88 + 89 + #define UFS_RESET(pg_name, offset) \ 90 + { \ 91 + .name = #pg_name, \ 92 + .pins = pg_name##_pins, \ 93 + .npins = (unsigned int)ARRAY_SIZE(pg_name##_pins), \ 94 + .ctl_reg = offset, \ 95 + .io_reg = offset + 0x4, \ 96 + .intr_cfg_reg = 0, \ 97 + .intr_status_reg = 0, \ 98 + .intr_target_reg = 0, \ 99 + .mux_bit = -1, \ 100 + .pull_bit = 3, \ 101 + .drv_bit = 0, \ 102 + .oe_bit = -1, \ 103 + .in_bit = -1, \ 104 + .out_bit = 0, \ 105 + .intr_enable_bit = -1, \ 106 + .intr_status_bit = -1, \ 107 + .intr_target_bit = -1, \ 108 + .intr_raw_status_bit = -1, \ 109 + .intr_polarity_bit = -1, \ 110 + .intr_detection_bit = -1, \ 111 + .intr_detection_width = -1, \ 112 + } 113 + 114 + static const struct pinctrl_pin_desc sm6375_pins[] = { 115 + PINCTRL_PIN(0, "GPIO_0"), 116 + PINCTRL_PIN(1, "GPIO_1"), 117 + PINCTRL_PIN(2, "GPIO_2"), 118 + PINCTRL_PIN(3, "GPIO_3"), 119 + PINCTRL_PIN(4, "GPIO_4"), 120 + PINCTRL_PIN(5, "GPIO_5"), 121 + PINCTRL_PIN(6, "GPIO_6"), 122 + PINCTRL_PIN(7, "GPIO_7"), 123 + PINCTRL_PIN(8, "GPIO_8"), 124 + PINCTRL_PIN(9, "GPIO_9"), 125 + PINCTRL_PIN(10, "GPIO_10"), 126 + PINCTRL_PIN(11, "GPIO_11"), 127 + PINCTRL_PIN(12, "GPIO_12"), 128 + PINCTRL_PIN(13, "GPIO_13"), 129 + PINCTRL_PIN(14, "GPIO_14"), 130 + PINCTRL_PIN(15, "GPIO_15"), 131 + PINCTRL_PIN(16, "GPIO_16"), 132 + PINCTRL_PIN(17, "GPIO_17"), 133 + PINCTRL_PIN(18, "GPIO_18"), 134 + PINCTRL_PIN(19, "GPIO_19"), 135 + PINCTRL_PIN(20, "GPIO_20"), 136 + PINCTRL_PIN(21, "GPIO_21"), 137 + PINCTRL_PIN(22, "GPIO_22"), 138 + PINCTRL_PIN(23, "GPIO_23"), 139 + PINCTRL_PIN(24, "GPIO_24"), 140 + PINCTRL_PIN(25, "GPIO_25"), 141 + PINCTRL_PIN(26, "GPIO_26"), 142 + PINCTRL_PIN(27, "GPIO_27"), 143 + PINCTRL_PIN(28, "GPIO_28"), 144 + PINCTRL_PIN(29, "GPIO_29"), 145 + PINCTRL_PIN(30, "GPIO_30"), 146 + PINCTRL_PIN(31, "GPIO_31"), 147 + PINCTRL_PIN(32, "GPIO_32"), 148 + PINCTRL_PIN(33, "GPIO_33"), 149 + PINCTRL_PIN(34, "GPIO_34"), 150 + PINCTRL_PIN(35, "GPIO_35"), 151 + PINCTRL_PIN(36, "GPIO_36"), 152 + PINCTRL_PIN(37, "GPIO_37"), 153 + PINCTRL_PIN(38, "GPIO_38"), 154 + PINCTRL_PIN(39, "GPIO_39"), 155 + PINCTRL_PIN(40, "GPIO_40"), 156 + PINCTRL_PIN(41, "GPIO_41"), 157 + PINCTRL_PIN(42, "GPIO_42"), 158 + PINCTRL_PIN(43, "GPIO_43"), 159 + PINCTRL_PIN(44, "GPIO_44"), 160 + PINCTRL_PIN(45, "GPIO_45"), 161 + PINCTRL_PIN(46, "GPIO_46"), 162 + PINCTRL_PIN(47, "GPIO_47"), 163 + PINCTRL_PIN(48, "GPIO_48"), 164 + PINCTRL_PIN(49, "GPIO_49"), 165 + PINCTRL_PIN(50, "GPIO_50"), 166 + PINCTRL_PIN(51, "GPIO_51"), 167 + PINCTRL_PIN(52, "GPIO_52"), 168 + PINCTRL_PIN(53, "GPIO_53"), 169 + PINCTRL_PIN(54, "GPIO_54"), 170 + PINCTRL_PIN(55, "GPIO_55"), 171 + PINCTRL_PIN(56, "GPIO_56"), 172 + PINCTRL_PIN(57, "GPIO_57"), 173 + PINCTRL_PIN(58, "GPIO_58"), 174 + PINCTRL_PIN(59, "GPIO_59"), 175 + PINCTRL_PIN(60, "GPIO_60"), 176 + PINCTRL_PIN(61, "GPIO_61"), 177 + PINCTRL_PIN(62, "GPIO_62"), 178 + PINCTRL_PIN(63, "GPIO_63"), 179 + PINCTRL_PIN(64, "GPIO_64"), 180 + PINCTRL_PIN(65, "GPIO_65"), 181 + PINCTRL_PIN(66, "GPIO_66"), 182 + PINCTRL_PIN(67, "GPIO_67"), 183 + PINCTRL_PIN(68, "GPIO_68"), 184 + PINCTRL_PIN(69, "GPIO_69"), 185 + PINCTRL_PIN(70, "GPIO_70"), 186 + PINCTRL_PIN(71, "GPIO_71"), 187 + PINCTRL_PIN(72, "GPIO_72"), 188 + PINCTRL_PIN(73, "GPIO_73"), 189 + PINCTRL_PIN(74, "GPIO_74"), 190 + PINCTRL_PIN(75, "GPIO_75"), 191 + PINCTRL_PIN(76, "GPIO_76"), 192 + PINCTRL_PIN(77, "GPIO_77"), 193 + PINCTRL_PIN(78, "GPIO_78"), 194 + PINCTRL_PIN(79, "GPIO_79"), 195 + PINCTRL_PIN(80, "GPIO_80"), 196 + PINCTRL_PIN(81, "GPIO_81"), 197 + PINCTRL_PIN(82, "GPIO_82"), 198 + PINCTRL_PIN(83, "GPIO_83"), 199 + PINCTRL_PIN(84, "GPIO_84"), 200 + PINCTRL_PIN(85, "GPIO_85"), 201 + PINCTRL_PIN(86, "GPIO_86"), 202 + PINCTRL_PIN(87, "GPIO_87"), 203 + PINCTRL_PIN(88, "GPIO_88"), 204 + PINCTRL_PIN(89, "GPIO_89"), 205 + PINCTRL_PIN(90, "GPIO_90"), 206 + PINCTRL_PIN(91, "GPIO_91"), 207 + PINCTRL_PIN(92, "GPIO_92"), 208 + PINCTRL_PIN(93, "GPIO_93"), 209 + PINCTRL_PIN(94, "GPIO_94"), 210 + PINCTRL_PIN(95, "GPIO_95"), 211 + PINCTRL_PIN(96, "GPIO_96"), 212 + PINCTRL_PIN(97, "GPIO_97"), 213 + PINCTRL_PIN(98, "GPIO_98"), 214 + PINCTRL_PIN(99, "GPIO_99"), 215 + PINCTRL_PIN(100, "GPIO_100"), 216 + PINCTRL_PIN(101, "GPIO_101"), 217 + PINCTRL_PIN(102, "GPIO_102"), 218 + PINCTRL_PIN(103, "GPIO_103"), 219 + PINCTRL_PIN(104, "GPIO_104"), 220 + PINCTRL_PIN(105, "GPIO_105"), 221 + PINCTRL_PIN(106, "GPIO_106"), 222 + PINCTRL_PIN(107, "GPIO_107"), 223 + PINCTRL_PIN(108, "GPIO_108"), 224 + PINCTRL_PIN(109, "GPIO_109"), 225 + PINCTRL_PIN(110, "GPIO_110"), 226 + PINCTRL_PIN(111, "GPIO_111"), 227 + PINCTRL_PIN(112, "GPIO_112"), 228 + PINCTRL_PIN(113, "GPIO_113"), 229 + PINCTRL_PIN(114, "GPIO_114"), 230 + PINCTRL_PIN(115, "GPIO_115"), 231 + PINCTRL_PIN(116, "GPIO_116"), 232 + PINCTRL_PIN(117, "GPIO_117"), 233 + PINCTRL_PIN(118, "GPIO_118"), 234 + PINCTRL_PIN(119, "GPIO_119"), 235 + PINCTRL_PIN(120, "GPIO_120"), 236 + PINCTRL_PIN(121, "GPIO_121"), 237 + PINCTRL_PIN(122, "GPIO_122"), 238 + PINCTRL_PIN(123, "GPIO_123"), 239 + PINCTRL_PIN(124, "GPIO_124"), 240 + PINCTRL_PIN(125, "GPIO_125"), 241 + PINCTRL_PIN(126, "GPIO_126"), 242 + PINCTRL_PIN(127, "GPIO_127"), 243 + PINCTRL_PIN(128, "GPIO_128"), 244 + PINCTRL_PIN(129, "GPIO_129"), 245 + PINCTRL_PIN(130, "GPIO_130"), 246 + PINCTRL_PIN(131, "GPIO_131"), 247 + PINCTRL_PIN(132, "GPIO_132"), 248 + PINCTRL_PIN(133, "GPIO_133"), 249 + PINCTRL_PIN(134, "GPIO_134"), 250 + PINCTRL_PIN(135, "GPIO_135"), 251 + PINCTRL_PIN(136, "GPIO_136"), 252 + PINCTRL_PIN(137, "GPIO_137"), 253 + PINCTRL_PIN(138, "GPIO_138"), 254 + PINCTRL_PIN(139, "GPIO_139"), 255 + PINCTRL_PIN(140, "GPIO_140"), 256 + PINCTRL_PIN(141, "GPIO_141"), 257 + PINCTRL_PIN(142, "GPIO_142"), 258 + PINCTRL_PIN(143, "GPIO_143"), 259 + PINCTRL_PIN(144, "GPIO_144"), 260 + PINCTRL_PIN(145, "GPIO_145"), 261 + PINCTRL_PIN(146, "GPIO_146"), 262 + PINCTRL_PIN(147, "GPIO_147"), 263 + PINCTRL_PIN(148, "GPIO_148"), 264 + PINCTRL_PIN(149, "GPIO_149"), 265 + PINCTRL_PIN(150, "GPIO_150"), 266 + PINCTRL_PIN(151, "GPIO_151"), 267 + PINCTRL_PIN(152, "GPIO_152"), 268 + PINCTRL_PIN(153, "GPIO_153"), 269 + PINCTRL_PIN(154, "GPIO_154"), 270 + PINCTRL_PIN(155, "GPIO_155"), 271 + PINCTRL_PIN(156, "UFS_RESET"), 272 + PINCTRL_PIN(157, "SDC1_RCLK"), 273 + PINCTRL_PIN(158, "SDC1_CLK"), 274 + PINCTRL_PIN(159, "SDC1_CMD"), 275 + PINCTRL_PIN(160, "SDC1_DATA"), 276 + PINCTRL_PIN(161, "SDC2_CLK"), 277 + PINCTRL_PIN(162, "SDC2_CMD"), 278 + PINCTRL_PIN(163, "SDC2_DATA"), 279 + }; 280 + 281 + #define DECLARE_MSM_GPIO_PINS(pin) \ 282 + static const unsigned int gpio##pin##_pins[] = { pin } 283 + DECLARE_MSM_GPIO_PINS(0); 284 + DECLARE_MSM_GPIO_PINS(1); 285 + DECLARE_MSM_GPIO_PINS(2); 286 + DECLARE_MSM_GPIO_PINS(3); 287 + DECLARE_MSM_GPIO_PINS(4); 288 + DECLARE_MSM_GPIO_PINS(5); 289 + DECLARE_MSM_GPIO_PINS(6); 290 + DECLARE_MSM_GPIO_PINS(7); 291 + DECLARE_MSM_GPIO_PINS(8); 292 + DECLARE_MSM_GPIO_PINS(9); 293 + DECLARE_MSM_GPIO_PINS(10); 294 + DECLARE_MSM_GPIO_PINS(11); 295 + DECLARE_MSM_GPIO_PINS(12); 296 + DECLARE_MSM_GPIO_PINS(13); 297 + DECLARE_MSM_GPIO_PINS(14); 298 + DECLARE_MSM_GPIO_PINS(15); 299 + DECLARE_MSM_GPIO_PINS(16); 300 + DECLARE_MSM_GPIO_PINS(17); 301 + DECLARE_MSM_GPIO_PINS(18); 302 + DECLARE_MSM_GPIO_PINS(19); 303 + DECLARE_MSM_GPIO_PINS(20); 304 + DECLARE_MSM_GPIO_PINS(21); 305 + DECLARE_MSM_GPIO_PINS(22); 306 + DECLARE_MSM_GPIO_PINS(23); 307 + DECLARE_MSM_GPIO_PINS(24); 308 + DECLARE_MSM_GPIO_PINS(25); 309 + DECLARE_MSM_GPIO_PINS(26); 310 + DECLARE_MSM_GPIO_PINS(27); 311 + DECLARE_MSM_GPIO_PINS(28); 312 + DECLARE_MSM_GPIO_PINS(29); 313 + DECLARE_MSM_GPIO_PINS(30); 314 + DECLARE_MSM_GPIO_PINS(31); 315 + DECLARE_MSM_GPIO_PINS(32); 316 + DECLARE_MSM_GPIO_PINS(33); 317 + DECLARE_MSM_GPIO_PINS(34); 318 + DECLARE_MSM_GPIO_PINS(35); 319 + DECLARE_MSM_GPIO_PINS(36); 320 + DECLARE_MSM_GPIO_PINS(37); 321 + DECLARE_MSM_GPIO_PINS(38); 322 + DECLARE_MSM_GPIO_PINS(39); 323 + DECLARE_MSM_GPIO_PINS(40); 324 + DECLARE_MSM_GPIO_PINS(41); 325 + DECLARE_MSM_GPIO_PINS(42); 326 + DECLARE_MSM_GPIO_PINS(43); 327 + DECLARE_MSM_GPIO_PINS(44); 328 + DECLARE_MSM_GPIO_PINS(45); 329 + DECLARE_MSM_GPIO_PINS(46); 330 + DECLARE_MSM_GPIO_PINS(47); 331 + DECLARE_MSM_GPIO_PINS(48); 332 + DECLARE_MSM_GPIO_PINS(49); 333 + DECLARE_MSM_GPIO_PINS(50); 334 + DECLARE_MSM_GPIO_PINS(51); 335 + DECLARE_MSM_GPIO_PINS(52); 336 + DECLARE_MSM_GPIO_PINS(53); 337 + DECLARE_MSM_GPIO_PINS(54); 338 + DECLARE_MSM_GPIO_PINS(55); 339 + DECLARE_MSM_GPIO_PINS(56); 340 + DECLARE_MSM_GPIO_PINS(57); 341 + DECLARE_MSM_GPIO_PINS(58); 342 + DECLARE_MSM_GPIO_PINS(59); 343 + DECLARE_MSM_GPIO_PINS(60); 344 + DECLARE_MSM_GPIO_PINS(61); 345 + DECLARE_MSM_GPIO_PINS(62); 346 + DECLARE_MSM_GPIO_PINS(63); 347 + DECLARE_MSM_GPIO_PINS(64); 348 + DECLARE_MSM_GPIO_PINS(65); 349 + DECLARE_MSM_GPIO_PINS(66); 350 + DECLARE_MSM_GPIO_PINS(67); 351 + DECLARE_MSM_GPIO_PINS(68); 352 + DECLARE_MSM_GPIO_PINS(69); 353 + DECLARE_MSM_GPIO_PINS(70); 354 + DECLARE_MSM_GPIO_PINS(71); 355 + DECLARE_MSM_GPIO_PINS(72); 356 + DECLARE_MSM_GPIO_PINS(73); 357 + DECLARE_MSM_GPIO_PINS(74); 358 + DECLARE_MSM_GPIO_PINS(75); 359 + DECLARE_MSM_GPIO_PINS(76); 360 + DECLARE_MSM_GPIO_PINS(77); 361 + DECLARE_MSM_GPIO_PINS(78); 362 + DECLARE_MSM_GPIO_PINS(79); 363 + DECLARE_MSM_GPIO_PINS(80); 364 + DECLARE_MSM_GPIO_PINS(81); 365 + DECLARE_MSM_GPIO_PINS(82); 366 + DECLARE_MSM_GPIO_PINS(83); 367 + DECLARE_MSM_GPIO_PINS(84); 368 + DECLARE_MSM_GPIO_PINS(85); 369 + DECLARE_MSM_GPIO_PINS(86); 370 + DECLARE_MSM_GPIO_PINS(87); 371 + DECLARE_MSM_GPIO_PINS(88); 372 + DECLARE_MSM_GPIO_PINS(89); 373 + DECLARE_MSM_GPIO_PINS(90); 374 + DECLARE_MSM_GPIO_PINS(91); 375 + DECLARE_MSM_GPIO_PINS(92); 376 + DECLARE_MSM_GPIO_PINS(93); 377 + DECLARE_MSM_GPIO_PINS(94); 378 + DECLARE_MSM_GPIO_PINS(95); 379 + DECLARE_MSM_GPIO_PINS(96); 380 + DECLARE_MSM_GPIO_PINS(97); 381 + DECLARE_MSM_GPIO_PINS(98); 382 + DECLARE_MSM_GPIO_PINS(99); 383 + DECLARE_MSM_GPIO_PINS(100); 384 + DECLARE_MSM_GPIO_PINS(101); 385 + DECLARE_MSM_GPIO_PINS(102); 386 + DECLARE_MSM_GPIO_PINS(103); 387 + DECLARE_MSM_GPIO_PINS(104); 388 + DECLARE_MSM_GPIO_PINS(105); 389 + DECLARE_MSM_GPIO_PINS(106); 390 + DECLARE_MSM_GPIO_PINS(107); 391 + DECLARE_MSM_GPIO_PINS(108); 392 + DECLARE_MSM_GPIO_PINS(109); 393 + DECLARE_MSM_GPIO_PINS(110); 394 + DECLARE_MSM_GPIO_PINS(111); 395 + DECLARE_MSM_GPIO_PINS(112); 396 + DECLARE_MSM_GPIO_PINS(113); 397 + DECLARE_MSM_GPIO_PINS(114); 398 + DECLARE_MSM_GPIO_PINS(115); 399 + DECLARE_MSM_GPIO_PINS(116); 400 + DECLARE_MSM_GPIO_PINS(117); 401 + DECLARE_MSM_GPIO_PINS(118); 402 + DECLARE_MSM_GPIO_PINS(119); 403 + DECLARE_MSM_GPIO_PINS(120); 404 + DECLARE_MSM_GPIO_PINS(121); 405 + DECLARE_MSM_GPIO_PINS(122); 406 + DECLARE_MSM_GPIO_PINS(123); 407 + DECLARE_MSM_GPIO_PINS(124); 408 + DECLARE_MSM_GPIO_PINS(125); 409 + DECLARE_MSM_GPIO_PINS(126); 410 + DECLARE_MSM_GPIO_PINS(127); 411 + DECLARE_MSM_GPIO_PINS(128); 412 + DECLARE_MSM_GPIO_PINS(129); 413 + DECLARE_MSM_GPIO_PINS(130); 414 + DECLARE_MSM_GPIO_PINS(131); 415 + DECLARE_MSM_GPIO_PINS(132); 416 + DECLARE_MSM_GPIO_PINS(133); 417 + DECLARE_MSM_GPIO_PINS(134); 418 + DECLARE_MSM_GPIO_PINS(135); 419 + DECLARE_MSM_GPIO_PINS(136); 420 + DECLARE_MSM_GPIO_PINS(137); 421 + DECLARE_MSM_GPIO_PINS(138); 422 + DECLARE_MSM_GPIO_PINS(139); 423 + DECLARE_MSM_GPIO_PINS(140); 424 + DECLARE_MSM_GPIO_PINS(141); 425 + DECLARE_MSM_GPIO_PINS(142); 426 + DECLARE_MSM_GPIO_PINS(143); 427 + DECLARE_MSM_GPIO_PINS(144); 428 + DECLARE_MSM_GPIO_PINS(145); 429 + DECLARE_MSM_GPIO_PINS(146); 430 + DECLARE_MSM_GPIO_PINS(147); 431 + DECLARE_MSM_GPIO_PINS(148); 432 + DECLARE_MSM_GPIO_PINS(149); 433 + DECLARE_MSM_GPIO_PINS(150); 434 + DECLARE_MSM_GPIO_PINS(151); 435 + DECLARE_MSM_GPIO_PINS(152); 436 + DECLARE_MSM_GPIO_PINS(153); 437 + DECLARE_MSM_GPIO_PINS(154); 438 + DECLARE_MSM_GPIO_PINS(155); 439 + 440 + 441 + static const unsigned int sdc1_rclk_pins[] = { 157 }; 442 + static const unsigned int sdc1_clk_pins[] = { 158 }; 443 + static const unsigned int sdc1_cmd_pins[] = { 159 }; 444 + static const unsigned int sdc1_data_pins[] = { 160 }; 445 + static const unsigned int sdc2_clk_pins[] = { 161 }; 446 + static const unsigned int sdc2_cmd_pins[] = { 162 }; 447 + static const unsigned int sdc2_data_pins[] = { 163 }; 448 + static const unsigned int ufs_reset_pins[] = { 156 }; 449 + 450 + enum sm6375_functions { 451 + msm_mux_adsp_ext, 452 + msm_mux_agera_pll, 453 + msm_mux_atest_char, 454 + msm_mux_atest_char0, 455 + msm_mux_atest_char1, 456 + msm_mux_atest_char2, 457 + msm_mux_atest_char3, 458 + msm_mux_atest_tsens, 459 + msm_mux_atest_tsens2, 460 + msm_mux_atest_usb1, 461 + msm_mux_atest_usb10, 462 + msm_mux_atest_usb11, 463 + msm_mux_atest_usb12, 464 + msm_mux_atest_usb13, 465 + msm_mux_atest_usb2, 466 + msm_mux_atest_usb20, 467 + msm_mux_atest_usb21, 468 + msm_mux_atest_usb22, 469 + msm_mux_atest_usb23, 470 + msm_mux_audio_ref, 471 + msm_mux_btfm_slimbus, 472 + msm_mux_cam_mclk, 473 + msm_mux_cci_async, 474 + msm_mux_cci_i2c, 475 + msm_mux_cci_timer0, 476 + msm_mux_cci_timer1, 477 + msm_mux_cci_timer2, 478 + msm_mux_cci_timer3, 479 + msm_mux_cci_timer4, 480 + msm_mux_cri_trng, 481 + msm_mux_dbg_out, 482 + msm_mux_ddr_bist, 483 + msm_mux_ddr_pxi0, 484 + msm_mux_ddr_pxi1, 485 + msm_mux_ddr_pxi2, 486 + msm_mux_ddr_pxi3, 487 + msm_mux_dp_hot, 488 + msm_mux_edp_lcd, 489 + msm_mux_gcc_gp1, 490 + msm_mux_gcc_gp2, 491 + msm_mux_gcc_gp3, 492 + msm_mux_gp_pdm0, 493 + msm_mux_gp_pdm1, 494 + msm_mux_gp_pdm2, 495 + msm_mux_gpio, 496 + msm_mux_gps_tx, 497 + msm_mux_ibi_i3c, 498 + msm_mux_jitter_bist, 499 + msm_mux_ldo_en, 500 + msm_mux_ldo_update, 501 + msm_mux_lpass_ext, 502 + msm_mux_m_voc, 503 + msm_mux_mclk, 504 + msm_mux_mdp_vsync, 505 + msm_mux_mdp_vsync0, 506 + msm_mux_mdp_vsync1, 507 + msm_mux_mdp_vsync2, 508 + msm_mux_mdp_vsync3, 509 + msm_mux_mi2s_0, 510 + msm_mux_mi2s_1, 511 + msm_mux_mi2s_2, 512 + msm_mux_mss_lte, 513 + msm_mux_nav_gpio, 514 + msm_mux_nav_pps, 515 + msm_mux_pa_indicator, 516 + msm_mux_phase_flag0, 517 + msm_mux_phase_flag1, 518 + msm_mux_phase_flag10, 519 + msm_mux_phase_flag11, 520 + msm_mux_phase_flag12, 521 + msm_mux_phase_flag13, 522 + msm_mux_phase_flag14, 523 + msm_mux_phase_flag15, 524 + msm_mux_phase_flag16, 525 + msm_mux_phase_flag17, 526 + msm_mux_phase_flag18, 527 + msm_mux_phase_flag19, 528 + msm_mux_phase_flag2, 529 + msm_mux_phase_flag20, 530 + msm_mux_phase_flag21, 531 + msm_mux_phase_flag22, 532 + msm_mux_phase_flag23, 533 + msm_mux_phase_flag24, 534 + msm_mux_phase_flag25, 535 + msm_mux_phase_flag26, 536 + msm_mux_phase_flag27, 537 + msm_mux_phase_flag28, 538 + msm_mux_phase_flag29, 539 + msm_mux_phase_flag3, 540 + msm_mux_phase_flag30, 541 + msm_mux_phase_flag31, 542 + msm_mux_phase_flag4, 543 + msm_mux_phase_flag5, 544 + msm_mux_phase_flag6, 545 + msm_mux_phase_flag7, 546 + msm_mux_phase_flag8, 547 + msm_mux_phase_flag9, 548 + msm_mux_pll_bist, 549 + msm_mux_pll_bypassnl, 550 + msm_mux_pll_clk, 551 + msm_mux_pll_reset, 552 + msm_mux_prng_rosc0, 553 + msm_mux_prng_rosc1, 554 + msm_mux_prng_rosc2, 555 + msm_mux_prng_rosc3, 556 + msm_mux_qdss_cti, 557 + msm_mux_qdss_gpio, 558 + msm_mux_qdss_gpio0, 559 + msm_mux_qdss_gpio1, 560 + msm_mux_qdss_gpio10, 561 + msm_mux_qdss_gpio11, 562 + msm_mux_qdss_gpio12, 563 + msm_mux_qdss_gpio13, 564 + msm_mux_qdss_gpio14, 565 + msm_mux_qdss_gpio15, 566 + msm_mux_qdss_gpio2, 567 + msm_mux_qdss_gpio3, 568 + msm_mux_qdss_gpio4, 569 + msm_mux_qdss_gpio5, 570 + msm_mux_qdss_gpio6, 571 + msm_mux_qdss_gpio7, 572 + msm_mux_qdss_gpio8, 573 + msm_mux_qdss_gpio9, 574 + msm_mux_qlink0_enable, 575 + msm_mux_qlink0_request, 576 + msm_mux_qlink0_wmss, 577 + msm_mux_qlink1_enable, 578 + msm_mux_qlink1_request, 579 + msm_mux_qlink1_wmss, 580 + msm_mux_qup00, 581 + msm_mux_qup01, 582 + msm_mux_qup02, 583 + msm_mux_qup10, 584 + msm_mux_qup11_f1, 585 + msm_mux_qup11_f2, 586 + msm_mux_qup12, 587 + msm_mux_qup13_f1, 588 + msm_mux_qup13_f2, 589 + msm_mux_qup14, 590 + msm_mux_sd_write, 591 + msm_mux_sdc1_tb, 592 + msm_mux_sdc2_tb, 593 + msm_mux_sp_cmu, 594 + msm_mux_tgu_ch0, 595 + msm_mux_tgu_ch1, 596 + msm_mux_tgu_ch2, 597 + msm_mux_tgu_ch3, 598 + msm_mux_tsense_pwm1, 599 + msm_mux_tsense_pwm2, 600 + msm_mux_uim1_clk, 601 + msm_mux_uim1_data, 602 + msm_mux_uim1_present, 603 + msm_mux_uim1_reset, 604 + msm_mux_uim2_clk, 605 + msm_mux_uim2_data, 606 + msm_mux_uim2_present, 607 + msm_mux_uim2_reset, 608 + msm_mux_usb2phy_ac, 609 + msm_mux_usb_phy, 610 + msm_mux_vfr_1, 611 + msm_mux_vsense_trigger, 612 + msm_mux_wlan1_adc0, 613 + msm_mux_wlan1_adc1, 614 + msm_mux_wlan2_adc0, 615 + msm_mux_wlan2_adc1, 616 + msm_mux__, 617 + }; 618 + 619 + static const char * const gpio_groups[] = { 620 + "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7", 621 + "gpio8", "gpio9", "gpio11", "gpio12", "gpio13", "gpio14", "gpio15", 622 + "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21", "gpio22", 623 + "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28", "gpio29", 624 + "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35", "gpio36", 625 + "gpio37", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42", "gpio43", 626 + "gpio44", "gpio45", "gpio46", "gpio47", "gpio48", "gpio49", "gpio50", 627 + "gpio51", "gpio52", "gpio53", "gpio56", "gpio57", "gpio58", "gpio59", 628 + "gpio60", "gpio61", "gpio62", "gpio63", "gpio64", "gpio65", "gpio66", 629 + "gpio67", "gpio68", "gpio69", "gpio75", "gpio76", "gpio77", "gpio78", 630 + "gpio79", "gpio80", "gpio81", "gpio82", "gpio83", "gpio84", "gpio85", 631 + "gpio86", "gpio87", "gpio88", "gpio89", "gpio90", "gpio91", "gpio92", 632 + "gpio93", "gpio94", "gpio95", "gpio96", "gpio97", "gpio98", "gpio99", 633 + "gpio100", "gpio101", "gpio102", "gpio103", "gpio104", "gpio105", 634 + "gpio106", "gpio107", "gpio108", "gpio109", "gpio110", "gpio111", 635 + "gpio112", "gpio113", "gpio114", "gpio115", "gpio116", "gpio117", 636 + "gpio118", "gpio119", "gpio120", "gpio124", "gpio125", "gpio126", 637 + "gpio127", "gpio128", "gpio129", "gpio130", "gpio131", "gpio132", 638 + "gpio133", "gpio134", "gpio135", "gpio136", "gpio141", "gpio142", 639 + "gpio143", "gpio150", "gpio151", "gpio152", "gpio153", "gpio154", 640 + "gpio155", 641 + }; 642 + static const char * const agera_pll_groups[] = { 643 + "gpio89", 644 + }; 645 + static const char * const cci_async_groups[] = { 646 + "gpio35", "gpio36", "gpio48", "gpio52", "gpio53", 647 + }; 648 + static const char * const cci_i2c_groups[] = { 649 + "gpio2", "gpio3", "gpio39", "gpio40", "gpio41", "gpio42", "gpio43", 650 + "gpio44", 651 + }; 652 + static const char * const gps_tx_groups[] = { 653 + "gpio101", "gpio102", "gpio107", "gpio108", 654 + }; 655 + static const char * const gp_pdm0_groups[] = { 656 + "gpio37", "gpio68", 657 + }; 658 + static const char * const gp_pdm1_groups[] = { 659 + "gpio8", "gpio52", 660 + }; 661 + static const char * const gp_pdm2_groups[] = { 662 + "gpio57", 663 + }; 664 + static const char * const jitter_bist_groups[] = { 665 + "gpio90", 666 + }; 667 + static const char * const mclk_groups[] = { 668 + "gpio93", 669 + }; 670 + static const char * const mdp_vsync_groups[] = { 671 + "gpio6", "gpio23", "gpio24", "gpio27", "gpio28", 672 + }; 673 + static const char * const mss_lte_groups[] = { 674 + "gpio65", "gpio66", 675 + }; 676 + static const char * const nav_pps_groups[] = { 677 + "gpio101", "gpio101", "gpio102", "gpio102", 678 + }; 679 + static const char * const pll_bist_groups[] = { 680 + "gpio27", 681 + }; 682 + static const char * const qlink0_wmss_groups[] = { 683 + "gpio103", 684 + }; 685 + static const char * const qlink1_wmss_groups[] = { 686 + "gpio106", 687 + }; 688 + static const char * const usb_phy_groups[] = { 689 + "gpio124", 690 + }; 691 + static const char * const adsp_ext_groups[] = { 692 + "gpio87", 693 + }; 694 + static const char * const atest_char_groups[] = { 695 + "gpio95", 696 + }; 697 + static const char * const atest_char0_groups[] = { 698 + "gpio96", 699 + }; 700 + static const char * const atest_char1_groups[] = { 701 + "gpio97", 702 + }; 703 + static const char * const atest_char2_groups[] = { 704 + "gpio98", 705 + }; 706 + static const char * const atest_char3_groups[] = { 707 + "gpio99", 708 + }; 709 + static const char * const atest_tsens_groups[] = { 710 + "gpio92", 711 + }; 712 + static const char * const atest_tsens2_groups[] = { 713 + "gpio93", 714 + }; 715 + static const char * const atest_usb1_groups[] = { 716 + "gpio83", 717 + }; 718 + static const char * const atest_usb10_groups[] = { 719 + "gpio84", 720 + }; 721 + static const char * const atest_usb11_groups[] = { 722 + "gpio85", 723 + }; 724 + static const char * const atest_usb12_groups[] = { 725 + "gpio86", 726 + }; 727 + static const char * const atest_usb13_groups[] = { 728 + "gpio87", 729 + }; 730 + static const char * const atest_usb2_groups[] = { 731 + "gpio88", 732 + }; 733 + static const char * const atest_usb20_groups[] = { 734 + "gpio89", 735 + }; 736 + static const char * const atest_usb21_groups[] = { 737 + "gpio90", 738 + }; 739 + static const char * const atest_usb22_groups[] = { 740 + "gpio91", 741 + }; 742 + static const char * const atest_usb23_groups[] = { 743 + "gpio92", 744 + }; 745 + static const char * const audio_ref_groups[] = { 746 + "gpio60", 747 + }; 748 + static const char * const btfm_slimbus_groups[] = { 749 + "gpio67", "gpio68", "gpio86", "gpio87", 750 + }; 751 + static const char * const cam_mclk_groups[] = { 752 + "gpio29", "gpio30", "gpio31", "gpio32", "gpio33", 753 + }; 754 + static const char * const cci_timer0_groups[] = { 755 + "gpio34", 756 + }; 757 + static const char * const cci_timer1_groups[] = { 758 + "gpio35", 759 + }; 760 + static const char * const cci_timer2_groups[] = { 761 + "gpio36", 762 + }; 763 + static const char * const cci_timer3_groups[] = { 764 + "gpio37", 765 + }; 766 + static const char * const cci_timer4_groups[] = { 767 + "gpio38", 768 + }; 769 + static const char * const cri_trng_groups[] = { 770 + "gpio0", "gpio1", "gpio2", 771 + }; 772 + static const char * const dbg_out_groups[] = { 773 + "gpio3", 774 + }; 775 + static const char * const ddr_bist_groups[] = { 776 + "gpio19", "gpio20", "gpio21", "gpio22", 777 + }; 778 + static const char * const ddr_pxi0_groups[] = { 779 + "gpio86", "gpio90", 780 + }; 781 + static const char * const ddr_pxi1_groups[] = { 782 + "gpio87", "gpio91", 783 + }; 784 + static const char * const ddr_pxi2_groups[] = { 785 + "gpio88", "gpio92", 786 + }; 787 + static const char * const ddr_pxi3_groups[] = { 788 + "gpio89", "gpio93", 789 + }; 790 + static const char * const dp_hot_groups[] = { 791 + "gpio12", "gpio118", 792 + }; 793 + static const char * const edp_lcd_groups[] = { 794 + "gpio23", 795 + }; 796 + static const char * const gcc_gp1_groups[] = { 797 + "gpio48", "gpio58", 798 + }; 799 + static const char * const gcc_gp2_groups[] = { 800 + "gpio21", 801 + }; 802 + static const char * const gcc_gp3_groups[] = { 803 + "gpio22", 804 + }; 805 + static const char * const ibi_i3c_groups[] = { 806 + "gpio0", "gpio1", 807 + }; 808 + static const char * const ldo_en_groups[] = { 809 + "gpio95", 810 + }; 811 + static const char * const ldo_update_groups[] = { 812 + "gpio96", 813 + }; 814 + static const char * const lpass_ext_groups[] = { 815 + "gpio60", "gpio93", 816 + }; 817 + static const char * const m_voc_groups[] = { 818 + "gpio12", 819 + }; 820 + static const char * const mdp_vsync0_groups[] = { 821 + "gpio47", 822 + }; 823 + static const char * const mdp_vsync1_groups[] = { 824 + "gpio48", 825 + }; 826 + static const char * const mdp_vsync2_groups[] = { 827 + "gpio56", 828 + }; 829 + static const char * const mdp_vsync3_groups[] = { 830 + "gpio57", 831 + }; 832 + static const char * const mi2s_0_groups[] = { 833 + "gpio88", "gpio89", "gpio90", "gpio91", 834 + }; 835 + static const char * const mi2s_1_groups[] = { 836 + "gpio67", "gpio68", "gpio86", "gpio87", 837 + }; 838 + static const char * const mi2s_2_groups[] = { 839 + "gpio60", 840 + }; 841 + static const char * const nav_gpio_groups[] = { 842 + "gpio101", "gpio102", 843 + }; 844 + static const char * const pa_indicator_groups[] = { 845 + "gpio118", 846 + }; 847 + static const char * const phase_flag0_groups[] = { 848 + "gpio12", 849 + }; 850 + static const char * const phase_flag1_groups[] = { 851 + "gpio17", 852 + }; 853 + static const char * const phase_flag10_groups[] = { 854 + "gpio41", 855 + }; 856 + static const char * const phase_flag11_groups[] = { 857 + "gpio42", 858 + }; 859 + static const char * const phase_flag12_groups[] = { 860 + "gpio43", 861 + }; 862 + static const char * const phase_flag13_groups[] = { 863 + "gpio44", 864 + }; 865 + static const char * const phase_flag14_groups[] = { 866 + "gpio45", 867 + }; 868 + static const char * const phase_flag15_groups[] = { 869 + "gpio46", 870 + }; 871 + static const char * const phase_flag16_groups[] = { 872 + "gpio47", 873 + }; 874 + static const char * const phase_flag17_groups[] = { 875 + "gpio48", 876 + }; 877 + static const char * const phase_flag18_groups[] = { 878 + "gpio49", 879 + }; 880 + static const char * const phase_flag19_groups[] = { 881 + "gpio50", 882 + }; 883 + static const char * const phase_flag2_groups[] = { 884 + "gpio18", 885 + }; 886 + static const char * const phase_flag20_groups[] = { 887 + "gpio51", 888 + }; 889 + static const char * const phase_flag21_groups[] = { 890 + "gpio52", 891 + }; 892 + static const char * const phase_flag22_groups[] = { 893 + "gpio53", 894 + }; 895 + static const char * const phase_flag23_groups[] = { 896 + "gpio56", 897 + }; 898 + static const char * const phase_flag24_groups[] = { 899 + "gpio57", 900 + }; 901 + static const char * const phase_flag25_groups[] = { 902 + "gpio60", 903 + }; 904 + static const char * const phase_flag26_groups[] = { 905 + "gpio61", 906 + }; 907 + static const char * const phase_flag27_groups[] = { 908 + "gpio62", 909 + }; 910 + static const char * const phase_flag28_groups[] = { 911 + "gpio63", 912 + }; 913 + static const char * const phase_flag29_groups[] = { 914 + "gpio64", 915 + }; 916 + static const char * const phase_flag3_groups[] = { 917 + "gpio34", 918 + }; 919 + static const char * const phase_flag30_groups[] = { 920 + "gpio67", 921 + }; 922 + static const char * const phase_flag31_groups[] = { 923 + "gpio68", 924 + }; 925 + static const char * const phase_flag4_groups[] = { 926 + "gpio35", 927 + }; 928 + static const char * const phase_flag5_groups[] = { 929 + "gpio36", 930 + }; 931 + static const char * const phase_flag6_groups[] = { 932 + "gpio37", 933 + }; 934 + static const char * const phase_flag7_groups[] = { 935 + "gpio38", 936 + }; 937 + static const char * const phase_flag8_groups[] = { 938 + "gpio39", 939 + }; 940 + static const char * const phase_flag9_groups[] = { 941 + "gpio40", 942 + }; 943 + static const char * const pll_bypassnl_groups[] = { 944 + "gpio13", 945 + }; 946 + static const char * const pll_clk_groups[] = { 947 + "gpio98", 948 + }; 949 + static const char * const pll_reset_groups[] = { 950 + "gpio14", 951 + }; 952 + static const char * const prng_rosc0_groups[] = { 953 + "gpio97", 954 + }; 955 + static const char * const prng_rosc1_groups[] = { 956 + "gpio98", 957 + }; 958 + static const char * const prng_rosc2_groups[] = { 959 + "gpio99", 960 + }; 961 + static const char * const prng_rosc3_groups[] = { 962 + "gpio100", 963 + }; 964 + static const char * const qdss_cti_groups[] = { 965 + "gpio2", "gpio3", "gpio6", "gpio7", "gpio61", "gpio62", "gpio86", 966 + "gpio87", 967 + }; 968 + static const char * const qdss_gpio_groups[] = { 969 + "gpio8", "gpio9", "gpio63", "gpio64", 970 + }; 971 + static const char * const qdss_gpio0_groups[] = { 972 + "gpio39", "gpio65", 973 + }; 974 + static const char * const qdss_gpio1_groups[] = { 975 + "gpio40", "gpio66", 976 + }; 977 + static const char * const qdss_gpio10_groups[] = { 978 + "gpio50", "gpio56", 979 + }; 980 + static const char * const qdss_gpio11_groups[] = { 981 + "gpio51", "gpio57", 982 + }; 983 + static const char * const qdss_gpio12_groups[] = { 984 + "gpio34", "gpio52", 985 + }; 986 + static const char * const qdss_gpio13_groups[] = { 987 + "gpio35", "gpio53", 988 + }; 989 + static const char * const qdss_gpio14_groups[] = { 990 + "gpio27", "gpio36", 991 + }; 992 + static const char * const qdss_gpio15_groups[] = { 993 + "gpio28", "gpio37", 994 + }; 995 + static const char * const qdss_gpio2_groups[] = { 996 + "gpio38", "gpio41", 997 + }; 998 + static const char * const qdss_gpio3_groups[] = { 999 + "gpio42", "gpio47", 1000 + }; 1001 + static const char * const qdss_gpio4_groups[] = { 1002 + "gpio43", "gpio88", 1003 + }; 1004 + static const char * const qdss_gpio5_groups[] = { 1005 + "gpio44", "gpio89", 1006 + }; 1007 + static const char * const qdss_gpio6_groups[] = { 1008 + "gpio45", "gpio90", 1009 + }; 1010 + static const char * const qdss_gpio7_groups[] = { 1011 + "gpio46", "gpio91", 1012 + }; 1013 + static const char * const qdss_gpio8_groups[] = { 1014 + "gpio48", "gpio92", 1015 + }; 1016 + static const char * const qdss_gpio9_groups[] = { 1017 + "gpio49", "gpio93", 1018 + }; 1019 + static const char * const qlink0_enable_groups[] = { 1020 + "gpio105", 1021 + }; 1022 + static const char * const qlink0_request_groups[] = { 1023 + "gpio104", 1024 + }; 1025 + static const char * const qlink1_enable_groups[] = { 1026 + "gpio108", 1027 + }; 1028 + static const char * const qlink1_request_groups[] = { 1029 + "gpio107", 1030 + }; 1031 + static const char * const qup00_groups[] = { 1032 + "gpio0", "gpio1", "gpio2", "gpio3", 1033 + }; 1034 + static const char * const qup01_groups[] = { 1035 + "gpio61", "gpio62", "gpio63", "gpio64", 1036 + }; 1037 + static const char * const qup02_groups[] = { 1038 + "gpio45", "gpio46", "gpio48", "gpio56", "gpio57", 1039 + }; 1040 + static const char * const qup10_groups[] = { 1041 + "gpio13", "gpio14", "gpio15", "gpio16", "gpio17", 1042 + }; 1043 + static const char * const qup11_f1_groups[] = { 1044 + "gpio27", "gpio28", 1045 + }; 1046 + static const char * const qup11_f2_groups[] = { 1047 + "gpio27", "gpio28", 1048 + }; 1049 + 1050 + static const char * const qup12_groups[] = { 1051 + "gpio19", "gpio19", "gpio20", "gpio20", 1052 + }; 1053 + static const char * const qup13_f1_groups[] = { 1054 + "gpio25", "gpio26", 1055 + }; 1056 + static const char * const qup13_f2_groups[] = { 1057 + "gpio25", "gpio26", 1058 + }; 1059 + static const char * const qup14_groups[] = { 1060 + "gpio4", "gpio4", "gpio5", "gpio5", 1061 + }; 1062 + static const char * const sd_write_groups[] = { 1063 + "gpio85", 1064 + }; 1065 + static const char * const sdc1_tb_groups[] = { 1066 + "gpio4", 1067 + }; 1068 + static const char * const sdc2_tb_groups[] = { 1069 + "gpio5", 1070 + }; 1071 + static const char * const sp_cmu_groups[] = { 1072 + "gpio3", 1073 + }; 1074 + static const char * const tgu_ch0_groups[] = { 1075 + "gpio61", 1076 + }; 1077 + static const char * const tgu_ch1_groups[] = { 1078 + "gpio62", 1079 + }; 1080 + static const char * const tgu_ch2_groups[] = { 1081 + "gpio63", 1082 + }; 1083 + static const char * const tgu_ch3_groups[] = { 1084 + "gpio64", 1085 + }; 1086 + static const char * const tsense_pwm1_groups[] = { 1087 + "gpio88", 1088 + }; 1089 + static const char * const tsense_pwm2_groups[] = { 1090 + "gpio88", 1091 + }; 1092 + static const char * const uim1_clk_groups[] = { 1093 + "gpio80", 1094 + }; 1095 + static const char * const uim1_data_groups[] = { 1096 + "gpio79", 1097 + }; 1098 + static const char * const uim1_present_groups[] = { 1099 + "gpio82", 1100 + }; 1101 + static const char * const uim1_reset_groups[] = { 1102 + "gpio81", 1103 + }; 1104 + static const char * const uim2_clk_groups[] = { 1105 + "gpio76", 1106 + }; 1107 + static const char * const uim2_data_groups[] = { 1108 + "gpio75", 1109 + }; 1110 + static const char * const uim2_present_groups[] = { 1111 + "gpio78", 1112 + }; 1113 + static const char * const uim2_reset_groups[] = { 1114 + "gpio77", 1115 + }; 1116 + static const char * const usb2phy_ac_groups[] = { 1117 + "gpio47", 1118 + }; 1119 + static const char * const vfr_1_groups[] = { 1120 + "gpio49", 1121 + }; 1122 + static const char * const vsense_trigger_groups[] = { 1123 + "gpio89", 1124 + }; 1125 + static const char * const wlan1_adc0_groups[] = { 1126 + "gpio90", 1127 + }; 1128 + static const char * const wlan1_adc1_groups[] = { 1129 + "gpio92", 1130 + }; 1131 + static const char * const wlan2_adc0_groups[] = { 1132 + "gpio91", 1133 + }; 1134 + static const char * const wlan2_adc1_groups[] = { 1135 + "gpio93", 1136 + }; 1137 + 1138 + static const struct msm_function sm6375_functions[] = { 1139 + FUNCTION(adsp_ext), 1140 + FUNCTION(agera_pll), 1141 + FUNCTION(atest_char), 1142 + FUNCTION(atest_char0), 1143 + FUNCTION(atest_char1), 1144 + FUNCTION(atest_char2), 1145 + FUNCTION(atest_char3), 1146 + FUNCTION(atest_tsens), 1147 + FUNCTION(atest_tsens2), 1148 + FUNCTION(atest_usb1), 1149 + FUNCTION(atest_usb10), 1150 + FUNCTION(atest_usb11), 1151 + FUNCTION(atest_usb12), 1152 + FUNCTION(atest_usb13), 1153 + FUNCTION(atest_usb2), 1154 + FUNCTION(atest_usb20), 1155 + FUNCTION(atest_usb21), 1156 + FUNCTION(atest_usb22), 1157 + FUNCTION(atest_usb23), 1158 + FUNCTION(audio_ref), 1159 + FUNCTION(btfm_slimbus), 1160 + FUNCTION(cam_mclk), 1161 + FUNCTION(cci_async), 1162 + FUNCTION(cci_i2c), 1163 + FUNCTION(cci_timer0), 1164 + FUNCTION(cci_timer1), 1165 + FUNCTION(cci_timer2), 1166 + FUNCTION(cci_timer3), 1167 + FUNCTION(cci_timer4), 1168 + FUNCTION(cri_trng), 1169 + FUNCTION(dbg_out), 1170 + FUNCTION(ddr_bist), 1171 + FUNCTION(ddr_pxi0), 1172 + FUNCTION(ddr_pxi1), 1173 + FUNCTION(ddr_pxi2), 1174 + FUNCTION(ddr_pxi3), 1175 + FUNCTION(dp_hot), 1176 + FUNCTION(edp_lcd), 1177 + FUNCTION(gcc_gp1), 1178 + FUNCTION(gcc_gp2), 1179 + FUNCTION(gcc_gp3), 1180 + FUNCTION(gp_pdm0), 1181 + FUNCTION(gp_pdm1), 1182 + FUNCTION(gp_pdm2), 1183 + FUNCTION(gpio), 1184 + FUNCTION(gps_tx), 1185 + FUNCTION(ibi_i3c), 1186 + FUNCTION(jitter_bist), 1187 + FUNCTION(ldo_en), 1188 + FUNCTION(ldo_update), 1189 + FUNCTION(lpass_ext), 1190 + FUNCTION(m_voc), 1191 + FUNCTION(mclk), 1192 + FUNCTION(mdp_vsync), 1193 + FUNCTION(mdp_vsync0), 1194 + FUNCTION(mdp_vsync1), 1195 + FUNCTION(mdp_vsync2), 1196 + FUNCTION(mdp_vsync3), 1197 + FUNCTION(mi2s_0), 1198 + FUNCTION(mi2s_1), 1199 + FUNCTION(mi2s_2), 1200 + FUNCTION(mss_lte), 1201 + FUNCTION(nav_gpio), 1202 + FUNCTION(nav_pps), 1203 + FUNCTION(pa_indicator), 1204 + FUNCTION(phase_flag0), 1205 + FUNCTION(phase_flag1), 1206 + FUNCTION(phase_flag10), 1207 + FUNCTION(phase_flag11), 1208 + FUNCTION(phase_flag12), 1209 + FUNCTION(phase_flag13), 1210 + FUNCTION(phase_flag14), 1211 + FUNCTION(phase_flag15), 1212 + FUNCTION(phase_flag16), 1213 + FUNCTION(phase_flag17), 1214 + FUNCTION(phase_flag18), 1215 + FUNCTION(phase_flag19), 1216 + FUNCTION(phase_flag2), 1217 + FUNCTION(phase_flag20), 1218 + FUNCTION(phase_flag21), 1219 + FUNCTION(phase_flag22), 1220 + FUNCTION(phase_flag23), 1221 + FUNCTION(phase_flag24), 1222 + FUNCTION(phase_flag25), 1223 + FUNCTION(phase_flag26), 1224 + FUNCTION(phase_flag27), 1225 + FUNCTION(phase_flag28), 1226 + FUNCTION(phase_flag29), 1227 + FUNCTION(phase_flag3), 1228 + FUNCTION(phase_flag30), 1229 + FUNCTION(phase_flag31), 1230 + FUNCTION(phase_flag4), 1231 + FUNCTION(phase_flag5), 1232 + FUNCTION(phase_flag6), 1233 + FUNCTION(phase_flag7), 1234 + FUNCTION(phase_flag8), 1235 + FUNCTION(phase_flag9), 1236 + FUNCTION(pll_bist), 1237 + FUNCTION(pll_bypassnl), 1238 + FUNCTION(pll_clk), 1239 + FUNCTION(pll_reset), 1240 + FUNCTION(prng_rosc0), 1241 + FUNCTION(prng_rosc1), 1242 + FUNCTION(prng_rosc2), 1243 + FUNCTION(prng_rosc3), 1244 + FUNCTION(qdss_cti), 1245 + FUNCTION(qdss_gpio), 1246 + FUNCTION(qdss_gpio0), 1247 + FUNCTION(qdss_gpio1), 1248 + FUNCTION(qdss_gpio10), 1249 + FUNCTION(qdss_gpio11), 1250 + FUNCTION(qdss_gpio12), 1251 + FUNCTION(qdss_gpio13), 1252 + FUNCTION(qdss_gpio14), 1253 + FUNCTION(qdss_gpio15), 1254 + FUNCTION(qdss_gpio2), 1255 + FUNCTION(qdss_gpio3), 1256 + FUNCTION(qdss_gpio4), 1257 + FUNCTION(qdss_gpio5), 1258 + FUNCTION(qdss_gpio6), 1259 + FUNCTION(qdss_gpio7), 1260 + FUNCTION(qdss_gpio8), 1261 + FUNCTION(qdss_gpio9), 1262 + FUNCTION(qlink0_enable), 1263 + FUNCTION(qlink0_request), 1264 + FUNCTION(qlink0_wmss), 1265 + FUNCTION(qlink1_enable), 1266 + FUNCTION(qlink1_request), 1267 + FUNCTION(qlink1_wmss), 1268 + FUNCTION(qup00), 1269 + FUNCTION(qup01), 1270 + FUNCTION(qup02), 1271 + FUNCTION(qup10), 1272 + FUNCTION(qup11_f1), 1273 + FUNCTION(qup11_f2), 1274 + FUNCTION(qup12), 1275 + FUNCTION(qup13_f1), 1276 + FUNCTION(qup13_f2), 1277 + FUNCTION(qup14), 1278 + FUNCTION(sd_write), 1279 + FUNCTION(sdc1_tb), 1280 + FUNCTION(sdc2_tb), 1281 + FUNCTION(sp_cmu), 1282 + FUNCTION(tgu_ch0), 1283 + FUNCTION(tgu_ch1), 1284 + FUNCTION(tgu_ch2), 1285 + FUNCTION(tgu_ch3), 1286 + FUNCTION(tsense_pwm1), 1287 + FUNCTION(tsense_pwm2), 1288 + FUNCTION(uim1_clk), 1289 + FUNCTION(uim1_data), 1290 + FUNCTION(uim1_present), 1291 + FUNCTION(uim1_reset), 1292 + FUNCTION(uim2_clk), 1293 + FUNCTION(uim2_data), 1294 + FUNCTION(uim2_present), 1295 + FUNCTION(uim2_reset), 1296 + FUNCTION(usb2phy_ac), 1297 + FUNCTION(usb_phy), 1298 + FUNCTION(vfr_1), 1299 + FUNCTION(vsense_trigger), 1300 + FUNCTION(wlan1_adc0), 1301 + FUNCTION(wlan1_adc1), 1302 + FUNCTION(wlan2_adc0), 1303 + FUNCTION(wlan2_adc1), 1304 + }; 1305 + 1306 + /* 1307 + * Every pin is maintained as a single group, and missing or non-existing pin 1308 + * would be maintained as dummy group to synchronize pin group index with 1309 + * pin descriptor registered with pinctrl core. 1310 + * Clients would not be able to request these dummy pin groups. 1311 + */ 1312 + static const struct msm_pingroup sm6375_groups[] = { 1313 + [0] = PINGROUP(0, ibi_i3c, qup00, cri_trng, _, _, _, _, _, _), 1314 + [1] = PINGROUP(1, ibi_i3c, qup00, cri_trng, _, _, _, _, _, _), 1315 + [2] = PINGROUP(2, qup00, cci_i2c, cri_trng, qdss_cti, _, _, _, _, _), 1316 + [3] = PINGROUP(3, qup00, cci_i2c, sp_cmu, dbg_out, qdss_cti, _, _, _, _), 1317 + [4] = PINGROUP(4, qup14, qup14, sdc1_tb, _, _, _, _, _, _), 1318 + [5] = PINGROUP(5, qup14, qup14, sdc2_tb, _, _, _, _, _, _), 1319 + [6] = PINGROUP(6, mdp_vsync, qdss_cti, _, _, _, _, _, _, _), 1320 + [7] = PINGROUP(7, qdss_cti, _, _, _, _, _, _, _, _), 1321 + [8] = PINGROUP(8, gp_pdm1, qdss_gpio, _, _, _, _, _, _, _), 1322 + [9] = PINGROUP(9, qdss_gpio, _, _, _, _, _, _, _, _), 1323 + [10] = PINGROUP(10, _, _, _, _, _, _, _, _, _), 1324 + [11] = PINGROUP(11, _, _, _, _, _, _, _, _, _), 1325 + [12] = PINGROUP(12, m_voc, dp_hot, _, phase_flag0, _, _, _, _, _), 1326 + [13] = PINGROUP(13, qup10, pll_bypassnl, _, _, _, _, _, _, _), 1327 + [14] = PINGROUP(14, qup10, pll_reset, _, _, _, _, _, _, _), 1328 + [15] = PINGROUP(15, qup10, _, _, _, _, _, _, _, _), 1329 + [16] = PINGROUP(16, qup10, _, _, _, _, _, _, _, _), 1330 + [17] = PINGROUP(17, _, phase_flag1, qup10, _, _, _, _, _, _), 1331 + [18] = PINGROUP(18, _, phase_flag2, _, _, _, _, _, _, _), 1332 + [19] = PINGROUP(19, qup12, qup12, ddr_bist, _, _, _, _, _, _), 1333 + [20] = PINGROUP(20, qup12, qup12, ddr_bist, _, _, _, _, _, _), 1334 + [21] = PINGROUP(21, gcc_gp2, ddr_bist, _, _, _, _, _, _, _), 1335 + [22] = PINGROUP(22, gcc_gp3, ddr_bist, _, _, _, _, _, _, _), 1336 + [23] = PINGROUP(23, mdp_vsync, edp_lcd, _, _, _, _, _, _, _), 1337 + [24] = PINGROUP(24, mdp_vsync, _, _, _, _, _, _, _, _), 1338 + [25] = PINGROUP(25, qup13_f1, qup13_f2, _, _, _, _, _, _, _), 1339 + [26] = PINGROUP(26, qup13_f1, qup13_f2, _, _, _, _, _, _, _), 1340 + [27] = PINGROUP(27, qup11_f1, qup11_f2, mdp_vsync, pll_bist, _, qdss_gpio14, _, _, _), 1341 + [28] = PINGROUP(28, qup11_f1, qup11_f2, mdp_vsync, _, qdss_gpio15, _, _, _, _), 1342 + [29] = PINGROUP(29, cam_mclk, _, _, _, _, _, _, _, _), 1343 + [30] = PINGROUP(30, cam_mclk, _, _, _, _, _, _, _, _), 1344 + [31] = PINGROUP(31, cam_mclk, _, _, _, _, _, _, _, _), 1345 + [32] = PINGROUP(32, cam_mclk, _, _, _, _, _, _, _, _), 1346 + [33] = PINGROUP(33, cam_mclk, _, _, _, _, _, _, _, _), 1347 + [34] = PINGROUP(34, cci_timer0, _, phase_flag3, qdss_gpio12, _, _, _, _, _), 1348 + [35] = PINGROUP(35, cci_timer1, cci_async, _, phase_flag4, qdss_gpio13, _, _, _, _), 1349 + [36] = PINGROUP(36, cci_timer2, cci_async, _, phase_flag5, qdss_gpio14, _, _, _, _), 1350 + [37] = PINGROUP(37, cci_timer3, gp_pdm0, _, phase_flag6, qdss_gpio15, _, _, _, _), 1351 + [38] = PINGROUP(38, cci_timer4, _, phase_flag7, qdss_gpio2, _, _, _, _, _), 1352 + [39] = PINGROUP(39, cci_i2c, _, phase_flag8, qdss_gpio0, _, _, _, _, _), 1353 + [40] = PINGROUP(40, cci_i2c, _, phase_flag9, qdss_gpio1, _, _, _, _, _), 1354 + [41] = PINGROUP(41, cci_i2c, _, phase_flag10, qdss_gpio2, _, _, _, _, _), 1355 + [42] = PINGROUP(42, cci_i2c, _, phase_flag11, qdss_gpio3, _, _, _, _, _), 1356 + [43] = PINGROUP(43, cci_i2c, _, phase_flag12, qdss_gpio4, _, _, _, _, _), 1357 + [44] = PINGROUP(44, cci_i2c, _, phase_flag13, qdss_gpio5, _, _, _, _, _), 1358 + [45] = PINGROUP(45, qup02, _, phase_flag14, qdss_gpio6, _, _, _, _, _), 1359 + [46] = PINGROUP(46, qup02, _, phase_flag15, qdss_gpio7, _, _, _, _, _), 1360 + [47] = PINGROUP(47, mdp_vsync0, _, phase_flag16, qdss_gpio3, _, _, usb2phy_ac, _, _), 1361 + [48] = PINGROUP(48, cci_async, mdp_vsync1, gcc_gp1, _, phase_flag17, qdss_gpio8, qup02, 1362 + _, _), 1363 + [49] = PINGROUP(49, vfr_1, _, phase_flag18, qdss_gpio9, _, _, _, _, _), 1364 + [50] = PINGROUP(50, _, phase_flag19, qdss_gpio10, _, _, _, _, _, _), 1365 + [51] = PINGROUP(51, _, phase_flag20, qdss_gpio11, _, _, _, _, _, _), 1366 + [52] = PINGROUP(52, cci_async, gp_pdm1, _, phase_flag21, qdss_gpio12, _, _, _, _), 1367 + [53] = PINGROUP(53, cci_async, _, phase_flag22, qdss_gpio13, _, _, _, _, _), 1368 + [54] = PINGROUP(54, _, _, _, _, _, _, _, _, _), 1369 + [55] = PINGROUP(55, _, _, _, _, _, _, _, _, _), 1370 + [56] = PINGROUP(56, qup02, mdp_vsync2, _, phase_flag23, qdss_gpio10, _, _, _, _), 1371 + [57] = PINGROUP(57, qup02, mdp_vsync3, gp_pdm2, _, phase_flag24, qdss_gpio11, _, _, _), 1372 + [58] = PINGROUP(58, gcc_gp1, _, _, _, _, _, _, _, _), 1373 + [59] = PINGROUP(59, _, _, _, _, _, _, _, _, _), 1374 + [60] = PINGROUP(60, audio_ref, lpass_ext, mi2s_2, _, phase_flag25, _, _, _, _), 1375 + [61] = PINGROUP(61, qup01, tgu_ch0, _, phase_flag26, qdss_cti, _, _, _, _), 1376 + [62] = PINGROUP(62, qup01, tgu_ch1, _, phase_flag27, qdss_cti, _, _, _, _), 1377 + [63] = PINGROUP(63, qup01, tgu_ch2, _, phase_flag28, qdss_gpio, _, _, _, _), 1378 + [64] = PINGROUP(64, qup01, tgu_ch3, _, phase_flag29, qdss_gpio, _, _, _, _), 1379 + [65] = PINGROUP(65, mss_lte, _, qdss_gpio0, _, _, _, _, _, _), 1380 + [66] = PINGROUP(66, mss_lte, _, qdss_gpio1, _, _, _, _, _, _), 1381 + [67] = PINGROUP(67, btfm_slimbus, mi2s_1, _, phase_flag30, _, _, _, _, _), 1382 + [68] = PINGROUP(68, btfm_slimbus, mi2s_1, gp_pdm0, _, phase_flag31, _, _, _, _), 1383 + [69] = PINGROUP(69, _, _, _, _, _, _, _, _, _), 1384 + [70] = PINGROUP(70, _, _, _, _, _, _, _, _, _), 1385 + [71] = PINGROUP(71, _, _, _, _, _, _, _, _, _), 1386 + [72] = PINGROUP(72, _, _, _, _, _, _, _, _, _), 1387 + [73] = PINGROUP(73, _, _, _, _, _, _, _, _, _), 1388 + [74] = PINGROUP(74, _, _, _, _, _, _, _, _, _), 1389 + [75] = PINGROUP(75, uim2_data, _, _, _, _, _, _, _, _), 1390 + [76] = PINGROUP(76, uim2_clk, _, _, _, _, _, _, _, _), 1391 + [77] = PINGROUP(77, uim2_reset, _, _, _, _, _, _, _, _), 1392 + [78] = PINGROUP(78, uim2_present, _, _, _, _, _, _, _, _), 1393 + [79] = PINGROUP(79, uim1_data, _, _, _, _, _, _, _, _), 1394 + [80] = PINGROUP(80, uim1_clk, _, _, _, _, _, _, _, _), 1395 + [81] = PINGROUP(81, uim1_reset, _, _, _, _, _, _, _, _), 1396 + [82] = PINGROUP(82, uim1_present, _, _, _, _, _, _, _, _), 1397 + [83] = PINGROUP(83, atest_usb1, _, _, _, _, _, _, _, _), 1398 + [84] = PINGROUP(84, _, atest_usb10, _, _, _, _, _, _, _), 1399 + [85] = PINGROUP(85, sd_write, _, atest_usb11, _, _, _, _, _, _), 1400 + [86] = PINGROUP(86, btfm_slimbus, mi2s_1, _, qdss_cti, atest_usb12, ddr_pxi0, _, _, _), 1401 + [87] = PINGROUP(87, btfm_slimbus, mi2s_1, adsp_ext, _, qdss_cti, atest_usb13, ddr_pxi1, _, 1402 + _), 1403 + [88] = PINGROUP(88, mi2s_0, _, qdss_gpio4, _, atest_usb2, ddr_pxi2, tsense_pwm1, 1404 + tsense_pwm2, _), 1405 + [89] = PINGROUP(89, mi2s_0, agera_pll, _, qdss_gpio5, _, vsense_trigger, atest_usb20, 1406 + ddr_pxi3, _), 1407 + [90] = PINGROUP(90, mi2s_0, jitter_bist, _, qdss_gpio6, _, wlan1_adc0, atest_usb21, 1408 + ddr_pxi0, _), 1409 + [91] = PINGROUP(91, mi2s_0, _, qdss_gpio7, _, wlan2_adc0, atest_usb22, ddr_pxi1, _, _), 1410 + [92] = PINGROUP(92, _, qdss_gpio8, atest_tsens, wlan1_adc1, atest_usb23, ddr_pxi2, _, _, 1411 + _), 1412 + [93] = PINGROUP(93, mclk, lpass_ext, _, qdss_gpio9, atest_tsens2, wlan2_adc1, ddr_pxi3, 1413 + _, _), 1414 + [94] = PINGROUP(94, _, _, _, _, _, _, _, _, _), 1415 + [95] = PINGROUP(95, ldo_en, _, atest_char, _, _, _, _, _, _), 1416 + [96] = PINGROUP(96, ldo_update, _, atest_char0, _, _, _, _, _, _), 1417 + [97] = PINGROUP(97, prng_rosc0, _, atest_char1, _, _, _, _, _, _), 1418 + [98] = PINGROUP(98, _, atest_char2, _, _, prng_rosc1, pll_clk, _, _, _), 1419 + [99] = PINGROUP(99, _, atest_char3, _, _, prng_rosc2, _, _, _, _), 1420 + [100] = PINGROUP(100, _, _, prng_rosc3, _, _, _, _, _, _), 1421 + [101] = PINGROUP(101, nav_gpio, nav_pps, nav_pps, gps_tx, _, _, _, _, _), 1422 + [102] = PINGROUP(102, nav_gpio, nav_pps, nav_pps, gps_tx, _, _, _, _, _), 1423 + [103] = PINGROUP(103, qlink0_wmss, _, _, _, _, _, _, _, _), 1424 + [104] = PINGROUP(104, qlink0_request, _, _, _, _, _, _, _, _), 1425 + [105] = PINGROUP(105, qlink0_enable, _, _, _, _, _, _, _, _), 1426 + [106] = PINGROUP(106, qlink1_wmss, _, _, _, _, _, _, _, _), 1427 + [107] = PINGROUP(107, qlink1_request, gps_tx, _, _, _, _, _, _, _), 1428 + [108] = PINGROUP(108, qlink1_enable, gps_tx, _, _, _, _, _, _, _), 1429 + [109] = PINGROUP(109, _, _, _, _, _, _, _, _, _), 1430 + [110] = PINGROUP(110, _, _, _, _, _, _, _, _, _), 1431 + [111] = PINGROUP(111, _, _, _, _, _, _, _, _, _), 1432 + [112] = PINGROUP(112, _, _, _, _, _, _, _, _, _), 1433 + [113] = PINGROUP(113, _, _, _, _, _, _, _, _, _), 1434 + [114] = PINGROUP(114, _, _, _, _, _, _, _, _, _), 1435 + [115] = PINGROUP(115, _, _, _, _, _, _, _, _, _), 1436 + [116] = PINGROUP(116, _, _, _, _, _, _, _, _, _), 1437 + [117] = PINGROUP(117, _, _, _, _, _, _, _, _, _), 1438 + [118] = PINGROUP(118, _, _, pa_indicator, dp_hot, _, _, _, _, _), 1439 + [119] = PINGROUP(119, _, _, _, _, _, _, _, _, _), 1440 + [120] = PINGROUP(120, _, _, _, _, _, _, _, _, _), 1441 + [121] = PINGROUP(121, _, _, _, _, _, _, _, _, _), 1442 + [122] = PINGROUP(122, _, _, _, _, _, _, _, _, _), 1443 + [123] = PINGROUP(123, _, _, _, _, _, _, _, _, _), 1444 + [124] = PINGROUP(124, usb_phy, _, _, _, _, _, _, _, _), 1445 + [125] = PINGROUP(125, _, _, _, _, _, _, _, _, _), 1446 + [126] = PINGROUP(126, _, _, _, _, _, _, _, _, _), 1447 + [127] = PINGROUP(127, _, _, _, _, _, _, _, _, _), 1448 + [128] = PINGROUP(128, _, _, _, _, _, _, _, _, _), 1449 + [129] = PINGROUP(129, _, _, _, _, _, _, _, _, _), 1450 + [130] = PINGROUP(130, _, _, _, _, _, _, _, _, _), 1451 + [131] = PINGROUP(131, _, _, _, _, _, _, _, _, _), 1452 + [132] = PINGROUP(132, _, _, _, _, _, _, _, _, _), 1453 + [133] = PINGROUP(133, _, _, _, _, _, _, _, _, _), 1454 + [134] = PINGROUP(134, _, _, _, _, _, _, _, _, _), 1455 + [135] = PINGROUP(135, _, _, _, _, _, _, _, _, _), 1456 + [136] = PINGROUP(136, _, _, _, _, _, _, _, _, _), 1457 + [137] = PINGROUP(137, _, _, _, _, _, _, _, _, _), 1458 + [138] = PINGROUP(138, _, _, _, _, _, _, _, _, _), 1459 + [139] = PINGROUP(139, _, _, _, _, _, _, _, _, _), 1460 + [140] = PINGROUP(140, _, _, _, _, _, _, _, _, _), 1461 + [141] = PINGROUP(141, _, _, _, _, _, _, _, _, _), 1462 + [142] = PINGROUP(142, _, _, _, _, _, _, _, _, _), 1463 + [143] = PINGROUP(143, _, _, _, _, _, _, _, _, _), 1464 + [144] = PINGROUP(144, _, _, _, _, _, _, _, _, _), 1465 + [145] = PINGROUP(145, _, _, _, _, _, _, _, _, _), 1466 + [146] = PINGROUP(146, _, _, _, _, _, _, _, _, _), 1467 + [147] = PINGROUP(147, _, _, _, _, _, _, _, _, _), 1468 + [148] = PINGROUP(148, _, _, _, _, _, _, _, _, _), 1469 + [149] = PINGROUP(149, _, _, _, _, _, _, _, _, _), 1470 + [150] = PINGROUP(150, _, _, _, _, _, _, _, _, _), 1471 + [151] = PINGROUP(151, _, _, _, _, _, _, _, _, _), 1472 + [152] = PINGROUP(152, _, _, _, _, _, _, _, _, _), 1473 + [153] = PINGROUP(153, _, _, _, _, _, _, _, _, _), 1474 + [154] = PINGROUP(154, _, _, _, _, _, _, _, _, _), 1475 + [155] = PINGROUP(155, _, _, _, _, _, _, _, _, _), 1476 + [156] = UFS_RESET(ufs_reset, 0x1ae000), 1477 + [157] = SDC_PINGROUP(sdc1_rclk, 0x1a1000, 0, 0), 1478 + [158] = SDC_PINGROUP(sdc1_clk, 0x1a0000, 13, 6), 1479 + [159] = SDC_PINGROUP(sdc1_cmd, 0x1a0000, 11, 3), 1480 + [160] = SDC_PINGROUP(sdc1_data, 0x1a0000, 9, 0), 1481 + [161] = SDC_PINGROUP(sdc2_clk, 0x1a2000, 14, 6), 1482 + [162] = SDC_PINGROUP(sdc2_cmd, 0x1a2000, 11, 3), 1483 + [163] = SDC_PINGROUP(sdc2_data, 0x1a2000, 9, 0), 1484 + }; 1485 + 1486 + static const struct msm_gpio_wakeirq_map sm6375_mpm_map[] = { 1487 + { 0, 84 }, { 3, 6 }, { 4, 7 }, { 7, 8 }, { 8, 9 }, { 9, 10 }, { 11, 11 }, { 12, 13 }, 1488 + { 13, 14 }, { 16, 16 }, { 17, 17 }, { 18, 18 }, { 19, 19 }, { 21, 20 }, { 22, 21 }, 1489 + { 23, 23 }, { 24, 24 }, { 25, 25 }, { 27, 26 }, { 28, 27 }, { 37, 28 }, { 38, 29 }, 1490 + { 48, 30 }, { 50, 31 }, { 51, 32 }, { 52, 33 }, { 57, 34 }, { 59, 35 }, { 60, 37 }, 1491 + { 61, 38 }, { 62, 39 }, { 64, 40 }, { 66, 41 }, { 67, 42 }, { 68, 43 }, { 69, 44 }, 1492 + { 78, 45 }, { 82, 36 }, { 83, 47 }, { 84, 48 }, { 85, 49 }, { 87, 50 }, { 88, 51 }, 1493 + { 91, 52 }, { 94, 53 }, { 95, 54 }, { 96, 55 }, { 97, 56 }, { 98, 57 }, { 99, 58 }, 1494 + { 100, 59 }, { 104, 60 }, { 107, 61 }, { 118, 62 }, { 124, 63 }, { 125, 64 }, { 126, 65 }, 1495 + { 128, 66 }, { 129, 67 }, { 131, 69 }, { 133, 70 }, { 134, 71 }, { 136, 73 }, { 142, 74 }, 1496 + { 150, 75 }, { 153, 76 }, { 155, 77 }, 1497 + }; 1498 + 1499 + static const struct msm_pinctrl_soc_data sm6375_tlmm = { 1500 + .pins = sm6375_pins, 1501 + .npins = ARRAY_SIZE(sm6375_pins), 1502 + .functions = sm6375_functions, 1503 + .nfunctions = ARRAY_SIZE(sm6375_functions), 1504 + .groups = sm6375_groups, 1505 + .ngroups = ARRAY_SIZE(sm6375_groups), 1506 + .ngpios = 157, 1507 + .wakeirq_map = sm6375_mpm_map, 1508 + .nwakeirq_map = ARRAY_SIZE(sm6375_mpm_map), 1509 + }; 1510 + 1511 + static int sm6375_tlmm_probe(struct platform_device *pdev) 1512 + { 1513 + return msm_pinctrl_probe(pdev, &sm6375_tlmm); 1514 + } 1515 + 1516 + static const struct of_device_id sm6375_tlmm_of_match[] = { 1517 + { .compatible = "qcom,sm6375-tlmm", }, 1518 + { }, 1519 + }; 1520 + 1521 + static struct platform_driver sm6375_tlmm_driver = { 1522 + .driver = { 1523 + .name = "sm6375-tlmm", 1524 + .of_match_table = sm6375_tlmm_of_match, 1525 + }, 1526 + .probe = sm6375_tlmm_probe, 1527 + .remove = msm_pinctrl_remove, 1528 + }; 1529 + 1530 + static int __init sm6375_tlmm_init(void) 1531 + { 1532 + return platform_driver_register(&sm6375_tlmm_driver); 1533 + } 1534 + arch_initcall(sm6375_tlmm_init); 1535 + 1536 + static void __exit sm6375_tlmm_exit(void) 1537 + { 1538 + platform_driver_unregister(&sm6375_tlmm_driver); 1539 + } 1540 + module_exit(sm6375_tlmm_exit); 1541 + 1542 + MODULE_DESCRIPTION("QTI SM6375 TLMM driver"); 1543 + MODULE_LICENSE("GPL"); 1544 + MODULE_DEVICE_TABLE(of, sm6375_tlmm_of_match);
+1 -1
drivers/pinctrl/qcom/pinctrl-sm8250.c
··· 1316 1316 static const struct msm_gpio_wakeirq_map sm8250_pdc_map[] = { 1317 1317 { 0, 79 }, { 1, 84 }, { 2, 80 }, { 3, 82 }, { 4, 107 }, { 7, 43 }, 1318 1318 { 11, 42 }, { 14, 44 }, { 15, 52 }, { 19, 67 }, { 23, 68 }, { 24, 105 }, 1319 - { 27, 92 }, { 28, 106 }, { 31, 69 }, { 35, 70 }, { 39, 37 }, 1319 + { 27, 92 }, { 28, 106 }, { 31, 69 }, { 35, 70 }, { 39, 73 }, 1320 1320 { 40, 108 }, { 43, 71 }, { 45, 72 }, { 47, 83 }, { 51, 74 }, { 55, 77 }, 1321 1321 { 59, 78 }, { 63, 75 }, { 64, 81 }, { 65, 87 }, { 66, 88 }, { 67, 89 }, 1322 1322 { 68, 54 }, { 70, 85 }, { 77, 46 }, { 80, 90 }, { 81, 91 }, { 83, 97 },
+3
drivers/pinctrl/qcom/pinctrl-spmi-gpio.c
··· 1159 1159 /* pm8150l has 12 GPIOs with holes on 7 */ 1160 1160 { .compatible = "qcom,pm8150l-gpio", .data = (void *) 12 }, 1161 1161 { .compatible = "qcom,pmc8180c-gpio", .data = (void *) 12 }, 1162 + { .compatible = "qcom,pm8226-gpio", .data = (void *) 8 }, 1162 1163 { .compatible = "qcom,pm8350-gpio", .data = (void *) 10 }, 1163 1164 { .compatible = "qcom,pm8350b-gpio", .data = (void *) 8 }, 1164 1165 { .compatible = "qcom,pm8350c-gpio", .data = (void *) 9 }, ··· 1176 1175 { .compatible = "qcom,pmi8998-gpio", .data = (void *) 14 }, 1177 1176 { .compatible = "qcom,pmk8350-gpio", .data = (void *) 4 }, 1178 1177 { .compatible = "qcom,pmm8155au-gpio", .data = (void *) 10 }, 1178 + /* pmp8074 has 12 GPIOs with holes on 1 and 12 */ 1179 + { .compatible = "qcom,pmp8074-gpio", .data = (void *) 12 }, 1179 1180 { .compatible = "qcom,pmr735a-gpio", .data = (void *) 4 }, 1180 1181 { .compatible = "qcom,pmr735b-gpio", .data = (void *) 4 }, 1181 1182 /* pms405 has 12 GPIOs with holes on 1, 9, and 10 */
+18
drivers/pinctrl/renesas/Kconfig
··· 38 38 select PINCTRL_PFC_R8A77995 if ARCH_R8A77995 39 39 select PINCTRL_PFC_R8A779A0 if ARCH_R8A779A0 40 40 select PINCTRL_PFC_R8A779F0 if ARCH_R8A779F0 41 + select PINCTRL_PFC_R8A779G0 if ARCH_R8A779G0 41 42 select PINCTRL_RZG2L if ARCH_RZG2L 43 + select PINCTRL_RZV2M if ARCH_R9A09G011 42 44 select PINCTRL_PFC_SH7203 if CPU_SUBTYPE_SH7203 43 45 select PINCTRL_PFC_SH7264 if CPU_SUBTYPE_SH7264 44 46 select PINCTRL_PFC_SH7269 if CPU_SUBTYPE_SH7269 ··· 155 153 bool "pin control support for R-Car V3U" if COMPILE_TEST 156 154 select PINCTRL_SH_PFC 157 155 156 + config PINCTRL_PFC_R8A779G0 157 + bool "pin control support for R-Car V4H" if COMPILE_TEST 158 + select PINCTRL_SH_PFC 159 + 158 160 config PINCTRL_PFC_R8A7740 159 161 bool "pin control support for R-Mobile A1" if COMPILE_TEST 160 162 select PINCTRL_SH_PFC_GPIO ··· 242 236 select GENERIC_PINCONF 243 237 help 244 238 This selects pinctrl driver for Renesas RZ/N1 devices. 239 + 240 + config PINCTRL_RZV2M 241 + bool "pin control support for RZ/V2M" 242 + depends on OF 243 + depends on ARCH_R9A09G011 || COMPILE_TEST 244 + select GPIOLIB 245 + select GENERIC_PINCTRL_GROUPS 246 + select GENERIC_PINMUX_FUNCTIONS 247 + select GENERIC_PINCONF 248 + help 249 + This selects GPIO and pinctrl driver for Renesas RZ/V2M 250 + platforms. 245 251 246 252 config PINCTRL_PFC_SH7203 247 253 bool "pin control support for SH7203" if COMPILE_TEST
+2
drivers/pinctrl/renesas/Makefile
··· 31 31 obj-$(CONFIG_PINCTRL_PFC_R8A77995) += pfc-r8a77995.o 32 32 obj-$(CONFIG_PINCTRL_PFC_R8A779A0) += pfc-r8a779a0.o 33 33 obj-$(CONFIG_PINCTRL_PFC_R8A779F0) += pfc-r8a779f0.o 34 + obj-$(CONFIG_PINCTRL_PFC_R8A779G0) += pfc-r8a779g0.o 34 35 obj-$(CONFIG_PINCTRL_PFC_SH7203) += pfc-sh7203.o 35 36 obj-$(CONFIG_PINCTRL_PFC_SH7264) += pfc-sh7264.o 36 37 obj-$(CONFIG_PINCTRL_PFC_SH7269) += pfc-sh7269.o ··· 50 49 obj-$(CONFIG_PINCTRL_RZA2) += pinctrl-rza2.o 51 50 obj-$(CONFIG_PINCTRL_RZG2L) += pinctrl-rzg2l.o 52 51 obj-$(CONFIG_PINCTRL_RZN1) += pinctrl-rzn1.o 52 + obj-$(CONFIG_PINCTRL_RZV2M) += pinctrl-rzv2m.o 53 53 54 54 ifeq ($(CONFIG_COMPILE_TEST),y) 55 55 CFLAGS_pfc-sh7203.o += -I$(srctree)/arch/sh/include/cpu-sh2a
+6
drivers/pinctrl/renesas/core.c
··· 644 644 .data = &r8a779f0_pinmux_info, 645 645 }, 646 646 #endif 647 + #ifdef CONFIG_PINCTRL_PFC_R8A779G0 648 + { 649 + .compatible = "renesas,pfc-r8a779g0", 650 + .data = &r8a779g0_pinmux_info, 651 + }, 652 + #endif 647 653 #ifdef CONFIG_PINCTRL_PFC_SH73A0 648 654 { 649 655 .compatible = "renesas,pfc-sh73a0",
-2
drivers/pinctrl/renesas/pfc-r8a779f0.c
··· 1902 1902 enum ioctrl_regs { 1903 1903 POC0, 1904 1904 POC1, 1905 - POC2, 1906 1905 POC3, 1907 1906 TD0SEL1, 1908 1907 }; ··· 1909 1910 static const struct pinmux_ioctrl_reg pinmux_ioctrl_regs[] = { 1910 1911 [POC0] = { 0xe60500a0, }, 1911 1912 [POC1] = { 0xe60508a0, }, 1912 - [POC2] = { 0xe60510a0, }, 1913 1913 [POC3] = { 0xe60518a0, }, 1914 1914 [TD0SEL1] = { 0xe6050920, }, 1915 1915 { /* sentinel */ },
+4262
drivers/pinctrl/renesas/pfc-r8a779g0.c
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* 3 + * R8A779A0 processor support - PFC hardware block. 4 + * 5 + * Copyright (C) 2021 Renesas Electronics Corp. 6 + * 7 + * This file is based on the drivers/pinctrl/renesas/pfc-r8a779a0.c 8 + */ 9 + 10 + #include <linux/errno.h> 11 + #include <linux/io.h> 12 + #include <linux/kernel.h> 13 + 14 + #include "sh_pfc.h" 15 + 16 + #define CFG_FLAGS (SH_PFC_PIN_CFG_DRIVE_STRENGTH | SH_PFC_PIN_CFG_PULL_UP_DOWN) 17 + 18 + #define CPU_ALL_GP(fn, sfx) \ 19 + PORT_GP_CFG_19(0, fn, sfx, CFG_FLAGS | SH_PFC_PIN_CFG_IO_VOLTAGE_18_33), \ 20 + PORT_GP_CFG_23(1, fn, sfx, CFG_FLAGS | SH_PFC_PIN_CFG_IO_VOLTAGE_18_33), \ 21 + PORT_GP_CFG_1(1, 23, fn, sfx, CFG_FLAGS), \ 22 + PORT_GP_CFG_1(1, 24, fn, sfx, CFG_FLAGS), \ 23 + PORT_GP_CFG_1(1, 25, fn, sfx, CFG_FLAGS), \ 24 + PORT_GP_CFG_1(1, 26, fn, sfx, CFG_FLAGS), \ 25 + PORT_GP_CFG_1(1, 27, fn, sfx, CFG_FLAGS), \ 26 + PORT_GP_CFG_1(1, 28, fn, sfx, CFG_FLAGS), \ 27 + PORT_GP_CFG_20(2, fn, sfx, CFG_FLAGS), \ 28 + PORT_GP_CFG_13(3, fn, sfx, CFG_FLAGS | SH_PFC_PIN_CFG_IO_VOLTAGE_18_33), \ 29 + PORT_GP_CFG_1(3, 13, fn, sfx, CFG_FLAGS), \ 30 + PORT_GP_CFG_1(3, 14, fn, sfx, CFG_FLAGS), \ 31 + PORT_GP_CFG_1(3, 15, fn, sfx, CFG_FLAGS), \ 32 + PORT_GP_CFG_1(3, 16, fn, sfx, CFG_FLAGS), \ 33 + PORT_GP_CFG_1(3, 17, fn, sfx, CFG_FLAGS), \ 34 + PORT_GP_CFG_1(3, 18, fn, sfx, CFG_FLAGS), \ 35 + PORT_GP_CFG_1(3, 19, fn, sfx, CFG_FLAGS), \ 36 + PORT_GP_CFG_1(3, 20, fn, sfx, CFG_FLAGS), \ 37 + PORT_GP_CFG_1(3, 21, fn, sfx, CFG_FLAGS), \ 38 + PORT_GP_CFG_1(3, 22, fn, sfx, CFG_FLAGS), \ 39 + PORT_GP_CFG_1(3, 23, fn, sfx, CFG_FLAGS), \ 40 + PORT_GP_CFG_1(3, 24, fn, sfx, CFG_FLAGS), \ 41 + PORT_GP_CFG_1(3, 25, fn, sfx, CFG_FLAGS), \ 42 + PORT_GP_CFG_1(3, 26, fn, sfx, CFG_FLAGS), \ 43 + PORT_GP_CFG_1(3, 27, fn, sfx, CFG_FLAGS), \ 44 + PORT_GP_CFG_1(3, 28, fn, sfx, CFG_FLAGS), \ 45 + PORT_GP_CFG_1(3, 29, fn, sfx, CFG_FLAGS), \ 46 + PORT_GP_CFG_25(4, fn, sfx, CFG_FLAGS), \ 47 + PORT_GP_CFG_21(5, fn, sfx, CFG_FLAGS), \ 48 + PORT_GP_CFG_21(6, fn, sfx, CFG_FLAGS), \ 49 + PORT_GP_CFG_21(7, fn, sfx, CFG_FLAGS), \ 50 + PORT_GP_CFG_14(8, fn, sfx, CFG_FLAGS | SH_PFC_PIN_CFG_IO_VOLTAGE_18_33) 51 + 52 + /* GPSR0 */ 53 + #define GPSR0_18 F_(MSIOF2_RXD, IP2SR0_11_8) 54 + #define GPSR0_17 F_(MSIOF2_SCK, IP2SR0_7_4) 55 + #define GPSR0_16 F_(MSIOF2_TXD, IP2SR0_3_0) 56 + #define GPSR0_15 F_(MSIOF2_SYNC, IP1SR0_31_28) 57 + #define GPSR0_14 F_(MSIOF2_SS1, IP1SR0_27_24) 58 + #define GPSR0_13 F_(MSIOF2_SS2, IP1SR0_23_20) 59 + #define GPSR0_12 F_(MSIOF5_RXD, IP1SR0_19_16) 60 + #define GPSR0_11 F_(MSIOF5_SCK, IP1SR0_15_12) 61 + #define GPSR0_10 F_(MSIOF5_TXD, IP1SR0_11_8) 62 + #define GPSR0_9 F_(MSIOF5_SYNC, IP1SR0_7_4) 63 + #define GPSR0_8 F_(MSIOF5_SS1, IP1SR0_3_0) 64 + #define GPSR0_7 F_(MSIOF5_SS2, IP0SR0_31_28) 65 + #define GPSR0_6 F_(IRQ0, IP0SR0_27_24) 66 + #define GPSR0_5 F_(IRQ1, IP0SR0_23_20) 67 + #define GPSR0_4 F_(IRQ2, IP0SR0_19_16) 68 + #define GPSR0_3 F_(IRQ3, IP0SR0_15_12) 69 + #define GPSR0_2 F_(GP0_02, IP0SR0_11_8) 70 + #define GPSR0_1 F_(GP0_01, IP0SR0_7_4) 71 + #define GPSR0_0 F_(GP0_00, IP0SR0_3_0) 72 + 73 + /* GPSR1 */ 74 + #define GPSR1_28 F_(HTX3, IP3SR1_19_16) 75 + #define GPSR1_27 F_(HCTS3_N, IP3SR1_15_12) 76 + #define GPSR1_26 F_(HRTS3_N, IP3SR1_11_8) 77 + #define GPSR1_25 F_(HSCK3, IP3SR1_7_4) 78 + #define GPSR1_24 F_(HRX3, IP3SR1_3_0) 79 + #define GPSR1_23 F_(GP1_23, IP2SR1_31_28) 80 + #define GPSR1_22 F_(AUDIO_CLKIN, IP2SR1_27_24) 81 + #define GPSR1_21 F_(AUDIO_CLKOUT, IP2SR1_23_20) 82 + #define GPSR1_20 F_(SSI_SD, IP2SR1_19_16) 83 + #define GPSR1_19 F_(SSI_WS, IP2SR1_15_12) 84 + #define GPSR1_18 F_(SSI_SCK, IP2SR1_11_8) 85 + #define GPSR1_17 F_(SCIF_CLK, IP2SR1_7_4) 86 + #define GPSR1_16 F_(HRX0, IP2SR1_3_0) 87 + #define GPSR1_15 F_(HSCK0, IP1SR1_31_28) 88 + #define GPSR1_14 F_(HRTS0_N, IP1SR1_27_24) 89 + #define GPSR1_13 F_(HCTS0_N, IP1SR1_23_20) 90 + #define GPSR1_12 F_(HTX0, IP1SR1_19_16) 91 + #define GPSR1_11 F_(MSIOF0_RXD, IP1SR1_15_12) 92 + #define GPSR1_10 F_(MSIOF0_SCK, IP1SR1_11_8) 93 + #define GPSR1_9 F_(MSIOF0_TXD, IP1SR1_7_4) 94 + #define GPSR1_8 F_(MSIOF0_SYNC, IP1SR1_3_0) 95 + #define GPSR1_7 F_(MSIOF0_SS1, IP0SR1_31_28) 96 + #define GPSR1_6 F_(MSIOF0_SS2, IP0SR1_27_24) 97 + #define GPSR1_5 F_(MSIOF1_RXD, IP0SR1_23_20) 98 + #define GPSR1_4 F_(MSIOF1_TXD, IP0SR1_19_16) 99 + #define GPSR1_3 F_(MSIOF1_SCK, IP0SR1_15_12) 100 + #define GPSR1_2 F_(MSIOF1_SYNC, IP0SR1_11_8) 101 + #define GPSR1_1 F_(MSIOF1_SS1, IP0SR1_7_4) 102 + #define GPSR1_0 F_(MSIOF1_SS2, IP0SR1_3_0) 103 + 104 + /* GPSR2 */ 105 + #define GPSR2_19 F_(CANFD7_RX, IP2SR2_15_12) 106 + #define GPSR2_18 F_(CANFD7_TX, IP2SR2_11_8) 107 + #define GPSR2_17 F_(CANFD4_RX, IP2SR2_7_4) 108 + #define GPSR2_16 F_(CANFD4_TX, IP2SR2_3_0) 109 + #define GPSR2_15 F_(CANFD3_RX, IP1SR2_31_28) 110 + #define GPSR2_14 F_(CANFD3_TX, IP1SR2_27_24) 111 + #define GPSR2_13 F_(CANFD2_RX, IP1SR2_23_20) 112 + #define GPSR2_12 F_(CANFD2_TX, IP1SR2_19_16) 113 + #define GPSR2_11 F_(CANFD0_RX, IP1SR2_15_12) 114 + #define GPSR2_10 F_(CANFD0_TX, IP1SR2_11_8) 115 + #define GPSR2_9 F_(CAN_CLK, IP1SR2_7_4) 116 + #define GPSR2_8 F_(TPU0TO0, IP1SR2_3_0) 117 + #define GPSR2_7 F_(TPU0TO1, IP0SR2_31_28) 118 + #define GPSR2_6 F_(FXR_TXDB, IP0SR2_27_24) 119 + #define GPSR2_5 F_(FXR_TXENB_N, IP0SR2_23_20) 120 + #define GPSR2_4 F_(RXDB_EXTFXR, IP0SR2_19_16) 121 + #define GPSR2_3 F_(CLK_EXTFXR, IP0SR2_15_12) 122 + #define GPSR2_2 F_(RXDA_EXTFXR, IP0SR2_11_8) 123 + #define GPSR2_1 F_(FXR_TXENA_N, IP0SR2_7_4) 124 + #define GPSR2_0 F_(FXR_TXDA, IP0SR2_3_0) 125 + 126 + /* GPSR3 */ 127 + #define GPSR3_29 F_(RPC_INT_N, IP3SR3_23_20) 128 + #define GPSR3_28 F_(RPC_WP_N, IP3SR3_19_16) 129 + #define GPSR3_27 F_(RPC_RESET_N, IP3SR3_15_12) 130 + #define GPSR3_26 F_(QSPI1_IO3, IP3SR3_11_8) 131 + #define GPSR3_25 F_(QSPI1_SSL, IP3SR3_7_4) 132 + #define GPSR3_24 F_(QSPI1_IO2, IP3SR3_3_0) 133 + #define GPSR3_23 F_(QSPI1_MISO_IO1, IP2SR3_31_28) 134 + #define GPSR3_22 F_(QSPI1_SPCLK, IP2SR3_27_24) 135 + #define GPSR3_21 F_(QSPI1_MOSI_IO0, IP2SR3_23_20) 136 + #define GPSR3_20 F_(QSPI0_SPCLK, IP2SR3_19_16) 137 + #define GPSR3_19 F_(QSPI0_MOSI_IO0, IP2SR3_15_12) 138 + #define GPSR3_18 F_(QSPI0_MISO_IO1, IP2SR3_11_8) 139 + #define GPSR3_17 F_(QSPI0_IO2, IP2SR3_7_4) 140 + #define GPSR3_16 F_(QSPI0_IO3, IP2SR3_3_0) 141 + #define GPSR3_15 F_(QSPI0_SSL, IP1SR3_31_28) 142 + #define GPSR3_14 F_(IPC_CLKOUT, IP1SR3_27_24) 143 + #define GPSR3_13 F_(IPC_CLKIN, IP1SR3_23_20) 144 + #define GPSR3_12 F_(SD_WP, IP1SR3_19_16) 145 + #define GPSR3_11 F_(SD_CD, IP1SR3_15_12) 146 + #define GPSR3_10 F_(MMC_SD_CMD, IP1SR3_11_8) 147 + #define GPSR3_9 F_(MMC_D6, IP1SR3_7_4) 148 + #define GPSR3_8 F_(MMC_D7, IP1SR3_3_0) 149 + #define GPSR3_7 F_(MMC_D4, IP0SR3_31_28) 150 + #define GPSR3_6 F_(MMC_D5, IP0SR3_27_24) 151 + #define GPSR3_5 F_(MMC_SD_D3, IP0SR3_23_20) 152 + #define GPSR3_4 F_(MMC_DS, IP0SR3_19_16) 153 + #define GPSR3_3 F_(MMC_SD_CLK, IP0SR3_15_12) 154 + #define GPSR3_2 F_(MMC_SD_D2, IP0SR3_11_8) 155 + #define GPSR3_1 F_(MMC_SD_D0, IP0SR3_7_4) 156 + #define GPSR3_0 F_(MMC_SD_D1, IP0SR3_3_0) 157 + 158 + /* GPSR4 */ 159 + #define GPSR4_24 FM(AVS1) 160 + #define GPSR4_23 FM(AVS0) 161 + #define GPSR4_22 FM(PCIE1_CLKREQ_N) 162 + #define GPSR4_21 FM(PCIE0_CLKREQ_N) 163 + #define GPSR4_20 FM(TSN0_TXCREFCLK) 164 + #define GPSR4_19 FM(TSN0_TD2) 165 + #define GPSR4_18 FM(TSN0_TD3) 166 + #define GPSR4_17 FM(TSN0_RD2) 167 + #define GPSR4_16 FM(TSN0_RD3) 168 + #define GPSR4_15 FM(TSN0_TD0) 169 + #define GPSR4_14 FM(TSN0_TD1) 170 + #define GPSR4_13 FM(TSN0_RD1) 171 + #define GPSR4_12 FM(TSN0_TXC) 172 + #define GPSR4_11 FM(TSN0_RXC) 173 + #define GPSR4_10 FM(TSN0_RD0) 174 + #define GPSR4_9 FM(TSN0_TX_CTL) 175 + #define GPSR4_8 FM(TSN0_AVTP_PPS0) 176 + #define GPSR4_7 FM(TSN0_RX_CTL) 177 + #define GPSR4_6 FM(TSN0_AVTP_CAPTURE) 178 + #define GPSR4_5 FM(TSN0_AVTP_MATCH) 179 + #define GPSR4_4 FM(TSN0_LINK) 180 + #define GPSR4_3 FM(TSN0_PHY_INT) 181 + #define GPSR4_2 FM(TSN0_AVTP_PPS1) 182 + #define GPSR4_1 FM(TSN0_MDC) 183 + #define GPSR4_0 FM(TSN0_MDIO) 184 + 185 + /* GPSR 5 */ 186 + #define GPSR5_20 FM(AVB2_RX_CTL) 187 + #define GPSR5_19 FM(AVB2_TX_CTL) 188 + #define GPSR5_18 FM(AVB2_RXC) 189 + #define GPSR5_17 FM(AVB2_RD0) 190 + #define GPSR5_16 FM(AVB2_TXC) 191 + #define GPSR5_15 FM(AVB2_TD0) 192 + #define GPSR5_14 FM(AVB2_RD1) 193 + #define GPSR5_13 FM(AVB2_RD2) 194 + #define GPSR5_12 FM(AVB2_TD1) 195 + #define GPSR5_11 FM(AVB2_TD2) 196 + #define GPSR5_10 FM(AVB2_MDIO) 197 + #define GPSR5_9 FM(AVB2_RD3) 198 + #define GPSR5_8 FM(AVB2_TD3) 199 + #define GPSR5_7 FM(AVB2_TXCREFCLK) 200 + #define GPSR5_6 FM(AVB2_MDC) 201 + #define GPSR5_5 FM(AVB2_MAGIC) 202 + #define GPSR5_4 FM(AVB2_PHY_INT) 203 + #define GPSR5_3 FM(AVB2_LINK) 204 + #define GPSR5_2 FM(AVB2_AVTP_MATCH) 205 + #define GPSR5_1 FM(AVB2_AVTP_CAPTURE) 206 + #define GPSR5_0 FM(AVB2_AVTP_PPS) 207 + 208 + /* GPSR 6 */ 209 + #define GPSR6_20 F_(AVB1_TXCREFCLK, IP2SR6_19_16) 210 + #define GPSR6_19 F_(AVB1_RD3, IP2SR6_15_12) 211 + #define GPSR6_18 F_(AVB1_TD3, IP2SR6_11_8) 212 + #define GPSR6_17 F_(AVB1_RD2, IP2SR6_7_4) 213 + #define GPSR6_16 F_(AVB1_TD2, IP2SR6_3_0) 214 + #define GPSR6_15 F_(AVB1_RD0, IP1SR6_31_28) 215 + #define GPSR6_14 F_(AVB1_RD1, IP1SR6_27_24) 216 + #define GPSR6_13 F_(AVB1_TD0, IP1SR6_23_20) 217 + #define GPSR6_12 F_(AVB1_TD1, IP1SR6_19_16) 218 + #define GPSR6_11 F_(AVB1_AVTP_CAPTURE, IP1SR6_15_12) 219 + #define GPSR6_10 F_(AVB1_AVTP_PPS, IP1SR6_11_8) 220 + #define GPSR6_9 F_(AVB1_RX_CTL, IP1SR6_7_4) 221 + #define GPSR6_8 F_(AVB1_RXC, IP1SR6_3_0) 222 + #define GPSR6_7 F_(AVB1_TX_CTL, IP0SR6_31_28) 223 + #define GPSR6_6 F_(AVB1_TXC, IP0SR6_27_24) 224 + #define GPSR6_5 F_(AVB1_AVTP_MATCH, IP0SR6_23_20) 225 + #define GPSR6_4 F_(AVB1_LINK, IP0SR6_19_16) 226 + #define GPSR6_3 F_(AVB1_PHY_INT, IP0SR6_15_12) 227 + #define GPSR6_2 F_(AVB1_MDC, IP0SR6_11_8) 228 + #define GPSR6_1 F_(AVB1_MAGIC, IP0SR6_7_4) 229 + #define GPSR6_0 F_(AVB1_MDIO, IP0SR6_3_0) 230 + 231 + /* GPSR7 */ 232 + #define GPSR7_20 F_(AVB0_RX_CTL, IP2SR7_19_16) 233 + #define GPSR7_19 F_(AVB0_RXC, IP2SR7_15_12) 234 + #define GPSR7_18 F_(AVB0_RD0, IP2SR7_11_8) 235 + #define GPSR7_17 F_(AVB0_RD1, IP2SR7_7_4) 236 + #define GPSR7_16 F_(AVB0_TX_CTL, IP2SR7_3_0) 237 + #define GPSR7_15 F_(AVB0_TXC, IP1SR7_31_28) 238 + #define GPSR7_14 F_(AVB0_MDIO, IP1SR7_27_24) 239 + #define GPSR7_13 F_(AVB0_MDC, IP1SR7_23_20) 240 + #define GPSR7_12 F_(AVB0_RD2, IP1SR7_19_16) 241 + #define GPSR7_11 F_(AVB0_TD0, IP1SR7_15_12) 242 + #define GPSR7_10 F_(AVB0_MAGIC, IP1SR7_11_8) 243 + #define GPSR7_9 F_(AVB0_TXCREFCLK, IP1SR7_7_4) 244 + #define GPSR7_8 F_(AVB0_RD3, IP1SR7_3_0) 245 + #define GPSR7_7 F_(AVB0_TD1, IP0SR7_31_28) 246 + #define GPSR7_6 F_(AVB0_TD2, IP0SR7_27_24) 247 + #define GPSR7_5 F_(AVB0_PHY_INT, IP0SR7_23_20) 248 + #define GPSR7_4 F_(AVB0_LINK, IP0SR7_19_16) 249 + #define GPSR7_3 F_(AVB0_TD3, IP0SR7_15_12) 250 + #define GPSR7_2 F_(AVB0_AVTP_MATCH, IP0SR7_11_8) 251 + #define GPSR7_1 F_(AVB0_AVTP_CAPTURE, IP0SR7_7_4) 252 + #define GPSR7_0 F_(AVB0_AVTP_PPS, IP0SR7_3_0) 253 + 254 + /* GPSR8 */ 255 + #define GPSR8_13 F_(GP8_13, IP1SR8_23_20) 256 + #define GPSR8_12 F_(GP8_12, IP1SR8_19_16) 257 + #define GPSR8_11 F_(SDA5, IP1SR8_15_12) 258 + #define GPSR8_10 F_(SCL5, IP1SR8_11_8) 259 + #define GPSR8_9 F_(SDA4, IP1SR8_7_4) 260 + #define GPSR8_8 F_(SCL4, IP1SR8_3_0) 261 + #define GPSR8_7 F_(SDA3, IP0SR8_31_28) 262 + #define GPSR8_6 F_(SCL3, IP0SR8_27_24) 263 + #define GPSR8_5 F_(SDA2, IP0SR8_23_20) 264 + #define GPSR8_4 F_(SCL2, IP0SR8_19_16) 265 + #define GPSR8_3 F_(SDA1, IP0SR8_15_12) 266 + #define GPSR8_2 F_(SCL1, IP0SR8_11_8) 267 + #define GPSR8_1 F_(SDA0, IP0SR8_7_4) 268 + #define GPSR8_0 F_(SCL0, IP0SR8_3_0) 269 + 270 + /* SR0 */ 271 + /* IP0SR0 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 272 + #define IP0SR0_3_0 F_(0, 0) FM(ERROROUTC_B) FM(TCLK2_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 273 + #define IP0SR0_7_4 F_(0, 0) FM(MSIOF3_SS1) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 274 + #define IP0SR0_11_8 F_(0, 0) FM(MSIOF3_SS2) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 275 + #define IP0SR0_15_12 FM(IRQ3) FM(MSIOF3_SCK) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 276 + #define IP0SR0_19_16 FM(IRQ2) FM(MSIOF3_TXD) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 277 + #define IP0SR0_23_20 FM(IRQ1) FM(MSIOF3_RXD) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 278 + #define IP0SR0_27_24 FM(IRQ0) FM(MSIOF3_SYNC) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 279 + #define IP0SR0_31_28 FM(MSIOF5_SS2) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 280 + 281 + /* IP1SR0 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 282 + #define IP1SR0_3_0 FM(MSIOF5_SS1) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 283 + #define IP1SR0_7_4 FM(MSIOF5_SYNC) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 284 + #define IP1SR0_11_8 FM(MSIOF5_TXD) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 285 + #define IP1SR0_15_12 FM(MSIOF5_SCK) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 286 + #define IP1SR0_19_16 FM(MSIOF5_RXD) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 287 + #define IP1SR0_23_20 FM(MSIOF2_SS2) FM(TCLK1) FM(IRQ2_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 288 + #define IP1SR0_27_24 FM(MSIOF2_SS1) FM(HTX1) FM(TX1) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 289 + #define IP1SR0_31_28 FM(MSIOF2_SYNC) FM(HRX1) FM(RX1) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 290 + 291 + /* IP2SR0 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 292 + #define IP2SR0_3_0 FM(MSIOF2_TXD) FM(HCTS1_N) FM(CTS1_N) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 293 + #define IP2SR0_7_4 FM(MSIOF2_SCK) FM(HRTS1_N) FM(RTS1_N) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 294 + #define IP2SR0_11_8 FM(MSIOF2_RXD) FM(HSCK1) FM(SCK1) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 295 + 296 + /* SR1 */ 297 + /* IP0SR1 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 298 + #define IP0SR1_3_0 FM(MSIOF1_SS2) FM(HTX3_A) FM(TX3) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 299 + #define IP0SR1_7_4 FM(MSIOF1_SS1) FM(HCTS3_N_A) FM(RX3) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 300 + #define IP0SR1_11_8 FM(MSIOF1_SYNC) FM(HRTS3_N_A) FM(RTS3_N) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 301 + #define IP0SR1_15_12 FM(MSIOF1_SCK) FM(HSCK3_A) FM(CTS3_N) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 302 + #define IP0SR1_19_16 FM(MSIOF1_TXD) FM(HRX3_A) FM(SCK3) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 303 + #define IP0SR1_23_20 FM(MSIOF1_RXD) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 304 + #define IP0SR1_27_24 FM(MSIOF0_SS2) FM(HTX1_X) FM(TX1_X) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 305 + #define IP0SR1_31_28 FM(MSIOF0_SS1) FM(HRX1_X) FM(RX1_X) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 306 + 307 + /* IP1SR1 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 308 + #define IP1SR1_3_0 FM(MSIOF0_SYNC) FM(HCTS1_N_X) FM(CTS1_N_X) FM(CANFD5_TX_B) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 309 + #define IP1SR1_7_4 FM(MSIOF0_TXD) FM(HRTS1_N_X) FM(RTS1_N_X) FM(CANFD5_RX_B) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 310 + #define IP1SR1_11_8 FM(MSIOF0_SCK) FM(HSCK1_X) FM(SCK1_X) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 311 + #define IP1SR1_15_12 FM(MSIOF0_RXD) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 312 + #define IP1SR1_19_16 FM(HTX0) FM(TX0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 313 + #define IP1SR1_23_20 FM(HCTS0_N) FM(CTS0_N) FM(PWM8_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 314 + #define IP1SR1_27_24 FM(HRTS0_N) FM(RTS0_N) FM(PWM9_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 315 + #define IP1SR1_31_28 FM(HSCK0) FM(SCK0) FM(PWM0_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 316 + 317 + /* IP2SR1 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 318 + #define IP2SR1_3_0 FM(HRX0) FM(RX0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 319 + #define IP2SR1_7_4 FM(SCIF_CLK) FM(IRQ4_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 320 + #define IP2SR1_11_8 FM(SSI_SCK) FM(TCLK3) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 321 + #define IP2SR1_15_12 FM(SSI_WS) FM(TCLK4) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 322 + #define IP2SR1_19_16 FM(SSI_SD) FM(IRQ0_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 323 + #define IP2SR1_23_20 FM(AUDIO_CLKOUT) FM(IRQ1_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 324 + #define IP2SR1_27_24 FM(AUDIO_CLKIN) FM(PWM3_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 325 + #define IP2SR1_31_28 F_(0, 0) FM(TCLK2) FM(MSIOF4_SS1) FM(IRQ3_B) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 326 + 327 + /* IP3SR1 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 328 + #define IP3SR1_3_0 FM(HRX3) FM(SCK3_A) FM(MSIOF4_SS2) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 329 + #define IP3SR1_7_4 FM(HSCK3) FM(CTS3_N_A) FM(MSIOF4_SCK) FM(TPU0TO0_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 330 + #define IP3SR1_11_8 FM(HRTS3_N) FM(RTS3_N_A) FM(MSIOF4_TXD) FM(TPU0TO1_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 331 + #define IP3SR1_15_12 FM(HCTS3_N) FM(RX3_A) FM(MSIOF4_RXD) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 332 + #define IP3SR1_19_16 FM(HTX3) FM(TX3_A) FM(MSIOF4_SYNC) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 333 + 334 + /* SR2 */ 335 + /* IP0SR2 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 336 + #define IP0SR2_3_0 FM(FXR_TXDA) FM(CANFD1_TX) FM(TPU0TO2_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 337 + #define IP0SR2_7_4 FM(FXR_TXENA_N) FM(CANFD1_RX) FM(TPU0TO3_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 338 + #define IP0SR2_11_8 FM(RXDA_EXTFXR) FM(CANFD5_TX) FM(IRQ5) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 339 + #define IP0SR2_15_12 FM(CLK_EXTFXR) FM(CANFD5_RX) FM(IRQ4_B) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 340 + #define IP0SR2_19_16 FM(RXDB_EXTFXR) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 341 + #define IP0SR2_23_20 FM(FXR_TXENB_N) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 342 + #define IP0SR2_27_24 FM(FXR_TXDB) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 343 + #define IP0SR2_31_28 FM(TPU0TO1) FM(CANFD6_TX) F_(0, 0) FM(TCLK2_B) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 344 + 345 + /* IP1SR2 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 346 + #define IP1SR2_3_0 FM(TPU0TO0) FM(CANFD6_RX) F_(0, 0) FM(TCLK1_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 347 + #define IP1SR2_7_4 FM(CAN_CLK) FM(FXR_TXENA_N_X) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 348 + #define IP1SR2_11_8 FM(CANFD0_TX) FM(FXR_TXENB_N_X) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 349 + #define IP1SR2_15_12 FM(CANFD0_RX) FM(STPWT_EXTFXR) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 350 + #define IP1SR2_19_16 FM(CANFD2_TX) FM(TPU0TO2) F_(0, 0) FM(TCLK3_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 351 + #define IP1SR2_23_20 FM(CANFD2_RX) FM(TPU0TO3) FM(PWM1_B) FM(TCLK4_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 352 + #define IP1SR2_27_24 FM(CANFD3_TX) F_(0, 0) FM(PWM2_B) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 353 + #define IP1SR2_31_28 FM(CANFD3_RX) F_(0, 0) FM(PWM3_B) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 354 + 355 + /* IP2SR2 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 356 + #define IP2SR2_3_0 FM(CANFD4_TX) F_(0, 0) FM(PWM4) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 357 + #define IP2SR2_7_4 FM(CANFD4_RX) F_(0, 0) FM(PWM5) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 358 + #define IP2SR2_11_8 FM(CANFD7_TX) F_(0, 0) FM(PWM6) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 359 + #define IP2SR2_15_12 FM(CANFD7_RX) F_(0, 0) FM(PWM7) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 360 + 361 + /* SR3 */ 362 + /* IP0SR3 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 363 + #define IP0SR3_3_0 FM(MMC_SD_D1) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 364 + #define IP0SR3_7_4 FM(MMC_SD_D0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 365 + #define IP0SR3_11_8 FM(MMC_SD_D2) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 366 + #define IP0SR3_15_12 FM(MMC_SD_CLK) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 367 + #define IP0SR3_19_16 FM(MMC_DS) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 368 + #define IP0SR3_23_20 FM(MMC_SD_D3) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 369 + #define IP0SR3_27_24 FM(MMC_D5) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 370 + #define IP0SR3_31_28 FM(MMC_D4) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 371 + 372 + /* IP1SR3 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 373 + #define IP1SR3_3_0 FM(MMC_D7) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 374 + #define IP1SR3_7_4 FM(MMC_D6) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 375 + #define IP1SR3_11_8 FM(MMC_SD_CMD) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 376 + #define IP1SR3_15_12 FM(SD_CD) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 377 + #define IP1SR3_19_16 FM(SD_WP) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 378 + #define IP1SR3_23_20 FM(IPC_CLKIN) FM(IPC_CLKEN_IN) FM(PWM1_A) FM(TCLK3_X) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 379 + #define IP1SR3_27_24 FM(IPC_CLKOUT) FM(IPC_CLKEN_OUT) FM(ERROROUTC_A) FM(TCLK4_X) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 380 + #define IP1SR3_31_28 FM(QSPI0_SSL) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 381 + 382 + /* IP2SR3 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 383 + #define IP2SR3_3_0 FM(QSPI0_IO3) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 384 + #define IP2SR3_7_4 FM(QSPI0_IO2) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 385 + #define IP2SR3_11_8 FM(QSPI0_MISO_IO1) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 386 + #define IP2SR3_15_12 FM(QSPI0_MOSI_IO0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 387 + #define IP2SR3_19_16 FM(QSPI0_SPCLK) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 388 + #define IP2SR3_23_20 FM(QSPI1_MOSI_IO0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 389 + #define IP2SR3_27_24 FM(QSPI1_SPCLK) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 390 + #define IP2SR3_31_28 FM(QSPI1_MISO_IO1) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 391 + 392 + /* IP3SR3 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 393 + #define IP3SR3_3_0 FM(QSPI1_IO2) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 394 + #define IP3SR3_7_4 FM(QSPI1_SSL) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 395 + #define IP3SR3_11_8 FM(QSPI1_IO3) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 396 + #define IP3SR3_15_12 FM(RPC_RESET_N) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 397 + #define IP3SR3_19_16 FM(RPC_WP_N) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 398 + #define IP3SR3_23_20 FM(RPC_INT_N) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 399 + 400 + /* SR6 */ 401 + /* IP0SR6 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 402 + #define IP0SR6_3_0 FM(AVB1_MDIO) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 403 + #define IP0SR6_7_4 FM(AVB1_MAGIC) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 404 + #define IP0SR6_11_8 FM(AVB1_MDC) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 405 + #define IP0SR6_15_12 FM(AVB1_PHY_INT) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 406 + #define IP0SR6_19_16 FM(AVB1_LINK) FM(AVB1_MII_TX_ER) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 407 + #define IP0SR6_23_20 FM(AVB1_AVTP_MATCH) FM(AVB1_MII_RX_ER) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 408 + #define IP0SR6_27_24 FM(AVB1_TXC) FM(AVB1_MII_TXC) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 409 + #define IP0SR6_31_28 FM(AVB1_TX_CTL) FM(AVB1_MII_TX_EN) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 410 + 411 + /* IP1SR6 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 412 + #define IP1SR6_3_0 FM(AVB1_RXC) FM(AVB1_MII_RXC) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 413 + #define IP1SR6_7_4 FM(AVB1_RX_CTL) FM(AVB1_MII_RX_DV) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 414 + #define IP1SR6_11_8 FM(AVB1_AVTP_PPS) FM(AVB1_MII_COL) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 415 + #define IP1SR6_15_12 FM(AVB1_AVTP_CAPTURE) FM(AVB1_MII_CRS) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 416 + #define IP1SR6_19_16 FM(AVB1_TD1) FM(AVB1_MII_TD1) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 417 + #define IP1SR6_23_20 FM(AVB1_TD0) FM(AVB1_MII_TD0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 418 + #define IP1SR6_27_24 FM(AVB1_RD1) FM(AVB1_MII_RD1) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 419 + #define IP1SR6_31_28 FM(AVB1_RD0) FM(AVB1_MII_RD0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 420 + 421 + /* IP2SR6 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 422 + #define IP2SR6_3_0 FM(AVB1_TD2) FM(AVB1_MII_TD2) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 423 + #define IP2SR6_7_4 FM(AVB1_RD2) FM(AVB1_MII_RD2) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 424 + #define IP2SR6_11_8 FM(AVB1_TD3) FM(AVB1_MII_TD3) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 425 + #define IP2SR6_15_12 FM(AVB1_RD3) FM(AVB1_MII_RD3) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 426 + #define IP2SR6_19_16 FM(AVB1_TXCREFCLK) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 427 + 428 + /* SR7 */ 429 + /* IP0SR7 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 430 + #define IP0SR7_3_0 FM(AVB0_AVTP_PPS) FM(AVB0_MII_COL) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 431 + #define IP0SR7_7_4 FM(AVB0_AVTP_CAPTURE) FM(AVB0_MII_CRS) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 432 + #define IP0SR7_11_8 FM(AVB0_AVTP_MATCH) FM(AVB0_MII_RX_ER) FM(CC5_OSCOUT) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 433 + #define IP0SR7_15_12 FM(AVB0_TD3) FM(AVB0_MII_TD3) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 434 + #define IP0SR7_19_16 FM(AVB0_LINK) FM(AVB0_MII_TX_ER) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 435 + #define IP0SR7_23_20 FM(AVB0_PHY_INT) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 436 + #define IP0SR7_27_24 FM(AVB0_TD2) FM(AVB0_MII_TD2) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 437 + #define IP0SR7_31_28 FM(AVB0_TD1) FM(AVB0_MII_TD1) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 438 + 439 + /* IP1SR7 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 440 + #define IP1SR7_3_0 FM(AVB0_RD3) FM(AVB0_MII_RD3) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 441 + #define IP1SR7_7_4 FM(AVB0_TXCREFCLK) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 442 + #define IP1SR7_11_8 FM(AVB0_MAGIC) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 443 + #define IP1SR7_15_12 FM(AVB0_TD0) FM(AVB0_MII_TD0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 444 + #define IP1SR7_19_16 FM(AVB0_RD2) FM(AVB0_MII_RD2) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 445 + #define IP1SR7_23_20 FM(AVB0_MDC) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 446 + #define IP1SR7_27_24 FM(AVB0_MDIO) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 447 + #define IP1SR7_31_28 FM(AVB0_TXC) FM(AVB0_MII_TXC) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 448 + 449 + /* IP2SR7 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 450 + #define IP2SR7_3_0 FM(AVB0_TX_CTL) FM(AVB0_MII_TX_EN) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 451 + #define IP2SR7_7_4 FM(AVB0_RD1) FM(AVB0_MII_RD1) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 452 + #define IP2SR7_11_8 FM(AVB0_RD0) FM(AVB0_MII_RD0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 453 + #define IP2SR7_15_12 FM(AVB0_RXC) FM(AVB0_MII_RXC) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 454 + #define IP2SR7_19_16 FM(AVB0_RX_CTL) FM(AVB0_MII_RX_DV) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 455 + 456 + /* SR8 */ 457 + /* IP0SR8 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 458 + #define IP0SR8_3_0 FM(SCL0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 459 + #define IP0SR8_7_4 FM(SDA0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 460 + #define IP0SR8_11_8 FM(SCL1) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 461 + #define IP0SR8_15_12 FM(SDA1) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 462 + #define IP0SR8_19_16 FM(SCL2) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 463 + #define IP0SR8_23_20 FM(SDA2) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 464 + #define IP0SR8_27_24 FM(SCL3) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 465 + #define IP0SR8_31_28 FM(SDA3) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 466 + 467 + /* IP1SR8 */ /* 0 */ /* 1 */ /* 2 */ /* 3 4 5 6 7 8 9 A B C D E F */ 468 + #define IP1SR8_3_0 FM(SCL4) FM(HRX2) FM(SCK4) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 469 + #define IP1SR8_7_4 FM(SDA4) FM(HTX2) FM(CTS4_N) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 470 + #define IP1SR8_11_8 FM(SCL5) FM(HRTS2_N) FM(RTS4_N) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 471 + #define IP1SR8_15_12 FM(SDA5) FM(SCIF_CLK2) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 472 + #define IP1SR8_19_16 F_(0, 0) FM(HCTS2_N) FM(TX4) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 473 + #define IP1SR8_23_20 F_(0, 0) FM(HSCK2) FM(RX4) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) 474 + 475 + #define PINMUX_GPSR \ 476 + GPSR3_29 \ 477 + GPSR1_28 GPSR3_28 \ 478 + GPSR1_27 GPSR3_27 \ 479 + GPSR1_26 GPSR3_26 \ 480 + GPSR1_25 GPSR3_25 \ 481 + GPSR1_24 GPSR3_24 GPSR4_24 \ 482 + GPSR1_23 GPSR3_23 GPSR4_23 \ 483 + GPSR1_22 GPSR3_22 GPSR4_22 \ 484 + GPSR1_21 GPSR3_21 GPSR4_21 \ 485 + GPSR1_20 GPSR3_20 GPSR4_20 GPSR5_20 GPSR6_20 GPSR7_20 \ 486 + GPSR1_19 GPSR2_19 GPSR3_19 GPSR4_19 GPSR5_19 GPSR6_19 GPSR7_19 \ 487 + GPSR0_18 GPSR1_18 GPSR2_18 GPSR3_18 GPSR4_18 GPSR5_18 GPSR6_18 GPSR7_18 \ 488 + GPSR0_17 GPSR1_17 GPSR2_17 GPSR3_17 GPSR4_17 GPSR5_17 GPSR6_17 GPSR7_17 \ 489 + GPSR0_16 GPSR1_16 GPSR2_16 GPSR3_16 GPSR4_16 GPSR5_16 GPSR6_16 GPSR7_16 \ 490 + GPSR0_15 GPSR1_15 GPSR2_15 GPSR3_15 GPSR4_15 GPSR5_15 GPSR6_15 GPSR7_15 \ 491 + GPSR0_14 GPSR1_14 GPSR2_14 GPSR3_14 GPSR4_14 GPSR5_14 GPSR6_14 GPSR7_14 \ 492 + GPSR0_13 GPSR1_13 GPSR2_13 GPSR3_13 GPSR4_13 GPSR5_13 GPSR6_13 GPSR7_13 GPSR8_13 \ 493 + GPSR0_12 GPSR1_12 GPSR2_12 GPSR3_12 GPSR4_12 GPSR5_12 GPSR6_12 GPSR7_12 GPSR8_12 \ 494 + GPSR0_11 GPSR1_11 GPSR2_11 GPSR3_11 GPSR4_11 GPSR5_11 GPSR6_11 GPSR7_11 GPSR8_11 \ 495 + GPSR0_10 GPSR1_10 GPSR2_10 GPSR3_10 GPSR4_10 GPSR5_10 GPSR6_10 GPSR7_10 GPSR8_10 \ 496 + GPSR0_9 GPSR1_9 GPSR2_9 GPSR3_9 GPSR4_9 GPSR5_9 GPSR6_9 GPSR7_9 GPSR8_9 \ 497 + GPSR0_8 GPSR1_8 GPSR2_8 GPSR3_8 GPSR4_8 GPSR5_8 GPSR6_8 GPSR7_8 GPSR8_8 \ 498 + GPSR0_7 GPSR1_7 GPSR2_7 GPSR3_7 GPSR4_7 GPSR5_7 GPSR6_7 GPSR7_7 GPSR8_7 \ 499 + GPSR0_6 GPSR1_6 GPSR2_6 GPSR3_6 GPSR4_6 GPSR5_6 GPSR6_6 GPSR7_6 GPSR8_6 \ 500 + GPSR0_5 GPSR1_5 GPSR2_5 GPSR3_5 GPSR4_5 GPSR5_5 GPSR6_5 GPSR7_5 GPSR8_5 \ 501 + GPSR0_4 GPSR1_4 GPSR2_4 GPSR3_4 GPSR4_4 GPSR5_4 GPSR6_4 GPSR7_4 GPSR8_4 \ 502 + GPSR0_3 GPSR1_3 GPSR2_3 GPSR3_3 GPSR4_3 GPSR5_3 GPSR6_3 GPSR7_3 GPSR8_3 \ 503 + GPSR0_2 GPSR1_2 GPSR2_2 GPSR3_2 GPSR4_2 GPSR5_2 GPSR6_2 GPSR7_2 GPSR8_2 \ 504 + GPSR0_1 GPSR1_1 GPSR2_1 GPSR3_1 GPSR4_1 GPSR5_1 GPSR6_1 GPSR7_1 GPSR8_1 \ 505 + GPSR0_0 GPSR1_0 GPSR2_0 GPSR3_0 GPSR4_0 GPSR5_0 GPSR6_0 GPSR7_0 GPSR8_0 506 + 507 + #define PINMUX_IPSR \ 508 + \ 509 + FM(IP0SR0_3_0) IP0SR0_3_0 FM(IP1SR0_3_0) IP1SR0_3_0 FM(IP2SR0_3_0) IP2SR0_3_0 \ 510 + FM(IP0SR0_7_4) IP0SR0_7_4 FM(IP1SR0_7_4) IP1SR0_7_4 FM(IP2SR0_7_4) IP2SR0_7_4 \ 511 + FM(IP0SR0_11_8) IP0SR0_11_8 FM(IP1SR0_11_8) IP1SR0_11_8 FM(IP2SR0_11_8) IP2SR0_11_8 \ 512 + FM(IP0SR0_15_12) IP0SR0_15_12 FM(IP1SR0_15_12) IP1SR0_15_12 \ 513 + FM(IP0SR0_19_16) IP0SR0_19_16 FM(IP1SR0_19_16) IP1SR0_19_16 \ 514 + FM(IP0SR0_23_20) IP0SR0_23_20 FM(IP1SR0_23_20) IP1SR0_23_20 \ 515 + FM(IP0SR0_27_24) IP0SR0_27_24 FM(IP1SR0_27_24) IP1SR0_27_24 \ 516 + FM(IP0SR0_31_28) IP0SR0_31_28 FM(IP1SR0_31_28) IP1SR0_31_28 \ 517 + \ 518 + FM(IP0SR1_3_0) IP0SR1_3_0 FM(IP1SR1_3_0) IP1SR1_3_0 FM(IP2SR1_3_0) IP2SR1_3_0 FM(IP3SR1_3_0) IP3SR1_3_0 \ 519 + FM(IP0SR1_7_4) IP0SR1_7_4 FM(IP1SR1_7_4) IP1SR1_7_4 FM(IP2SR1_7_4) IP2SR1_7_4 FM(IP3SR1_7_4) IP3SR1_7_4 \ 520 + FM(IP0SR1_11_8) IP0SR1_11_8 FM(IP1SR1_11_8) IP1SR1_11_8 FM(IP2SR1_11_8) IP2SR1_11_8 FM(IP3SR1_11_8) IP3SR1_11_8 \ 521 + FM(IP0SR1_15_12) IP0SR1_15_12 FM(IP1SR1_15_12) IP1SR1_15_12 FM(IP2SR1_15_12) IP2SR1_15_12 FM(IP3SR1_15_12) IP3SR1_15_12 \ 522 + FM(IP0SR1_19_16) IP0SR1_19_16 FM(IP1SR1_19_16) IP1SR1_19_16 FM(IP2SR1_19_16) IP2SR1_19_16 FM(IP3SR1_19_16) IP3SR1_19_16 \ 523 + FM(IP0SR1_23_20) IP0SR1_23_20 FM(IP1SR1_23_20) IP1SR1_23_20 FM(IP2SR1_23_20) IP2SR1_23_20 \ 524 + FM(IP0SR1_27_24) IP0SR1_27_24 FM(IP1SR1_27_24) IP1SR1_27_24 FM(IP2SR1_27_24) IP2SR1_27_24 \ 525 + FM(IP0SR1_31_28) IP0SR1_31_28 FM(IP1SR1_31_28) IP1SR1_31_28 FM(IP2SR1_31_28) IP2SR1_31_28 \ 526 + \ 527 + FM(IP0SR2_3_0) IP0SR2_3_0 FM(IP1SR2_3_0) IP1SR2_3_0 FM(IP2SR2_3_0) IP2SR2_3_0 \ 528 + FM(IP0SR2_7_4) IP0SR2_7_4 FM(IP1SR2_7_4) IP1SR2_7_4 FM(IP2SR2_7_4) IP2SR2_7_4 \ 529 + FM(IP0SR2_11_8) IP0SR2_11_8 FM(IP1SR2_11_8) IP1SR2_11_8 FM(IP2SR2_11_8) IP2SR2_11_8 \ 530 + FM(IP0SR2_15_12) IP0SR2_15_12 FM(IP1SR2_15_12) IP1SR2_15_12 FM(IP2SR2_15_12) IP2SR2_15_12 \ 531 + FM(IP0SR2_19_16) IP0SR2_19_16 FM(IP1SR2_19_16) IP1SR2_19_16 \ 532 + FM(IP0SR2_23_20) IP0SR2_23_20 FM(IP1SR2_23_20) IP1SR2_23_20 \ 533 + FM(IP0SR2_27_24) IP0SR2_27_24 FM(IP1SR2_27_24) IP1SR2_27_24 \ 534 + FM(IP0SR2_31_28) IP0SR2_31_28 FM(IP1SR2_31_28) IP1SR2_31_28 \ 535 + \ 536 + FM(IP0SR3_3_0) IP0SR3_3_0 FM(IP1SR3_3_0) IP1SR3_3_0 FM(IP2SR3_3_0) IP2SR3_3_0 FM(IP3SR3_3_0) IP3SR3_3_0 \ 537 + FM(IP0SR3_7_4) IP0SR3_7_4 FM(IP1SR3_7_4) IP1SR3_7_4 FM(IP2SR3_7_4) IP2SR3_7_4 FM(IP3SR3_7_4) IP3SR3_7_4 \ 538 + FM(IP0SR3_11_8) IP0SR3_11_8 FM(IP1SR3_11_8) IP1SR3_11_8 FM(IP2SR3_11_8) IP2SR3_11_8 FM(IP3SR3_11_8) IP3SR3_11_8 \ 539 + FM(IP0SR3_15_12) IP0SR3_15_12 FM(IP1SR3_15_12) IP1SR3_15_12 FM(IP2SR3_15_12) IP2SR3_15_12 FM(IP3SR3_15_12) IP3SR3_15_12 \ 540 + FM(IP0SR3_19_16) IP0SR3_19_16 FM(IP1SR3_19_16) IP1SR3_19_16 FM(IP2SR3_19_16) IP2SR3_19_16 FM(IP3SR3_19_16) IP3SR3_19_16 \ 541 + FM(IP0SR3_23_20) IP0SR3_23_20 FM(IP1SR3_23_20) IP1SR3_23_20 FM(IP2SR3_23_20) IP2SR3_23_20 FM(IP3SR3_23_20) IP3SR3_23_20 \ 542 + FM(IP0SR3_27_24) IP0SR3_27_24 FM(IP1SR3_27_24) IP1SR3_27_24 FM(IP2SR3_27_24) IP2SR3_27_24 \ 543 + FM(IP0SR3_31_28) IP0SR3_31_28 FM(IP1SR3_31_28) IP1SR3_31_28 FM(IP2SR3_31_28) IP2SR3_31_28 \ 544 + \ 545 + FM(IP0SR6_3_0) IP0SR6_3_0 FM(IP1SR6_3_0) IP1SR6_3_0 FM(IP2SR6_3_0) IP2SR6_3_0 \ 546 + FM(IP0SR6_7_4) IP0SR6_7_4 FM(IP1SR6_7_4) IP1SR6_7_4 FM(IP2SR6_7_4) IP2SR6_7_4 \ 547 + FM(IP0SR6_11_8) IP0SR6_11_8 FM(IP1SR6_11_8) IP1SR6_11_8 FM(IP2SR6_11_8) IP2SR6_11_8 \ 548 + FM(IP0SR6_15_12) IP0SR6_15_12 FM(IP1SR6_15_12) IP1SR6_15_12 FM(IP2SR6_15_12) IP2SR6_15_12 \ 549 + FM(IP0SR6_19_16) IP0SR6_19_16 FM(IP1SR6_19_16) IP1SR6_19_16 FM(IP2SR6_19_16) IP2SR6_19_16 \ 550 + FM(IP0SR6_23_20) IP0SR6_23_20 FM(IP1SR6_23_20) IP1SR6_23_20 \ 551 + FM(IP0SR6_27_24) IP0SR6_27_24 FM(IP1SR6_27_24) IP1SR6_27_24 \ 552 + FM(IP0SR6_31_28) IP0SR6_31_28 FM(IP1SR6_31_28) IP1SR6_31_28 \ 553 + \ 554 + FM(IP0SR7_3_0) IP0SR7_3_0 FM(IP1SR7_3_0) IP1SR7_3_0 FM(IP2SR7_3_0) IP2SR7_3_0 \ 555 + FM(IP0SR7_7_4) IP0SR7_7_4 FM(IP1SR7_7_4) IP1SR7_7_4 FM(IP2SR7_7_4) IP2SR7_7_4 \ 556 + FM(IP0SR7_11_8) IP0SR7_11_8 FM(IP1SR7_11_8) IP1SR7_11_8 FM(IP2SR7_11_8) IP2SR7_11_8 \ 557 + FM(IP0SR7_15_12) IP0SR7_15_12 FM(IP1SR7_15_12) IP1SR7_15_12 FM(IP2SR7_15_12) IP2SR7_15_12 \ 558 + FM(IP0SR7_19_16) IP0SR7_19_16 FM(IP1SR7_19_16) IP1SR7_19_16 FM(IP2SR7_19_16) IP2SR7_19_16 \ 559 + FM(IP0SR7_23_20) IP0SR7_23_20 FM(IP1SR7_23_20) IP1SR7_23_20 \ 560 + FM(IP0SR7_27_24) IP0SR7_27_24 FM(IP1SR7_27_24) IP1SR7_27_24 \ 561 + FM(IP0SR7_31_28) IP0SR7_31_28 FM(IP1SR7_31_28) IP1SR7_31_28 \ 562 + \ 563 + FM(IP0SR8_3_0) IP0SR8_3_0 FM(IP1SR8_3_0) IP1SR8_3_0 \ 564 + FM(IP0SR8_7_4) IP0SR8_7_4 FM(IP1SR8_7_4) IP1SR8_7_4 \ 565 + FM(IP0SR8_11_8) IP0SR8_11_8 FM(IP1SR8_11_8) IP1SR8_11_8 \ 566 + FM(IP0SR8_15_12) IP0SR8_15_12 FM(IP1SR8_15_12) IP1SR8_15_12 \ 567 + FM(IP0SR8_19_16) IP0SR8_19_16 FM(IP1SR8_19_16) IP1SR8_19_16 \ 568 + FM(IP0SR8_23_20) IP0SR8_23_20 FM(IP1SR8_23_20) IP1SR8_23_20 \ 569 + FM(IP0SR8_27_24) IP0SR8_27_24 \ 570 + FM(IP0SR8_31_28) IP0SR8_31_28 571 + 572 + /* MOD_SEL4 */ /* 0 */ /* 1 */ 573 + #define MOD_SEL4_19 FM(SEL_TSN0_TD2_0) FM(SEL_TSN0_TD2_1) 574 + #define MOD_SEL4_18 FM(SEL_TSN0_TD3_0) FM(SEL_TSN0_TD3_1) 575 + #define MOD_SEL4_15 FM(SEL_TSN0_TD0_0) FM(SEL_TSN0_TD0_1) 576 + #define MOD_SEL4_14 FM(SEL_TSN0_TD1_0) FM(SEL_TSN0_TD1_1) 577 + #define MOD_SEL4_12 FM(SEL_TSN0_TXC_0) FM(SEL_TSN0_TXC_1) 578 + #define MOD_SEL4_9 FM(SEL_TSN0_TX_CTL_0) FM(SEL_TSN0_TX_CTL_1) 579 + #define MOD_SEL4_8 FM(SEL_TSN0_AVTP_PPS0_0) FM(SEL_TSN0_AVTP_PPS0_1) 580 + #define MOD_SEL4_5 FM(SEL_TSN0_AVTP_MATCH_0) FM(SEL_TSN0_AVTP_MATCH_1) 581 + #define MOD_SEL4_2 FM(SEL_TSN0_AVTP_PPS1_0) FM(SEL_TSN0_AVTP_PPS1_1) 582 + #define MOD_SEL4_1 FM(SEL_TSN0_MDC_0) FM(SEL_TSN0_MDC_1) 583 + 584 + /* MOD_SEL5 */ /* 0 */ /* 1 */ 585 + #define MOD_SEL5_19 FM(SEL_AVB2_TX_CTL_0) FM(SEL_AVB2_TX_CTL_1) 586 + #define MOD_SEL5_16 FM(SEL_AVB2_TXC_0) FM(SEL_AVB2_TXC_1) 587 + #define MOD_SEL5_15 FM(SEL_AVB2_TD0_0) FM(SEL_AVB2_TD0_1) 588 + #define MOD_SEL5_12 FM(SEL_AVB2_TD1_0) FM(SEL_AVB2_TD1_1) 589 + #define MOD_SEL5_11 FM(SEL_AVB2_TD2_0) FM(SEL_AVB2_TD2_1) 590 + #define MOD_SEL5_8 FM(SEL_AVB2_TD3_0) FM(SEL_AVB2_TD3_1) 591 + #define MOD_SEL5_6 FM(SEL_AVB2_MDC_0) FM(SEL_AVB2_MDC_1) 592 + #define MOD_SEL5_5 FM(SEL_AVB2_MAGIC_0) FM(SEL_AVB2_MAGIC_1) 593 + #define MOD_SEL5_2 FM(SEL_AVB2_AVTP_MATCH_0) FM(SEL_AVB2_AVTP_MATCH_1) 594 + #define MOD_SEL5_0 FM(SEL_AVB2_AVTP_PPS_0) FM(SEL_AVB2_AVTP_PPS_1) 595 + 596 + /* MOD_SEL6 */ /* 0 */ /* 1 */ 597 + #define MOD_SEL6_18 FM(SEL_AVB1_TD3_0) FM(SEL_AVB1_TD3_1) 598 + #define MOD_SEL6_16 FM(SEL_AVB1_TD2_0) FM(SEL_AVB1_TD2_1) 599 + #define MOD_SEL6_13 FM(SEL_AVB1_TD0_0) FM(SEL_AVB1_TD0_1) 600 + #define MOD_SEL6_12 FM(SEL_AVB1_TD1_0) FM(SEL_AVB1_TD1_1) 601 + #define MOD_SEL6_10 FM(SEL_AVB1_AVTP_PPS_0) FM(SEL_AVB1_AVTP_PPS_1) 602 + #define MOD_SEL6_7 FM(SEL_AVB1_TX_CTL_0) FM(SEL_AVB1_TX_CTL_1) 603 + #define MOD_SEL6_6 FM(SEL_AVB1_TXC_0) FM(SEL_AVB1_TXC_1) 604 + #define MOD_SEL6_5 FM(SEL_AVB1_AVTP_MATCH_0) FM(SEL_AVB1_AVTP_MATCH_1) 605 + #define MOD_SEL6_2 FM(SEL_AVB1_MDC_0) FM(SEL_AVB1_MDC_1) 606 + #define MOD_SEL6_1 FM(SEL_AVB1_MAGIC_0) FM(SEL_AVB1_MAGIC_1) 607 + 608 + /* MOD_SEL7 */ /* 0 */ /* 1 */ 609 + #define MOD_SEL7_16 FM(SEL_AVB0_TX_CTL_0) FM(SEL_AVB0_TX_CTL_1) 610 + #define MOD_SEL7_15 FM(SEL_AVB0_TXC_0) FM(SEL_AVB0_TXC_1) 611 + #define MOD_SEL7_13 FM(SEL_AVB0_MDC_0) FM(SEL_AVB0_MDC_1) 612 + #define MOD_SEL7_11 FM(SEL_AVB0_TD0_0) FM(SEL_AVB0_TD0_1) 613 + #define MOD_SEL7_10 FM(SEL_AVB0_MAGIC_0) FM(SEL_AVB0_MAGIC_1) 614 + #define MOD_SEL7_7 FM(SEL_AVB0_TD1_0) FM(SEL_AVB0_TD1_1) 615 + #define MOD_SEL7_6 FM(SEL_AVB0_TD2_0) FM(SEL_AVB0_TD2_1) 616 + #define MOD_SEL7_3 FM(SEL_AVB0_TD3_0) FM(SEL_AVB0_TD3_1) 617 + #define MOD_SEL7_2 FM(SEL_AVB0_AVTP_MATCH_0) FM(SEL_AVB0_AVTP_MATCH_1) 618 + #define MOD_SEL7_0 FM(SEL_AVB0_AVTP_PPS_0) FM(SEL_AVB0_AVTP_PPS_1) 619 + 620 + /* MOD_SEL8 */ /* 0 */ /* 1 */ 621 + #define MOD_SEL8_11 FM(SEL_SDA5_0) FM(SEL_SDA5_1) 622 + #define MOD_SEL8_10 FM(SEL_SCL5_0) FM(SEL_SCL5_1) 623 + #define MOD_SEL8_9 FM(SEL_SDA4_0) FM(SEL_SDA4_1) 624 + #define MOD_SEL8_8 FM(SEL_SCL4_0) FM(SEL_SCL4_1) 625 + #define MOD_SEL8_7 FM(SEL_SDA3_0) FM(SEL_SDA3_1) 626 + #define MOD_SEL8_6 FM(SEL_SCL3_0) FM(SEL_SCL3_1) 627 + #define MOD_SEL8_5 FM(SEL_SDA2_0) FM(SEL_SDA2_1) 628 + #define MOD_SEL8_4 FM(SEL_SCL2_0) FM(SEL_SCL2_1) 629 + #define MOD_SEL8_3 FM(SEL_SDA1_0) FM(SEL_SDA1_1) 630 + #define MOD_SEL8_2 FM(SEL_SCL1_0) FM(SEL_SCL1_1) 631 + #define MOD_SEL8_1 FM(SEL_SDA0_0) FM(SEL_SDA0_1) 632 + #define MOD_SEL8_0 FM(SEL_SCL0_0) FM(SEL_SCL0_1) 633 + 634 + #define PINMUX_MOD_SELS \ 635 + \ 636 + MOD_SEL4_19 MOD_SEL5_19 \ 637 + MOD_SEL4_18 MOD_SEL6_18 \ 638 + \ 639 + MOD_SEL5_16 MOD_SEL6_16 MOD_SEL7_16 \ 640 + MOD_SEL4_15 MOD_SEL5_15 MOD_SEL7_15 \ 641 + MOD_SEL4_14 \ 642 + MOD_SEL6_13 MOD_SEL7_13 \ 643 + MOD_SEL4_12 MOD_SEL5_12 MOD_SEL6_12 \ 644 + MOD_SEL5_11 MOD_SEL7_11 MOD_SEL8_11 \ 645 + MOD_SEL6_10 MOD_SEL7_10 MOD_SEL8_10 \ 646 + MOD_SEL4_9 MOD_SEL8_9 \ 647 + MOD_SEL4_8 MOD_SEL5_8 MOD_SEL8_8 \ 648 + MOD_SEL6_7 MOD_SEL7_7 MOD_SEL8_7 \ 649 + MOD_SEL5_6 MOD_SEL6_6 MOD_SEL7_6 MOD_SEL8_6 \ 650 + MOD_SEL4_5 MOD_SEL5_5 MOD_SEL6_5 MOD_SEL8_5 \ 651 + MOD_SEL8_4 \ 652 + MOD_SEL7_3 MOD_SEL8_3 \ 653 + MOD_SEL4_2 MOD_SEL5_2 MOD_SEL6_2 MOD_SEL7_2 MOD_SEL8_2 \ 654 + MOD_SEL4_1 MOD_SEL6_1 MOD_SEL8_1 \ 655 + MOD_SEL5_0 MOD_SEL7_0 MOD_SEL8_0 656 + 657 + enum { 658 + PINMUX_RESERVED = 0, 659 + 660 + PINMUX_DATA_BEGIN, 661 + GP_ALL(DATA), 662 + PINMUX_DATA_END, 663 + 664 + #define F_(x, y) 665 + #define FM(x) FN_##x, 666 + PINMUX_FUNCTION_BEGIN, 667 + GP_ALL(FN), 668 + PINMUX_GPSR 669 + PINMUX_IPSR 670 + PINMUX_MOD_SELS 671 + PINMUX_FUNCTION_END, 672 + #undef F_ 673 + #undef FM 674 + 675 + #define F_(x, y) 676 + #define FM(x) x##_MARK, 677 + PINMUX_MARK_BEGIN, 678 + PINMUX_GPSR 679 + PINMUX_IPSR 680 + PINMUX_MOD_SELS 681 + PINMUX_MARK_END, 682 + #undef F_ 683 + #undef FM 684 + }; 685 + 686 + static const u16 pinmux_data[] = { 687 + PINMUX_DATA_GP_ALL(), 688 + 689 + PINMUX_SINGLE(AVS1), 690 + PINMUX_SINGLE(AVS0), 691 + PINMUX_SINGLE(PCIE1_CLKREQ_N), 692 + PINMUX_SINGLE(PCIE0_CLKREQ_N), 693 + 694 + /* TSN0 without MODSEL4 */ 695 + PINMUX_SINGLE(TSN0_TXCREFCLK), 696 + PINMUX_SINGLE(TSN0_RD2), 697 + PINMUX_SINGLE(TSN0_RD3), 698 + PINMUX_SINGLE(TSN0_RD1), 699 + PINMUX_SINGLE(TSN0_RXC), 700 + PINMUX_SINGLE(TSN0_RD0), 701 + PINMUX_SINGLE(TSN0_RX_CTL), 702 + PINMUX_SINGLE(TSN0_AVTP_CAPTURE), 703 + PINMUX_SINGLE(TSN0_LINK), 704 + PINMUX_SINGLE(TSN0_PHY_INT), 705 + PINMUX_SINGLE(TSN0_MDIO), 706 + /* TSN0 with MODSEL4 */ 707 + PINMUX_IPSR_NOGM(0, TSN0_TD2, SEL_TSN0_TD2_1), 708 + PINMUX_IPSR_NOGM(0, TSN0_TD3, SEL_TSN0_TD3_1), 709 + PINMUX_IPSR_NOGM(0, TSN0_TD0, SEL_TSN0_TD0_1), 710 + PINMUX_IPSR_NOGM(0, TSN0_TD1, SEL_TSN0_TD1_1), 711 + PINMUX_IPSR_NOGM(0, TSN0_TXC, SEL_TSN0_TXC_1), 712 + PINMUX_IPSR_NOGM(0, TSN0_TX_CTL, SEL_TSN0_TX_CTL_1), 713 + PINMUX_IPSR_NOGM(0, TSN0_AVTP_PPS0, SEL_TSN0_AVTP_PPS0_1), 714 + PINMUX_IPSR_NOGM(0, TSN0_AVTP_MATCH, SEL_TSN0_AVTP_MATCH_1), 715 + PINMUX_IPSR_NOGM(0, TSN0_AVTP_PPS1, SEL_TSN0_AVTP_PPS1_1), 716 + PINMUX_IPSR_NOGM(0, TSN0_MDC, SEL_TSN0_MDC_1), 717 + 718 + /* TSN0 without MODSEL5 */ 719 + PINMUX_SINGLE(AVB2_RX_CTL), 720 + PINMUX_SINGLE(AVB2_RXC), 721 + PINMUX_SINGLE(AVB2_RD0), 722 + PINMUX_SINGLE(AVB2_RD1), 723 + PINMUX_SINGLE(AVB2_RD2), 724 + PINMUX_SINGLE(AVB2_MDIO), 725 + PINMUX_SINGLE(AVB2_RD3), 726 + PINMUX_SINGLE(AVB2_TXCREFCLK), 727 + PINMUX_SINGLE(AVB2_PHY_INT), 728 + PINMUX_SINGLE(AVB2_LINK), 729 + PINMUX_SINGLE(AVB2_AVTP_CAPTURE), 730 + /* TSN0 with MODSEL5 */ 731 + PINMUX_IPSR_NOGM(0, AVB2_TX_CTL, SEL_AVB2_TX_CTL_1), 732 + PINMUX_IPSR_NOGM(0, AVB2_TXC, SEL_AVB2_TXC_1), 733 + PINMUX_IPSR_NOGM(0, AVB2_TD0, SEL_AVB2_TD0_1), 734 + PINMUX_IPSR_NOGM(0, AVB2_TD1, SEL_AVB2_TD1_1), 735 + PINMUX_IPSR_NOGM(0, AVB2_TD2, SEL_AVB2_TD2_1), 736 + PINMUX_IPSR_NOGM(0, AVB2_TD3, SEL_AVB2_TD3_1), 737 + PINMUX_IPSR_NOGM(0, AVB2_MDC, SEL_AVB2_MDC_1), 738 + PINMUX_IPSR_NOGM(0, AVB2_MAGIC, SEL_AVB2_MAGIC_1), 739 + PINMUX_IPSR_NOGM(0, AVB2_AVTP_MATCH, SEL_AVB2_AVTP_MATCH_1), 740 + PINMUX_IPSR_NOGM(0, AVB2_AVTP_PPS, SEL_AVB2_AVTP_PPS_1), 741 + 742 + /* IP0SR0 */ 743 + PINMUX_IPSR_GPSR(IP0SR0_3_0, ERROROUTC_B), 744 + PINMUX_IPSR_GPSR(IP0SR0_3_0, TCLK2_A), 745 + 746 + PINMUX_IPSR_GPSR(IP0SR0_7_4, MSIOF3_SS1), 747 + 748 + PINMUX_IPSR_GPSR(IP0SR0_11_8, MSIOF3_SS2), 749 + 750 + PINMUX_IPSR_GPSR(IP0SR0_15_12, IRQ3), 751 + PINMUX_IPSR_GPSR(IP0SR0_15_12, MSIOF3_SCK), 752 + 753 + PINMUX_IPSR_GPSR(IP0SR0_19_16, IRQ2), 754 + PINMUX_IPSR_GPSR(IP0SR0_19_16, MSIOF3_TXD), 755 + 756 + PINMUX_IPSR_GPSR(IP0SR0_23_20, IRQ1), 757 + PINMUX_IPSR_GPSR(IP0SR0_23_20, MSIOF3_RXD), 758 + 759 + PINMUX_IPSR_GPSR(IP0SR0_27_24, IRQ0), 760 + PINMUX_IPSR_GPSR(IP0SR0_27_24, MSIOF3_SYNC), 761 + 762 + PINMUX_IPSR_GPSR(IP0SR0_31_28, MSIOF5_SS2), 763 + 764 + /* IP1SR0 */ 765 + PINMUX_IPSR_GPSR(IP1SR0_3_0, MSIOF5_SS1), 766 + 767 + PINMUX_IPSR_GPSR(IP1SR0_7_4, MSIOF5_SYNC), 768 + 769 + PINMUX_IPSR_GPSR(IP1SR0_11_8, MSIOF5_TXD), 770 + 771 + PINMUX_IPSR_GPSR(IP1SR0_15_12, MSIOF5_SCK), 772 + 773 + PINMUX_IPSR_GPSR(IP1SR0_19_16, MSIOF5_RXD), 774 + 775 + PINMUX_IPSR_GPSR(IP1SR0_23_20, MSIOF2_SS2), 776 + PINMUX_IPSR_GPSR(IP1SR0_23_20, TCLK1), 777 + PINMUX_IPSR_GPSR(IP1SR0_23_20, IRQ2_A), 778 + 779 + PINMUX_IPSR_GPSR(IP1SR0_27_24, MSIOF2_SS1), 780 + PINMUX_IPSR_GPSR(IP1SR0_27_24, HTX1), 781 + PINMUX_IPSR_GPSR(IP1SR0_27_24, TX1), 782 + 783 + PINMUX_IPSR_GPSR(IP1SR0_31_28, MSIOF2_SYNC), 784 + PINMUX_IPSR_GPSR(IP1SR0_31_28, HRX1), 785 + PINMUX_IPSR_GPSR(IP1SR0_31_28, RX1), 786 + 787 + /* IP2SR0 */ 788 + PINMUX_IPSR_GPSR(IP2SR0_3_0, MSIOF2_TXD), 789 + PINMUX_IPSR_GPSR(IP2SR0_3_0, HCTS1_N), 790 + PINMUX_IPSR_GPSR(IP2SR0_3_0, CTS1_N), 791 + 792 + PINMUX_IPSR_GPSR(IP2SR0_7_4, MSIOF2_SCK), 793 + PINMUX_IPSR_GPSR(IP2SR0_7_4, HRTS1_N), 794 + PINMUX_IPSR_GPSR(IP2SR0_7_4, RTS1_N), 795 + 796 + PINMUX_IPSR_GPSR(IP2SR0_11_8, MSIOF2_RXD), 797 + PINMUX_IPSR_GPSR(IP2SR0_11_8, HSCK1), 798 + PINMUX_IPSR_GPSR(IP2SR0_11_8, SCK1), 799 + 800 + /* IP0SR1 */ 801 + PINMUX_IPSR_GPSR(IP0SR1_3_0, MSIOF1_SS2), 802 + PINMUX_IPSR_GPSR(IP0SR1_3_0, HTX3_A), 803 + PINMUX_IPSR_GPSR(IP0SR1_3_0, TX3), 804 + 805 + PINMUX_IPSR_GPSR(IP0SR1_7_4, MSIOF1_SS1), 806 + PINMUX_IPSR_GPSR(IP0SR1_7_4, HCTS3_N_A), 807 + PINMUX_IPSR_GPSR(IP0SR1_7_4, RX3), 808 + 809 + PINMUX_IPSR_GPSR(IP0SR1_11_8, MSIOF1_SYNC), 810 + PINMUX_IPSR_GPSR(IP0SR1_11_8, HRTS3_N_A), 811 + PINMUX_IPSR_GPSR(IP0SR1_11_8, RTS3_N), 812 + 813 + PINMUX_IPSR_GPSR(IP0SR1_15_12, MSIOF1_SCK), 814 + PINMUX_IPSR_GPSR(IP0SR1_15_12, HSCK3_A), 815 + PINMUX_IPSR_GPSR(IP0SR1_15_12, CTS3_N), 816 + 817 + PINMUX_IPSR_GPSR(IP0SR1_19_16, MSIOF1_TXD), 818 + PINMUX_IPSR_GPSR(IP0SR1_19_16, HRX3_A), 819 + PINMUX_IPSR_GPSR(IP0SR1_19_16, SCK3), 820 + 821 + PINMUX_IPSR_GPSR(IP0SR1_23_20, MSIOF1_RXD), 822 + 823 + PINMUX_IPSR_GPSR(IP0SR1_27_24, MSIOF0_SS2), 824 + PINMUX_IPSR_GPSR(IP0SR1_27_24, HTX1_X), 825 + PINMUX_IPSR_GPSR(IP0SR1_27_24, TX1_X), 826 + 827 + PINMUX_IPSR_GPSR(IP0SR1_31_28, MSIOF0_SS1), 828 + PINMUX_IPSR_GPSR(IP0SR1_31_28, HRX1_X), 829 + PINMUX_IPSR_GPSR(IP0SR1_31_28, RX1_X), 830 + 831 + /* IP1SR1 */ 832 + PINMUX_IPSR_GPSR(IP1SR1_3_0, MSIOF0_SYNC), 833 + PINMUX_IPSR_GPSR(IP1SR1_3_0, HCTS1_N_X), 834 + PINMUX_IPSR_GPSR(IP1SR1_3_0, CTS1_N_X), 835 + PINMUX_IPSR_GPSR(IP1SR1_3_0, CANFD5_TX_B), 836 + 837 + PINMUX_IPSR_GPSR(IP1SR1_7_4, MSIOF0_TXD), 838 + PINMUX_IPSR_GPSR(IP1SR1_7_4, HRTS1_N_X), 839 + PINMUX_IPSR_GPSR(IP1SR1_7_4, RTS1_N_X), 840 + PINMUX_IPSR_GPSR(IP1SR1_7_4, CANFD5_RX_B), 841 + 842 + PINMUX_IPSR_GPSR(IP1SR1_11_8, MSIOF0_SCK), 843 + PINMUX_IPSR_GPSR(IP1SR1_11_8, HSCK1_X), 844 + PINMUX_IPSR_GPSR(IP1SR1_11_8, SCK1_X), 845 + 846 + PINMUX_IPSR_GPSR(IP1SR1_15_12, MSIOF0_RXD), 847 + 848 + PINMUX_IPSR_GPSR(IP1SR1_19_16, HTX0), 849 + PINMUX_IPSR_GPSR(IP1SR1_19_16, TX0), 850 + 851 + PINMUX_IPSR_GPSR(IP1SR1_23_20, HCTS0_N), 852 + PINMUX_IPSR_GPSR(IP1SR1_23_20, CTS0_N), 853 + PINMUX_IPSR_GPSR(IP1SR1_23_20, PWM8_A), 854 + 855 + PINMUX_IPSR_GPSR(IP1SR1_27_24, HRTS0_N), 856 + PINMUX_IPSR_GPSR(IP1SR1_27_24, RTS0_N), 857 + PINMUX_IPSR_GPSR(IP1SR1_27_24, PWM9_A), 858 + 859 + PINMUX_IPSR_GPSR(IP1SR1_31_28, HSCK0), 860 + PINMUX_IPSR_GPSR(IP1SR1_31_28, SCK0), 861 + PINMUX_IPSR_GPSR(IP1SR1_31_28, PWM0_A), 862 + 863 + /* IP2SR1 */ 864 + PINMUX_IPSR_GPSR(IP2SR1_3_0, HRX0), 865 + PINMUX_IPSR_GPSR(IP2SR1_3_0, RX0), 866 + 867 + PINMUX_IPSR_GPSR(IP2SR1_7_4, SCIF_CLK), 868 + PINMUX_IPSR_GPSR(IP2SR1_7_4, IRQ4_A), 869 + 870 + PINMUX_IPSR_GPSR(IP2SR1_11_8, SSI_SCK), 871 + PINMUX_IPSR_GPSR(IP2SR1_11_8, TCLK3), 872 + 873 + PINMUX_IPSR_GPSR(IP2SR1_15_12, SSI_WS), 874 + PINMUX_IPSR_GPSR(IP2SR1_15_12, TCLK4), 875 + 876 + PINMUX_IPSR_GPSR(IP2SR1_19_16, SSI_SD), 877 + PINMUX_IPSR_GPSR(IP2SR1_19_16, IRQ0_A), 878 + 879 + PINMUX_IPSR_GPSR(IP2SR1_23_20, AUDIO_CLKOUT), 880 + PINMUX_IPSR_GPSR(IP2SR1_23_20, IRQ1_A), 881 + 882 + PINMUX_IPSR_GPSR(IP2SR1_27_24, AUDIO_CLKIN), 883 + PINMUX_IPSR_GPSR(IP2SR1_27_24, PWM3_A), 884 + 885 + PINMUX_IPSR_GPSR(IP2SR1_31_28, TCLK2), 886 + PINMUX_IPSR_GPSR(IP2SR1_31_28, MSIOF4_SS1), 887 + PINMUX_IPSR_GPSR(IP2SR1_31_28, IRQ3_B), 888 + 889 + /* IP3SR1 */ 890 + PINMUX_IPSR_GPSR(IP3SR1_3_0, HRX3), 891 + PINMUX_IPSR_GPSR(IP3SR1_3_0, SCK3_A), 892 + PINMUX_IPSR_GPSR(IP3SR1_3_0, MSIOF4_SS2), 893 + 894 + PINMUX_IPSR_GPSR(IP3SR1_7_4, HSCK3), 895 + PINMUX_IPSR_GPSR(IP3SR1_7_4, CTS3_N_A), 896 + PINMUX_IPSR_GPSR(IP3SR1_7_4, MSIOF4_SCK), 897 + PINMUX_IPSR_GPSR(IP3SR1_7_4, TPU0TO0_A), 898 + 899 + PINMUX_IPSR_GPSR(IP3SR1_11_8, HRTS3_N), 900 + PINMUX_IPSR_GPSR(IP3SR1_11_8, RTS3_N_A), 901 + PINMUX_IPSR_GPSR(IP3SR1_11_8, MSIOF4_TXD), 902 + PINMUX_IPSR_GPSR(IP3SR1_11_8, TPU0TO1_A), 903 + 904 + PINMUX_IPSR_GPSR(IP3SR1_15_12, HCTS3_N), 905 + PINMUX_IPSR_GPSR(IP3SR1_15_12, RX3_A), 906 + PINMUX_IPSR_GPSR(IP3SR1_15_12, MSIOF4_RXD), 907 + 908 + PINMUX_IPSR_GPSR(IP3SR1_19_16, HTX3), 909 + PINMUX_IPSR_GPSR(IP3SR1_19_16, TX3_A), 910 + PINMUX_IPSR_GPSR(IP3SR1_19_16, MSIOF4_SYNC), 911 + 912 + /* IP0SR2 */ 913 + PINMUX_IPSR_GPSR(IP0SR2_3_0, FXR_TXDA), 914 + PINMUX_IPSR_GPSR(IP0SR2_3_0, CANFD1_TX), 915 + PINMUX_IPSR_GPSR(IP0SR2_3_0, TPU0TO2_A), 916 + 917 + PINMUX_IPSR_GPSR(IP0SR2_7_4, FXR_TXENA_N), 918 + PINMUX_IPSR_GPSR(IP0SR2_7_4, CANFD1_RX), 919 + PINMUX_IPSR_GPSR(IP0SR2_7_4, TPU0TO3_A), 920 + 921 + PINMUX_IPSR_GPSR(IP0SR2_11_8, RXDA_EXTFXR), 922 + PINMUX_IPSR_GPSR(IP0SR2_11_8, CANFD5_TX), 923 + PINMUX_IPSR_GPSR(IP0SR2_11_8, IRQ5), 924 + 925 + PINMUX_IPSR_GPSR(IP0SR2_15_12, CLK_EXTFXR), 926 + PINMUX_IPSR_GPSR(IP0SR2_15_12, CANFD5_RX), 927 + PINMUX_IPSR_GPSR(IP0SR2_15_12, IRQ4_B), 928 + 929 + PINMUX_IPSR_GPSR(IP0SR2_19_16, RXDB_EXTFXR), 930 + 931 + PINMUX_IPSR_GPSR(IP0SR2_23_20, FXR_TXENB_N), 932 + 933 + PINMUX_IPSR_GPSR(IP0SR2_27_24, FXR_TXDB), 934 + 935 + PINMUX_IPSR_GPSR(IP0SR2_31_28, TPU0TO1), 936 + PINMUX_IPSR_GPSR(IP0SR2_31_28, CANFD6_TX), 937 + PINMUX_IPSR_GPSR(IP0SR2_31_28, TCLK2_B), 938 + 939 + /* IP1SR2 */ 940 + PINMUX_IPSR_GPSR(IP1SR2_3_0, TPU0TO0), 941 + PINMUX_IPSR_GPSR(IP1SR2_3_0, CANFD6_RX), 942 + PINMUX_IPSR_GPSR(IP1SR2_3_0, TCLK1_A), 943 + 944 + PINMUX_IPSR_GPSR(IP1SR2_7_4, CAN_CLK), 945 + PINMUX_IPSR_GPSR(IP1SR2_7_4, FXR_TXENA_N_X), 946 + 947 + PINMUX_IPSR_GPSR(IP1SR2_11_8, CANFD0_TX), 948 + PINMUX_IPSR_GPSR(IP1SR2_11_8, FXR_TXENB_N_X), 949 + 950 + PINMUX_IPSR_GPSR(IP1SR2_15_12, CANFD0_RX), 951 + PINMUX_IPSR_GPSR(IP1SR2_15_12, STPWT_EXTFXR), 952 + 953 + PINMUX_IPSR_GPSR(IP1SR2_19_16, CANFD2_TX), 954 + PINMUX_IPSR_GPSR(IP1SR2_19_16, TPU0TO2), 955 + PINMUX_IPSR_GPSR(IP1SR2_19_16, TCLK3_A), 956 + 957 + PINMUX_IPSR_GPSR(IP1SR2_23_20, CANFD2_RX), 958 + PINMUX_IPSR_GPSR(IP1SR2_23_20, TPU0TO3), 959 + PINMUX_IPSR_GPSR(IP1SR2_23_20, PWM1_B), 960 + PINMUX_IPSR_GPSR(IP1SR2_23_20, TCLK4_A), 961 + 962 + PINMUX_IPSR_GPSR(IP1SR2_27_24, CANFD3_TX), 963 + PINMUX_IPSR_GPSR(IP1SR2_27_24, PWM2_B), 964 + 965 + PINMUX_IPSR_GPSR(IP1SR2_31_28, CANFD3_RX), 966 + PINMUX_IPSR_GPSR(IP1SR2_31_28, PWM3_B), 967 + 968 + /* IP2SR2 */ 969 + PINMUX_IPSR_GPSR(IP2SR2_3_0, CANFD4_TX), 970 + PINMUX_IPSR_GPSR(IP2SR2_3_0, PWM4), 971 + 972 + PINMUX_IPSR_GPSR(IP2SR2_7_4, CANFD4_RX), 973 + PINMUX_IPSR_GPSR(IP2SR2_7_4, PWM5), 974 + 975 + PINMUX_IPSR_GPSR(IP2SR2_11_8, CANFD7_TX), 976 + PINMUX_IPSR_GPSR(IP2SR2_11_8, PWM6), 977 + 978 + PINMUX_IPSR_GPSR(IP2SR2_15_12, CANFD7_RX), 979 + PINMUX_IPSR_GPSR(IP2SR2_15_12, PWM7), 980 + 981 + /* IP0SR3 */ 982 + PINMUX_IPSR_GPSR(IP0SR3_3_0, MMC_SD_D1), 983 + PINMUX_IPSR_GPSR(IP0SR3_7_4, MMC_SD_D0), 984 + PINMUX_IPSR_GPSR(IP0SR3_11_8, MMC_SD_D2), 985 + PINMUX_IPSR_GPSR(IP0SR3_15_12, MMC_SD_CLK), 986 + PINMUX_IPSR_GPSR(IP0SR3_19_16, MMC_DS), 987 + PINMUX_IPSR_GPSR(IP0SR3_23_20, MMC_SD_D3), 988 + PINMUX_IPSR_GPSR(IP0SR3_27_24, MMC_D5), 989 + PINMUX_IPSR_GPSR(IP0SR3_31_28, MMC_D4), 990 + 991 + /* IP1SR3 */ 992 + PINMUX_IPSR_GPSR(IP1SR3_3_0, MMC_D7), 993 + 994 + PINMUX_IPSR_GPSR(IP1SR3_7_4, MMC_D6), 995 + 996 + PINMUX_IPSR_GPSR(IP1SR3_11_8, MMC_SD_CMD), 997 + 998 + PINMUX_IPSR_GPSR(IP1SR3_15_12, SD_CD), 999 + 1000 + PINMUX_IPSR_GPSR(IP1SR3_19_16, SD_WP), 1001 + 1002 + PINMUX_IPSR_GPSR(IP1SR3_23_20, IPC_CLKIN), 1003 + PINMUX_IPSR_GPSR(IP1SR3_23_20, IPC_CLKEN_IN), 1004 + PINMUX_IPSR_GPSR(IP1SR3_23_20, PWM1_A), 1005 + PINMUX_IPSR_GPSR(IP1SR3_23_20, TCLK3_X), 1006 + 1007 + PINMUX_IPSR_GPSR(IP1SR3_27_24, IPC_CLKOUT), 1008 + PINMUX_IPSR_GPSR(IP1SR3_27_24, IPC_CLKEN_OUT), 1009 + PINMUX_IPSR_GPSR(IP1SR3_27_24, ERROROUTC_A), 1010 + PINMUX_IPSR_GPSR(IP1SR3_27_24, TCLK4_X), 1011 + 1012 + PINMUX_IPSR_GPSR(IP1SR3_31_28, QSPI0_SSL), 1013 + 1014 + /* IP2SR3 */ 1015 + PINMUX_IPSR_GPSR(IP2SR3_3_0, QSPI0_IO3), 1016 + PINMUX_IPSR_GPSR(IP2SR3_7_4, QSPI0_IO2), 1017 + PINMUX_IPSR_GPSR(IP2SR3_11_8, QSPI0_MISO_IO1), 1018 + PINMUX_IPSR_GPSR(IP2SR3_15_12, QSPI0_MOSI_IO0), 1019 + PINMUX_IPSR_GPSR(IP2SR3_19_16, QSPI0_SPCLK), 1020 + PINMUX_IPSR_GPSR(IP2SR3_23_20, QSPI1_MOSI_IO0), 1021 + PINMUX_IPSR_GPSR(IP2SR3_27_24, QSPI1_SPCLK), 1022 + PINMUX_IPSR_GPSR(IP2SR3_31_28, QSPI1_MISO_IO1), 1023 + 1024 + /* IP3SR3 */ 1025 + PINMUX_IPSR_GPSR(IP3SR3_3_0, QSPI1_IO2), 1026 + PINMUX_IPSR_GPSR(IP3SR3_7_4, QSPI1_SSL), 1027 + PINMUX_IPSR_GPSR(IP3SR3_11_8, QSPI1_IO3), 1028 + PINMUX_IPSR_GPSR(IP3SR3_15_12, RPC_RESET_N), 1029 + PINMUX_IPSR_GPSR(IP3SR3_19_16, RPC_WP_N), 1030 + PINMUX_IPSR_GPSR(IP3SR3_23_20, RPC_INT_N), 1031 + 1032 + /* IP0SR6 */ 1033 + PINMUX_IPSR_GPSR(IP0SR6_3_0, AVB1_MDIO), 1034 + 1035 + PINMUX_IPSR_MSEL(IP0SR6_7_4, AVB1_MAGIC, SEL_AVB1_MAGIC_1), 1036 + 1037 + PINMUX_IPSR_MSEL(IP0SR6_11_8, AVB1_MDC, SEL_AVB1_MDC_1), 1038 + 1039 + PINMUX_IPSR_GPSR(IP0SR6_15_12, AVB1_PHY_INT), 1040 + 1041 + PINMUX_IPSR_GPSR(IP0SR6_19_16, AVB1_LINK), 1042 + PINMUX_IPSR_GPSR(IP0SR6_19_16, AVB1_MII_TX_ER), 1043 + 1044 + PINMUX_IPSR_MSEL(IP0SR6_23_20, AVB1_AVTP_MATCH, SEL_AVB1_AVTP_MATCH_1), 1045 + PINMUX_IPSR_MSEL(IP0SR6_23_20, AVB1_MII_RX_ER, SEL_AVB1_AVTP_MATCH_0), 1046 + 1047 + PINMUX_IPSR_MSEL(IP0SR6_27_24, AVB1_TXC, SEL_AVB1_TXC_1), 1048 + PINMUX_IPSR_MSEL(IP0SR6_27_24, AVB1_MII_TXC, SEL_AVB1_TXC_0), 1049 + 1050 + PINMUX_IPSR_MSEL(IP0SR6_31_28, AVB1_TX_CTL, SEL_AVB1_TX_CTL_1), 1051 + PINMUX_IPSR_MSEL(IP0SR6_31_28, AVB1_MII_TX_EN, SEL_AVB1_TX_CTL_0), 1052 + 1053 + /* IP1SR6 */ 1054 + PINMUX_IPSR_GPSR(IP1SR6_3_0, AVB1_RXC), 1055 + PINMUX_IPSR_GPSR(IP1SR6_3_0, AVB1_MII_RXC), 1056 + 1057 + PINMUX_IPSR_GPSR(IP1SR6_7_4, AVB1_RX_CTL), 1058 + PINMUX_IPSR_GPSR(IP1SR6_7_4, AVB1_MII_RX_DV), 1059 + 1060 + PINMUX_IPSR_MSEL(IP1SR6_11_8, AVB1_AVTP_PPS, SEL_AVB1_AVTP_PPS_1), 1061 + PINMUX_IPSR_MSEL(IP1SR6_11_8, AVB1_MII_COL, SEL_AVB1_AVTP_PPS_0), 1062 + 1063 + PINMUX_IPSR_GPSR(IP1SR6_15_12, AVB1_AVTP_CAPTURE), 1064 + PINMUX_IPSR_GPSR(IP1SR6_15_12, AVB1_MII_CRS), 1065 + 1066 + PINMUX_IPSR_MSEL(IP1SR6_19_16, AVB1_TD1, SEL_AVB1_TD1_1), 1067 + PINMUX_IPSR_MSEL(IP1SR6_19_16, AVB1_MII_TD1, SEL_AVB1_TD1_0), 1068 + 1069 + PINMUX_IPSR_MSEL(IP1SR6_23_20, AVB1_TD0, SEL_AVB1_TD0_1), 1070 + PINMUX_IPSR_MSEL(IP1SR6_23_20, AVB1_MII_TD0, SEL_AVB1_TD0_0), 1071 + 1072 + PINMUX_IPSR_GPSR(IP1SR6_27_24, AVB1_RD1), 1073 + PINMUX_IPSR_GPSR(IP1SR6_27_24, AVB1_MII_RD1), 1074 + 1075 + PINMUX_IPSR_GPSR(IP1SR6_31_28, AVB1_RD0), 1076 + PINMUX_IPSR_GPSR(IP1SR6_31_28, AVB1_MII_RD0), 1077 + 1078 + /* IP2SR6 */ 1079 + PINMUX_IPSR_MSEL(IP2SR6_3_0, AVB1_TD2, SEL_AVB1_TD2_1), 1080 + PINMUX_IPSR_MSEL(IP2SR6_3_0, AVB1_MII_TD2, SEL_AVB1_TD2_0), 1081 + 1082 + PINMUX_IPSR_GPSR(IP2SR6_7_4, AVB1_RD2), 1083 + PINMUX_IPSR_GPSR(IP2SR6_7_4, AVB1_MII_RD2), 1084 + 1085 + PINMUX_IPSR_MSEL(IP2SR6_11_8, AVB1_TD3, SEL_AVB1_TD3_1), 1086 + PINMUX_IPSR_MSEL(IP2SR6_11_8, AVB1_MII_TD3, SEL_AVB1_TD3_0), 1087 + 1088 + PINMUX_IPSR_GPSR(IP2SR6_15_12, AVB1_RD3), 1089 + PINMUX_IPSR_GPSR(IP2SR6_15_12, AVB1_MII_RD3), 1090 + 1091 + PINMUX_IPSR_GPSR(IP2SR6_19_16, AVB1_TXCREFCLK), 1092 + 1093 + /* IP0SR7 */ 1094 + PINMUX_IPSR_MSEL(IP0SR7_3_0, AVB0_AVTP_PPS, SEL_AVB0_AVTP_PPS_1), 1095 + PINMUX_IPSR_MSEL(IP0SR7_3_0, AVB0_MII_COL, SEL_AVB0_AVTP_PPS_0), 1096 + 1097 + PINMUX_IPSR_GPSR(IP0SR7_7_4, AVB0_AVTP_CAPTURE), 1098 + PINMUX_IPSR_GPSR(IP0SR7_7_4, AVB0_MII_CRS), 1099 + 1100 + PINMUX_IPSR_MSEL(IP0SR7_11_8, AVB0_AVTP_MATCH, SEL_AVB0_AVTP_MATCH_1), 1101 + PINMUX_IPSR_MSEL(IP0SR7_11_8, AVB0_MII_RX_ER, SEL_AVB0_AVTP_MATCH_0), 1102 + PINMUX_IPSR_MSEL(IP0SR7_11_8, CC5_OSCOUT, SEL_AVB0_AVTP_MATCH_0), 1103 + 1104 + PINMUX_IPSR_MSEL(IP0SR7_15_12, AVB0_TD3, SEL_AVB0_TD3_1), 1105 + PINMUX_IPSR_MSEL(IP0SR7_15_12, AVB0_MII_TD3, SEL_AVB0_TD3_0), 1106 + 1107 + PINMUX_IPSR_GPSR(IP0SR7_19_16, AVB0_LINK), 1108 + PINMUX_IPSR_GPSR(IP0SR7_19_16, AVB0_MII_TX_ER), 1109 + 1110 + PINMUX_IPSR_GPSR(IP0SR7_23_20, AVB0_PHY_INT), 1111 + 1112 + PINMUX_IPSR_MSEL(IP0SR7_27_24, AVB0_TD2, SEL_AVB0_TD2_1), 1113 + PINMUX_IPSR_MSEL(IP0SR7_27_24, AVB0_MII_TD2, SEL_AVB0_TD2_0), 1114 + 1115 + PINMUX_IPSR_MSEL(IP0SR7_31_28, AVB0_TD1, SEL_AVB0_TD1_1), 1116 + PINMUX_IPSR_MSEL(IP0SR7_31_28, AVB0_MII_TD1, SEL_AVB0_TD1_0), 1117 + 1118 + /* IP1SR7 */ 1119 + PINMUX_IPSR_GPSR(IP1SR7_3_0, AVB0_RD3), 1120 + PINMUX_IPSR_GPSR(IP1SR7_3_0, AVB0_MII_RD3), 1121 + 1122 + PINMUX_IPSR_GPSR(IP1SR7_7_4, AVB0_TXCREFCLK), 1123 + 1124 + PINMUX_IPSR_MSEL(IP1SR7_11_8, AVB0_MAGIC, SEL_AVB0_MAGIC_1), 1125 + 1126 + PINMUX_IPSR_MSEL(IP1SR7_15_12, AVB0_TD0, SEL_AVB0_TD0_1), 1127 + PINMUX_IPSR_MSEL(IP1SR7_15_12, AVB0_MII_TD0, SEL_AVB0_TD0_0), 1128 + 1129 + PINMUX_IPSR_GPSR(IP1SR7_19_16, AVB0_RD2), 1130 + PINMUX_IPSR_GPSR(IP1SR7_19_16, AVB0_MII_RD2), 1131 + 1132 + PINMUX_IPSR_MSEL(IP1SR7_23_20, AVB0_MDC, SEL_AVB0_MDC_1), 1133 + 1134 + PINMUX_IPSR_GPSR(IP1SR7_27_24, AVB0_MDIO), 1135 + 1136 + PINMUX_IPSR_MSEL(IP1SR7_31_28, AVB0_TXC, SEL_AVB0_TXC_1), 1137 + PINMUX_IPSR_MSEL(IP1SR7_31_28, AVB0_MII_TXC, SEL_AVB0_TXC_0), 1138 + 1139 + /* IP2SR7 */ 1140 + PINMUX_IPSR_MSEL(IP2SR7_3_0, AVB0_TX_CTL, SEL_AVB0_TX_CTL_1), 1141 + PINMUX_IPSR_MSEL(IP2SR7_3_0, AVB0_MII_TX_EN, SEL_AVB0_TX_CTL_0), 1142 + 1143 + PINMUX_IPSR_GPSR(IP2SR7_7_4, AVB0_RD1), 1144 + PINMUX_IPSR_GPSR(IP2SR7_7_4, AVB0_MII_RD1), 1145 + 1146 + PINMUX_IPSR_GPSR(IP2SR7_11_8, AVB0_RD0), 1147 + PINMUX_IPSR_GPSR(IP2SR7_11_8, AVB0_MII_RD0), 1148 + 1149 + PINMUX_IPSR_GPSR(IP2SR7_15_12, AVB0_RXC), 1150 + PINMUX_IPSR_GPSR(IP2SR7_15_12, AVB0_MII_RXC), 1151 + 1152 + PINMUX_IPSR_GPSR(IP2SR7_19_16, AVB0_RX_CTL), 1153 + PINMUX_IPSR_GPSR(IP2SR7_19_16, AVB0_MII_RX_DV), 1154 + 1155 + /* IP0SR8 */ 1156 + PINMUX_IPSR_MSEL(IP0SR8_3_0, SCL0, SEL_SCL0_0), 1157 + PINMUX_IPSR_MSEL(IP0SR8_7_4, SDA0, SEL_SDA0_0), 1158 + PINMUX_IPSR_MSEL(IP0SR8_11_8, SCL1, SEL_SCL1_0), 1159 + PINMUX_IPSR_MSEL(IP0SR8_15_12, SDA1, SEL_SDA1_0), 1160 + PINMUX_IPSR_MSEL(IP0SR8_19_16, SCL2, SEL_SCL2_0), 1161 + PINMUX_IPSR_MSEL(IP0SR8_23_20, SDA2, SEL_SDA2_0), 1162 + PINMUX_IPSR_MSEL(IP0SR8_27_24, SCL3, SEL_SCL3_0), 1163 + PINMUX_IPSR_MSEL(IP0SR8_31_28, SDA3, SEL_SDA3_0), 1164 + 1165 + /* IP1SR8 */ 1166 + PINMUX_IPSR_MSEL(IP1SR8_3_0, SCL4, SEL_SCL4_0), 1167 + PINMUX_IPSR_MSEL(IP1SR8_3_0, HRX2, SEL_SCL4_0), 1168 + PINMUX_IPSR_MSEL(IP1SR8_3_0, SCK4, SEL_SCL4_0), 1169 + 1170 + PINMUX_IPSR_MSEL(IP1SR8_7_4, SDA4, SEL_SDA4_0), 1171 + PINMUX_IPSR_MSEL(IP1SR8_7_4, HTX2, SEL_SDA4_0), 1172 + PINMUX_IPSR_MSEL(IP1SR8_7_4, CTS4_N, SEL_SDA4_0), 1173 + 1174 + PINMUX_IPSR_MSEL(IP1SR8_11_8, SCL5, SEL_SCL5_0), 1175 + PINMUX_IPSR_MSEL(IP1SR8_11_8, HRTS2_N, SEL_SCL5_0), 1176 + PINMUX_IPSR_MSEL(IP1SR8_11_8, RTS4_N, SEL_SCL5_0), 1177 + 1178 + PINMUX_IPSR_MSEL(IP1SR8_15_12, SDA5, SEL_SDA5_0), 1179 + PINMUX_IPSR_MSEL(IP1SR8_15_12, SCIF_CLK2, SEL_SDA5_0), 1180 + 1181 + PINMUX_IPSR_GPSR(IP1SR8_19_16, HCTS2_N), 1182 + PINMUX_IPSR_GPSR(IP1SR8_19_16, TX4), 1183 + 1184 + PINMUX_IPSR_GPSR(IP1SR8_23_20, HSCK2), 1185 + PINMUX_IPSR_GPSR(IP1SR8_23_20, RX4), 1186 + }; 1187 + 1188 + /* 1189 + * Pins not associated with a GPIO port. 1190 + */ 1191 + enum { 1192 + GP_ASSIGN_LAST(), 1193 + }; 1194 + 1195 + static const struct sh_pfc_pin pinmux_pins[] = { 1196 + PINMUX_GPIO_GP_ALL(), 1197 + }; 1198 + 1199 + /* - AVB0 ------------------------------------------------ */ 1200 + static const unsigned int avb0_link_pins[] = { 1201 + /* AVB0_LINK */ 1202 + RCAR_GP_PIN(7, 4), 1203 + }; 1204 + static const unsigned int avb0_link_mux[] = { 1205 + AVB0_LINK_MARK, 1206 + }; 1207 + static const unsigned int avb0_magic_pins[] = { 1208 + /* AVB0_MAGIC */ 1209 + RCAR_GP_PIN(7, 10), 1210 + }; 1211 + static const unsigned int avb0_magic_mux[] = { 1212 + AVB0_MAGIC_MARK, 1213 + }; 1214 + static const unsigned int avb0_phy_int_pins[] = { 1215 + /* AVB0_PHY_INT */ 1216 + RCAR_GP_PIN(7, 5), 1217 + }; 1218 + static const unsigned int avb0_phy_int_mux[] = { 1219 + AVB0_PHY_INT_MARK, 1220 + }; 1221 + static const unsigned int avb0_mdio_pins[] = { 1222 + /* AVB0_MDC, AVB0_MDIO */ 1223 + RCAR_GP_PIN(7, 13), RCAR_GP_PIN(7, 14), 1224 + }; 1225 + static const unsigned int avb0_mdio_mux[] = { 1226 + AVB0_MDC_MARK, AVB0_MDIO_MARK, 1227 + }; 1228 + static const unsigned int avb0_rgmii_pins[] = { 1229 + /* 1230 + * AVB0_TX_CTL, AVB0_TXC, AVB0_TD0, AVB0_TD1, AVB0_TD2, AVB0_TD3, 1231 + * AVB0_RX_CTL, AVB0_RXC, AVB0_RD0, AVB0_RD1, AVB0_RD2, AVB0_RD3, 1232 + */ 1233 + RCAR_GP_PIN(7, 16), RCAR_GP_PIN(7, 15), 1234 + RCAR_GP_PIN(7, 11), RCAR_GP_PIN(7, 7), 1235 + RCAR_GP_PIN(7, 6), RCAR_GP_PIN(7, 3), 1236 + RCAR_GP_PIN(7, 20), RCAR_GP_PIN(7, 19), 1237 + RCAR_GP_PIN(7, 18), RCAR_GP_PIN(7, 17), 1238 + RCAR_GP_PIN(7, 12), RCAR_GP_PIN(7, 8), 1239 + }; 1240 + static const unsigned int avb0_rgmii_mux[] = { 1241 + AVB0_TX_CTL_MARK, AVB0_TXC_MARK, 1242 + AVB0_TD0_MARK, AVB0_TD1_MARK, 1243 + AVB0_TD2_MARK, AVB0_TD3_MARK, 1244 + AVB0_RX_CTL_MARK, AVB0_RXC_MARK, 1245 + AVB0_RD0_MARK, AVB0_RD1_MARK, 1246 + AVB0_RD2_MARK, AVB0_RD3_MARK, 1247 + }; 1248 + static const unsigned int avb0_txcrefclk_pins[] = { 1249 + /* AVB0_TXCREFCLK */ 1250 + RCAR_GP_PIN(7, 9), 1251 + }; 1252 + static const unsigned int avb0_txcrefclk_mux[] = { 1253 + AVB0_TXCREFCLK_MARK, 1254 + }; 1255 + static const unsigned int avb0_avtp_pps_pins[] = { 1256 + /* AVB0_AVTP_PPS */ 1257 + RCAR_GP_PIN(7, 0), 1258 + }; 1259 + static const unsigned int avb0_avtp_pps_mux[] = { 1260 + AVB0_AVTP_PPS_MARK, 1261 + }; 1262 + static const unsigned int avb0_avtp_capture_pins[] = { 1263 + /* AVB0_AVTP_CAPTURE */ 1264 + RCAR_GP_PIN(7, 1), 1265 + }; 1266 + static const unsigned int avb0_avtp_capture_mux[] = { 1267 + AVB0_AVTP_CAPTURE_MARK, 1268 + }; 1269 + static const unsigned int avb0_avtp_match_pins[] = { 1270 + /* AVB0_AVTP_MATCH */ 1271 + RCAR_GP_PIN(7, 2), 1272 + }; 1273 + static const unsigned int avb0_avtp_match_mux[] = { 1274 + AVB0_AVTP_MATCH_MARK, 1275 + }; 1276 + 1277 + /* - AVB1 ------------------------------------------------ */ 1278 + static const unsigned int avb1_link_pins[] = { 1279 + /* AVB1_LINK */ 1280 + RCAR_GP_PIN(6, 4), 1281 + }; 1282 + static const unsigned int avb1_link_mux[] = { 1283 + AVB1_LINK_MARK, 1284 + }; 1285 + static const unsigned int avb1_magic_pins[] = { 1286 + /* AVB1_MAGIC */ 1287 + RCAR_GP_PIN(6, 1), 1288 + }; 1289 + static const unsigned int avb1_magic_mux[] = { 1290 + AVB1_MAGIC_MARK, 1291 + }; 1292 + static const unsigned int avb1_phy_int_pins[] = { 1293 + /* AVB1_PHY_INT */ 1294 + RCAR_GP_PIN(6, 3), 1295 + }; 1296 + static const unsigned int avb1_phy_int_mux[] = { 1297 + AVB1_PHY_INT_MARK, 1298 + }; 1299 + static const unsigned int avb1_mdio_pins[] = { 1300 + /* AVB1_MDC, AVB1_MDIO */ 1301 + RCAR_GP_PIN(6, 2), RCAR_GP_PIN(6, 0), 1302 + }; 1303 + static const unsigned int avb1_mdio_mux[] = { 1304 + AVB1_MDC_MARK, AVB1_MDIO_MARK, 1305 + }; 1306 + static const unsigned int avb1_rgmii_pins[] = { 1307 + /* 1308 + * AVB1_TX_CTL, AVB1_TXC, AVB1_TD0, AVB1_TD1, AVB1_TD2, AVB1_TD3, 1309 + * AVB1_RX_CTL, AVB1_RXC, AVB1_RD0, AVB1_RD1, AVB1_RD2, AVB1_RD3, 1310 + */ 1311 + RCAR_GP_PIN(6, 7), RCAR_GP_PIN(6, 6), 1312 + RCAR_GP_PIN(6, 13), RCAR_GP_PIN(6, 12), 1313 + RCAR_GP_PIN(6, 16), RCAR_GP_PIN(6, 18), 1314 + RCAR_GP_PIN(6, 9), RCAR_GP_PIN(6, 8), 1315 + RCAR_GP_PIN(6, 15), RCAR_GP_PIN(6, 14), 1316 + RCAR_GP_PIN(6, 17), RCAR_GP_PIN(6, 19), 1317 + }; 1318 + static const unsigned int avb1_rgmii_mux[] = { 1319 + AVB1_TX_CTL_MARK, AVB1_TXC_MARK, 1320 + AVB1_TD0_MARK, AVB1_TD1_MARK, 1321 + AVB1_TD2_MARK, AVB1_TD3_MARK, 1322 + AVB1_RX_CTL_MARK, AVB1_RXC_MARK, 1323 + AVB1_RD0_MARK, AVB1_RD1_MARK, 1324 + AVB1_RD2_MARK, AVB1_RD3_MARK, 1325 + }; 1326 + static const unsigned int avb1_txcrefclk_pins[] = { 1327 + /* AVB1_TXCREFCLK */ 1328 + RCAR_GP_PIN(6, 20), 1329 + }; 1330 + static const unsigned int avb1_txcrefclk_mux[] = { 1331 + AVB1_TXCREFCLK_MARK, 1332 + }; 1333 + static const unsigned int avb1_avtp_pps_pins[] = { 1334 + /* AVB1_AVTP_PPS */ 1335 + RCAR_GP_PIN(6, 10), 1336 + }; 1337 + static const unsigned int avb1_avtp_pps_mux[] = { 1338 + AVB1_AVTP_PPS_MARK, 1339 + }; 1340 + static const unsigned int avb1_avtp_capture_pins[] = { 1341 + /* AVB1_AVTP_CAPTURE */ 1342 + RCAR_GP_PIN(6, 11), 1343 + }; 1344 + static const unsigned int avb1_avtp_capture_mux[] = { 1345 + AVB1_AVTP_CAPTURE_MARK, 1346 + }; 1347 + static const unsigned int avb1_avtp_match_pins[] = { 1348 + /* AVB1_AVTP_MATCH */ 1349 + RCAR_GP_PIN(6, 5), 1350 + }; 1351 + static const unsigned int avb1_avtp_match_mux[] = { 1352 + AVB1_AVTP_MATCH_MARK, 1353 + }; 1354 + 1355 + /* - AVB2 ------------------------------------------------ */ 1356 + static const unsigned int avb2_link_pins[] = { 1357 + /* AVB2_LINK */ 1358 + RCAR_GP_PIN(5, 3), 1359 + }; 1360 + static const unsigned int avb2_link_mux[] = { 1361 + AVB2_LINK_MARK, 1362 + }; 1363 + static const unsigned int avb2_magic_pins[] = { 1364 + /* AVB2_MAGIC */ 1365 + RCAR_GP_PIN(5, 5), 1366 + }; 1367 + static const unsigned int avb2_magic_mux[] = { 1368 + AVB2_MAGIC_MARK, 1369 + }; 1370 + static const unsigned int avb2_phy_int_pins[] = { 1371 + /* AVB2_PHY_INT */ 1372 + RCAR_GP_PIN(5, 4), 1373 + }; 1374 + static const unsigned int avb2_phy_int_mux[] = { 1375 + AVB2_PHY_INT_MARK, 1376 + }; 1377 + static const unsigned int avb2_mdio_pins[] = { 1378 + /* AVB2_MDC, AVB2_MDIO */ 1379 + RCAR_GP_PIN(5, 6), RCAR_GP_PIN(5, 10), 1380 + }; 1381 + static const unsigned int avb2_mdio_mux[] = { 1382 + AVB2_MDC_MARK, AVB2_MDIO_MARK, 1383 + }; 1384 + static const unsigned int avb2_rgmii_pins[] = { 1385 + /* 1386 + * AVB2_TX_CTL, AVB2_TXC, AVB2_TD0, AVB2_TD1, AVB2_TD2, AVB2_TD3, 1387 + * AVB2_RX_CTL, AVB2_RXC, AVB2_RD0, AVB2_RD1, AVB2_RD2, AVB2_RD3, 1388 + */ 1389 + RCAR_GP_PIN(5, 19), RCAR_GP_PIN(5, 16), 1390 + RCAR_GP_PIN(5, 15), RCAR_GP_PIN(5, 12), 1391 + RCAR_GP_PIN(5, 11), RCAR_GP_PIN(5, 8), 1392 + RCAR_GP_PIN(5, 20), RCAR_GP_PIN(5, 18), 1393 + RCAR_GP_PIN(5, 17), RCAR_GP_PIN(5, 14), 1394 + RCAR_GP_PIN(5, 13), RCAR_GP_PIN(5, 9), 1395 + }; 1396 + static const unsigned int avb2_rgmii_mux[] = { 1397 + AVB2_TX_CTL_MARK, AVB2_TXC_MARK, 1398 + AVB2_TD0_MARK, AVB2_TD1_MARK, 1399 + AVB2_TD2_MARK, AVB2_TD3_MARK, 1400 + AVB2_RX_CTL_MARK, AVB2_RXC_MARK, 1401 + AVB2_RD0_MARK, AVB2_RD1_MARK, 1402 + AVB2_RD2_MARK, AVB2_RD3_MARK, 1403 + }; 1404 + static const unsigned int avb2_txcrefclk_pins[] = { 1405 + /* AVB2_TXCREFCLK */ 1406 + RCAR_GP_PIN(5, 7), 1407 + }; 1408 + static const unsigned int avb2_txcrefclk_mux[] = { 1409 + AVB2_TXCREFCLK_MARK, 1410 + }; 1411 + static const unsigned int avb2_avtp_pps_pins[] = { 1412 + /* AVB2_AVTP_PPS */ 1413 + RCAR_GP_PIN(5, 0), 1414 + }; 1415 + static const unsigned int avb2_avtp_pps_mux[] = { 1416 + AVB2_AVTP_PPS_MARK, 1417 + }; 1418 + static const unsigned int avb2_avtp_capture_pins[] = { 1419 + /* AVB2_AVTP_CAPTURE */ 1420 + RCAR_GP_PIN(5, 1), 1421 + }; 1422 + static const unsigned int avb2_avtp_capture_mux[] = { 1423 + AVB2_AVTP_CAPTURE_MARK, 1424 + }; 1425 + static const unsigned int avb2_avtp_match_pins[] = { 1426 + /* AVB2_AVTP_MATCH */ 1427 + RCAR_GP_PIN(5, 2), 1428 + }; 1429 + static const unsigned int avb2_avtp_match_mux[] = { 1430 + AVB2_AVTP_MATCH_MARK, 1431 + }; 1432 + 1433 + /* - CANFD0 ----------------------------------------------------------------- */ 1434 + static const unsigned int canfd0_data_pins[] = { 1435 + /* CANFD0_TX, CANFD0_RX */ 1436 + RCAR_GP_PIN(2, 10), RCAR_GP_PIN(2, 11), 1437 + }; 1438 + static const unsigned int canfd0_data_mux[] = { 1439 + CANFD0_TX_MARK, CANFD0_RX_MARK, 1440 + }; 1441 + 1442 + /* - CANFD1 ----------------------------------------------------------------- */ 1443 + static const unsigned int canfd1_data_pins[] = { 1444 + /* CANFD1_TX, CANFD1_RX */ 1445 + RCAR_GP_PIN(2, 0), RCAR_GP_PIN(2, 1), 1446 + }; 1447 + static const unsigned int canfd1_data_mux[] = { 1448 + CANFD1_TX_MARK, CANFD1_RX_MARK, 1449 + }; 1450 + 1451 + /* - CANFD2 ----------------------------------------------------------------- */ 1452 + static const unsigned int canfd2_data_pins[] = { 1453 + /* CANFD2_TX, CANFD2_RX */ 1454 + RCAR_GP_PIN(2, 12), RCAR_GP_PIN(2, 13), 1455 + }; 1456 + static const unsigned int canfd2_data_mux[] = { 1457 + CANFD2_TX_MARK, CANFD2_RX_MARK, 1458 + }; 1459 + 1460 + /* - CANFD3 ----------------------------------------------------------------- */ 1461 + static const unsigned int canfd3_data_pins[] = { 1462 + /* CANFD3_TX, CANFD3_RX */ 1463 + RCAR_GP_PIN(2, 14), RCAR_GP_PIN(2, 15), 1464 + }; 1465 + static const unsigned int canfd3_data_mux[] = { 1466 + CANFD3_TX_MARK, CANFD3_RX_MARK, 1467 + }; 1468 + 1469 + /* - CANFD4 ----------------------------------------------------------------- */ 1470 + static const unsigned int canfd4_data_pins[] = { 1471 + /* CANFD4_TX, CANFD4_RX */ 1472 + RCAR_GP_PIN(2, 16), RCAR_GP_PIN(2, 17), 1473 + }; 1474 + static const unsigned int canfd4_data_mux[] = { 1475 + CANFD4_TX_MARK, CANFD4_RX_MARK, 1476 + }; 1477 + 1478 + /* - CANFD5 ----------------------------------------------------------------- */ 1479 + static const unsigned int canfd5_data_pins[] = { 1480 + /* CANFD5_TX, CANFD5_RX */ 1481 + RCAR_GP_PIN(2, 2), RCAR_GP_PIN(2, 3), 1482 + }; 1483 + static const unsigned int canfd5_data_mux[] = { 1484 + CANFD5_TX_MARK, CANFD5_RX_MARK, 1485 + }; 1486 + 1487 + /* - CANFD5_B ----------------------------------------------------------------- */ 1488 + static const unsigned int canfd5_data_b_pins[] = { 1489 + /* CANFD5_TX_B, CANFD5_RX_B */ 1490 + RCAR_GP_PIN(1, 8), RCAR_GP_PIN(1, 9), 1491 + }; 1492 + static const unsigned int canfd5_data_b_mux[] = { 1493 + CANFD5_TX_B_MARK, CANFD5_RX_B_MARK, 1494 + }; 1495 + 1496 + /* - CANFD6 ----------------------------------------------------------------- */ 1497 + static const unsigned int canfd6_data_pins[] = { 1498 + /* CANFD6_TX, CANFD6_RX */ 1499 + RCAR_GP_PIN(2, 7), RCAR_GP_PIN(2, 8), 1500 + }; 1501 + static const unsigned int canfd6_data_mux[] = { 1502 + CANFD6_TX_MARK, CANFD6_RX_MARK, 1503 + }; 1504 + 1505 + /* - CANFD7 ----------------------------------------------------------------- */ 1506 + static const unsigned int canfd7_data_pins[] = { 1507 + /* CANFD7_TX, CANFD7_RX */ 1508 + RCAR_GP_PIN(2, 18), RCAR_GP_PIN(2, 19), 1509 + }; 1510 + static const unsigned int canfd7_data_mux[] = { 1511 + CANFD7_TX_MARK, CANFD7_RX_MARK, 1512 + }; 1513 + 1514 + /* - CANFD Clock ------------------------------------------------------------ */ 1515 + static const unsigned int can_clk_pins[] = { 1516 + /* CAN_CLK */ 1517 + RCAR_GP_PIN(2, 9), 1518 + }; 1519 + static const unsigned int can_clk_mux[] = { 1520 + CAN_CLK_MARK, 1521 + }; 1522 + 1523 + /* - HSCIF0 ----------------------------------------------------------------- */ 1524 + static const unsigned int hscif0_data_pins[] = { 1525 + /* HRX0, HTX0 */ 1526 + RCAR_GP_PIN(1, 16), RCAR_GP_PIN(1, 12), 1527 + }; 1528 + static const unsigned int hscif0_data_mux[] = { 1529 + HRX0_MARK, HTX0_MARK, 1530 + }; 1531 + static const unsigned int hscif0_clk_pins[] = { 1532 + /* HSCK0 */ 1533 + RCAR_GP_PIN(1, 15), 1534 + }; 1535 + static const unsigned int hscif0_clk_mux[] = { 1536 + HSCK0_MARK, 1537 + }; 1538 + static const unsigned int hscif0_ctrl_pins[] = { 1539 + /* HRTS0_N, HCTS0_N */ 1540 + RCAR_GP_PIN(1, 14), RCAR_GP_PIN(1, 13), 1541 + }; 1542 + static const unsigned int hscif0_ctrl_mux[] = { 1543 + HRTS0_N_MARK, HCTS0_N_MARK, 1544 + }; 1545 + 1546 + /* - HSCIF1 ----------------------------------------------------------------- */ 1547 + static const unsigned int hscif1_data_pins[] = { 1548 + /* HRX1, HTX1 */ 1549 + RCAR_GP_PIN(0, 15), RCAR_GP_PIN(0, 14), 1550 + }; 1551 + static const unsigned int hscif1_data_mux[] = { 1552 + HRX1_MARK, HTX1_MARK, 1553 + }; 1554 + static const unsigned int hscif1_clk_pins[] = { 1555 + /* HSCK1 */ 1556 + RCAR_GP_PIN(0, 18), 1557 + }; 1558 + static const unsigned int hscif1_clk_mux[] = { 1559 + HSCK1_MARK, 1560 + }; 1561 + static const unsigned int hscif1_ctrl_pins[] = { 1562 + /* HRTS1_N, HCTS1_N */ 1563 + RCAR_GP_PIN(0, 17), RCAR_GP_PIN(0, 16), 1564 + }; 1565 + static const unsigned int hscif1_ctrl_mux[] = { 1566 + HRTS1_N_MARK, HCTS1_N_MARK, 1567 + }; 1568 + 1569 + /* - HSCIF1_X---------------------------------------------------------------- */ 1570 + static const unsigned int hscif1_data_x_pins[] = { 1571 + /* HRX1_X, HTX1_X */ 1572 + RCAR_GP_PIN(1, 7), RCAR_GP_PIN(1, 6), 1573 + }; 1574 + static const unsigned int hscif1_data_x_mux[] = { 1575 + HRX1_X_MARK, HTX1_X_MARK, 1576 + }; 1577 + static const unsigned int hscif1_clk_x_pins[] = { 1578 + /* HSCK1_X */ 1579 + RCAR_GP_PIN(1, 10), 1580 + }; 1581 + static const unsigned int hscif1_clk_x_mux[] = { 1582 + HSCK1_X_MARK, 1583 + }; 1584 + static const unsigned int hscif1_ctrl_x_pins[] = { 1585 + /* HRTS1_N_X, HCTS1_N_X */ 1586 + RCAR_GP_PIN(1, 9), RCAR_GP_PIN(1, 8), 1587 + }; 1588 + static const unsigned int hscif1_ctrl_x_mux[] = { 1589 + HRTS1_N_X_MARK, HCTS1_N_X_MARK, 1590 + }; 1591 + 1592 + /* - HSCIF2 ----------------------------------------------------------------- */ 1593 + static const unsigned int hscif2_data_pins[] = { 1594 + /* HRX2, HTX2 */ 1595 + RCAR_GP_PIN(8, 8), RCAR_GP_PIN(8, 9), 1596 + }; 1597 + static const unsigned int hscif2_data_mux[] = { 1598 + HRX2_MARK, HTX2_MARK, 1599 + }; 1600 + static const unsigned int hscif2_clk_pins[] = { 1601 + /* HSCK2 */ 1602 + RCAR_GP_PIN(8, 13), 1603 + }; 1604 + static const unsigned int hscif2_clk_mux[] = { 1605 + HSCK2_MARK, 1606 + }; 1607 + static const unsigned int hscif2_ctrl_pins[] = { 1608 + /* HRTS2_N, HCTS2_N */ 1609 + RCAR_GP_PIN(8, 10), RCAR_GP_PIN(8, 12), 1610 + }; 1611 + static const unsigned int hscif2_ctrl_mux[] = { 1612 + HRTS2_N_MARK, HCTS2_N_MARK, 1613 + }; 1614 + 1615 + /* - HSCIF3 ----------------------------------------------------------------- */ 1616 + static const unsigned int hscif3_data_pins[] = { 1617 + /* HRX3, HTX3 */ 1618 + RCAR_GP_PIN(1, 24), RCAR_GP_PIN(1, 28), 1619 + }; 1620 + static const unsigned int hscif3_data_mux[] = { 1621 + HRX3_MARK, HTX3_MARK, 1622 + }; 1623 + static const unsigned int hscif3_clk_pins[] = { 1624 + /* HSCK3 */ 1625 + RCAR_GP_PIN(1, 25), 1626 + }; 1627 + static const unsigned int hscif3_clk_mux[] = { 1628 + HSCK3_MARK, 1629 + }; 1630 + static const unsigned int hscif3_ctrl_pins[] = { 1631 + /* HRTS3_N, HCTS3_N */ 1632 + RCAR_GP_PIN(1, 26), RCAR_GP_PIN(1, 27), 1633 + }; 1634 + static const unsigned int hscif3_ctrl_mux[] = { 1635 + HRTS3_N_MARK, HCTS3_N_MARK, 1636 + }; 1637 + 1638 + /* - HSCIF3_A ----------------------------------------------------------------- */ 1639 + static const unsigned int hscif3_data_a_pins[] = { 1640 + /* HRX3_A, HTX3_A */ 1641 + RCAR_GP_PIN(1, 4), RCAR_GP_PIN(1, 0), 1642 + }; 1643 + static const unsigned int hscif3_data_a_mux[] = { 1644 + HRX3_A_MARK, HTX3_A_MARK, 1645 + }; 1646 + static const unsigned int hscif3_clk_a_pins[] = { 1647 + /* HSCK3_A */ 1648 + RCAR_GP_PIN(1, 3), 1649 + }; 1650 + static const unsigned int hscif3_clk_a_mux[] = { 1651 + HSCK3_A_MARK, 1652 + }; 1653 + static const unsigned int hscif3_ctrl_a_pins[] = { 1654 + /* HRTS3_N_A, HCTS3_N_A */ 1655 + RCAR_GP_PIN(1, 2), RCAR_GP_PIN(1, 1), 1656 + }; 1657 + static const unsigned int hscif3_ctrl_a_mux[] = { 1658 + HRTS3_N_A_MARK, HCTS3_N_A_MARK, 1659 + }; 1660 + 1661 + /* - I2C0 ------------------------------------------------------------------- */ 1662 + static const unsigned int i2c0_pins[] = { 1663 + /* SDA0, SCL0 */ 1664 + RCAR_GP_PIN(8, 1), RCAR_GP_PIN(8, 0), 1665 + }; 1666 + static const unsigned int i2c0_mux[] = { 1667 + SDA0_MARK, SCL0_MARK, 1668 + }; 1669 + 1670 + /* - I2C1 ------------------------------------------------------------------- */ 1671 + static const unsigned int i2c1_pins[] = { 1672 + /* SDA1, SCL1 */ 1673 + RCAR_GP_PIN(8, 3), RCAR_GP_PIN(8, 2), 1674 + }; 1675 + static const unsigned int i2c1_mux[] = { 1676 + SDA1_MARK, SCL1_MARK, 1677 + }; 1678 + 1679 + /* - I2C2 ------------------------------------------------------------------- */ 1680 + static const unsigned int i2c2_pins[] = { 1681 + /* SDA2, SCL2 */ 1682 + RCAR_GP_PIN(8, 5), RCAR_GP_PIN(8, 4), 1683 + }; 1684 + static const unsigned int i2c2_mux[] = { 1685 + SDA2_MARK, SCL2_MARK, 1686 + }; 1687 + 1688 + /* - I2C3 ------------------------------------------------------------------- */ 1689 + static const unsigned int i2c3_pins[] = { 1690 + /* SDA3, SCL3 */ 1691 + RCAR_GP_PIN(8, 7), RCAR_GP_PIN(8, 6), 1692 + }; 1693 + static const unsigned int i2c3_mux[] = { 1694 + SDA3_MARK, SCL3_MARK, 1695 + }; 1696 + 1697 + /* - I2C4 ------------------------------------------------------------------- */ 1698 + static const unsigned int i2c4_pins[] = { 1699 + /* SDA4, SCL4 */ 1700 + RCAR_GP_PIN(8, 9), RCAR_GP_PIN(8, 8), 1701 + }; 1702 + static const unsigned int i2c4_mux[] = { 1703 + SDA4_MARK, SCL4_MARK, 1704 + }; 1705 + 1706 + /* - I2C5 ------------------------------------------------------------------- */ 1707 + static const unsigned int i2c5_pins[] = { 1708 + /* SDA5, SCL5 */ 1709 + RCAR_GP_PIN(8, 11), RCAR_GP_PIN(8, 10), 1710 + }; 1711 + static const unsigned int i2c5_mux[] = { 1712 + SDA5_MARK, SCL5_MARK, 1713 + }; 1714 + 1715 + /* - MMC -------------------------------------------------------------------- */ 1716 + static const unsigned int mmc_data_pins[] = { 1717 + /* MMC_SD_D[0:3], MMC_D[4:7] */ 1718 + RCAR_GP_PIN(3, 1), RCAR_GP_PIN(3, 0), 1719 + RCAR_GP_PIN(3, 2), RCAR_GP_PIN(3, 5), 1720 + RCAR_GP_PIN(3, 7), RCAR_GP_PIN(3, 6), 1721 + RCAR_GP_PIN(3, 9), RCAR_GP_PIN(3, 8), 1722 + }; 1723 + static const unsigned int mmc_data_mux[] = { 1724 + MMC_SD_D0_MARK, MMC_SD_D1_MARK, 1725 + MMC_SD_D2_MARK, MMC_SD_D3_MARK, 1726 + MMC_D4_MARK, MMC_D5_MARK, 1727 + MMC_D6_MARK, MMC_D7_MARK, 1728 + }; 1729 + static const unsigned int mmc_ctrl_pins[] = { 1730 + /* MMC_SD_CLK, MMC_SD_CMD */ 1731 + RCAR_GP_PIN(3, 3), RCAR_GP_PIN(3, 10), 1732 + }; 1733 + static const unsigned int mmc_ctrl_mux[] = { 1734 + MMC_SD_CLK_MARK, MMC_SD_CMD_MARK, 1735 + }; 1736 + static const unsigned int mmc_cd_pins[] = { 1737 + /* SD_CD */ 1738 + RCAR_GP_PIN(3, 11), 1739 + }; 1740 + static const unsigned int mmc_cd_mux[] = { 1741 + SD_CD_MARK, 1742 + }; 1743 + static const unsigned int mmc_wp_pins[] = { 1744 + /* SD_WP */ 1745 + RCAR_GP_PIN(3, 12), 1746 + }; 1747 + static const unsigned int mmc_wp_mux[] = { 1748 + SD_WP_MARK, 1749 + }; 1750 + static const unsigned int mmc_ds_pins[] = { 1751 + /* MMC_DS */ 1752 + RCAR_GP_PIN(3, 4), 1753 + }; 1754 + static const unsigned int mmc_ds_mux[] = { 1755 + MMC_DS_MARK, 1756 + }; 1757 + 1758 + /* - MSIOF0 ----------------------------------------------------------------- */ 1759 + static const unsigned int msiof0_clk_pins[] = { 1760 + /* MSIOF0_SCK */ 1761 + RCAR_GP_PIN(1, 10), 1762 + }; 1763 + static const unsigned int msiof0_clk_mux[] = { 1764 + MSIOF0_SCK_MARK, 1765 + }; 1766 + static const unsigned int msiof0_sync_pins[] = { 1767 + /* MSIOF0_SYNC */ 1768 + RCAR_GP_PIN(1, 8), 1769 + }; 1770 + static const unsigned int msiof0_sync_mux[] = { 1771 + MSIOF0_SYNC_MARK, 1772 + }; 1773 + static const unsigned int msiof0_ss1_pins[] = { 1774 + /* MSIOF0_SS1 */ 1775 + RCAR_GP_PIN(1, 7), 1776 + }; 1777 + static const unsigned int msiof0_ss1_mux[] = { 1778 + MSIOF0_SS1_MARK, 1779 + }; 1780 + static const unsigned int msiof0_ss2_pins[] = { 1781 + /* MSIOF0_SS2 */ 1782 + RCAR_GP_PIN(1, 6), 1783 + }; 1784 + static const unsigned int msiof0_ss2_mux[] = { 1785 + MSIOF0_SS2_MARK, 1786 + }; 1787 + static const unsigned int msiof0_txd_pins[] = { 1788 + /* MSIOF0_TXD */ 1789 + RCAR_GP_PIN(1, 9), 1790 + }; 1791 + static const unsigned int msiof0_txd_mux[] = { 1792 + MSIOF0_TXD_MARK, 1793 + }; 1794 + static const unsigned int msiof0_rxd_pins[] = { 1795 + /* MSIOF0_RXD */ 1796 + RCAR_GP_PIN(1, 11), 1797 + }; 1798 + static const unsigned int msiof0_rxd_mux[] = { 1799 + MSIOF0_RXD_MARK, 1800 + }; 1801 + 1802 + /* - MSIOF1 ----------------------------------------------------------------- */ 1803 + static const unsigned int msiof1_clk_pins[] = { 1804 + /* MSIOF1_SCK */ 1805 + RCAR_GP_PIN(1, 3), 1806 + }; 1807 + static const unsigned int msiof1_clk_mux[] = { 1808 + MSIOF1_SCK_MARK, 1809 + }; 1810 + static const unsigned int msiof1_sync_pins[] = { 1811 + /* MSIOF1_SYNC */ 1812 + RCAR_GP_PIN(1, 2), 1813 + }; 1814 + static const unsigned int msiof1_sync_mux[] = { 1815 + MSIOF1_SYNC_MARK, 1816 + }; 1817 + static const unsigned int msiof1_ss1_pins[] = { 1818 + /* MSIOF1_SS1 */ 1819 + RCAR_GP_PIN(1, 1), 1820 + }; 1821 + static const unsigned int msiof1_ss1_mux[] = { 1822 + MSIOF1_SS1_MARK, 1823 + }; 1824 + static const unsigned int msiof1_ss2_pins[] = { 1825 + /* MSIOF1_SS2 */ 1826 + RCAR_GP_PIN(1, 0), 1827 + }; 1828 + static const unsigned int msiof1_ss2_mux[] = { 1829 + MSIOF1_SS2_MARK, 1830 + }; 1831 + static const unsigned int msiof1_txd_pins[] = { 1832 + /* MSIOF1_TXD */ 1833 + RCAR_GP_PIN(1, 4), 1834 + }; 1835 + static const unsigned int msiof1_txd_mux[] = { 1836 + MSIOF1_TXD_MARK, 1837 + }; 1838 + static const unsigned int msiof1_rxd_pins[] = { 1839 + /* MSIOF1_RXD */ 1840 + RCAR_GP_PIN(1, 5), 1841 + }; 1842 + static const unsigned int msiof1_rxd_mux[] = { 1843 + MSIOF1_RXD_MARK, 1844 + }; 1845 + 1846 + /* - MSIOF2 ----------------------------------------------------------------- */ 1847 + static const unsigned int msiof2_clk_pins[] = { 1848 + /* MSIOF2_SCK */ 1849 + RCAR_GP_PIN(0, 17), 1850 + }; 1851 + static const unsigned int msiof2_clk_mux[] = { 1852 + MSIOF2_SCK_MARK, 1853 + }; 1854 + static const unsigned int msiof2_sync_pins[] = { 1855 + /* MSIOF2_SYNC */ 1856 + RCAR_GP_PIN(0, 15), 1857 + }; 1858 + static const unsigned int msiof2_sync_mux[] = { 1859 + MSIOF2_SYNC_MARK, 1860 + }; 1861 + static const unsigned int msiof2_ss1_pins[] = { 1862 + /* MSIOF2_SS1 */ 1863 + RCAR_GP_PIN(0, 14), 1864 + }; 1865 + static const unsigned int msiof2_ss1_mux[] = { 1866 + MSIOF2_SS1_MARK, 1867 + }; 1868 + static const unsigned int msiof2_ss2_pins[] = { 1869 + /* MSIOF2_SS2 */ 1870 + RCAR_GP_PIN(0, 13), 1871 + }; 1872 + static const unsigned int msiof2_ss2_mux[] = { 1873 + MSIOF2_SS2_MARK, 1874 + }; 1875 + static const unsigned int msiof2_txd_pins[] = { 1876 + /* MSIOF2_TXD */ 1877 + RCAR_GP_PIN(0, 16), 1878 + }; 1879 + static const unsigned int msiof2_txd_mux[] = { 1880 + MSIOF2_TXD_MARK, 1881 + }; 1882 + static const unsigned int msiof2_rxd_pins[] = { 1883 + /* MSIOF2_RXD */ 1884 + RCAR_GP_PIN(0, 18), 1885 + }; 1886 + static const unsigned int msiof2_rxd_mux[] = { 1887 + MSIOF2_RXD_MARK, 1888 + }; 1889 + 1890 + /* - MSIOF3 ----------------------------------------------------------------- */ 1891 + static const unsigned int msiof3_clk_pins[] = { 1892 + /* MSIOF3_SCK */ 1893 + RCAR_GP_PIN(0, 3), 1894 + }; 1895 + static const unsigned int msiof3_clk_mux[] = { 1896 + MSIOF3_SCK_MARK, 1897 + }; 1898 + static const unsigned int msiof3_sync_pins[] = { 1899 + /* MSIOF3_SYNC */ 1900 + RCAR_GP_PIN(0, 6), 1901 + }; 1902 + static const unsigned int msiof3_sync_mux[] = { 1903 + MSIOF3_SYNC_MARK, 1904 + }; 1905 + static const unsigned int msiof3_ss1_pins[] = { 1906 + /* MSIOF3_SS1 */ 1907 + RCAR_GP_PIN(0, 1), 1908 + }; 1909 + static const unsigned int msiof3_ss1_mux[] = { 1910 + MSIOF3_SS1_MARK, 1911 + }; 1912 + static const unsigned int msiof3_ss2_pins[] = { 1913 + /* MSIOF3_SS2 */ 1914 + RCAR_GP_PIN(0, 2), 1915 + }; 1916 + static const unsigned int msiof3_ss2_mux[] = { 1917 + MSIOF3_SS2_MARK, 1918 + }; 1919 + static const unsigned int msiof3_txd_pins[] = { 1920 + /* MSIOF3_TXD */ 1921 + RCAR_GP_PIN(0, 4), 1922 + }; 1923 + static const unsigned int msiof3_txd_mux[] = { 1924 + MSIOF3_TXD_MARK, 1925 + }; 1926 + static const unsigned int msiof3_rxd_pins[] = { 1927 + /* MSIOF3_RXD */ 1928 + RCAR_GP_PIN(0, 5), 1929 + }; 1930 + static const unsigned int msiof3_rxd_mux[] = { 1931 + MSIOF3_RXD_MARK, 1932 + }; 1933 + 1934 + /* - MSIOF4 ----------------------------------------------------------------- */ 1935 + static const unsigned int msiof4_clk_pins[] = { 1936 + /* MSIOF4_SCK */ 1937 + RCAR_GP_PIN(1, 25), 1938 + }; 1939 + static const unsigned int msiof4_clk_mux[] = { 1940 + MSIOF4_SCK_MARK, 1941 + }; 1942 + static const unsigned int msiof4_sync_pins[] = { 1943 + /* MSIOF4_SYNC */ 1944 + RCAR_GP_PIN(1, 28), 1945 + }; 1946 + static const unsigned int msiof4_sync_mux[] = { 1947 + MSIOF4_SYNC_MARK, 1948 + }; 1949 + static const unsigned int msiof4_ss1_pins[] = { 1950 + /* MSIOF4_SS1 */ 1951 + RCAR_GP_PIN(1, 23), 1952 + }; 1953 + static const unsigned int msiof4_ss1_mux[] = { 1954 + MSIOF4_SS1_MARK, 1955 + }; 1956 + static const unsigned int msiof4_ss2_pins[] = { 1957 + /* MSIOF4_SS2 */ 1958 + RCAR_GP_PIN(1, 24), 1959 + }; 1960 + static const unsigned int msiof4_ss2_mux[] = { 1961 + MSIOF4_SS2_MARK, 1962 + }; 1963 + static const unsigned int msiof4_txd_pins[] = { 1964 + /* MSIOF4_TXD */ 1965 + RCAR_GP_PIN(1, 26), 1966 + }; 1967 + static const unsigned int msiof4_txd_mux[] = { 1968 + MSIOF4_TXD_MARK, 1969 + }; 1970 + static const unsigned int msiof4_rxd_pins[] = { 1971 + /* MSIOF4_RXD */ 1972 + RCAR_GP_PIN(1, 27), 1973 + }; 1974 + static const unsigned int msiof4_rxd_mux[] = { 1975 + MSIOF4_RXD_MARK, 1976 + }; 1977 + 1978 + /* - MSIOF5 ----------------------------------------------------------------- */ 1979 + static const unsigned int msiof5_clk_pins[] = { 1980 + /* MSIOF5_SCK */ 1981 + RCAR_GP_PIN(0, 11), 1982 + }; 1983 + static const unsigned int msiof5_clk_mux[] = { 1984 + MSIOF5_SCK_MARK, 1985 + }; 1986 + static const unsigned int msiof5_sync_pins[] = { 1987 + /* MSIOF5_SYNC */ 1988 + RCAR_GP_PIN(0, 9), 1989 + }; 1990 + static const unsigned int msiof5_sync_mux[] = { 1991 + MSIOF5_SYNC_MARK, 1992 + }; 1993 + static const unsigned int msiof5_ss1_pins[] = { 1994 + /* MSIOF5_SS1 */ 1995 + RCAR_GP_PIN(0, 8), 1996 + }; 1997 + static const unsigned int msiof5_ss1_mux[] = { 1998 + MSIOF5_SS1_MARK, 1999 + }; 2000 + static const unsigned int msiof5_ss2_pins[] = { 2001 + /* MSIOF5_SS2 */ 2002 + RCAR_GP_PIN(0, 7), 2003 + }; 2004 + static const unsigned int msiof5_ss2_mux[] = { 2005 + MSIOF5_SS2_MARK, 2006 + }; 2007 + static const unsigned int msiof5_txd_pins[] = { 2008 + /* MSIOF5_TXD */ 2009 + RCAR_GP_PIN(0, 10), 2010 + }; 2011 + static const unsigned int msiof5_txd_mux[] = { 2012 + MSIOF5_TXD_MARK, 2013 + }; 2014 + static const unsigned int msiof5_rxd_pins[] = { 2015 + /* MSIOF5_RXD */ 2016 + RCAR_GP_PIN(0, 12), 2017 + }; 2018 + static const unsigned int msiof5_rxd_mux[] = { 2019 + MSIOF5_RXD_MARK, 2020 + }; 2021 + 2022 + /* - PCIE ------------------------------------------------------------------- */ 2023 + static const unsigned int pcie0_clkreq_n_pins[] = { 2024 + /* PCIE0_CLKREQ_N */ 2025 + RCAR_GP_PIN(4, 21), 2026 + }; 2027 + 2028 + static const unsigned int pcie0_clkreq_n_mux[] = { 2029 + PCIE0_CLKREQ_N_MARK, 2030 + }; 2031 + 2032 + static const unsigned int pcie1_clkreq_n_pins[] = { 2033 + /* PCIE1_CLKREQ_N */ 2034 + RCAR_GP_PIN(4, 22), 2035 + }; 2036 + 2037 + static const unsigned int pcie1_clkreq_n_mux[] = { 2038 + PCIE1_CLKREQ_N_MARK, 2039 + }; 2040 + 2041 + /* - PWM0_A ------------------------------------------------------------------- */ 2042 + static const unsigned int pwm0_a_pins[] = { 2043 + /* PWM0_A */ 2044 + RCAR_GP_PIN(1, 15), 2045 + }; 2046 + static const unsigned int pwm0_a_mux[] = { 2047 + PWM0_A_MARK, 2048 + }; 2049 + 2050 + /* - PWM1_A ------------------------------------------------------------------- */ 2051 + static const unsigned int pwm1_a_pins[] = { 2052 + /* PWM1_A */ 2053 + RCAR_GP_PIN(3, 13), 2054 + }; 2055 + static const unsigned int pwm1_a_mux[] = { 2056 + PWM1_A_MARK, 2057 + }; 2058 + 2059 + /* - PWM1_B ------------------------------------------------------------------- */ 2060 + static const unsigned int pwm1_b_pins[] = { 2061 + /* PWM1_B */ 2062 + RCAR_GP_PIN(2, 13), 2063 + }; 2064 + static const unsigned int pwm1_b_mux[] = { 2065 + PWM1_B_MARK, 2066 + }; 2067 + 2068 + /* - PWM2_B ------------------------------------------------------------------- */ 2069 + static const unsigned int pwm2_b_pins[] = { 2070 + /* PWM2_B */ 2071 + RCAR_GP_PIN(2, 14), 2072 + }; 2073 + static const unsigned int pwm2_b_mux[] = { 2074 + PWM2_B_MARK, 2075 + }; 2076 + 2077 + /* - PWM3_A ------------------------------------------------------------------- */ 2078 + static const unsigned int pwm3_a_pins[] = { 2079 + /* PWM3_A */ 2080 + RCAR_GP_PIN(1, 22), 2081 + }; 2082 + static const unsigned int pwm3_a_mux[] = { 2083 + PWM3_A_MARK, 2084 + }; 2085 + 2086 + /* - PWM3_B ------------------------------------------------------------------- */ 2087 + static const unsigned int pwm3_b_pins[] = { 2088 + /* PWM3_B */ 2089 + RCAR_GP_PIN(2, 15), 2090 + }; 2091 + static const unsigned int pwm3_b_mux[] = { 2092 + PWM3_B_MARK, 2093 + }; 2094 + 2095 + /* - PWM4 ------------------------------------------------------------------- */ 2096 + static const unsigned int pwm4_pins[] = { 2097 + /* PWM4 */ 2098 + RCAR_GP_PIN(2, 16), 2099 + }; 2100 + static const unsigned int pwm4_mux[] = { 2101 + PWM4_MARK, 2102 + }; 2103 + 2104 + /* - PWM5 ------------------------------------------------------------------- */ 2105 + static const unsigned int pwm5_pins[] = { 2106 + /* PWM5 */ 2107 + RCAR_GP_PIN(2, 17), 2108 + }; 2109 + static const unsigned int pwm5_mux[] = { 2110 + PWM5_MARK, 2111 + }; 2112 + 2113 + /* - PWM6 ------------------------------------------------------------------- */ 2114 + static const unsigned int pwm6_pins[] = { 2115 + /* PWM6 */ 2116 + RCAR_GP_PIN(2, 18), 2117 + }; 2118 + static const unsigned int pwm6_mux[] = { 2119 + PWM6_MARK, 2120 + }; 2121 + 2122 + /* - PWM7 ------------------------------------------------------------------- */ 2123 + static const unsigned int pwm7_pins[] = { 2124 + /* PWM7 */ 2125 + RCAR_GP_PIN(2, 19), 2126 + }; 2127 + static const unsigned int pwm7_mux[] = { 2128 + PWM7_MARK, 2129 + }; 2130 + 2131 + /* - PWM8_A ------------------------------------------------------------------- */ 2132 + static const unsigned int pwm8_a_pins[] = { 2133 + /* PWM8_A */ 2134 + RCAR_GP_PIN(1, 13), 2135 + }; 2136 + static const unsigned int pwm8_a_mux[] = { 2137 + PWM8_A_MARK, 2138 + }; 2139 + 2140 + /* - PWM9_A ------------------------------------------------------------------- */ 2141 + static const unsigned int pwm9_a_pins[] = { 2142 + /* PWM9_A */ 2143 + RCAR_GP_PIN(1, 14), 2144 + }; 2145 + static const unsigned int pwm9_a_mux[] = { 2146 + PWM9_A_MARK, 2147 + }; 2148 + 2149 + /* - QSPI0 ------------------------------------------------------------------ */ 2150 + static const unsigned int qspi0_ctrl_pins[] = { 2151 + /* SPCLK, SSL */ 2152 + RCAR_GP_PIN(3, 20), RCAR_GP_PIN(3, 15), 2153 + }; 2154 + static const unsigned int qspi0_ctrl_mux[] = { 2155 + QSPI0_SPCLK_MARK, QSPI0_SSL_MARK, 2156 + }; 2157 + static const unsigned int qspi0_data_pins[] = { 2158 + /* MOSI_IO0, MISO_IO1, IO2, IO3 */ 2159 + RCAR_GP_PIN(3, 19), RCAR_GP_PIN(3, 18), 2160 + RCAR_GP_PIN(3, 17), RCAR_GP_PIN(3, 16), 2161 + }; 2162 + static const unsigned int qspi0_data_mux[] = { 2163 + QSPI0_MOSI_IO0_MARK, QSPI0_MISO_IO1_MARK, 2164 + QSPI0_IO2_MARK, QSPI0_IO3_MARK 2165 + }; 2166 + 2167 + /* - QSPI1 ------------------------------------------------------------------ */ 2168 + static const unsigned int qspi1_ctrl_pins[] = { 2169 + /* SPCLK, SSL */ 2170 + RCAR_GP_PIN(3, 22), RCAR_GP_PIN(3, 25), 2171 + }; 2172 + static const unsigned int qspi1_ctrl_mux[] = { 2173 + QSPI1_SPCLK_MARK, QSPI1_SSL_MARK, 2174 + }; 2175 + static const unsigned int qspi1_data_pins[] = { 2176 + /* MOSI_IO0, MISO_IO1, IO2, IO3 */ 2177 + RCAR_GP_PIN(3, 21), RCAR_GP_PIN(3, 23), 2178 + RCAR_GP_PIN(3, 24), RCAR_GP_PIN(3, 26), 2179 + }; 2180 + static const unsigned int qspi1_data_mux[] = { 2181 + QSPI1_MOSI_IO0_MARK, QSPI1_MISO_IO1_MARK, 2182 + QSPI1_IO2_MARK, QSPI1_IO3_MARK 2183 + }; 2184 + 2185 + /* - SCIF0 ------------------------------------------------------------------ */ 2186 + static const unsigned int scif0_data_pins[] = { 2187 + /* RX0, TX0 */ 2188 + RCAR_GP_PIN(1, 16), RCAR_GP_PIN(1, 12), 2189 + }; 2190 + static const unsigned int scif0_data_mux[] = { 2191 + RX0_MARK, TX0_MARK, 2192 + }; 2193 + static const unsigned int scif0_clk_pins[] = { 2194 + /* SCK0 */ 2195 + RCAR_GP_PIN(1, 15), 2196 + }; 2197 + static const unsigned int scif0_clk_mux[] = { 2198 + SCK0_MARK, 2199 + }; 2200 + static const unsigned int scif0_ctrl_pins[] = { 2201 + /* RTS0_N, CTS0_N */ 2202 + RCAR_GP_PIN(1, 14), RCAR_GP_PIN(1, 13), 2203 + }; 2204 + static const unsigned int scif0_ctrl_mux[] = { 2205 + RTS0_N_MARK, CTS0_N_MARK, 2206 + }; 2207 + 2208 + /* - SCIF1 ------------------------------------------------------------------ */ 2209 + static const unsigned int scif1_data_pins[] = { 2210 + /* RX1, TX1 */ 2211 + RCAR_GP_PIN(0, 15), RCAR_GP_PIN(0, 14), 2212 + }; 2213 + static const unsigned int scif1_data_mux[] = { 2214 + RX1_MARK, TX1_MARK, 2215 + }; 2216 + static const unsigned int scif1_clk_pins[] = { 2217 + /* SCK1 */ 2218 + RCAR_GP_PIN(0, 18), 2219 + }; 2220 + static const unsigned int scif1_clk_mux[] = { 2221 + SCK1_MARK, 2222 + }; 2223 + static const unsigned int scif1_ctrl_pins[] = { 2224 + /* RTS1_N, CTS1_N */ 2225 + RCAR_GP_PIN(0, 17), RCAR_GP_PIN(0, 16), 2226 + }; 2227 + static const unsigned int scif1_ctrl_mux[] = { 2228 + RTS1_N_MARK, CTS1_N_MARK, 2229 + }; 2230 + 2231 + /* - SCIF1_X ------------------------------------------------------------------ */ 2232 + static const unsigned int scif1_data_x_pins[] = { 2233 + /* RX1_X, TX1_X */ 2234 + RCAR_GP_PIN(1, 7), RCAR_GP_PIN(1, 6), 2235 + }; 2236 + static const unsigned int scif1_data_x_mux[] = { 2237 + RX1_X_MARK, TX1_X_MARK, 2238 + }; 2239 + static const unsigned int scif1_clk_x_pins[] = { 2240 + /* SCK1_X */ 2241 + RCAR_GP_PIN(1, 10), 2242 + }; 2243 + static const unsigned int scif1_clk_x_mux[] = { 2244 + SCK1_X_MARK, 2245 + }; 2246 + static const unsigned int scif1_ctrl_x_pins[] = { 2247 + /* RTS1_N_X, CTS1_N_X */ 2248 + RCAR_GP_PIN(1, 9), RCAR_GP_PIN(1, 8), 2249 + }; 2250 + static const unsigned int scif1_ctrl_x_mux[] = { 2251 + RTS1_N_X_MARK, CTS1_N_X_MARK, 2252 + }; 2253 + 2254 + /* - SCIF3 ------------------------------------------------------------------ */ 2255 + static const unsigned int scif3_data_pins[] = { 2256 + /* RX3, TX3 */ 2257 + RCAR_GP_PIN(1, 1), RCAR_GP_PIN(1, 0), 2258 + }; 2259 + static const unsigned int scif3_data_mux[] = { 2260 + RX3_MARK, TX3_MARK, 2261 + }; 2262 + static const unsigned int scif3_clk_pins[] = { 2263 + /* SCK3 */ 2264 + RCAR_GP_PIN(1, 4), 2265 + }; 2266 + static const unsigned int scif3_clk_mux[] = { 2267 + SCK3_MARK, 2268 + }; 2269 + static const unsigned int scif3_ctrl_pins[] = { 2270 + /* RTS3_N, CTS3_N */ 2271 + RCAR_GP_PIN(1, 2), RCAR_GP_PIN(1, 3), 2272 + }; 2273 + static const unsigned int scif3_ctrl_mux[] = { 2274 + RTS3_N_MARK, CTS3_N_MARK, 2275 + }; 2276 + 2277 + /* - SCIF3_A ------------------------------------------------------------------ */ 2278 + static const unsigned int scif3_data_a_pins[] = { 2279 + /* RX3_A, TX3_A */ 2280 + RCAR_GP_PIN(1, 27), RCAR_GP_PIN(1, 28), 2281 + }; 2282 + static const unsigned int scif3_data_a_mux[] = { 2283 + RX3_A_MARK, TX3_A_MARK, 2284 + }; 2285 + static const unsigned int scif3_clk_a_pins[] = { 2286 + /* SCK3_A */ 2287 + RCAR_GP_PIN(1, 24), 2288 + }; 2289 + static const unsigned int scif3_clk_a_mux[] = { 2290 + SCK3_A_MARK, 2291 + }; 2292 + static const unsigned int scif3_ctrl_a_pins[] = { 2293 + /* RTS3_N_A, CTS3_N_A */ 2294 + RCAR_GP_PIN(1, 26), RCAR_GP_PIN(1, 25), 2295 + }; 2296 + static const unsigned int scif3_ctrl_a_mux[] = { 2297 + RTS3_N_A_MARK, CTS3_N_A_MARK, 2298 + }; 2299 + 2300 + /* - SCIF4 ------------------------------------------------------------------ */ 2301 + static const unsigned int scif4_data_pins[] = { 2302 + /* RX4, TX4 */ 2303 + RCAR_GP_PIN(8, 13), RCAR_GP_PIN(8, 12), 2304 + }; 2305 + static const unsigned int scif4_data_mux[] = { 2306 + RX4_MARK, TX4_MARK, 2307 + }; 2308 + static const unsigned int scif4_clk_pins[] = { 2309 + /* SCK4 */ 2310 + RCAR_GP_PIN(8, 8), 2311 + }; 2312 + static const unsigned int scif4_clk_mux[] = { 2313 + SCK4_MARK, 2314 + }; 2315 + static const unsigned int scif4_ctrl_pins[] = { 2316 + /* RTS4_N, CTS4_N */ 2317 + RCAR_GP_PIN(8, 10), RCAR_GP_PIN(8, 9), 2318 + }; 2319 + static const unsigned int scif4_ctrl_mux[] = { 2320 + RTS4_N_MARK, CTS4_N_MARK, 2321 + }; 2322 + 2323 + /* - SCIF Clock ------------------------------------------------------------- */ 2324 + static const unsigned int scif_clk_pins[] = { 2325 + /* SCIF_CLK */ 2326 + RCAR_GP_PIN(1, 17), 2327 + }; 2328 + static const unsigned int scif_clk_mux[] = { 2329 + SCIF_CLK_MARK, 2330 + }; 2331 + 2332 + /* - TPU ------------------------------------------------------------------- */ 2333 + static const unsigned int tpu_to0_pins[] = { 2334 + /* TPU0TO0 */ 2335 + RCAR_GP_PIN(2, 8), 2336 + }; 2337 + static const unsigned int tpu_to0_mux[] = { 2338 + TPU0TO0_MARK, 2339 + }; 2340 + static const unsigned int tpu_to1_pins[] = { 2341 + /* TPU0TO1 */ 2342 + RCAR_GP_PIN(2, 7), 2343 + }; 2344 + static const unsigned int tpu_to1_mux[] = { 2345 + TPU0TO1_MARK, 2346 + }; 2347 + static const unsigned int tpu_to2_pins[] = { 2348 + /* TPU0TO2 */ 2349 + RCAR_GP_PIN(2, 12), 2350 + }; 2351 + static const unsigned int tpu_to2_mux[] = { 2352 + TPU0TO2_MARK, 2353 + }; 2354 + static const unsigned int tpu_to3_pins[] = { 2355 + /* TPU0TO3 */ 2356 + RCAR_GP_PIN(2, 13), 2357 + }; 2358 + static const unsigned int tpu_to3_mux[] = { 2359 + TPU0TO3_MARK, 2360 + }; 2361 + 2362 + /* - TPU_A ------------------------------------------------------------------- */ 2363 + static const unsigned int tpu_to0_a_pins[] = { 2364 + /* TPU0TO0_A */ 2365 + RCAR_GP_PIN(1, 25), 2366 + }; 2367 + static const unsigned int tpu_to0_a_mux[] = { 2368 + TPU0TO0_A_MARK, 2369 + }; 2370 + static const unsigned int tpu_to1_a_pins[] = { 2371 + /* TPU0TO1_A */ 2372 + RCAR_GP_PIN(1, 26), 2373 + }; 2374 + static const unsigned int tpu_to1_a_mux[] = { 2375 + TPU0TO1_A_MARK, 2376 + }; 2377 + static const unsigned int tpu_to2_a_pins[] = { 2378 + /* TPU0TO2_A */ 2379 + RCAR_GP_PIN(2, 0), 2380 + }; 2381 + static const unsigned int tpu_to2_a_mux[] = { 2382 + TPU0TO2_A_MARK, 2383 + }; 2384 + static const unsigned int tpu_to3_a_pins[] = { 2385 + /* TPU0TO3_A */ 2386 + RCAR_GP_PIN(2, 1), 2387 + }; 2388 + static const unsigned int tpu_to3_a_mux[] = { 2389 + TPU0TO3_A_MARK, 2390 + }; 2391 + 2392 + /* - TSN0 ------------------------------------------------ */ 2393 + static const unsigned int tsn0_link_pins[] = { 2394 + /* TSN0_LINK */ 2395 + RCAR_GP_PIN(4, 4), 2396 + }; 2397 + static const unsigned int tsn0_link_mux[] = { 2398 + TSN0_LINK_MARK, 2399 + }; 2400 + static const unsigned int tsn0_phy_int_pins[] = { 2401 + /* TSN0_PHY_INT */ 2402 + RCAR_GP_PIN(4, 3), 2403 + }; 2404 + static const unsigned int tsn0_phy_int_mux[] = { 2405 + TSN0_PHY_INT_MARK, 2406 + }; 2407 + static const unsigned int tsn0_mdio_pins[] = { 2408 + /* TSN0_MDC, TSN0_MDIO */ 2409 + RCAR_GP_PIN(4, 1), RCAR_GP_PIN(4, 0), 2410 + }; 2411 + static const unsigned int tsn0_mdio_mux[] = { 2412 + TSN0_MDC_MARK, TSN0_MDIO_MARK, 2413 + }; 2414 + static const unsigned int tsn0_rgmii_pins[] = { 2415 + /* 2416 + * TSN0_TX_CTL, TSN0_TXC, TSN0_TD0, TSN0_TD1, TSN0_TD2, TSN0_TD3, 2417 + * TSN0_RX_CTL, TSN0_RXC, TSN0_RD0, TSN0_RD1, TSN0_RD2, TSN0_RD3, 2418 + */ 2419 + RCAR_GP_PIN(4, 9), RCAR_GP_PIN(4, 12), 2420 + RCAR_GP_PIN(4, 15), RCAR_GP_PIN(4, 14), 2421 + RCAR_GP_PIN(4, 19), RCAR_GP_PIN(4, 18), 2422 + RCAR_GP_PIN(4, 7), RCAR_GP_PIN(4, 11), 2423 + RCAR_GP_PIN(4, 10), RCAR_GP_PIN(4, 13), 2424 + RCAR_GP_PIN(4, 17), RCAR_GP_PIN(4, 16), 2425 + }; 2426 + static const unsigned int tsn0_rgmii_mux[] = { 2427 + TSN0_TX_CTL_MARK, TSN0_TXC_MARK, 2428 + TSN0_TD0_MARK, TSN0_TD1_MARK, 2429 + TSN0_TD2_MARK, TSN0_TD3_MARK, 2430 + TSN0_RX_CTL_MARK, TSN0_RXC_MARK, 2431 + TSN0_RD0_MARK, TSN0_RD1_MARK, 2432 + TSN0_RD2_MARK, TSN0_RD3_MARK, 2433 + }; 2434 + static const unsigned int tsn0_txcrefclk_pins[] = { 2435 + /* TSN0_TXCREFCLK */ 2436 + RCAR_GP_PIN(4, 20), 2437 + }; 2438 + static const unsigned int tsn0_txcrefclk_mux[] = { 2439 + TSN0_TXCREFCLK_MARK, 2440 + }; 2441 + static const unsigned int tsn0_avtp_pps_pins[] = { 2442 + /* TSN0_AVTP_PPS0, TSN0_AVTP_PPS1 */ 2443 + RCAR_GP_PIN(4, 8), RCAR_GP_PIN(4, 2), 2444 + }; 2445 + static const unsigned int tsn0_avtp_pps_mux[] = { 2446 + TSN0_AVTP_PPS0_MARK, TSN0_AVTP_PPS1_MARK, 2447 + }; 2448 + static const unsigned int tsn0_avtp_capture_pins[] = { 2449 + /* TSN0_AVTP_CAPTURE */ 2450 + RCAR_GP_PIN(4, 6), 2451 + }; 2452 + static const unsigned int tsn0_avtp_capture_mux[] = { 2453 + TSN0_AVTP_CAPTURE_MARK, 2454 + }; 2455 + static const unsigned int tsn0_avtp_match_pins[] = { 2456 + /* TSN0_AVTP_MATCH */ 2457 + RCAR_GP_PIN(4, 5), 2458 + }; 2459 + static const unsigned int tsn0_avtp_match_mux[] = { 2460 + TSN0_AVTP_MATCH_MARK, 2461 + }; 2462 + 2463 + static const struct sh_pfc_pin_group pinmux_groups[] = { 2464 + SH_PFC_PIN_GROUP(avb0_link), 2465 + SH_PFC_PIN_GROUP(avb0_magic), 2466 + SH_PFC_PIN_GROUP(avb0_phy_int), 2467 + SH_PFC_PIN_GROUP(avb0_mdio), 2468 + SH_PFC_PIN_GROUP(avb0_rgmii), 2469 + SH_PFC_PIN_GROUP(avb0_txcrefclk), 2470 + SH_PFC_PIN_GROUP(avb0_avtp_pps), 2471 + SH_PFC_PIN_GROUP(avb0_avtp_capture), 2472 + SH_PFC_PIN_GROUP(avb0_avtp_match), 2473 + 2474 + SH_PFC_PIN_GROUP(avb1_link), 2475 + SH_PFC_PIN_GROUP(avb1_magic), 2476 + SH_PFC_PIN_GROUP(avb1_phy_int), 2477 + SH_PFC_PIN_GROUP(avb1_mdio), 2478 + SH_PFC_PIN_GROUP(avb1_rgmii), 2479 + SH_PFC_PIN_GROUP(avb1_txcrefclk), 2480 + SH_PFC_PIN_GROUP(avb1_avtp_pps), 2481 + SH_PFC_PIN_GROUP(avb1_avtp_capture), 2482 + SH_PFC_PIN_GROUP(avb1_avtp_match), 2483 + 2484 + SH_PFC_PIN_GROUP(avb2_link), 2485 + SH_PFC_PIN_GROUP(avb2_magic), 2486 + SH_PFC_PIN_GROUP(avb2_phy_int), 2487 + SH_PFC_PIN_GROUP(avb2_mdio), 2488 + SH_PFC_PIN_GROUP(avb2_rgmii), 2489 + SH_PFC_PIN_GROUP(avb2_txcrefclk), 2490 + SH_PFC_PIN_GROUP(avb2_avtp_pps), 2491 + SH_PFC_PIN_GROUP(avb2_avtp_capture), 2492 + SH_PFC_PIN_GROUP(avb2_avtp_match), 2493 + 2494 + SH_PFC_PIN_GROUP(canfd0_data), 2495 + SH_PFC_PIN_GROUP(canfd1_data), 2496 + SH_PFC_PIN_GROUP(canfd2_data), 2497 + SH_PFC_PIN_GROUP(canfd3_data), 2498 + SH_PFC_PIN_GROUP(canfd4_data), 2499 + SH_PFC_PIN_GROUP(canfd5_data), /* suffix might be updated */ 2500 + SH_PFC_PIN_GROUP(canfd5_data_b), /* suffix might be updated */ 2501 + SH_PFC_PIN_GROUP(canfd6_data), 2502 + SH_PFC_PIN_GROUP(canfd7_data), 2503 + SH_PFC_PIN_GROUP(can_clk), 2504 + 2505 + SH_PFC_PIN_GROUP(hscif0_data), 2506 + SH_PFC_PIN_GROUP(hscif0_clk), 2507 + SH_PFC_PIN_GROUP(hscif0_ctrl), 2508 + SH_PFC_PIN_GROUP(hscif1_data), /* suffix might be updated */ 2509 + SH_PFC_PIN_GROUP(hscif1_clk), /* suffix might be updated */ 2510 + SH_PFC_PIN_GROUP(hscif1_ctrl), /* suffix might be updated */ 2511 + SH_PFC_PIN_GROUP(hscif1_data_x), /* suffix might be updated */ 2512 + SH_PFC_PIN_GROUP(hscif1_clk_x), /* suffix might be updated */ 2513 + SH_PFC_PIN_GROUP(hscif1_ctrl_x), /* suffix might be updated */ 2514 + SH_PFC_PIN_GROUP(hscif2_data), 2515 + SH_PFC_PIN_GROUP(hscif2_clk), 2516 + SH_PFC_PIN_GROUP(hscif2_ctrl), 2517 + SH_PFC_PIN_GROUP(hscif3_data), /* suffix might be updated */ 2518 + SH_PFC_PIN_GROUP(hscif3_clk), /* suffix might be updated */ 2519 + SH_PFC_PIN_GROUP(hscif3_ctrl), /* suffix might be updated */ 2520 + SH_PFC_PIN_GROUP(hscif3_data_a), /* suffix might be updated */ 2521 + SH_PFC_PIN_GROUP(hscif3_clk_a), /* suffix might be updated */ 2522 + SH_PFC_PIN_GROUP(hscif3_ctrl_a), /* suffix might be updated */ 2523 + 2524 + SH_PFC_PIN_GROUP(i2c0), 2525 + SH_PFC_PIN_GROUP(i2c1), 2526 + SH_PFC_PIN_GROUP(i2c2), 2527 + SH_PFC_PIN_GROUP(i2c3), 2528 + SH_PFC_PIN_GROUP(i2c4), 2529 + SH_PFC_PIN_GROUP(i2c5), 2530 + 2531 + BUS_DATA_PIN_GROUP(mmc_data, 1), 2532 + BUS_DATA_PIN_GROUP(mmc_data, 4), 2533 + BUS_DATA_PIN_GROUP(mmc_data, 8), 2534 + SH_PFC_PIN_GROUP(mmc_ctrl), 2535 + SH_PFC_PIN_GROUP(mmc_cd), 2536 + SH_PFC_PIN_GROUP(mmc_wp), 2537 + SH_PFC_PIN_GROUP(mmc_ds), 2538 + 2539 + SH_PFC_PIN_GROUP(msiof0_clk), 2540 + SH_PFC_PIN_GROUP(msiof0_sync), 2541 + SH_PFC_PIN_GROUP(msiof0_ss1), 2542 + SH_PFC_PIN_GROUP(msiof0_ss2), 2543 + SH_PFC_PIN_GROUP(msiof0_txd), 2544 + SH_PFC_PIN_GROUP(msiof0_rxd), 2545 + 2546 + SH_PFC_PIN_GROUP(msiof1_clk), 2547 + SH_PFC_PIN_GROUP(msiof1_sync), 2548 + SH_PFC_PIN_GROUP(msiof1_ss1), 2549 + SH_PFC_PIN_GROUP(msiof1_ss2), 2550 + SH_PFC_PIN_GROUP(msiof1_txd), 2551 + SH_PFC_PIN_GROUP(msiof1_rxd), 2552 + 2553 + SH_PFC_PIN_GROUP(msiof2_clk), 2554 + SH_PFC_PIN_GROUP(msiof2_sync), 2555 + SH_PFC_PIN_GROUP(msiof2_ss1), 2556 + SH_PFC_PIN_GROUP(msiof2_ss2), 2557 + SH_PFC_PIN_GROUP(msiof2_txd), 2558 + SH_PFC_PIN_GROUP(msiof2_rxd), 2559 + 2560 + SH_PFC_PIN_GROUP(msiof3_clk), 2561 + SH_PFC_PIN_GROUP(msiof3_sync), 2562 + SH_PFC_PIN_GROUP(msiof3_ss1), 2563 + SH_PFC_PIN_GROUP(msiof3_ss2), 2564 + SH_PFC_PIN_GROUP(msiof3_txd), 2565 + SH_PFC_PIN_GROUP(msiof3_rxd), 2566 + 2567 + SH_PFC_PIN_GROUP(msiof4_clk), 2568 + SH_PFC_PIN_GROUP(msiof4_sync), 2569 + SH_PFC_PIN_GROUP(msiof4_ss1), 2570 + SH_PFC_PIN_GROUP(msiof4_ss2), 2571 + SH_PFC_PIN_GROUP(msiof4_txd), 2572 + SH_PFC_PIN_GROUP(msiof4_rxd), 2573 + 2574 + SH_PFC_PIN_GROUP(msiof5_clk), 2575 + SH_PFC_PIN_GROUP(msiof5_sync), 2576 + SH_PFC_PIN_GROUP(msiof5_ss1), 2577 + SH_PFC_PIN_GROUP(msiof5_ss2), 2578 + SH_PFC_PIN_GROUP(msiof5_txd), 2579 + SH_PFC_PIN_GROUP(msiof5_rxd), 2580 + 2581 + SH_PFC_PIN_GROUP(pcie0_clkreq_n), 2582 + SH_PFC_PIN_GROUP(pcie1_clkreq_n), 2583 + 2584 + SH_PFC_PIN_GROUP(pwm0_a), /* suffix might be updated */ 2585 + SH_PFC_PIN_GROUP(pwm1_a), 2586 + SH_PFC_PIN_GROUP(pwm1_b), 2587 + SH_PFC_PIN_GROUP(pwm2_b), /* suffix might be updated */ 2588 + SH_PFC_PIN_GROUP(pwm3_a), 2589 + SH_PFC_PIN_GROUP(pwm3_b), 2590 + SH_PFC_PIN_GROUP(pwm4), 2591 + SH_PFC_PIN_GROUP(pwm5), 2592 + SH_PFC_PIN_GROUP(pwm6), 2593 + SH_PFC_PIN_GROUP(pwm7), 2594 + SH_PFC_PIN_GROUP(pwm8_a), /* suffix might be updated */ 2595 + SH_PFC_PIN_GROUP(pwm9_a), /* suffix might be updated */ 2596 + 2597 + SH_PFC_PIN_GROUP(qspi0_ctrl), 2598 + BUS_DATA_PIN_GROUP(qspi0_data, 2), 2599 + BUS_DATA_PIN_GROUP(qspi0_data, 4), 2600 + SH_PFC_PIN_GROUP(qspi1_ctrl), 2601 + BUS_DATA_PIN_GROUP(qspi1_data, 2), 2602 + BUS_DATA_PIN_GROUP(qspi1_data, 4), 2603 + 2604 + SH_PFC_PIN_GROUP(scif0_data), 2605 + SH_PFC_PIN_GROUP(scif0_clk), 2606 + SH_PFC_PIN_GROUP(scif0_ctrl), 2607 + SH_PFC_PIN_GROUP(scif1_data), /* suffix might be updated */ 2608 + SH_PFC_PIN_GROUP(scif1_clk), /* suffix might be updated */ 2609 + SH_PFC_PIN_GROUP(scif1_ctrl), /* suffix might be updated */ 2610 + SH_PFC_PIN_GROUP(scif1_data_x), /* suffix might be updated */ 2611 + SH_PFC_PIN_GROUP(scif1_clk_x), /* suffix might be updated */ 2612 + SH_PFC_PIN_GROUP(scif1_ctrl_x), /* suffix might be updated */ 2613 + SH_PFC_PIN_GROUP(scif3_data), /* suffix might be updated */ 2614 + SH_PFC_PIN_GROUP(scif3_clk), /* suffix might be updated */ 2615 + SH_PFC_PIN_GROUP(scif3_ctrl), /* suffix might be updated */ 2616 + SH_PFC_PIN_GROUP(scif3_data_a), /* suffix might be updated */ 2617 + SH_PFC_PIN_GROUP(scif3_clk_a), /* suffix might be updated */ 2618 + SH_PFC_PIN_GROUP(scif3_ctrl_a), /* suffix might be updated */ 2619 + SH_PFC_PIN_GROUP(scif4_data), 2620 + SH_PFC_PIN_GROUP(scif4_clk), 2621 + SH_PFC_PIN_GROUP(scif4_ctrl), 2622 + SH_PFC_PIN_GROUP(scif_clk), 2623 + 2624 + SH_PFC_PIN_GROUP(tpu_to0), /* suffix might be updated */ 2625 + SH_PFC_PIN_GROUP(tpu_to0_a), /* suffix might be updated */ 2626 + SH_PFC_PIN_GROUP(tpu_to1), /* suffix might be updated */ 2627 + SH_PFC_PIN_GROUP(tpu_to1_a), /* suffix might be updated */ 2628 + SH_PFC_PIN_GROUP(tpu_to2), /* suffix might be updated */ 2629 + SH_PFC_PIN_GROUP(tpu_to2_a), /* suffix might be updated */ 2630 + SH_PFC_PIN_GROUP(tpu_to3), /* suffix might be updated */ 2631 + SH_PFC_PIN_GROUP(tpu_to3_a), /* suffix might be updated */ 2632 + 2633 + SH_PFC_PIN_GROUP(tsn0_link), 2634 + SH_PFC_PIN_GROUP(tsn0_phy_int), 2635 + SH_PFC_PIN_GROUP(tsn0_mdio), 2636 + SH_PFC_PIN_GROUP(tsn0_rgmii), 2637 + SH_PFC_PIN_GROUP(tsn0_txcrefclk), 2638 + SH_PFC_PIN_GROUP(tsn0_avtp_pps), 2639 + SH_PFC_PIN_GROUP(tsn0_avtp_capture), 2640 + SH_PFC_PIN_GROUP(tsn0_avtp_match), 2641 + }; 2642 + 2643 + static const char * const avb0_groups[] = { 2644 + "avb0_link", 2645 + "avb0_magic", 2646 + "avb0_phy_int", 2647 + "avb0_mdio", 2648 + "avb0_rgmii", 2649 + "avb0_txcrefclk", 2650 + "avb0_avtp_pps", 2651 + "avb0_avtp_capture", 2652 + "avb0_avtp_match", 2653 + }; 2654 + 2655 + static const char * const avb1_groups[] = { 2656 + "avb1_link", 2657 + "avb1_magic", 2658 + "avb1_phy_int", 2659 + "avb1_mdio", 2660 + "avb1_rgmii", 2661 + "avb1_txcrefclk", 2662 + "avb1_avtp_pps", 2663 + "avb1_avtp_capture", 2664 + "avb1_avtp_match", 2665 + }; 2666 + 2667 + static const char * const avb2_groups[] = { 2668 + "avb2_link", 2669 + "avb2_magic", 2670 + "avb2_phy_int", 2671 + "avb2_mdio", 2672 + "avb2_rgmii", 2673 + "avb2_txcrefclk", 2674 + "avb2_avtp_pps", 2675 + "avb2_avtp_capture", 2676 + "avb2_avtp_match", 2677 + }; 2678 + 2679 + static const char * const canfd0_groups[] = { 2680 + "canfd0_data", 2681 + }; 2682 + 2683 + static const char * const canfd1_groups[] = { 2684 + "canfd1_data", 2685 + }; 2686 + 2687 + static const char * const canfd2_groups[] = { 2688 + "canfd2_data", 2689 + }; 2690 + 2691 + static const char * const canfd3_groups[] = { 2692 + "canfd3_data", 2693 + }; 2694 + 2695 + static const char * const canfd4_groups[] = { 2696 + "canfd4_data", 2697 + }; 2698 + 2699 + static const char * const canfd5_groups[] = { 2700 + /* suffix might be updated */ 2701 + "canfd5_data", 2702 + "canfd5_data_b", 2703 + }; 2704 + 2705 + static const char * const canfd6_groups[] = { 2706 + "canfd6_data", 2707 + }; 2708 + 2709 + static const char * const canfd7_groups[] = { 2710 + "canfd7_data", 2711 + }; 2712 + 2713 + static const char * const can_clk_groups[] = { 2714 + "can_clk", 2715 + }; 2716 + 2717 + static const char * const hscif0_groups[] = { 2718 + "hscif0_data", 2719 + "hscif0_clk", 2720 + "hscif0_ctrl", 2721 + }; 2722 + 2723 + static const char * const hscif1_groups[] = { 2724 + /* suffix might be updated */ 2725 + "hscif1_data", 2726 + "hscif1_clk", 2727 + "hscif1_ctrl", 2728 + "hscif1_data_x", 2729 + "hscif1_clk_x", 2730 + "hscif1_ctrl_x", 2731 + }; 2732 + 2733 + static const char * const hscif2_groups[] = { 2734 + "hscif2_data", 2735 + "hscif2_clk", 2736 + "hscif2_ctrl", 2737 + }; 2738 + 2739 + static const char * const hscif3_groups[] = { 2740 + /* suffix might be updated */ 2741 + "hscif3_data", 2742 + "hscif3_clk", 2743 + "hscif3_ctrl", 2744 + "hscif3_data_a", 2745 + "hscif3_clk_a", 2746 + "hscif3_ctrl_a", 2747 + }; 2748 + 2749 + static const char * const i2c0_groups[] = { 2750 + "i2c0", 2751 + }; 2752 + 2753 + static const char * const i2c1_groups[] = { 2754 + "i2c1", 2755 + }; 2756 + 2757 + static const char * const i2c2_groups[] = { 2758 + "i2c2", 2759 + }; 2760 + 2761 + static const char * const i2c3_groups[] = { 2762 + "i2c3", 2763 + }; 2764 + 2765 + static const char * const i2c4_groups[] = { 2766 + "i2c4", 2767 + }; 2768 + 2769 + static const char * const i2c5_groups[] = { 2770 + "i2c5", 2771 + }; 2772 + 2773 + static const char * const mmc_groups[] = { 2774 + "mmc_data1", 2775 + "mmc_data4", 2776 + "mmc_data8", 2777 + "mmc_ctrl", 2778 + "mmc_cd", 2779 + "mmc_wp", 2780 + "mmc_ds", 2781 + }; 2782 + 2783 + static const char * const msiof0_groups[] = { 2784 + "msiof0_clk", 2785 + "msiof0_sync", 2786 + "msiof0_ss1", 2787 + "msiof0_ss2", 2788 + "msiof0_txd", 2789 + "msiof0_rxd", 2790 + }; 2791 + 2792 + static const char * const msiof1_groups[] = { 2793 + "msiof1_clk", 2794 + "msiof1_sync", 2795 + "msiof1_ss1", 2796 + "msiof1_ss2", 2797 + "msiof1_txd", 2798 + "msiof1_rxd", 2799 + }; 2800 + 2801 + static const char * const msiof2_groups[] = { 2802 + "msiof2_clk", 2803 + "msiof2_sync", 2804 + "msiof2_ss1", 2805 + "msiof2_ss2", 2806 + "msiof2_txd", 2807 + "msiof2_rxd", 2808 + }; 2809 + 2810 + static const char * const msiof3_groups[] = { 2811 + "msiof3_clk", 2812 + "msiof3_sync", 2813 + "msiof3_ss1", 2814 + "msiof3_ss2", 2815 + "msiof3_txd", 2816 + "msiof3_rxd", 2817 + }; 2818 + 2819 + static const char * const msiof4_groups[] = { 2820 + "msiof4_clk", 2821 + "msiof4_sync", 2822 + "msiof4_ss1", 2823 + "msiof4_ss2", 2824 + "msiof4_txd", 2825 + "msiof4_rxd", 2826 + }; 2827 + 2828 + static const char * const msiof5_groups[] = { 2829 + "msiof5_clk", 2830 + "msiof5_sync", 2831 + "msiof5_ss1", 2832 + "msiof5_ss2", 2833 + "msiof5_txd", 2834 + "msiof5_rxd", 2835 + }; 2836 + 2837 + static const char * const pcie_groups[] = { 2838 + "pcie0_clkreq_n", 2839 + "pcie1_clkreq_n", 2840 + }; 2841 + 2842 + static const char * const pwm0_groups[] = { 2843 + /* suffix might be updated */ 2844 + "pwm0_a", 2845 + }; 2846 + 2847 + static const char * const pwm1_groups[] = { 2848 + "pwm1_a", 2849 + "pwm1_b", 2850 + }; 2851 + 2852 + static const char * const pwm2_groups[] = { 2853 + /* suffix might be updated */ 2854 + "pwm2_b", 2855 + }; 2856 + 2857 + static const char * const pwm3_groups[] = { 2858 + "pwm3_a", 2859 + "pwm3_b", 2860 + }; 2861 + 2862 + static const char * const pwm4_groups[] = { 2863 + "pwm4", 2864 + }; 2865 + 2866 + static const char * const pwm5_groups[] = { 2867 + "pwm5", 2868 + }; 2869 + 2870 + static const char * const pwm6_groups[] = { 2871 + "pwm6", 2872 + }; 2873 + 2874 + static const char * const pwm7_groups[] = { 2875 + "pwm7", 2876 + }; 2877 + 2878 + static const char * const pwm8_groups[] = { 2879 + /* suffix might be updated */ 2880 + "pwm8_a", 2881 + }; 2882 + 2883 + static const char * const pwm9_groups[] = { 2884 + /* suffix might be updated */ 2885 + "pwm9_a", 2886 + }; 2887 + 2888 + static const char * const qspi0_groups[] = { 2889 + "qspi0_ctrl", 2890 + "qspi0_data2", 2891 + "qspi0_data4", 2892 + }; 2893 + 2894 + static const char * const qspi1_groups[] = { 2895 + "qspi1_ctrl", 2896 + "qspi1_data2", 2897 + "qspi1_data4", 2898 + }; 2899 + 2900 + static const char * const scif0_groups[] = { 2901 + "scif0_data", 2902 + "scif0_clk", 2903 + "scif0_ctrl", 2904 + }; 2905 + 2906 + static const char * const scif1_groups[] = { 2907 + /* suffix might be updated */ 2908 + "scif1_data", 2909 + "scif1_clk", 2910 + "scif1_ctrl", 2911 + "scif1_data_x", 2912 + "scif1_clk_x", 2913 + "scif1_ctrl_x", 2914 + }; 2915 + 2916 + static const char * const scif3_groups[] = { 2917 + /* suffix might be updated */ 2918 + "scif3_data", 2919 + "scif3_clk", 2920 + "scif3_ctrl", 2921 + "scif3_data_a", 2922 + "scif3_clk_a", 2923 + "scif3_ctrl_a", 2924 + }; 2925 + 2926 + static const char * const scif4_groups[] = { 2927 + "scif4_data", 2928 + "scif4_clk", 2929 + "scif4_ctrl", 2930 + }; 2931 + 2932 + static const char * const scif_clk_groups[] = { 2933 + "scif_clk", 2934 + }; 2935 + 2936 + static const char * const tpu_groups[] = { 2937 + /* suffix might be updated */ 2938 + "tpu_to0", 2939 + "tpu_to0_a", 2940 + "tpu_to1", 2941 + "tpu_to1_a", 2942 + "tpu_to2", 2943 + "tpu_to2_a", 2944 + "tpu_to3", 2945 + "tpu_to3_a", 2946 + }; 2947 + 2948 + static const char * const tsn0_groups[] = { 2949 + "tsn0_link", 2950 + "tsn0_phy_int", 2951 + "tsn0_mdio", 2952 + "tsn0_rgmii", 2953 + "tsn0_txcrefclk", 2954 + "tsn0_avtp_pps", 2955 + "tsn0_avtp_capture", 2956 + "tsn0_avtp_match", 2957 + }; 2958 + 2959 + static const struct sh_pfc_function pinmux_functions[] = { 2960 + SH_PFC_FUNCTION(avb0), 2961 + SH_PFC_FUNCTION(avb1), 2962 + SH_PFC_FUNCTION(avb2), 2963 + 2964 + SH_PFC_FUNCTION(canfd0), 2965 + SH_PFC_FUNCTION(canfd1), 2966 + SH_PFC_FUNCTION(canfd2), 2967 + SH_PFC_FUNCTION(canfd3), 2968 + SH_PFC_FUNCTION(canfd4), 2969 + SH_PFC_FUNCTION(canfd5), 2970 + SH_PFC_FUNCTION(canfd6), 2971 + SH_PFC_FUNCTION(canfd7), 2972 + SH_PFC_FUNCTION(can_clk), 2973 + 2974 + SH_PFC_FUNCTION(hscif0), 2975 + SH_PFC_FUNCTION(hscif1), 2976 + SH_PFC_FUNCTION(hscif2), 2977 + SH_PFC_FUNCTION(hscif3), 2978 + 2979 + SH_PFC_FUNCTION(i2c0), 2980 + SH_PFC_FUNCTION(i2c1), 2981 + SH_PFC_FUNCTION(i2c2), 2982 + SH_PFC_FUNCTION(i2c3), 2983 + SH_PFC_FUNCTION(i2c4), 2984 + SH_PFC_FUNCTION(i2c5), 2985 + 2986 + SH_PFC_FUNCTION(mmc), 2987 + 2988 + SH_PFC_FUNCTION(msiof0), 2989 + SH_PFC_FUNCTION(msiof1), 2990 + SH_PFC_FUNCTION(msiof2), 2991 + SH_PFC_FUNCTION(msiof3), 2992 + SH_PFC_FUNCTION(msiof4), 2993 + SH_PFC_FUNCTION(msiof5), 2994 + 2995 + SH_PFC_FUNCTION(pcie), 2996 + 2997 + SH_PFC_FUNCTION(pwm0), 2998 + SH_PFC_FUNCTION(pwm1), 2999 + SH_PFC_FUNCTION(pwm2), 3000 + SH_PFC_FUNCTION(pwm3), 3001 + SH_PFC_FUNCTION(pwm4), 3002 + SH_PFC_FUNCTION(pwm5), 3003 + SH_PFC_FUNCTION(pwm6), 3004 + SH_PFC_FUNCTION(pwm7), 3005 + SH_PFC_FUNCTION(pwm8), 3006 + SH_PFC_FUNCTION(pwm9), 3007 + 3008 + SH_PFC_FUNCTION(qspi0), 3009 + SH_PFC_FUNCTION(qspi1), 3010 + 3011 + SH_PFC_FUNCTION(scif0), 3012 + SH_PFC_FUNCTION(scif1), 3013 + SH_PFC_FUNCTION(scif3), 3014 + SH_PFC_FUNCTION(scif4), 3015 + SH_PFC_FUNCTION(scif_clk), 3016 + 3017 + SH_PFC_FUNCTION(tpu), 3018 + 3019 + SH_PFC_FUNCTION(tsn0), 3020 + }; 3021 + 3022 + static const struct pinmux_cfg_reg pinmux_config_regs[] = { 3023 + #define F_(x, y) FN_##y 3024 + #define FM(x) FN_##x 3025 + { PINMUX_CFG_REG_VAR("GPSR0", 0xE6050040, 32, 3026 + GROUP(-13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3027 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 3028 + GROUP( 3029 + /* GP0_31_19 RESERVED */ 3030 + GP_0_18_FN, GPSR0_18, 3031 + GP_0_17_FN, GPSR0_17, 3032 + GP_0_16_FN, GPSR0_16, 3033 + GP_0_15_FN, GPSR0_15, 3034 + GP_0_14_FN, GPSR0_14, 3035 + GP_0_13_FN, GPSR0_13, 3036 + GP_0_12_FN, GPSR0_12, 3037 + GP_0_11_FN, GPSR0_11, 3038 + GP_0_10_FN, GPSR0_10, 3039 + GP_0_9_FN, GPSR0_9, 3040 + GP_0_8_FN, GPSR0_8, 3041 + GP_0_7_FN, GPSR0_7, 3042 + GP_0_6_FN, GPSR0_6, 3043 + GP_0_5_FN, GPSR0_5, 3044 + GP_0_4_FN, GPSR0_4, 3045 + GP_0_3_FN, GPSR0_3, 3046 + GP_0_2_FN, GPSR0_2, 3047 + GP_0_1_FN, GPSR0_1, 3048 + GP_0_0_FN, GPSR0_0, )) 3049 + }, 3050 + { PINMUX_CFG_REG("GPSR1", 0xE6050840, 32, 1, GROUP( 3051 + 0, 0, 3052 + 0, 0, 3053 + 0, 0, 3054 + GP_1_28_FN, GPSR1_28, 3055 + GP_1_27_FN, GPSR1_27, 3056 + GP_1_26_FN, GPSR1_26, 3057 + GP_1_25_FN, GPSR1_25, 3058 + GP_1_24_FN, GPSR1_24, 3059 + GP_1_23_FN, GPSR1_23, 3060 + GP_1_22_FN, GPSR1_22, 3061 + GP_1_21_FN, GPSR1_21, 3062 + GP_1_20_FN, GPSR1_20, 3063 + GP_1_19_FN, GPSR1_19, 3064 + GP_1_18_FN, GPSR1_18, 3065 + GP_1_17_FN, GPSR1_17, 3066 + GP_1_16_FN, GPSR1_16, 3067 + GP_1_15_FN, GPSR1_15, 3068 + GP_1_14_FN, GPSR1_14, 3069 + GP_1_13_FN, GPSR1_13, 3070 + GP_1_12_FN, GPSR1_12, 3071 + GP_1_11_FN, GPSR1_11, 3072 + GP_1_10_FN, GPSR1_10, 3073 + GP_1_9_FN, GPSR1_9, 3074 + GP_1_8_FN, GPSR1_8, 3075 + GP_1_7_FN, GPSR1_7, 3076 + GP_1_6_FN, GPSR1_6, 3077 + GP_1_5_FN, GPSR1_5, 3078 + GP_1_4_FN, GPSR1_4, 3079 + GP_1_3_FN, GPSR1_3, 3080 + GP_1_2_FN, GPSR1_2, 3081 + GP_1_1_FN, GPSR1_1, 3082 + GP_1_0_FN, GPSR1_0, )) 3083 + }, 3084 + { PINMUX_CFG_REG_VAR("GPSR2", 0xE6058040, 32, 3085 + GROUP(-12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3086 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 3087 + GROUP( 3088 + /* GP2_31_20 RESERVED */ 3089 + GP_2_19_FN, GPSR2_19, 3090 + GP_2_18_FN, GPSR2_18, 3091 + GP_2_17_FN, GPSR2_17, 3092 + GP_2_16_FN, GPSR2_16, 3093 + GP_2_15_FN, GPSR2_15, 3094 + GP_2_14_FN, GPSR2_14, 3095 + GP_2_13_FN, GPSR2_13, 3096 + GP_2_12_FN, GPSR2_12, 3097 + GP_2_11_FN, GPSR2_11, 3098 + GP_2_10_FN, GPSR2_10, 3099 + GP_2_9_FN, GPSR2_9, 3100 + GP_2_8_FN, GPSR2_8, 3101 + GP_2_7_FN, GPSR2_7, 3102 + GP_2_6_FN, GPSR2_6, 3103 + GP_2_5_FN, GPSR2_5, 3104 + GP_2_4_FN, GPSR2_4, 3105 + GP_2_3_FN, GPSR2_3, 3106 + GP_2_2_FN, GPSR2_2, 3107 + GP_2_1_FN, GPSR2_1, 3108 + GP_2_0_FN, GPSR2_0, )) 3109 + }, 3110 + { PINMUX_CFG_REG("GPSR3", 0xE6058840, 32, 1, GROUP( 3111 + 0, 0, 3112 + 0, 0, 3113 + GP_3_29_FN, GPSR3_29, 3114 + GP_3_28_FN, GPSR3_28, 3115 + GP_3_27_FN, GPSR3_27, 3116 + GP_3_26_FN, GPSR3_26, 3117 + GP_3_25_FN, GPSR3_25, 3118 + GP_3_24_FN, GPSR3_24, 3119 + GP_3_23_FN, GPSR3_23, 3120 + GP_3_22_FN, GPSR3_22, 3121 + GP_3_21_FN, GPSR3_21, 3122 + GP_3_20_FN, GPSR3_20, 3123 + GP_3_19_FN, GPSR3_19, 3124 + GP_3_18_FN, GPSR3_18, 3125 + GP_3_17_FN, GPSR3_17, 3126 + GP_3_16_FN, GPSR3_16, 3127 + GP_3_15_FN, GPSR3_15, 3128 + GP_3_14_FN, GPSR3_14, 3129 + GP_3_13_FN, GPSR3_13, 3130 + GP_3_12_FN, GPSR3_12, 3131 + GP_3_11_FN, GPSR3_11, 3132 + GP_3_10_FN, GPSR3_10, 3133 + GP_3_9_FN, GPSR3_9, 3134 + GP_3_8_FN, GPSR3_8, 3135 + GP_3_7_FN, GPSR3_7, 3136 + GP_3_6_FN, GPSR3_6, 3137 + GP_3_5_FN, GPSR3_5, 3138 + GP_3_4_FN, GPSR3_4, 3139 + GP_3_3_FN, GPSR3_3, 3140 + GP_3_2_FN, GPSR3_2, 3141 + GP_3_1_FN, GPSR3_1, 3142 + GP_3_0_FN, GPSR3_0, )) 3143 + }, 3144 + { PINMUX_CFG_REG("GPSR4", 0xE6060040, 32, 1, GROUP( 3145 + 0, 0, 3146 + 0, 0, 3147 + 0, 0, 3148 + 0, 0, 3149 + 0, 0, 3150 + 0, 0, 3151 + 0, 0, 3152 + GP_4_24_FN, GPSR4_24, 3153 + GP_4_23_FN, GPSR4_23, 3154 + GP_4_22_FN, GPSR4_22, 3155 + GP_4_21_FN, GPSR4_21, 3156 + GP_4_20_FN, GPSR4_20, 3157 + GP_4_19_FN, GPSR4_19, 3158 + GP_4_18_FN, GPSR4_18, 3159 + GP_4_17_FN, GPSR4_17, 3160 + GP_4_16_FN, GPSR4_16, 3161 + GP_4_15_FN, GPSR4_15, 3162 + GP_4_14_FN, GPSR4_14, 3163 + GP_4_13_FN, GPSR4_13, 3164 + GP_4_12_FN, GPSR4_12, 3165 + GP_4_11_FN, GPSR4_11, 3166 + GP_4_10_FN, GPSR4_10, 3167 + GP_4_9_FN, GPSR4_9, 3168 + GP_4_8_FN, GPSR4_8, 3169 + GP_4_7_FN, GPSR4_7, 3170 + GP_4_6_FN, GPSR4_6, 3171 + GP_4_5_FN, GPSR4_5, 3172 + GP_4_4_FN, GPSR4_4, 3173 + GP_4_3_FN, GPSR4_3, 3174 + GP_4_2_FN, GPSR4_2, 3175 + GP_4_1_FN, GPSR4_1, 3176 + GP_4_0_FN, GPSR4_0, )) 3177 + }, 3178 + { PINMUX_CFG_REG_VAR("GPSR5", 0xE6060840, 32, 3179 + GROUP(-11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3180 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 3181 + GROUP( 3182 + /* GP5_31_21 RESERVED */ 3183 + GP_5_20_FN, GPSR5_20, 3184 + GP_5_19_FN, GPSR5_19, 3185 + GP_5_18_FN, GPSR5_18, 3186 + GP_5_17_FN, GPSR5_17, 3187 + GP_5_16_FN, GPSR5_16, 3188 + GP_5_15_FN, GPSR5_15, 3189 + GP_5_14_FN, GPSR5_14, 3190 + GP_5_13_FN, GPSR5_13, 3191 + GP_5_12_FN, GPSR5_12, 3192 + GP_5_11_FN, GPSR5_11, 3193 + GP_5_10_FN, GPSR5_10, 3194 + GP_5_9_FN, GPSR5_9, 3195 + GP_5_8_FN, GPSR5_8, 3196 + GP_5_7_FN, GPSR5_7, 3197 + GP_5_6_FN, GPSR5_6, 3198 + GP_5_5_FN, GPSR5_5, 3199 + GP_5_4_FN, GPSR5_4, 3200 + GP_5_3_FN, GPSR5_3, 3201 + GP_5_2_FN, GPSR5_2, 3202 + GP_5_1_FN, GPSR5_1, 3203 + GP_5_0_FN, GPSR5_0, )) 3204 + }, 3205 + { PINMUX_CFG_REG_VAR("GPSR6", 0xE6061040, 32, 3206 + GROUP(-11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3207 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 3208 + GROUP( 3209 + /* GP6_31_21 RESERVED */ 3210 + GP_6_20_FN, GPSR6_20, 3211 + GP_6_19_FN, GPSR6_19, 3212 + GP_6_18_FN, GPSR6_18, 3213 + GP_6_17_FN, GPSR6_17, 3214 + GP_6_16_FN, GPSR6_16, 3215 + GP_6_15_FN, GPSR6_15, 3216 + GP_6_14_FN, GPSR6_14, 3217 + GP_6_13_FN, GPSR6_13, 3218 + GP_6_12_FN, GPSR6_12, 3219 + GP_6_11_FN, GPSR6_11, 3220 + GP_6_10_FN, GPSR6_10, 3221 + GP_6_9_FN, GPSR6_9, 3222 + GP_6_8_FN, GPSR6_8, 3223 + GP_6_7_FN, GPSR6_7, 3224 + GP_6_6_FN, GPSR6_6, 3225 + GP_6_5_FN, GPSR6_5, 3226 + GP_6_4_FN, GPSR6_4, 3227 + GP_6_3_FN, GPSR6_3, 3228 + GP_6_2_FN, GPSR6_2, 3229 + GP_6_1_FN, GPSR6_1, 3230 + GP_6_0_FN, GPSR6_0, )) 3231 + }, 3232 + { PINMUX_CFG_REG_VAR("GPSR7", 0xE6061840, 32, 3233 + GROUP(-11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3234 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 3235 + GROUP( 3236 + /* GP7_31_21 RESERVED */ 3237 + GP_7_20_FN, GPSR7_20, 3238 + GP_7_19_FN, GPSR7_19, 3239 + GP_7_18_FN, GPSR7_18, 3240 + GP_7_17_FN, GPSR7_17, 3241 + GP_7_16_FN, GPSR7_16, 3242 + GP_7_15_FN, GPSR7_15, 3243 + GP_7_14_FN, GPSR7_14, 3244 + GP_7_13_FN, GPSR7_13, 3245 + GP_7_12_FN, GPSR7_12, 3246 + GP_7_11_FN, GPSR7_11, 3247 + GP_7_10_FN, GPSR7_10, 3248 + GP_7_9_FN, GPSR7_9, 3249 + GP_7_8_FN, GPSR7_8, 3250 + GP_7_7_FN, GPSR7_7, 3251 + GP_7_6_FN, GPSR7_6, 3252 + GP_7_5_FN, GPSR7_5, 3253 + GP_7_4_FN, GPSR7_4, 3254 + GP_7_3_FN, GPSR7_3, 3255 + GP_7_2_FN, GPSR7_2, 3256 + GP_7_1_FN, GPSR7_1, 3257 + GP_7_0_FN, GPSR7_0, )) 3258 + }, 3259 + { PINMUX_CFG_REG_VAR("GPSR8", 0xE6068040, 32, 3260 + GROUP(-18, 1, 1, 1, 1, 3261 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 3262 + GROUP( 3263 + /* GP8_31_14 RESERVED */ 3264 + GP_8_13_FN, GPSR8_13, 3265 + GP_8_12_FN, GPSR8_12, 3266 + GP_8_11_FN, GPSR8_11, 3267 + GP_8_10_FN, GPSR8_10, 3268 + GP_8_9_FN, GPSR8_9, 3269 + GP_8_8_FN, GPSR8_8, 3270 + GP_8_7_FN, GPSR8_7, 3271 + GP_8_6_FN, GPSR8_6, 3272 + GP_8_5_FN, GPSR8_5, 3273 + GP_8_4_FN, GPSR8_4, 3274 + GP_8_3_FN, GPSR8_3, 3275 + GP_8_2_FN, GPSR8_2, 3276 + GP_8_1_FN, GPSR8_1, 3277 + GP_8_0_FN, GPSR8_0, )) 3278 + }, 3279 + #undef F_ 3280 + #undef FM 3281 + 3282 + #define F_(x, y) x, 3283 + #define FM(x) FN_##x, 3284 + { PINMUX_CFG_REG("IP0SR0", 0xE6050060, 32, 4, GROUP( 3285 + IP0SR0_31_28 3286 + IP0SR0_27_24 3287 + IP0SR0_23_20 3288 + IP0SR0_19_16 3289 + IP0SR0_15_12 3290 + IP0SR0_11_8 3291 + IP0SR0_7_4 3292 + IP0SR0_3_0)) 3293 + }, 3294 + { PINMUX_CFG_REG("IP1SR0", 0xE6050064, 32, 4, GROUP( 3295 + IP1SR0_31_28 3296 + IP1SR0_27_24 3297 + IP1SR0_23_20 3298 + IP1SR0_19_16 3299 + IP1SR0_15_12 3300 + IP1SR0_11_8 3301 + IP1SR0_7_4 3302 + IP1SR0_3_0)) 3303 + }, 3304 + { PINMUX_CFG_REG_VAR("IP2SR0", 0xE6050068, 32, 3305 + GROUP(-20, 4, 4, 4), 3306 + GROUP( 3307 + /* IP2SR0_31_12 RESERVED */ 3308 + IP2SR0_11_8 3309 + IP2SR0_7_4 3310 + IP2SR0_3_0)) 3311 + }, 3312 + { PINMUX_CFG_REG("IP0SR1", 0xE6050860, 32, 4, GROUP( 3313 + IP0SR1_31_28 3314 + IP0SR1_27_24 3315 + IP0SR1_23_20 3316 + IP0SR1_19_16 3317 + IP0SR1_15_12 3318 + IP0SR1_11_8 3319 + IP0SR1_7_4 3320 + IP0SR1_3_0)) 3321 + }, 3322 + { PINMUX_CFG_REG("IP1SR1", 0xE6050864, 32, 4, GROUP( 3323 + IP1SR1_31_28 3324 + IP1SR1_27_24 3325 + IP1SR1_23_20 3326 + IP1SR1_19_16 3327 + IP1SR1_15_12 3328 + IP1SR1_11_8 3329 + IP1SR1_7_4 3330 + IP1SR1_3_0)) 3331 + }, 3332 + { PINMUX_CFG_REG("IP2SR1", 0xE6050868, 32, 4, GROUP( 3333 + IP2SR1_31_28 3334 + IP2SR1_27_24 3335 + IP2SR1_23_20 3336 + IP2SR1_19_16 3337 + IP2SR1_15_12 3338 + IP2SR1_11_8 3339 + IP2SR1_7_4 3340 + IP2SR1_3_0)) 3341 + }, 3342 + { PINMUX_CFG_REG_VAR("IP3SR1", 0xE605086C, 32, 3343 + GROUP(-12, 4, 4, 4, 4, 4), 3344 + GROUP( 3345 + /* IP3SR1_31_20 RESERVED */ 3346 + IP3SR1_19_16 3347 + IP3SR1_15_12 3348 + IP3SR1_11_8 3349 + IP3SR1_7_4 3350 + IP3SR1_3_0)) 3351 + }, 3352 + { PINMUX_CFG_REG("IP0SR2", 0xE6058060, 32, 4, GROUP( 3353 + IP0SR2_31_28 3354 + IP0SR2_27_24 3355 + IP0SR2_23_20 3356 + IP0SR2_19_16 3357 + IP0SR2_15_12 3358 + IP0SR2_11_8 3359 + IP0SR2_7_4 3360 + IP0SR2_3_0)) 3361 + }, 3362 + { PINMUX_CFG_REG("IP1SR2", 0xE6058064, 32, 4, GROUP( 3363 + IP1SR2_31_28 3364 + IP1SR2_27_24 3365 + IP1SR2_23_20 3366 + IP1SR2_19_16 3367 + IP1SR2_15_12 3368 + IP1SR2_11_8 3369 + IP1SR2_7_4 3370 + IP1SR2_3_0)) 3371 + }, 3372 + { PINMUX_CFG_REG_VAR("IP2SR2", 0xE6058068, 32, 3373 + GROUP(-16, 4, 4, 4, 4), 3374 + GROUP( 3375 + /* IP2SR2_31_16 RESERVED */ 3376 + IP2SR2_15_12 3377 + IP2SR2_11_8 3378 + IP2SR2_7_4 3379 + IP2SR2_3_0)) 3380 + }, 3381 + { PINMUX_CFG_REG("IP0SR3", 0xE6058860, 32, 4, GROUP( 3382 + IP0SR3_31_28 3383 + IP0SR3_27_24 3384 + IP0SR3_23_20 3385 + IP0SR3_19_16 3386 + IP0SR3_15_12 3387 + IP0SR3_11_8 3388 + IP0SR3_7_4 3389 + IP0SR3_3_0)) 3390 + }, 3391 + { PINMUX_CFG_REG("IP1SR3", 0xE6058864, 32, 4, GROUP( 3392 + IP1SR3_31_28 3393 + IP1SR3_27_24 3394 + IP1SR3_23_20 3395 + IP1SR3_19_16 3396 + IP1SR3_15_12 3397 + IP1SR3_11_8 3398 + IP1SR3_7_4 3399 + IP1SR3_3_0)) 3400 + }, 3401 + { PINMUX_CFG_REG("IP2SR3", 0xE6058868, 32, 4, GROUP( 3402 + IP2SR3_31_28 3403 + IP2SR3_27_24 3404 + IP2SR3_23_20 3405 + IP2SR3_19_16 3406 + IP2SR3_15_12 3407 + IP2SR3_11_8 3408 + IP2SR3_7_4 3409 + IP2SR3_3_0)) 3410 + }, 3411 + { PINMUX_CFG_REG_VAR("IP3SR3", 0xE605886C, 32, 3412 + GROUP(-8, 4, 4, 4, 4, 4, 4), 3413 + GROUP( 3414 + /* IP3SR3_31_24 RESERVED */ 3415 + IP3SR3_23_20 3416 + IP3SR3_19_16 3417 + IP3SR3_15_12 3418 + IP3SR3_11_8 3419 + IP3SR3_7_4 3420 + IP3SR3_3_0)) 3421 + }, 3422 + { PINMUX_CFG_REG("IP0SR6", 0xE6061060, 32, 4, GROUP( 3423 + IP0SR6_31_28 3424 + IP0SR6_27_24 3425 + IP0SR6_23_20 3426 + IP0SR6_19_16 3427 + IP0SR6_15_12 3428 + IP0SR6_11_8 3429 + IP0SR6_7_4 3430 + IP0SR6_3_0)) 3431 + }, 3432 + { PINMUX_CFG_REG("IP1SR6", 0xE6061064, 32, 4, GROUP( 3433 + IP1SR6_31_28 3434 + IP1SR6_27_24 3435 + IP1SR6_23_20 3436 + IP1SR6_19_16 3437 + IP1SR6_15_12 3438 + IP1SR6_11_8 3439 + IP1SR6_7_4 3440 + IP1SR6_3_0)) 3441 + }, 3442 + { PINMUX_CFG_REG_VAR("IP2SR6", 0xE6061068, 32, 3443 + GROUP(-12, 4, 4, 4, 4, 4), 3444 + GROUP( 3445 + /* IP2SR6_31_20 RESERVED */ 3446 + IP2SR6_19_16 3447 + IP2SR6_15_12 3448 + IP2SR6_11_8 3449 + IP2SR6_7_4 3450 + IP2SR6_3_0)) 3451 + }, 3452 + { PINMUX_CFG_REG("IP0SR7", 0xE6061860, 32, 4, GROUP( 3453 + IP0SR7_31_28 3454 + IP0SR7_27_24 3455 + IP0SR7_23_20 3456 + IP0SR7_19_16 3457 + IP0SR7_15_12 3458 + IP0SR7_11_8 3459 + IP0SR7_7_4 3460 + IP0SR7_3_0)) 3461 + }, 3462 + { PINMUX_CFG_REG("IP1SR7", 0xE6061864, 32, 4, GROUP( 3463 + IP1SR7_31_28 3464 + IP1SR7_27_24 3465 + IP1SR7_23_20 3466 + IP1SR7_19_16 3467 + IP1SR7_15_12 3468 + IP1SR7_11_8 3469 + IP1SR7_7_4 3470 + IP1SR7_3_0)) 3471 + }, 3472 + { PINMUX_CFG_REG_VAR("IP2SR7", 0xE6061868, 32, 3473 + GROUP(-12, 4, 4, 4, 4, 4), 3474 + GROUP( 3475 + /* IP2SR7_31_20 RESERVED */ 3476 + IP2SR7_19_16 3477 + IP2SR7_15_12 3478 + IP2SR7_11_8 3479 + IP2SR7_7_4 3480 + IP2SR7_3_0)) 3481 + }, 3482 + { PINMUX_CFG_REG("IP0SR8", 0xE6068060, 32, 4, GROUP( 3483 + IP0SR8_31_28 3484 + IP0SR8_27_24 3485 + IP0SR8_23_20 3486 + IP0SR8_19_16 3487 + IP0SR8_15_12 3488 + IP0SR8_11_8 3489 + IP0SR8_7_4 3490 + IP0SR8_3_0)) 3491 + }, 3492 + { PINMUX_CFG_REG_VAR("IP1SR8", 0xE6068064, 32, 3493 + GROUP(-8, 4, 4, 4, 4, 4, 4), 3494 + GROUP( 3495 + /* IP1SR8_31_24 RESERVED */ 3496 + IP1SR8_23_20 3497 + IP1SR8_19_16 3498 + IP1SR8_15_12 3499 + IP1SR8_11_8 3500 + IP1SR8_7_4 3501 + IP1SR8_3_0)) 3502 + }, 3503 + #undef F_ 3504 + #undef FM 3505 + 3506 + #define F_(x, y) x, 3507 + #define FM(x) FN_##x, 3508 + { PINMUX_CFG_REG_VAR("MOD_SEL4", 0xE6060100, 32, 3509 + GROUP(-12, 1, 1, -2, 1, 1, -1, 1, -2, 1, 1, -2, 1, 3510 + -2, 1, 1, -1), 3511 + GROUP( 3512 + /* RESERVED 31-20 */ 3513 + MOD_SEL4_19 3514 + MOD_SEL4_18 3515 + /* RESERVED 17-16 */ 3516 + MOD_SEL4_15 3517 + MOD_SEL4_14 3518 + /* RESERVED 13 */ 3519 + MOD_SEL4_12 3520 + /* RESERVED 11-10 */ 3521 + MOD_SEL4_9 3522 + MOD_SEL4_8 3523 + /* RESERVED 7-6 */ 3524 + MOD_SEL4_5 3525 + /* RESERVED 4-3 */ 3526 + MOD_SEL4_2 3527 + MOD_SEL4_1 3528 + /* RESERVED 0 */ 3529 + )) 3530 + }, 3531 + { PINMUX_CFG_REG_VAR("MOD_SEL5", 0xE6060900, 32, 3532 + GROUP(-12, 1, -2, 1, 1, -2, 1, 1, -2, 1, -1, 3533 + 1, 1, -2, 1, -1, 1), 3534 + GROUP( 3535 + /* RESERVED 31-20 */ 3536 + MOD_SEL5_19 3537 + /* RESERVED 18-17 */ 3538 + MOD_SEL5_16 3539 + MOD_SEL5_15 3540 + /* RESERVED 14-13 */ 3541 + MOD_SEL5_12 3542 + MOD_SEL5_11 3543 + /* RESERVED 10-9 */ 3544 + MOD_SEL5_8 3545 + /* RESERVED 7 */ 3546 + MOD_SEL5_6 3547 + MOD_SEL5_5 3548 + /* RESERVED 4-3 */ 3549 + MOD_SEL5_2 3550 + /* RESERVED 1 */ 3551 + MOD_SEL5_0)) 3552 + }, 3553 + { PINMUX_CFG_REG_VAR("MOD_SEL6", 0xE6061100, 32, 3554 + GROUP(-13, 1, -1, 1, -2, 1, 1, 3555 + -1, 1, -2, 1, 1, 1, -2, 1, 1, -1), 3556 + GROUP( 3557 + /* RESERVED 31-19 */ 3558 + MOD_SEL6_18 3559 + /* RESERVED 17 */ 3560 + MOD_SEL6_16 3561 + /* RESERVED 15-14 */ 3562 + MOD_SEL6_13 3563 + MOD_SEL6_12 3564 + /* RESERVED 11 */ 3565 + MOD_SEL6_10 3566 + /* RESERVED 9-8 */ 3567 + MOD_SEL6_7 3568 + MOD_SEL6_6 3569 + MOD_SEL6_5 3570 + /* RESERVED 4-3 */ 3571 + MOD_SEL6_2 3572 + MOD_SEL6_1 3573 + /* RESERVED 0 */ 3574 + )) 3575 + }, 3576 + { PINMUX_CFG_REG_VAR("MOD_SEL7", 0xE6061900, 32, 3577 + GROUP(-15, 1, 1, -1, 1, -1, 1, 1, -2, 1, 1, 3578 + -2, 1, 1, -1, 1), 3579 + GROUP( 3580 + /* RESERVED 31-17 */ 3581 + MOD_SEL7_16 3582 + MOD_SEL7_15 3583 + /* RESERVED 14 */ 3584 + MOD_SEL7_13 3585 + /* RESERVED 12 */ 3586 + MOD_SEL7_11 3587 + MOD_SEL7_10 3588 + /* RESERVED 9-8 */ 3589 + MOD_SEL7_7 3590 + MOD_SEL7_6 3591 + /* RESERVED 5-4 */ 3592 + MOD_SEL7_3 3593 + MOD_SEL7_2 3594 + /* RESERVED 1 */ 3595 + MOD_SEL7_0)) 3596 + }, 3597 + { PINMUX_CFG_REG_VAR("MOD_SEL8", 0xE6068100, 32, 3598 + GROUP(-20, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 3599 + GROUP( 3600 + /* RESERVED 31-12 */ 3601 + MOD_SEL8_11 3602 + MOD_SEL8_10 3603 + MOD_SEL8_9 3604 + MOD_SEL8_8 3605 + MOD_SEL8_7 3606 + MOD_SEL8_6 3607 + MOD_SEL8_5 3608 + MOD_SEL8_4 3609 + MOD_SEL8_3 3610 + MOD_SEL8_2 3611 + MOD_SEL8_1 3612 + MOD_SEL8_0)) 3613 + }, 3614 + { }, 3615 + }; 3616 + 3617 + static const struct pinmux_drive_reg pinmux_drive_regs[] = { 3618 + { PINMUX_DRIVE_REG("DRV0CTRL0", 0xE6050080) { 3619 + { RCAR_GP_PIN(0, 7), 28, 3 }, /* MSIOF5_SS2 */ 3620 + { RCAR_GP_PIN(0, 6), 24, 3 }, /* IRQ0 */ 3621 + { RCAR_GP_PIN(0, 5), 20, 3 }, /* IRQ1 */ 3622 + { RCAR_GP_PIN(0, 4), 16, 3 }, /* IRQ2 */ 3623 + { RCAR_GP_PIN(0, 3), 12, 3 }, /* IRQ3 */ 3624 + { RCAR_GP_PIN(0, 2), 8, 3 }, /* GP0_02 */ 3625 + { RCAR_GP_PIN(0, 1), 4, 3 }, /* GP0_01 */ 3626 + { RCAR_GP_PIN(0, 0), 0, 3 }, /* GP0_00 */ 3627 + } }, 3628 + { PINMUX_DRIVE_REG("DRV1CTRL0", 0xE6050084) { 3629 + { RCAR_GP_PIN(0, 15), 28, 3 }, /* MSIOF2_SYNC */ 3630 + { RCAR_GP_PIN(0, 14), 24, 3 }, /* MSIOF2_SS1 */ 3631 + { RCAR_GP_PIN(0, 13), 20, 3 }, /* MSIOF2_SS2 */ 3632 + { RCAR_GP_PIN(0, 12), 16, 3 }, /* MSIOF5_RXD */ 3633 + { RCAR_GP_PIN(0, 11), 12, 3 }, /* MSIOF5_SCK */ 3634 + { RCAR_GP_PIN(0, 10), 8, 3 }, /* MSIOF5_TXD */ 3635 + { RCAR_GP_PIN(0, 9), 4, 3 }, /* MSIOF5_SYNC */ 3636 + { RCAR_GP_PIN(0, 8), 0, 3 }, /* MSIOF5_SS1 */ 3637 + } }, 3638 + { PINMUX_DRIVE_REG("DRV2CTRL0", 0xE6050088) { 3639 + { RCAR_GP_PIN(0, 18), 8, 3 }, /* MSIOF2_RXD */ 3640 + { RCAR_GP_PIN(0, 17), 4, 3 }, /* MSIOF2_SCK */ 3641 + { RCAR_GP_PIN(0, 16), 0, 3 }, /* MSIOF2_TXD */ 3642 + } }, 3643 + { PINMUX_DRIVE_REG("DRV0CTRL1", 0xE6050880) { 3644 + { RCAR_GP_PIN(1, 7), 28, 3 }, /* MSIOF0_SS1 */ 3645 + { RCAR_GP_PIN(1, 6), 24, 3 }, /* MSIOF0_SS2 */ 3646 + { RCAR_GP_PIN(1, 5), 20, 3 }, /* MSIOF1_RXD */ 3647 + { RCAR_GP_PIN(1, 4), 16, 3 }, /* MSIOF1_TXD */ 3648 + { RCAR_GP_PIN(1, 3), 12, 3 }, /* MSIOF1_SCK */ 3649 + { RCAR_GP_PIN(1, 2), 8, 3 }, /* MSIOF1_SYNC */ 3650 + { RCAR_GP_PIN(1, 1), 4, 3 }, /* MSIOF1_SS1 */ 3651 + { RCAR_GP_PIN(1, 0), 0, 3 }, /* MSIOF1_SS2 */ 3652 + } }, 3653 + { PINMUX_DRIVE_REG("DRV1CTRL1", 0xE6050884) { 3654 + { RCAR_GP_PIN(1, 15), 28, 3 }, /* HSCK0 */ 3655 + { RCAR_GP_PIN(1, 14), 24, 3 }, /* HRTS0_N */ 3656 + { RCAR_GP_PIN(1, 13), 20, 3 }, /* HCTS0_N */ 3657 + { RCAR_GP_PIN(1, 12), 16, 3 }, /* HTX0 */ 3658 + { RCAR_GP_PIN(1, 11), 12, 3 }, /* MSIOF0_RXD */ 3659 + { RCAR_GP_PIN(1, 10), 8, 3 }, /* MSIOF0_SCK */ 3660 + { RCAR_GP_PIN(1, 9), 4, 3 }, /* MSIOF0_TXD */ 3661 + { RCAR_GP_PIN(1, 8), 0, 3 }, /* MSIOF0_SYNC */ 3662 + } }, 3663 + { PINMUX_DRIVE_REG("DRV2CTRL1", 0xE6050888) { 3664 + { RCAR_GP_PIN(1, 23), 28, 3 }, /* GP1_23 */ 3665 + { RCAR_GP_PIN(1, 22), 24, 3 }, /* AUDIO_CLKIN */ 3666 + { RCAR_GP_PIN(1, 21), 20, 3 }, /* AUDIO_CLKOUT */ 3667 + { RCAR_GP_PIN(1, 20), 16, 3 }, /* SSI_SD */ 3668 + { RCAR_GP_PIN(1, 19), 12, 3 }, /* SSI_WS */ 3669 + { RCAR_GP_PIN(1, 18), 8, 3 }, /* SSI_SCK */ 3670 + { RCAR_GP_PIN(1, 17), 4, 3 }, /* SCIF_CLK */ 3671 + { RCAR_GP_PIN(1, 16), 0, 3 }, /* HRX0 */ 3672 + } }, 3673 + { PINMUX_DRIVE_REG("DRV3CTRL1", 0xE605088C) { 3674 + { RCAR_GP_PIN(1, 28), 16, 3 }, /* HTX3 */ 3675 + { RCAR_GP_PIN(1, 27), 12, 3 }, /* HCTS3_N */ 3676 + { RCAR_GP_PIN(1, 26), 8, 3 }, /* HRTS3_N */ 3677 + { RCAR_GP_PIN(1, 25), 4, 3 }, /* HSCK3 */ 3678 + { RCAR_GP_PIN(1, 24), 0, 3 }, /* HRX3 */ 3679 + } }, 3680 + { PINMUX_DRIVE_REG("DRV0CTRL2", 0xE6058080) { 3681 + { RCAR_GP_PIN(2, 7), 28, 3 }, /* TPU0TO1 */ 3682 + { RCAR_GP_PIN(2, 6), 24, 3 }, /* FXR_TXDB */ 3683 + { RCAR_GP_PIN(2, 5), 20, 3 }, /* FXR_TXENB_N */ 3684 + { RCAR_GP_PIN(2, 4), 16, 3 }, /* RXDB_EXTFXR */ 3685 + { RCAR_GP_PIN(2, 3), 12, 3 }, /* CLK_EXTFXR */ 3686 + { RCAR_GP_PIN(2, 2), 8, 3 }, /* RXDA_EXTFXR */ 3687 + { RCAR_GP_PIN(2, 1), 4, 3 }, /* FXR_TXENA_N */ 3688 + { RCAR_GP_PIN(2, 0), 0, 3 }, /* FXR_TXDA */ 3689 + } }, 3690 + { PINMUX_DRIVE_REG("DRV1CTRL2", 0xE6058084) { 3691 + { RCAR_GP_PIN(2, 15), 28, 3 }, /* CANFD3_RX */ 3692 + { RCAR_GP_PIN(2, 14), 24, 3 }, /* CANFD3_TX */ 3693 + { RCAR_GP_PIN(2, 13), 20, 3 }, /* CANFD2_RX */ 3694 + { RCAR_GP_PIN(2, 12), 16, 3 }, /* CANFD2_TX */ 3695 + { RCAR_GP_PIN(2, 11), 12, 3 }, /* CANFD0_RX */ 3696 + { RCAR_GP_PIN(2, 10), 8, 3 }, /* CANFD0_TX */ 3697 + { RCAR_GP_PIN(2, 9), 4, 3 }, /* CAN_CLK */ 3698 + { RCAR_GP_PIN(2, 8), 0, 3 }, /* TPU0TO0 */ 3699 + } }, 3700 + { PINMUX_DRIVE_REG("DRV2CTRL2", 0xE6058088) { 3701 + { RCAR_GP_PIN(2, 19), 12, 3 }, /* CANFD7_RX */ 3702 + { RCAR_GP_PIN(2, 18), 8, 3 }, /* CANFD7_TX */ 3703 + { RCAR_GP_PIN(2, 17), 4, 3 }, /* CANFD4_RX */ 3704 + { RCAR_GP_PIN(2, 16), 0, 3 }, /* CANFD4_TX */ 3705 + } }, 3706 + { PINMUX_DRIVE_REG("DRV0CTRL3", 0xE6058880) { 3707 + { RCAR_GP_PIN(3, 7), 28, 3 }, /* MMC_D4 */ 3708 + { RCAR_GP_PIN(3, 6), 24, 3 }, /* MMC_D5 */ 3709 + { RCAR_GP_PIN(3, 5), 20, 3 }, /* MMC_SD_D3 */ 3710 + { RCAR_GP_PIN(3, 4), 16, 3 }, /* MMC_DS */ 3711 + { RCAR_GP_PIN(3, 3), 12, 3 }, /* MMC_SD_CLK */ 3712 + { RCAR_GP_PIN(3, 2), 8, 3 }, /* MMC_SD_D2 */ 3713 + { RCAR_GP_PIN(3, 1), 4, 3 }, /* MMC_SD_D0 */ 3714 + { RCAR_GP_PIN(3, 0), 0, 3 }, /* MMC_SD_D1 */ 3715 + } }, 3716 + { PINMUX_DRIVE_REG("DRV1CTRL3", 0xE6058884) { 3717 + { RCAR_GP_PIN(3, 15), 28, 2 }, /* QSPI0_SSL */ 3718 + { RCAR_GP_PIN(3, 14), 24, 2 }, /* IPC_CLKOUT */ 3719 + { RCAR_GP_PIN(3, 13), 20, 2 }, /* IPC_CLKIN */ 3720 + { RCAR_GP_PIN(3, 12), 16, 3 }, /* SD_WP */ 3721 + { RCAR_GP_PIN(3, 11), 12, 3 }, /* SD_CD */ 3722 + { RCAR_GP_PIN(3, 10), 8, 3 }, /* MMC_SD_CMD */ 3723 + { RCAR_GP_PIN(3, 9), 4, 3 }, /* MMC_D6*/ 3724 + { RCAR_GP_PIN(3, 8), 0, 3 }, /* MMC_D7 */ 3725 + } }, 3726 + { PINMUX_DRIVE_REG("DRV2CTRL3", 0xE6058888) { 3727 + { RCAR_GP_PIN(3, 23), 28, 2 }, /* QSPI1_MISO_IO1 */ 3728 + { RCAR_GP_PIN(3, 22), 24, 2 }, /* QSPI1_SPCLK */ 3729 + { RCAR_GP_PIN(3, 21), 20, 2 }, /* QSPI1_MOSI_IO0 */ 3730 + { RCAR_GP_PIN(3, 20), 16, 2 }, /* QSPI0_SPCLK */ 3731 + { RCAR_GP_PIN(3, 19), 12, 2 }, /* QSPI0_MOSI_IO0 */ 3732 + { RCAR_GP_PIN(3, 18), 8, 2 }, /* QSPI0_MISO_IO1 */ 3733 + { RCAR_GP_PIN(3, 17), 4, 2 }, /* QSPI0_IO2 */ 3734 + { RCAR_GP_PIN(3, 16), 0, 2 }, /* QSPI0_IO3 */ 3735 + } }, 3736 + { PINMUX_DRIVE_REG("DRV3CTRL3", 0xE605888C) { 3737 + { RCAR_GP_PIN(3, 29), 20, 2 }, /* RPC_INT_N */ 3738 + { RCAR_GP_PIN(3, 28), 16, 2 }, /* RPC_WP_N */ 3739 + { RCAR_GP_PIN(3, 27), 12, 2 }, /* RPC_RESET_N */ 3740 + { RCAR_GP_PIN(3, 26), 8, 2 }, /* QSPI1_IO3 */ 3741 + { RCAR_GP_PIN(3, 25), 4, 2 }, /* QSPI1_SSL */ 3742 + { RCAR_GP_PIN(3, 24), 0, 2 }, /* QSPI1_IO2 */ 3743 + } }, 3744 + { PINMUX_DRIVE_REG("DRV0CTRL4", 0xE6060080) { 3745 + { RCAR_GP_PIN(4, 7), 28, 3 }, /* TSN0_RX_CTL */ 3746 + { RCAR_GP_PIN(4, 6), 24, 3 }, /* TSN0_AVTP_CAPTURE */ 3747 + { RCAR_GP_PIN(4, 5), 20, 3 }, /* TSN0_AVTP_MATCH */ 3748 + { RCAR_GP_PIN(4, 4), 16, 3 }, /* TSN0_LINK */ 3749 + { RCAR_GP_PIN(4, 3), 12, 3 }, /* TSN0_PHY_INT */ 3750 + { RCAR_GP_PIN(4, 2), 8, 3 }, /* TSN0_AVTP_PPS1 */ 3751 + { RCAR_GP_PIN(4, 1), 4, 3 }, /* TSN0_MDC */ 3752 + { RCAR_GP_PIN(4, 0), 0, 3 }, /* TSN0_MDIO */ 3753 + } }, 3754 + { PINMUX_DRIVE_REG("DRV1CTRL4", 0xE6060084) { 3755 + { RCAR_GP_PIN(4, 15), 28, 3 }, /* TSN0_TD0 */ 3756 + { RCAR_GP_PIN(4, 14), 24, 3 }, /* TSN0_TD1 */ 3757 + { RCAR_GP_PIN(4, 13), 20, 3 }, /* TSN0_RD1 */ 3758 + { RCAR_GP_PIN(4, 12), 16, 3 }, /* TSN0_TXC */ 3759 + { RCAR_GP_PIN(4, 11), 12, 3 }, /* TSN0_RXC */ 3760 + { RCAR_GP_PIN(4, 10), 8, 3 }, /* TSN0_RD0 */ 3761 + { RCAR_GP_PIN(4, 9), 4, 3 }, /* TSN0_TX_CTL */ 3762 + { RCAR_GP_PIN(4, 8), 0, 3 }, /* TSN0_AVTP_PPS0 */ 3763 + } }, 3764 + { PINMUX_DRIVE_REG("DRV2CTRL4", 0xE6060088) { 3765 + { RCAR_GP_PIN(4, 23), 28, 3 }, /* AVS0 */ 3766 + { RCAR_GP_PIN(4, 22), 24, 3 }, /* PCIE1_CLKREQ_N */ 3767 + { RCAR_GP_PIN(4, 21), 20, 3 }, /* PCIE0_CLKREQ_N */ 3768 + { RCAR_GP_PIN(4, 20), 16, 3 }, /* TSN0_TXCREFCLK */ 3769 + { RCAR_GP_PIN(4, 19), 12, 3 }, /* TSN0_TD2 */ 3770 + { RCAR_GP_PIN(4, 18), 8, 3 }, /* TSN0_TD3 */ 3771 + { RCAR_GP_PIN(4, 17), 4, 3 }, /* TSN0_RD2 */ 3772 + { RCAR_GP_PIN(4, 16), 0, 3 }, /* TSN0_RD3 */ 3773 + } }, 3774 + { PINMUX_DRIVE_REG("DRV3CTRL4", 0xE606008C) { 3775 + { RCAR_GP_PIN(4, 24), 0, 3 }, /* AVS1 */ 3776 + } }, 3777 + { PINMUX_DRIVE_REG("DRV0CTRL5", 0xE6060880) { 3778 + { RCAR_GP_PIN(5, 7), 28, 3 }, /* AVB2_TXCREFCLK */ 3779 + { RCAR_GP_PIN(5, 6), 24, 3 }, /* AVB2_MDC */ 3780 + { RCAR_GP_PIN(5, 5), 20, 3 }, /* AVB2_MAGIC */ 3781 + { RCAR_GP_PIN(5, 4), 16, 3 }, /* AVB2_PHY_INT */ 3782 + { RCAR_GP_PIN(5, 3), 12, 3 }, /* AVB2_LINK */ 3783 + { RCAR_GP_PIN(5, 2), 8, 3 }, /* AVB2_AVTP_MATCH */ 3784 + { RCAR_GP_PIN(5, 1), 4, 3 }, /* AVB2_AVTP_CAPTURE */ 3785 + { RCAR_GP_PIN(5, 0), 0, 3 }, /* AVB2_AVTP_PPS */ 3786 + } }, 3787 + { PINMUX_DRIVE_REG("DRV1CTRL5", 0xE6060884) { 3788 + { RCAR_GP_PIN(5, 15), 28, 3 }, /* AVB2_TD0 */ 3789 + { RCAR_GP_PIN(5, 14), 24, 3 }, /* AVB2_RD1 */ 3790 + { RCAR_GP_PIN(5, 13), 20, 3 }, /* AVB2_RD2 */ 3791 + { RCAR_GP_PIN(5, 12), 16, 3 }, /* AVB2_TD1 */ 3792 + { RCAR_GP_PIN(5, 11), 12, 3 }, /* AVB2_TD2 */ 3793 + { RCAR_GP_PIN(5, 10), 8, 3 }, /* AVB2_MDIO */ 3794 + { RCAR_GP_PIN(5, 9), 4, 3 }, /* AVB2_RD3 */ 3795 + { RCAR_GP_PIN(5, 8), 0, 3 }, /* AVB2_TD3 */ 3796 + } }, 3797 + { PINMUX_DRIVE_REG("DRV2CTRL5", 0xE6060888) { 3798 + { RCAR_GP_PIN(5, 20), 16, 3 }, /* AVB2_RX_CTL */ 3799 + { RCAR_GP_PIN(5, 19), 12, 3 }, /* AVB2_TX_CTL */ 3800 + { RCAR_GP_PIN(5, 18), 8, 3 }, /* AVB2_RXC */ 3801 + { RCAR_GP_PIN(5, 17), 4, 3 }, /* AVB2_RD0 */ 3802 + { RCAR_GP_PIN(5, 16), 0, 3 }, /* AVB2_TXC */ 3803 + } }, 3804 + { PINMUX_DRIVE_REG("DRV0CTRL6", 0xE6061080) { 3805 + { RCAR_GP_PIN(6, 7), 28, 3 }, /* AVB1_TX_CTL */ 3806 + { RCAR_GP_PIN(6, 6), 24, 3 }, /* AVB1_TXC */ 3807 + { RCAR_GP_PIN(6, 5), 20, 3 }, /* AVB1_AVTP_MATCH */ 3808 + { RCAR_GP_PIN(6, 4), 16, 3 }, /* AVB1_LINK */ 3809 + { RCAR_GP_PIN(6, 3), 12, 3 }, /* AVB1_PHY_INT */ 3810 + { RCAR_GP_PIN(6, 2), 8, 3 }, /* AVB1_MDC */ 3811 + { RCAR_GP_PIN(6, 1), 4, 3 }, /* AVB1_MAGIC */ 3812 + { RCAR_GP_PIN(6, 0), 0, 3 }, /* AVB1_MDIO */ 3813 + } }, 3814 + { PINMUX_DRIVE_REG("DRV1CTRL6", 0xE6061084) { 3815 + { RCAR_GP_PIN(6, 15), 28, 3 }, /* AVB1_RD0 */ 3816 + { RCAR_GP_PIN(6, 14), 24, 3 }, /* AVB1_RD1 */ 3817 + { RCAR_GP_PIN(6, 13), 20, 3 }, /* AVB1_TD0 */ 3818 + { RCAR_GP_PIN(6, 12), 16, 3 }, /* AVB1_TD1 */ 3819 + { RCAR_GP_PIN(6, 11), 12, 3 }, /* AVB1_AVTP_CAPTURE */ 3820 + { RCAR_GP_PIN(6, 10), 8, 3 }, /* AVB1_AVTP_PPS */ 3821 + { RCAR_GP_PIN(6, 9), 4, 3 }, /* AVB1_RX_CTL */ 3822 + { RCAR_GP_PIN(6, 8), 0, 3 }, /* AVB1_RXC */ 3823 + } }, 3824 + { PINMUX_DRIVE_REG("DRV2CTRL6", 0xE6061088) { 3825 + { RCAR_GP_PIN(6, 20), 16, 3 }, /* AVB1_TXCREFCLK */ 3826 + { RCAR_GP_PIN(6, 19), 12, 3 }, /* AVB1_RD3 */ 3827 + { RCAR_GP_PIN(6, 18), 8, 3 }, /* AVB1_TD3 */ 3828 + { RCAR_GP_PIN(6, 17), 4, 3 }, /* AVB1_RD2 */ 3829 + { RCAR_GP_PIN(6, 16), 0, 3 }, /* AVB1_TD2 */ 3830 + } }, 3831 + { PINMUX_DRIVE_REG("DRV0CTRL7", 0xE6061880) { 3832 + { RCAR_GP_PIN(7, 7), 28, 3 }, /* AVB0_TD1 */ 3833 + { RCAR_GP_PIN(7, 6), 24, 3 }, /* AVB0_TD2 */ 3834 + { RCAR_GP_PIN(7, 5), 20, 3 }, /* AVB0_PHY_INT */ 3835 + { RCAR_GP_PIN(7, 4), 16, 3 }, /* AVB0_LINK */ 3836 + { RCAR_GP_PIN(7, 3), 12, 3 }, /* AVB0_TD3 */ 3837 + { RCAR_GP_PIN(7, 2), 8, 3 }, /* AVB0_AVTP_MATCH */ 3838 + { RCAR_GP_PIN(7, 1), 4, 3 }, /* AVB0_AVTP_CAPTURE */ 3839 + { RCAR_GP_PIN(7, 0), 0, 3 }, /* AVB0_AVTP_PPS */ 3840 + } }, 3841 + { PINMUX_DRIVE_REG("DRV1CTRL7", 0xE6061884) { 3842 + { RCAR_GP_PIN(7, 15), 28, 3 }, /* AVB0_TXC */ 3843 + { RCAR_GP_PIN(7, 14), 24, 3 }, /* AVB0_MDIO */ 3844 + { RCAR_GP_PIN(7, 13), 20, 3 }, /* AVB0_MDC */ 3845 + { RCAR_GP_PIN(7, 12), 16, 3 }, /* AVB0_RD2 */ 3846 + { RCAR_GP_PIN(7, 11), 12, 3 }, /* AVB0_TD0 */ 3847 + { RCAR_GP_PIN(7, 10), 8, 3 }, /* AVB0_MAGIC */ 3848 + { RCAR_GP_PIN(7, 9), 4, 3 }, /* AVB0_TXCREFCLK */ 3849 + { RCAR_GP_PIN(7, 8), 0, 3 }, /* AVB0_RD3 */ 3850 + } }, 3851 + { PINMUX_DRIVE_REG("DRV2CTRL7", 0xE6061888) { 3852 + { RCAR_GP_PIN(7, 20), 16, 3 }, /* AVB0_RX_CTL */ 3853 + { RCAR_GP_PIN(7, 19), 12, 3 }, /* AVB0_RXC */ 3854 + { RCAR_GP_PIN(7, 18), 8, 3 }, /* AVB0_RD0 */ 3855 + { RCAR_GP_PIN(7, 17), 4, 3 }, /* AVB0_RD1 */ 3856 + { RCAR_GP_PIN(7, 16), 0, 3 }, /* AVB0_TX_CTL */ 3857 + } }, 3858 + { PINMUX_DRIVE_REG("DRV0CTRL8", 0xE6068080) { 3859 + { RCAR_GP_PIN(8, 7), 28, 3 }, /* SDA3 */ 3860 + { RCAR_GP_PIN(8, 6), 24, 3 }, /* SCL3 */ 3861 + { RCAR_GP_PIN(8, 5), 20, 3 }, /* SDA2 */ 3862 + { RCAR_GP_PIN(8, 4), 16, 3 }, /* SCL2 */ 3863 + { RCAR_GP_PIN(8, 3), 12, 3 }, /* SDA1 */ 3864 + { RCAR_GP_PIN(8, 2), 8, 3 }, /* SCL1 */ 3865 + { RCAR_GP_PIN(8, 1), 4, 3 }, /* SDA0 */ 3866 + { RCAR_GP_PIN(8, 0), 0, 3 }, /* SCL0 */ 3867 + } }, 3868 + { PINMUX_DRIVE_REG("DRV1CTRL8", 0xE6068084) { 3869 + { RCAR_GP_PIN(8, 13), 20, 3 }, /* GP8_13 */ 3870 + { RCAR_GP_PIN(8, 12), 16, 3 }, /* GP8_12 */ 3871 + { RCAR_GP_PIN(8, 11), 12, 3 }, /* SDA5 */ 3872 + { RCAR_GP_PIN(8, 10), 8, 3 }, /* SCL5 */ 3873 + { RCAR_GP_PIN(8, 9), 4, 3 }, /* SDA4 */ 3874 + { RCAR_GP_PIN(8, 8), 0, 3 }, /* SCL4 */ 3875 + } }, 3876 + { }, 3877 + }; 3878 + 3879 + enum ioctrl_regs { 3880 + POC0, 3881 + POC1, 3882 + POC3, 3883 + POC4, 3884 + POC5, 3885 + POC6, 3886 + POC7, 3887 + POC8, 3888 + }; 3889 + 3890 + static const struct pinmux_ioctrl_reg pinmux_ioctrl_regs[] = { 3891 + [POC0] = { 0xE60500A0, }, 3892 + [POC1] = { 0xE60508A0, }, 3893 + [POC3] = { 0xE60588A0, }, 3894 + [POC4] = { 0xE60600A0, }, 3895 + [POC5] = { 0xE60608A0, }, 3896 + [POC6] = { 0xE60610A0, }, 3897 + [POC7] = { 0xE60618A0, }, 3898 + [POC8] = { 0xE60680A0, }, 3899 + { /* sentinel */ }, 3900 + }; 3901 + 3902 + static int r8a779g0_pin_to_pocctrl(unsigned int pin, u32 *pocctrl) 3903 + { 3904 + int bit = pin & 0x1f; 3905 + 3906 + *pocctrl = pinmux_ioctrl_regs[POC0].reg; 3907 + if (pin >= RCAR_GP_PIN(0, 0) && pin <= RCAR_GP_PIN(0, 18)) 3908 + return bit; 3909 + 3910 + *pocctrl = pinmux_ioctrl_regs[POC1].reg; 3911 + if (pin >= RCAR_GP_PIN(1, 0) && pin <= RCAR_GP_PIN(1, 22)) 3912 + return bit; 3913 + 3914 + *pocctrl = pinmux_ioctrl_regs[POC3].reg; 3915 + if (pin >= RCAR_GP_PIN(3, 0) && pin <= RCAR_GP_PIN(3, 12)) 3916 + return bit; 3917 + 3918 + *pocctrl = pinmux_ioctrl_regs[POC8].reg; 3919 + if (pin >= RCAR_GP_PIN(8, 0) && pin <= RCAR_GP_PIN(8, 13)) 3920 + return bit; 3921 + 3922 + return -EINVAL; 3923 + } 3924 + 3925 + static const struct pinmux_bias_reg pinmux_bias_regs[] = { 3926 + { PINMUX_BIAS_REG("PUEN0", 0xE60500C0, "PUD0", 0xE60500E0) { 3927 + [ 0] = RCAR_GP_PIN(0, 0), /* GP0_00 */ 3928 + [ 1] = RCAR_GP_PIN(0, 1), /* GP0_01 */ 3929 + [ 2] = RCAR_GP_PIN(0, 2), /* GP0_02 */ 3930 + [ 3] = RCAR_GP_PIN(0, 3), /* IRQ3 */ 3931 + [ 4] = RCAR_GP_PIN(0, 4), /* IRQ2 */ 3932 + [ 5] = RCAR_GP_PIN(0, 5), /* IRQ1 */ 3933 + [ 6] = RCAR_GP_PIN(0, 6), /* IRQ0 */ 3934 + [ 7] = RCAR_GP_PIN(0, 7), /* MSIOF5_SS2 */ 3935 + [ 8] = RCAR_GP_PIN(0, 8), /* MSIOF5_SS1 */ 3936 + [ 9] = RCAR_GP_PIN(0, 9), /* MSIOF5_SYNC */ 3937 + [10] = RCAR_GP_PIN(0, 10), /* MSIOF5_TXD */ 3938 + [11] = RCAR_GP_PIN(0, 11), /* MSIOF5_SCK */ 3939 + [12] = RCAR_GP_PIN(0, 12), /* MSIOF5_RXD */ 3940 + [13] = RCAR_GP_PIN(0, 13), /* MSIOF2_SS2 */ 3941 + [14] = RCAR_GP_PIN(0, 14), /* MSIOF2_SS1 */ 3942 + [15] = RCAR_GP_PIN(0, 15), /* MSIOF2_SYNC */ 3943 + [16] = RCAR_GP_PIN(0, 16), /* MSIOF2_TXD */ 3944 + [17] = RCAR_GP_PIN(0, 17), /* MSIOF2_SCK */ 3945 + [18] = RCAR_GP_PIN(0, 18), /* MSIOF2_RXD */ 3946 + [19] = SH_PFC_PIN_NONE, 3947 + [20] = SH_PFC_PIN_NONE, 3948 + [21] = SH_PFC_PIN_NONE, 3949 + [22] = SH_PFC_PIN_NONE, 3950 + [23] = SH_PFC_PIN_NONE, 3951 + [24] = SH_PFC_PIN_NONE, 3952 + [25] = SH_PFC_PIN_NONE, 3953 + [26] = SH_PFC_PIN_NONE, 3954 + [27] = SH_PFC_PIN_NONE, 3955 + [28] = SH_PFC_PIN_NONE, 3956 + [29] = SH_PFC_PIN_NONE, 3957 + [30] = SH_PFC_PIN_NONE, 3958 + [31] = SH_PFC_PIN_NONE, 3959 + } }, 3960 + { PINMUX_BIAS_REG("PUEN1", 0xE60508C0, "PUD1", 0xE60508E0) { 3961 + [ 0] = RCAR_GP_PIN(1, 0), /* MSIOF1_SS2 */ 3962 + [ 1] = RCAR_GP_PIN(1, 1), /* MSIOF1_SS1 */ 3963 + [ 2] = RCAR_GP_PIN(1, 2), /* MSIOF1_SYNC */ 3964 + [ 3] = RCAR_GP_PIN(1, 3), /* MSIOF1_SCK */ 3965 + [ 4] = RCAR_GP_PIN(1, 4), /* MSIOF1_TXD */ 3966 + [ 5] = RCAR_GP_PIN(1, 5), /* MSIOF1_RXD */ 3967 + [ 6] = RCAR_GP_PIN(1, 6), /* MSIOF0_SS2 */ 3968 + [ 7] = RCAR_GP_PIN(1, 7), /* MSIOF0_SS1 */ 3969 + [ 8] = RCAR_GP_PIN(1, 8), /* MSIOF0_SYNC */ 3970 + [ 9] = RCAR_GP_PIN(1, 9), /* MSIOF0_TXD */ 3971 + [10] = RCAR_GP_PIN(1, 10), /* MSIOF0_SCK */ 3972 + [11] = RCAR_GP_PIN(1, 11), /* MSIOF0_RXD */ 3973 + [12] = RCAR_GP_PIN(1, 12), /* HTX0 */ 3974 + [13] = RCAR_GP_PIN(1, 13), /* HCTS0_N */ 3975 + [14] = RCAR_GP_PIN(1, 14), /* HRTS0_N */ 3976 + [15] = RCAR_GP_PIN(1, 15), /* HSCK0 */ 3977 + [16] = RCAR_GP_PIN(1, 16), /* HRX0 */ 3978 + [17] = RCAR_GP_PIN(1, 17), /* SCIF_CLK */ 3979 + [18] = RCAR_GP_PIN(1, 18), /* SSI_SCK */ 3980 + [19] = RCAR_GP_PIN(1, 19), /* SSI_WS */ 3981 + [20] = RCAR_GP_PIN(1, 20), /* SSI_SD */ 3982 + [21] = RCAR_GP_PIN(1, 21), /* AUDIO_CLKOUT */ 3983 + [22] = RCAR_GP_PIN(1, 22), /* AUDIO_CLKIN */ 3984 + [23] = RCAR_GP_PIN(1, 23), /* GP1_23 */ 3985 + [24] = RCAR_GP_PIN(1, 24), /* HRX3 */ 3986 + [25] = RCAR_GP_PIN(1, 25), /* HSCK3 */ 3987 + [26] = RCAR_GP_PIN(1, 26), /* HRTS3_N */ 3988 + [27] = RCAR_GP_PIN(1, 27), /* HCTS3_N */ 3989 + [28] = RCAR_GP_PIN(1, 28), /* HTX3 */ 3990 + [29] = SH_PFC_PIN_NONE, 3991 + [30] = SH_PFC_PIN_NONE, 3992 + [31] = SH_PFC_PIN_NONE, 3993 + } }, 3994 + { PINMUX_BIAS_REG("PUEN2", 0xE60580C0, "PUD2", 0xE60580E0) { 3995 + [ 0] = RCAR_GP_PIN(2, 0), /* FXR_TXDA */ 3996 + [ 1] = RCAR_GP_PIN(2, 1), /* FXR_TXENA_N */ 3997 + [ 2] = RCAR_GP_PIN(2, 2), /* RXDA_EXTFXR */ 3998 + [ 3] = RCAR_GP_PIN(2, 3), /* CLK_EXTFXR */ 3999 + [ 4] = RCAR_GP_PIN(2, 4), /* RXDB_EXTFXR */ 4000 + [ 5] = RCAR_GP_PIN(2, 5), /* FXR_TXENB_N */ 4001 + [ 6] = RCAR_GP_PIN(2, 6), /* FXR_TXDB */ 4002 + [ 7] = RCAR_GP_PIN(2, 7), /* TPU0TO1 */ 4003 + [ 8] = RCAR_GP_PIN(2, 8), /* TPU0TO0 */ 4004 + [ 9] = RCAR_GP_PIN(2, 9), /* CAN_CLK */ 4005 + [10] = RCAR_GP_PIN(2, 10), /* CANFD0_TX */ 4006 + [11] = RCAR_GP_PIN(2, 11), /* CANFD0_RX */ 4007 + [12] = RCAR_GP_PIN(2, 12), /* CANFD2_TX */ 4008 + [13] = RCAR_GP_PIN(2, 13), /* CANFD2_RX */ 4009 + [14] = RCAR_GP_PIN(2, 14), /* CANFD3_TX */ 4010 + [15] = RCAR_GP_PIN(2, 15), /* CANFD3_RX */ 4011 + [16] = RCAR_GP_PIN(2, 16), /* CANFD4_TX */ 4012 + [17] = RCAR_GP_PIN(2, 17), /* CANFD4_RX */ 4013 + [18] = RCAR_GP_PIN(2, 18), /* CANFD7_TX */ 4014 + [19] = RCAR_GP_PIN(2, 19), /* CANFD7_RX */ 4015 + [20] = SH_PFC_PIN_NONE, 4016 + [21] = SH_PFC_PIN_NONE, 4017 + [22] = SH_PFC_PIN_NONE, 4018 + [23] = SH_PFC_PIN_NONE, 4019 + [24] = SH_PFC_PIN_NONE, 4020 + [25] = SH_PFC_PIN_NONE, 4021 + [26] = SH_PFC_PIN_NONE, 4022 + [27] = SH_PFC_PIN_NONE, 4023 + [28] = SH_PFC_PIN_NONE, 4024 + [29] = SH_PFC_PIN_NONE, 4025 + [30] = SH_PFC_PIN_NONE, 4026 + [31] = SH_PFC_PIN_NONE, 4027 + } }, 4028 + { PINMUX_BIAS_REG("PUEN3", 0xE60588C0, "PUD3", 0xE60588E0) { 4029 + [ 0] = RCAR_GP_PIN(3, 0), /* MMC_SD_D1 */ 4030 + [ 1] = RCAR_GP_PIN(3, 1), /* MMC_SD_D0 */ 4031 + [ 2] = RCAR_GP_PIN(3, 2), /* MMC_SD_D2 */ 4032 + [ 3] = RCAR_GP_PIN(3, 3), /* MMC_SD_CLK */ 4033 + [ 4] = RCAR_GP_PIN(3, 4), /* MMC_DS */ 4034 + [ 5] = RCAR_GP_PIN(3, 5), /* MMC_SD_D3 */ 4035 + [ 6] = RCAR_GP_PIN(3, 6), /* MMC_D5 */ 4036 + [ 7] = RCAR_GP_PIN(3, 7), /* MMC_D4 */ 4037 + [ 8] = RCAR_GP_PIN(3, 8), /* MMC_D7 */ 4038 + [ 9] = RCAR_GP_PIN(3, 9), /* MMC_D6 */ 4039 + [10] = RCAR_GP_PIN(3, 10), /* MMC_SD_CMD */ 4040 + [11] = RCAR_GP_PIN(3, 11), /* SD_CD */ 4041 + [12] = RCAR_GP_PIN(3, 12), /* SD_WP */ 4042 + [13] = RCAR_GP_PIN(3, 13), /* IPC_CLKIN */ 4043 + [14] = RCAR_GP_PIN(3, 14), /* IPC_CLKOUT */ 4044 + [15] = RCAR_GP_PIN(3, 15), /* QSPI0_SSL */ 4045 + [16] = RCAR_GP_PIN(3, 16), /* QSPI0_IO3 */ 4046 + [17] = RCAR_GP_PIN(3, 17), /* QSPI0_IO2 */ 4047 + [18] = RCAR_GP_PIN(3, 18), /* QSPI0_MISO_IO1 */ 4048 + [19] = RCAR_GP_PIN(3, 19), /* QSPI0_MOSI_IO0 */ 4049 + [20] = RCAR_GP_PIN(3, 20), /* QSPI0_SPCLK */ 4050 + [21] = RCAR_GP_PIN(3, 21), /* QSPI1_MOSI_IO0 */ 4051 + [22] = RCAR_GP_PIN(3, 22), /* QSPI1_SPCLK */ 4052 + [23] = RCAR_GP_PIN(3, 23), /* QSPI1_MISO_IO1 */ 4053 + [24] = RCAR_GP_PIN(3, 24), /* QSPI1_IO2 */ 4054 + [25] = RCAR_GP_PIN(3, 25), /* QSPI1_SSL */ 4055 + [26] = RCAR_GP_PIN(3, 26), /* QSPI1_IO3 */ 4056 + [27] = RCAR_GP_PIN(3, 27), /* RPC_RESET_N */ 4057 + [28] = RCAR_GP_PIN(3, 28), /* RPC_WP_N */ 4058 + [29] = RCAR_GP_PIN(3, 29), /* RPC_INT_N */ 4059 + [30] = SH_PFC_PIN_NONE, 4060 + [31] = SH_PFC_PIN_NONE, 4061 + } }, 4062 + { PINMUX_BIAS_REG("PUEN4", 0xE60600C0, "PUD4", 0xE60600E0) { 4063 + [ 0] = RCAR_GP_PIN(4, 0), /* TSN0_MDIO */ 4064 + [ 1] = RCAR_GP_PIN(4, 1), /* TSN0_MDC */ 4065 + [ 2] = RCAR_GP_PIN(4, 2), /* TSN0_AVTP_PPS1 */ 4066 + [ 3] = RCAR_GP_PIN(4, 3), /* TSN0_PHY_INT */ 4067 + [ 4] = RCAR_GP_PIN(4, 4), /* TSN0_LINK */ 4068 + [ 5] = RCAR_GP_PIN(4, 5), /* TSN0_AVTP_MATCH */ 4069 + [ 6] = RCAR_GP_PIN(4, 6), /* TSN0_AVTP_CAPTURE */ 4070 + [ 7] = RCAR_GP_PIN(4, 7), /* TSN0_RX_CTL */ 4071 + [ 8] = RCAR_GP_PIN(4, 8), /* TSN0_AVTP_PPS0 */ 4072 + [ 9] = RCAR_GP_PIN(4, 9), /* TSN0_TX_CTL */ 4073 + [10] = RCAR_GP_PIN(4, 10), /* TSN0_RD0 */ 4074 + [11] = RCAR_GP_PIN(4, 11), /* TSN0_RXC */ 4075 + [12] = RCAR_GP_PIN(4, 12), /* TSN0_TXC */ 4076 + [13] = RCAR_GP_PIN(4, 13), /* TSN0_RD1 */ 4077 + [14] = RCAR_GP_PIN(4, 14), /* TSN0_TD1 */ 4078 + [15] = RCAR_GP_PIN(4, 15), /* TSN0_TD0 */ 4079 + [16] = RCAR_GP_PIN(4, 16), /* TSN0_RD3 */ 4080 + [17] = RCAR_GP_PIN(4, 17), /* TSN0_RD2 */ 4081 + [18] = RCAR_GP_PIN(4, 18), /* TSN0_TD3 */ 4082 + [19] = RCAR_GP_PIN(4, 19), /* TSN0_TD2 */ 4083 + [20] = RCAR_GP_PIN(4, 20), /* TSN0_TXCREFCLK */ 4084 + [21] = RCAR_GP_PIN(4, 21), /* PCIE0_CLKREQ_N */ 4085 + [22] = RCAR_GP_PIN(4, 22), /* PCIE1_CLKREQ_N */ 4086 + [23] = RCAR_GP_PIN(4, 23), /* AVS0 */ 4087 + [24] = RCAR_GP_PIN(4, 24), /* AVS1 */ 4088 + [25] = SH_PFC_PIN_NONE, 4089 + [26] = SH_PFC_PIN_NONE, 4090 + [27] = SH_PFC_PIN_NONE, 4091 + [28] = SH_PFC_PIN_NONE, 4092 + [29] = SH_PFC_PIN_NONE, 4093 + [30] = SH_PFC_PIN_NONE, 4094 + [31] = SH_PFC_PIN_NONE, 4095 + } }, 4096 + { PINMUX_BIAS_REG("PUEN5", 0xE60608C0, "PUD5", 0xE60608E0) { 4097 + [ 0] = RCAR_GP_PIN(5, 0), /* AVB2_AVTP_PPS */ 4098 + [ 1] = RCAR_GP_PIN(5, 1), /* AVB0_AVTP_CAPTURE */ 4099 + [ 2] = RCAR_GP_PIN(5, 2), /* AVB2_AVTP_MATCH */ 4100 + [ 3] = RCAR_GP_PIN(5, 3), /* AVB2_LINK */ 4101 + [ 4] = RCAR_GP_PIN(5, 4), /* AVB2_PHY_INT */ 4102 + [ 5] = RCAR_GP_PIN(5, 5), /* AVB2_MAGIC */ 4103 + [ 6] = RCAR_GP_PIN(5, 6), /* AVB2_MDC */ 4104 + [ 7] = RCAR_GP_PIN(5, 7), /* AVB2_TXCREFCLK */ 4105 + [ 8] = RCAR_GP_PIN(5, 8), /* AVB2_TD3 */ 4106 + [ 9] = RCAR_GP_PIN(5, 9), /* AVB2_RD3 */ 4107 + [10] = RCAR_GP_PIN(5, 10), /* AVB2_MDIO */ 4108 + [11] = RCAR_GP_PIN(5, 11), /* AVB2_TD2 */ 4109 + [12] = RCAR_GP_PIN(5, 12), /* AVB2_TD1 */ 4110 + [13] = RCAR_GP_PIN(5, 13), /* AVB2_RD2 */ 4111 + [14] = RCAR_GP_PIN(5, 14), /* AVB2_RD1 */ 4112 + [15] = RCAR_GP_PIN(5, 15), /* AVB2_TD0 */ 4113 + [16] = RCAR_GP_PIN(5, 16), /* AVB2_TXC */ 4114 + [17] = RCAR_GP_PIN(5, 17), /* AVB2_RD0 */ 4115 + [18] = RCAR_GP_PIN(5, 18), /* AVB2_RXC */ 4116 + [19] = RCAR_GP_PIN(5, 19), /* AVB2_TX_CTL */ 4117 + [20] = RCAR_GP_PIN(5, 20), /* AVB2_RX_CTL */ 4118 + [21] = SH_PFC_PIN_NONE, 4119 + [22] = SH_PFC_PIN_NONE, 4120 + [23] = SH_PFC_PIN_NONE, 4121 + [24] = SH_PFC_PIN_NONE, 4122 + [25] = SH_PFC_PIN_NONE, 4123 + [26] = SH_PFC_PIN_NONE, 4124 + [27] = SH_PFC_PIN_NONE, 4125 + [28] = SH_PFC_PIN_NONE, 4126 + [29] = SH_PFC_PIN_NONE, 4127 + [30] = SH_PFC_PIN_NONE, 4128 + [31] = SH_PFC_PIN_NONE, 4129 + } }, 4130 + { PINMUX_BIAS_REG("PUEN6", 0xE60610C0, "PUD6", 0xE60610E0) { 4131 + [ 0] = RCAR_GP_PIN(6, 0), /* AVB1_MDIO */ 4132 + [ 1] = RCAR_GP_PIN(6, 1), /* AVB1_MAGIC */ 4133 + [ 2] = RCAR_GP_PIN(6, 2), /* AVB1_MDC */ 4134 + [ 3] = RCAR_GP_PIN(6, 3), /* AVB1_PHY_INT */ 4135 + [ 4] = RCAR_GP_PIN(6, 4), /* AVB1_LINK */ 4136 + [ 5] = RCAR_GP_PIN(6, 5), /* AVB1_AVTP_MATCH */ 4137 + [ 6] = RCAR_GP_PIN(6, 6), /* AVB1_TXC */ 4138 + [ 7] = RCAR_GP_PIN(6, 7), /* AVB1_TX_CTL */ 4139 + [ 8] = RCAR_GP_PIN(6, 8), /* AVB1_RXC */ 4140 + [ 9] = RCAR_GP_PIN(6, 9), /* AVB1_RX_CTL */ 4141 + [10] = RCAR_GP_PIN(6, 10), /* AVB1_AVTP_PPS */ 4142 + [11] = RCAR_GP_PIN(6, 11), /* AVB1_AVTP_CAPTURE */ 4143 + [12] = RCAR_GP_PIN(6, 12), /* AVB1_TD1 */ 4144 + [13] = RCAR_GP_PIN(6, 13), /* AVB1_TD0 */ 4145 + [14] = RCAR_GP_PIN(6, 14), /* AVB1_RD1*/ 4146 + [15] = RCAR_GP_PIN(6, 15), /* AVB1_RD0 */ 4147 + [16] = RCAR_GP_PIN(6, 16), /* AVB1_TD2 */ 4148 + [17] = RCAR_GP_PIN(6, 17), /* AVB1_RD2 */ 4149 + [18] = RCAR_GP_PIN(6, 18), /* AVB1_TD3 */ 4150 + [19] = RCAR_GP_PIN(6, 19), /* AVB1_RD3 */ 4151 + [20] = RCAR_GP_PIN(6, 20), /* AVB1_TXCREFCLK */ 4152 + [21] = SH_PFC_PIN_NONE, 4153 + [22] = SH_PFC_PIN_NONE, 4154 + [23] = SH_PFC_PIN_NONE, 4155 + [24] = SH_PFC_PIN_NONE, 4156 + [25] = SH_PFC_PIN_NONE, 4157 + [26] = SH_PFC_PIN_NONE, 4158 + [27] = SH_PFC_PIN_NONE, 4159 + [28] = SH_PFC_PIN_NONE, 4160 + [29] = SH_PFC_PIN_NONE, 4161 + [30] = SH_PFC_PIN_NONE, 4162 + [31] = SH_PFC_PIN_NONE, 4163 + } }, 4164 + { PINMUX_BIAS_REG("PUEN7", 0xE60618C0, "PUD7", 0xE60618E0) { 4165 + [ 0] = RCAR_GP_PIN(7, 0), /* AVB0_AVTP_PPS */ 4166 + [ 1] = RCAR_GP_PIN(7, 1), /* AVB0_AVTP_CAPTURE */ 4167 + [ 2] = RCAR_GP_PIN(7, 2), /* AVB0_AVTP_MATCH */ 4168 + [ 3] = RCAR_GP_PIN(7, 3), /* AVB0_TD3 */ 4169 + [ 4] = RCAR_GP_PIN(7, 4), /* AVB0_LINK */ 4170 + [ 5] = RCAR_GP_PIN(7, 5), /* AVB0_PHY_INT */ 4171 + [ 6] = RCAR_GP_PIN(7, 6), /* AVB0_TD2 */ 4172 + [ 7] = RCAR_GP_PIN(7, 7), /* AVB0_TD1 */ 4173 + [ 8] = RCAR_GP_PIN(7, 8), /* AVB0_RD3 */ 4174 + [ 9] = RCAR_GP_PIN(7, 9), /* AVB0_TXCREFCLK */ 4175 + [10] = RCAR_GP_PIN(7, 10), /* AVB0_MAGIC */ 4176 + [11] = RCAR_GP_PIN(7, 11), /* AVB0_TD0 */ 4177 + [12] = RCAR_GP_PIN(7, 12), /* AVB0_RD2 */ 4178 + [13] = RCAR_GP_PIN(7, 13), /* AVB0_MDC */ 4179 + [14] = RCAR_GP_PIN(7, 14), /* AVB0_MDIO */ 4180 + [15] = RCAR_GP_PIN(7, 15), /* AVB0_TXC */ 4181 + [16] = RCAR_GP_PIN(7, 16), /* AVB0_TX_CTL */ 4182 + [17] = RCAR_GP_PIN(7, 17), /* AVB0_RD1 */ 4183 + [18] = RCAR_GP_PIN(7, 18), /* AVB0_RD0 */ 4184 + [19] = RCAR_GP_PIN(7, 19), /* AVB0_RXC */ 4185 + [20] = RCAR_GP_PIN(7, 20), /* AVB0_RX_CTL */ 4186 + [21] = SH_PFC_PIN_NONE, 4187 + [22] = SH_PFC_PIN_NONE, 4188 + [23] = SH_PFC_PIN_NONE, 4189 + [24] = SH_PFC_PIN_NONE, 4190 + [25] = SH_PFC_PIN_NONE, 4191 + [26] = SH_PFC_PIN_NONE, 4192 + [27] = SH_PFC_PIN_NONE, 4193 + [28] = SH_PFC_PIN_NONE, 4194 + [29] = SH_PFC_PIN_NONE, 4195 + [30] = SH_PFC_PIN_NONE, 4196 + [31] = SH_PFC_PIN_NONE, 4197 + } }, 4198 + { PINMUX_BIAS_REG("PUEN8", 0xE60680C0, "PUD8", 0xE60680E0) { 4199 + [ 0] = RCAR_GP_PIN(8, 0), /* SCL0 */ 4200 + [ 1] = RCAR_GP_PIN(8, 1), /* SDA0 */ 4201 + [ 2] = RCAR_GP_PIN(8, 2), /* SCL1 */ 4202 + [ 3] = RCAR_GP_PIN(8, 3), /* SDA1 */ 4203 + [ 4] = RCAR_GP_PIN(8, 4), /* SCL2 */ 4204 + [ 5] = RCAR_GP_PIN(8, 5), /* SDA2 */ 4205 + [ 6] = RCAR_GP_PIN(8, 6), /* SCL3 */ 4206 + [ 7] = RCAR_GP_PIN(8, 7), /* SDA3 */ 4207 + [ 8] = RCAR_GP_PIN(8, 8), /* SCL4 */ 4208 + [ 9] = RCAR_GP_PIN(8, 9), /* SDA4 */ 4209 + [10] = RCAR_GP_PIN(8, 10), /* SCL5 */ 4210 + [11] = RCAR_GP_PIN(8, 11), /* SDA5 */ 4211 + [12] = RCAR_GP_PIN(8, 12), /* GP8_12 */ 4212 + [13] = RCAR_GP_PIN(8, 13), /* GP8_13 */ 4213 + [14] = SH_PFC_PIN_NONE, 4214 + [15] = SH_PFC_PIN_NONE, 4215 + [16] = SH_PFC_PIN_NONE, 4216 + [17] = SH_PFC_PIN_NONE, 4217 + [18] = SH_PFC_PIN_NONE, 4218 + [19] = SH_PFC_PIN_NONE, 4219 + [20] = SH_PFC_PIN_NONE, 4220 + [21] = SH_PFC_PIN_NONE, 4221 + [22] = SH_PFC_PIN_NONE, 4222 + [23] = SH_PFC_PIN_NONE, 4223 + [24] = SH_PFC_PIN_NONE, 4224 + [25] = SH_PFC_PIN_NONE, 4225 + [26] = SH_PFC_PIN_NONE, 4226 + [27] = SH_PFC_PIN_NONE, 4227 + [28] = SH_PFC_PIN_NONE, 4228 + [29] = SH_PFC_PIN_NONE, 4229 + [30] = SH_PFC_PIN_NONE, 4230 + [31] = SH_PFC_PIN_NONE, 4231 + } }, 4232 + { /* sentinel */ }, 4233 + }; 4234 + 4235 + static const struct sh_pfc_soc_operations r8a779g0_pin_ops = { 4236 + .pin_to_pocctrl = r8a779g0_pin_to_pocctrl, 4237 + .get_bias = rcar_pinmux_get_bias, 4238 + .set_bias = rcar_pinmux_set_bias, 4239 + }; 4240 + 4241 + const struct sh_pfc_soc_info r8a779g0_pinmux_info = { 4242 + .name = "r8a779g0_pfc", 4243 + .ops = &r8a779g0_pin_ops, 4244 + .unlock_reg = 0x1ff, /* PMMRn mask */ 4245 + 4246 + .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END }, 4247 + 4248 + .pins = pinmux_pins, 4249 + .nr_pins = ARRAY_SIZE(pinmux_pins), 4250 + .groups = pinmux_groups, 4251 + .nr_groups = ARRAY_SIZE(pinmux_groups), 4252 + .functions = pinmux_functions, 4253 + .nr_functions = ARRAY_SIZE(pinmux_functions), 4254 + 4255 + .cfg_regs = pinmux_config_regs, 4256 + .drive_regs = pinmux_drive_regs, 4257 + .bias_regs = pinmux_bias_regs, 4258 + .ioctrl_regs = pinmux_ioctrl_regs, 4259 + 4260 + .pinmux_data = pinmux_data, 4261 + .pinmux_data_size = ARRAY_SIZE(pinmux_data), 4262 + };
+2
drivers/pinctrl/renesas/pinctrl-rzg2l.c
··· 527 527 if (!(cfg & PIN_CFG_IEN)) 528 528 return -EINVAL; 529 529 arg = rzg2l_read_pin_config(pctrl, IEN(port_offset), bit, IEN_MASK); 530 + if (!arg) 531 + return -EINVAL; 530 532 break; 531 533 532 534 case PIN_CONFIG_POWER_SOURCE: {
+1119
drivers/pinctrl/renesas/pinctrl-rzv2m.c
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* 3 + * Renesas RZ/V2M Pin Control and GPIO driver core 4 + * 5 + * Based on: 6 + * Renesas RZ/G2L Pin Control and GPIO driver core 7 + * 8 + * Copyright (C) 2022 Renesas Electronics Corporation. 9 + */ 10 + 11 + #include <linux/bitfield.h> 12 + #include <linux/bitops.h> 13 + #include <linux/clk.h> 14 + #include <linux/gpio/driver.h> 15 + #include <linux/io.h> 16 + #include <linux/module.h> 17 + #include <linux/of_device.h> 18 + #include <linux/pinctrl/pinconf-generic.h> 19 + #include <linux/pinctrl/pinconf.h> 20 + #include <linux/pinctrl/pinctrl.h> 21 + #include <linux/pinctrl/pinmux.h> 22 + #include <linux/spinlock.h> 23 + 24 + #include <dt-bindings/pinctrl/rzv2m-pinctrl.h> 25 + 26 + #include "../core.h" 27 + #include "../pinconf.h" 28 + #include "../pinmux.h" 29 + 30 + #define DRV_NAME "pinctrl-rzv2m" 31 + 32 + /* 33 + * Use 16 lower bits [15:0] for pin identifier 34 + * Use 16 higher bits [31:16] for pin mux function 35 + */ 36 + #define MUX_PIN_ID_MASK GENMASK(15, 0) 37 + #define MUX_FUNC_MASK GENMASK(31, 16) 38 + #define MUX_FUNC(pinconf) FIELD_GET(MUX_FUNC_MASK, (pinconf)) 39 + 40 + /* PIN capabilities */ 41 + #define PIN_CFG_GRP_1_8V_2 1 42 + #define PIN_CFG_GRP_1_8V_3 2 43 + #define PIN_CFG_GRP_SWIO_1 3 44 + #define PIN_CFG_GRP_SWIO_2 4 45 + #define PIN_CFG_GRP_3_3V 5 46 + #define PIN_CFG_GRP_MASK GENMASK(2, 0) 47 + #define PIN_CFG_BIAS BIT(3) 48 + #define PIN_CFG_DRV BIT(4) 49 + #define PIN_CFG_SLEW BIT(5) 50 + 51 + #define RZV2M_MPXED_PIN_FUNCS (PIN_CFG_BIAS | \ 52 + PIN_CFG_DRV | \ 53 + PIN_CFG_SLEW) 54 + 55 + /* 56 + * n indicates number of pins in the port, a is the register index 57 + * and f is pin configuration capabilities supported. 58 + */ 59 + #define RZV2M_GPIO_PORT_PACK(n, a, f) (((n) << 24) | ((a) << 16) | (f)) 60 + #define RZV2M_GPIO_PORT_GET_PINCNT(x) FIELD_GET(GENMASK(31, 24), (x)) 61 + #define RZV2M_GPIO_PORT_GET_INDEX(x) FIELD_GET(GENMASK(23, 16), (x)) 62 + #define RZV2M_GPIO_PORT_GET_CFGS(x) FIELD_GET(GENMASK(15, 0), (x)) 63 + 64 + #define RZV2M_DEDICATED_PORT_IDX 22 65 + 66 + /* 67 + * BIT(31) indicates dedicated pin, b is the register bits (b * 16) 68 + * and f is the pin configuration capabilities supported. 69 + */ 70 + #define RZV2M_SINGLE_PIN BIT(31) 71 + #define RZV2M_SINGLE_PIN_PACK(b, f) (RZV2M_SINGLE_PIN | \ 72 + ((RZV2M_DEDICATED_PORT_IDX) << 24) | \ 73 + ((b) << 16) | (f)) 74 + #define RZV2M_SINGLE_PIN_GET_PORT(x) FIELD_GET(GENMASK(30, 24), (x)) 75 + #define RZV2M_SINGLE_PIN_GET_BIT(x) FIELD_GET(GENMASK(23, 16), (x)) 76 + #define RZV2M_SINGLE_PIN_GET_CFGS(x) FIELD_GET(GENMASK(15, 0), (x)) 77 + 78 + #define RZV2M_PIN_ID_TO_PORT(id) ((id) / RZV2M_PINS_PER_PORT) 79 + #define RZV2M_PIN_ID_TO_PIN(id) ((id) % RZV2M_PINS_PER_PORT) 80 + 81 + #define DO(n) (0x00 + (n) * 0x40) 82 + #define OE(n) (0x04 + (n) * 0x40) 83 + #define IE(n) (0x08 + (n) * 0x40) 84 + #define PFSEL(n) (0x10 + (n) * 0x40) 85 + #define DI(n) (0x20 + (n) * 0x40) 86 + #define PUPD(n) (0x24 + (n) * 0x40) 87 + #define DRV(n) ((n) < RZV2M_DEDICATED_PORT_IDX ? (0x28 + (n) * 0x40) \ 88 + : 0x590) 89 + #define SR(n) ((n) < RZV2M_DEDICATED_PORT_IDX ? (0x2c + (n) * 0x40) \ 90 + : 0x594) 91 + #define DI_MSK(n) (0x30 + (n) * 0x40) 92 + #define EN_MSK(n) (0x34 + (n) * 0x40) 93 + 94 + #define PFC_MASK 0x07 95 + #define PUPD_MASK 0x03 96 + #define DRV_MASK 0x03 97 + 98 + struct rzv2m_dedicated_configs { 99 + const char *name; 100 + u32 config; 101 + }; 102 + 103 + struct rzv2m_pinctrl_data { 104 + const char * const *port_pins; 105 + const u32 *port_pin_configs; 106 + const struct rzv2m_dedicated_configs *dedicated_pins; 107 + unsigned int n_port_pins; 108 + unsigned int n_dedicated_pins; 109 + }; 110 + 111 + struct rzv2m_pinctrl { 112 + struct pinctrl_dev *pctl; 113 + struct pinctrl_desc desc; 114 + struct pinctrl_pin_desc *pins; 115 + 116 + const struct rzv2m_pinctrl_data *data; 117 + void __iomem *base; 118 + struct device *dev; 119 + struct clk *clk; 120 + 121 + struct gpio_chip gpio_chip; 122 + struct pinctrl_gpio_range gpio_range; 123 + 124 + spinlock_t lock; 125 + }; 126 + 127 + static const unsigned int drv_1_8V_group2_uA[] = { 1800, 3800, 7800, 11000 }; 128 + static const unsigned int drv_1_8V_group3_uA[] = { 1600, 3200, 6400, 9600 }; 129 + static const unsigned int drv_SWIO_group2_3_3V_uA[] = { 9000, 11000, 13000, 18000 }; 130 + static const unsigned int drv_3_3V_group_uA[] = { 2000, 4000, 8000, 12000 }; 131 + 132 + /* Helper for registers that have a write enable bit in the upper word */ 133 + static void rzv2m_writel_we(void __iomem *addr, u8 shift, u8 value) 134 + { 135 + writel((BIT(16) | value) << shift, addr); 136 + } 137 + 138 + static void rzv2m_pinctrl_set_pfc_mode(struct rzv2m_pinctrl *pctrl, 139 + u8 port, u8 pin, u8 func) 140 + { 141 + void __iomem *addr; 142 + 143 + /* Mask input/output */ 144 + rzv2m_writel_we(pctrl->base + DI_MSK(port), pin, 1); 145 + rzv2m_writel_we(pctrl->base + EN_MSK(port), pin, 1); 146 + 147 + /* Select the function and set the write enable bits */ 148 + addr = pctrl->base + PFSEL(port) + (pin / 4) * 4; 149 + writel(((PFC_MASK << 16) | func) << ((pin % 4) * 4), addr); 150 + 151 + /* Unmask input/output */ 152 + rzv2m_writel_we(pctrl->base + EN_MSK(port), pin, 0); 153 + rzv2m_writel_we(pctrl->base + DI_MSK(port), pin, 0); 154 + }; 155 + 156 + static int rzv2m_pinctrl_set_mux(struct pinctrl_dev *pctldev, 157 + unsigned int func_selector, 158 + unsigned int group_selector) 159 + { 160 + struct rzv2m_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); 161 + struct function_desc *func; 162 + unsigned int i, *psel_val; 163 + struct group_desc *group; 164 + int *pins; 165 + 166 + func = pinmux_generic_get_function(pctldev, func_selector); 167 + if (!func) 168 + return -EINVAL; 169 + group = pinctrl_generic_get_group(pctldev, group_selector); 170 + if (!group) 171 + return -EINVAL; 172 + 173 + psel_val = func->data; 174 + pins = group->pins; 175 + 176 + for (i = 0; i < group->num_pins; i++) { 177 + dev_dbg(pctrl->dev, "port:%u pin: %u PSEL:%u\n", 178 + RZV2M_PIN_ID_TO_PORT(pins[i]), RZV2M_PIN_ID_TO_PIN(pins[i]), 179 + psel_val[i]); 180 + rzv2m_pinctrl_set_pfc_mode(pctrl, RZV2M_PIN_ID_TO_PORT(pins[i]), 181 + RZV2M_PIN_ID_TO_PIN(pins[i]), psel_val[i]); 182 + } 183 + 184 + return 0; 185 + }; 186 + 187 + static int rzv2m_map_add_config(struct pinctrl_map *map, 188 + const char *group_or_pin, 189 + enum pinctrl_map_type type, 190 + unsigned long *configs, 191 + unsigned int num_configs) 192 + { 193 + unsigned long *cfgs; 194 + 195 + cfgs = kmemdup(configs, num_configs * sizeof(*cfgs), 196 + GFP_KERNEL); 197 + if (!cfgs) 198 + return -ENOMEM; 199 + 200 + map->type = type; 201 + map->data.configs.group_or_pin = group_or_pin; 202 + map->data.configs.configs = cfgs; 203 + map->data.configs.num_configs = num_configs; 204 + 205 + return 0; 206 + } 207 + 208 + static int rzv2m_dt_subnode_to_map(struct pinctrl_dev *pctldev, 209 + struct device_node *np, 210 + struct pinctrl_map **map, 211 + unsigned int *num_maps, 212 + unsigned int *index) 213 + { 214 + struct rzv2m_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); 215 + struct pinctrl_map *maps = *map; 216 + unsigned int nmaps = *num_maps; 217 + unsigned long *configs = NULL; 218 + unsigned int *pins, *psel_val; 219 + unsigned int num_pinmux = 0; 220 + unsigned int idx = *index; 221 + unsigned int num_pins, i; 222 + unsigned int num_configs; 223 + struct property *pinmux; 224 + struct property *prop; 225 + int ret, gsel, fsel; 226 + const char **pin_fn; 227 + const char *pin; 228 + 229 + pinmux = of_find_property(np, "pinmux", NULL); 230 + if (pinmux) 231 + num_pinmux = pinmux->length / sizeof(u32); 232 + 233 + ret = of_property_count_strings(np, "pins"); 234 + if (ret == -EINVAL) { 235 + num_pins = 0; 236 + } else if (ret < 0) { 237 + dev_err(pctrl->dev, "Invalid pins list in DT\n"); 238 + return ret; 239 + } else { 240 + num_pins = ret; 241 + } 242 + 243 + if (!num_pinmux && !num_pins) 244 + return 0; 245 + 246 + if (num_pinmux && num_pins) { 247 + dev_err(pctrl->dev, 248 + "DT node must contain either a pinmux or pins and not both\n"); 249 + return -EINVAL; 250 + } 251 + 252 + ret = pinconf_generic_parse_dt_config(np, NULL, &configs, &num_configs); 253 + if (ret < 0) 254 + return ret; 255 + 256 + if (num_pins && !num_configs) { 257 + dev_err(pctrl->dev, "DT node must contain a config\n"); 258 + ret = -ENODEV; 259 + goto done; 260 + } 261 + 262 + if (num_pinmux) 263 + nmaps += 1; 264 + 265 + if (num_pins) 266 + nmaps += num_pins; 267 + 268 + maps = krealloc_array(maps, nmaps, sizeof(*maps), GFP_KERNEL); 269 + if (!maps) { 270 + ret = -ENOMEM; 271 + goto done; 272 + } 273 + 274 + *map = maps; 275 + *num_maps = nmaps; 276 + if (num_pins) { 277 + of_property_for_each_string(np, "pins", prop, pin) { 278 + ret = rzv2m_map_add_config(&maps[idx], pin, 279 + PIN_MAP_TYPE_CONFIGS_PIN, 280 + configs, num_configs); 281 + if (ret < 0) 282 + goto done; 283 + 284 + idx++; 285 + } 286 + ret = 0; 287 + goto done; 288 + } 289 + 290 + pins = devm_kcalloc(pctrl->dev, num_pinmux, sizeof(*pins), GFP_KERNEL); 291 + psel_val = devm_kcalloc(pctrl->dev, num_pinmux, sizeof(*psel_val), 292 + GFP_KERNEL); 293 + pin_fn = devm_kzalloc(pctrl->dev, sizeof(*pin_fn), GFP_KERNEL); 294 + if (!pins || !psel_val || !pin_fn) { 295 + ret = -ENOMEM; 296 + goto done; 297 + } 298 + 299 + /* Collect pin locations and mux settings from DT properties */ 300 + for (i = 0; i < num_pinmux; ++i) { 301 + u32 value; 302 + 303 + ret = of_property_read_u32_index(np, "pinmux", i, &value); 304 + if (ret) 305 + goto done; 306 + pins[i] = value & MUX_PIN_ID_MASK; 307 + psel_val[i] = MUX_FUNC(value); 308 + } 309 + 310 + /* Register a single pin group listing all the pins we read from DT */ 311 + gsel = pinctrl_generic_add_group(pctldev, np->name, pins, num_pinmux, NULL); 312 + if (gsel < 0) { 313 + ret = gsel; 314 + goto done; 315 + } 316 + 317 + /* 318 + * Register a single group function where the 'data' is an array PSEL 319 + * register values read from DT. 320 + */ 321 + pin_fn[0] = np->name; 322 + fsel = pinmux_generic_add_function(pctldev, np->name, pin_fn, 1, 323 + psel_val); 324 + if (fsel < 0) { 325 + ret = fsel; 326 + goto remove_group; 327 + } 328 + 329 + maps[idx].type = PIN_MAP_TYPE_MUX_GROUP; 330 + maps[idx].data.mux.group = np->name; 331 + maps[idx].data.mux.function = np->name; 332 + idx++; 333 + 334 + dev_dbg(pctrl->dev, "Parsed %pOF with %d pins\n", np, num_pinmux); 335 + ret = 0; 336 + goto done; 337 + 338 + remove_group: 339 + pinctrl_generic_remove_group(pctldev, gsel); 340 + done: 341 + *index = idx; 342 + kfree(configs); 343 + return ret; 344 + } 345 + 346 + static void rzv2m_dt_free_map(struct pinctrl_dev *pctldev, 347 + struct pinctrl_map *map, 348 + unsigned int num_maps) 349 + { 350 + unsigned int i; 351 + 352 + if (!map) 353 + return; 354 + 355 + for (i = 0; i < num_maps; ++i) { 356 + if (map[i].type == PIN_MAP_TYPE_CONFIGS_GROUP || 357 + map[i].type == PIN_MAP_TYPE_CONFIGS_PIN) 358 + kfree(map[i].data.configs.configs); 359 + } 360 + kfree(map); 361 + } 362 + 363 + static int rzv2m_dt_node_to_map(struct pinctrl_dev *pctldev, 364 + struct device_node *np, 365 + struct pinctrl_map **map, 366 + unsigned int *num_maps) 367 + { 368 + struct rzv2m_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); 369 + struct device_node *child; 370 + unsigned int index; 371 + int ret; 372 + 373 + *map = NULL; 374 + *num_maps = 0; 375 + index = 0; 376 + 377 + for_each_child_of_node(np, child) { 378 + ret = rzv2m_dt_subnode_to_map(pctldev, child, map, 379 + num_maps, &index); 380 + if (ret < 0) { 381 + of_node_put(child); 382 + goto done; 383 + } 384 + } 385 + 386 + if (*num_maps == 0) { 387 + ret = rzv2m_dt_subnode_to_map(pctldev, np, map, 388 + num_maps, &index); 389 + if (ret < 0) 390 + goto done; 391 + } 392 + 393 + if (*num_maps) 394 + return 0; 395 + 396 + dev_err(pctrl->dev, "no mapping found in node %pOF\n", np); 397 + ret = -EINVAL; 398 + 399 + done: 400 + if (ret < 0) 401 + rzv2m_dt_free_map(pctldev, *map, *num_maps); 402 + 403 + return ret; 404 + } 405 + 406 + static int rzv2m_validate_gpio_pin(struct rzv2m_pinctrl *pctrl, 407 + u32 cfg, u32 port, u8 bit) 408 + { 409 + u8 pincount = RZV2M_GPIO_PORT_GET_PINCNT(cfg); 410 + u32 port_index = RZV2M_GPIO_PORT_GET_INDEX(cfg); 411 + u32 data; 412 + 413 + if (bit >= pincount || port >= pctrl->data->n_port_pins) 414 + return -EINVAL; 415 + 416 + data = pctrl->data->port_pin_configs[port]; 417 + if (port_index != RZV2M_GPIO_PORT_GET_INDEX(data)) 418 + return -EINVAL; 419 + 420 + return 0; 421 + } 422 + 423 + static void rzv2m_rmw_pin_config(struct rzv2m_pinctrl *pctrl, u32 offset, 424 + u8 shift, u32 mask, u32 val) 425 + { 426 + void __iomem *addr = pctrl->base + offset; 427 + unsigned long flags; 428 + u32 reg; 429 + 430 + spin_lock_irqsave(&pctrl->lock, flags); 431 + reg = readl(addr) & ~(mask << shift); 432 + writel(reg | (val << shift), addr); 433 + spin_unlock_irqrestore(&pctrl->lock, flags); 434 + } 435 + 436 + static int rzv2m_pinctrl_pinconf_get(struct pinctrl_dev *pctldev, 437 + unsigned int _pin, 438 + unsigned long *config) 439 + { 440 + struct rzv2m_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); 441 + enum pin_config_param param = pinconf_to_config_param(*config); 442 + const struct pinctrl_pin_desc *pin = &pctrl->desc.pins[_pin]; 443 + unsigned int *pin_data = pin->drv_data; 444 + unsigned int arg = 0; 445 + u32 port; 446 + u32 cfg; 447 + u8 bit; 448 + u32 val; 449 + 450 + if (!pin_data) 451 + return -EINVAL; 452 + 453 + if (*pin_data & RZV2M_SINGLE_PIN) { 454 + port = RZV2M_SINGLE_PIN_GET_PORT(*pin_data); 455 + cfg = RZV2M_SINGLE_PIN_GET_CFGS(*pin_data); 456 + bit = RZV2M_SINGLE_PIN_GET_BIT(*pin_data); 457 + } else { 458 + cfg = RZV2M_GPIO_PORT_GET_CFGS(*pin_data); 459 + port = RZV2M_PIN_ID_TO_PORT(_pin); 460 + bit = RZV2M_PIN_ID_TO_PIN(_pin); 461 + 462 + if (rzv2m_validate_gpio_pin(pctrl, *pin_data, RZV2M_PIN_ID_TO_PORT(_pin), bit)) 463 + return -EINVAL; 464 + } 465 + 466 + switch (param) { 467 + case PIN_CONFIG_BIAS_DISABLE: 468 + case PIN_CONFIG_BIAS_PULL_UP: 469 + case PIN_CONFIG_BIAS_PULL_DOWN: { 470 + enum pin_config_param bias; 471 + 472 + if (!(cfg & PIN_CFG_BIAS)) 473 + return -EINVAL; 474 + 475 + /* PUPD uses 2-bits per pin */ 476 + bit *= 2; 477 + 478 + switch ((readl(pctrl->base + PUPD(port)) >> bit) & PUPD_MASK) { 479 + case 0: 480 + bias = PIN_CONFIG_BIAS_PULL_DOWN; 481 + break; 482 + case 2: 483 + bias = PIN_CONFIG_BIAS_PULL_UP; 484 + break; 485 + default: 486 + bias = PIN_CONFIG_BIAS_DISABLE; 487 + } 488 + 489 + if (bias != param) 490 + return -EINVAL; 491 + break; 492 + } 493 + 494 + case PIN_CONFIG_DRIVE_STRENGTH_UA: 495 + if (!(cfg & PIN_CFG_DRV)) 496 + return -EINVAL; 497 + 498 + /* DRV uses 2-bits per pin */ 499 + bit *= 2; 500 + 501 + val = (readl(pctrl->base + DRV(port)) >> bit) & DRV_MASK; 502 + 503 + switch (cfg & PIN_CFG_GRP_MASK) { 504 + case PIN_CFG_GRP_1_8V_2: 505 + arg = drv_1_8V_group2_uA[val]; 506 + break; 507 + case PIN_CFG_GRP_1_8V_3: 508 + arg = drv_1_8V_group3_uA[val]; 509 + break; 510 + case PIN_CFG_GRP_SWIO_2: 511 + arg = drv_SWIO_group2_3_3V_uA[val]; 512 + break; 513 + case PIN_CFG_GRP_SWIO_1: 514 + case PIN_CFG_GRP_3_3V: 515 + arg = drv_3_3V_group_uA[val]; 516 + break; 517 + default: 518 + return -EINVAL; 519 + } 520 + 521 + break; 522 + 523 + case PIN_CONFIG_SLEW_RATE: 524 + if (!(cfg & PIN_CFG_SLEW)) 525 + return -EINVAL; 526 + 527 + arg = readl(pctrl->base + SR(port)) & BIT(bit); 528 + break; 529 + 530 + default: 531 + return -ENOTSUPP; 532 + } 533 + 534 + *config = pinconf_to_config_packed(param, arg); 535 + 536 + return 0; 537 + }; 538 + 539 + static int rzv2m_pinctrl_pinconf_set(struct pinctrl_dev *pctldev, 540 + unsigned int _pin, 541 + unsigned long *_configs, 542 + unsigned int num_configs) 543 + { 544 + struct rzv2m_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); 545 + const struct pinctrl_pin_desc *pin = &pctrl->desc.pins[_pin]; 546 + unsigned int *pin_data = pin->drv_data; 547 + enum pin_config_param param; 548 + u32 port; 549 + unsigned int i; 550 + u32 cfg; 551 + u8 bit; 552 + u32 val; 553 + 554 + if (!pin_data) 555 + return -EINVAL; 556 + 557 + if (*pin_data & RZV2M_SINGLE_PIN) { 558 + port = RZV2M_SINGLE_PIN_GET_PORT(*pin_data); 559 + cfg = RZV2M_SINGLE_PIN_GET_CFGS(*pin_data); 560 + bit = RZV2M_SINGLE_PIN_GET_BIT(*pin_data); 561 + } else { 562 + cfg = RZV2M_GPIO_PORT_GET_CFGS(*pin_data); 563 + port = RZV2M_PIN_ID_TO_PORT(_pin); 564 + bit = RZV2M_PIN_ID_TO_PIN(_pin); 565 + 566 + if (rzv2m_validate_gpio_pin(pctrl, *pin_data, RZV2M_PIN_ID_TO_PORT(_pin), bit)) 567 + return -EINVAL; 568 + } 569 + 570 + for (i = 0; i < num_configs; i++) { 571 + param = pinconf_to_config_param(_configs[i]); 572 + switch (param) { 573 + case PIN_CONFIG_BIAS_DISABLE: 574 + case PIN_CONFIG_BIAS_PULL_UP: 575 + case PIN_CONFIG_BIAS_PULL_DOWN: 576 + if (!(cfg & PIN_CFG_BIAS)) 577 + return -EINVAL; 578 + 579 + /* PUPD uses 2-bits per pin */ 580 + bit *= 2; 581 + 582 + switch (param) { 583 + case PIN_CONFIG_BIAS_PULL_DOWN: 584 + val = 0; 585 + break; 586 + case PIN_CONFIG_BIAS_PULL_UP: 587 + val = 2; 588 + break; 589 + default: 590 + val = 1; 591 + } 592 + 593 + rzv2m_rmw_pin_config(pctrl, PUPD(port), bit, PUPD_MASK, val); 594 + break; 595 + 596 + case PIN_CONFIG_DRIVE_STRENGTH_UA: { 597 + unsigned int arg = pinconf_to_config_argument(_configs[i]); 598 + const unsigned int *drv_strengths; 599 + unsigned int index; 600 + 601 + if (!(cfg & PIN_CFG_DRV)) 602 + return -EINVAL; 603 + 604 + switch (cfg & PIN_CFG_GRP_MASK) { 605 + case PIN_CFG_GRP_1_8V_2: 606 + drv_strengths = drv_1_8V_group2_uA; 607 + break; 608 + case PIN_CFG_GRP_1_8V_3: 609 + drv_strengths = drv_1_8V_group3_uA; 610 + break; 611 + case PIN_CFG_GRP_SWIO_2: 612 + drv_strengths = drv_SWIO_group2_3_3V_uA; 613 + break; 614 + case PIN_CFG_GRP_SWIO_1: 615 + case PIN_CFG_GRP_3_3V: 616 + drv_strengths = drv_3_3V_group_uA; 617 + break; 618 + default: 619 + return -EINVAL; 620 + } 621 + 622 + for (index = 0; index < 4; index++) { 623 + if (arg == drv_strengths[index]) 624 + break; 625 + } 626 + if (index >= 4) 627 + return -EINVAL; 628 + 629 + /* DRV uses 2-bits per pin */ 630 + bit *= 2; 631 + 632 + rzv2m_rmw_pin_config(pctrl, DRV(port), bit, DRV_MASK, index); 633 + break; 634 + } 635 + 636 + case PIN_CONFIG_SLEW_RATE: { 637 + unsigned int arg = pinconf_to_config_argument(_configs[i]); 638 + 639 + if (!(cfg & PIN_CFG_SLEW)) 640 + return -EINVAL; 641 + 642 + rzv2m_writel_we(pctrl->base + SR(port), bit, !arg); 643 + break; 644 + } 645 + 646 + default: 647 + return -EOPNOTSUPP; 648 + } 649 + } 650 + 651 + return 0; 652 + } 653 + 654 + static int rzv2m_pinctrl_pinconf_group_set(struct pinctrl_dev *pctldev, 655 + unsigned int group, 656 + unsigned long *configs, 657 + unsigned int num_configs) 658 + { 659 + const unsigned int *pins; 660 + unsigned int i, npins; 661 + int ret; 662 + 663 + ret = pinctrl_generic_get_group_pins(pctldev, group, &pins, &npins); 664 + if (ret) 665 + return ret; 666 + 667 + for (i = 0; i < npins; i++) { 668 + ret = rzv2m_pinctrl_pinconf_set(pctldev, pins[i], configs, 669 + num_configs); 670 + if (ret) 671 + return ret; 672 + } 673 + 674 + return 0; 675 + }; 676 + 677 + static int rzv2m_pinctrl_pinconf_group_get(struct pinctrl_dev *pctldev, 678 + unsigned int group, 679 + unsigned long *config) 680 + { 681 + const unsigned int *pins; 682 + unsigned int i, npins, prev_config = 0; 683 + int ret; 684 + 685 + ret = pinctrl_generic_get_group_pins(pctldev, group, &pins, &npins); 686 + if (ret) 687 + return ret; 688 + 689 + for (i = 0; i < npins; i++) { 690 + ret = rzv2m_pinctrl_pinconf_get(pctldev, pins[i], config); 691 + if (ret) 692 + return ret; 693 + 694 + /* Check config matches previous pins */ 695 + if (i && prev_config != *config) 696 + return -EOPNOTSUPP; 697 + 698 + prev_config = *config; 699 + } 700 + 701 + return 0; 702 + }; 703 + 704 + static const struct pinctrl_ops rzv2m_pinctrl_pctlops = { 705 + .get_groups_count = pinctrl_generic_get_group_count, 706 + .get_group_name = pinctrl_generic_get_group_name, 707 + .get_group_pins = pinctrl_generic_get_group_pins, 708 + .dt_node_to_map = rzv2m_dt_node_to_map, 709 + .dt_free_map = rzv2m_dt_free_map, 710 + }; 711 + 712 + static const struct pinmux_ops rzv2m_pinctrl_pmxops = { 713 + .get_functions_count = pinmux_generic_get_function_count, 714 + .get_function_name = pinmux_generic_get_function_name, 715 + .get_function_groups = pinmux_generic_get_function_groups, 716 + .set_mux = rzv2m_pinctrl_set_mux, 717 + .strict = true, 718 + }; 719 + 720 + static const struct pinconf_ops rzv2m_pinctrl_confops = { 721 + .is_generic = true, 722 + .pin_config_get = rzv2m_pinctrl_pinconf_get, 723 + .pin_config_set = rzv2m_pinctrl_pinconf_set, 724 + .pin_config_group_set = rzv2m_pinctrl_pinconf_group_set, 725 + .pin_config_group_get = rzv2m_pinctrl_pinconf_group_get, 726 + .pin_config_config_dbg_show = pinconf_generic_dump_config, 727 + }; 728 + 729 + static int rzv2m_gpio_request(struct gpio_chip *chip, unsigned int offset) 730 + { 731 + struct rzv2m_pinctrl *pctrl = gpiochip_get_data(chip); 732 + u32 port = RZV2M_PIN_ID_TO_PORT(offset); 733 + u8 bit = RZV2M_PIN_ID_TO_PIN(offset); 734 + int ret; 735 + 736 + ret = pinctrl_gpio_request(chip->base + offset); 737 + if (ret) 738 + return ret; 739 + 740 + rzv2m_pinctrl_set_pfc_mode(pctrl, port, bit, 0); 741 + 742 + return 0; 743 + } 744 + 745 + static void rzv2m_gpio_set_direction(struct rzv2m_pinctrl *pctrl, u32 port, 746 + u8 bit, bool output) 747 + { 748 + rzv2m_writel_we(pctrl->base + OE(port), bit, output); 749 + rzv2m_writel_we(pctrl->base + IE(port), bit, !output); 750 + } 751 + 752 + static int rzv2m_gpio_get_direction(struct gpio_chip *chip, unsigned int offset) 753 + { 754 + struct rzv2m_pinctrl *pctrl = gpiochip_get_data(chip); 755 + u32 port = RZV2M_PIN_ID_TO_PORT(offset); 756 + u8 bit = RZV2M_PIN_ID_TO_PIN(offset); 757 + 758 + if (!(readl(pctrl->base + IE(port)) & BIT(bit))) 759 + return GPIO_LINE_DIRECTION_OUT; 760 + 761 + return GPIO_LINE_DIRECTION_IN; 762 + } 763 + 764 + static int rzv2m_gpio_direction_input(struct gpio_chip *chip, 765 + unsigned int offset) 766 + { 767 + struct rzv2m_pinctrl *pctrl = gpiochip_get_data(chip); 768 + u32 port = RZV2M_PIN_ID_TO_PORT(offset); 769 + u8 bit = RZV2M_PIN_ID_TO_PIN(offset); 770 + 771 + rzv2m_gpio_set_direction(pctrl, port, bit, false); 772 + 773 + return 0; 774 + } 775 + 776 + static void rzv2m_gpio_set(struct gpio_chip *chip, unsigned int offset, 777 + int value) 778 + { 779 + struct rzv2m_pinctrl *pctrl = gpiochip_get_data(chip); 780 + u32 port = RZV2M_PIN_ID_TO_PORT(offset); 781 + u8 bit = RZV2M_PIN_ID_TO_PIN(offset); 782 + 783 + rzv2m_writel_we(pctrl->base + DO(port), bit, !!value); 784 + } 785 + 786 + static int rzv2m_gpio_direction_output(struct gpio_chip *chip, 787 + unsigned int offset, int value) 788 + { 789 + struct rzv2m_pinctrl *pctrl = gpiochip_get_data(chip); 790 + u32 port = RZV2M_PIN_ID_TO_PORT(offset); 791 + u8 bit = RZV2M_PIN_ID_TO_PIN(offset); 792 + 793 + rzv2m_gpio_set(chip, offset, value); 794 + rzv2m_gpio_set_direction(pctrl, port, bit, true); 795 + 796 + return 0; 797 + } 798 + 799 + static int rzv2m_gpio_get(struct gpio_chip *chip, unsigned int offset) 800 + { 801 + struct rzv2m_pinctrl *pctrl = gpiochip_get_data(chip); 802 + u32 port = RZV2M_PIN_ID_TO_PORT(offset); 803 + u8 bit = RZV2M_PIN_ID_TO_PIN(offset); 804 + int direction = rzv2m_gpio_get_direction(chip, offset); 805 + 806 + if (direction == GPIO_LINE_DIRECTION_IN) 807 + return !!(readl(pctrl->base + DI(port)) & BIT(bit)); 808 + else 809 + return !!(readl(pctrl->base + DO(port)) & BIT(bit)); 810 + } 811 + 812 + static void rzv2m_gpio_free(struct gpio_chip *chip, unsigned int offset) 813 + { 814 + pinctrl_gpio_free(chip->base + offset); 815 + 816 + /* 817 + * Set the GPIO as an input to ensure that the next GPIO request won't 818 + * drive the GPIO pin as an output. 819 + */ 820 + rzv2m_gpio_direction_input(chip, offset); 821 + } 822 + 823 + static const char * const rzv2m_gpio_names[] = { 824 + "P0_0", "P0_1", "P0_2", "P0_3", "P0_4", "P0_5", "P0_6", "P0_7", 825 + "P0_8", "P0_9", "P0_10", "P0_11", "P0_12", "P0_13", "P0_14", "P0_15", 826 + "P1_0", "P1_1", "P1_2", "P1_3", "P1_4", "P1_5", "P1_6", "P1_7", 827 + "P1_8", "P1_9", "P1_10", "P1_11", "P1_12", "P1_13", "P1_14", "P1_15", 828 + "P2_0", "P2_1", "P2_2", "P2_3", "P2_4", "P2_5", "P2_6", "P2_7", 829 + "P2_8", "P2_9", "P2_10", "P2_11", "P2_12", "P2_13", "P2_14", "P2_15", 830 + "P3_0", "P3_1", "P3_2", "P3_3", "P3_4", "P3_5", "P3_6", "P3_7", 831 + "P3_8", "P3_9", "P3_10", "P3_11", "P3_12", "P3_13", "P3_14", "P3_15", 832 + "P4_0", "P4_1", "P4_2", "P4_3", "P4_4", "P4_5", "P4_6", "P4_7", 833 + "P4_8", "P4_9", "P4_10", "P4_11", "P4_12", "P4_13", "P4_14", "P4_15", 834 + "P5_0", "P5_1", "P5_2", "P5_3", "P5_4", "P5_5", "P5_6", "P5_7", 835 + "P5_8", "P5_9", "P5_10", "P5_11", "P5_12", "P5_13", "P5_14", "P5_15", 836 + "P6_0", "P6_1", "P6_2", "P6_3", "P6_4", "P6_5", "P6_6", "P6_7", 837 + "P6_8", "P6_9", "P6_10", "P6_11", "P6_12", "P6_13", "P6_14", "P6_15", 838 + "P7_0", "P7_1", "P7_2", "P7_3", "P7_4", "P7_5", "P7_6", "P7_7", 839 + "P7_8", "P7_9", "P7_10", "P7_11", "P7_12", "P7_13", "P7_14", "P7_15", 840 + "P8_0", "P8_1", "P8_2", "P8_3", "P8_4", "P8_5", "P8_6", "P8_7", 841 + "P8_8", "P8_9", "P8_10", "P8_11", "P8_12", "P8_13", "P8_14", "P8_15", 842 + "P9_0", "P9_1", "P9_2", "P9_3", "P9_4", "P9_5", "P9_6", "P9_7", 843 + "P9_8", "P9_9", "P9_10", "P9_11", "P9_12", "P9_13", "P9_14", "P9_15", 844 + "P10_0", "P10_1", "P10_2", "P10_3", "P10_4", "P10_5", "P10_6", "P10_7", 845 + "P10_8", "P10_9", "P10_10", "P10_11", "P10_12", "P10_13", "P10_14", "P10_15", 846 + "P11_0", "P11_1", "P11_2", "P11_3", "P11_4", "P11_5", "P11_6", "P11_7", 847 + "P11_8", "P11_9", "P11_10", "P11_11", "P11_12", "P11_13", "P11_14", "P11_15", 848 + "P12_0", "P12_1", "P12_2", "P12_3", "P12_4", "P12_5", "P12_6", "P12_7", 849 + "P12_8", "P12_9", "P12_10", "P12_11", "P12_12", "P12_13", "P12_14", "P12_15", 850 + "P13_0", "P13_1", "P13_2", "P13_3", "P13_4", "P13_5", "P13_6", "P13_7", 851 + "P13_8", "P13_9", "P13_10", "P13_11", "P13_12", "P13_13", "P13_14", "P13_15", 852 + "P14_0", "P14_1", "P14_2", "P14_3", "P14_4", "P14_5", "P14_6", "P14_7", 853 + "P14_8", "P14_9", "P14_10", "P14_11", "P14_12", "P14_13", "P14_14", "P14_15", 854 + "P15_0", "P15_1", "P15_2", "P15_3", "P15_4", "P15_5", "P15_6", "P15_7", 855 + "P15_8", "P15_9", "P15_10", "P15_11", "P15_12", "P15_13", "P15_14", "P15_15", 856 + "P16_0", "P16_1", "P16_2", "P16_3", "P16_4", "P16_5", "P16_6", "P16_7", 857 + "P16_8", "P16_9", "P16_10", "P16_11", "P16_12", "P16_13", "P16_14", "P16_15", 858 + "P17_0", "P17_1", "P17_2", "P17_3", "P17_4", "P17_5", "P17_6", "P17_7", 859 + "P17_8", "P17_9", "P17_10", "P17_11", "P17_12", "P17_13", "P17_14", "P17_15", 860 + "P18_0", "P18_1", "P18_2", "P18_3", "P18_4", "P18_5", "P18_6", "P18_7", 861 + "P18_8", "P18_9", "P18_10", "P18_11", "P18_12", "P18_13", "P18_14", "P18_15", 862 + "P19_0", "P19_1", "P19_2", "P19_3", "P19_4", "P19_5", "P19_6", "P19_7", 863 + "P19_8", "P19_9", "P19_10", "P19_11", "P19_12", "P19_13", "P19_14", "P19_15", 864 + "P20_0", "P20_1", "P20_2", "P20_3", "P20_4", "P20_5", "P20_6", "P20_7", 865 + "P20_8", "P20_9", "P20_10", "P20_11", "P20_12", "P20_13", "P20_14", "P20_15", 866 + "P21_0", "P21_1", "P21_2", "P21_3", "P21_4", "P21_5", "P21_6", "P21_7", 867 + "P21_8", "P21_9", "P21_10", "P21_11", "P21_12", "P21_13", "P21_14", "P21_15", 868 + }; 869 + 870 + static const u32 rzv2m_gpio_configs[] = { 871 + RZV2M_GPIO_PORT_PACK(14, 0, PIN_CFG_GRP_SWIO_2 | RZV2M_MPXED_PIN_FUNCS), 872 + RZV2M_GPIO_PORT_PACK(16, 1, PIN_CFG_GRP_SWIO_1 | RZV2M_MPXED_PIN_FUNCS), 873 + RZV2M_GPIO_PORT_PACK(8, 2, PIN_CFG_GRP_1_8V_3 | RZV2M_MPXED_PIN_FUNCS), 874 + RZV2M_GPIO_PORT_PACK(16, 3, PIN_CFG_GRP_SWIO_1 | RZV2M_MPXED_PIN_FUNCS), 875 + RZV2M_GPIO_PORT_PACK(8, 4, PIN_CFG_GRP_SWIO_1 | RZV2M_MPXED_PIN_FUNCS), 876 + RZV2M_GPIO_PORT_PACK(4, 5, PIN_CFG_GRP_1_8V_3 | RZV2M_MPXED_PIN_FUNCS), 877 + RZV2M_GPIO_PORT_PACK(12, 6, PIN_CFG_GRP_SWIO_1 | RZV2M_MPXED_PIN_FUNCS), 878 + RZV2M_GPIO_PORT_PACK(6, 7, PIN_CFG_GRP_SWIO_1 | RZV2M_MPXED_PIN_FUNCS), 879 + RZV2M_GPIO_PORT_PACK(8, 8, PIN_CFG_GRP_SWIO_2 | RZV2M_MPXED_PIN_FUNCS), 880 + RZV2M_GPIO_PORT_PACK(8, 9, PIN_CFG_GRP_SWIO_2 | RZV2M_MPXED_PIN_FUNCS), 881 + RZV2M_GPIO_PORT_PACK(9, 10, PIN_CFG_GRP_SWIO_1 | RZV2M_MPXED_PIN_FUNCS), 882 + RZV2M_GPIO_PORT_PACK(9, 11, PIN_CFG_GRP_SWIO_1 | RZV2M_MPXED_PIN_FUNCS), 883 + RZV2M_GPIO_PORT_PACK(4, 12, PIN_CFG_GRP_3_3V | RZV2M_MPXED_PIN_FUNCS), 884 + RZV2M_GPIO_PORT_PACK(12, 13, PIN_CFG_GRP_3_3V | RZV2M_MPXED_PIN_FUNCS), 885 + RZV2M_GPIO_PORT_PACK(8, 14, PIN_CFG_GRP_3_3V | RZV2M_MPXED_PIN_FUNCS), 886 + RZV2M_GPIO_PORT_PACK(16, 15, PIN_CFG_GRP_SWIO_2 | RZV2M_MPXED_PIN_FUNCS), 887 + RZV2M_GPIO_PORT_PACK(14, 16, PIN_CFG_GRP_SWIO_2 | RZV2M_MPXED_PIN_FUNCS), 888 + RZV2M_GPIO_PORT_PACK(1, 17, PIN_CFG_GRP_SWIO_2 | RZV2M_MPXED_PIN_FUNCS), 889 + RZV2M_GPIO_PORT_PACK(0, 18, 0), 890 + RZV2M_GPIO_PORT_PACK(0, 19, 0), 891 + RZV2M_GPIO_PORT_PACK(3, 20, PIN_CFG_GRP_1_8V_2 | PIN_CFG_DRV), 892 + RZV2M_GPIO_PORT_PACK(1, 21, PIN_CFG_GRP_SWIO_1 | PIN_CFG_DRV | PIN_CFG_SLEW), 893 + }; 894 + 895 + static const struct rzv2m_dedicated_configs rzv2m_dedicated_pins[] = { 896 + { "NAWPN", RZV2M_SINGLE_PIN_PACK(0, 897 + (PIN_CFG_GRP_SWIO_2 | PIN_CFG_DRV | PIN_CFG_SLEW)) }, 898 + { "IM0CLK", RZV2M_SINGLE_PIN_PACK(1, 899 + (PIN_CFG_GRP_SWIO_1 | PIN_CFG_DRV | PIN_CFG_SLEW)) }, 900 + { "IM1CLK", RZV2M_SINGLE_PIN_PACK(2, 901 + (PIN_CFG_GRP_SWIO_1 | PIN_CFG_DRV | PIN_CFG_SLEW)) }, 902 + { "DETDO", RZV2M_SINGLE_PIN_PACK(5, 903 + (PIN_CFG_GRP_1_8V_3 | PIN_CFG_DRV | PIN_CFG_SLEW)) }, 904 + { "DETMS", RZV2M_SINGLE_PIN_PACK(6, 905 + (PIN_CFG_GRP_1_8V_3 | PIN_CFG_DRV | PIN_CFG_SLEW)) }, 906 + { "PCRSTOUTB", RZV2M_SINGLE_PIN_PACK(12, 907 + (PIN_CFG_GRP_3_3V | PIN_CFG_DRV | PIN_CFG_SLEW)) }, 908 + { "USPWEN", RZV2M_SINGLE_PIN_PACK(14, 909 + (PIN_CFG_GRP_3_3V | PIN_CFG_DRV | PIN_CFG_SLEW)) }, 910 + }; 911 + 912 + static int rzv2m_gpio_register(struct rzv2m_pinctrl *pctrl) 913 + { 914 + struct device_node *np = pctrl->dev->of_node; 915 + struct gpio_chip *chip = &pctrl->gpio_chip; 916 + const char *name = dev_name(pctrl->dev); 917 + struct of_phandle_args of_args; 918 + int ret; 919 + 920 + ret = of_parse_phandle_with_fixed_args(np, "gpio-ranges", 3, 0, &of_args); 921 + if (ret) { 922 + dev_err(pctrl->dev, "Unable to parse gpio-ranges\n"); 923 + return ret; 924 + } 925 + 926 + if (of_args.args[0] != 0 || of_args.args[1] != 0 || 927 + of_args.args[2] != pctrl->data->n_port_pins) { 928 + dev_err(pctrl->dev, "gpio-ranges does not match selected SOC\n"); 929 + return -EINVAL; 930 + } 931 + 932 + chip->names = pctrl->data->port_pins; 933 + chip->request = rzv2m_gpio_request; 934 + chip->free = rzv2m_gpio_free; 935 + chip->get_direction = rzv2m_gpio_get_direction; 936 + chip->direction_input = rzv2m_gpio_direction_input; 937 + chip->direction_output = rzv2m_gpio_direction_output; 938 + chip->get = rzv2m_gpio_get; 939 + chip->set = rzv2m_gpio_set; 940 + chip->label = name; 941 + chip->parent = pctrl->dev; 942 + chip->owner = THIS_MODULE; 943 + chip->base = -1; 944 + chip->ngpio = of_args.args[2]; 945 + 946 + pctrl->gpio_range.id = 0; 947 + pctrl->gpio_range.pin_base = 0; 948 + pctrl->gpio_range.base = 0; 949 + pctrl->gpio_range.npins = chip->ngpio; 950 + pctrl->gpio_range.name = chip->label; 951 + pctrl->gpio_range.gc = chip; 952 + ret = devm_gpiochip_add_data(pctrl->dev, chip, pctrl); 953 + if (ret) { 954 + dev_err(pctrl->dev, "failed to add GPIO controller\n"); 955 + return ret; 956 + } 957 + 958 + dev_dbg(pctrl->dev, "Registered gpio controller\n"); 959 + 960 + return 0; 961 + } 962 + 963 + static int rzv2m_pinctrl_register(struct rzv2m_pinctrl *pctrl) 964 + { 965 + struct pinctrl_pin_desc *pins; 966 + unsigned int i, j; 967 + u32 *pin_data; 968 + int ret; 969 + 970 + pctrl->desc.name = DRV_NAME; 971 + pctrl->desc.npins = pctrl->data->n_port_pins + pctrl->data->n_dedicated_pins; 972 + pctrl->desc.pctlops = &rzv2m_pinctrl_pctlops; 973 + pctrl->desc.pmxops = &rzv2m_pinctrl_pmxops; 974 + pctrl->desc.confops = &rzv2m_pinctrl_confops; 975 + pctrl->desc.owner = THIS_MODULE; 976 + 977 + pins = devm_kcalloc(pctrl->dev, pctrl->desc.npins, sizeof(*pins), GFP_KERNEL); 978 + if (!pins) 979 + return -ENOMEM; 980 + 981 + pin_data = devm_kcalloc(pctrl->dev, pctrl->desc.npins, 982 + sizeof(*pin_data), GFP_KERNEL); 983 + if (!pin_data) 984 + return -ENOMEM; 985 + 986 + pctrl->pins = pins; 987 + pctrl->desc.pins = pins; 988 + 989 + for (i = 0, j = 0; i < pctrl->data->n_port_pins; i++) { 990 + pins[i].number = i; 991 + pins[i].name = pctrl->data->port_pins[i]; 992 + if (i && !(i % RZV2M_PINS_PER_PORT)) 993 + j++; 994 + pin_data[i] = pctrl->data->port_pin_configs[j]; 995 + pins[i].drv_data = &pin_data[i]; 996 + } 997 + 998 + for (i = 0; i < pctrl->data->n_dedicated_pins; i++) { 999 + unsigned int index = pctrl->data->n_port_pins + i; 1000 + 1001 + pins[index].number = index; 1002 + pins[index].name = pctrl->data->dedicated_pins[i].name; 1003 + pin_data[index] = pctrl->data->dedicated_pins[i].config; 1004 + pins[index].drv_data = &pin_data[index]; 1005 + } 1006 + 1007 + ret = devm_pinctrl_register_and_init(pctrl->dev, &pctrl->desc, pctrl, 1008 + &pctrl->pctl); 1009 + if (ret) { 1010 + dev_err(pctrl->dev, "pinctrl registration failed\n"); 1011 + return ret; 1012 + } 1013 + 1014 + ret = pinctrl_enable(pctrl->pctl); 1015 + if (ret) { 1016 + dev_err(pctrl->dev, "pinctrl enable failed\n"); 1017 + return ret; 1018 + } 1019 + 1020 + ret = rzv2m_gpio_register(pctrl); 1021 + if (ret) { 1022 + dev_err(pctrl->dev, "failed to add GPIO chip: %i\n", ret); 1023 + return ret; 1024 + } 1025 + 1026 + return 0; 1027 + } 1028 + 1029 + static void rzv2m_pinctrl_clk_disable(void *data) 1030 + { 1031 + clk_disable_unprepare(data); 1032 + } 1033 + 1034 + static int rzv2m_pinctrl_probe(struct platform_device *pdev) 1035 + { 1036 + struct rzv2m_pinctrl *pctrl; 1037 + int ret; 1038 + 1039 + pctrl = devm_kzalloc(&pdev->dev, sizeof(*pctrl), GFP_KERNEL); 1040 + if (!pctrl) 1041 + return -ENOMEM; 1042 + 1043 + pctrl->dev = &pdev->dev; 1044 + 1045 + pctrl->data = of_device_get_match_data(&pdev->dev); 1046 + if (!pctrl->data) 1047 + return -EINVAL; 1048 + 1049 + pctrl->base = devm_platform_ioremap_resource(pdev, 0); 1050 + if (IS_ERR(pctrl->base)) 1051 + return PTR_ERR(pctrl->base); 1052 + 1053 + pctrl->clk = devm_clk_get(pctrl->dev, NULL); 1054 + if (IS_ERR(pctrl->clk)) { 1055 + ret = PTR_ERR(pctrl->clk); 1056 + dev_err(pctrl->dev, "failed to get GPIO clk : %i\n", ret); 1057 + return ret; 1058 + } 1059 + 1060 + spin_lock_init(&pctrl->lock); 1061 + 1062 + platform_set_drvdata(pdev, pctrl); 1063 + 1064 + ret = clk_prepare_enable(pctrl->clk); 1065 + if (ret) { 1066 + dev_err(pctrl->dev, "failed to enable GPIO clk: %i\n", ret); 1067 + return ret; 1068 + } 1069 + 1070 + ret = devm_add_action_or_reset(&pdev->dev, rzv2m_pinctrl_clk_disable, 1071 + pctrl->clk); 1072 + if (ret) { 1073 + dev_err(pctrl->dev, 1074 + "failed to register GPIO clk disable action, %i\n", 1075 + ret); 1076 + return ret; 1077 + } 1078 + 1079 + ret = rzv2m_pinctrl_register(pctrl); 1080 + if (ret) 1081 + return ret; 1082 + 1083 + dev_info(pctrl->dev, "%s support registered\n", DRV_NAME); 1084 + return 0; 1085 + } 1086 + 1087 + static struct rzv2m_pinctrl_data r9a09g011_data = { 1088 + .port_pins = rzv2m_gpio_names, 1089 + .port_pin_configs = rzv2m_gpio_configs, 1090 + .dedicated_pins = rzv2m_dedicated_pins, 1091 + .n_port_pins = ARRAY_SIZE(rzv2m_gpio_configs) * RZV2M_PINS_PER_PORT, 1092 + .n_dedicated_pins = ARRAY_SIZE(rzv2m_dedicated_pins), 1093 + }; 1094 + 1095 + static const struct of_device_id rzv2m_pinctrl_of_table[] = { 1096 + { 1097 + .compatible = "renesas,r9a09g011-pinctrl", 1098 + .data = &r9a09g011_data, 1099 + }, 1100 + { /* sentinel */ } 1101 + }; 1102 + 1103 + static struct platform_driver rzv2m_pinctrl_driver = { 1104 + .driver = { 1105 + .name = DRV_NAME, 1106 + .of_match_table = of_match_ptr(rzv2m_pinctrl_of_table), 1107 + }, 1108 + .probe = rzv2m_pinctrl_probe, 1109 + }; 1110 + 1111 + static int __init rzv2m_pinctrl_init(void) 1112 + { 1113 + return platform_driver_register(&rzv2m_pinctrl_driver); 1114 + } 1115 + core_initcall(rzv2m_pinctrl_init); 1116 + 1117 + MODULE_AUTHOR("Phil Edworthy <phil.edworthy@renesas.com>"); 1118 + MODULE_DESCRIPTION("Pin and gpio controller driver for RZ/V2M"); 1119 + MODULE_LICENSE("GPL");
+7 -2
drivers/pinctrl/renesas/sh_pfc.h
··· 325 325 extern const struct sh_pfc_soc_info r8a77995_pinmux_info; 326 326 extern const struct sh_pfc_soc_info r8a779a0_pinmux_info; 327 327 extern const struct sh_pfc_soc_info r8a779f0_pinmux_info; 328 + extern const struct sh_pfc_soc_info r8a779g0_pinmux_info; 328 329 extern const struct sh_pfc_soc_info sh7203_pinmux_info; 329 330 extern const struct sh_pfc_soc_info sh7264_pinmux_info; 330 331 extern const struct sh_pfc_soc_info sh7269_pinmux_info; ··· 493 492 PORT_GP_CFG_1(bank, 11, fn, sfx, cfg) 494 493 #define PORT_GP_12(bank, fn, sfx) PORT_GP_CFG_12(bank, fn, sfx, 0) 495 494 496 - #define PORT_GP_CFG_14(bank, fn, sfx, cfg) \ 495 + #define PORT_GP_CFG_13(bank, fn, sfx, cfg) \ 497 496 PORT_GP_CFG_12(bank, fn, sfx, cfg), \ 498 - PORT_GP_CFG_1(bank, 12, fn, sfx, cfg), \ 497 + PORT_GP_CFG_1(bank, 12, fn, sfx, cfg) 498 + #define PORT_GP_13(bank, fn, sfx) PORT_GP_CFG_13(bank, fn, sfx, 0) 499 + 500 + #define PORT_GP_CFG_14(bank, fn, sfx, cfg) \ 501 + PORT_GP_CFG_13(bank, fn, sfx, cfg), \ 499 502 PORT_GP_CFG_1(bank, 13, fn, sfx, cfg) 500 503 #define PORT_GP_14(bank, fn, sfx) PORT_GP_CFG_14(bank, fn, sfx, 0) 501 504
+2 -4
drivers/pinctrl/samsung/pinctrl-exynos.c
··· 27 27 #include <linux/soc/samsung/exynos-pmu.h> 28 28 #include <linux/soc/samsung/exynos-regs-pmu.h> 29 29 30 - #include <dt-bindings/pinctrl/samsung.h> 31 - 32 30 #include "pinctrl-samsung.h" 33 31 #include "pinctrl-exynos.h" 34 32 ··· 171 173 172 174 con = readl(bank->pctl_base + reg_con); 173 175 con &= ~(mask << shift); 174 - con |= EXYNOS_PIN_FUNC_EINT << shift; 176 + con |= EXYNOS_PIN_CON_FUNC_EINT << shift; 175 177 writel(con, bank->pctl_base + reg_con); 176 178 177 179 raw_spin_unlock_irqrestore(&bank->slock, flags); ··· 194 196 195 197 con = readl(bank->pctl_base + reg_con); 196 198 con &= ~(mask << shift); 197 - con |= EXYNOS_PIN_FUNC_INPUT << shift; 199 + con |= PIN_CON_FUNC_INPUT << shift; 198 200 writel(con, bank->pctl_base + reg_con); 199 201 200 202 raw_spin_unlock_irqrestore(&bank->slock, flags);
+3
drivers/pinctrl/samsung/pinctrl-exynos.h
··· 16 16 #ifndef __PINCTRL_SAMSUNG_EXYNOS_H 17 17 #define __PINCTRL_SAMSUNG_EXYNOS_H 18 18 19 + /* Values for the pin CON register */ 20 + #define EXYNOS_PIN_CON_FUNC_EINT 0xf 21 + 19 22 /* External GPIO and wakeup interrupt related definitions */ 20 23 #define EXYNOS_GPIO_ECON_OFFSET 0x700 21 24 #define EXYNOS_GPIO_EFLTCON_OFFSET 0x800
+1 -3
drivers/pinctrl/samsung/pinctrl-samsung.c
··· 26 26 #include <linux/of_device.h> 27 27 #include <linux/spinlock.h> 28 28 29 - #include <dt-bindings/pinctrl/samsung.h> 30 - 31 29 #include "../core.h" 32 30 #include "pinctrl-samsung.h" 33 31 ··· 612 614 data = readl(reg); 613 615 data &= ~(mask << shift); 614 616 if (!input) 615 - data |= EXYNOS_PIN_FUNC_OUTPUT << shift; 617 + data |= PIN_CON_FUNC_OUTPUT << shift; 616 618 writel(data, reg); 617 619 618 620 return 0;
+8
drivers/pinctrl/samsung/pinctrl-samsung.h
··· 53 53 #define PINCFG_UNPACK_TYPE(cfg) ((cfg) & PINCFG_TYPE_MASK) 54 54 #define PINCFG_UNPACK_VALUE(cfg) (((cfg) & PINCFG_VALUE_MASK) >> \ 55 55 PINCFG_VALUE_SHIFT) 56 + /* 57 + * Values for the pin CON register, choosing pin function. 58 + * The basic set (input and output) are same between: S3C24xx, S3C64xx, S5PV210, 59 + * Exynos ARMv7, Exynos ARMv8, Tesla FSD. 60 + */ 61 + #define PIN_CON_FUNC_INPUT 0x0 62 + #define PIN_CON_FUNC_OUTPUT 0x1 63 + 56 64 /** 57 65 * enum eint_type - possible external interrupt types. 58 66 * @EINT_TYPE_NONE: bank does not support external interrupts
+5 -3
drivers/pinctrl/sunxi/Kconfig
··· 29 29 config PINCTRL_SUN6I_A31_R 30 30 bool "Support for the Allwinner A31 R-PIO" 31 31 default MACH_SUN6I 32 - depends on RESET_CONTROLLER 33 32 select PINCTRL_SUNXI 34 33 35 34 config PINCTRL_SUN8I_A23 ··· 54 55 config PINCTRL_SUN8I_A23_R 55 56 bool "Support for the Allwinner A23 and A33 R-PIO" 56 57 default MACH_SUN8I 57 - depends on RESET_CONTROLLER 58 58 select PINCTRL_SUNXI 59 59 60 60 config PINCTRL_SUN8I_H3 ··· 79 81 config PINCTRL_SUN9I_A80_R 80 82 bool "Support for the Allwinner A80 R-PIO" 81 83 default MACH_SUN9I 82 - depends on RESET_CONTROLLER 84 + select PINCTRL_SUNXI 85 + 86 + config PINCTRL_SUN20I_D1 87 + bool "Support for the Allwinner D1 PIO" 88 + default MACH_SUN8I || (RISCV && ARCH_SUNXI) 83 89 select PINCTRL_SUNXI 84 90 85 91 config PINCTRL_SUN50I_A64
+1
drivers/pinctrl/sunxi/Makefile
··· 20 20 obj-$(CONFIG_PINCTRL_SUN8I_H3) += pinctrl-sun8i-h3.o 21 21 obj-$(CONFIG_PINCTRL_SUN8I_H3_R) += pinctrl-sun8i-h3-r.o 22 22 obj-$(CONFIG_PINCTRL_SUN8I_V3S) += pinctrl-sun8i-v3s.o 23 + obj-$(CONFIG_PINCTRL_SUN20I_D1) += pinctrl-sun20i-d1.o 23 24 obj-$(CONFIG_PINCTRL_SUN50I_H5) += pinctrl-sun50i-h5.o 24 25 obj-$(CONFIG_PINCTRL_SUN50I_H6) += pinctrl-sun50i-h6.o 25 26 obj-$(CONFIG_PINCTRL_SUN50I_H6_R) += pinctrl-sun50i-h6-r.o
+840
drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* 3 + * Allwinner D1 SoC pinctrl driver. 4 + * 5 + * Copyright (c) 2020 wuyan@allwinnertech.com 6 + * Copyright (c) 2021-2022 Samuel Holland <samuel@sholland.org> 7 + */ 8 + 9 + #include <linux/module.h> 10 + #include <linux/platform_device.h> 11 + #include <linux/of.h> 12 + #include <linux/of_device.h> 13 + #include <linux/pinctrl/pinctrl.h> 14 + 15 + #include "pinctrl-sunxi.h" 16 + 17 + static const struct sunxi_desc_pin d1_pins[] = { 18 + /* PB */ 19 + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 0), 20 + SUNXI_FUNCTION(0x0, "gpio_in"), 21 + SUNXI_FUNCTION(0x1, "gpio_out"), 22 + SUNXI_FUNCTION(0x2, "pwm3"), 23 + SUNXI_FUNCTION(0x3, "ir"), /* TX */ 24 + SUNXI_FUNCTION(0x4, "i2c2"), /* SCK */ 25 + SUNXI_FUNCTION(0x5, "spi1"), /* WP */ 26 + SUNXI_FUNCTION(0x6, "uart0"), /* TX */ 27 + SUNXI_FUNCTION(0x7, "uart2"), /* TX */ 28 + SUNXI_FUNCTION(0x8, "spdif"), /* OUT */ 29 + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 0)), 30 + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 1), 31 + SUNXI_FUNCTION(0x0, "gpio_in"), 32 + SUNXI_FUNCTION(0x1, "gpio_out"), 33 + SUNXI_FUNCTION(0x2, "pwm4"), 34 + SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT3 */ 35 + SUNXI_FUNCTION(0x4, "i2c2"), /* SDA */ 36 + SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN3 */ 37 + SUNXI_FUNCTION(0x6, "uart0"), /* RX */ 38 + SUNXI_FUNCTION(0x7, "uart2"), /* RX */ 39 + SUNXI_FUNCTION(0x8, "ir"), /* RX */ 40 + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 1)), 41 + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 2), 42 + SUNXI_FUNCTION(0x0, "gpio_in"), 43 + SUNXI_FUNCTION(0x1, "gpio_out"), 44 + SUNXI_FUNCTION(0x2, "lcd0"), /* D0 */ 45 + SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT2 */ 46 + SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */ 47 + SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN2 */ 48 + SUNXI_FUNCTION(0x6, "lcd0"), /* D18 */ 49 + SUNXI_FUNCTION(0x7, "uart4"), /* TX */ 50 + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 2)), 51 + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 3), 52 + SUNXI_FUNCTION(0x0, "gpio_in"), 53 + SUNXI_FUNCTION(0x1, "gpio_out"), 54 + SUNXI_FUNCTION(0x2, "lcd0"), /* D1 */ 55 + SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT1 */ 56 + SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */ 57 + SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN0 */ 58 + SUNXI_FUNCTION(0x6, "lcd0"), /* D19 */ 59 + SUNXI_FUNCTION(0x7, "uart4"), /* RX */ 60 + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 3)), 61 + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 4), 62 + SUNXI_FUNCTION(0x0, "gpio_in"), 63 + SUNXI_FUNCTION(0x1, "gpio_out"), 64 + SUNXI_FUNCTION(0x2, "lcd0"), /* D8 */ 65 + SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT0 */ 66 + SUNXI_FUNCTION(0x4, "i2c1"), /* SCK */ 67 + SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN1 */ 68 + SUNXI_FUNCTION(0x6, "lcd0"), /* D20 */ 69 + SUNXI_FUNCTION(0x7, "uart5"), /* TX */ 70 + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 4)), 71 + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 5), 72 + SUNXI_FUNCTION(0x0, "gpio_in"), 73 + SUNXI_FUNCTION(0x1, "gpio_out"), 74 + SUNXI_FUNCTION(0x2, "lcd0"), /* D9 */ 75 + SUNXI_FUNCTION(0x3, "i2s2"), /* BCLK */ 76 + SUNXI_FUNCTION(0x4, "i2c1"), /* SDA */ 77 + SUNXI_FUNCTION(0x5, "pwm0"), 78 + SUNXI_FUNCTION(0x6, "lcd0"), /* D21 */ 79 + SUNXI_FUNCTION(0x7, "uart5"), /* RX */ 80 + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 5)), 81 + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 6), 82 + SUNXI_FUNCTION(0x0, "gpio_in"), 83 + SUNXI_FUNCTION(0x1, "gpio_out"), 84 + SUNXI_FUNCTION(0x2, "lcd0"), /* D16 */ 85 + SUNXI_FUNCTION(0x3, "i2s2"), /* LRCK */ 86 + SUNXI_FUNCTION(0x4, "i2c3"), /* SCK */ 87 + SUNXI_FUNCTION(0x5, "pwm1"), 88 + SUNXI_FUNCTION(0x6, "lcd0"), /* D22 */ 89 + SUNXI_FUNCTION(0x7, "uart3"), /* TX */ 90 + SUNXI_FUNCTION(0x8, "bist0"), /* BIST_RESULT0 */ 91 + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 6)), 92 + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 7), 93 + SUNXI_FUNCTION(0x0, "gpio_in"), 94 + SUNXI_FUNCTION(0x1, "gpio_out"), 95 + SUNXI_FUNCTION(0x2, "lcd0"), /* D17 */ 96 + SUNXI_FUNCTION(0x3, "i2s2"), /* MCLK */ 97 + SUNXI_FUNCTION(0x4, "i2c3"), /* SDA */ 98 + SUNXI_FUNCTION(0x5, "ir"), /* RX */ 99 + SUNXI_FUNCTION(0x6, "lcd0"), /* D23 */ 100 + SUNXI_FUNCTION(0x7, "uart3"), /* RX */ 101 + SUNXI_FUNCTION(0x8, "bist1"), /* BIST_RESULT1 */ 102 + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 7)), 103 + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 8), 104 + SUNXI_FUNCTION(0x0, "gpio_in"), 105 + SUNXI_FUNCTION(0x1, "gpio_out"), 106 + SUNXI_FUNCTION(0x2, "dmic"), /* DATA3 */ 107 + SUNXI_FUNCTION(0x3, "pwm5"), 108 + SUNXI_FUNCTION(0x4, "i2c2"), /* SCK */ 109 + SUNXI_FUNCTION(0x5, "spi1"), /* HOLD */ 110 + SUNXI_FUNCTION(0x6, "uart0"), /* TX */ 111 + SUNXI_FUNCTION(0x7, "uart1"), /* TX */ 112 + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 8)), 113 + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 9), 114 + SUNXI_FUNCTION(0x0, "gpio_in"), 115 + SUNXI_FUNCTION(0x1, "gpio_out"), 116 + SUNXI_FUNCTION(0x2, "dmic"), /* DATA2 */ 117 + SUNXI_FUNCTION(0x3, "pwm6"), 118 + SUNXI_FUNCTION(0x4, "i2c2"), /* SDA */ 119 + SUNXI_FUNCTION(0x5, "spi1"), /* MISO */ 120 + SUNXI_FUNCTION(0x6, "uart0"), /* RX */ 121 + SUNXI_FUNCTION(0x7, "uart1"), /* RX */ 122 + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 9)), 123 + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 10), 124 + SUNXI_FUNCTION(0x0, "gpio_in"), 125 + SUNXI_FUNCTION(0x1, "gpio_out"), 126 + SUNXI_FUNCTION(0x2, "dmic"), /* DATA1 */ 127 + SUNXI_FUNCTION(0x3, "pwm7"), 128 + SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */ 129 + SUNXI_FUNCTION(0x5, "spi1"), /* MOSI */ 130 + SUNXI_FUNCTION(0x6, "clk"), /* FANOUT0 */ 131 + SUNXI_FUNCTION(0x7, "uart1"), /* RTS */ 132 + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 10)), 133 + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 11), 134 + SUNXI_FUNCTION(0x0, "gpio_in"), 135 + SUNXI_FUNCTION(0x1, "gpio_out"), 136 + SUNXI_FUNCTION(0x2, "dmic"), /* DATA0 */ 137 + SUNXI_FUNCTION(0x3, "pwm2"), 138 + SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */ 139 + SUNXI_FUNCTION(0x5, "spi1"), /* CLK */ 140 + SUNXI_FUNCTION(0x6, "clk"), /* FANOUT1 */ 141 + SUNXI_FUNCTION(0x7, "uart1"), /* CTS */ 142 + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 11)), 143 + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 12), 144 + SUNXI_FUNCTION(0x0, "gpio_in"), 145 + SUNXI_FUNCTION(0x1, "gpio_out"), 146 + SUNXI_FUNCTION(0x2, "dmic"), /* CLK */ 147 + SUNXI_FUNCTION(0x3, "pwm0"), 148 + SUNXI_FUNCTION(0x4, "spdif"), /* IN */ 149 + SUNXI_FUNCTION(0x5, "spi1"), /* CS0 */ 150 + SUNXI_FUNCTION(0x6, "clk"), /* FANOUT2 */ 151 + SUNXI_FUNCTION(0x7, "ir"), /* RX */ 152 + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 12)), 153 + /* PC */ 154 + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 0), 155 + SUNXI_FUNCTION(0x0, "gpio_in"), 156 + SUNXI_FUNCTION(0x1, "gpio_out"), 157 + SUNXI_FUNCTION(0x2, "uart2"), /* TX */ 158 + SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */ 159 + SUNXI_FUNCTION(0x4, "ledc"), 160 + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 0)), 161 + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 1), 162 + SUNXI_FUNCTION(0x0, "gpio_in"), 163 + SUNXI_FUNCTION(0x1, "gpio_out"), 164 + SUNXI_FUNCTION(0x2, "uart2"), /* RX */ 165 + SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */ 166 + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 1)), 167 + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 2), 168 + SUNXI_FUNCTION(0x0, "gpio_in"), 169 + SUNXI_FUNCTION(0x1, "gpio_out"), 170 + SUNXI_FUNCTION(0x2, "spi0"), /* CLK */ 171 + SUNXI_FUNCTION(0x3, "mmc2"), /* CLK */ 172 + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 2)), 173 + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 3), 174 + SUNXI_FUNCTION(0x0, "gpio_in"), 175 + SUNXI_FUNCTION(0x1, "gpio_out"), 176 + SUNXI_FUNCTION(0x2, "spi0"), /* CS0 */ 177 + SUNXI_FUNCTION(0x3, "mmc2"), /* CMD */ 178 + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 3)), 179 + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 4), 180 + SUNXI_FUNCTION(0x0, "gpio_in"), 181 + SUNXI_FUNCTION(0x1, "gpio_out"), 182 + SUNXI_FUNCTION(0x2, "spi0"), /* MOSI */ 183 + SUNXI_FUNCTION(0x3, "mmc2"), /* D2 */ 184 + SUNXI_FUNCTION(0x4, "boot"), /* SEL0 */ 185 + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 4)), 186 + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 5), 187 + SUNXI_FUNCTION(0x0, "gpio_in"), 188 + SUNXI_FUNCTION(0x1, "gpio_out"), 189 + SUNXI_FUNCTION(0x2, "spi0"), /* MISO */ 190 + SUNXI_FUNCTION(0x3, "mmc2"), /* D1 */ 191 + SUNXI_FUNCTION(0x4, "boot"), /* SEL1 */ 192 + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 5)), 193 + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 6), 194 + SUNXI_FUNCTION(0x0, "gpio_in"), 195 + SUNXI_FUNCTION(0x1, "gpio_out"), 196 + SUNXI_FUNCTION(0x2, "spi0"), /* WP */ 197 + SUNXI_FUNCTION(0x3, "mmc2"), /* D0 */ 198 + SUNXI_FUNCTION(0x4, "uart3"), /* TX */ 199 + SUNXI_FUNCTION(0x5, "i2c3"), /* SCK */ 200 + SUNXI_FUNCTION(0x6, "pll"), /* DBG-CLK */ 201 + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 6)), 202 + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 7), 203 + SUNXI_FUNCTION(0x0, "gpio_in"), 204 + SUNXI_FUNCTION(0x1, "gpio_out"), 205 + SUNXI_FUNCTION(0x2, "spi0"), /* HOLD */ 206 + SUNXI_FUNCTION(0x3, "mmc2"), /* D3 */ 207 + SUNXI_FUNCTION(0x4, "uart3"), /* RX */ 208 + SUNXI_FUNCTION(0x5, "i2c3"), /* SDA */ 209 + SUNXI_FUNCTION(0x6, "tcon"), /* TRIG0 */ 210 + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 7)), 211 + /* PD */ 212 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 0), 213 + SUNXI_FUNCTION(0x0, "gpio_in"), 214 + SUNXI_FUNCTION(0x1, "gpio_out"), 215 + SUNXI_FUNCTION(0x2, "lcd0"), /* D2 */ 216 + SUNXI_FUNCTION(0x3, "lvds0"), /* V0P */ 217 + SUNXI_FUNCTION(0x4, "dsi"), /* D0P */ 218 + SUNXI_FUNCTION(0x5, "i2c0"), /* SCK */ 219 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 0)), 220 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 1), 221 + SUNXI_FUNCTION(0x0, "gpio_in"), 222 + SUNXI_FUNCTION(0x1, "gpio_out"), 223 + SUNXI_FUNCTION(0x2, "lcd0"), /* D3 */ 224 + SUNXI_FUNCTION(0x3, "lvds0"), /* V0N */ 225 + SUNXI_FUNCTION(0x4, "dsi"), /* D0N */ 226 + SUNXI_FUNCTION(0x5, "uart2"), /* TX */ 227 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 1)), 228 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 2), 229 + SUNXI_FUNCTION(0x0, "gpio_in"), 230 + SUNXI_FUNCTION(0x1, "gpio_out"), 231 + SUNXI_FUNCTION(0x2, "lcd0"), /* D4 */ 232 + SUNXI_FUNCTION(0x3, "lvds0"), /* V1P */ 233 + SUNXI_FUNCTION(0x4, "dsi"), /* D1P */ 234 + SUNXI_FUNCTION(0x5, "uart2"), /* RX */ 235 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 2)), 236 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 3), 237 + SUNXI_FUNCTION(0x0, "gpio_in"), 238 + SUNXI_FUNCTION(0x1, "gpio_out"), 239 + SUNXI_FUNCTION(0x2, "lcd0"), /* D5 */ 240 + SUNXI_FUNCTION(0x3, "lvds0"), /* V1N */ 241 + SUNXI_FUNCTION(0x4, "dsi"), /* D1N */ 242 + SUNXI_FUNCTION(0x5, "uart2"), /* RTS */ 243 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 3)), 244 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 4), 245 + SUNXI_FUNCTION(0x0, "gpio_in"), 246 + SUNXI_FUNCTION(0x1, "gpio_out"), 247 + SUNXI_FUNCTION(0x2, "lcd0"), /* D6 */ 248 + SUNXI_FUNCTION(0x3, "lvds0"), /* V2P */ 249 + SUNXI_FUNCTION(0x4, "dsi"), /* CKP */ 250 + SUNXI_FUNCTION(0x5, "uart2"), /* CTS */ 251 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 4)), 252 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 5), 253 + SUNXI_FUNCTION(0x0, "gpio_in"), 254 + SUNXI_FUNCTION(0x1, "gpio_out"), 255 + SUNXI_FUNCTION(0x2, "lcd0"), /* D7 */ 256 + SUNXI_FUNCTION(0x3, "lvds0"), /* V2N */ 257 + SUNXI_FUNCTION(0x4, "dsi"), /* CKN */ 258 + SUNXI_FUNCTION(0x5, "uart5"), /* TX */ 259 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 5)), 260 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 6), 261 + SUNXI_FUNCTION(0x0, "gpio_in"), 262 + SUNXI_FUNCTION(0x1, "gpio_out"), 263 + SUNXI_FUNCTION(0x2, "lcd0"), /* D10 */ 264 + SUNXI_FUNCTION(0x3, "lvds0"), /* CKP */ 265 + SUNXI_FUNCTION(0x4, "dsi"), /* D2P */ 266 + SUNXI_FUNCTION(0x5, "uart5"), /* RX */ 267 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 6)), 268 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 7), 269 + SUNXI_FUNCTION(0x0, "gpio_in"), 270 + SUNXI_FUNCTION(0x1, "gpio_out"), 271 + SUNXI_FUNCTION(0x2, "lcd0"), /* D11 */ 272 + SUNXI_FUNCTION(0x3, "lvds0"), /* CKN */ 273 + SUNXI_FUNCTION(0x4, "dsi"), /* D2N */ 274 + SUNXI_FUNCTION(0x5, "uart4"), /* TX */ 275 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 7)), 276 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 8), 277 + SUNXI_FUNCTION(0x0, "gpio_in"), 278 + SUNXI_FUNCTION(0x1, "gpio_out"), 279 + SUNXI_FUNCTION(0x2, "lcd0"), /* D12 */ 280 + SUNXI_FUNCTION(0x3, "lvds0"), /* V3P */ 281 + SUNXI_FUNCTION(0x4, "dsi"), /* D3P */ 282 + SUNXI_FUNCTION(0x5, "uart4"), /* RX */ 283 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 8)), 284 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 9), 285 + SUNXI_FUNCTION(0x0, "gpio_in"), 286 + SUNXI_FUNCTION(0x1, "gpio_out"), 287 + SUNXI_FUNCTION(0x2, "lcd0"), /* D13 */ 288 + SUNXI_FUNCTION(0x3, "lvds0"), /* V3N */ 289 + SUNXI_FUNCTION(0x4, "dsi"), /* D3N */ 290 + SUNXI_FUNCTION(0x5, "pwm6"), 291 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 9)), 292 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 10), 293 + SUNXI_FUNCTION(0x0, "gpio_in"), 294 + SUNXI_FUNCTION(0x1, "gpio_out"), 295 + SUNXI_FUNCTION(0x2, "lcd0"), /* D14 */ 296 + SUNXI_FUNCTION(0x3, "lvds1"), /* V0P */ 297 + SUNXI_FUNCTION(0x4, "spi1"), /* CS0 */ 298 + SUNXI_FUNCTION(0x5, "uart3"), /* TX */ 299 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 10)), 300 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 11), 301 + SUNXI_FUNCTION(0x0, "gpio_in"), 302 + SUNXI_FUNCTION(0x1, "gpio_out"), 303 + SUNXI_FUNCTION(0x2, "lcd0"), /* D15 */ 304 + SUNXI_FUNCTION(0x3, "lvds1"), /* V0N */ 305 + SUNXI_FUNCTION(0x4, "spi1"), /* CLK */ 306 + SUNXI_FUNCTION(0x5, "uart3"), /* RX */ 307 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 11)), 308 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 12), 309 + SUNXI_FUNCTION(0x0, "gpio_in"), 310 + SUNXI_FUNCTION(0x1, "gpio_out"), 311 + SUNXI_FUNCTION(0x2, "lcd0"), /* D18 */ 312 + SUNXI_FUNCTION(0x3, "lvds1"), /* V1P */ 313 + SUNXI_FUNCTION(0x4, "spi1"), /* MOSI */ 314 + SUNXI_FUNCTION(0x5, "i2c0"), /* SDA */ 315 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 12)), 316 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 13), 317 + SUNXI_FUNCTION(0x0, "gpio_in"), 318 + SUNXI_FUNCTION(0x1, "gpio_out"), 319 + SUNXI_FUNCTION(0x2, "lcd0"), /* D19 */ 320 + SUNXI_FUNCTION(0x3, "lvds1"), /* V1N */ 321 + SUNXI_FUNCTION(0x4, "spi1"), /* MISO */ 322 + SUNXI_FUNCTION(0x5, "uart3"), /* RTS */ 323 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 13)), 324 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 14), 325 + SUNXI_FUNCTION(0x0, "gpio_in"), 326 + SUNXI_FUNCTION(0x1, "gpio_out"), 327 + SUNXI_FUNCTION(0x2, "lcd0"), /* D20 */ 328 + SUNXI_FUNCTION(0x3, "lvds1"), /* V2P */ 329 + SUNXI_FUNCTION(0x4, "spi1"), /* HOLD */ 330 + SUNXI_FUNCTION(0x5, "uart3"), /* CTS */ 331 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 14)), 332 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 15), 333 + SUNXI_FUNCTION(0x0, "gpio_in"), 334 + SUNXI_FUNCTION(0x1, "gpio_out"), 335 + SUNXI_FUNCTION(0x2, "lcd0"), /* D21 */ 336 + SUNXI_FUNCTION(0x3, "lvds1"), /* V2N */ 337 + SUNXI_FUNCTION(0x4, "spi1"), /* WP */ 338 + SUNXI_FUNCTION(0x5, "ir"), /* RX */ 339 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 15)), 340 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 16), 341 + SUNXI_FUNCTION(0x0, "gpio_in"), 342 + SUNXI_FUNCTION(0x1, "gpio_out"), 343 + SUNXI_FUNCTION(0x2, "lcd0"), /* D22 */ 344 + SUNXI_FUNCTION(0x3, "lvds1"), /* CKP */ 345 + SUNXI_FUNCTION(0x4, "dmic"), /* DATA3 */ 346 + SUNXI_FUNCTION(0x5, "pwm0"), 347 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 16)), 348 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 17), 349 + SUNXI_FUNCTION(0x0, "gpio_in"), 350 + SUNXI_FUNCTION(0x1, "gpio_out"), 351 + SUNXI_FUNCTION(0x2, "lcd0"), /* D23 */ 352 + SUNXI_FUNCTION(0x3, "lvds1"), /* CKN */ 353 + SUNXI_FUNCTION(0x4, "dmic"), /* DATA2 */ 354 + SUNXI_FUNCTION(0x5, "pwm1"), 355 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 17)), 356 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 18), 357 + SUNXI_FUNCTION(0x0, "gpio_in"), 358 + SUNXI_FUNCTION(0x1, "gpio_out"), 359 + SUNXI_FUNCTION(0x2, "lcd0"), /* CLK */ 360 + SUNXI_FUNCTION(0x3, "lvds1"), /* V3P */ 361 + SUNXI_FUNCTION(0x4, "dmic"), /* DATA1 */ 362 + SUNXI_FUNCTION(0x5, "pwm2"), 363 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 18)), 364 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 19), 365 + SUNXI_FUNCTION(0x0, "gpio_in"), 366 + SUNXI_FUNCTION(0x1, "gpio_out"), 367 + SUNXI_FUNCTION(0x2, "lcd0"), /* DE */ 368 + SUNXI_FUNCTION(0x3, "lvds1"), /* V3N */ 369 + SUNXI_FUNCTION(0x4, "dmic"), /* DATA0 */ 370 + SUNXI_FUNCTION(0x5, "pwm3"), 371 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 19)), 372 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 20), 373 + SUNXI_FUNCTION(0x0, "gpio_in"), 374 + SUNXI_FUNCTION(0x1, "gpio_out"), 375 + SUNXI_FUNCTION(0x2, "lcd0"), /* HSYNC */ 376 + SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */ 377 + SUNXI_FUNCTION(0x4, "dmic"), /* CLK */ 378 + SUNXI_FUNCTION(0x5, "pwm4"), 379 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 20)), 380 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 21), 381 + SUNXI_FUNCTION(0x0, "gpio_in"), 382 + SUNXI_FUNCTION(0x1, "gpio_out"), 383 + SUNXI_FUNCTION(0x2, "lcd0"), /* VSYNC */ 384 + SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */ 385 + SUNXI_FUNCTION(0x4, "uart1"), /* TX */ 386 + SUNXI_FUNCTION(0x5, "pwm5"), 387 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 21)), 388 + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 22), 389 + SUNXI_FUNCTION(0x0, "gpio_in"), 390 + SUNXI_FUNCTION(0x1, "gpio_out"), 391 + SUNXI_FUNCTION(0x2, "spdif"), /* OUT */ 392 + SUNXI_FUNCTION(0x3, "ir"), /* RX */ 393 + SUNXI_FUNCTION(0x4, "uart1"), /* RX */ 394 + SUNXI_FUNCTION(0x5, "pwm7"), 395 + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 22)), 396 + /* PE */ 397 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 0), 398 + SUNXI_FUNCTION(0x0, "gpio_in"), 399 + SUNXI_FUNCTION(0x1, "gpio_out"), 400 + SUNXI_FUNCTION(0x2, "ncsi0"), /* HSYNC */ 401 + SUNXI_FUNCTION(0x3, "uart2"), /* RTS */ 402 + SUNXI_FUNCTION(0x4, "i2c1"), /* SCK */ 403 + SUNXI_FUNCTION(0x5, "lcd0"), /* HSYNC */ 404 + SUNXI_FUNCTION(0x8, "emac"), /* RXCTL/CRS_DV */ 405 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 0)), 406 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 1), 407 + SUNXI_FUNCTION(0x0, "gpio_in"), 408 + SUNXI_FUNCTION(0x1, "gpio_out"), 409 + SUNXI_FUNCTION(0x2, "ncsi0"), /* VSYNC */ 410 + SUNXI_FUNCTION(0x3, "uart2"), /* CTS */ 411 + SUNXI_FUNCTION(0x4, "i2c1"), /* SDA */ 412 + SUNXI_FUNCTION(0x5, "lcd0"), /* VSYNC */ 413 + SUNXI_FUNCTION(0x8, "emac"), /* RXD0 */ 414 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 1)), 415 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 2), 416 + SUNXI_FUNCTION(0x0, "gpio_in"), 417 + SUNXI_FUNCTION(0x1, "gpio_out"), 418 + SUNXI_FUNCTION(0x2, "ncsi0"), /* PCLK */ 419 + SUNXI_FUNCTION(0x3, "uart2"), /* TX */ 420 + SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */ 421 + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT0 */ 422 + SUNXI_FUNCTION(0x6, "uart0"), /* TX */ 423 + SUNXI_FUNCTION(0x8, "emac"), /* RXD1 */ 424 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 2)), 425 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 3), 426 + SUNXI_FUNCTION(0x0, "gpio_in"), 427 + SUNXI_FUNCTION(0x1, "gpio_out"), 428 + SUNXI_FUNCTION(0x2, "ncsi0"), /* MCLK */ 429 + SUNXI_FUNCTION(0x3, "uart2"), /* RX */ 430 + SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */ 431 + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT1 */ 432 + SUNXI_FUNCTION(0x6, "uart0"), /* RX */ 433 + SUNXI_FUNCTION(0x8, "emac"), /* TXCK */ 434 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 3)), 435 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 4), 436 + SUNXI_FUNCTION(0x0, "gpio_in"), 437 + SUNXI_FUNCTION(0x1, "gpio_out"), 438 + SUNXI_FUNCTION(0x2, "ncsi0"), /* D0 */ 439 + SUNXI_FUNCTION(0x3, "uart4"), /* TX */ 440 + SUNXI_FUNCTION(0x4, "i2c2"), /* SCK */ 441 + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT2 */ 442 + SUNXI_FUNCTION(0x6, "d_jtag"), /* MS */ 443 + SUNXI_FUNCTION(0x7, "r_jtag"), /* MS */ 444 + SUNXI_FUNCTION(0x8, "emac"), /* TXD0 */ 445 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 4)), 446 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 5), 447 + SUNXI_FUNCTION(0x0, "gpio_in"), 448 + SUNXI_FUNCTION(0x1, "gpio_out"), 449 + SUNXI_FUNCTION(0x2, "ncsi0"), /* D1 */ 450 + SUNXI_FUNCTION(0x3, "uart4"), /* RX */ 451 + SUNXI_FUNCTION(0x4, "i2c2"), /* SDA */ 452 + SUNXI_FUNCTION(0x5, "ledc"), 453 + SUNXI_FUNCTION(0x6, "d_jtag"), /* DI */ 454 + SUNXI_FUNCTION(0x7, "r_jtag"), /* DI */ 455 + SUNXI_FUNCTION(0x8, "emac"), /* TXD1 */ 456 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 5)), 457 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 6), 458 + SUNXI_FUNCTION(0x0, "gpio_in"), 459 + SUNXI_FUNCTION(0x1, "gpio_out"), 460 + SUNXI_FUNCTION(0x2, "ncsi0"), /* D2 */ 461 + SUNXI_FUNCTION(0x3, "uart5"), /* TX */ 462 + SUNXI_FUNCTION(0x4, "i2c3"), /* SCK */ 463 + SUNXI_FUNCTION(0x5, "spdif"), /* IN */ 464 + SUNXI_FUNCTION(0x6, "d_jtag"), /* DO */ 465 + SUNXI_FUNCTION(0x7, "r_jtag"), /* DO */ 466 + SUNXI_FUNCTION(0x8, "emac"), /* TXCTL/TXEN */ 467 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 6)), 468 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 7), 469 + SUNXI_FUNCTION(0x0, "gpio_in"), 470 + SUNXI_FUNCTION(0x1, "gpio_out"), 471 + SUNXI_FUNCTION(0x2, "ncsi0"), /* D3 */ 472 + SUNXI_FUNCTION(0x3, "uart5"), /* RX */ 473 + SUNXI_FUNCTION(0x4, "i2c3"), /* SDA */ 474 + SUNXI_FUNCTION(0x5, "spdif"), /* OUT */ 475 + SUNXI_FUNCTION(0x6, "d_jtag"), /* CK */ 476 + SUNXI_FUNCTION(0x7, "r_jtag"), /* CK */ 477 + SUNXI_FUNCTION(0x8, "emac"), /* CK */ 478 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 7)), 479 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 8), 480 + SUNXI_FUNCTION(0x0, "gpio_in"), 481 + SUNXI_FUNCTION(0x1, "gpio_out"), 482 + SUNXI_FUNCTION(0x2, "ncsi0"), /* D4 */ 483 + SUNXI_FUNCTION(0x3, "uart1"), /* RTS */ 484 + SUNXI_FUNCTION(0x4, "pwm2"), 485 + SUNXI_FUNCTION(0x5, "uart3"), /* TX */ 486 + SUNXI_FUNCTION(0x6, "jtag"), /* MS */ 487 + SUNXI_FUNCTION(0x8, "emac"), /* MDC */ 488 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 8)), 489 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 9), 490 + SUNXI_FUNCTION(0x0, "gpio_in"), 491 + SUNXI_FUNCTION(0x1, "gpio_out"), 492 + SUNXI_FUNCTION(0x2, "ncsi0"), /* D5 */ 493 + SUNXI_FUNCTION(0x3, "uart1"), /* CTS */ 494 + SUNXI_FUNCTION(0x4, "pwm3"), 495 + SUNXI_FUNCTION(0x5, "uart3"), /* RX */ 496 + SUNXI_FUNCTION(0x6, "jtag"), /* DI */ 497 + SUNXI_FUNCTION(0x8, "emac"), /* MDIO */ 498 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 9)), 499 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 10), 500 + SUNXI_FUNCTION(0x0, "gpio_in"), 501 + SUNXI_FUNCTION(0x1, "gpio_out"), 502 + SUNXI_FUNCTION(0x2, "ncsi0"), /* D6 */ 503 + SUNXI_FUNCTION(0x3, "uart1"), /* TX */ 504 + SUNXI_FUNCTION(0x4, "pwm4"), 505 + SUNXI_FUNCTION(0x5, "ir"), /* RX */ 506 + SUNXI_FUNCTION(0x6, "jtag"), /* DO */ 507 + SUNXI_FUNCTION(0x8, "emac"), /* EPHY-25M */ 508 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 10)), 509 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 11), 510 + SUNXI_FUNCTION(0x0, "gpio_in"), 511 + SUNXI_FUNCTION(0x1, "gpio_out"), 512 + SUNXI_FUNCTION(0x2, "ncsi0"), /* D7 */ 513 + SUNXI_FUNCTION(0x3, "uart1"), /* RX */ 514 + SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT3 */ 515 + SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN3 */ 516 + SUNXI_FUNCTION(0x6, "jtag"), /* CK */ 517 + SUNXI_FUNCTION(0x8, "emac"), /* TXD2 */ 518 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 11)), 519 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 12), 520 + SUNXI_FUNCTION(0x0, "gpio_in"), 521 + SUNXI_FUNCTION(0x1, "gpio_out"), 522 + SUNXI_FUNCTION(0x2, "i2c2"), /* SCK */ 523 + SUNXI_FUNCTION(0x3, "ncsi0"), /* FIELD */ 524 + SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT2 */ 525 + SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN2 */ 526 + SUNXI_FUNCTION(0x8, "emac"), /* TXD3 */ 527 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 12)), 528 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 13), 529 + SUNXI_FUNCTION(0x0, "gpio_in"), 530 + SUNXI_FUNCTION(0x1, "gpio_out"), 531 + SUNXI_FUNCTION(0x2, "i2c2"), /* SDA */ 532 + SUNXI_FUNCTION(0x3, "pwm5"), 533 + SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT0 */ 534 + SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN1 */ 535 + SUNXI_FUNCTION(0x6, "dmic"), /* DATA3 */ 536 + SUNXI_FUNCTION(0x8, "emac"), /* RXD2 */ 537 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 13)), 538 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 14), 539 + SUNXI_FUNCTION(0x0, "gpio_in"), 540 + SUNXI_FUNCTION(0x1, "gpio_out"), 541 + SUNXI_FUNCTION(0x2, "i2c1"), /* SCK */ 542 + SUNXI_FUNCTION(0x3, "d_jtag"), /* MS */ 543 + SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT1 */ 544 + SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN0 */ 545 + SUNXI_FUNCTION(0x6, "dmic"), /* DATA2 */ 546 + SUNXI_FUNCTION(0x8, "emac"), /* RXD3 */ 547 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 14)), 548 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 15), 549 + SUNXI_FUNCTION(0x0, "gpio_in"), 550 + SUNXI_FUNCTION(0x1, "gpio_out"), 551 + SUNXI_FUNCTION(0x2, "i2c1"), /* SDA */ 552 + SUNXI_FUNCTION(0x3, "d_jtag"), /* DI */ 553 + SUNXI_FUNCTION(0x4, "pwm6"), 554 + SUNXI_FUNCTION(0x5, "i2s0"), /* LRCK */ 555 + SUNXI_FUNCTION(0x6, "dmic"), /* DATA1 */ 556 + SUNXI_FUNCTION(0x8, "emac"), /* RXCK */ 557 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 15)), 558 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 16), 559 + SUNXI_FUNCTION(0x0, "gpio_in"), 560 + SUNXI_FUNCTION(0x1, "gpio_out"), 561 + SUNXI_FUNCTION(0x2, "i2c3"), /* SCK */ 562 + SUNXI_FUNCTION(0x3, "d_jtag"), /* DO */ 563 + SUNXI_FUNCTION(0x4, "pwm7"), 564 + SUNXI_FUNCTION(0x5, "i2s0"), /* BCLK */ 565 + SUNXI_FUNCTION(0x6, "dmic"), /* DATA0 */ 566 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 16)), 567 + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 17), 568 + SUNXI_FUNCTION(0x0, "gpio_in"), 569 + SUNXI_FUNCTION(0x1, "gpio_out"), 570 + SUNXI_FUNCTION(0x2, "i2c3"), /* SDA */ 571 + SUNXI_FUNCTION(0x3, "d_jtag"), /* CK */ 572 + SUNXI_FUNCTION(0x4, "ir"), /* TX */ 573 + SUNXI_FUNCTION(0x5, "i2s0"), /* MCLK */ 574 + SUNXI_FUNCTION(0x6, "dmic"), /* CLK */ 575 + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 17)), 576 + /* PF */ 577 + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 0), 578 + SUNXI_FUNCTION(0x0, "gpio_in"), 579 + SUNXI_FUNCTION(0x1, "gpio_out"), 580 + SUNXI_FUNCTION(0x2, "mmc0"), /* D1 */ 581 + SUNXI_FUNCTION(0x3, "jtag"), /* MS */ 582 + SUNXI_FUNCTION(0x4, "r_jtag"), /* MS */ 583 + SUNXI_FUNCTION(0x5, "i2s2_dout"), /* DOUT1 */ 584 + SUNXI_FUNCTION(0x6, "i2s2_din"), /* DIN0 */ 585 + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 0)), 586 + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 1), 587 + SUNXI_FUNCTION(0x0, "gpio_in"), 588 + SUNXI_FUNCTION(0x1, "gpio_out"), 589 + SUNXI_FUNCTION(0x2, "mmc0"), /* D0 */ 590 + SUNXI_FUNCTION(0x3, "jtag"), /* DI */ 591 + SUNXI_FUNCTION(0x4, "r_jtag"), /* DI */ 592 + SUNXI_FUNCTION(0x5, "i2s2_dout"), /* DOUT0 */ 593 + SUNXI_FUNCTION(0x6, "i2s2_din"), /* DIN1 */ 594 + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 1)), 595 + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 2), 596 + SUNXI_FUNCTION(0x0, "gpio_in"), 597 + SUNXI_FUNCTION(0x1, "gpio_out"), 598 + SUNXI_FUNCTION(0x2, "mmc0"), /* CLK */ 599 + SUNXI_FUNCTION(0x3, "uart0"), /* TX */ 600 + SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */ 601 + SUNXI_FUNCTION(0x5, "ledc"), 602 + SUNXI_FUNCTION(0x6, "spdif"), /* IN */ 603 + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 2)), 604 + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 3), 605 + SUNXI_FUNCTION(0x0, "gpio_in"), 606 + SUNXI_FUNCTION(0x1, "gpio_out"), 607 + SUNXI_FUNCTION(0x2, "mmc0"), /* CMD */ 608 + SUNXI_FUNCTION(0x3, "jtag"), /* DO */ 609 + SUNXI_FUNCTION(0x4, "r_jtag"), /* DO */ 610 + SUNXI_FUNCTION(0x5, "i2s2"), /* BCLK */ 611 + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 3)), 612 + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 4), 613 + SUNXI_FUNCTION(0x0, "gpio_in"), 614 + SUNXI_FUNCTION(0x1, "gpio_out"), 615 + SUNXI_FUNCTION(0x2, "mmc0"), /* D3 */ 616 + SUNXI_FUNCTION(0x3, "uart0"), /* RX */ 617 + SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */ 618 + SUNXI_FUNCTION(0x5, "pwm6"), 619 + SUNXI_FUNCTION(0x6, "ir"), /* TX */ 620 + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 4)), 621 + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 5), 622 + SUNXI_FUNCTION(0x0, "gpio_in"), 623 + SUNXI_FUNCTION(0x1, "gpio_out"), 624 + SUNXI_FUNCTION(0x2, "mmc0"), /* D2 */ 625 + SUNXI_FUNCTION(0x3, "jtag"), /* CK */ 626 + SUNXI_FUNCTION(0x4, "r_jtag"), /* CK */ 627 + SUNXI_FUNCTION(0x5, "i2s2"), /* LRCK */ 628 + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 5)), 629 + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 6), 630 + SUNXI_FUNCTION(0x0, "gpio_in"), 631 + SUNXI_FUNCTION(0x1, "gpio_out"), 632 + SUNXI_FUNCTION(0x3, "spdif"), /* OUT */ 633 + SUNXI_FUNCTION(0x4, "ir"), /* RX */ 634 + SUNXI_FUNCTION(0x5, "i2s2"), /* MCLK */ 635 + SUNXI_FUNCTION(0x6, "pwm5"), 636 + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 6)), 637 + /* PG */ 638 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 0), 639 + SUNXI_FUNCTION(0x0, "gpio_in"), 640 + SUNXI_FUNCTION(0x1, "gpio_out"), 641 + SUNXI_FUNCTION(0x2, "mmc1"), /* CLK */ 642 + SUNXI_FUNCTION(0x3, "uart3"), /* TX */ 643 + SUNXI_FUNCTION(0x4, "emac"), /* RXCTRL/CRS_DV */ 644 + SUNXI_FUNCTION(0x5, "pwm7"), 645 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 0)), 646 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 1), 647 + SUNXI_FUNCTION(0x0, "gpio_in"), 648 + SUNXI_FUNCTION(0x1, "gpio_out"), 649 + SUNXI_FUNCTION(0x2, "mmc1"), /* CMD */ 650 + SUNXI_FUNCTION(0x3, "uart3"), /* RX */ 651 + SUNXI_FUNCTION(0x4, "emac"), /* RXD0 */ 652 + SUNXI_FUNCTION(0x5, "pwm6"), 653 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 1)), 654 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 2), 655 + SUNXI_FUNCTION(0x0, "gpio_in"), 656 + SUNXI_FUNCTION(0x1, "gpio_out"), 657 + SUNXI_FUNCTION(0x2, "mmc1"), /* D0 */ 658 + SUNXI_FUNCTION(0x3, "uart3"), /* RTS */ 659 + SUNXI_FUNCTION(0x4, "emac"), /* RXD1 */ 660 + SUNXI_FUNCTION(0x5, "uart4"), /* TX */ 661 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 2)), 662 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 3), 663 + SUNXI_FUNCTION(0x0, "gpio_in"), 664 + SUNXI_FUNCTION(0x1, "gpio_out"), 665 + SUNXI_FUNCTION(0x2, "mmc1"), /* D1 */ 666 + SUNXI_FUNCTION(0x3, "uart3"), /* CTS */ 667 + SUNXI_FUNCTION(0x4, "emac"), /* TXCK */ 668 + SUNXI_FUNCTION(0x5, "uart4"), /* RX */ 669 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 3)), 670 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 4), 671 + SUNXI_FUNCTION(0x0, "gpio_in"), 672 + SUNXI_FUNCTION(0x1, "gpio_out"), 673 + SUNXI_FUNCTION(0x2, "mmc1"), /* D2 */ 674 + SUNXI_FUNCTION(0x3, "uart5"), /* TX */ 675 + SUNXI_FUNCTION(0x4, "emac"), /* TXD0 */ 676 + SUNXI_FUNCTION(0x5, "pwm5"), 677 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 4)), 678 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 5), 679 + SUNXI_FUNCTION(0x0, "gpio_in"), 680 + SUNXI_FUNCTION(0x1, "gpio_out"), 681 + SUNXI_FUNCTION(0x2, "mmc1"), /* D3 */ 682 + SUNXI_FUNCTION(0x3, "uart5"), /* RX */ 683 + SUNXI_FUNCTION(0x4, "emac"), /* TXD1 */ 684 + SUNXI_FUNCTION(0x5, "pwm4"), 685 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 5)), 686 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 6), 687 + SUNXI_FUNCTION(0x0, "gpio_in"), 688 + SUNXI_FUNCTION(0x1, "gpio_out"), 689 + SUNXI_FUNCTION(0x2, "uart1"), /* TX */ 690 + SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */ 691 + SUNXI_FUNCTION(0x4, "emac"), /* TXD2 */ 692 + SUNXI_FUNCTION(0x5, "pwm1"), 693 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 6)), 694 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 7), 695 + SUNXI_FUNCTION(0x0, "gpio_in"), 696 + SUNXI_FUNCTION(0x1, "gpio_out"), 697 + SUNXI_FUNCTION(0x2, "uart1"), /* RX */ 698 + SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */ 699 + SUNXI_FUNCTION(0x4, "emac"), /* TXD3 */ 700 + SUNXI_FUNCTION(0x5, "spdif"), /* IN */ 701 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 7)), 702 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 8), 703 + SUNXI_FUNCTION(0x0, "gpio_in"), 704 + SUNXI_FUNCTION(0x1, "gpio_out"), 705 + SUNXI_FUNCTION(0x2, "uart1"), /* RTS */ 706 + SUNXI_FUNCTION(0x3, "i2c1"), /* SCK */ 707 + SUNXI_FUNCTION(0x4, "emac"), /* RXD2 */ 708 + SUNXI_FUNCTION(0x5, "uart3"), /* TX */ 709 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 8)), 710 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 9), 711 + SUNXI_FUNCTION(0x0, "gpio_in"), 712 + SUNXI_FUNCTION(0x1, "gpio_out"), 713 + SUNXI_FUNCTION(0x2, "uart1"), /* CTS */ 714 + SUNXI_FUNCTION(0x3, "i2c1"), /* SDA */ 715 + SUNXI_FUNCTION(0x4, "emac"), /* RXD3 */ 716 + SUNXI_FUNCTION(0x5, "uart3"), /* RX */ 717 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 9)), 718 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 10), 719 + SUNXI_FUNCTION(0x0, "gpio_in"), 720 + SUNXI_FUNCTION(0x1, "gpio_out"), 721 + SUNXI_FUNCTION(0x2, "pwm3"), 722 + SUNXI_FUNCTION(0x3, "i2c3"), /* SCK */ 723 + SUNXI_FUNCTION(0x4, "emac"), /* RXCK */ 724 + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT0 */ 725 + SUNXI_FUNCTION(0x6, "ir"), /* RX */ 726 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 10)), 727 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 11), 728 + SUNXI_FUNCTION(0x0, "gpio_in"), 729 + SUNXI_FUNCTION(0x1, "gpio_out"), 730 + SUNXI_FUNCTION(0x2, "i2s1"), /* MCLK */ 731 + SUNXI_FUNCTION(0x3, "i2c3"), /* SDA */ 732 + SUNXI_FUNCTION(0x4, "emac"), /* EPHY-25M */ 733 + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT1 */ 734 + SUNXI_FUNCTION(0x6, "tcon"), /* TRIG0 */ 735 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 11)), 736 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 12), 737 + SUNXI_FUNCTION(0x0, "gpio_in"), 738 + SUNXI_FUNCTION(0x1, "gpio_out"), 739 + SUNXI_FUNCTION(0x2, "i2s1"), /* LRCK */ 740 + SUNXI_FUNCTION(0x3, "i2c0"), /* SCK */ 741 + SUNXI_FUNCTION(0x4, "emac"), /* TXCTL/TXEN */ 742 + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT2 */ 743 + SUNXI_FUNCTION(0x6, "pwm0"), 744 + SUNXI_FUNCTION(0x7, "uart1"), /* TX */ 745 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 12)), 746 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 13), 747 + SUNXI_FUNCTION(0x0, "gpio_in"), 748 + SUNXI_FUNCTION(0x1, "gpio_out"), 749 + SUNXI_FUNCTION(0x2, "i2s1"), /* BCLK */ 750 + SUNXI_FUNCTION(0x3, "i2c0"), /* SDA */ 751 + SUNXI_FUNCTION(0x4, "emac"), /* CLKIN/RXER */ 752 + SUNXI_FUNCTION(0x5, "pwm2"), 753 + SUNXI_FUNCTION(0x6, "ledc"), 754 + SUNXI_FUNCTION(0x7, "uart1"), /* RX */ 755 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 13)), 756 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 14), 757 + SUNXI_FUNCTION(0x0, "gpio_in"), 758 + SUNXI_FUNCTION(0x1, "gpio_out"), 759 + SUNXI_FUNCTION(0x2, "i2s1_din"), /* DIN0 */ 760 + SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */ 761 + SUNXI_FUNCTION(0x4, "emac"), /* MDC */ 762 + SUNXI_FUNCTION(0x5, "i2s1_dout"), /* DOUT1 */ 763 + SUNXI_FUNCTION(0x6, "spi0"), /* WP */ 764 + SUNXI_FUNCTION(0x7, "uart1"), /* RTS */ 765 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 14)), 766 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 15), 767 + SUNXI_FUNCTION(0x0, "gpio_in"), 768 + SUNXI_FUNCTION(0x1, "gpio_out"), 769 + SUNXI_FUNCTION(0x2, "i2s1_dout"), /* DOUT0 */ 770 + SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */ 771 + SUNXI_FUNCTION(0x4, "emac"), /* MDIO */ 772 + SUNXI_FUNCTION(0x5, "i2s1_din"), /* DIN1 */ 773 + SUNXI_FUNCTION(0x6, "spi0"), /* HOLD */ 774 + SUNXI_FUNCTION(0x7, "uart1"), /* CTS */ 775 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 15)), 776 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 16), 777 + SUNXI_FUNCTION(0x0, "gpio_in"), 778 + SUNXI_FUNCTION(0x1, "gpio_out"), 779 + SUNXI_FUNCTION(0x2, "ir"), /* RX */ 780 + SUNXI_FUNCTION(0x3, "tcon"), /* TRIG0 */ 781 + SUNXI_FUNCTION(0x4, "pwm5"), 782 + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT2 */ 783 + SUNXI_FUNCTION(0x6, "spdif"), /* IN */ 784 + SUNXI_FUNCTION(0x7, "ledc"), 785 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 16)), 786 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 17), 787 + SUNXI_FUNCTION(0x0, "gpio_in"), 788 + SUNXI_FUNCTION(0x1, "gpio_out"), 789 + SUNXI_FUNCTION(0x2, "uart2"), /* TX */ 790 + SUNXI_FUNCTION(0x3, "i2c3"), /* SCK */ 791 + SUNXI_FUNCTION(0x4, "pwm7"), 792 + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT0 */ 793 + SUNXI_FUNCTION(0x6, "ir"), /* TX */ 794 + SUNXI_FUNCTION(0x7, "uart0"), /* TX */ 795 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 17)), 796 + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 18), 797 + SUNXI_FUNCTION(0x0, "gpio_in"), 798 + SUNXI_FUNCTION(0x1, "gpio_out"), 799 + SUNXI_FUNCTION(0x2, "uart2"), /* RX */ 800 + SUNXI_FUNCTION(0x3, "i2c3"), /* SDA */ 801 + SUNXI_FUNCTION(0x4, "pwm6"), 802 + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT1 */ 803 + SUNXI_FUNCTION(0x6, "spdif"), /* OUT */ 804 + SUNXI_FUNCTION(0x7, "uart0"), /* RX */ 805 + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 18)), 806 + }; 807 + 808 + static const unsigned int d1_irq_bank_map[] = { 1, 2, 3, 4, 5, 6 }; 809 + 810 + static const struct sunxi_pinctrl_desc d1_pinctrl_data = { 811 + .pins = d1_pins, 812 + .npins = ARRAY_SIZE(d1_pins), 813 + .irq_banks = ARRAY_SIZE(d1_irq_bank_map), 814 + .irq_bank_map = d1_irq_bank_map, 815 + .io_bias_cfg_variant = BIAS_VOLTAGE_PIO_POW_MODE_CTL, 816 + }; 817 + 818 + static int d1_pinctrl_probe(struct platform_device *pdev) 819 + { 820 + unsigned long variant = (unsigned long)of_device_get_match_data(&pdev->dev); 821 + 822 + return sunxi_pinctrl_init_with_variant(pdev, &d1_pinctrl_data, variant); 823 + } 824 + 825 + static const struct of_device_id d1_pinctrl_match[] = { 826 + { 827 + .compatible = "allwinner,sun20i-d1-pinctrl", 828 + .data = (void *)PINCTRL_SUN20I_D1 829 + }, 830 + {} 831 + }; 832 + 833 + static struct platform_driver d1_pinctrl_driver = { 834 + .probe = d1_pinctrl_probe, 835 + .driver = { 836 + .name = "sun20i-d1-pinctrl", 837 + .of_match_table = d1_pinctrl_match, 838 + }, 839 + }; 840 + builtin_platform_driver(d1_pinctrl_driver);
+1
drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c
··· 82 82 .npins = ARRAY_SIZE(a100_r_pins), 83 83 .pin_base = PL_BASE, 84 84 .irq_banks = 1, 85 + .io_bias_cfg_variant = BIAS_VOLTAGE_PIO_POW_MODE_CTL, 85 86 }; 86 87 87 88 static int a100_r_pinctrl_probe(struct platform_device *pdev)
+1 -1
drivers/pinctrl/sunxi/pinctrl-sun50i-a100.c
··· 684 684 .npins = ARRAY_SIZE(a100_pins), 685 685 .irq_banks = 7, 686 686 .irq_bank_map = a100_irq_bank_map, 687 - .io_bias_cfg_variant = BIAS_VOLTAGE_PIO_POW_MODE_SEL, 687 + .io_bias_cfg_variant = BIAS_VOLTAGE_PIO_POW_MODE_CTL, 688 688 }; 689 689 690 690 static int a100_pinctrl_probe(struct platform_device *pdev)
-1
drivers/pinctrl/sunxi/pinctrl-sun50i-a64-r.c
··· 24 24 #include <linux/of_device.h> 25 25 #include <linux/pinctrl/pinctrl.h> 26 26 #include <linux/platform_device.h> 27 - #include <linux/reset.h> 28 27 29 28 #include "pinctrl-sunxi.h" 30 29
+1 -1
drivers/pinctrl/sunxi/pinctrl-sun50i-h6-r.c
··· 16 16 #include <linux/of.h> 17 17 #include <linux/of_device.h> 18 18 #include <linux/pinctrl/pinctrl.h> 19 - #include <linux/reset.h> 20 19 21 20 #include "pinctrl-sunxi.h" 22 21 ··· 106 107 .npins = ARRAY_SIZE(sun50i_h6_r_pins), 107 108 .pin_base = PL_BASE, 108 109 .irq_banks = 2, 110 + .io_bias_cfg_variant = BIAS_VOLTAGE_PIO_POW_MODE_SEL, 109 111 }; 110 112 111 113 static int sun50i_h6_r_pinctrl_probe(struct platform_device *pdev)
-1
drivers/pinctrl/sunxi/pinctrl-sun50i-h616-r.c
··· 12 12 #include <linux/of.h> 13 13 #include <linux/of_device.h> 14 14 #include <linux/pinctrl/pinctrl.h> 15 - #include <linux/reset.h> 16 15 17 16 #include "pinctrl-sunxi.h" 18 17
+1 -1
drivers/pinctrl/sunxi/pinctrl-sun50i-h616.c
··· 525 525 .irq_banks = ARRAY_SIZE(h616_irq_bank_map), 526 526 .irq_bank_map = h616_irq_bank_map, 527 527 .irq_read_needs_mux = true, 528 - .io_bias_cfg_variant = BIAS_VOLTAGE_PIO_POW_MODE_SEL, 528 + .io_bias_cfg_variant = BIAS_VOLTAGE_PIO_POW_MODE_CTL, 529 529 }; 530 530 531 531 static int h616_pinctrl_probe(struct platform_device *pdev)
+1 -21
drivers/pinctrl/sunxi/pinctrl-sun6i-a31-r.c
··· 17 17 #include <linux/of.h> 18 18 #include <linux/of_device.h> 19 19 #include <linux/pinctrl/pinctrl.h> 20 - #include <linux/reset.h> 21 20 22 21 #include "pinctrl-sunxi.h" 23 22 ··· 110 111 111 112 static int sun6i_a31_r_pinctrl_probe(struct platform_device *pdev) 112 113 { 113 - struct reset_control *rstc; 114 - int ret; 115 - 116 - rstc = devm_reset_control_get_exclusive(&pdev->dev, NULL); 117 - if (IS_ERR(rstc)) { 118 - dev_err(&pdev->dev, "Reset controller missing\n"); 119 - return PTR_ERR(rstc); 120 - } 121 - 122 - ret = reset_control_deassert(rstc); 123 - if (ret) 124 - return ret; 125 - 126 - ret = sunxi_pinctrl_init(pdev, 127 - &sun6i_a31_r_pinctrl_data); 128 - 129 - if (ret) 130 - reset_control_assert(rstc); 131 - 132 - return ret; 114 + return sunxi_pinctrl_init(pdev, &sun6i_a31_r_pinctrl_data); 133 115 } 134 116 135 117 static const struct of_device_id sun6i_a31_r_pinctrl_match[] = {
+1 -24
drivers/pinctrl/sunxi/pinctrl-sun8i-a23-r.c
··· 20 20 #include <linux/of.h> 21 21 #include <linux/of_device.h> 22 22 #include <linux/pinctrl/pinctrl.h> 23 - #include <linux/reset.h> 24 23 25 24 #include "pinctrl-sunxi.h" 26 25 ··· 97 98 98 99 static int sun8i_a23_r_pinctrl_probe(struct platform_device *pdev) 99 100 { 100 - struct reset_control *rstc; 101 - int ret; 102 - 103 - rstc = devm_reset_control_get_exclusive(&pdev->dev, NULL); 104 - if (IS_ERR(rstc)) { 105 - ret = PTR_ERR(rstc); 106 - if (ret == -EPROBE_DEFER) 107 - return ret; 108 - dev_err(&pdev->dev, "Reset controller missing err=%d\n", ret); 109 - return ret; 110 - } 111 - 112 - ret = reset_control_deassert(rstc); 113 - if (ret) 114 - return ret; 115 - 116 - ret = sunxi_pinctrl_init(pdev, 117 - &sun8i_a23_r_pinctrl_data); 118 - 119 - if (ret) 120 - reset_control_assert(rstc); 121 - 122 - return ret; 101 + return sunxi_pinctrl_init(pdev, &sun8i_a23_r_pinctrl_data); 123 102 } 124 103 125 104 static const struct of_device_id sun8i_a23_r_pinctrl_match[] = {
-1
drivers/pinctrl/sunxi/pinctrl-sun8i-a83t-r.c
··· 27 27 #include <linux/of_device.h> 28 28 #include <linux/pinctrl/pinctrl.h> 29 29 #include <linux/platform_device.h> 30 - #include <linux/reset.h> 31 30 32 31 #include "pinctrl-sunxi.h" 33 32
-1
drivers/pinctrl/sunxi/pinctrl-sun9i-a80-r.c
··· 14 14 #include <linux/of.h> 15 15 #include <linux/of_device.h> 16 16 #include <linux/pinctrl/pinctrl.h> 17 - #include <linux/reset.h> 18 17 19 18 #include "pinctrl-sunxi.h" 20 19
+116 -40
drivers/pinctrl/sunxi/pinctrl-sunxi.c
··· 46 46 static struct irq_chip sunxi_pinctrl_edge_irq_chip; 47 47 static struct irq_chip sunxi_pinctrl_level_irq_chip; 48 48 49 + /* 50 + * The sunXi PIO registers are organized as a series of banks, with registers 51 + * for each bank in the following order: 52 + * - Mux config 53 + * - Data value 54 + * - Drive level 55 + * - Pull direction 56 + * 57 + * Multiple consecutive registers are used for fields wider than one bit. 58 + * 59 + * The following functions calculate the register and the bit offset to access. 60 + * They take a pin number which is relative to the start of the current device. 61 + */ 62 + static void sunxi_mux_reg(const struct sunxi_pinctrl *pctl, 63 + u32 pin, u32 *reg, u32 *shift, u32 *mask) 64 + { 65 + u32 bank = pin / PINS_PER_BANK; 66 + u32 offset = pin % PINS_PER_BANK * MUX_FIELD_WIDTH; 67 + 68 + *reg = bank * pctl->bank_mem_size + MUX_REGS_OFFSET + 69 + offset / BITS_PER_TYPE(u32) * sizeof(u32); 70 + *shift = offset % BITS_PER_TYPE(u32); 71 + *mask = (BIT(MUX_FIELD_WIDTH) - 1) << *shift; 72 + } 73 + 74 + static void sunxi_data_reg(const struct sunxi_pinctrl *pctl, 75 + u32 pin, u32 *reg, u32 *shift, u32 *mask) 76 + { 77 + u32 bank = pin / PINS_PER_BANK; 78 + u32 offset = pin % PINS_PER_BANK * DATA_FIELD_WIDTH; 79 + 80 + *reg = bank * pctl->bank_mem_size + DATA_REGS_OFFSET + 81 + offset / BITS_PER_TYPE(u32) * sizeof(u32); 82 + *shift = offset % BITS_PER_TYPE(u32); 83 + *mask = (BIT(DATA_FIELD_WIDTH) - 1) << *shift; 84 + } 85 + 86 + static void sunxi_dlevel_reg(const struct sunxi_pinctrl *pctl, 87 + u32 pin, u32 *reg, u32 *shift, u32 *mask) 88 + { 89 + u32 bank = pin / PINS_PER_BANK; 90 + u32 offset = pin % PINS_PER_BANK * pctl->dlevel_field_width; 91 + 92 + *reg = bank * pctl->bank_mem_size + DLEVEL_REGS_OFFSET + 93 + offset / BITS_PER_TYPE(u32) * sizeof(u32); 94 + *shift = offset % BITS_PER_TYPE(u32); 95 + *mask = (BIT(pctl->dlevel_field_width) - 1) << *shift; 96 + } 97 + 98 + static void sunxi_pull_reg(const struct sunxi_pinctrl *pctl, 99 + u32 pin, u32 *reg, u32 *shift, u32 *mask) 100 + { 101 + u32 bank = pin / PINS_PER_BANK; 102 + u32 offset = pin % PINS_PER_BANK * PULL_FIELD_WIDTH; 103 + 104 + *reg = bank * pctl->bank_mem_size + pctl->pull_regs_offset + 105 + offset / BITS_PER_TYPE(u32) * sizeof(u32); 106 + *shift = offset % BITS_PER_TYPE(u32); 107 + *mask = (BIT(PULL_FIELD_WIDTH) - 1) << *shift; 108 + } 109 + 49 110 static struct sunxi_pinctrl_group * 50 111 sunxi_pinctrl_find_group_by_name(struct sunxi_pinctrl *pctl, const char *group) 51 112 { ··· 512 451 .get_group_pins = sunxi_pctrl_get_group_pins, 513 452 }; 514 453 515 - static int sunxi_pconf_reg(unsigned pin, enum pin_config_param param, 516 - u32 *offset, u32 *shift, u32 *mask) 454 + static int sunxi_pconf_reg(const struct sunxi_pinctrl *pctl, 455 + u32 pin, enum pin_config_param param, 456 + u32 *reg, u32 *shift, u32 *mask) 517 457 { 518 458 switch (param) { 519 459 case PIN_CONFIG_DRIVE_STRENGTH: 520 - *offset = sunxi_dlevel_reg(pin); 521 - *shift = sunxi_dlevel_offset(pin); 522 - *mask = DLEVEL_PINS_MASK; 460 + sunxi_dlevel_reg(pctl, pin, reg, shift, mask); 523 461 break; 524 462 525 463 case PIN_CONFIG_BIAS_PULL_UP: 526 464 case PIN_CONFIG_BIAS_PULL_DOWN: 527 465 case PIN_CONFIG_BIAS_DISABLE: 528 - *offset = sunxi_pull_reg(pin); 529 - *shift = sunxi_pull_offset(pin); 530 - *mask = PULL_PINS_MASK; 466 + sunxi_pull_reg(pctl, pin, reg, shift, mask); 531 467 break; 532 468 533 469 default: ··· 539 481 { 540 482 struct sunxi_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); 541 483 enum pin_config_param param = pinconf_to_config_param(*config); 542 - u32 offset, shift, mask, val; 484 + u32 reg, shift, mask, val; 543 485 u16 arg; 544 486 int ret; 545 487 546 488 pin -= pctl->desc->pin_base; 547 489 548 - ret = sunxi_pconf_reg(pin, param, &offset, &shift, &mask); 490 + ret = sunxi_pconf_reg(pctl, pin, param, &reg, &shift, &mask); 549 491 if (ret < 0) 550 492 return ret; 551 493 552 - val = (readl(pctl->membase + offset) >> shift) & mask; 494 + val = (readl(pctl->membase + reg) & mask) >> shift; 553 495 554 496 switch (pinconf_to_config_param(*config)) { 555 497 case PIN_CONFIG_DRIVE_STRENGTH: ··· 605 547 pin -= pctl->desc->pin_base; 606 548 607 549 for (i = 0; i < num_configs; i++) { 550 + u32 arg, reg, shift, mask, val; 608 551 enum pin_config_param param; 609 552 unsigned long flags; 610 - u32 offset, shift, mask, reg; 611 - u32 arg, val; 612 553 int ret; 613 554 614 555 param = pinconf_to_config_param(configs[i]); 615 556 arg = pinconf_to_config_argument(configs[i]); 616 557 617 - ret = sunxi_pconf_reg(pin, param, &offset, &shift, &mask); 558 + ret = sunxi_pconf_reg(pctl, pin, param, &reg, &shift, &mask); 618 559 if (ret < 0) 619 560 return ret; 620 561 ··· 650 593 } 651 594 652 595 raw_spin_lock_irqsave(&pctl->lock, flags); 653 - reg = readl(pctl->membase + offset); 654 - reg &= ~(mask << shift); 655 - writel(reg | val << shift, pctl->membase + offset); 596 + writel((readl(pctl->membase + reg) & ~mask) | val << shift, 597 + pctl->membase + reg); 656 598 raw_spin_unlock_irqrestore(&pctl->lock, flags); 657 599 } /* for each config */ 658 600 ··· 680 624 unsigned pin, 681 625 struct regulator *supply) 682 626 { 683 - unsigned short bank = pin / PINS_PER_BANK; 627 + unsigned short bank; 684 628 unsigned long flags; 685 629 u32 val, reg; 686 630 int uV; ··· 695 639 /* Might be dummy regulator with no voltage set */ 696 640 if (uV == 0) 697 641 return 0; 642 + 643 + pin -= pctl->desc->pin_base; 644 + bank = pin / PINS_PER_BANK; 698 645 699 646 switch (pctl->desc->io_bias_cfg_variant) { 700 647 case BIAS_VOLTAGE_GRP_CONFIG: ··· 716 657 else 717 658 val = 0xD; /* 3.3V */ 718 659 719 - pin -= pctl->desc->pin_base; 720 - 721 660 reg = readl(pctl->membase + sunxi_grp_config_reg(pin)); 722 661 reg &= ~IO_BIAS_MASK; 723 662 writel(reg | val, pctl->membase + sunxi_grp_config_reg(pin)); 724 663 return 0; 664 + case BIAS_VOLTAGE_PIO_POW_MODE_CTL: 665 + val = uV > 1800000 && uV <= 2500000 ? BIT(bank) : 0; 666 + 667 + raw_spin_lock_irqsave(&pctl->lock, flags); 668 + reg = readl(pctl->membase + PIO_POW_MOD_CTL_REG); 669 + reg &= ~BIT(bank); 670 + writel(reg | val, pctl->membase + PIO_POW_MOD_CTL_REG); 671 + raw_spin_unlock_irqrestore(&pctl->lock, flags); 672 + 673 + fallthrough; 725 674 case BIAS_VOLTAGE_PIO_POW_MODE_SEL: 726 675 val = uV <= 1800000 ? 1 : 0; 727 676 ··· 777 710 u8 config) 778 711 { 779 712 struct sunxi_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); 713 + u32 reg, shift, mask; 780 714 unsigned long flags; 781 - u32 val, mask; 715 + 716 + pin -= pctl->desc->pin_base; 717 + sunxi_mux_reg(pctl, pin, &reg, &shift, &mask); 782 718 783 719 raw_spin_lock_irqsave(&pctl->lock, flags); 784 720 785 - pin -= pctl->desc->pin_base; 786 - val = readl(pctl->membase + sunxi_mux_reg(pin)); 787 - mask = MUX_PINS_MASK << sunxi_mux_offset(pin); 788 - writel((val & ~mask) | config << sunxi_mux_offset(pin), 789 - pctl->membase + sunxi_mux_reg(pin)); 721 + writel((readl(pctl->membase + reg) & ~mask) | config << shift, 722 + pctl->membase + reg); 790 723 791 724 raw_spin_unlock_irqrestore(&pctl->lock, flags); 792 725 } ··· 919 852 static int sunxi_pinctrl_gpio_get(struct gpio_chip *chip, unsigned offset) 920 853 { 921 854 struct sunxi_pinctrl *pctl = gpiochip_get_data(chip); 922 - u32 reg = sunxi_data_reg(offset); 923 - u8 index = sunxi_data_offset(offset); 924 855 bool set_mux = pctl->desc->irq_read_needs_mux && 925 856 gpiochip_line_is_irq(chip, offset); 926 857 u32 pin = offset + chip->base; 927 - u32 val; 858 + u32 reg, shift, mask, val; 859 + 860 + sunxi_data_reg(pctl, offset, &reg, &shift, &mask); 928 861 929 862 if (set_mux) 930 863 sunxi_pmx_set(pctl->pctl_dev, pin, SUN4I_FUNC_INPUT); 931 864 932 - val = (readl(pctl->membase + reg) >> index) & DATA_PINS_MASK; 865 + val = (readl(pctl->membase + reg) & mask) >> shift; 933 866 934 867 if (set_mux) 935 868 sunxi_pmx_set(pctl->pctl_dev, pin, SUN4I_FUNC_IRQ); 936 869 937 - return !!val; 870 + return val; 938 871 } 939 872 940 873 static void sunxi_pinctrl_gpio_set(struct gpio_chip *chip, 941 874 unsigned offset, int value) 942 875 { 943 876 struct sunxi_pinctrl *pctl = gpiochip_get_data(chip); 944 - u32 reg = sunxi_data_reg(offset); 945 - u8 index = sunxi_data_offset(offset); 877 + u32 reg, shift, mask, val; 946 878 unsigned long flags; 947 - u32 regval; 879 + 880 + sunxi_data_reg(pctl, offset, &reg, &shift, &mask); 948 881 949 882 raw_spin_lock_irqsave(&pctl->lock, flags); 950 883 951 - regval = readl(pctl->membase + reg); 884 + val = readl(pctl->membase + reg); 952 885 953 886 if (value) 954 - regval |= BIT(index); 887 + val |= mask; 955 888 else 956 - regval &= ~(BIT(index)); 889 + val &= ~mask; 957 890 958 - writel(regval, pctl->membase + reg); 891 + writel(val, pctl->membase + reg); 959 892 960 893 raw_spin_unlock_irqrestore(&pctl->lock, flags); 961 894 } ··· 1299 1232 1300 1233 /* 1301 1234 * Find an upper bound for the maximum number of functions: in 1302 - * the worst case we have gpio_in, gpio_out, irq and up to four 1235 + * the worst case we have gpio_in, gpio_out, irq and up to seven 1303 1236 * special functions per pin, plus one entry for the sentinel. 1304 1237 * We'll reallocate that later anyway. 1305 1238 */ 1306 - pctl->functions = kcalloc(4 * pctl->ngroups + 4, 1239 + pctl->functions = kcalloc(7 * pctl->ngroups + 4, 1307 1240 sizeof(*pctl->functions), 1308 1241 GFP_KERNEL); 1309 1242 if (!pctl->functions) ··· 1496 1429 pctl->dev = &pdev->dev; 1497 1430 pctl->desc = desc; 1498 1431 pctl->variant = variant; 1432 + if (pctl->variant >= PINCTRL_SUN20I_D1) { 1433 + pctl->bank_mem_size = D1_BANK_MEM_SIZE; 1434 + pctl->pull_regs_offset = D1_PULL_REGS_OFFSET; 1435 + pctl->dlevel_field_width = D1_DLEVEL_FIELD_WIDTH; 1436 + } else { 1437 + pctl->bank_mem_size = BANK_MEM_SIZE; 1438 + pctl->pull_regs_offset = PULL_REGS_OFFSET; 1439 + pctl->dlevel_field_width = DLEVEL_FIELD_WIDTH; 1440 + } 1499 1441 1500 1442 pctl->irq_array = devm_kcalloc(&pdev->dev, 1501 1443 IRQ_PER_BANK * pctl->desc->irq_banks,
+20 -89
drivers/pinctrl/sunxi/pinctrl-sunxi.h
··· 36 36 37 37 #define BANK_MEM_SIZE 0x24 38 38 #define MUX_REGS_OFFSET 0x0 39 + #define MUX_FIELD_WIDTH 4 39 40 #define DATA_REGS_OFFSET 0x10 41 + #define DATA_FIELD_WIDTH 1 40 42 #define DLEVEL_REGS_OFFSET 0x14 43 + #define DLEVEL_FIELD_WIDTH 2 41 44 #define PULL_REGS_OFFSET 0x1c 45 + #define PULL_FIELD_WIDTH 2 46 + 47 + #define D1_BANK_MEM_SIZE 0x30 48 + #define D1_DLEVEL_FIELD_WIDTH 4 49 + #define D1_PULL_REGS_OFFSET 0x24 42 50 43 51 #define PINS_PER_BANK 32 44 - #define MUX_PINS_PER_REG 8 45 - #define MUX_PINS_BITS 4 46 - #define MUX_PINS_MASK 0x0f 47 - #define DATA_PINS_PER_REG 32 48 - #define DATA_PINS_BITS 1 49 - #define DATA_PINS_MASK 0x01 50 - #define DLEVEL_PINS_PER_REG 16 51 - #define DLEVEL_PINS_BITS 2 52 - #define DLEVEL_PINS_MASK 0x03 53 - #define PULL_PINS_PER_REG 16 54 - #define PULL_PINS_BITS 2 55 - #define PULL_PINS_MASK 0x03 56 52 57 53 #define IRQ_PER_BANK 32 58 54 ··· 92 96 #define PINCTRL_SUN8I_R40 BIT(8) 93 97 #define PINCTRL_SUN8I_V3 BIT(9) 94 98 #define PINCTRL_SUN8I_V3S BIT(10) 99 + /* Variants below here have an updated register layout. */ 100 + #define PINCTRL_SUN20I_D1 BIT(11) 95 101 96 102 #define PIO_POW_MOD_SEL_REG 0x340 103 + #define PIO_POW_MOD_CTL_REG 0x344 97 104 98 105 enum sunxi_desc_bias_voltage { 99 106 BIAS_VOLTAGE_NONE, ··· 110 111 * register, as seen on H6 SoC, for example. 111 112 */ 112 113 BIAS_VOLTAGE_PIO_POW_MODE_SEL, 114 + /* 115 + * Bias voltage is set through PIO_POW_MOD_SEL_REG 116 + * and PIO_POW_MOD_CTL_REG register, as seen on 117 + * A100 and D1 SoC, for example. 118 + */ 119 + BIAS_VOLTAGE_PIO_POW_MODE_CTL, 113 120 }; 114 121 115 122 struct sunxi_desc_function { ··· 175 170 raw_spinlock_t lock; 176 171 struct pinctrl_dev *pctl_dev; 177 172 unsigned long variant; 173 + u32 bank_mem_size; 174 + u32 pull_regs_offset; 175 + u32 dlevel_field_width; 178 176 }; 179 177 180 178 #define SUNXI_PIN(_pin, ...) \ ··· 222 214 .irqbank = _bank, \ 223 215 .irqnum = _irq, \ 224 216 } 225 - 226 - /* 227 - * The sunXi PIO registers are organized as is: 228 - * 0x00 - 0x0c Muxing values. 229 - * 8 pins per register, each pin having a 4bits value 230 - * 0x10 Pin values 231 - * 32 bits per register, each pin corresponding to one bit 232 - * 0x14 - 0x18 Drive level 233 - * 16 pins per register, each pin having a 2bits value 234 - * 0x1c - 0x20 Pull-Up values 235 - * 16 pins per register, each pin having a 2bits value 236 - * 237 - * This is for the first bank. Each bank will have the same layout, 238 - * with an offset being a multiple of 0x24. 239 - * 240 - * The following functions calculate from the pin number the register 241 - * and the bit offset that we should access. 242 - */ 243 - static inline u32 sunxi_mux_reg(u16 pin) 244 - { 245 - u8 bank = pin / PINS_PER_BANK; 246 - u32 offset = bank * BANK_MEM_SIZE; 247 - offset += MUX_REGS_OFFSET; 248 - offset += pin % PINS_PER_BANK / MUX_PINS_PER_REG * 0x04; 249 - return round_down(offset, 4); 250 - } 251 - 252 - static inline u32 sunxi_mux_offset(u16 pin) 253 - { 254 - u32 pin_num = pin % MUX_PINS_PER_REG; 255 - return pin_num * MUX_PINS_BITS; 256 - } 257 - 258 - static inline u32 sunxi_data_reg(u16 pin) 259 - { 260 - u8 bank = pin / PINS_PER_BANK; 261 - u32 offset = bank * BANK_MEM_SIZE; 262 - offset += DATA_REGS_OFFSET; 263 - offset += pin % PINS_PER_BANK / DATA_PINS_PER_REG * 0x04; 264 - return round_down(offset, 4); 265 - } 266 - 267 - static inline u32 sunxi_data_offset(u16 pin) 268 - { 269 - u32 pin_num = pin % DATA_PINS_PER_REG; 270 - return pin_num * DATA_PINS_BITS; 271 - } 272 - 273 - static inline u32 sunxi_dlevel_reg(u16 pin) 274 - { 275 - u8 bank = pin / PINS_PER_BANK; 276 - u32 offset = bank * BANK_MEM_SIZE; 277 - offset += DLEVEL_REGS_OFFSET; 278 - offset += pin % PINS_PER_BANK / DLEVEL_PINS_PER_REG * 0x04; 279 - return round_down(offset, 4); 280 - } 281 - 282 - static inline u32 sunxi_dlevel_offset(u16 pin) 283 - { 284 - u32 pin_num = pin % DLEVEL_PINS_PER_REG; 285 - return pin_num * DLEVEL_PINS_BITS; 286 - } 287 - 288 - static inline u32 sunxi_pull_reg(u16 pin) 289 - { 290 - u8 bank = pin / PINS_PER_BANK; 291 - u32 offset = bank * BANK_MEM_SIZE; 292 - offset += PULL_REGS_OFFSET; 293 - offset += pin % PINS_PER_BANK / PULL_PINS_PER_REG * 0x04; 294 - return round_down(offset, 4); 295 - } 296 - 297 - static inline u32 sunxi_pull_offset(u16 pin) 298 - { 299 - u32 pin_num = pin % PULL_PINS_PER_REG; 300 - return pin_num * PULL_PINS_BITS; 301 - } 302 217 303 218 static inline u32 sunxi_irq_hw_bank_num(const struct sunxi_pinctrl_desc *desc, u8 bank) 304 219 {
+1 -1
include/dt-bindings/pinctrl/r7s9210-pinctrl.h
··· 42 42 /* 43 43 * Convert a port and pin label to its global pin index 44 44 */ 45 - #define RZA2_PIN(port, pin) ((port) * RZA2_PINS_PER_PORT + (pin)) 45 + #define RZA2_PIN(port, pin) ((port) * RZA2_PINS_PER_PORT + (pin)) 46 46 47 47 #endif /* __DT_BINDINGS_PINCTRL_RENESAS_RZA2_H */
+1 -1
include/dt-bindings/pinctrl/rzg2l-pinctrl.h
··· 18 18 #define RZG2L_PORT_PINMUX(b, p, f) ((b) * RZG2L_PINS_PER_PORT + (p) | ((f) << 16)) 19 19 20 20 /* Convert a port and pin label to its global pin index */ 21 - #define RZG2L_GPIO(port, pin) ((port) * RZG2L_PINS_PER_PORT + (pin)) 21 + #define RZG2L_GPIO(port, pin) ((port) * RZG2L_PINS_PER_PORT + (pin)) 22 22 23 23 #endif /* __DT_BINDINGS_RZG2L_PINCTRL_H */
+23
include/dt-bindings/pinctrl/rzv2m-pinctrl.h
··· 1 + /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ 2 + /* 3 + * This header provides constants for Renesas RZ/V2M pinctrl bindings. 4 + * 5 + * Copyright (C) 2022 Renesas Electronics Corp. 6 + * 7 + */ 8 + 9 + #ifndef __DT_BINDINGS_RZV2M_PINCTRL_H 10 + #define __DT_BINDINGS_RZV2M_PINCTRL_H 11 + 12 + #define RZV2M_PINS_PER_PORT 16 13 + 14 + /* 15 + * Create the pin index from its bank and position numbers and store in 16 + * the upper 16 bits the alternate function identifier 17 + */ 18 + #define RZV2M_PORT_PINMUX(b, p, f) ((b) * RZV2M_PINS_PER_PORT + (p) | ((f) << 16)) 19 + 20 + /* Convert a port and pin label to its global pin index */ 21 + #define RZV2M_GPIO(port, pin) ((port) * RZV2M_PINS_PER_PORT + (pin)) 22 + 23 + #endif /* __DT_BINDINGS_RZV2M_PINCTRL_H */
+5
include/linux/firmware/xlnx-zynqmp.h
··· 369 369 PM_PINCTRL_DRIVE_STRENGTH_12MA = 3, 370 370 }; 371 371 372 + enum pm_pinctrl_tri_state { 373 + PM_PINCTRL_TRI_STATE_DISABLE = 0, 374 + PM_PINCTRL_TRI_STATE_ENABLE = 1, 375 + }; 376 + 372 377 enum zynqmp_pm_shutdown_type { 373 378 ZYNQMP_PM_SHUTDOWN_TYPE_SHUTDOWN = 0, 374 379 ZYNQMP_PM_SHUTDOWN_TYPE_RESET = 1,
+20
include/linux/pinctrl/pinctrl.h
··· 27 27 struct device_node; 28 28 29 29 /** 30 + * struct pingroup - provides information on pingroup 31 + * @name: a name for pingroup 32 + * @pins: an array of pins in the pingroup 33 + * @npins: number of pins in the pingroup 34 + */ 35 + struct pingroup { 36 + const char *name; 37 + const unsigned int *pins; 38 + size_t npins; 39 + }; 40 + 41 + /* Convenience macro to define a single named or anonymous pingroup */ 42 + #define PINCTRL_PINGROUP(_name, _pins, _npins) \ 43 + (struct pingroup){ \ 44 + .name = _name, \ 45 + .pins = _pins, \ 46 + .npins = _npins, \ 47 + } 48 + 49 + /** 30 50 * struct pinctrl_pin_desc - boards/machines provide information on their 31 51 * pins, pads or other muxable units in this struct 32 52 * @number: unique pin number from the global pin number space