File Index
Files and directories
Sign in
FILE

pinctrl-imxrt1170.c

File preview with syntax highlighting.

linux-6.19.14/drivers/pinctrl/freescale/pinctrl-imxrt1170.c C
  1// SPDX-License-Identifier: GPL-2.0
  2/*
  3 * Copyright (C) 2022
  4 * Author(s): Jesse Taube <Mr.Bossman075@gmail.com>
  5 */
  6
  7#include <linux/err.h>
  8#include <linux/init.h>
  9#include <linux/of.h>
 10#include <linux/pinctrl/pinctrl.h>
 11#include <linux/platform_device.h>
 12
 13#include "pinctrl-imx.h"
 14
 15enum imxrt1170_pads {
 16	IMXRT1170_PAD_RESERVE0,
 17	IMXRT1170_PAD_RESERVE1,
 18	IMXRT1170_PAD_RESERVE2,
 19	IMXRT1170_PAD_RESERVE3,
 20	IMXRT1170_PAD_EMC_B1_00,
 21	IMXRT1170_PAD_EMC_B1_01,
 22	IMXRT1170_PAD_EMC_B1_02,
 23	IMXRT1170_PAD_EMC_B1_03,
 24	IMXRT1170_PAD_EMC_B1_04,
 25	IMXRT1170_PAD_EMC_B1_05,
 26	IMXRT1170_PAD_EMC_B1_06,
 27	IMXRT1170_PAD_EMC_B1_07,
 28	IMXRT1170_PAD_EMC_B1_08,
 29	IMXRT1170_PAD_EMC_B1_09,
 30	IMXRT1170_PAD_EMC_B1_10,
 31	IMXRT1170_PAD_EMC_B1_11,
 32	IMXRT1170_PAD_EMC_B1_12,
 33	IMXRT1170_PAD_EMC_B1_13,
 34	IMXRT1170_PAD_EMC_B1_14,
 35	IMXRT1170_PAD_EMC_B1_15,
 36	IMXRT1170_PAD_EMC_B1_16,
 37	IMXRT1170_PAD_EMC_B1_17,
 38	IMXRT1170_PAD_EMC_B1_18,
 39	IMXRT1170_PAD_EMC_B1_19,
 40	IMXRT1170_PAD_EMC_B1_20,
 41	IMXRT1170_PAD_EMC_B1_21,
 42	IMXRT1170_PAD_EMC_B1_22,
 43	IMXRT1170_PAD_EMC_B1_23,
 44	IMXRT1170_PAD_EMC_B1_24,
 45	IMXRT1170_PAD_EMC_B1_25,
 46	IMXRT1170_PAD_EMC_B1_26,
 47	IMXRT1170_PAD_EMC_B1_27,
 48	IMXRT1170_PAD_EMC_B1_28,
 49	IMXRT1170_PAD_EMC_B1_29,
 50	IMXRT1170_PAD_EMC_B1_30,
 51	IMXRT1170_PAD_EMC_B1_31,
 52	IMXRT1170_PAD_EMC_B1_32,
 53	IMXRT1170_PAD_EMC_B1_33,
 54	IMXRT1170_PAD_EMC_B1_34,
 55	IMXRT1170_PAD_EMC_B1_35,
 56	IMXRT1170_PAD_EMC_B1_36,
 57	IMXRT1170_PAD_EMC_B1_37,
 58	IMXRT1170_PAD_EMC_B1_38,
 59	IMXRT1170_PAD_EMC_B1_39,
 60	IMXRT1170_PAD_EMC_B1_40,
 61	IMXRT1170_PAD_EMC_B1_41,
 62	IMXRT1170_PAD_EMC_B2_00,
 63	IMXRT1170_PAD_EMC_B2_01,
 64	IMXRT1170_PAD_EMC_B2_02,
 65	IMXRT1170_PAD_EMC_B2_03,
 66	IMXRT1170_PAD_EMC_B2_04,
 67	IMXRT1170_PAD_EMC_B2_05,
 68	IMXRT1170_PAD_EMC_B2_06,
 69	IMXRT1170_PAD_EMC_B2_07,
 70	IMXRT1170_PAD_EMC_B2_08,
 71	IMXRT1170_PAD_EMC_B2_09,
 72	IMXRT1170_PAD_EMC_B2_10,
 73	IMXRT1170_PAD_EMC_B2_11,
 74	IMXRT1170_PAD_EMC_B2_12,
 75	IMXRT1170_PAD_EMC_B2_13,
 76	IMXRT1170_PAD_EMC_B2_14,
 77	IMXRT1170_PAD_EMC_B2_15,
 78	IMXRT1170_PAD_EMC_B2_16,
 79	IMXRT1170_PAD_EMC_B2_17,
 80	IMXRT1170_PAD_EMC_B2_18,
 81	IMXRT1170_PAD_EMC_B2_19,
 82	IMXRT1170_PAD_EMC_B2_20,
 83	IMXRT1170_PAD_AD_00,
 84	IMXRT1170_PAD_AD_01,
 85	IMXRT1170_PAD_AD_02,
 86	IMXRT1170_PAD_AD_03,
 87	IMXRT1170_PAD_AD_04,
 88	IMXRT1170_PAD_AD_05,
 89	IMXRT1170_PAD_AD_06,
 90	IMXRT1170_PAD_AD_07,
 91	IMXRT1170_PAD_AD_08,
 92	IMXRT1170_PAD_AD_09,
 93	IMXRT1170_PAD_AD_10,
 94	IMXRT1170_PAD_AD_11,
 95	IMXRT1170_PAD_AD_12,
 96	IMXRT1170_PAD_AD_13,
 97	IMXRT1170_PAD_AD_14,
 98	IMXRT1170_PAD_AD_15,
 99	IMXRT1170_PAD_AD_16,
100	IMXRT1170_PAD_AD_17,
101	IMXRT1170_PAD_AD_18,
102	IMXRT1170_PAD_AD_19,
103	IMXRT1170_PAD_AD_20,
104	IMXRT1170_PAD_AD_21,
105	IMXRT1170_PAD_AD_22,
106	IMXRT1170_PAD_AD_23,
107	IMXRT1170_PAD_AD_24,
108	IMXRT1170_PAD_AD_25,
109	IMXRT1170_PAD_AD_26,
110	IMXRT1170_PAD_AD_27,
111	IMXRT1170_PAD_AD_28,
112	IMXRT1170_PAD_AD_29,
113	IMXRT1170_PAD_AD_30,
114	IMXRT1170_PAD_AD_31,
115	IMXRT1170_PAD_AD_32,
116	IMXRT1170_PAD_AD_33,
117	IMXRT1170_PAD_AD_34,
118	IMXRT1170_PAD_AD_35,
119	IMXRT1170_PAD_SD_B1_00,
120	IMXRT1170_PAD_SD_B1_01,
121	IMXRT1170_PAD_SD_B1_02,
122	IMXRT1170_PAD_SD_B1_03,
123	IMXRT1170_PAD_SD_B1_04,
124	IMXRT1170_PAD_SD_B1_05,
125	IMXRT1170_PAD_SD_B2_00,
126	IMXRT1170_PAD_SD_B2_01,
127	IMXRT1170_PAD_SD_B2_02,
128	IMXRT1170_PAD_SD_B2_03,
129	IMXRT1170_PAD_SD_B2_04,
130	IMXRT1170_PAD_SD_B2_05,
131	IMXRT1170_PAD_SD_B2_06,
132	IMXRT1170_PAD_SD_B2_07,
133	IMXRT1170_PAD_SD_B2_08,
134	IMXRT1170_PAD_SD_B2_09,
135	IMXRT1170_PAD_SD_B2_10,
136	IMXRT1170_PAD_SD_B2_11,
137	IMXRT1170_PAD_DISP_B1_00,
138	IMXRT1170_PAD_DISP_B1_01,
139	IMXRT1170_PAD_DISP_B1_02,
140	IMXRT1170_PAD_DISP_B1_03,
141	IMXRT1170_PAD_DISP_B1_04,
142	IMXRT1170_PAD_DISP_B1_05,
143	IMXRT1170_PAD_DISP_B1_06,
144	IMXRT1170_PAD_DISP_B1_07,
145	IMXRT1170_PAD_DISP_B1_08,
146	IMXRT1170_PAD_DISP_B1_09,
147	IMXRT1170_PAD_DISP_B1_10,
148	IMXRT1170_PAD_DISP_B1_11,
149	IMXRT1170_PAD_DISP_B2_00,
150	IMXRT1170_PAD_DISP_B2_01,
151	IMXRT1170_PAD_DISP_B2_02,
152	IMXRT1170_PAD_DISP_B2_03,
153	IMXRT1170_PAD_DISP_B2_04,
154	IMXRT1170_PAD_DISP_B2_05,
155	IMXRT1170_PAD_DISP_B2_06,
156	IMXRT1170_PAD_DISP_B2_07,
157	IMXRT1170_PAD_DISP_B2_08,
158	IMXRT1170_PAD_DISP_B2_09,
159	IMXRT1170_PAD_DISP_B2_10,
160	IMXRT1170_PAD_DISP_B2_11,
161	IMXRT1170_PAD_DISP_B2_12,
162	IMXRT1170_PAD_DISP_B2_13,
163	IMXRT1170_PAD_DISP_B2_14,
164	IMXRT1170_PAD_DISP_B2_15,
165};
166
167/* Pad names for the pinmux subsystem */
168static const struct pinctrl_pin_desc imxrt1170_pinctrl_pads[] = {
169	IMX_PINCTRL_PIN(IMXRT1170_PAD_RESERVE0),
170	IMX_PINCTRL_PIN(IMXRT1170_PAD_RESERVE1),
171	IMX_PINCTRL_PIN(IMXRT1170_PAD_RESERVE2),
172	IMX_PINCTRL_PIN(IMXRT1170_PAD_RESERVE3),
173	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_00),
174	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_01),
175	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_02),
176	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_03),
177	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_04),
178	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_05),
179	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_06),
180	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_07),
181	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_08),
182	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_09),
183	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_10),
184	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_11),
185	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_12),
186	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_13),
187	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_14),
188	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_15),
189	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_16),
190	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_17),
191	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_18),
192	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_19),
193	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_20),
194	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_21),
195	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_22),
196	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_23),
197	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_24),
198	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_25),
199	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_26),
200	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_27),
201	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_28),
202	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_29),
203	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_30),
204	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_31),
205	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_32),
206	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_33),
207	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_34),
208	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_35),
209	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_36),
210	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_37),
211	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_38),
212	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_39),
213	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_40),
214	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B1_41),
215	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_00),
216	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_01),
217	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_02),
218	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_03),
219	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_04),
220	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_05),
221	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_06),
222	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_07),
223	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_08),
224	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_09),
225	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_10),
226	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_11),
227	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_12),
228	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_13),
229	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_14),
230	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_15),
231	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_16),
232	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_17),
233	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_18),
234	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_19),
235	IMX_PINCTRL_PIN(IMXRT1170_PAD_EMC_B2_20),
236	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_00),
237	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_01),
238	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_02),
239	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_03),
240	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_04),
241	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_05),
242	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_06),
243	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_07),
244	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_08),
245	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_09),
246	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_10),
247	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_11),
248	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_12),
249	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_13),
250	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_14),
251	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_15),
252	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_16),
253	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_17),
254	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_18),
255	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_19),
256	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_20),
257	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_21),
258	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_22),
259	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_23),
260	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_24),
261	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_25),
262	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_26),
263	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_27),
264	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_28),
265	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_29),
266	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_30),
267	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_31),
268	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_32),
269	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_33),
270	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_34),
271	IMX_PINCTRL_PIN(IMXRT1170_PAD_AD_35),
272	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B1_00),
273	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B1_01),
274	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B1_02),
275	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B1_03),
276	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B1_04),
277	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B1_05),
278	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_00),
279	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_01),
280	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_02),
281	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_03),
282	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_04),
283	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_05),
284	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_06),
285	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_07),
286	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_08),
287	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_09),
288	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_10),
289	IMX_PINCTRL_PIN(IMXRT1170_PAD_SD_B2_11),
290	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_00),
291	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_01),
292	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_02),
293	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_03),
294	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_04),
295	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_05),
296	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_06),
297	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_07),
298	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_08),
299	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_09),
300	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_10),
301	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B1_11),
302	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_00),
303	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_01),
304	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_02),
305	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_03),
306	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_04),
307	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_05),
308	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_06),
309	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_07),
310	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_08),
311	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_09),
312	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_10),
313	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_11),
314	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_12),
315	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_13),
316	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_14),
317	IMX_PINCTRL_PIN(IMXRT1170_PAD_DISP_B2_15),
318};
319
320static const struct imx_pinctrl_soc_info imxrt1170_pinctrl_info = {
321	.pins = imxrt1170_pinctrl_pads,
322	.npins = ARRAY_SIZE(imxrt1170_pinctrl_pads),
323	.gpr_compatible = "fsl,imxrt1170-iomuxc-gpr",
324};
325
326static const struct of_device_id imxrt1170_pinctrl_of_match[] = {
327	{ .compatible = "fsl,imxrt1170-iomuxc", .data = &imxrt1170_pinctrl_info, },
328	{ /* sentinel */ }
329};
330
331static int imxrt1170_pinctrl_probe(struct platform_device *pdev)
332{
333	return imx_pinctrl_probe(pdev, &imxrt1170_pinctrl_info);
334}
335
336static struct platform_driver imxrt1170_pinctrl_driver = {
337	.driver = {
338		.name = "imxrt1170-pinctrl",
339		.of_match_table = of_match_ptr(imxrt1170_pinctrl_of_match),
340		.suppress_bind_attrs = true,
341	},
342	.probe = imxrt1170_pinctrl_probe,
343};
344
345static int __init imxrt1170_pinctrl_init(void)
346{
347	return platform_driver_register(&imxrt1170_pinctrl_driver);
348}
349arch_initcall(imxrt1170_pinctrl_init);
~/ Read-only file preview.