brintos

brintos / linux-shallow public Read only

0
0
Text · 11.0 KiB · d8857f3 Raw
350 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * Copyright (C) 20224 * 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);350