Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 /*
0003  * Copyright (C) 2022
0004  * Author(s): Jesse Taube <Mr.Bossman075@gmail.com>
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 /* Pad names for the pinmux subsystem */
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     { /* sentinel */ }
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);