// SPDX-License-Identifier: GPL-2.0-or-later /* * NXP S32G pinctrl driver * * Copyright 2015-2016 Freescale Semiconductor, Inc. * Copyright 2017-2018, 2020-2022 NXP * Copyright (C) 2022 SUSE LLC */ #include <linux/err.h> #include <linux/init.h> #include <linux/io.h> #include <linux/module.h> #include <linux/of.h> #include <linux/platform_device.h> #include <linux/pinctrl/pinctrl.h> #include "pinctrl-s32.h" enum s32_pins { S32G_MSCR_PA_00 = 0, S32G_MSCR_PA_01 = 1, S32G_MSCR_PA_02 = 2, S32G_MSCR_PA_03 = 3, S32G_MSCR_PA_04 = 4, S32G_MSCR_PA_05 = 5, S32G_MSCR_PA_06 = 6, S32G_MSCR_PA_07 = 7, S32G_MSCR_PA_08 = 8, S32G_MSCR_PA_09 = 9, S32G_MSCR_PA_10 = 10, S32G_MSCR_PA_11 = 11, S32G_MSCR_PA_12 = 12, S32G_MSCR_PA_13 = 13, S32G_MSCR_PA_14 = 14, S32G_MSCR_PA_15 = 15, S32G_MSCR_PB_00 = 16, S32G_MSCR_PB_01 = 17, S32G_MSCR_PB_02 = 18, S32G_MSCR_PB_03 = 19, S32G_MSCR_PB_04 = 20, S32G_MSCR_PB_05 = 21, S32G_MSCR_PB_06 = 22, S32G_MSCR_PB_07 = 23, S32G_MSCR_PB_08 = 24, S32G_MSCR_PB_09 = 25, S32G_MSCR_PB_10 = 26, S32G_MSCR_PB_11 = 27, S32G_MSCR_PB_12 = 28, S32G_MSCR_PB_13 = 29, S32G_MSCR_PB_14 = 30, S32G_MSCR_PB_15 = 31, S32G_MSCR_PC_00 = 32, S32G_MSCR_PC_01 = 33, S32G_MSCR_PC_02 = 34, S32G_MSCR_PC_03 = 35, S32G_MSCR_PC_04 = 36, S32G_MSCR_PC_05 = 37, S32G_MSCR_PC_06 = 38, S32G_MSCR_PC_07 = 39, S32G_MSCR_PC_08 = 40, S32G_MSCR_PC_09 = 41, S32G_MSCR_PC_10 = 42, S32G_MSCR_PC_11 = 43, S32G_MSCR_PC_12 = 44, S32G_MSCR_PC_13 = 45, S32G_MSCR_PC_14 = 46, S32G_MSCR_PC_15 = 47, S32G_MSCR_PD_00 = 48, S32G_MSCR_PD_01 = 49, S32G_MSCR_PD_02 = 50, S32G_MSCR_PD_03 = 51, S32G_MSCR_PD_04 = 52, S32G_MSCR_PD_05 = 53, S32G_MSCR_PD_06 = 54, S32G_MSCR_PD_07 = 55, S32G_MSCR_PD_08 = 56, S32G_MSCR_PD_09 = 57, S32G_MSCR_PD_10 = 58, S32G_MSCR_PD_11 = 59, S32G_MSCR_PD_12 = 60, S32G_MSCR_PD_13 = 61, S32G_MSCR_PD_14 = 62, S32G_MSCR_PD_15 = 63, S32G_MSCR_PE_00 = 64, S32G_MSCR_PE_01 = 65, S32G_MSCR_PE_02 = 66, S32G_MSCR_PE_03 = 67, S32G_MSCR_PE_04 = 68, S32G_MSCR_PE_05 = 69, S32G_MSCR_PE_06 = 70, S32G_MSCR_PE_07 = 71, S32G_MSCR_PE_08 = 72, S32G_MSCR_PE_09 = 73, S32G_MSCR_PE_10 = 74, S32G_MSCR_PE_11 = 75, S32G_MSCR_PE_12 = 76, S32G_MSCR_PE_13 = 77, S32G_MSCR_PE_14 = 78, S32G_MSCR_PE_15 = 79, S32G_MSCR_PF_00 = 80, S32G_MSCR_PF_01 = 81, S32G_MSCR_PF_02 = 82, S32G_MSCR_PF_03 = 83, S32G_MSCR_PF_04 = 84, S32G_MSCR_PF_05 = 85, S32G_MSCR_PF_06 = 86, S32G_MSCR_PF_07 = 87, S32G_MSCR_PF_08 = 88, S32G_MSCR_PF_09 = 89, S32G_MSCR_PF_10 = 90, S32G_MSCR_PF_11 = 91, S32G_MSCR_PF_12 = 92, S32G_MSCR_PF_13 = 93, S32G_MSCR_PF_14 = 94, S32G_MSCR_PF_15 = 95, S32G_MSCR_PG_00 = 96, S32G_MSCR_PG_01 = 97, S32G_MSCR_PG_02 = 98, S32G_MSCR_PG_03 = 99, S32G_MSCR_PG_04 = 100, S32G_MSCR_PG_05 = 101, S32G_MSCR_PH_00 = 112, S32G_MSCR_PH_01 = 113, S32G_MSCR_PH_02 = 114, S32G_MSCR_PH_03 = 115, S32G_MSCR_PH_04 = 116, S32G_MSCR_PH_05 = 117, S32G_MSCR_PH_06 = 118, S32G_MSCR_PH_07 = 119, S32G_MSCR_PH_08 = 120, S32G_MSCR_PH_09 = 121, S32G_MSCR_PH_10 = 122, S32G_MSCR_PJ_00 = 144, S32G_MSCR_PJ_01 = 145, S32G_MSCR_PJ_02 = 146, S32G_MSCR_PJ_03 = 147, S32G_MSCR_PJ_04 = 148, S32G_MSCR_PJ_05 = 149, S32G_MSCR_PJ_06 = 150, S32G_MSCR_PJ_07 = 151, S32G_MSCR_PJ_08 = 152, S32G_MSCR_PJ_09 = 153, S32G_MSCR_PJ_10 = 154, S32G_MSCR_PJ_11 = 155, S32G_MSCR_PJ_12 = 156, S32G_MSCR_PJ_13 = 157, S32G_MSCR_PJ_14 = 158, S32G_MSCR_PJ_15 = 159, S32G_MSCR_PK_00 = 160, S32G_MSCR_PK_01 = 161, S32G_MSCR_PK_02 = 162, S32G_MSCR_PK_03 = 163, S32G_MSCR_PK_04 = 164, S32G_MSCR_PK_05 = 165, S32G_MSCR_PK_06 = 166, S32G_MSCR_PK_07 = 167, S32G_MSCR_PK_08 = 168, S32G_MSCR_PK_09 = 169, S32G_MSCR_PK_10 = 170, S32G_MSCR_PK_11 = 171, S32G_MSCR_PK_12 = 172, S32G_MSCR_PK_13 = 173, S32G_MSCR_PK_14 = 174, S32G_MSCR_PK_15 = 175, S32G_MSCR_PL_00 = 176, S32G_MSCR_PL_01 = 177, S32G_MSCR_PL_02 = 178, S32G_MSCR_PL_03 = 179, S32G_MSCR_PL_04 = 180, S32G_MSCR_PL_05 = 181, S32G_MSCR_PL_06 = 182, S32G_MSCR_PL_07 = 183, S32G_MSCR_PL_08 = 184, S32G_MSCR_PL_09 = 185, S32G_MSCR_PL_10 = 186, S32G_MSCR_PL_11 = 187, S32G_MSCR_PL_12 = 188, S32G_MSCR_PL_13 = 189, S32G_MSCR_PL_14 = 190, S32G_IMCR_QSPI_A_DATA0 = 540, S32G_IMCR_QSPI_A_DATA1 = 541, S32G_IMCR_QSPI_A_DATA2 = 542, S32G_IMCR_QSPI_A_DATA3 = 543, S32G_IMCR_QSPI_A_DATA4 = 544, S32G_IMCR_QSPI_A_DATA5 = 545, S32G_IMCR_QSPI_A_DATA6 = 546, S32G_IMCR_QSPI_A_DATA7 = 547, S32G_IMCR_QSPI_DQS_A = 548, S32G_IMCR_QSPI_B_DATA0 = 552, S32G_IMCR_QSPI_B_DATA1 = 554, S32G_IMCR_QSPI_B_DATA2 = 551, S32G_IMCR_QSPI_B_DATA3 = 553, S32G_IMCR_QSPI_B_DATA4 = 557, S32G_IMCR_QSPI_B_DATA5 = 550, S32G_IMCR_QSPI_B_DATA6 = 556, S32G_IMCR_QSPI_B_DATA7 = 555, S32G_IMCR_QSPI_DQS_B = 558, S32G_IMCR_BOOT_BOOTMOD0 = 560, S32G_IMCR_BOOT_BOOTMOD1 = 561, S32G_IMCR_I2C0_SCL = 566, S32G_IMCR_I2C0_SDA = 565, S32G_IMCR_LIN0_RX = 512, S32G_IMCR_USDHC_CMD = 515, S32G_IMCR_USDHC_DAT0 = 516, S32G_IMCR_USDHC_DAT1 = 517, S32G_IMCR_USDHC_DAT2 = 520, S32G_IMCR_USDHC_DAT3 = 521, S32G_IMCR_USDHC_DAT4 = 522, S32G_IMCR_USDHC_DAT5 = 523, S32G_IMCR_USDHC_DAT6 = 519, S32G_IMCR_USDHC_DAT7 = 518, S32G_IMCR_USDHC_DQS = 524, S32G_IMCR_CAN0_RXD = 513, S32G_IMCR_CAN1_RXD = 631, S32G_IMCR_CAN2_RXD = 632, S32G_IMCR_CAN3_RXD = 633, /* GMAC0 */ S32G_IMCR_Ethernet_MDIO = 527, S32G_IMCR_Ethernet_CRS = 526, S32G_IMCR_Ethernet_COL = 525, S32G_IMCR_Ethernet_RX_D0 = 531, S32G_IMCR_Ethernet_RX_D1 = 532, S32G_IMCR_Ethernet_RX_D2 = 533, S32G_IMCR_Ethernet_RX_D3 = 534, S32G_IMCR_Ethernet_RX_ER = 528, S32G_IMCR_Ethernet_RX_CLK = 529, S32G_IMCR_Ethernet_RX_DV = 530, S32G_IMCR_Ethernet_TX_CLK = 538, S32G_IMCR_Ethernet_REF_CLK = 535, /* PFE EMAC 0 MII */ /* PFE EMAC 1 MII */ S32G_IMCR_PFE_EMAC_1_MDIO = 857, S32G_IMCR_PFE_EMAC_1_CRS = 856, S32G_IMCR_PFE_EMAC_1_COL = 855, S32G_IMCR_PFE_EMAC_1_RX_D0 = 861, S32G_IMCR_PFE_EMAC_1_RX_D1 = 862, S32G_IMCR_PFE_EMAC_1_RX_D2 = 863, S32G_IMCR_PFE_EMAC_1_RX_D3 = 864, S32G_IMCR_PFE_EMAC_1_RX_ER = 860, S32G_IMCR_PFE_EMAC_1_RX_CLK = 859, S32G_IMCR_PFE_EMAC_1_RX_DV = 865, S32G_IMCR_PFE_EMAC_1_TX_CLK = 866, S32G_IMCR_PFE_EMAC_1_REF_CLK = 858, /* PFE EMAC 2 MII */ S32G_IMCR_PFE_EMAC_2_MDIO = 877, S32G_IMCR_PFE_EMAC_2_CRS = 876, S32G_IMCR_PFE_EMAC_2_COL = 875, S32G_IMCR_PFE_EMAC_2_RX_D0 = 881, S32G_IMCR_PFE_EMAC_2_RX_D1 = 882, S32G_IMCR_PFE_EMAC_2_RX_D2 = 883, S32G_IMCR_PFE_EMAC_2_RX_D3 = 884, S32G_IMCR_PFE_EMAC_2_RX_ER = 880, S32G_IMCR_PFE_EMAC_2_RX_CLK = 879, S32G_IMCR_PFE_EMAC_2_RX_DV = 885, S32G_IMCR_PFE_EMAC_2_TX_CLK = 886, S32G_IMCR_PFE_EMAC_2_REF_CLK = 878, S32G_IMCR_FlexRay0_A_RX = 785, S32G_IMCR_FlexRay0_B_RX = 786, S32G_IMCR_FlexTimer0_CH0 = 655, S32G_IMCR_FlexTimer1_CH0 = 665, S32G_IMCR_FlexTimer0_CH1 = 656, S32G_IMCR_FlexTimer1_CH1 = 666, S32G_IMCR_FlexTimer0_CH2 = 657, S32G_IMCR_FlexTimer1_CH2 = 667, S32G_IMCR_FlexTimer0_CH3 = 658, S32G_IMCR_FlexTimer1_CH3 = 668, S32G_IMCR_FlexTimer0_CH4 = 659, S32G_IMCR_FlexTimer1_CH4 = 669, S32G_IMCR_FlexTimer0_CH5 = 660, S32G_IMCR_FlexTimer1_CH5 = 670, S32G_IMCR_FlexTimer0_EXTCLK = 661, S32G_IMCR_FlexTimer1_EXTCLK = 671, S32G_IMCR_I2C1_SCL = 717, S32G_IMCR_I2C1_SDA = 718, S32G_IMCR_I2C2_SCL = 719, S32G_IMCR_I2C2_SDA = 720, S32G_IMCR_I2C3_SCL = 721, S32G_IMCR_I2C3_SDA = 722, S32G_IMCR_I2C4_SCL = 723, S32G_IMCR_I2C4_SDA = 724, S32G_IMCR_LIN1_RX = 736, S32G_IMCR_LIN2_RX = 737, S32G_IMCR_DSPI0_PCS0 = 980, S32G_IMCR_DSPI0_SCK = 981, S32G_IMCR_DSPI0_SIN = 982, S32G_IMCR_DSPI1_PCS0 = 985, S32G_IMCR_DSPI1_SCK = 986, S32G_IMCR_DSPI1_SIN = 987, S32G_IMCR_DSPI2_PCS0 = 990, S32G_IMCR_DSPI2_SCK = 991, S32G_IMCR_DSPI2_SIN = 992, S32G_IMCR_DSPI3_PCS0 = 995, S32G_IMCR_DSPI3_SCK = 996, S32G_IMCR_DSPI3_SIN = 997, S32G_IMCR_DSPI4_PCS0 = 1000, S32G_IMCR_DSPI4_SCK = 1001, S32G_IMCR_DSPI4_SIN = 1002, S32G_IMCR_DSPI5_PCS0 = 1005, S32G_IMCR_DSPI5_SCK = 1006, S32G_IMCR_DSPI5_SIN = 1007, S32G_IMCR_LLCE_CAN0_RXD = 745, S32G_IMCR_LLCE_CAN1_RXD = 746, S32G_IMCR_LLCE_CAN2_RXD = 747, S32G_IMCR_LLCE_CAN3_RXD = 748, S32G_IMCR_LLCE_CAN4_RXD = 749, S32G_IMCR_LLCE_CAN5_RXD = 750, S32G_IMCR_LLCE_CAN6_RXD = 751, S32G_IMCR_LLCE_CAN7_RXD = 752, S32G_IMCR_LLCE_CAN8_RXD = 753, S32G_IMCR_LLCE_CAN9_RXD = 754, S32G_IMCR_LLCE_CAN10_RXD = 755, S32G_IMCR_LLCE_CAN11_RXD = 756, S32G_IMCR_LLCE_CAN12_RXD = 757, S32G_IMCR_LLCE_CAN13_RXD = 758, S32G_IMCR_LLCE_CAN14_RXD = 759, S32G_IMCR_LLCE_CAN15_RXD = 760, S32G_IMCR_USB_CLK = 895, S32G_IMCR_USB_DATA0 = 896, S32G_IMCR_USB_DATA1 = 897, S32G_IMCR_USB_DATA2 = 898, S32G_IMCR_USB_DATA3 = 899, S32G_IMCR_USB_DATA4 = 900, S32G_IMCR_USB_DATA5 = 901, S32G_IMCR_USB_DATA6 = 902, S32G_IMCR_USB_DATA7 = 903, S32G_IMCR_USB_DIR = 904, S32G_IMCR_USB_NXT = 905, S32G_IMCR_SIUL_EIRQ0 = 910, S32G_IMCR_SIUL_EIRQ1 = 911, S32G_IMCR_SIUL_EIRQ2 = 912, S32G_IMCR_SIUL_EIRQ3 = 913, S32G_IMCR_SIUL_EIRQ4 = 914, S32G_IMCR_SIUL_EIRQ5 = 915, S32G_IMCR_SIUL_EIRQ6 = 916, S32G_IMCR_SIUL_EIRQ7 = 917, S32G_IMCR_SIUL_EIRQ8 = 918, S32G_IMCR_SIUL_EIRQ9 = 919, S32G_IMCR_SIUL_EIRQ10 = 920, S32G_IMCR_SIUL_EIRQ11 = 921, S32G_IMCR_SIUL_EIRQ12 = 922, S32G_IMCR_SIUL_EIRQ13 = 923, S32G_IMCR_SIUL_EIRQ14 = 924, S32G_IMCR_SIUL_EIRQ15 = 925, S32G_IMCR_SIUL_EIRQ16 = 926, S32G_IMCR_SIUL_EIRQ17 = 927, S32G_IMCR_SIUL_EIRQ18 = 928, S32G_IMCR_SIUL_EIRQ19 = 929, S32G_IMCR_SIUL_EIRQ20 = 930, S32G_IMCR_SIUL_EIRQ21 = 931, S32G_IMCR_SIUL_EIRQ22 = 932, S32G_IMCR_SIUL_EIRQ23 = 933, S32G_IMCR_SIUL_EIRQ24 = 934, S32G_IMCR_SIUL_EIRQ25 = 935, S32G_IMCR_SIUL_EIRQ26 = 936, S32G_IMCR_SIUL_EIRQ27 = 937, S32G_IMCR_SIUL_EIRQ28 = 938, S32G_IMCR_SIUL_EIRQ29 = 939, S32G_IMCR_SIUL_EIRQ30 = 940, S32G_IMCR_SIUL_EIRQ31 = 941, }; /* Pad names for the pinmux subsystem */ static const struct pinctrl_pin_desc s32_pinctrl_pads_siul2[] = { /* SIUL2_0 pins. */ S32_PINCTRL_PIN(S32G_MSCR_PA_00), S32_PINCTRL_PIN(S32G_MSCR_PA_01), S32_PINCTRL_PIN(S32G_MSCR_PA_02), S32_PINCTRL_PIN(S32G_MSCR_PA_03), S32_PINCTRL_PIN(S32G_MSCR_PA_04), S32_PINCTRL_PIN(S32G_MSCR_PA_05), S32_PINCTRL_PIN(S32G_MSCR_PA_06), S32_PINCTRL_PIN(S32G_MSCR_PA_07), S32_PINCTRL_PIN(S32G_MSCR_PA_08), S32_PINCTRL_PIN(S32G_MSCR_PA_09), S32_PINCTRL_PIN(S32G_MSCR_PA_10), S32_PINCTRL_PIN(S32G_MSCR_PA_11), S32_PINCTRL_PIN(S32G_MSCR_PA_12), S32_PINCTRL_PIN(S32G_MSCR_PA_13), S32_PINCTRL_PIN(S32G_MSCR_PA_14), S32_PINCTRL_PIN(S32G_MSCR_PA_15), S32_PINCTRL_PIN(S32G_MSCR_PB_00), S32_PINCTRL_PIN(S32G_MSCR_PB_01), S32_PINCTRL_PIN(S32G_MSCR_PB_02), S32_PINCTRL_PIN(S32G_MSCR_PB_03), S32_PINCTRL_PIN(S32G_MSCR_PB_04), S32_PINCTRL_PIN(S32G_MSCR_PB_05), S32_PINCTRL_PIN(S32G_MSCR_PB_06), S32_PINCTRL_PIN(S32G_MSCR_PB_07), S32_PINCTRL_PIN(S32G_MSCR_PB_08), S32_PINCTRL_PIN(S32G_MSCR_PB_09), S32_PINCTRL_PIN(S32G_MSCR_PB_10), S32_PINCTRL_PIN(S32G_MSCR_PB_11), S32_PINCTRL_PIN(S32G_MSCR_PB_12), S32_PINCTRL_PIN(S32G_MSCR_PB_13), S32_PINCTRL_PIN(S32G_MSCR_PB_14), S32_PINCTRL_PIN(S32G_MSCR_PB_15), S32_PINCTRL_PIN(S32G_MSCR_PC_00), S32_PINCTRL_PIN(S32G_MSCR_PC_01), S32_PINCTRL_PIN(S32G_MSCR_PC_02), S32_PINCTRL_PIN(S32G_MSCR_PC_03), S32_PINCTRL_PIN(S32G_MSCR_PC_04), S32_PINCTRL_PIN(S32G_MSCR_PC_05), S32_PINCTRL_PIN(S32G_MSCR_PC_06), S32_PINCTRL_PIN(S32G_MSCR_PC_07), S32_PINCTRL_PIN(S32G_MSCR_PC_08), S32_PINCTRL_PIN(S32G_MSCR_PC_09), S32_PINCTRL_PIN(S32G_MSCR_PC_10), S32_PINCTRL_PIN(S32G_MSCR_PC_11), S32_PINCTRL_PIN(S32G_MSCR_PC_12), S32_PINCTRL_PIN(S32G_MSCR_PC_13), S32_PINCTRL_PIN(S32G_MSCR_PC_14), S32_PINCTRL_PIN(S32G_MSCR_PC_15), S32_PINCTRL_PIN(S32G_MSCR_PD_00), S32_PINCTRL_PIN(S32G_MSCR_PD_01), S32_PINCTRL_PIN(S32G_MSCR_PD_02), S32_PINCTRL_PIN(S32G_MSCR_PD_03), S32_PINCTRL_PIN(S32G_MSCR_PD_04), S32_PINCTRL_PIN(S32G_MSCR_PD_05), S32_PINCTRL_PIN(S32G_MSCR_PD_06), S32_PINCTRL_PIN(S32G_MSCR_PD_07), S32_PINCTRL_PIN(S32G_MSCR_PD_08), S32_PINCTRL_PIN(S32G_MSCR_PD_09), S32_PINCTRL_PIN(S32G_MSCR_PD_10), S32_PINCTRL_PIN(S32G_MSCR_PD_11), S32_PINCTRL_PIN(S32G_MSCR_PD_12), S32_PINCTRL_PIN(S32G_MSCR_PD_13), S32_PINCTRL_PIN(S32G_MSCR_PD_14), S32_PINCTRL_PIN(S32G_MSCR_PD_15), S32_PINCTRL_PIN(S32G_MSCR_PE_00), S32_PINCTRL_PIN(S32G_MSCR_PE_01), S32_PINCTRL_PIN(S32G_MSCR_PE_02), S32_PINCTRL_PIN(S32G_MSCR_PE_03), S32_PINCTRL_PIN(S32G_MSCR_PE_04), S32_PINCTRL_PIN(S32G_MSCR_PE_05), S32_PINCTRL_PIN(S32G_MSCR_PE_06), S32_PINCTRL_PIN(S32G_MSCR_PE_07), S32_PINCTRL_PIN(S32G_MSCR_PE_08), S32_PINCTRL_PIN(S32G_MSCR_PE_09), S32_PINCTRL_PIN(S32G_MSCR_PE_10), S32_PINCTRL_PIN(S32G_MSCR_PE_11), S32_PINCTRL_PIN(S32G_MSCR_PE_12), S32_PINCTRL_PIN(S32G_MSCR_PE_13), S32_PINCTRL_PIN(S32G_MSCR_PE_14), S32_PINCTRL_PIN(S32G_MSCR_PE_15), S32_PINCTRL_PIN(S32G_MSCR_PF_00), S32_PINCTRL_PIN(S32G_MSCR_PF_01), S32_PINCTRL_PIN(S32G_MSCR_PF_02), S32_PINCTRL_PIN(S32G_MSCR_PF_03), S32_PINCTRL_PIN(S32G_MSCR_PF_04), S32_PINCTRL_PIN(S32G_MSCR_PF_05), S32_PINCTRL_PIN(S32G_MSCR_PF_06), S32_PINCTRL_PIN(S32G_MSCR_PF_07), S32_PINCTRL_PIN(S32G_MSCR_PF_08), S32_PINCTRL_PIN(S32G_MSCR_PF_09), S32_PINCTRL_PIN(S32G_MSCR_PF_10), S32_PINCTRL_PIN(S32G_MSCR_PF_11), S32_PINCTRL_PIN(S32G_MSCR_PF_12), S32_PINCTRL_PIN(S32G_MSCR_PF_13), S32_PINCTRL_PIN(S32G_MSCR_PF_14), S32_PINCTRL_PIN(S32G_MSCR_PF_15), S32_PINCTRL_PIN(S32G_MSCR_PG_00), S32_PINCTRL_PIN(S32G_MSCR_PG_01), S32_PINCTRL_PIN(S32G_MSCR_PG_02), S32_PINCTRL_PIN(S32G_MSCR_PG_03), S32_PINCTRL_PIN(S32G_MSCR_PG_04), S32_PINCTRL_PIN(S32G_MSCR_PG_05), S32_PINCTRL_PIN(S32G_IMCR_QSPI_A_DATA0), S32_PINCTRL_PIN(S32G_IMCR_QSPI_A_DATA1), S32_PINCTRL_PIN(S32G_IMCR_QSPI_A_DATA2), S32_PINCTRL_PIN(S32G_IMCR_QSPI_A_DATA3), S32_PINCTRL_PIN(S32G_IMCR_QSPI_A_DATA4), S32_PINCTRL_PIN(S32G_IMCR_QSPI_A_DATA5), S32_PINCTRL_PIN(S32G_IMCR_QSPI_A_DATA6), S32_PINCTRL_PIN(S32G_IMCR_QSPI_A_DATA7), S32_PINCTRL_PIN(S32G_IMCR_QSPI_DQS_A), S32_PINCTRL_PIN(S32G_IMCR_QSPI_B_DATA0), S32_PINCTRL_PIN(S32G_IMCR_QSPI_B_DATA1), S32_PINCTRL_PIN(S32G_IMCR_QSPI_B_DATA2), S32_PINCTRL_PIN(S32G_IMCR_QSPI_B_DATA3), S32_PINCTRL_PIN(S32G_IMCR_QSPI_B_DATA4), S32_PINCTRL_PIN(S32G_IMCR_QSPI_B_DATA5), S32_PINCTRL_PIN(S32G_IMCR_QSPI_B_DATA6), S32_PINCTRL_PIN(S32G_IMCR_QSPI_B_DATA7), S32_PINCTRL_PIN(S32G_IMCR_QSPI_DQS_B), S32_PINCTRL_PIN(S32G_IMCR_I2C0_SCL), S32_PINCTRL_PIN(S32G_IMCR_I2C0_SDA), S32_PINCTRL_PIN(S32G_IMCR_LIN0_RX), S32_PINCTRL_PIN(S32G_IMCR_USDHC_CMD), S32_PINCTRL_PIN(S32G_IMCR_USDHC_DAT0), S32_PINCTRL_PIN(S32G_IMCR_USDHC_DAT1), S32_PINCTRL_PIN(S32G_IMCR_USDHC_DAT2), S32_PINCTRL_PIN(S32G_IMCR_USDHC_DAT3), S32_PINCTRL_PIN(S32G_IMCR_USDHC_DAT4), S32_PINCTRL_PIN(S32G_IMCR_USDHC_DAT5), S32_PINCTRL_PIN(S32G_IMCR_USDHC_DAT6), S32_PINCTRL_PIN(S32G_IMCR_USDHC_DAT7), S32_PINCTRL_PIN(S32G_IMCR_USDHC_DQS), S32_PINCTRL_PIN(S32G_IMCR_CAN0_RXD), /* GMAC0 */ S32_PINCTRL_PIN(S32G_IMCR_Ethernet_MDIO), S32_PINCTRL_PIN(S32G_IMCR_Ethernet_CRS), S32_PINCTRL_PIN(S32G_IMCR_Ethernet_COL), S32_PINCTRL_PIN(S32G_IMCR_Ethernet_RX_D0), S32_PINCTRL_PIN(S32G_IMCR_Ethernet_RX_D1), S32_PINCTRL_PIN(S32G_IMCR_Ethernet_RX_D2), S32_PINCTRL_PIN(S32G_IMCR_Ethernet_RX_D3), S32_PINCTRL_PIN(S32G_IMCR_Ethernet_RX_ER), S32_PINCTRL_PIN(S32G_IMCR_Ethernet_RX_CLK), S32_PINCTRL_PIN(S32G_IMCR_Ethernet_RX_DV), S32_PINCTRL_PIN(S32G_IMCR_Ethernet_TX_CLK), S32_PINCTRL_PIN(S32G_IMCR_Ethernet_REF_CLK), /* SIUL2_1 pins. */ S32_PINCTRL_PIN(S32G_MSCR_PH_00), S32_PINCTRL_PIN(S32G_MSCR_PH_01), S32_PINCTRL_PIN(S32G_MSCR_PH_02), S32_PINCTRL_PIN(S32G_MSCR_PH_03), S32_PINCTRL_PIN(S32G_MSCR_PH_04), S32_PINCTRL_PIN(S32G_MSCR_PH_05), S32_PINCTRL_PIN(S32G_MSCR_PH_06), S32_PINCTRL_PIN(S32G_MSCR_PH_07), S32_PINCTRL_PIN(S32G_MSCR_PH_08), S32_PINCTRL_PIN(S32G_MSCR_PH_09), S32_PINCTRL_PIN(S32G_MSCR_PH_10), S32_PINCTRL_PIN(S32G_MSCR_PJ_00), S32_PINCTRL_PIN(S32G_MSCR_PJ_01), S32_PINCTRL_PIN(S32G_MSCR_PJ_02), S32_PINCTRL_PIN(S32G_MSCR_PJ_03), S32_PINCTRL_PIN(S32G_MSCR_PJ_04), S32_PINCTRL_PIN(S32G_MSCR_PJ_05), S32_PINCTRL_PIN(S32G_MSCR_PJ_06), S32_PINCTRL_PIN(S32G_MSCR_PJ_07), S32_PINCTRL_PIN(S32G_MSCR_PJ_08), S32_PINCTRL_PIN(S32G_MSCR_PJ_09), S32_PINCTRL_PIN(S32G_MSCR_PJ_10), S32_PINCTRL_PIN(S32G_MSCR_PJ_11), S32_PINCTRL_PIN(S32G_MSCR_PJ_12), S32_PINCTRL_PIN(S32G_MSCR_PJ_13), S32_PINCTRL_PIN(S32G_MSCR_PJ_14), S32_PINCTRL_PIN(S32G_MSCR_PJ_15), S32_PINCTRL_PIN(S32G_MSCR_PK_00), S32_PINCTRL_PIN(S32G_MSCR_PK_01), S32_PINCTRL_PIN(S32G_MSCR_PK_02), S32_PINCTRL_PIN(S32G_MSCR_PK_03), S32_PINCTRL_PIN(S32G_MSCR_PK_04), S32_PINCTRL_PIN(S32G_MSCR_PK_05), S32_PINCTRL_PIN(S32G_MSCR_PK_06), S32_PINCTRL_PIN(S32G_MSCR_PK_07), S32_PINCTRL_PIN(S32G_MSCR_PK_08), S32_PINCTRL_PIN(S32G_MSCR_PK_09), S32_PINCTRL_PIN(S32G_MSCR_PK_10), S32_PINCTRL_PIN(S32G_MSCR_PK_11), S32_PINCTRL_PIN(S32G_MSCR_PK_12), S32_PINCTRL_PIN(S32G_MSCR_PK_13), S32_PINCTRL_PIN(S32G_MSCR_PK_14), S32_PINCTRL_PIN(S32G_MSCR_PK_15), S32_PINCTRL_PIN(S32G_MSCR_PL_00), S32_PINCTRL_PIN(S32G_MSCR_PL_01), S32_PINCTRL_PIN(S32G_MSCR_PL_02), S32_PINCTRL_PIN(S32G_MSCR_PL_03), S32_PINCTRL_PIN(S32G_MSCR_PL_04), S32_PINCTRL_PIN(S32G_MSCR_PL_05), S32_PINCTRL_PIN(S32G_MSCR_PL_06), S32_PINCTRL_PIN(S32G_MSCR_PL_07), S32_PINCTRL_PIN(S32G_MSCR_PL_08), S32_PINCTRL_PIN(S32G_MSCR_PL_09), S32_PINCTRL_PIN(S32G_MSCR_PL_10), S32_PINCTRL_PIN(S32G_MSCR_PL_11), S32_PINCTRL_PIN(S32G_MSCR_PL_12), S32_PINCTRL_PIN(S32G_MSCR_PL_13), S32_PINCTRL_PIN(S32G_MSCR_PL_14), S32_PINCTRL_PIN(S32G_IMCR_FlexRay0_A_RX), S32_PINCTRL_PIN(S32G_IMCR_FlexRay0_B_RX), S32_PINCTRL_PIN(S32G_IMCR_FlexTimer0_CH0), S32_PINCTRL_PIN(S32G_IMCR_FlexTimer1_CH0), S32_PINCTRL_PIN(S32G_IMCR_FlexTimer0_CH1), S32_PINCTRL_PIN(S32G_IMCR_FlexTimer1_CH1), S32_PINCTRL_PIN(S32G_IMCR_FlexTimer0_CH2), S32_PINCTRL_PIN(S32G_IMCR_FlexTimer1_CH2), S32_PINCTRL_PIN(S32G_IMCR_FlexTimer0_CH3), S32_PINCTRL_PIN(S32G_IMCR_FlexTimer1_CH3), S32_PINCTRL_PIN(S32G_IMCR_FlexTimer0_CH4), S32_PINCTRL_PIN(S32G_IMCR_FlexTimer1_CH4), S32_PINCTRL_PIN(S32G_IMCR_FlexTimer0_CH5), S32_PINCTRL_PIN(S32G_IMCR_FlexTimer1_CH5), S32_PINCTRL_PIN(S32G_IMCR_FlexTimer0_EXTCLK), S32_PINCTRL_PIN(S32G_IMCR_FlexTimer1_EXTCLK), S32_PINCTRL_PIN(S32G_IMCR_I2C1_SCL), S32_PINCTRL_PIN(S32G_IMCR_I2C1_SDA), S32_PINCTRL_PIN(S32G_IMCR_I2C2_SCL), S32_PINCTRL_PIN(S32G_IMCR_I2C2_SDA), S32_PINCTRL_PIN(S32G_IMCR_I2C3_SCL), S32_PINCTRL_PIN(S32G_IMCR_I2C3_SDA), S32_PINCTRL_PIN(S32G_IMCR_I2C4_SCL), S32_PINCTRL_PIN(S32G_IMCR_I2C4_SDA), S32_PINCTRL_PIN(S32G_IMCR_LIN1_RX), S32_PINCTRL_PIN(S32G_IMCR_LIN2_RX), S32_PINCTRL_PIN(S32G_IMCR_DSPI0_PCS0), S32_PINCTRL_PIN(S32G_IMCR_DSPI0_SCK), S32_PINCTRL_PIN(S32G_IMCR_DSPI0_SIN), S32_PINCTRL_PIN(S32G_IMCR_DSPI1_PCS0), S32_PINCTRL_PIN(S32G_IMCR_DSPI1_SCK), S32_PINCTRL_PIN(S32G_IMCR_DSPI1_SIN), S32_PINCTRL_PIN(S32G_IMCR_DSPI2_PCS0), S32_PINCTRL_PIN(S32G_IMCR_DSPI2_SCK), S32_PINCTRL_PIN(S32G_IMCR_DSPI2_SIN), S32_PINCTRL_PIN(S32G_IMCR_DSPI3_PCS0), S32_PINCTRL_PIN(S32G_IMCR_DSPI3_SCK), S32_PINCTRL_PIN(S32G_IMCR_DSPI3_SIN), S32_PINCTRL_PIN(S32G_IMCR_DSPI4_PCS0), S32_PINCTRL_PIN(S32G_IMCR_DSPI4_SCK), S32_PINCTRL_PIN(S32G_IMCR_DSPI4_SIN), S32_PINCTRL_PIN(S32G_IMCR_DSPI5_PCS0), S32_PINCTRL_PIN(S32G_IMCR_DSPI5_SCK), S32_PINCTRL_PIN(S32G_IMCR_DSPI5_SIN), S32_PINCTRL_PIN(S32G_IMCR_LLCE_CAN0_RXD), S32_PINCTRL_PIN(S32G_IMCR_LLCE_CAN1_RXD), S32_PINCTRL_PIN(S32G_IMCR_LLCE_CAN2_RXD), S32_PINCTRL_PIN(S32G_IMCR_LLCE_CAN3_RXD), S32_PINCTRL_PIN(S32G_IMCR_LLCE_CAN4_RXD), S32_PINCTRL_PIN(S32G_IMCR_LLCE_CAN5_RXD), S32_PINCTRL_PIN(S32G_IMCR_LLCE_CAN6_RXD), S32_PINCTRL_PIN(S32G_IMCR_LLCE_CAN7_RXD), S32_PINCTRL_PIN(S32G_IMCR_LLCE_CAN8_RXD), S32_PINCTRL_PIN(S32G_IMCR_LLCE_CAN9_RXD), S32_PINCTRL_PIN(S32G_IMCR_LLCE_CAN10_RXD), S32_PINCTRL_PIN(S32G_IMCR_LLCE_CAN11_RXD), S32_PINCTRL_PIN(S32G_IMCR_LLCE_CAN12_RXD), S32_PINCTRL_PIN(S32G_IMCR_LLCE_CAN13_RXD), S32_PINCTRL_PIN(S32G_IMCR_LLCE_CAN14_RXD), S32_PINCTRL_PIN(S32G_IMCR_LLCE_CAN15_RXD), S32_PINCTRL_PIN(S32G_IMCR_CAN1_RXD), S32_PINCTRL_PIN(S32G_IMCR_CAN2_RXD), S32_PINCTRL_PIN(S32G_IMCR_CAN3_RXD), S32_PINCTRL_PIN(S32G_IMCR_USB_CLK), S32_PINCTRL_PIN(S32G_IMCR_USB_DATA0), S32_PINCTRL_PIN(S32G_IMCR_USB_DATA1), S32_PINCTRL_PIN(S32G_IMCR_USB_DATA2), S32_PINCTRL_PIN(S32G_IMCR_USB_DATA3), S32_PINCTRL_PIN(S32G_IMCR_USB_DATA4), S32_PINCTRL_PIN(S32G_IMCR_USB_DATA5), S32_PINCTRL_PIN(S32G_IMCR_USB_DATA6), S32_PINCTRL_PIN(S32G_IMCR_USB_DATA7), S32_PINCTRL_PIN(S32G_IMCR_USB_DIR), S32_PINCTRL_PIN(S32G_IMCR_USB_NXT), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_1_MDIO), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_1_CRS), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_1_COL), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_1_RX_D0), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_1_RX_D1), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_1_RX_D2), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_1_RX_D3), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_1_RX_ER), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_1_RX_CLK), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_1_RX_DV), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_1_TX_CLK), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_1_REF_CLK), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_2_MDIO), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_2_CRS), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_2_COL), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_2_RX_D0), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_2_RX_D1), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_2_RX_D2), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_2_RX_D3), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_2_RX_ER), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_2_RX_CLK), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_2_RX_DV), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_2_TX_CLK), S32_PINCTRL_PIN(S32G_IMCR_PFE_EMAC_2_REF_CLK), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ0), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ1), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ2), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ3), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ4), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ5), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ6), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ7), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ8), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ9), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ10), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ11), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ12), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ13), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ14), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ15), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ16), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ17), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ18), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ19), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ20), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ21), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ22), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ23), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ24), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ25), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ26), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ27), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ28), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ29), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ30), S32_PINCTRL_PIN(S32G_IMCR_SIUL_EIRQ31), }; static const struct s32_pin_range s32_pin_ranges_siul2[] = { /* MSCR pin ID ranges */ S32_PIN_RANGE(0, 101), S32_PIN_RANGE(112, 122), S32_PIN_RANGE(144, 190), /* IMCR pin ID ranges */ S32_PIN_RANGE(512, 595), S32_PIN_RANGE(631, 909), S32_PIN_RANGE(942, 1007), }; static const struct s32_pinctrl_soc_data s32_pinctrl_data = { .pins = s32_pinctrl_pads_siul2, .npins = ARRAY_SIZE(s32_pinctrl_pads_siul2), .mem_pin_ranges = s32_pin_ranges_siul2, .mem_regions = ARRAY_SIZE(s32_pin_ranges_siul2), }; static const struct of_device_id s32_pinctrl_of_match[] = { { .compatible = "nxp,s32g2-siul2-pinctrl", .data = &s32_pinctrl_data, }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, s32_pinctrl_of_match); static int s32g_pinctrl_probe(struct platform_device *pdev) { const struct s32_pinctrl_soc_data *soc_data; soc_data = of_device_get_match_data(&pdev->dev); return s32_pinctrl_probe(pdev, soc_data); } static const struct dev_pm_ops s32g_pinctrl_pm_ops = { LATE_SYSTEM_SLEEP_PM_OPS(s32_pinctrl_suspend, s32_pinctrl_resume) }; static struct platform_driver s32g_pinctrl_driver = { .driver = { .name = "s32g-siul2-pinctrl", .of_match_table = s32_pinctrl_of_match, .pm = pm_sleep_ptr(&s32g_pinctrl_pm_ops), .suppress_bind_attrs = true, }, .probe = s32g_pinctrl_probe, }; builtin_platform_driver(s32g_pinctrl_driver); MODULE_AUTHOR("Matthew Nunez <matthew.nunez@nxp.com>"); MODULE_DESCRIPTION("NXP S32G pinctrl driver"); MODULE_LICENSE("GPL");