0001
0002
0003
0004
0005
0006
0007 #include <linux/err.h>
0008 #include <linux/init.h>
0009 #include <linux/of_device.h>
0010 #include <linux/pinctrl/pinctrl.h>
0011 #include <linux/platform_device.h>
0012
0013 #include "pinctrl-imx.h"
0014
0015 enum imxrt1170_pads {
0016 IMXRT1170_PAD_RESERVE0,
0017 IMXRT1170_PAD_RESERVE1,
0018 IMXRT1170_PAD_RESERVE2,
0019 IMXRT1170_PAD_RESERVE3,
0020 IMXRT1170_PAD_EMC_B1_00,
0021 IMXRT1170_PAD_EMC_B1_01,
0022 IMXRT1170_PAD_EMC_B1_02,
0023 IMXRT1170_PAD_EMC_B1_03,
0024 IMXRT1170_PAD_EMC_B1_04,
0025 IMXRT1170_PAD_EMC_B1_05,
0026 IMXRT1170_PAD_EMC_B1_06,
0027 IMXRT1170_PAD_EMC_B1_07,
0028 IMXRT1170_PAD_EMC_B1_08,
0029 IMXRT1170_PAD_EMC_B1_09,
0030 IMXRT1170_PAD_EMC_B1_10,
0031 IMXRT1170_PAD_EMC_B1_11,
0032 IMXRT1170_PAD_EMC_B1_12,
0033 IMXRT1170_PAD_EMC_B1_13,
0034 IMXRT1170_PAD_EMC_B1_14,
0035 IMXRT1170_PAD_EMC_B1_15,
0036 IMXRT1170_PAD_EMC_B1_16,
0037 IMXRT1170_PAD_EMC_B1_17,
0038 IMXRT1170_PAD_EMC_B1_18,
0039 IMXRT1170_PAD_EMC_B1_19,
0040 IMXRT1170_PAD_EMC_B1_20,
0041 IMXRT1170_PAD_EMC_B1_21,
0042 IMXRT1170_PAD_EMC_B1_22,
0043 IMXRT1170_PAD_EMC_B1_23,
0044 IMXRT1170_PAD_EMC_B1_24,
0045 IMXRT1170_PAD_EMC_B1_25,
0046 IMXRT1170_PAD_EMC_B1_26,
0047 IMXRT1170_PAD_EMC_B1_27,
0048 IMXRT1170_PAD_EMC_B1_28,
0049 IMXRT1170_PAD_EMC_B1_29,
0050 IMXRT1170_PAD_EMC_B1_30,
0051 IMXRT1170_PAD_EMC_B1_31,
0052 IMXRT1170_PAD_EMC_B1_32,
0053 IMXRT1170_PAD_EMC_B1_33,
0054 IMXRT1170_PAD_EMC_B1_34,
0055 IMXRT1170_PAD_EMC_B1_35,
0056 IMXRT1170_PAD_EMC_B1_36,
0057 IMXRT1170_PAD_EMC_B1_37,
0058 IMXRT1170_PAD_EMC_B1_38,
0059 IMXRT1170_PAD_EMC_B1_39,
0060 IMXRT1170_PAD_EMC_B1_40,
0061 IMXRT1170_PAD_EMC_B1_41,
0062 IMXRT1170_PAD_EMC_B2_00,
0063 IMXRT1170_PAD_EMC_B2_01,
0064 IMXRT1170_PAD_EMC_B2_02,
0065 IMXRT1170_PAD_EMC_B2_03,
0066 IMXRT1170_PAD_EMC_B2_04,
0067 IMXRT1170_PAD_EMC_B2_05,
0068 IMXRT1170_PAD_EMC_B2_06,
0069 IMXRT1170_PAD_EMC_B2_07,
0070 IMXRT1170_PAD_EMC_B2_08,
0071 IMXRT1170_PAD_EMC_B2_09,
0072 IMXRT1170_PAD_EMC_B2_10,
0073 IMXRT1170_PAD_EMC_B2_11,
0074 IMXRT1170_PAD_EMC_B2_12,
0075 IMXRT1170_PAD_EMC_B2_13,
0076 IMXRT1170_PAD_EMC_B2_14,
0077 IMXRT1170_PAD_EMC_B2_15,
0078 IMXRT1170_PAD_EMC_B2_16,
0079 IMXRT1170_PAD_EMC_B2_17,
0080 IMXRT1170_PAD_EMC_B2_18,
0081 IMXRT1170_PAD_EMC_B2_19,
0082 IMXRT1170_PAD_EMC_B2_20,
0083 IMXRT1170_PAD_AD_00,
0084 IMXRT1170_PAD_AD_01,
0085 IMXRT1170_PAD_AD_02,
0086 IMXRT1170_PAD_AD_03,
0087 IMXRT1170_PAD_AD_04,
0088 IMXRT1170_PAD_AD_05,
0089 IMXRT1170_PAD_AD_06,
0090 IMXRT1170_PAD_AD_07,
0091 IMXRT1170_PAD_AD_08,
0092 IMXRT1170_PAD_AD_09,
0093 IMXRT1170_PAD_AD_10,
0094 IMXRT1170_PAD_AD_11,
0095 IMXRT1170_PAD_AD_12,
0096 IMXRT1170_PAD_AD_13,
0097 IMXRT1170_PAD_AD_14,
0098 IMXRT1170_PAD_AD_15,
0099 IMXRT1170_PAD_AD_16,
0100 IMXRT1170_PAD_AD_17,
0101 IMXRT1170_PAD_AD_18,
0102 IMXRT1170_PAD_AD_19,
0103 IMXRT1170_PAD_AD_20,
0104 IMXRT1170_PAD_AD_21,
0105 IMXRT1170_PAD_AD_22,
0106 IMXRT1170_PAD_AD_23,
0107 IMXRT1170_PAD_AD_24,
0108 IMXRT1170_PAD_AD_25,
0109 IMXRT1170_PAD_AD_26,
0110 IMXRT1170_PAD_AD_27,
0111 IMXRT1170_PAD_AD_28,
0112 IMXRT1170_PAD_AD_29,
0113 IMXRT1170_PAD_AD_30,
0114 IMXRT1170_PAD_AD_31,
0115 IMXRT1170_PAD_AD_32,
0116 IMXRT1170_PAD_AD_33,
0117 IMXRT1170_PAD_AD_34,
0118 IMXRT1170_PAD_AD_35,
0119 IMXRT1170_PAD_SD_B1_00,
0120 IMXRT1170_PAD_SD_B1_01,
0121 IMXRT1170_PAD_SD_B1_02,
0122 IMXRT1170_PAD_SD_B1_03,
0123 IMXRT1170_PAD_SD_B1_04,
0124 IMXRT1170_PAD_SD_B1_05,
0125 IMXRT1170_PAD_SD_B2_00,
0126 IMXRT1170_PAD_SD_B2_01,
0127 IMXRT1170_PAD_SD_B2_02,
0128 IMXRT1170_PAD_SD_B2_03,
0129 IMXRT1170_PAD_SD_B2_04,
0130 IMXRT1170_PAD_SD_B2_05,
0131 IMXRT1170_PAD_SD_B2_06,
0132 IMXRT1170_PAD_SD_B2_07,
0133 IMXRT1170_PAD_SD_B2_08,
0134 IMXRT1170_PAD_SD_B2_09,
0135 IMXRT1170_PAD_SD_B2_10,
0136 IMXRT1170_PAD_SD_B2_11,
0137 IMXRT1170_PAD_DISP_B1_00,
0138 IMXRT1170_PAD_DISP_B1_01,
0139 IMXRT1170_PAD_DISP_B1_02,
0140 IMXRT1170_PAD_DISP_B1_03,
0141 IMXRT1170_PAD_DISP_B1_04,
0142 IMXRT1170_PAD_DISP_B1_05,
0143 IMXRT1170_PAD_DISP_B1_06,
0144 IMXRT1170_PAD_DISP_B1_07,
0145 IMXRT1170_PAD_DISP_B1_08,
0146 IMXRT1170_PAD_DISP_B1_09,
0147 IMXRT1170_PAD_DISP_B1_10,
0148 IMXRT1170_PAD_DISP_B1_11,
0149 IMXRT1170_PAD_DISP_B2_00,
0150 IMXRT1170_PAD_DISP_B2_01,
0151 IMXRT1170_PAD_DISP_B2_02,
0152 IMXRT1170_PAD_DISP_B2_03,
0153 IMXRT1170_PAD_DISP_B2_04,
0154 IMXRT1170_PAD_DISP_B2_05,
0155 IMXRT1170_PAD_DISP_B2_06,
0156 IMXRT1170_PAD_DISP_B2_07,
0157 IMXRT1170_PAD_DISP_B2_08,
0158 IMXRT1170_PAD_DISP_B2_09,
0159 IMXRT1170_PAD_DISP_B2_10,
0160 IMXRT1170_PAD_DISP_B2_11,
0161 IMXRT1170_PAD_DISP_B2_12,
0162 IMXRT1170_PAD_DISP_B2_13,
0163 IMXRT1170_PAD_DISP_B2_14,
0164 IMXRT1170_PAD_DISP_B2_15,
0165 };
0166
0167
0168 static const struct pinctrl_pin_desc imxrt1170_pinctrl_pads[] = {
0169 IMX_PINCTRL_PIN(IMXRT1170_PAD_RESERVE0),
0170 IMX_PINCTRL_PIN(IMXRT1170_PAD_RESERVE1),
0171 IMX_PINCTRL_PIN(IMXRT1170_PAD_RESERVE2),
0172 IMX_PINCTRL_PIN(IMXRT1170_PAD_RESERVE3),
0173 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_00),
0174 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_01),
0175 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_02),
0176 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_03),
0177 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_04),
0178 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_05),
0179 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_06),
0180 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_07),
0181 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_08),
0182 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_09),
0183 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_10),
0184 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_11),
0185 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_12),
0186 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_13),
0187 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_14),
0188 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_15),
0189 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_16),
0190 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_17),
0191 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_18),
0192 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_19),
0193 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_20),
0194 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_21),
0195 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_22),
0196 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_23),
0197 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_24),
0198 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_25),
0199 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_26),
0200 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_27),
0201 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_28),
0202 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_29),
0203 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_30),
0204 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_31),
0205 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_32),
0206 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_33),
0207 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_34),
0208 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_35),
0209 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_36),
0210 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_37),
0211 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_38),
0212 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_39),
0213 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_40),
0214 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_41),
0215 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_00),
0216 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_01),
0217 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_02),
0218 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_03),
0219 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_04),
0220 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_05),
0221 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_06),
0222 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_07),
0223 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_08),
0224 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_09),
0225 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_10),
0226 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_11),
0227 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_12),
0228 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_13),
0229 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_14),
0230 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_15),
0231 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_16),
0232 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_17),
0233 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_18),
0234 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_19),
0235 IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_20),
0236 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_00),
0237 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_01),
0238 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_02),
0239 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_03),
0240 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_04),
0241 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_05),
0242 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_06),
0243 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_07),
0244 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_08),
0245 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_09),
0246 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_10),
0247 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_11),
0248 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_12),
0249 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_13),
0250 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_14),
0251 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_15),
0252 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_16),
0253 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_17),
0254 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_18),
0255 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_19),
0256 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_20),
0257 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_21),
0258 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_22),
0259 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_23),
0260 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_24),
0261 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_25),
0262 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_26),
0263 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_27),
0264 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_28),
0265 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_29),
0266 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_30),
0267 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_31),
0268 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_32),
0269 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_33),
0270 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_34),
0271 IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_35),
0272 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B1_00),
0273 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B1_01),
0274 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B1_02),
0275 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B1_03),
0276 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B1_04),
0277 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B1_05),
0278 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_00),
0279 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_01),
0280 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_02),
0281 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_03),
0282 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_04),
0283 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_05),
0284 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_06),
0285 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_07),
0286 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_08),
0287 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_09),
0288 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_10),
0289 IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_11),
0290 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_00),
0291 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_01),
0292 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_02),
0293 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_03),
0294 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_04),
0295 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_05),
0296 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_06),
0297 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_07),
0298 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_08),
0299 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_09),
0300 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_10),
0301 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_11),
0302 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_00),
0303 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_01),
0304 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_02),
0305 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_03),
0306 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_04),
0307 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_05),
0308 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_06),
0309 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_07),
0310 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_08),
0311 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_09),
0312 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_10),
0313 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_11),
0314 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_12),
0315 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_13),
0316 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_14),
0317 IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_15),
0318 };
0319
0320 static const struct imx_pinctrl_soc_info imxrt1170_pinctrl_info = {
0321 .pins = imxrt1170_pinctrl_pads,
0322 .npins = ARRAY_SIZE(imxrt1170_pinctrl_pads),
0323 .gpr_compatible = "fsl,imxrt1170-iomuxc-gpr",
0324 };
0325
0326 static const struct of_device_id imxrt1170_pinctrl_of_match[] = {
0327 { .compatible = "fsl,imxrt1170-iomuxc", .data = &imxrt1170_pinctrl_info, },
0328 { }
0329 };
0330
0331 static int imxrt1170_pinctrl_probe(struct platform_device *pdev)
0332 {
0333 return imx_pinctrl_probe(pdev, &imxrt1170_pinctrl_info);
0334 }
0335
0336 static struct platform_driver imxrt1170_pinctrl_driver = {
0337 .driver = {
0338 .name = "imxrt1170-pinctrl",
0339 .of_match_table = of_match_ptr(imxrt1170_pinctrl_of_match),
0340 .suppress_bind_attrs = true,
0341 },
0342 .probe = imxrt1170_pinctrl_probe,
0343 };
0344
0345 static int __init imxrt1170_pinctrl_init(void)
0346 {
0347 return platform_driver_register(&imxrt1170_pinctrl_driver);
0348 }
0349 arch_initcall(imxrt1170_pinctrl_init);