From 02cc2edc21e6c6895cf0304beecae4d990225ea2 Mon Sep 17 00:00:00 2001 From: Daisuke Matsushita Date: Tue, 21 Mar 2017 15:05:15 +0900 Subject: [PATCH] arm: renesas: Add Renesas R8A7797 SoC support This adds Renesas R8A7797 SoC support Signed-off-by: Vladimir Barinov --- arch/arm/cpu/armv8/Kconfig | 3 + arch/arm/cpu/armv8/rcar_gen3/Makefile | 3 + arch/arm/cpu/armv8/rcar_gen3/cpu_info-r8a7797.c | 39 + arch/arm/cpu/armv8/rcar_gen3/cpu_info.c | 8 + arch/arm/cpu/armv8/rcar_gen3/pfc-r8a7797.c | 2764 ++++++++++++++++++++ arch/arm/cpu/armv8/rcar_gen3/pfc.c | 2 + arch/arm/cpu/armv8/rcar_gen3/prr_depend.c | 27 + arch/arm/include/asm/arch-rcar_gen3/gpio.h | 4 + arch/arm/include/asm/arch-rcar_gen3/r8a7797-gpio.h | 456 ++++ arch/arm/include/asm/arch-rcar_gen3/r8a7797.h | 33 + arch/arm/include/asm/arch-rcar_gen3/rcar-base.h | 5 + arch/arm/include/asm/arch-rcar_gen3/rcar_gen3.h | 2 + drivers/serial/serial_sh.h | 3 +- include/configs/rcar-gen3-common.h | 12 + 14 files changed, 3360 insertions(+), 1 deletion(-) create mode 100644 arch/arm/cpu/armv8/rcar_gen3/cpu_info-r8a7797.c create mode 100644 arch/arm/cpu/armv8/rcar_gen3/pfc-r8a7797.c create mode 100644 arch/arm/include/asm/arch-rcar_gen3/r8a7797-gpio.h create mode 100644 arch/arm/include/asm/arch-rcar_gen3/r8a7797.h diff --git a/arch/arm/cpu/armv8/Kconfig b/arch/arm/cpu/armv8/Kconfig index 01646e9..dfd9bab 100644 --- a/arch/arm/cpu/armv8/Kconfig +++ b/arch/arm/cpu/armv8/Kconfig @@ -35,6 +35,9 @@ config R8A77965 bool "Renesas SoC R8A77965" select R8A7796X +config R8A7797 + bool "Renesas SoC R8A7797" + endchoice config SYS_SOC diff --git a/arch/arm/cpu/armv8/rcar_gen3/Makefile b/arch/arm/cpu/armv8/rcar_gen3/Makefile index 01ecaa1..a7a8f79 100644 --- a/arch/arm/cpu/armv8/rcar_gen3/Makefile +++ b/arch/arm/cpu/armv8/rcar_gen3/Makefile @@ -15,3 +15,6 @@ obj-$(CONFIG_R8A7795) += lowlevel_init.o cpu_info-r8a7795.o \ obj-$(CONFIG_R8A7796X) += lowlevel_init.o cpu_info-r8a7796.o \ pfc.o pfc-r8a7796.o prr_depend.o \ board.o +obj-$(CONFIG_R8A7797) += lowlevel_init.o cpu_info-r8a7797.o \ + pfc.o pfc-r8a7797.o prr_depend.o \ + board.o diff --git a/arch/arm/cpu/armv8/rcar_gen3/cpu_info-r8a7797.c b/arch/arm/cpu/armv8/rcar_gen3/cpu_info-r8a7797.c new file mode 100644 index 0000000..cc8e1e6 --- /dev/null +++ b/arch/arm/cpu/armv8/rcar_gen3/cpu_info-r8a7797.c @@ -0,0 +1,39 @@ +/* + * arch/arm/cpu/armv8/rcar_gen3/cpu_info-r8a7797.c + * This file defines cpu information funstions. + * + * Copyright (C) 2016 Renesas Electronics Corporation + * + * SPDX-License-Identifier: GPL-2.0+ + */ +#include +#include + +#define PRR 0xFFF00044 + +u32 rcar_get_cpu_type(void) +{ + u32 product; + + product = readl(PRR); + + return (product & 0x00007F00) >> 8; +} + +u32 rcar_get_cpu_rev_integer(void) +{ + u32 product; + + product = readl(PRR); + + return (u32)(((product & 0x000000F0) >> 4) + 1); +} + +u32 rcar_get_cpu_rev_fraction(void) +{ + u32 product; + + product = readl(PRR); + + return (u32)(product & 0x0000000F); +} diff --git a/arch/arm/cpu/armv8/rcar_gen3/cpu_info.c b/arch/arm/cpu/armv8/rcar_gen3/cpu_info.c index 1a699e4..0046c75 100644 --- a/arch/arm/cpu/armv8/rcar_gen3/cpu_info.c +++ b/arch/arm/cpu/armv8/rcar_gen3/cpu_info.c @@ -81,6 +81,14 @@ int print_cpuinfo(void) CONFIG_RCAR_TARGET_STRING); } break; + case 0x54: + printf("CPU: Renesas Electronics R8A7797 rev %d.%d\n", + rev_integer, rev_fraction); + if (strcmp(CONFIG_RCAR_TARGET_STRING, "r8a7797")) { + printf("Warning: this code supports only %s\n", + CONFIG_RCAR_TARGET_STRING); + } + break; } return 0; } diff --git a/arch/arm/cpu/armv8/rcar_gen3/pfc-r8a7797.c b/arch/arm/cpu/armv8/rcar_gen3/pfc-r8a7797.c new file mode 100644 index 0000000..3b2f75e --- /dev/null +++ b/arch/arm/cpu/armv8/rcar_gen3/pfc-r8a7797.c @@ -0,0 +1,2764 @@ +/* + * arch/arm/cpu/armv8/rcar_gen3/pfc-r8a7797.c + * This file is r8a7797 processor support - PFC hardware block. + * + * Copyright (C) 2016 Renesas Electronics Corporation + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include + +#define CPU_32_PORT(fn, pfx, sfx) \ + PORT_10(fn, pfx, sfx), PORT_10(fn, pfx##1, sfx), \ + PORT_10(fn, pfx##2, sfx), PORT_1(fn, pfx##30, sfx), \ + PORT_1(fn, pfx##31, sfx) + +#define CPU_32_PORT1(fn, pfx, sfx) \ + PORT_10(fn, pfx, sfx), PORT_10(fn, pfx##1, sfx), \ + PORT_10(fn, pfx##2, sfx) + +#define CPU_32_PORT2(fn, pfx, sfx) \ + PORT_10(fn, pfx, sfx), PORT_10(fn, pfx##1, sfx), \ + PORT_10(fn, pfx##2, sfx) + +#define CPU_32_PORT_28(fn, pfx, sfx) \ + PORT_10(fn, pfx, sfx), \ + PORT_10(fn, pfx##1, sfx), \ + PORT_1(fn, pfx##20, sfx), \ + PORT_1(fn, pfx##21, sfx), \ + PORT_1(fn, pfx##22, sfx), \ + PORT_1(fn, pfx##23, sfx), \ + PORT_1(fn, pfx##24, sfx), \ + PORT_1(fn, pfx##25, sfx), \ + PORT_1(fn, pfx##26, sfx), \ + PORT_1(fn, pfx##27, sfx) + +#define CPU_32_PORT_22(fn, pfx, sfx) \ + PORT_10(fn, pfx, sfx), \ + PORT_10(fn, pfx##1, sfx), \ + PORT_1(fn, pfx##20, sfx), \ + PORT_1(fn, pfx##21, sfx) + +#define CPU_32_PORT_17(fn, pfx, sfx) \ + PORT_10(fn, pfx, sfx), \ + PORT_1(fn, pfx##10, sfx), \ + PORT_1(fn, pfx##11, sfx), \ + PORT_1(fn, pfx##12, sfx), \ + PORT_1(fn, pfx##13, sfx), \ + PORT_1(fn, pfx##14, sfx), \ + PORT_1(fn, pfx##15, sfx), \ + PORT_1(fn, pfx##16, sfx) + +#define CPU_32_PORT_15(fn, pfx, sfx) \ + PORT_10(fn, pfx, sfx), \ + PORT_1(fn, pfx##10, sfx), \ + PORT_1(fn, pfx##11, sfx), \ + PORT_1(fn, pfx##12, sfx), \ + PORT_1(fn, pfx##13, sfx), \ + PORT_1(fn, pfx##14, sfx) + +#define CPU_32_PORT_6(fn, pfx, sfx) \ + PORT_1(fn, pfx##0, sfx), \ + PORT_1(fn, pfx##1, sfx), \ + PORT_1(fn, pfx##2, sfx), \ + PORT_1(fn, pfx##3, sfx), \ + PORT_1(fn, pfx##4, sfx), \ + PORT_1(fn, pfx##5, sfx) + + +/* --gen3-- */ +/* GP_0_0_DATA -> GP_5_14_DATA */ +/* except for GP0[22] - [31], + GP1[28] - [31], + GP2[17] - [31], + GP3[17] - [31], + GP4[6] - [31], + GP5[15] - [31], */ + +#define CPU_ALL_PORT(fn, pfx, sfx) \ + CPU_32_PORT_22(fn, pfx##_0_, sfx), \ + CPU_32_PORT_28(fn, pfx##_1_, sfx), \ + CPU_32_PORT_17(fn, pfx##_2_, sfx), \ + CPU_32_PORT_17(fn, pfx##_3_, sfx), \ + CPU_32_PORT_6(fn, pfx##_4_, sfx), \ + CPU_32_PORT_15(fn, pfx##_5_, sfx) + +#define _GP_GPIO(pfx, sfx) PINMUX_GPIO(GPIO_GP##pfx, GP##pfx##_DATA) +#define _GP_DATA(pfx, sfx) PINMUX_DATA(GP##pfx##_DATA, GP##pfx##_FN, \ + GP##pfx##_IN, GP##pfx##_OUT) + +#define _GP_INOUTSEL(pfx, sfx) GP##pfx##_IN, GP##pfx##_OUT +#define _GP_INDT(pfx, sfx) GP##pfx##_DATA + +#define GP_ALL(str) CPU_ALL_PORT(_PORT_ALL, GP, str) +#define PINMUX_GPIO_GP_ALL() CPU_ALL_PORT(_GP_GPIO, , unused) +#define PINMUX_DATA_GP_ALL() CPU_ALL_PORT(_GP_DATA, , unused) + + +#define PORT_10_REV(fn, pfx, sfx) \ + PORT_1(fn, pfx##9, sfx), PORT_1(fn, pfx##8, sfx), \ + PORT_1(fn, pfx##7, sfx), PORT_1(fn, pfx##6, sfx), \ + PORT_1(fn, pfx##5, sfx), PORT_1(fn, pfx##4, sfx), \ + PORT_1(fn, pfx##3, sfx), PORT_1(fn, pfx##2, sfx), \ + PORT_1(fn, pfx##1, sfx), PORT_1(fn, pfx##0, sfx) + +#define CPU_32_PORT_REV(fn, pfx, sfx) \ + PORT_1(fn, pfx##31, sfx), PORT_1(fn, pfx##30, sfx), \ + PORT_10_REV(fn, pfx##2, sfx), PORT_10_REV(fn, pfx##1, sfx), \ + PORT_10_REV(fn, pfx, sfx) + +#define GP_INOUTSEL(bank) CPU_32_PORT_REV(_GP_INOUTSEL, _##bank##_, unused) +#define GP_INDT(bank) CPU_32_PORT_REV(_GP_INDT, _##bank##_, unused) + +#define PINMUX_IPSR_IDATA(fn) PINMUX_DATA(fn##_IMARK, GFN_##fn, IFN_##fn) +#define PINMUX_IPSR_DATA(ipsr, fn) PINMUX_DATA(fn##_MARK, GFN_##ipsr, FN_##fn) +#define PINMUX_IPSR_MODSEL_DATA(ipsr, fn, ms) PINMUX_DATA(fn##_MARK, FN_##ms, \ + FN_##ipsr, FN_##fn) + +enum { + PINMUX_RESERVED = 0, + + PINMUX_DATA_BEGIN, + GP_ALL(DATA), + PINMUX_DATA_END, + + PINMUX_INPUT_BEGIN, + GP_ALL(IN), + PINMUX_INPUT_END, + + PINMUX_OUTPUT_BEGIN, + GP_ALL(OUT), + PINMUX_OUTPUT_END, + + PINMUX_FUNCTION_BEGIN, + GP_ALL(FN), + + /* GPSR0 */ + GFN_DU_EXODDF_DU_ODDF_DISP_CDE, + GFN_DU_EXVSYNC_DU_VSYNC, + GFN_DU_EXHSYNC_DU_HSYNC, + GFN_DU_DOTCLKOUT, + GFN_DU_DB7, + GFN_DU_DB6, + GFN_DU_DB5, + GFN_DU_DB4, + GFN_DU_DB3, + GFN_DU_DB2, + GFN_DU_DG7, + GFN_DU_DG6, + GFN_DU_DG5, + GFN_DU_DG4, + GFN_DU_DG3, + GFN_DU_DG2, + GFN_DU_DR7, + GFN_DU_DR6, + GFN_DU_DR5, + GFN_DU_DR4, + GFN_DU_DR3, + GFN_DU_DR2, + + /* GPSR1 */ + GFN_DIGRF_CLKOUT, + GFN_DIGRF_CLKIN, + GFN_CANFD_CLK_A, + GFN_CANFD1_RX, + GFN_CANFD1_TX, + GFN_CANFD0_RX_A, + GFN_CANFD0_TX_A, + GFN_AVB0_AVTP_CAPTURE, + FN_AVB0_AVTP_MATCH, + FN_AVB0_LINK, + FN_AVB0_PHY_INT, + FN_AVB0_MAGIC, + FN_AVB0_MDC, + FN_AVB0_MDIO, + FN_AVB0_TXCREFCLK, + FN_AVB0_TD3, + FN_AVB0_TD2, + FN_AVB0_TD1, + FN_AVB0_TD0, + FN_AVB0_TXC, + FN_AVB0_TX_CTL, + FN_AVB0_RD3, + FN_AVB0_RD2, + FN_AVB0_RD1, + FN_AVB0_RD0, + FN_AVB0_RXC, + FN_AVB0_RX_CTL, + GFN_IRQ0, + + /* GPSR2 */ + GFN_VI0_FIELD, + GFN_VI0_DATA11, + GFN_VI0_DATA10, + GFN_VI0_DATA9, + GFN_VI0_DATA8, + GFN_VI0_DATA7, + GFN_VI0_DATA6, + GFN_VI0_DATA5, + GFN_VI0_DATA4, + GFN_VI0_DATA3, + GFN_VI0_DATA2, + GFN_VI0_DATA1, + GFN_VI0_DATA0, + GFN_VI0_VSYNC_N, + GFN_VI0_HSYNC_N, + GFN_VI0_CLKENB, + GFN_VI0_CLK, + + /* GPSR3 */ + GFN_VI1_FIELD, + GFN_VI1_DATA11, + GFN_VI1_DATA10, + GFN_VI1_DATA9, + GFN_VI1_DATA8, + GFN_VI1_DATA7, + GFN_VI1_DATA6, + GFN_VI1_DATA5, + GFN_VI1_DATA4, + GFN_VI1_DATA3, + GFN_VI1_DATA2, + GFN_VI1_DATA1, + GFN_VI1_DATA0, + GFN_VI1_VSYNC_N, + GFN_VI1_HSYNC_N, + GFN_VI1_CLKENB, + GFN_VI1_CLK, + + /* GPSR4 */ + GFN_SDA2, + GFN_SCL2, + GFN_SDA1, + GFN_SCL1, + GFN_SDA0, + GFN_SCL0, + + /* GPSR5 */ + FN_RPC_INT_N, + FN_RPC_WP_N, + FN_RPC_RESET_N, + FN_QSPI1_SSL, + FN_QSPI1_IO3, + FN_QSPI1_IO2, + FN_QSPI1_MISO_IO1, + FN_QSPI1_MOSI_IO0, + FN_QSPI1_SPCLK, + FN_QSPI0_SSL, + FN_QSPI0_IO3, + FN_QSPI0_IO2, + FN_QSPI0_MISO_IO1, + FN_QSPI0_MOSI_IO0, + FN_QSPI0_SPCLK, + + /* IPSR0 */ + IFN_DU_DR2, + FN_HSCK0, + FN_A0, + IFN_DU_DR3, + FN_HRTS0_N, + FN_A1, + IFN_DU_DR4, + FN_HCTS0_N, + FN_A2, + IFN_DU_DR5, + FN_HTX0, + FN_A3, + IFN_DU_DR6, + FN_MSIOF3_RXD, + FN_A4, + IFN_DU_DR7, + FN_MSIOF3_TXD, + FN_A5, + IFN_DU_DG2, + FN_MSIOF3_SS1, + FN_A6, + IFN_DU_DG3, + FN_MSIOF3_SS2, + FN_A7, + FN_PWMFSW0, + + /* IPSR1 */ + IFN_DU_DG4, + FN_A8, + FN_FSO_CFE_0_N_A, + IFN_DU_DG5, + FN_A9, + FN_FSO_CFE_1_N_A, + IFN_DU_DG6, + FN_A10, + FN_FSO_TOE_N_A, + IFN_DU_DG7, + FN_A11, + FN_IRQ1, + IFN_DU_DB2, + FN_A12, + FN_IRQ2, + IFN_DU_DB3, + FN_A13, + FN_FXR_CLKOUT1, + IFN_DU_DB4, + FN_A14, + FN_FXR_CLKOUT2, + IFN_DU_DB5, + FN_A15, + FN_FXR_TXENA_N, + + /* IPSR2 */ + IFN_DU_DB6, + FN_A16, + FN_FXR_TXENB_N, + IFN_DU_DB7, + FN_A17, + FN_STPWT_EXTFXR, + IFN_DU_DOTCLKOUT, + FN_SCIF_CLK_A, + FN_A18, + IFN_DU_EXHSYNC_DU_HSYNC, + FN_HRX0, + FN_A19, + FN_IRQ3, + IFN_DU_EXVSYNC_DU_VSYNC, + FN_MSIOF3_SCK, + FN_A20, + IFN_DU_EXODDF_DU_ODDF_DISP_CDE, + FN_MSIOF3_SYNC, + FN_A21, + IFN_IRQ0, + FN_CC5_OSCOUT, + IFN_VI0_CLK, + FN_MSIOF2_SCK, + FN_SCK3, + FN_HSCK3, + + /* IPSR3 */ + IFN_VI0_CLKENB, + FN_MSIOF2_RXD, + FN_RX3, + FN_RD_WR_N, + FN_HCTS3_N, + IFN_VI0_HSYNC_N, + FN_MSIOF2_TXD, + FN_TX3, + FN_HRTS3_N, + IFN_VI0_VSYNC_N, + FN_MSIOF2_SYNC, + FN_CTS3_N, + FN_HTX3, + IFN_VI0_DATA0, + FN_MSIOF2_SS1, + FN_RTS3_N_TANS, + FN_HRX3, + IFN_VI0_DATA1, + FN_MSIOF2_SS2, + FN_SCK1, + FN_SPEEDIN_A, + IFN_VI0_DATA2, + FN_AVB0_AVTP_PPS, + FN_SDA3_A, + IFN_VI0_DATA3, + FN_HSCK1, + FN_SCL3_A, + IFN_VI0_DATA4, + FN_HRTS1_N, + FN_RX1_A, + + /* IPSR4 */ + IFN_VI0_DATA5, + FN_HCTS1_N, + FN_TX1_A, + IFN_VI0_DATA6, + FN_HTX1, + FN_CTS1_N, + IFN_VI0_DATA7, + FN_HRX1, + FN_RTS1_N_TANS, + IFN_VI0_DATA8, + FN_HSCK2, + FN_PWM0_A, + FN_A22, + IFN_VI0_DATA9, + FN_HCTS2_N, + FN_PWM1_A, + FN_A23, + FN_FSO_CFE_0_N_B, + IFN_VI0_DATA10, + FN_HRTS2_N, + FN_PWM2_A, + FN_A24, + FN_FSO_CFE_1_N_B, + IFN_VI0_DATA11, + FN_HTX2, + FN_PWM3_A, + FN_A25, + FN_FSO_TOE_N_B, + IFN_VI0_FIELD, + FN_HRX2, + FN_PWM4_A, + FN_CS1_N_A26, + FN_FSCLKST2_N_A, + + /* IPSR5 */ + IFN_VI1_CLK, + FN_MSIOF1_RXD, + FN_CS0_N, + IFN_VI1_CLKENB, + FN_MSIOF1_TXD, + FN_D0, + IFN_VI1_HSYNC_N, + FN_MSIOF1_SCK, + FN_D1, + IFN_VI1_VSYNC_N, + FN_MSIOF1_SYNC, + FN_D2, + IFN_VI1_DATA0, + FN_MSIOF1_SS1, + FN_D3, + IFN_VI1_DATA1, + FN_MSIOF1_SS2, + FN_D4, + FN_MMC_CMD, + IFN_VI1_DATA2, + FN_CANFD0_TX_B, + FN_D5, + FN_MMC_D0, + IFN_VI1_DATA3, + FN_CANFD0_RX_B, + FN_D6, + FN_MMC_D1, + + /* IPSR6 */ + IFN_VI1_DATA4, + FN_CANFD_CLK_B, + FN_D7, + FN_MMC_D2, + IFN_VI1_DATA5, + FN_SCK4, + FN_D8, + FN_MMC_D3, + IFN_VI1_DATA6, + FN_RX4, + FN_D9, + FN_MMC_CLK, + IFN_VI1_DATA7, + FN_TX4, + FN_D10, + FN_MMC_D4, + IFN_VI1_DATA8, + FN_CTS4_N, + FN_D11, + FN_MMC_D5, + IFN_VI1_DATA9, + FN_RTS4_N_TANS, + FN_D12, + FN_MMC_D6, + FN_SCL3_B, + IFN_VI1_DATA10, + FN_D13, + FN_MMC_D7, + FN_SDA3_B, + IFN_VI1_DATA11, + FN_SCL4, + FN_IRQ4, + FN_D14, + FN_MMC_WP, + + /* IPSR7 */ + IFN_VI1_FIELD, + FN_SDA4, + FN_IRQ5, + FN_D15, + FN_MMC_CD, + IFN_SCL0, + FN_DU_DR0, + FN_TPU0TO0, + FN_CLKOUT, + FN_MSIOF0_RXD, + IFN_SDA0, + FN_DU_DR1, + FN_TPU0TO1, + FN_BS_N, + FN_SCK0, + FN_MSIOF0_TXD, + IFN_SCL1, + FN_DU_DG0, + FN_TPU0TO2, + FN_RD_N, + FN_CTS0_N, + FN_MSIOF0_SCK, + IFN_SDA1, + FN_DU_DG1, + FN_TPU0TO3, + FN_WE0_N, + FN_RTS0_N_TANS, + FN_MSIOF0_SYNC, + IFN_SCL2, + FN_DU_DB0, + FN_TCLK1_A, + FN_WE1_N, + FN_RX0, + FN_MSIOF0_SS1, + IFN_SDA2, + FN_DU_DB1, + FN_TCLK2_A, + FN_EX_WAIT0, + FN_TX0, + FN_MSIOF0_SS2, + IFN_AVB0_AVTP_CAPTURE, + FN_FSCLKST2_N_B, + + /* IPSR8 */ + IFN_CANFD0_TX_A, + FN_FXR_TXDA, + FN_PWM0_B, + FN_DU_DISP, + FN_FSCLKST2_N_C, + IFN_CANFD0_RX_A, + FN_RXDA_EXTFXR, + FN_PWM1_B, + FN_DU_CDE, + IFN_CANFD1_TX, + FN_FXR_TXDB, + FN_PWM2_B, + FN_TCLK1_B, + FN_TX1_B, + IFN_CANFD1_RX, + FN_RXDB_EXTFXR, + FN_PWM3_B, + FN_TCLK2_B, + FN_RX1_B, + IFN_CANFD_CLK_A, + FN_CLK_EXTFXR, + FN_PWM4_B, + FN_SPEEDIN_B, + FN_SCIF_CLK_B, + IFN_DIGRF_CLKIN, + FN_DIGRF_CLKEN_IN, + IFN_DIGRF_CLKOUT, + FN_DIGRF_CLKEN_OUT, + + /* MOD_SEL0 */ + FN_SEL_HSCIF0_0, FN_SEL_HSCIF0_1, + FN_SEL_SCIF1_0, FN_SEL_SCIF1_1, + FN_SEL_CANFD0_0, FN_SEL_CANFD0_1, + FN_SEL_PWM4_0, FN_SEL_PWM4_1, + FN_SEL_PWM3_0, FN_SEL_PWM3_1, + FN_SEL_PWM2_0, FN_SEL_PWM2_1, + FN_SEL_PWM1_0, FN_SEL_PWM1_1, + FN_SEL_PWM0_0, FN_SEL_PWM0_1, + FN_SEL_RFSO_0, FN_SEL_RFSO_1, + FN_SEL_RSP_0, FN_SEL_RSP_1, + FN_SEL_TMU_0, FN_SEL_TMU_1, + + PINMUX_FUNCTION_END, + + PINMUX_MARK_BEGIN, + + /* GPSR0 */ + DU_EXODDF_DU_ODDF_DISP_CDE_GMARK, + DU_EXVSYNC_DU_VSYNC_GMARK, + DU_EXHSYNC_DU_HSYNC_GMARK, + DU_DOTCLKOUT_GMARK, + DU_DB7_GMARK, + DU_DB6_GMARK, + DU_DB5_GMARK, + DU_DB4_GMARK, + DU_DB3_GMARK, + DU_DB2_GMARK, + DU_DG7_GMARK, + DU_DG6_GMARK, + DU_DG5_GMARK, + DU_DG4_GMARK, + DU_DG3_GMARK, + DU_DG2_GMARK, + DU_DR7_GMARK, + DU_DR6_GMARK, + DU_DR5_GMARK, + DU_DR4_GMARK, + DU_DR3_GMARK, + DU_DR2_GMARK, + + /* GPSR1 */ + DIGRF_CLKOUT_GMARK, + DIGRF_CLKIN_GMARK, + CANFD_CLK_A_GMARK, + CANFD1_RX_GMARK, + CANFD1_TX_GMARK, + CANFD0_RX_A_GMARK, + CANFD0_TX_A_GMARK, + AVB0_AVTP_CAPTURE_GMARK, + AVB0_AVTP_MATCH_MARK, + AVB0_LINK_MARK, + AVB0_PHY_INT_MARK, + AVB0_MAGIC_MARK, + AVB0_MDC_MARK, + AVB0_MDIO_MARK, + AVB0_TXCREFCLK_MARK, + AVB0_TD3_MARK, + AVB0_TD2_MARK, + AVB0_TD1_MARK, + AVB0_TD0_MARK, + AVB0_TXC_MARK, + AVB0_TX_CTL_MARK, + AVB0_RD3_MARK, + AVB0_RD2_MARK, + AVB0_RD1_MARK, + AVB0_RD0_MARK, + AVB0_RXC_MARK, + AVB0_RX_CTL_MARK, + IRQ0_GMARK, + + /* GPSR2 */ + VI0_FIELD_GMARK, + VI0_DATA11_GMARK, + VI0_DATA10_GMARK, + VI0_DATA9_GMARK, + VI0_DATA8_GMARK, + VI0_DATA7_GMARK, + VI0_DATA6_GMARK, + VI0_DATA5_GMARK, + VI0_DATA4_GMARK, + VI0_DATA3_GMARK, + VI0_DATA2_GMARK, + VI0_DATA1_GMARK, + VI0_DATA0_GMARK, + VI0_VSYNC_N_GMARK, + VI0_HSYNC_N_GMARK, + VI0_CLKENB_GMARK, + VI0_CLK_GMARK, + + /* GPSR3 */ + VI1_FIELD_GMARK, + VI1_DATA11_GMARK, + VI1_DATA10_GMARK, + VI1_DATA9_GMARK, + VI1_DATA8_GMARK, + VI1_DATA7_GMARK, + VI1_DATA6_GMARK, + VI1_DATA5_GMARK, + VI1_DATA4_GMARK, + VI1_DATA3_GMARK, + VI1_DATA2_GMARK, + VI1_DATA1_GMARK, + VI1_DATA0_GMARK, + VI1_VSYNC_N_GMARK, + VI1_HSYNC_N_GMARK, + VI1_CLKENB_GMARK, + VI1_CLK_GMARK, + + /* GPSR4 */ + SDA2_GMARK, + SCL2_GMARK, + SDA1_GMARK, + SCL1_GMARK, + SDA0_GMARK, + SCL0_GMARK, + + /* GPSR5 */ + RPC_INT_N_MARK, + RPC_WP_N_MARK, + RPC_RESET_N_MARK, + QSPI1_SSL_MARK, + QSPI1_IO3_MARK, + QSPI1_IO2_MARK, + QSPI1_MISO_IO1_MARK, + QSPI1_MOSI_IO0_MARK, + QSPI1_SPCLK_MARK, + QSPI0_SSL_MARK, + QSPI0_IO3_MARK, + QSPI0_IO2_MARK, + QSPI0_MISO_IO1_MARK, + QSPI0_MOSI_IO0_MARK, + QSPI0_SPCLK_MARK, + + /* IPSR0 */ + DU_DR2_IMARK, + HSCK0_MARK, + A0_MARK, + DU_DR3_IMARK, + HRTS0_N_MARK, + A1_MARK, + DU_DR4_IMARK, + HCTS0_N_MARK, + A2_MARK, + DU_DR5_IMARK, + HTX0_MARK, + A3_MARK, + DU_DR6_IMARK, + MSIOF3_RXD_MARK, + A4_MARK, + DU_DR7_IMARK, + MSIOF3_TXD_MARK, + A5_MARK, + DU_DG2_IMARK, + MSIOF3_SS1_MARK, + A6_MARK, + DU_DG3_IMARK, + MSIOF3_SS2_MARK, + A7_MARK, + PWMFSW0_MARK, + + /* IPSR1 */ + DU_DG4_IMARK, + A8_MARK, + FSO_CFE_0_N_A_MARK, + DU_DG5_IMARK, + A9_MARK, + FSO_CFE_1_N_A_MARK, + DU_DG6_IMARK, + A10_MARK, + FSO_TOE_N_A_MARK, + DU_DG7_IMARK, + A11_MARK, + IRQ1_MARK, + DU_DB2_IMARK, + A12_MARK, + IRQ2_MARK, + DU_DB3_IMARK, + A13_MARK, + FXR_CLKOUT1_MARK, + DU_DB4_IMARK, + A14_MARK, + FXR_CLKOUT2_MARK, + DU_DB5_IMARK, + A15_MARK, + FXR_TXENA_N_MARK, + + /* IPSR2 */ + DU_DB6_IMARK, + A16_MARK, + FXR_TXENB_N_MARK, + DU_DB7_IMARK, + A17_MARK, + STPWT_EXTFXR_MARK, + DU_DOTCLKOUT_IMARK, + SCIF_CLK_A_MARK, + A18_MARK, + DU_EXHSYNC_DU_HSYNC_IMARK, + HRX0_MARK, + A19_MARK, + IRQ3_MARK, + DU_EXVSYNC_DU_VSYNC_IMARK, + MSIOF3_SCK_MARK, + A20_MARK, + DU_EXODDF_DU_ODDF_DISP_CDE_IMARK, + MSIOF3_SYNC_MARK, + A21_MARK, + IRQ0_IMARK, + CC5_OSCOUT_MARK, + VI0_CLK_IMARK, + MSIOF2_SCK_MARK, + SCK3_MARK, + HSCK3_MARK, + + /* IPSR3 */ + VI0_CLKENB_IMARK, + MSIOF2_RXD_MARK, + RX3_MARK, + RD_WR_N_MARK, + HCTS3_N_MARK, + VI0_HSYNC_N_IMARK, + MSIOF2_TXD_MARK, + TX3_MARK, + HRTS3_N_MARK, + VI0_VSYNC_N_IMARK, + MSIOF2_SYNC_MARK, + CTS3_N_MARK, + HTX3_MARK, + VI0_DATA0_IMARK, + MSIOF2_SS1_MARK, + RTS3_N_TANS_MARK, + HRX3_MARK, + VI0_DATA1_IMARK, + MSIOF2_SS2_MARK, + SCK1_MARK, + SPEEDIN_A_MARK, + VI0_DATA2_IMARK, + AVB0_AVTP_PPS_MARK, + SDA3_A_MARK, + VI0_DATA3_IMARK, + HSCK1_MARK, + SCL3_A_MARK, + VI0_DATA4_IMARK, + HRTS1_N_MARK, + RX1_A_MARK, + + /* IPSR4 */ + VI0_DATA5_IMARK, + HCTS1_N_MARK, + TX1_A_MARK, + VI0_DATA6_IMARK, + HTX1_MARK, + CTS1_N_MARK, + VI0_DATA7_IMARK, + HRX1_MARK, + RTS1_N_TANS_MARK, + VI0_DATA8_IMARK, + HSCK2_MARK, + PWM0_A_MARK, + A22_MARK, + VI0_DATA9_IMARK, + HCTS2_N_MARK, + PWM1_A_MARK, + A23_MARK, + FSO_CFE_0_N_B_MARK, + VI0_DATA10_IMARK, + HRTS2_N_MARK, + PWM2_A_MARK, + A24_MARK, + FSO_CFE_1_N_B_MARK, + VI0_DATA11_IMARK, + HTX2_MARK, + PWM3_A_MARK, + A25_MARK, + FSO_TOE_N_B_MARK, + VI0_FIELD_IMARK, + HRX2_MARK, + PWM4_A_MARK, + CS1_N_A26_MARK, + FSCLKST2_N_A_MARK, + + /* IPSR5 */ + VI1_CLK_IMARK, + MSIOF1_RXD_MARK, + CS0_N_MARK, + VI1_CLKENB_IMARK, + MSIOF1_TXD_MARK, + D0_MARK, + VI1_HSYNC_N_IMARK, + MSIOF1_SCK_MARK, + D1_MARK, + VI1_VSYNC_N_IMARK, + MSIOF1_SYNC_MARK, + D2_MARK, + VI1_DATA0_IMARK, + MSIOF1_SS1_MARK, + D3_MARK, + VI1_DATA1_IMARK, + MSIOF1_SS2_MARK, + D4_MARK, + MMC_CMD_MARK, + VI1_DATA2_IMARK, + CANFD0_TX_B_MARK, + D5_MARK, + MMC_D0_MARK, + VI1_DATA3_IMARK, + CANFD0_RX_B_MARK, + D6_MARK, + MMC_D1_MARK, + + /* IPSR6 */ + VI1_DATA4_IMARK, + CANFD_CLK_B_MARK, + D7_MARK, + MMC_D2_MARK, + VI1_DATA5_IMARK, + SCK4_MARK, + D8_MARK, + MMC_D3_MARK, + VI1_DATA6_IMARK, + RX4_MARK, + D9_MARK, + MMC_CLK_MARK, + VI1_DATA7_IMARK, + TX4_MARK, + D10_MARK, + MMC_D4_MARK, + VI1_DATA8_IMARK, + CTS4_N_MARK, + D11_MARK, + MMC_D5_MARK, + VI1_DATA9_IMARK, + RTS4_N_TANS_MARK, + D12_MARK, + MMC_D6_MARK, + SCL3_B_MARK, + VI1_DATA10_IMARK, + D13_MARK, + MMC_D7_MARK, + SDA3_B_MARK, + VI1_DATA11_IMARK, + SCL4_MARK, + IRQ4_MARK, + D14_MARK, + MMC_WP_MARK, + + /* IPSR7 */ + VI1_FIELD_IMARK, + SDA4_MARK, + IRQ5_MARK, + D15_MARK, + MMC_CD_MARK, + SCL0_IMARK, + DU_DR0_MARK, + TPU0TO0_MARK, + CLKOUT_MARK, + MSIOF0_RXD_MARK, + SDA0_IMARK, + DU_DR1_MARK, + TPU0TO1_MARK, + BS_N_MARK, + SCK0_MARK, + MSIOF0_TXD_MARK, + SCL1_IMARK, + DU_DG0_MARK, + TPU0TO2_MARK, + RD_N_MARK, + CTS0_N_MARK, + MSIOF0_SCK_MARK, + SDA1_IMARK, + DU_DG1_MARK, + TPU0TO3_MARK, + WE0_N_MARK, + RTS0_N_TANS_MARK, + MSIOF0_SYNC_MARK, + SCL2_IMARK, + DU_DB0_MARK, + TCLK1_A_MARK, + WE1_N_MARK, + RX0_MARK, + MSIOF0_SS1_MARK, + SDA2_IMARK, + DU_DB1_MARK, + TCLK2_A_MARK, + EX_WAIT0_MARK, + TX0_MARK, + MSIOF0_SS2_MARK, + AVB0_AVTP_CAPTURE_IMARK, + FSCLKST2_N_B_MARK, + + /* IPSR8 */ + CANFD0_TX_A_IMARK, + FXR_TXDA_MARK, + PWM0_B_MARK, + DU_DISP_MARK, + FSCLKST2_N_C_MARK, + CANFD0_RX_A_IMARK, + RXDA_EXTFXR_MARK, + PWM1_B_MARK, + DU_CDE_MARK, + CANFD1_TX_IMARK, + FXR_TXDB_MARK, + PWM2_B_MARK, + TCLK1_B_MARK, + TX1_B_MARK, + CANFD1_RX_IMARK, + RXDB_EXTFXR_MARK, + PWM3_B_MARK, + TCLK2_B_MARK, + RX1_B_MARK, + CANFD_CLK_A_IMARK, + CLK_EXTFXR_MARK, + PWM4_B_MARK, + SPEEDIN_B_MARK, + SCIF_CLK_B_MARK, + DIGRF_CLKIN_IMARK, + DIGRF_CLKEN_IN_MARK, + DIGRF_CLKOUT_IMARK, + DIGRF_CLKEN_OUT_MARK, + + PINMUX_MARK_END, +}; + +static pinmux_enum_t pinmux_data[] = { + PINMUX_DATA_GP_ALL(), /* PINMUX_DATA(GP_M_N_DATA, GP_M_N_FN...), */ + + /* GPSR0 */ + PINMUX_DATA(DU_EXODDF_DU_ODDF_DISP_CDE_GMARK, GFN_DU_EXODDF_DU_ODDF_DISP_CDE), + PINMUX_DATA(DU_EXVSYNC_DU_VSYNC_GMARK, GFN_DU_EXVSYNC_DU_VSYNC), + PINMUX_DATA(DU_EXHSYNC_DU_HSYNC_GMARK, GFN_DU_EXHSYNC_DU_HSYNC), + PINMUX_DATA(DU_DOTCLKOUT_GMARK, GFN_DU_DOTCLKOUT), + PINMUX_DATA(DU_DB7_GMARK, GFN_DU_DB7), + PINMUX_DATA(DU_DB6_GMARK, GFN_DU_DB6), + PINMUX_DATA(DU_DB5_GMARK, GFN_DU_DB5), + PINMUX_DATA(DU_DB4_GMARK, GFN_DU_DB4), + PINMUX_DATA(DU_DB3_GMARK, GFN_DU_DB3), + PINMUX_DATA(DU_DB2_GMARK, GFN_DU_DB2), + PINMUX_DATA(DU_DG7_GMARK, GFN_DU_DG7), + PINMUX_DATA(DU_DG6_GMARK, GFN_DU_DG6), + PINMUX_DATA(DU_DG5_GMARK, GFN_DU_DG5), + PINMUX_DATA(DU_DG4_GMARK, GFN_DU_DG4), + PINMUX_DATA(DU_DG3_GMARK, GFN_DU_DG3), + PINMUX_DATA(DU_DG2_GMARK, GFN_DU_DG2), + PINMUX_DATA(DU_DR7_GMARK, GFN_DU_DR7), + PINMUX_DATA(DU_DR6_GMARK, GFN_DU_DR6), + PINMUX_DATA(DU_DR5_GMARK, GFN_DU_DR5), + PINMUX_DATA(DU_DR4_GMARK, GFN_DU_DR4), + PINMUX_DATA(DU_DR3_GMARK, GFN_DU_DR3), + PINMUX_DATA(DU_DR2_GMARK, GFN_DU_DR2), + + /* GPSR1 */ + PINMUX_DATA(DIGRF_CLKOUT_GMARK, GFN_DIGRF_CLKOUT), + PINMUX_DATA(DIGRF_CLKIN_GMARK, GFN_DIGRF_CLKIN), + PINMUX_DATA(CANFD_CLK_A_GMARK, GFN_CANFD_CLK_A), + PINMUX_DATA(CANFD1_RX_GMARK, GFN_CANFD1_RX), + PINMUX_DATA(CANFD1_TX_GMARK, GFN_CANFD1_TX), + PINMUX_DATA(CANFD0_RX_A_GMARK, GFN_CANFD0_RX_A), + PINMUX_DATA(CANFD0_TX_A_GMARK, GFN_CANFD0_TX_A), + PINMUX_DATA(AVB0_AVTP_CAPTURE_GMARK, GFN_AVB0_AVTP_CAPTURE), + PINMUX_DATA(AVB0_AVTP_MATCH_MARK, FN_AVB0_AVTP_MATCH), + PINMUX_DATA(AVB0_LINK_MARK, FN_AVB0_LINK), + PINMUX_DATA(AVB0_PHY_INT_MARK, FN_AVB0_PHY_INT), + PINMUX_DATA(AVB0_MAGIC_MARK, FN_AVB0_MAGIC), + PINMUX_DATA(AVB0_MDC_MARK, FN_AVB0_MDC), + PINMUX_DATA(AVB0_MDIO_MARK, FN_AVB0_MDIO), + PINMUX_DATA(AVB0_TXCREFCLK_MARK, FN_AVB0_TXCREFCLK), + PINMUX_DATA(AVB0_TD3_MARK, FN_AVB0_TD3), + PINMUX_DATA(AVB0_TD2_MARK, FN_AVB0_TD2), + PINMUX_DATA(AVB0_TD1_MARK, FN_AVB0_TD1), + PINMUX_DATA(AVB0_TD0_MARK, FN_AVB0_TD0), + PINMUX_DATA(AVB0_TXC_MARK, FN_AVB0_TXC), + PINMUX_DATA(AVB0_TX_CTL_MARK, FN_AVB0_TX_CTL), + PINMUX_DATA(AVB0_RD3_MARK, FN_AVB0_RD3), + PINMUX_DATA(AVB0_RD2_MARK, FN_AVB0_RD2), + PINMUX_DATA(AVB0_RD1_MARK, FN_AVB0_RD1), + PINMUX_DATA(AVB0_RD0_MARK, FN_AVB0_RD0), + PINMUX_DATA(AVB0_RXC_MARK, FN_AVB0_RXC), + PINMUX_DATA(AVB0_RX_CTL_MARK, FN_AVB0_RX_CTL), + PINMUX_DATA(IRQ0_GMARK, GFN_IRQ0), + + /* GPSR2 */ + PINMUX_DATA(VI0_FIELD_GMARK, GFN_VI0_FIELD), + PINMUX_DATA(VI0_DATA11_GMARK, GFN_VI0_DATA11), + PINMUX_DATA(VI0_DATA10_GMARK, GFN_VI0_DATA10), + PINMUX_DATA(VI0_DATA9_GMARK, GFN_VI0_DATA9), + PINMUX_DATA(VI0_DATA8_GMARK, GFN_VI0_DATA8), + PINMUX_DATA(VI0_DATA7_GMARK, GFN_VI0_DATA7), + PINMUX_DATA(VI0_DATA6_GMARK, GFN_VI0_DATA6), + PINMUX_DATA(VI0_DATA5_GMARK, GFN_VI0_DATA5), + PINMUX_DATA(VI0_DATA4_GMARK, GFN_VI0_DATA4), + PINMUX_DATA(VI0_DATA3_GMARK, GFN_VI0_DATA3), + PINMUX_DATA(VI0_DATA2_GMARK, GFN_VI0_DATA2), + PINMUX_DATA(VI0_DATA1_GMARK, GFN_VI0_DATA1), + PINMUX_DATA(VI0_DATA0_GMARK, GFN_VI0_DATA0), + PINMUX_DATA(VI0_VSYNC_N_GMARK, GFN_VI0_VSYNC_N), + PINMUX_DATA(VI0_HSYNC_N_GMARK, GFN_VI0_HSYNC_N), + PINMUX_DATA(VI0_CLKENB_GMARK, GFN_VI0_CLKENB), + PINMUX_DATA(VI0_CLK_GMARK, GFN_VI0_CLK), + + /* GPSR3 */ + PINMUX_DATA(VI1_FIELD_GMARK, GFN_VI1_FIELD), + PINMUX_DATA(VI1_DATA11_GMARK, GFN_VI1_DATA11), + PINMUX_DATA(VI1_DATA10_GMARK, GFN_VI1_DATA10), + PINMUX_DATA(VI1_DATA9_GMARK, GFN_VI1_DATA9), + PINMUX_DATA(VI1_DATA8_GMARK, GFN_VI1_DATA8), + PINMUX_DATA(VI1_DATA7_GMARK, GFN_VI1_DATA7), + PINMUX_DATA(VI1_DATA6_GMARK, GFN_VI1_DATA6), + PINMUX_DATA(VI1_DATA5_GMARK, GFN_VI1_DATA5), + PINMUX_DATA(VI1_DATA4_GMARK, GFN_VI1_DATA4), + PINMUX_DATA(VI1_DATA3_GMARK, GFN_VI1_DATA3), + PINMUX_DATA(VI1_DATA2_GMARK, GFN_VI1_DATA2), + PINMUX_DATA(VI1_DATA1_GMARK, GFN_VI1_DATA1), + PINMUX_DATA(VI1_DATA0_GMARK, GFN_VI1_DATA0), + PINMUX_DATA(VI1_VSYNC_N_GMARK, GFN_VI1_VSYNC_N), + PINMUX_DATA(VI1_HSYNC_N_GMARK, GFN_VI1_HSYNC_N), + PINMUX_DATA(VI1_CLKENB_GMARK, GFN_VI1_CLKENB), + PINMUX_DATA(VI1_CLK_GMARK, GFN_VI1_CLK), + + /* GPSR4 */ + PINMUX_DATA(SDA2_GMARK, GFN_SDA2), + PINMUX_DATA(SCL2_GMARK, GFN_SCL2), + PINMUX_DATA(SDA1_GMARK, GFN_SDA1), + PINMUX_DATA(SCL1_GMARK, GFN_SCL1), + PINMUX_DATA(SDA0_GMARK, GFN_SDA0), + PINMUX_DATA(SCL0_GMARK, GFN_SCL0), + + /* GPSR5 */ + PINMUX_DATA(RPC_INT_N_MARK, FN_RPC_INT_N), + PINMUX_DATA(RPC_WP_N_MARK, FN_RPC_WP_N), + PINMUX_DATA(RPC_RESET_N_MARK, FN_RPC_RESET_N), + PINMUX_DATA(QSPI1_SSL_MARK, FN_QSPI1_SSL), + PINMUX_DATA(QSPI1_IO3_MARK, FN_QSPI1_IO3), + PINMUX_DATA(QSPI1_IO2_MARK, FN_QSPI1_IO2), + PINMUX_DATA(QSPI1_MISO_IO1_MARK, FN_QSPI1_MISO_IO1), + PINMUX_DATA(QSPI1_MOSI_IO0_MARK, FN_QSPI1_MOSI_IO0), + PINMUX_DATA(QSPI1_SPCLK_MARK, FN_QSPI1_SPCLK), + PINMUX_DATA(QSPI0_SSL_MARK, FN_QSPI0_SSL), + PINMUX_DATA(QSPI0_IO3_MARK, FN_QSPI0_IO3), + PINMUX_DATA(QSPI0_IO2_MARK, FN_QSPI0_IO2), + PINMUX_DATA(QSPI0_MISO_IO1_MARK, FN_QSPI0_MISO_IO1), + PINMUX_DATA(QSPI0_MOSI_IO0_MARK, FN_QSPI0_MOSI_IO0), + PINMUX_DATA(QSPI0_SPCLK_MARK, FN_QSPI0_SPCLK), + + + /* IPSR0 */ + PINMUX_IPSR_IDATA(DU_DR2), + PINMUX_IPSR_DATA(DU_DR2, HSCK0), + PINMUX_IPSR_DATA(DU_DR2, A0), + PINMUX_IPSR_IDATA(DU_DR3), + PINMUX_IPSR_DATA(DU_DR3, HRTS0_N), + PINMUX_IPSR_DATA(DU_DR3, A1), + PINMUX_IPSR_IDATA(DU_DR4), + PINMUX_IPSR_DATA(DU_DR4, HCTS0_N), + PINMUX_IPSR_DATA(DU_DR4, A2), + PINMUX_IPSR_IDATA(DU_DR5), + PINMUX_IPSR_DATA(DU_DR5, HTX0), + PINMUX_IPSR_DATA(DU_DR5, A3), + PINMUX_IPSR_IDATA(DU_DR6), + PINMUX_IPSR_DATA(DU_DR6, MSIOF3_RXD), + PINMUX_IPSR_DATA(DU_DR6, A4), + PINMUX_IPSR_IDATA(DU_DR7), + PINMUX_IPSR_DATA(DU_DR7, MSIOF3_TXD), + PINMUX_IPSR_DATA(DU_DR7, A5), + PINMUX_IPSR_IDATA(DU_DG2), + PINMUX_IPSR_DATA(DU_DG2, MSIOF3_SS1), + PINMUX_IPSR_DATA(DU_DG2, A6), + PINMUX_IPSR_IDATA(DU_DG3), + PINMUX_IPSR_DATA(DU_DG3, MSIOF3_SS2), + PINMUX_IPSR_DATA(DU_DG3, A7), + PINMUX_IPSR_DATA(DU_DG3, PWMFSW0), + + /* IPSR1 */ + PINMUX_IPSR_IDATA(DU_DG4), + PINMUX_IPSR_DATA(DU_DG4, A8), + PINMUX_IPSR_DATA(DU_DG4, FSO_CFE_0_N_A), + PINMUX_IPSR_IDATA(DU_DG5), + PINMUX_IPSR_DATA(DU_DG5, A9), + PINMUX_IPSR_DATA(DU_DG5, FSO_CFE_1_N_A), + PINMUX_IPSR_IDATA(DU_DG6), + PINMUX_IPSR_DATA(DU_DG6, A10), + PINMUX_IPSR_DATA(DU_DG6, FSO_TOE_N_A), + PINMUX_IPSR_IDATA(DU_DG7), + PINMUX_IPSR_DATA(DU_DG7, A11), + PINMUX_IPSR_DATA(DU_DG7, IRQ1), + PINMUX_IPSR_IDATA(DU_DB2), + PINMUX_IPSR_DATA(DU_DB2, A12), + PINMUX_IPSR_DATA(DU_DB2, IRQ2), + PINMUX_IPSR_IDATA(DU_DB3), + PINMUX_IPSR_DATA(DU_DB3, A13), + PINMUX_IPSR_DATA(DU_DB3, FXR_CLKOUT1), + PINMUX_IPSR_IDATA(DU_DB4), + PINMUX_IPSR_DATA(DU_DB4, A14), + PINMUX_IPSR_DATA(DU_DB4, FXR_CLKOUT2), + PINMUX_IPSR_IDATA(DU_DB5), + PINMUX_IPSR_DATA(DU_DB5, A15), + PINMUX_IPSR_DATA(DU_DB5, FXR_TXENA_N), + + /* IPSR2 */ + PINMUX_IPSR_IDATA(DU_DB6), + PINMUX_IPSR_DATA(DU_DB6, A16), + PINMUX_IPSR_DATA(DU_DB6, FXR_TXENB_N), + PINMUX_IPSR_IDATA(DU_DB7), + PINMUX_IPSR_DATA(DU_DB7, A17), + PINMUX_IPSR_DATA(DU_DB7, STPWT_EXTFXR), + PINMUX_IPSR_IDATA(DU_DOTCLKOUT), + PINMUX_IPSR_DATA(DU_DOTCLKOUT, SCIF_CLK_A), + PINMUX_IPSR_DATA(DU_DOTCLKOUT, A18), + PINMUX_IPSR_IDATA(DU_EXHSYNC_DU_HSYNC), + PINMUX_IPSR_DATA(DU_EXHSYNC_DU_HSYNC, HRX0), + PINMUX_IPSR_DATA(DU_EXHSYNC_DU_HSYNC, A19), + PINMUX_IPSR_DATA(DU_EXHSYNC_DU_HSYNC, IRQ3), + PINMUX_IPSR_IDATA(DU_EXVSYNC_DU_VSYNC), + PINMUX_IPSR_DATA(DU_EXVSYNC_DU_VSYNC, MSIOF3_SCK), + PINMUX_IPSR_DATA(DU_EXVSYNC_DU_VSYNC, A20), + PINMUX_IPSR_IDATA(DU_EXODDF_DU_ODDF_DISP_CDE), + PINMUX_IPSR_DATA(DU_EXODDF_DU_ODDF_DISP_CDE, MSIOF3_SYNC), + PINMUX_IPSR_DATA(DU_EXODDF_DU_ODDF_DISP_CDE, A21), + PINMUX_IPSR_IDATA(IRQ0), + PINMUX_IPSR_DATA(IRQ0, CC5_OSCOUT), + PINMUX_IPSR_IDATA(VI0_CLK), + PINMUX_IPSR_DATA(VI0_CLK, MSIOF2_SCK), + PINMUX_IPSR_DATA(VI0_CLK, SCK3), + PINMUX_IPSR_DATA(VI0_CLK, HSCK3), + + /* IPSR3 */ + PINMUX_IPSR_IDATA(VI0_CLKENB), + PINMUX_IPSR_DATA(VI0_CLKENB, MSIOF2_RXD), + PINMUX_IPSR_DATA(VI0_CLKENB, RX3), + PINMUX_IPSR_DATA(VI0_CLKENB, RD_WR_N), + PINMUX_IPSR_DATA(VI0_CLKENB, HCTS3_N), + PINMUX_IPSR_IDATA(VI0_HSYNC_N), + PINMUX_IPSR_DATA(VI0_HSYNC_N, MSIOF2_TXD), + PINMUX_IPSR_DATA(VI0_HSYNC_N, TX3), + PINMUX_IPSR_DATA(VI0_HSYNC_N, HRTS3_N), + PINMUX_IPSR_IDATA(VI0_VSYNC_N), + PINMUX_IPSR_DATA(VI0_VSYNC_N, MSIOF2_SYNC), + PINMUX_IPSR_DATA(VI0_VSYNC_N, CTS3_N), + PINMUX_IPSR_DATA(VI0_VSYNC_N, HTX3), + PINMUX_IPSR_IDATA(VI0_DATA0), + PINMUX_IPSR_DATA(VI0_DATA0, MSIOF2_SS1), + PINMUX_IPSR_DATA(VI0_DATA0, RTS3_N_TANS), + PINMUX_IPSR_DATA(VI0_DATA0, HRX3), + PINMUX_IPSR_IDATA(VI0_DATA1), + PINMUX_IPSR_DATA(VI0_DATA1, MSIOF2_SS2), + PINMUX_IPSR_DATA(VI0_DATA3, SCK1), + PINMUX_IPSR_DATA(VI0_DATA1, SPEEDIN_A), + PINMUX_IPSR_IDATA(VI0_DATA2), + PINMUX_IPSR_DATA(VI0_DATA2, AVB0_AVTP_PPS), + PINMUX_IPSR_DATA(VI0_DATA2, SDA3_A), + PINMUX_IPSR_IDATA(VI0_DATA3), + PINMUX_IPSR_DATA(VI0_DATA3, HSCK1), + PINMUX_IPSR_DATA(VI0_DATA1, SCL3_A), + PINMUX_IPSR_IDATA(VI0_DATA4), + PINMUX_IPSR_DATA(VI0_DATA4, HRTS1_N), + PINMUX_IPSR_DATA(VI0_DATA4, RX1_A), + + /* IPSR4 */ + PINMUX_IPSR_IDATA(VI0_DATA5), + PINMUX_IPSR_DATA(VI0_DATA5, HCTS1_N), + PINMUX_IPSR_DATA(VI0_DATA5, TX1_A), + PINMUX_IPSR_IDATA(VI0_DATA6), + PINMUX_IPSR_DATA(VI0_DATA6, HTX1), + PINMUX_IPSR_DATA(VI0_DATA6, CTS1_N), + PINMUX_IPSR_IDATA(VI0_DATA7), + PINMUX_IPSR_DATA(VI0_DATA7, HRX1), + PINMUX_IPSR_DATA(VI0_DATA7, RTS1_N_TANS), + PINMUX_IPSR_IDATA(VI0_DATA8), + PINMUX_IPSR_DATA(VI0_DATA8, HSCK2), + PINMUX_IPSR_DATA(VI0_DATA8, PWM0_A), + PINMUX_IPSR_DATA(VI0_DATA8, A22), + PINMUX_IPSR_IDATA(VI0_DATA9), + PINMUX_IPSR_DATA(VI0_DATA9, HCTS2_N), + PINMUX_IPSR_DATA(VI0_DATA9, PWM1_A), + PINMUX_IPSR_DATA(VI0_DATA9, A23), + PINMUX_IPSR_DATA(VI0_DATA9, FSO_CFE_0_N_B), + PINMUX_IPSR_IDATA(VI0_DATA10), + PINMUX_IPSR_DATA(VI0_DATA10, HRTS2_N), + PINMUX_IPSR_DATA(VI0_DATA10, PWM2_A), + PINMUX_IPSR_DATA(VI0_DATA10, A24), + PINMUX_IPSR_DATA(VI0_DATA10, FSO_CFE_1_N_B), + PINMUX_IPSR_IDATA(VI0_DATA11), + PINMUX_IPSR_DATA(VI0_DATA11, HTX2), + PINMUX_IPSR_DATA(VI0_DATA11, PWM3_A), + PINMUX_IPSR_DATA(VI0_DATA11, A25), + PINMUX_IPSR_DATA(VI0_DATA11, FSO_TOE_N_B), + PINMUX_IPSR_IDATA(VI0_FIELD), + PINMUX_IPSR_DATA(VI0_FIELD, HRX2), + PINMUX_IPSR_DATA(VI0_FIELD, PWM4_A), + PINMUX_IPSR_DATA(VI0_FIELD, CS1_N_A26), + PINMUX_IPSR_DATA(VI0_FIELD, FSCLKST2_N_A), + + /* IPSR5 */ + PINMUX_IPSR_IDATA(VI1_CLK), + PINMUX_IPSR_DATA(VI1_CLK, MSIOF1_RXD), + PINMUX_IPSR_DATA(VI1_CLK, CS0_N), + PINMUX_IPSR_IDATA(VI1_CLKENB), + PINMUX_IPSR_DATA(VI1_CLKENB, MSIOF1_TXD), + PINMUX_IPSR_DATA(VI1_CLKENB, D0), + PINMUX_IPSR_IDATA(VI1_HSYNC_N), + PINMUX_IPSR_DATA(VI1_HSYNC_N, MSIOF1_SCK), + PINMUX_IPSR_DATA(VI1_HSYNC_N, D1), + PINMUX_IPSR_IDATA(VI1_VSYNC_N), + PINMUX_IPSR_DATA(VI1_VSYNC_N, MSIOF1_SYNC), + PINMUX_IPSR_DATA(VI1_VSYNC_N, D2), + PINMUX_IPSR_IDATA(VI1_DATA0), + PINMUX_IPSR_DATA(VI1_DATA0, MSIOF1_SS1), + PINMUX_IPSR_DATA(VI1_DATA0, D3), + PINMUX_IPSR_IDATA(VI1_DATA1), + PINMUX_IPSR_DATA(VI1_DATA1, MSIOF1_SS2), + PINMUX_IPSR_DATA(VI1_DATA1, D4), + PINMUX_IPSR_DATA(VI1_DATA1, MMC_CMD), + PINMUX_IPSR_IDATA(VI1_DATA2), + PINMUX_IPSR_DATA(VI1_DATA2, CANFD0_TX_B), + PINMUX_IPSR_DATA(VI1_DATA2, D5), + PINMUX_IPSR_DATA(VI1_DATA2, MMC_D0), + PINMUX_IPSR_IDATA(VI1_DATA3), + PINMUX_IPSR_DATA(VI1_DATA3, CANFD0_RX_B), + PINMUX_IPSR_DATA(VI1_DATA3, D6), + PINMUX_IPSR_DATA(VI1_DATA3, MMC_D1), + + /* IPSR6 */ + PINMUX_IPSR_IDATA(VI1_DATA4), + PINMUX_IPSR_DATA(VI1_DATA4, CANFD_CLK_B), + PINMUX_IPSR_DATA(VI1_DATA4, D7), + PINMUX_IPSR_DATA(VI1_DATA4, MMC_D2), + PINMUX_IPSR_IDATA(VI1_DATA5), + PINMUX_IPSR_DATA(VI1_DATA5, SCK4), + PINMUX_IPSR_DATA(VI1_DATA5, D8), + PINMUX_IPSR_DATA(VI1_DATA5, MMC_D3), + PINMUX_IPSR_IDATA(VI1_DATA6), + PINMUX_IPSR_DATA(VI1_DATA6, RX4), + PINMUX_IPSR_DATA(VI1_DATA6, D9), + PINMUX_IPSR_DATA(VI1_DATA6, MMC_CLK), + PINMUX_IPSR_IDATA(VI1_DATA7), + PINMUX_IPSR_DATA(VI1_DATA7, TX4), + PINMUX_IPSR_DATA(VI1_DATA7, D10), + PINMUX_IPSR_DATA(VI1_DATA7, MMC_D4), + PINMUX_IPSR_IDATA(VI1_DATA8), + PINMUX_IPSR_DATA(VI1_DATA8, CTS4_N), + PINMUX_IPSR_DATA(VI1_DATA8, D11), + PINMUX_IPSR_DATA(VI1_DATA8, MMC_D5), + PINMUX_IPSR_IDATA(VI1_DATA9), + PINMUX_IPSR_DATA(VI1_DATA9, RTS4_N_TANS), + PINMUX_IPSR_DATA(VI1_DATA9, D12), + PINMUX_IPSR_DATA(VI1_DATA9, MMC_D6), + PINMUX_IPSR_DATA(VI1_DATA9, SCL3_B), + PINMUX_IPSR_IDATA(VI1_DATA10), + PINMUX_IPSR_DATA(VI1_DATA10, D13), + PINMUX_IPSR_DATA(VI1_DATA10, MMC_D7), + PINMUX_IPSR_DATA(VI1_DATA10, SDA3_B), + PINMUX_IPSR_IDATA(VI1_DATA11), + PINMUX_IPSR_DATA(VI1_DATA11, SCL4), + PINMUX_IPSR_DATA(VI1_DATA11, IRQ4), + PINMUX_IPSR_DATA(VI1_DATA11, D14), + PINMUX_IPSR_DATA(VI1_DATA11, MMC_WP), + + /* IPSR7 */ + PINMUX_IPSR_IDATA(VI1_FIELD), + PINMUX_IPSR_DATA(VI1_FIELD, SDA4), + PINMUX_IPSR_DATA(VI1_FIELD, IRQ5), + PINMUX_IPSR_DATA(VI1_FIELD, D15), + PINMUX_IPSR_DATA(VI1_FIELD, MMC_CD), + PINMUX_IPSR_IDATA(SCL0), + PINMUX_IPSR_DATA(SCL0, DU_DR0), + PINMUX_IPSR_DATA(SCL0, TPU0TO0), + PINMUX_IPSR_DATA(SCL0, CLKOUT), + PINMUX_IPSR_DATA(SCL0, MSIOF0_RXD), + PINMUX_IPSR_IDATA(SDA0), + PINMUX_IPSR_DATA(SDA0, DU_DR1), + PINMUX_IPSR_DATA(SDA0, TPU0TO1), + PINMUX_IPSR_DATA(SDA0, BS_N), + PINMUX_IPSR_DATA(SDA0, SCK0), + PINMUX_IPSR_DATA(SDA0, MSIOF0_TXD), + PINMUX_IPSR_IDATA(SCL1), + PINMUX_IPSR_DATA(SCL1, DU_DG0), + PINMUX_IPSR_DATA(SCL1, TPU0TO2), + PINMUX_IPSR_DATA(SCL1, RD_N), + PINMUX_IPSR_DATA(SCL1, CTS0_N), + PINMUX_IPSR_DATA(SCL1, MSIOF0_SCK), + PINMUX_IPSR_IDATA(SDA1), + PINMUX_IPSR_DATA(SDA1, DU_DG1), + PINMUX_IPSR_DATA(SDA1, TPU0TO3), + PINMUX_IPSR_DATA(SDA1, WE0_N), + PINMUX_IPSR_DATA(SDA1, RTS0_N_TANS), + PINMUX_IPSR_DATA(SDA1, MSIOF0_SYNC), + PINMUX_IPSR_IDATA(SCL2), + PINMUX_IPSR_DATA(SCL2, DU_DB0), + PINMUX_IPSR_DATA(SCL2, TCLK1_A), + PINMUX_IPSR_DATA(SCL2, WE1_N), + PINMUX_IPSR_DATA(SCL2, RX0), + PINMUX_IPSR_DATA(SCL2, MSIOF0_SS1), + PINMUX_IPSR_IDATA(SDA2), + PINMUX_IPSR_DATA(SDA2, DU_DB1), + PINMUX_IPSR_DATA(SDA2, TCLK2_A), + PINMUX_IPSR_DATA(SDA2, EX_WAIT0), + PINMUX_IPSR_DATA(SDA2, TX0), + PINMUX_IPSR_DATA(SDA2, MSIOF0_SS2), + PINMUX_IPSR_IDATA(AVB0_AVTP_CAPTURE), + PINMUX_IPSR_DATA(AVB0_AVTP_CAPTURE, FSCLKST2_N_B), + + /* IPSR8 */ + PINMUX_IPSR_IDATA(CANFD0_TX_A), + PINMUX_IPSR_DATA(CANFD0_TX_A, FXR_TXDA), + PINMUX_IPSR_DATA(CANFD0_TX_A, PWM0_B), + PINMUX_IPSR_DATA(CANFD0_TX_A, DU_DISP), + PINMUX_IPSR_DATA(CANFD0_TX_A, FSCLKST2_N_C), + PINMUX_IPSR_IDATA(CANFD0_RX_A), + PINMUX_IPSR_DATA(CANFD0_RX_A, RXDA_EXTFXR), + PINMUX_IPSR_DATA(CANFD0_RX_A, PWM1_B), + PINMUX_IPSR_DATA(CANFD0_RX_A, DU_CDE), + PINMUX_IPSR_IDATA(CANFD1_TX), + PINMUX_IPSR_DATA(CANFD1_TX, FXR_TXDB), + PINMUX_IPSR_DATA(CANFD1_TX, PWM2_B), + PINMUX_IPSR_DATA(CANFD1_TX, TCLK1_B), + PINMUX_IPSR_DATA(CANFD1_TX, TX1_B), + PINMUX_IPSR_IDATA(CANFD1_RX), + PINMUX_IPSR_DATA(CANFD1_RX, RXDB_EXTFXR), + PINMUX_IPSR_DATA(CANFD1_RX, PWM3_B), + PINMUX_IPSR_DATA(CANFD1_RX, TCLK2_B), + PINMUX_IPSR_DATA(CANFD1_RX, RX1_B), + PINMUX_IPSR_IDATA(CANFD_CLK_A), + PINMUX_IPSR_DATA(CANFD_CLK_A, CLK_EXTFXR), + PINMUX_IPSR_DATA(CANFD_CLK_A, PWM4_B), + PINMUX_IPSR_DATA(CANFD_CLK_A, SPEEDIN_B), + PINMUX_IPSR_DATA(CANFD_CLK_A, SCIF_CLK_B), + PINMUX_IPSR_IDATA(DIGRF_CLKIN), + PINMUX_IPSR_DATA(DIGRF_CLKIN, DIGRF_CLKEN_IN), + PINMUX_IPSR_IDATA(DIGRF_CLKOUT), + PINMUX_IPSR_DATA(DIGRF_CLKOUT, DIGRF_CLKEN_OUT), +}; + +static struct pinmux_gpio pinmux_gpios[] = { + PINMUX_GPIO_GP_ALL(), + + /* GPSR0 */ + GPIO_GFN(DU_EXODDF_DU_ODDF_DISP_CDE), + GPIO_GFN(DU_EXVSYNC_DU_VSYNC), + GPIO_GFN(DU_EXHSYNC_DU_HSYNC), + GPIO_GFN(DU_DOTCLKOUT), + GPIO_GFN(DU_DB7), + GPIO_GFN(DU_DB6), + GPIO_GFN(DU_DB5), + GPIO_GFN(DU_DB4), + GPIO_GFN(DU_DB3), + GPIO_GFN(DU_DB2), + GPIO_GFN(DU_DG7), + GPIO_GFN(DU_DG6), + GPIO_GFN(DU_DG5), + GPIO_GFN(DU_DG4), + GPIO_GFN(DU_DG3), + GPIO_GFN(DU_DG2), + GPIO_GFN(DU_DR7), + GPIO_GFN(DU_DR6), + GPIO_GFN(DU_DR5), + GPIO_GFN(DU_DR4), + GPIO_GFN(DU_DR3), + GPIO_GFN(DU_DR2), + + /* GPSR1 */ + GPIO_GFN(DIGRF_CLKOUT), + GPIO_GFN(DIGRF_CLKIN), + GPIO_GFN(CANFD_CLK_A), + GPIO_GFN(CANFD1_RX), + GPIO_GFN(CANFD1_TX), + GPIO_GFN(CANFD0_RX_A), + GPIO_GFN(CANFD0_TX_A), + GPIO_GFN(AVB0_AVTP_CAPTURE), + GPIO_FN(AVB0_AVTP_MATCH), + GPIO_FN(AVB0_LINK), + GPIO_FN(AVB0_PHY_INT), + GPIO_FN(AVB0_MAGIC), + GPIO_FN(AVB0_MDC), + GPIO_FN(AVB0_MDIO), + GPIO_FN(AVB0_TXCREFCLK), + GPIO_FN(AVB0_TD3), + GPIO_FN(AVB0_TD2), + GPIO_FN(AVB0_TD1), + GPIO_FN(AVB0_TD0), + GPIO_FN(AVB0_TXC), + GPIO_FN(AVB0_TX_CTL), + GPIO_FN(AVB0_RD3), + GPIO_FN(AVB0_RD2), + GPIO_FN(AVB0_RD1), + GPIO_FN(AVB0_RD0), + GPIO_FN(AVB0_RXC), + GPIO_FN(AVB0_RX_CTL), + GPIO_GFN(IRQ0), + + /* GPSR2 */ + GPIO_GFN(VI0_FIELD), + GPIO_GFN(VI0_DATA11), + GPIO_GFN(VI0_DATA10), + GPIO_GFN(VI0_DATA9), + GPIO_GFN(VI0_DATA8), + GPIO_GFN(VI0_DATA7), + GPIO_GFN(VI0_DATA6), + GPIO_GFN(VI0_DATA5), + GPIO_GFN(VI0_DATA4), + GPIO_GFN(VI0_DATA3), + GPIO_GFN(VI0_DATA2), + GPIO_GFN(VI0_DATA1), + GPIO_GFN(VI0_DATA0), + GPIO_GFN(VI0_VSYNC_N), + GPIO_GFN(VI0_HSYNC_N), + GPIO_GFN(VI0_CLKENB), + GPIO_GFN(VI0_CLK), + + /* GPSR3 */ + GPIO_GFN(VI1_FIELD), + GPIO_GFN(VI1_DATA11), + GPIO_GFN(VI1_DATA10), + GPIO_GFN(VI1_DATA9), + GPIO_GFN(VI1_DATA8), + GPIO_GFN(VI1_DATA7), + GPIO_GFN(VI1_DATA6), + GPIO_GFN(VI1_DATA5), + GPIO_GFN(VI1_DATA4), + GPIO_GFN(VI1_DATA3), + GPIO_GFN(VI1_DATA2), + GPIO_GFN(VI1_DATA1), + GPIO_GFN(VI1_DATA0), + GPIO_GFN(VI1_VSYNC_N), + GPIO_GFN(VI1_HSYNC_N), + GPIO_GFN(VI1_CLKENB), + GPIO_GFN(VI1_CLK), + + /* GPSR4 */ + GPIO_GFN(SDA2), + GPIO_GFN(SCL2), + GPIO_GFN(SDA1), + GPIO_GFN(SCL1), + GPIO_GFN(SDA0), + GPIO_GFN(SCL0), + + /* GPSR5 */ + GPIO_FN(RPC_INT_N), + GPIO_FN(RPC_WP_N), + GPIO_FN(RPC_RESET_N), + GPIO_FN(QSPI1_SSL), + GPIO_FN(QSPI1_IO3), + GPIO_FN(QSPI1_IO2), + GPIO_FN(QSPI1_MISO_IO1), + GPIO_FN(QSPI1_MOSI_IO0), + GPIO_FN(QSPI1_SPCLK), + GPIO_FN(QSPI0_SSL), + GPIO_FN(QSPI0_IO3), + GPIO_FN(QSPI0_IO2), + GPIO_FN(QSPI0_MISO_IO1), + GPIO_FN(QSPI0_MOSI_IO0), + GPIO_FN(QSPI0_SPCLK), + + /* IPSR0 */ + GPIO_IFN(DU_DR2), + GPIO_FN(HSCK0), + GPIO_FN(A0), + GPIO_IFN(DU_DR3), + GPIO_FN(HRTS0_N), + GPIO_FN(A1), + GPIO_IFN(DU_DR4), + GPIO_FN(HCTS0_N), + GPIO_FN(A2), + GPIO_IFN(DU_DR5), + GPIO_FN(HTX0), + GPIO_FN(A3), + GPIO_IFN(DU_DR6), + GPIO_FN(MSIOF3_RXD), + GPIO_FN(A4), + GPIO_IFN(DU_DR7), + GPIO_FN(MSIOF3_TXD), + GPIO_FN(A5), + GPIO_IFN(DU_DG2), + GPIO_FN(MSIOF3_SS1), + GPIO_FN(A6), + GPIO_IFN(DU_DG3), + GPIO_FN(MSIOF3_SS2), + GPIO_FN(A7), + GPIO_FN(PWMFSW0), + + /* IPSR1 */ + GPIO_IFN(DU_DG4), + GPIO_FN(A8), + GPIO_FN(FSO_CFE_0_N_A), + GPIO_IFN(DU_DG5), + GPIO_FN(A9), + GPIO_FN(FSO_CFE_1_N_A), + GPIO_IFN(DU_DG6), + GPIO_FN(A10), + GPIO_FN(FSO_TOE_N_A), + GPIO_IFN(DU_DG7), + GPIO_FN(A11), + GPIO_FN(IRQ1), + GPIO_IFN(DU_DB2), + GPIO_FN(A12), + GPIO_FN(IRQ2), + GPIO_IFN(DU_DB3), + GPIO_FN(A13), + GPIO_FN(FXR_CLKOUT1), + GPIO_IFN(DU_DB4), + GPIO_FN(A14), + GPIO_FN(FXR_CLKOUT2), + GPIO_IFN(DU_DB5), + GPIO_FN(A15), + GPIO_FN(FXR_TXENA_N), + + /* IPSR2 */ + GPIO_IFN(DU_DB6), + GPIO_FN(A16), + GPIO_FN(FXR_TXENB_N), + GPIO_IFN(DU_DB7), + GPIO_FN(A17), + GPIO_FN(STPWT_EXTFXR), + GPIO_IFN(DU_DOTCLKOUT), + GPIO_FN(SCIF_CLK_A), + GPIO_FN(A18), + GPIO_IFN(DU_EXHSYNC_DU_HSYNC), + GPIO_FN(HRX0), + GPIO_FN(A19), + GPIO_FN(IRQ3), + GPIO_IFN(DU_EXVSYNC_DU_VSYNC), + GPIO_FN(MSIOF3_SCK), + GPIO_FN(A20), + GPIO_IFN(DU_EXODDF_DU_ODDF_DISP_CDE), + GPIO_FN(MSIOF3_SYNC), + GPIO_FN(A21), + GPIO_IFN(IRQ0), + GPIO_FN(CC5_OSCOUT), + GPIO_IFN(VI0_CLK), + GPIO_FN(MSIOF2_SCK), + GPIO_FN(SCK3), + GPIO_FN(HSCK3), + + /* IPSR3 */ + GPIO_IFN(VI0_CLKENB), + GPIO_FN(MSIOF2_RXD), + GPIO_FN(RX3), + GPIO_FN(RD_WR_N), + GPIO_FN(HCTS3_N), + GPIO_IFN(VI0_HSYNC_N), + GPIO_FN(MSIOF2_TXD), + GPIO_FN(TX3), + GPIO_FN(HRTS3_N), + GPIO_IFN(VI0_VSYNC_N), + GPIO_FN(MSIOF2_SYNC), + GPIO_FN(CTS3_N), + GPIO_FN(HTX3), + GPIO_IFN(VI0_DATA0), + GPIO_FN(MSIOF2_SS1), + GPIO_FN(RTS3_N_TANS), + GPIO_FN(HRX3), + GPIO_IFN(VI0_DATA1), + GPIO_FN(MSIOF2_SS2), + GPIO_FN(SCK1), + GPIO_FN(SPEEDIN_A), + GPIO_IFN(VI0_DATA2), + GPIO_FN(AVB0_AVTP_PPS), + GPIO_FN(SDA3_A), + GPIO_IFN(VI0_DATA3), + GPIO_FN(HSCK1), + GPIO_FN(SCL3_A), + GPIO_IFN(VI0_DATA4), + GPIO_FN(HRTS1_N), + GPIO_FN(RX1_A), + + /* IPSR4 */ + GPIO_IFN(VI0_DATA5), + GPIO_FN(HCTS1_N), + GPIO_FN(TX1_A), + GPIO_IFN(VI0_DATA6), + GPIO_FN(HTX1), + GPIO_FN(CTS1_N), + GPIO_IFN(VI0_DATA7), + GPIO_FN(HRX1), + GPIO_FN(RTS1_N_TANS), + GPIO_IFN(VI0_DATA8), + GPIO_FN(HSCK2), + GPIO_FN(PWM0_A), + GPIO_FN(A22), + GPIO_IFN(VI0_DATA9), + GPIO_FN(HCTS2_N), + GPIO_FN(PWM1_A), + GPIO_FN(A23), + GPIO_FN(FSO_CFE_0_N_B), + GPIO_IFN(VI0_DATA10), + GPIO_FN(HRTS2_N), + GPIO_FN(PWM2_A), + GPIO_FN(A24), + GPIO_FN(FSO_CFE_1_N_B), + GPIO_IFN(VI0_DATA11), + GPIO_FN(HTX2), + GPIO_FN(PWM3_A), + GPIO_FN(A25), + GPIO_FN(FSO_TOE_N_B), + GPIO_IFN(VI0_FIELD), + GPIO_FN(HRX2), + GPIO_FN(PWM4_A), + GPIO_FN(CS1_N_A26), + GPIO_FN(FSCLKST2_N_A), + + /* IPSR5 */ + GPIO_IFN(VI1_CLK), + GPIO_FN(MSIOF1_RXD), + GPIO_FN(CS0_N), + GPIO_IFN(VI1_CLKENB), + GPIO_FN(MSIOF1_TXD), + GPIO_FN(D0), + GPIO_IFN(VI1_HSYNC_N), + GPIO_FN(MSIOF1_SCK), + GPIO_FN(D1), + GPIO_IFN(VI1_VSYNC_N), + GPIO_FN(MSIOF1_SYNC), + GPIO_FN(D2), + GPIO_IFN(VI1_DATA0), + GPIO_FN(MSIOF1_SS1), + GPIO_FN(D3), + GPIO_IFN(VI1_DATA1), + GPIO_FN(MSIOF1_SS2), + GPIO_FN(D4), + GPIO_FN(MMC_CMD), + GPIO_IFN(VI1_DATA2), + GPIO_FN(CANFD0_TX_B), + GPIO_FN(D5), + GPIO_FN(MMC_D0), + GPIO_IFN(VI1_DATA3), + GPIO_FN(CANFD0_RX_B), + GPIO_FN(D6), + GPIO_FN(MMC_D1), + + /* IPSR6 */ + GPIO_IFN(VI1_DATA4), + GPIO_FN(CANFD_CLK_B), + GPIO_FN(D7), + GPIO_FN(MMC_D2), + GPIO_IFN(VI1_DATA5), + GPIO_FN(SCK4), + GPIO_FN(D8), + GPIO_FN(MMC_D3), + GPIO_IFN(VI1_DATA6), + GPIO_FN(RX4), + GPIO_FN(D9), + GPIO_FN(MMC_CLK), + GPIO_IFN(VI1_DATA7), + GPIO_FN(TX4), + GPIO_FN(D10), + GPIO_FN(MMC_D4), + GPIO_IFN(VI1_DATA8), + GPIO_FN(CTS4_N), + GPIO_FN(D11), + GPIO_FN(MMC_D5), + GPIO_IFN(VI1_DATA9), + GPIO_FN(RTS4_N_TANS), + GPIO_FN(D12), + GPIO_FN(MMC_D6), + GPIO_FN(SCL3_B), + GPIO_IFN(VI1_DATA10), + GPIO_FN(D13), + GPIO_FN(MMC_D7), + GPIO_FN(SDA3_B), + GPIO_IFN(VI1_DATA11), + GPIO_FN(SCL4), + GPIO_FN(IRQ4), + GPIO_FN(D14), + GPIO_FN(MMC_WP), + + /* IPSR7 */ + GPIO_IFN(VI1_FIELD), + GPIO_FN(SDA4), + GPIO_FN(IRQ5), + GPIO_FN(D15), + GPIO_FN(MMC_CD), + GPIO_IFN(SCL0), + GPIO_FN(DU_DR0), + GPIO_FN(TPU0TO0), + GPIO_FN(CLKOUT), + GPIO_FN(MSIOF0_RXD), + GPIO_IFN(SDA0), + GPIO_FN(DU_DR1), + GPIO_FN(TPU0TO1), + GPIO_FN(BS_N), + GPIO_FN(SCK0), + GPIO_FN(MSIOF0_TXD), + GPIO_IFN(SCL1), + GPIO_FN(DU_DG0), + GPIO_FN(TPU0TO2), + GPIO_FN(RD_N), + GPIO_FN(CTS0_N), + GPIO_FN(MSIOF0_SCK), + GPIO_IFN(SDA1), + GPIO_FN(DU_DG1), + GPIO_FN(TPU0TO3), + GPIO_FN(WE0_N), + GPIO_FN(RTS0_N_TANS), + GPIO_FN(MSIOF0_SYNC), + GPIO_IFN(SCL2), + GPIO_FN(DU_DB0), + GPIO_FN(TCLK1_A), + GPIO_FN(WE1_N), + GPIO_FN(RX0), + GPIO_FN(MSIOF0_SS1), + GPIO_IFN(SDA2), + GPIO_FN(DU_DB1), + GPIO_FN(TCLK2_A), + GPIO_FN(EX_WAIT0), + GPIO_FN(TX0), + GPIO_FN(MSIOF0_SS2), + GPIO_IFN(AVB0_AVTP_CAPTURE), + GPIO_FN(FSCLKST2_N_B), + + /* IPSR8 */ + GPIO_IFN(CANFD0_TX_A), + GPIO_FN(FXR_TXDA), + GPIO_FN(PWM0_B), + GPIO_FN(DU_DISP), + GPIO_FN(FSCLKST2_N_C), + GPIO_IFN(CANFD0_RX_A), + GPIO_FN(RXDA_EXTFXR), + GPIO_FN(PWM1_B), + GPIO_FN(DU_CDE), + GPIO_IFN(CANFD1_TX), + GPIO_FN(FXR_TXDB), + GPIO_FN(PWM2_B), + GPIO_FN(TCLK1_B), + GPIO_FN(TX1_B), + GPIO_IFN(CANFD1_RX), + GPIO_FN(RXDB_EXTFXR), + GPIO_FN(PWM3_B), + GPIO_FN(TCLK2_B), + GPIO_FN(RX1_B), + GPIO_IFN(CANFD_CLK_A), + GPIO_FN(CLK_EXTFXR), + GPIO_FN(PWM4_B), + GPIO_FN(SPEEDIN_B), + GPIO_FN(SCIF_CLK_B), + GPIO_IFN(DIGRF_CLKIN), + GPIO_FN(DIGRF_CLKEN_IN), + GPIO_IFN(DIGRF_CLKOUT), + GPIO_FN(DIGRF_CLKEN_OUT), + +}; + +static struct pinmux_cfg_reg pinmux_config_regs[] = { + /* GPSR0(0xE6060100) md[3:1] controls initial value */ + /* md[3:1] .. 0 : 0x0000FFFF */ + /* .. other : 0x00000000 */ + { PINMUX_CFG_REG("GPSR0", 0xE6060100, 32, 1) { + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + GP_0_21_FN, GFN_DU_EXODDF_DU_ODDF_DISP_CDE, + GP_0_20_FN, GFN_DU_EXVSYNC_DU_VSYNC, + GP_0_19_FN, GFN_DU_EXHSYNC_DU_HSYNC, + GP_0_18_FN, GFN_DU_DOTCLKOUT, + GP_0_17_FN, GFN_DU_DB7, + GP_0_16_FN, GFN_DU_DB6, + GP_0_15_FN, GFN_DU_DB5, + GP_0_14_FN, GFN_DU_DB4, + GP_0_13_FN, GFN_DU_DB3, + GP_0_12_FN, GFN_DU_DB2, + GP_0_11_FN, GFN_DU_DG7, + GP_0_10_FN, GFN_DU_DG6, + GP_0_9_FN, GFN_DU_DG5, + GP_0_8_FN, GFN_DU_DG4, + GP_0_7_FN, GFN_DU_DG3, + GP_0_6_FN, GFN_DU_DG2, + GP_0_5_FN, GFN_DU_DR7, + GP_0_4_FN, GFN_DU_DR6, + GP_0_3_FN, GFN_DU_DR5, + GP_0_2_FN, GFN_DU_DR4, + GP_0_1_FN, GFN_DU_DR3, + GP_0_0_FN, GFN_DU_DR2 } + }, + /* GPSR1(0xE6060104) is md[3:1] controls initial value */ + /* md[3:1] .. 0 : 0x0EFFFFFF */ + /* .. other : 0x00000000 */ + { PINMUX_CFG_REG("GPSR1", 0xE6060104, 32, 1) { + 0, 0, + 0, 0, + 0, 0, + 0, 0, + GP_1_27_FN, GFN_DIGRF_CLKOUT, + GP_1_26_FN, GFN_DIGRF_CLKIN, + GP_1_25_FN, GFN_CANFD_CLK_A, + GP_1_24_FN, GFN_CANFD1_RX, + GP_1_23_FN, GFN_CANFD1_TX, + GP_1_22_FN, GFN_CANFD0_RX_A, + GP_1_21_FN, GFN_CANFD0_TX_A, + GP_1_20_FN, GFN_AVB0_AVTP_CAPTURE, + GP_1_19_FN, FN_AVB0_AVTP_MATCH, + GP_1_18_FN, FN_AVB0_LINK, + GP_1_17_FN, FN_AVB0_PHY_INT, + GP_1_16_FN, FN_AVB0_MAGIC, + GP_1_15_FN, FN_AVB0_MDC, + GP_1_14_FN, FN_AVB0_MDIO, + GP_1_13_FN, FN_AVB0_TXCREFCLK, + GP_1_12_FN, FN_AVB0_TD3, + GP_1_11_FN, FN_AVB0_TD2, + GP_1_10_FN, FN_AVB0_TD1, + GP_1_9_FN, FN_AVB0_TD0, + GP_1_8_FN, FN_AVB0_TXC, + GP_1_7_FN, FN_AVB0_TX_CTL, + GP_1_6_FN, FN_AVB0_RD3, + GP_1_5_FN, FN_AVB0_RD2, + GP_1_4_FN, FN_AVB0_RD1, + GP_1_3_FN, FN_AVB0_RD0, + GP_1_2_FN, FN_AVB0_RXC, + GP_1_1_FN, FN_AVB0_RX_CTL, + GP_1_0_FN, GFN_IRQ0 } + }, + /* GPSR2(0xE6060108) is md[3:1] controls */ + /* md[3:1] .. 0 : 0x000003C0 */ + /* .. other : 0x00000200 */ + { PINMUX_CFG_REG("GPSR2", 0xE6060108, 32, 1) { + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + GP_2_16_FN, GFN_VI0_FIELD, + GP_2_15_FN, GFN_VI0_DATA11, + GP_2_14_FN, GFN_VI0_DATA10, + GP_2_13_FN, GFN_VI0_DATA9, + GP_2_12_FN, GFN_VI0_DATA8, + GP_2_11_FN, GFN_VI0_DATA7, + GP_2_10_FN, GFN_VI0_DATA6, + GP_2_9_FN, GFN_VI0_DATA5, + GP_2_8_FN, GFN_VI0_DATA4, + GP_2_7_FN, GFN_VI0_DATA3, + GP_2_6_FN, GFN_VI0_DATA2, + GP_2_5_FN, GFN_VI0_DATA1, + GP_2_4_FN, GFN_VI0_DATA0, + GP_2_3_FN, GFN_VI0_VSYNC_N, + GP_2_2_FN, GFN_VI0_HSYNC_N, + GP_2_1_FN, GFN_VI0_CLKENB, + GP_2_0_FN, GFN_VI0_CLK } + }, + + /* GPSR3 */ + { PINMUX_CFG_REG("GPSR3", 0xE606010C, 32, 1) { + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + GP_3_16_FN, GFN_VI1_FIELD, + GP_3_15_FN, GFN_VI1_DATA11, + GP_3_14_FN, GFN_VI1_DATA10, + GP_3_13_FN, GFN_VI1_DATA9, + GP_3_12_FN, GFN_VI1_DATA8, + GP_3_11_FN, GFN_VI1_DATA7, + GP_3_10_FN, GFN_VI1_DATA6, + GP_3_9_FN, GFN_VI1_DATA5, + GP_3_8_FN, GFN_VI1_DATA4, + GP_3_7_FN, GFN_VI1_DATA3, + GP_3_6_FN, GFN_VI1_DATA2, + GP_3_5_FN, GFN_VI1_DATA1, + GP_3_4_FN, GFN_VI1_DATA0, + GP_3_3_FN, GFN_VI1_VSYNC_N, + GP_3_2_FN, GFN_VI1_HSYNC_N, + GP_3_1_FN, GFN_VI1_CLKENB, + GP_3_0_FN, GFN_VI1_CLK } + }, + /* GPSR4 */ + { PINMUX_CFG_REG("GPSR4", 0xE6060110, 32, 1) { + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + GP_4_5_FN, GFN_SDA2, + GP_4_4_FN, GFN_SCL2, + GP_4_3_FN, GFN_SDA1, + GP_4_2_FN, GFN_SCL1, + GP_4_1_FN, GFN_SDA0, + GP_4_0_FN, GFN_SCL0 } + }, + /* GPSR5 */ + { PINMUX_CFG_REG("GPSR5", 0xE6060114, 32, 1) { + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + GP_5_14_FN, FN_RPC_INT_N, + GP_5_13_FN, FN_RPC_WP_N, + GP_5_12_FN, FN_RPC_RESET_N, + GP_5_11_FN, FN_QSPI1_SSL, + GP_5_10_FN, FN_QSPI1_IO3, + GP_5_9_FN, FN_QSPI1_IO2, + GP_5_8_FN, FN_QSPI1_MISO_IO1, + GP_5_7_FN, FN_QSPI1_MOSI_IO0, + GP_5_6_FN, FN_QSPI1_SPCLK, + GP_5_5_FN, FN_QSPI0_SSL, + GP_5_4_FN, FN_QSPI0_IO3, + GP_5_3_FN, FN_QSPI0_IO2, + GP_5_2_FN, FN_QSPI0_MISO_IO1, + GP_5_1_FN, FN_QSPI0_MOSI_IO0, + GP_5_0_FN, FN_QSPI0_SPCLK } + }, + + { PINMUX_CFG_REG_VAR("IPSR0", 0xE6060200, 32, + 4, 4, 4, 4, 4, 4, 4, 4) { + /* IPSR0_31_28 [4] */ + IFN_DU_DG3, FN_MSIOF3_SS2, 0, FN_A7, + FN_PWMFSW0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR0_27_24 [4] */ + IFN_DU_DG2, FN_MSIOF3_SS1, 0, FN_A6, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR0_23_20 [4] */ + IFN_DU_DR7, FN_MSIOF3_TXD, 0, FN_A5, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR0_19_16 [4] */ + IFN_DU_DR6, FN_MSIOF3_RXD, 0, FN_A4, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR0_15_12 [4] */ + IFN_DU_DR5, FN_HTX0, 0, FN_A3, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR0_11_8 [4] */ + IFN_DU_DR4, FN_HCTS0_N, 0, FN_A2, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR0_7_4 [4] */ + IFN_DU_DR3, FN_HRTS0_N, 0, FN_A1, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR0_3_0 [4] */ + IFN_DU_DR2, FN_HSCK0, 0, FN_A0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + } + }, + { PINMUX_CFG_REG_VAR("IPSR1", 0xE6060204, 32, + 4, 4, 4, 4, 4, 4, 4, 4) { + /* IPSR1_31_28 [4] */ + IFN_DU_DB5, 0, 0, FN_A15, + FN_FXR_TXENA_N, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR1_27_24 [4] */ + IFN_DU_DB4, 0, 0, FN_A14, + FN_FXR_CLKOUT2, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR1_23_20 [4] */ + IFN_DU_DB3, 0, 0, FN_A13, + FN_FXR_CLKOUT1, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR1_19_16 [4] */ + IFN_DU_DB2, 0, 0, FN_A12, + FN_IRQ2, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR1_15_12 [4] */ + IFN_DU_DG7, 0, 0, FN_A11, + FN_IRQ1, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR1_11_8 [4] */ + IFN_DU_DG6, 0, 0, FN_A10, + FN_FSO_TOE_N_A, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR1_7_4 [4] */ + IFN_DU_DG5, 0, 0, FN_A9, + FN_FSO_CFE_1_N_A, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR1_3_0 [4] */ + IFN_DU_DG4, 0, 0, FN_A8, + FN_FSO_CFE_0_N_A, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0 + } + }, + { PINMUX_CFG_REG_VAR("IPSR2", 0xE6060208, 32, + 4, 4, 4, 4, 4, 4, 4, 4) { + /* IPSR2_31_28 [4] */ + IFN_VI0_CLK, FN_MSIOF2_SCK, FN_SCK3, 0, + FN_HSCK3, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR2_27_24 [4] */ + IFN_IRQ0, FN_CC5_OSCOUT, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR2_23_20 [4] */ + IFN_DU_EXODDF_DU_ODDF_DISP_CDE, FN_MSIOF3_SYNC, 0, FN_A21, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR2_19_16 [4] */ + IFN_DU_EXVSYNC_DU_VSYNC, FN_MSIOF3_SCK, 0, FN_A20, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR2_15_12 [4] */ + IFN_DU_EXHSYNC_DU_HSYNC, FN_HRX0, 0, FN_A19, + FN_IRQ3, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR2_11_8 [4] */ + IFN_DU_DOTCLKOUT, FN_SCIF_CLK_A, 0, FN_A18, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR2_7_4 [4] */ + IFN_DU_DB7, 0, 0, FN_A17, + FN_STPWT_EXTFXR, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR2_3_0 [4] */ + IFN_DU_DB6, 0, 0, FN_A16, + FN_FXR_TXENB_N, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + } + }, + { PINMUX_CFG_REG_VAR("IPSR3", 0xE606020C, 32, + 4, 4, 4, 4, 4, 4, 4, 4) { + /* IPSR3_31_28 [4] */ + IFN_VI0_DATA4, FN_HRTS1_N, FN_RX1_A, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR3_27_24 [4] */ + IFN_VI0_DATA3, FN_HSCK1, FN_SCL3_A, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR3_23_20 [4] */ + IFN_VI0_DATA2, FN_AVB0_AVTP_PPS, FN_SDA3_A, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR3_19_16 [4] */ + IFN_VI0_DATA1, FN_MSIOF2_SS2, FN_SCK1, 0, + FN_SPEEDIN_A, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR3_15_12 [4] */ + IFN_VI0_DATA0, FN_MSIOF2_SS1, FN_RTS3_N_TANS, 0, + FN_HRX3, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR3_11_8 [4] */ + IFN_VI0_VSYNC_N, FN_MSIOF2_SYNC, FN_CTS3_N, 0, + FN_HTX3, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR3_7_4 [4] */ + IFN_VI0_HSYNC_N, FN_MSIOF2_TXD, FN_TX3, 0, + FN_HRTS3_N, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR3_3_0 [4] */ + IFN_VI0_CLKENB, FN_MSIOF2_RXD, FN_RX3, FN_RD_WR_N, + FN_HCTS3_N, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + } + }, + { PINMUX_CFG_REG_VAR("IPSR4", 0xE6060210, 32, + 4, 4, 4, 4, 4, 4, 4, 4) { + /* IPSR4_31_28 [4] */ + IFN_VI0_FIELD, FN_HRX2, FN_PWM4_A, FN_CS1_N_A26, + FN_FSCLKST2_N_A, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR4_27_24 [4] */ + IFN_VI0_DATA11, FN_HTX2, FN_PWM3_A, FN_A25, + FN_FSO_TOE_N_B, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR4_23_20 [4] */ + IFN_VI0_DATA10, FN_HRTS2_N, FN_PWM2_A, FN_A24, + FN_FSO_CFE_1_N_B, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR4_19_16 [4] */ + IFN_VI0_DATA9, FN_HCTS2_N, FN_PWM1_A, FN_A23, + FN_FSO_CFE_0_N_B, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR4_15_12 [4] */ + IFN_VI0_DATA8, FN_HSCK2, FN_PWM0_A, FN_A22, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR4_11_8 [4] */ + IFN_VI0_DATA7, FN_HRX1, FN_RTS1_N_TANS, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR4_7_4 [4] */ + IFN_VI0_DATA6, FN_HTX1, FN_CTS1_N, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR4_3_0 [4] */ + IFN_VI0_DATA5, FN_HCTS1_N, FN_TX1_A, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + } + }, + { PINMUX_CFG_REG_VAR("IPSR5", 0xE6060214, 32, + 4, 4, 4, 4, 4, 4, 4, 4) { + /* IPSR5_31_28 [4] */ + IFN_VI1_DATA3, FN_CANFD0_RX_B, 0, FN_D6, + FN_MMC_D1, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR5_27_24 [4] */ + IFN_VI1_DATA2, FN_CANFD0_TX_B, 0, FN_D5, + FN_MMC_D0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR5_23_20 [4] */ + IFN_VI1_DATA1, FN_MSIOF1_SS2, 0, FN_D4, + FN_MMC_CMD, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR5_19_16 [4] */ + IFN_VI1_DATA0, FN_MSIOF1_SS1, 0, FN_D3, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR5_15_12 [4] */ + IFN_VI1_VSYNC_N, FN_MSIOF1_SYNC, 0, FN_D2, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR5_11_8 [4] */ + IFN_VI1_HSYNC_N, FN_MSIOF1_SCK, 0, FN_D1, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR5_7_4 [4] */ + IFN_VI1_CLKENB, FN_MSIOF1_TXD, 0, FN_D0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR5_3_0 [4] */ + IFN_VI1_CLK, FN_MSIOF1_RXD, 0, FN_CS0_N, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + } + }, + { PINMUX_CFG_REG_VAR("IPSR6", 0xE6060218, 32, + 4, 4, 4, 4, 4, 4, 4, 4) { + /* IPSR6_31_28 [4] */ + IFN_VI1_DATA11, FN_SCL4, FN_IRQ4, FN_D14, + FN_MMC_WP, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR6_27_24 [4] */ + IFN_VI1_DATA10, 0, 0, FN_D13, + FN_MMC_D7, FN_SDA3_B, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR6_23_20 [4] */ + IFN_VI1_DATA9, 0, FN_RTS4_N_TANS, FN_D12, + FN_MMC_D6, FN_SCL3_B, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR6_19_16 [4] */ + IFN_VI1_DATA8, 0, FN_CTS4_N, FN_D11, + FN_MMC_D5, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR6_15_12 [4] */ + IFN_VI1_DATA7, 0, FN_TX4, FN_D10, + FN_MMC_D4, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR6_11_8 [4] */ + IFN_VI1_DATA6, 0, FN_RX4, FN_D9, + FN_MMC_CLK, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR6_7_4 [4] */ + IFN_VI1_DATA5, 0, FN_SCK4, FN_D8, + FN_MMC_D3, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR6_3_0 [4] */ + IFN_VI1_DATA4, FN_CANFD_CLK_B, 0, FN_D7, + FN_MMC_D2, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + } + }, + { PINMUX_CFG_REG_VAR("IPSR7", 0xE606021C, 32, + 4, 4, 4, 4, 4, 4, 4, 4) { + /* IPSR7_31_28 [4] */ + IFN_AVB0_AVTP_CAPTURE, 0, 0, 0, + FN_FSCLKST2_N_B, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR7_27_24 [4] */ + IFN_SDA2, FN_DU_DB1, FN_TCLK2_A, FN_EX_WAIT0, + FN_TX0, FN_MSIOF0_SS2, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR7_23_20 [4] */ + IFN_SCL2, FN_DU_DB0, FN_TCLK1_A, FN_WE1_N, + FN_RX0, FN_MSIOF0_SS1, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR7_19_16 [4] */ + IFN_SDA1, FN_DU_DG1, FN_TPU0TO3, FN_WE0_N, + FN_RTS0_N_TANS, FN_MSIOF0_SYNC, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR7_15_12 [4] */ + IFN_SCL1, FN_DU_DG0, FN_TPU0TO2, FN_RD_N, + FN_CTS0_N, FN_MSIOF0_SCK, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR7_11_8 [4] */ + IFN_SDA0, FN_DU_DR1, FN_TPU0TO1, FN_BS_N, + FN_SCK0, FN_MSIOF0_TXD, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR7_7_4 [4] */ + IFN_SCL0, FN_DU_DR0, FN_TPU0TO0, FN_CLKOUT, + 0, FN_MSIOF0_RXD, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR7_3_0 [4] */ + IFN_VI1_FIELD, FN_SDA4, FN_IRQ5, FN_D15, + FN_MMC_CD, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + } + }, + { PINMUX_CFG_REG_VAR("IPSR8", 0xE6060220, 32, + 4, 4, 4, 4, 4, 4, 4, 4) { + /* IPSR8_31_28 [4] */ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR8_27_24 [4] */ + IFN_DIGRF_CLKOUT, FN_DIGRF_CLKEN_OUT, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR8_23_20 [4] */ + IFN_DIGRF_CLKIN, FN_DIGRF_CLKEN_IN, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR8_19_16 [4] */ + IFN_CANFD_CLK_A, FN_CLK_EXTFXR, FN_PWM4_B, FN_SPEEDIN_B, + FN_SCIF_CLK_B, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR8_15_12 [4] */ + IFN_CANFD1_RX, FN_RXDB_EXTFXR, FN_PWM3_B, FN_TCLK2_B, + FN_RX1_B, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR8_11_8 [4] */ + IFN_CANFD1_TX, FN_FXR_TXDB, FN_PWM2_B, FN_TCLK1_B, + FN_TX1_B, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR8_7_4 [4] */ + IFN_CANFD0_RX_A, FN_RXDA_EXTFXR, FN_PWM1_B, FN_DU_CDE, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* IPSR8_3_0 [4] */ + IFN_CANFD0_TX_A, FN_FXR_TXDA, FN_PWM0_B, FN_DU_DISP, + FN_FSCLKST2_N_C, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + } + }, + { PINMUX_CFG_REG("MOD_SEL0", 0xE6060500, 32, 1) { + /* reserved [31..24] */ + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + /* reserved [23..16] */ + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + /* reserved [15..11] */ + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + /* SEL_HSCIF0 [1] */ + FN_SEL_HSCIF0_0, + FN_SEL_HSCIF0_1, + /* SEL_SCIF1 [1] */ + FN_SEL_SCIF1_0, + FN_SEL_SCIF1_1, + /* SEL_CANFD0 [1] */ + FN_SEL_CANFD0_0, + FN_SEL_CANFD0_1, + /* SEL_PWM4 [1] */ + FN_SEL_PWM4_0, + FN_SEL_PWM4_1, + /* SEL_PWM3 [1] */ + FN_SEL_PWM3_0, + FN_SEL_PWM3_1, + /* SEL_PWM2 [1] */ + FN_SEL_PWM2_0, + FN_SEL_PWM2_1, + /* SEL_PWM1 [1] */ + FN_SEL_PWM1_0, + FN_SEL_PWM1_1, + /* SEL_PWM0 [1] */ + FN_SEL_PWM0_0, + FN_SEL_PWM0_1, + /* SEL_RFSO [1] */ + FN_SEL_RFSO_0, + FN_SEL_RFSO_1, + /* SEL_RSP [1] */ + FN_SEL_RSP_0, + FN_SEL_RSP_1, + /* SEL_TMU [1] */ + FN_SEL_TMU_0, + FN_SEL_TMU_1, + } + }, + + /* under construction */ + { PINMUX_CFG_REG("INOUTSEL0", 0xE6050004, 32, 1) { + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + + 0, 0, + 0, 0, + GP_0_21_IN, GP_0_21_OUT, + GP_0_20_IN, GP_0_20_OUT, + GP_0_19_IN, GP_0_19_OUT, + GP_0_18_IN, GP_0_18_OUT, + GP_0_17_IN, GP_0_17_OUT, + GP_0_16_IN, GP_0_16_OUT, + GP_0_15_IN, GP_0_15_OUT, + GP_0_14_IN, GP_0_14_OUT, + GP_0_13_IN, GP_0_13_OUT, + GP_0_12_IN, GP_0_12_OUT, + GP_0_11_IN, GP_0_11_OUT, + GP_0_10_IN, GP_0_10_OUT, + GP_0_9_IN, GP_0_9_OUT, + GP_0_8_IN, GP_0_8_OUT, + GP_0_7_IN, GP_0_7_OUT, + GP_0_6_IN, GP_0_6_OUT, + GP_0_5_IN, GP_0_5_OUT, + GP_0_4_IN, GP_0_4_OUT, + GP_0_3_IN, GP_0_3_OUT, + GP_0_2_IN, GP_0_2_OUT, + GP_0_1_IN, GP_0_1_OUT, + GP_0_0_IN, GP_0_0_OUT, + } + }, + { PINMUX_CFG_REG("INOUTSEL1", 0xE6051004, 32, 1) { + 0, 0, + 0, 0, + 0, 0, + 0, 0, + GP_1_27_IN, GP_1_27_OUT, + GP_1_26_IN, GP_1_26_OUT, + GP_1_25_IN, GP_1_25_OUT, + GP_1_24_IN, GP_1_24_OUT, + GP_1_23_IN, GP_1_23_OUT, + GP_1_22_IN, GP_1_22_OUT, + GP_1_21_IN, GP_1_21_OUT, + GP_1_20_IN, GP_1_20_OUT, + GP_1_19_IN, GP_1_19_OUT, + GP_1_18_IN, GP_1_18_OUT, + GP_1_17_IN, GP_1_17_OUT, + GP_1_16_IN, GP_1_16_OUT, + GP_1_15_IN, GP_1_15_OUT, + GP_1_14_IN, GP_1_14_OUT, + GP_1_13_IN, GP_1_13_OUT, + GP_1_12_IN, GP_1_12_OUT, + GP_1_11_IN, GP_1_11_OUT, + GP_1_10_IN, GP_1_10_OUT, + GP_1_9_IN, GP_1_9_OUT, + GP_1_8_IN, GP_1_8_OUT, + GP_1_7_IN, GP_1_7_OUT, + GP_1_6_IN, GP_1_6_OUT, + GP_1_5_IN, GP_1_5_OUT, + GP_1_4_IN, GP_1_4_OUT, + GP_1_3_IN, GP_1_3_OUT, + GP_1_2_IN, GP_1_2_OUT, + GP_1_1_IN, GP_1_1_OUT, + GP_1_0_IN, GP_1_0_OUT, + } + }, + { PINMUX_CFG_REG("INOUTSEL2", 0xE6052004, 32, 1) { + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + GP_2_16_IN, GP_2_16_OUT, + GP_2_15_IN, GP_2_15_OUT, + GP_2_14_IN, GP_2_14_OUT, + GP_2_13_IN, GP_2_13_OUT, + GP_2_12_IN, GP_2_12_OUT, + GP_2_11_IN, GP_2_11_OUT, + GP_2_10_IN, GP_2_10_OUT, + GP_2_9_IN, GP_2_9_OUT, + GP_2_8_IN, GP_2_8_OUT, + GP_2_7_IN, GP_2_7_OUT, + GP_2_6_IN, GP_2_6_OUT, + GP_2_5_IN, GP_2_5_OUT, + GP_2_4_IN, GP_2_4_OUT, + GP_2_3_IN, GP_2_3_OUT, + GP_2_2_IN, GP_2_2_OUT, + GP_2_1_IN, GP_2_1_OUT, + GP_2_0_IN, GP_2_0_OUT, + } + }, + { PINMUX_CFG_REG("INOUTSEL3", 0xE6053004, 32, 1) { + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + GP_3_16_IN, GP_3_16_OUT, + GP_3_15_IN, GP_3_15_OUT, + GP_3_14_IN, GP_3_14_OUT, + GP_3_13_IN, GP_3_13_OUT, + GP_3_12_IN, GP_3_12_OUT, + GP_3_11_IN, GP_3_11_OUT, + GP_3_10_IN, GP_3_10_OUT, + GP_3_9_IN, GP_3_9_OUT, + GP_3_8_IN, GP_3_8_OUT, + GP_3_7_IN, GP_3_7_OUT, + GP_3_6_IN, GP_3_6_OUT, + GP_3_5_IN, GP_3_5_OUT, + GP_3_4_IN, GP_3_4_OUT, + GP_3_3_IN, GP_3_3_OUT, + GP_3_2_IN, GP_3_2_OUT, + GP_3_1_IN, GP_3_1_OUT, + GP_3_0_IN, GP_3_0_OUT, + } + }, + { PINMUX_CFG_REG("INOUTSEL4", 0xE6054004, 32, 1) { + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + + 0, 0, + 0, 0, + GP_4_5_IN, GP_4_5_OUT, + GP_4_4_IN, GP_4_4_OUT, + GP_4_3_IN, GP_4_3_OUT, + GP_4_2_IN, GP_4_2_OUT, + GP_4_1_IN, GP_4_1_OUT, + GP_4_0_IN, GP_4_0_OUT, + } + }, + { PINMUX_CFG_REG("INOUTSEL5", 0xE6055004, 32, 1) { + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + + 0, 0, + GP_5_14_IN, GP_5_14_OUT, + GP_5_13_IN, GP_5_13_OUT, + GP_5_12_IN, GP_5_12_OUT, + GP_5_11_IN, GP_5_11_OUT, + GP_5_10_IN, GP_5_10_OUT, + GP_5_9_IN, GP_5_9_OUT, + GP_5_8_IN, GP_5_8_OUT, + GP_5_7_IN, GP_5_7_OUT, + GP_5_6_IN, GP_5_6_OUT, + GP_5_5_IN, GP_5_5_OUT, + GP_5_4_IN, GP_5_4_OUT, + GP_5_3_IN, GP_5_3_OUT, + GP_5_2_IN, GP_5_2_OUT, + GP_5_1_IN, GP_5_1_OUT, + GP_5_0_IN, GP_5_0_OUT, + } + }, + { }, + { }, + { }, +}; + +static struct pinmux_data_reg pinmux_data_regs[] = { + /* use OUTDT registers? */ + { PINMUX_DATA_REG("INDT0", 0xE6050008, 32) { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, GP_0_21_DATA, GP_0_20_DATA, + GP_0_19_DATA, GP_0_18_DATA, GP_0_17_DATA, GP_0_16_DATA, + GP_0_15_DATA, GP_0_14_DATA, GP_0_13_DATA, GP_0_12_DATA, + GP_0_11_DATA, GP_0_10_DATA, GP_0_9_DATA, GP_0_8_DATA, + GP_0_7_DATA, GP_0_6_DATA, GP_0_5_DATA, GP_0_4_DATA, + GP_0_3_DATA, GP_0_2_DATA, GP_0_1_DATA, GP_0_0_DATA } + }, + { PINMUX_DATA_REG("INDT1", 0xE6051008, 32) { + 0, 0, 0, 0, + GP_1_27_DATA, GP_1_26_DATA, GP_1_25_DATA, GP_1_24_DATA, + GP_1_23_DATA, GP_1_22_DATA, GP_1_21_DATA, GP_1_20_DATA, + GP_1_19_DATA, GP_1_18_DATA, GP_1_17_DATA, GP_1_16_DATA, + GP_1_15_DATA, GP_1_14_DATA, GP_1_13_DATA, GP_1_12_DATA, + GP_1_11_DATA, GP_1_10_DATA, GP_1_9_DATA, GP_1_8_DATA, + GP_1_7_DATA, GP_1_6_DATA, GP_1_5_DATA, GP_1_4_DATA, + GP_1_3_DATA, GP_1_2_DATA, GP_1_1_DATA, GP_1_0_DATA } + }, + { PINMUX_DATA_REG("INDT2", 0xE6052008, 32) { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, GP_2_16_DATA, + GP_2_15_DATA, GP_2_14_DATA, GP_2_13_DATA, GP_2_12_DATA, + GP_2_11_DATA, GP_2_10_DATA, GP_2_9_DATA, GP_2_8_DATA, + GP_2_7_DATA, GP_2_6_DATA, GP_2_5_DATA, GP_2_4_DATA, + GP_2_3_DATA, GP_2_2_DATA, GP_2_1_DATA, GP_2_0_DATA } + }, + { PINMUX_DATA_REG("INDT3", 0xE6053008, 32) { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, GP_3_16_DATA, + GP_3_15_DATA, GP_3_14_DATA, GP_3_13_DATA, GP_3_12_DATA, + GP_3_11_DATA, GP_3_10_DATA, GP_3_9_DATA, GP_3_8_DATA, + GP_3_7_DATA, GP_3_6_DATA, GP_3_5_DATA, GP_3_4_DATA, + GP_3_3_DATA, GP_3_2_DATA, GP_3_1_DATA, GP_3_0_DATA } + }, + { PINMUX_DATA_REG("INDT4", 0xE6054008, 32) { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, GP_4_5_DATA, GP_4_4_DATA, + GP_4_3_DATA, GP_4_2_DATA, GP_4_1_DATA, GP_4_0_DATA } + }, + { PINMUX_DATA_REG("INDT5", 0xE6055008, 32) { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, GP_5_14_DATA, GP_5_13_DATA, GP_5_12_DATA, + GP_5_11_DATA, GP_5_10_DATA, GP_5_9_DATA, GP_5_8_DATA, + GP_5_7_DATA, GP_5_6_DATA, GP_5_5_DATA, GP_5_4_DATA, + GP_5_3_DATA, GP_5_2_DATA, GP_5_1_DATA, GP_5_0_DATA } + }, + { }, + { }, + { }, +}; + +static struct pinmux_info r8a7797_pinmux_info = { + .name = "r8a7797_pfc", + + .unlock_reg = 0xe6060000, /* PMMR */ + + .reserved_id = PINMUX_RESERVED, + .data = { PINMUX_DATA_BEGIN, PINMUX_DATA_END }, + .input = { PINMUX_INPUT_BEGIN, PINMUX_INPUT_END }, + .output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END }, + .mark = { PINMUX_MARK_BEGIN, PINMUX_MARK_END }, + .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END }, + + .first_gpio = GPIO_GP_0_0, + .last_gpio = GPIO_FN_DIGRF_CLKEN_OUT, + + .gpios = pinmux_gpios, + .cfg_regs = pinmux_config_regs, + .data_regs = pinmux_data_regs, + + .gpio_data = pinmux_data, + .gpio_data_size = ARRAY_SIZE(pinmux_data), +}; + +void r8a7797_pinmux_init(void) +{ + register_pinmux(&r8a7797_pinmux_info); +} diff --git a/arch/arm/cpu/armv8/rcar_gen3/pfc.c b/arch/arm/cpu/armv8/rcar_gen3/pfc.c index 0543f11..bd3aa0a 100644 --- a/arch/arm/cpu/armv8/rcar_gen3/pfc.c +++ b/arch/arm/cpu/armv8/rcar_gen3/pfc.c @@ -20,5 +20,7 @@ void pinmux_init(void) r8a7795_pinmux_init(); #elif defined(CONFIG_R8A7796X) r8a7796_pinmux_init(); +#elif defined(CONFIG_R8A7797) + r8a7797_pinmux_init(); #endif } diff --git a/arch/arm/cpu/armv8/rcar_gen3/prr_depend.c b/arch/arm/cpu/armv8/rcar_gen3/prr_depend.c index 776c596..8de3a16 100644 --- a/arch/arm/cpu/armv8/rcar_gen3/prr_depend.c +++ b/arch/arm/cpu/armv8/rcar_gen3/prr_depend.c @@ -98,10 +98,37 @@ int rcar_need_reconfig_sdhi_drvctrl(void) #define SDH800_SD200 (SD_SRCFC_DIV1 | SD_FC_DIV4) #define SDH400_SD200 (SD_SRCFC_DIV1 | SD_FC_DIV2) +/* + * for sd/mmc function(V3M) + */ +#define SDHFC_BIT (8) +#define SD_SDHFC_DIV2 (0 << SDHFC_BIT) +#define SD_SDHFC_DIV3 (1 << SDHFC_BIT) +#define SD_SDHFC_DIV4 (2 << SDHFC_BIT) +#define SD_SDHFC_DIV6 (3 << SDHFC_BIT) +#define SD_SDHFC_DIV8 (4 << SDHFC_BIT) +#define SD_SDHFC_DIV12 (5 << SDHFC_BIT) +#define SD_SDHFC_DIV16 (6 << SDHFC_BIT) +#define SD_SDHFC_DIV18 (7 << SDHFC_BIT) +#define SD_SDHFC_DIV24 (8 << SDHFC_BIT) +#define SD_SDHFC_DIV36 (10 << SDHFC_BIT) +#define SD_SDHFC_DIV48 (11 << SDHFC_BIT) +#define SD0FC_BIT (4) +#define SD_SD0FC_DIV8 (4 << SD0FC_BIT) +#define SD_SD0FC_DIV10 (12 << SD0FC_BIT) +#define SD_SD0FC_DIV12 (5 << SD0FC_BIT) +#define SD_SD0FC_DIV16 (6 << SD0FC_BIT) +#define SD_SD0FC_DIV18 (7 << SD0FC_BIT) +#define SD_SD0FC_DIV24 (8 << SD0FC_BIT) +#define SD_SD0FC_DIV36 (10 << SD0FC_BIT) +#define SD_SD0FC_DIV48 (11 << SD0FC_BIT) + int rcar_get_sdhi_config_clk(void) { if (RCAR_PRR_IS_PRODUCT(H3) && (!RCAR_PRR_CHK_CUT(H3, WS10))) return SDH400_SD200; + else if (RCAR_PRR_IS_PRODUCT(V3M)) + return (SD_SDHFC_DIV2 | SD_SD0FC_DIV8); else return SDH800_SD200; } diff --git a/arch/arm/include/asm/arch-rcar_gen3/gpio.h b/arch/arm/include/asm/arch-rcar_gen3/gpio.h index c58edf4..fb8b758 100644 --- a/arch/arm/include/asm/arch-rcar_gen3/gpio.h +++ b/arch/arm/include/asm/arch-rcar_gen3/gpio.h @@ -16,6 +16,8 @@ #include #elif defined(CONFIG_R8A7796X) #include +#elif defined(CONFIG_R8A7797) +#include #endif #if defined(CONFIG_R8A7795) @@ -23,6 +25,8 @@ void r8a7795_pinmux_init(void); void r8a7795_es_pinmux_init(void); #elif defined(CONFIG_R8A7796X) void r8a7796_pinmux_init(void); +#elif defined(CONFIG_R8A7797) +void r8a7797_pinmux_init(void); #endif void pinmux_init(void); diff --git a/arch/arm/include/asm/arch-rcar_gen3/r8a7797-gpio.h b/arch/arm/include/asm/arch-rcar_gen3/r8a7797-gpio.h new file mode 100644 index 0000000..40cccd9 --- /dev/null +++ b/arch/arm/include/asm/arch-rcar_gen3/r8a7797-gpio.h @@ -0,0 +1,456 @@ +/* + * arch/arm/include/asm/arch-rcar_gen3/r8a7797-gpio.h + * This file defines pin function control of gpio. + * + * Copyright (C) 2016 Renesas Electronics Corporation + * + * SPDX-License-Identifier: GPL-2.0+ + */ +#ifndef __ASM_R8A7797_GPIO_H__ +#define __ASM_R8A7797_GPIO_H__ + +/* Pin Function Controller: + * GPIO_FN_xx - GPIO used to select pin function + * GPIO_GP_x_x - GPIO mapped to real I/O pin on CPU + */ +enum { + GPIO_GP_0_0, GPIO_GP_0_1, GPIO_GP_0_2, GPIO_GP_0_3, + GPIO_GP_0_4, GPIO_GP_0_5, GPIO_GP_0_6, GPIO_GP_0_7, + GPIO_GP_0_8, GPIO_GP_0_9, GPIO_GP_0_10, GPIO_GP_0_11, + GPIO_GP_0_12, GPIO_GP_0_13, GPIO_GP_0_14, GPIO_GP_0_15, + GPIO_GP_0_16, GPIO_GP_0_17, GPIO_GP_0_18, GPIO_GP_0_19, + GPIO_GP_0_20, GPIO_GP_0_21, + + GPIO_GP_1_0, GPIO_GP_1_1, GPIO_GP_1_2, GPIO_GP_1_3, + GPIO_GP_1_4, GPIO_GP_1_5, GPIO_GP_1_6, GPIO_GP_1_7, + GPIO_GP_1_8, GPIO_GP_1_9, GPIO_GP_1_10, GPIO_GP_1_11, + GPIO_GP_1_12, GPIO_GP_1_13, GPIO_GP_1_14, GPIO_GP_1_15, + GPIO_GP_1_16, GPIO_GP_1_17, GPIO_GP_1_18, GPIO_GP_1_19, + GPIO_GP_1_20, GPIO_GP_1_21, GPIO_GP_1_22, GPIO_GP_1_23, + GPIO_GP_1_24, GPIO_GP_1_25, GPIO_GP_1_26, GPIO_GP_1_27, + + GPIO_GP_2_0, GPIO_GP_2_1, GPIO_GP_2_2, GPIO_GP_2_3, + GPIO_GP_2_4, GPIO_GP_2_5, GPIO_GP_2_6, GPIO_GP_2_7, + GPIO_GP_2_8, GPIO_GP_2_9, GPIO_GP_2_10, GPIO_GP_2_11, + GPIO_GP_2_12, GPIO_GP_2_13, GPIO_GP_2_14, GPIO_GP_2_15, + GPIO_GP_2_16, + + GPIO_GP_3_0, GPIO_GP_3_1, GPIO_GP_3_2, GPIO_GP_3_3, + GPIO_GP_3_4, GPIO_GP_3_5, GPIO_GP_3_6, GPIO_GP_3_7, + GPIO_GP_3_8, GPIO_GP_3_9, GPIO_GP_3_10, GPIO_GP_3_11, + GPIO_GP_3_12, GPIO_GP_3_13, GPIO_GP_3_14, GPIO_GP_3_15, + GPIO_GP_3_16, + + GPIO_GP_4_0, GPIO_GP_4_1, GPIO_GP_4_2, GPIO_GP_4_3, + GPIO_GP_4_4, GPIO_GP_4_5, + + GPIO_GP_5_0, GPIO_GP_5_1, GPIO_GP_5_2, GPIO_GP_5_3, + GPIO_GP_5_4, GPIO_GP_5_5, GPIO_GP_5_6, GPIO_GP_5_7, + GPIO_GP_5_8, GPIO_GP_5_9, GPIO_GP_5_10, GPIO_GP_5_11, + GPIO_GP_5_12, GPIO_GP_5_13, GPIO_GP_5_14, + + /* GPSR0 */ + GPIO_GFN_DU_EXODDF_DU_ODDF_DISP_CDE, + GPIO_GFN_DU_EXVSYNC_DU_VSYNC, + GPIO_GFN_DU_EXHSYNC_DU_HSYNC, + GPIO_GFN_DU_DOTCLKOUT, + GPIO_GFN_DU_DB7, + GPIO_GFN_DU_DB6, + GPIO_GFN_DU_DB5, + GPIO_GFN_DU_DB4, + GPIO_GFN_DU_DB3, + GPIO_GFN_DU_DB2, + GPIO_GFN_DU_DG7, + GPIO_GFN_DU_DG6, + GPIO_GFN_DU_DG5, + GPIO_GFN_DU_DG4, + GPIO_GFN_DU_DG3, + GPIO_GFN_DU_DG2, + GPIO_GFN_DU_DR7, + GPIO_GFN_DU_DR6, + GPIO_GFN_DU_DR5, + GPIO_GFN_DU_DR4, + GPIO_GFN_DU_DR3, + GPIO_GFN_DU_DR2, + + /* GPSR1 */ + GPIO_GFN_DIGRF_CLKOUT, + GPIO_GFN_DIGRF_CLKIN, + GPIO_GFN_CANFD_CLK_A, + GPIO_GFN_CANFD1_RX, + GPIO_GFN_CANFD1_TX, + GPIO_GFN_CANFD0_RX_A, + GPIO_GFN_CANFD0_TX_A, + GPIO_GFN_AVB0_AVTP_CAPTURE, + GPIO_FN_AVB0_AVTP_MATCH, + GPIO_FN_AVB0_LINK, + GPIO_FN_AVB0_PHY_INT, + GPIO_FN_AVB0_MAGIC, + GPIO_FN_AVB0_MDC, + GPIO_FN_AVB0_MDIO, + GPIO_FN_AVB0_TXCREFCLK, + GPIO_FN_AVB0_TD3, + GPIO_FN_AVB0_TD2, + GPIO_FN_AVB0_TD1, + GPIO_FN_AVB0_TD0, + GPIO_FN_AVB0_TXC, + GPIO_FN_AVB0_TX_CTL, + GPIO_FN_AVB0_RD3, + GPIO_FN_AVB0_RD2, + GPIO_FN_AVB0_RD1, + GPIO_FN_AVB0_RD0, + GPIO_FN_AVB0_RXC, + GPIO_FN_AVB0_RX_CTL, + GPIO_GFN_IRQ0, + + /* GPSR2 */ + GPIO_GFN_VI0_FIELD, + GPIO_GFN_VI0_DATA11, + GPIO_GFN_VI0_DATA10, + GPIO_GFN_VI0_DATA9, + GPIO_GFN_VI0_DATA8, + GPIO_GFN_VI0_DATA7, + GPIO_GFN_VI0_DATA6, + GPIO_GFN_VI0_DATA5, + GPIO_GFN_VI0_DATA4, + GPIO_GFN_VI0_DATA3, + GPIO_GFN_VI0_DATA2, + GPIO_GFN_VI0_DATA1, + GPIO_GFN_VI0_DATA0, + GPIO_GFN_VI0_VSYNC_N, + GPIO_GFN_VI0_HSYNC_N, + GPIO_GFN_VI0_CLKENB, + GPIO_GFN_VI0_CLK, + + /* GPSR3 */ + GPIO_GFN_VI1_FIELD, + GPIO_GFN_VI1_DATA11, + GPIO_GFN_VI1_DATA10, + GPIO_GFN_VI1_DATA9, + GPIO_GFN_VI1_DATA8, + GPIO_GFN_VI1_DATA7, + GPIO_GFN_VI1_DATA6, + GPIO_GFN_VI1_DATA5, + GPIO_GFN_VI1_DATA4, + GPIO_GFN_VI1_DATA3, + GPIO_GFN_VI1_DATA2, + GPIO_GFN_VI1_DATA1, + GPIO_GFN_VI1_DATA0, + GPIO_GFN_VI1_VSYNC_N, + GPIO_GFN_VI1_HSYNC_N, + GPIO_GFN_VI1_CLKENB, + GPIO_GFN_VI1_CLK, + + /* GPSR4 */ + GPIO_GFN_SDA2, + GPIO_GFN_SCL2, + GPIO_GFN_SDA1, + GPIO_GFN_SCL1, + GPIO_GFN_SDA0, + GPIO_GFN_SCL0, + + /* GPSR5 */ + GPIO_FN_RPC_INT_N, + GPIO_FN_RPC_WP_N, + GPIO_FN_RPC_RESET_N, + GPIO_FN_QSPI1_SSL, + GPIO_FN_QSPI1_IO3, + GPIO_FN_QSPI1_IO2, + GPIO_FN_QSPI1_MISO_IO1, + GPIO_FN_QSPI1_MOSI_IO0, + GPIO_FN_QSPI1_SPCLK, + GPIO_FN_QSPI0_SSL, + GPIO_FN_QSPI0_IO3, + GPIO_FN_QSPI0_IO2, + GPIO_FN_QSPI0_MISO_IO1, + GPIO_FN_QSPI0_MOSI_IO0, + GPIO_FN_QSPI0_SPCLK, + + /* IPSR0 */ + GPIO_IFN_DU_DR2, + GPIO_FN_HSCK0, + GPIO_FN_A0, + GPIO_IFN_DU_DR3, + GPIO_FN_HRTS0_N, + GPIO_FN_A1, + GPIO_IFN_DU_DR4, + GPIO_FN_HCTS0_N, + GPIO_FN_A2, + GPIO_IFN_DU_DR5, + GPIO_FN_HTX0, + GPIO_FN_A3, + GPIO_IFN_DU_DR6, + GPIO_FN_MSIOF3_RXD, + GPIO_FN_A4, + GPIO_IFN_DU_DR7, + GPIO_FN_MSIOF3_TXD, + GPIO_FN_A5, + GPIO_IFN_DU_DG2, + GPIO_FN_MSIOF3_SS1, + GPIO_FN_A6, + GPIO_IFN_DU_DG3, + GPIO_FN_MSIOF3_SS2, + GPIO_FN_A7, + GPIO_FN_PWMFSW0, + + /* IPSR1 */ + GPIO_IFN_DU_DG4, + GPIO_FN_A8, + GPIO_FN_FSO_CFE_0_N_A, + GPIO_IFN_DU_DG5, + GPIO_FN_A9, + GPIO_FN_FSO_CFE_1_N_A, + GPIO_IFN_DU_DG6, + GPIO_FN_A10, + GPIO_FN_FSO_TOE_N_A, + GPIO_IFN_DU_DG7, + GPIO_FN_A11, + GPIO_FN_IRQ1, + GPIO_IFN_DU_DB2, + GPIO_FN_A12, + GPIO_FN_IRQ2, + GPIO_IFN_DU_DB3, + GPIO_FN_A13, + GPIO_FN_FXR_CLKOUT1, + GPIO_IFN_DU_DB4, + GPIO_FN_A14, + GPIO_FN_FXR_CLKOUT2, + GPIO_IFN_DU_DB5, + GPIO_FN_A15, + GPIO_FN_FXR_TXENA_N, + + /* IPSR2 */ + GPIO_IFN_DU_DB6, + GPIO_FN_A16, + GPIO_FN_FXR_TXENB_N, + GPIO_IFN_DU_DB7, + GPIO_FN_A17, + GPIO_FN_STPWT_EXTFXR, + GPIO_IFN_DU_DOTCLKOUT, + GPIO_FN_SCIF_CLK_A, + GPIO_FN_A18, + GPIO_IFN_DU_EXHSYNC_DU_HSYNC, + GPIO_FN_HRX0, + GPIO_FN_A19, + GPIO_FN_IRQ3, + GPIO_IFN_DU_EXVSYNC_DU_VSYNC, + GPIO_FN_MSIOF3_SCK, + GPIO_FN_A20, + GPIO_IFN_DU_EXODDF_DU_ODDF_DISP_CDE, + GPIO_FN_MSIOF3_SYNC, + GPIO_FN_A21, + GPIO_IFN_IRQ0, + GPIO_FN_CC5_OSCOUT, + GPIO_IFN_VI0_CLK, + GPIO_FN_MSIOF2_SCK, + GPIO_FN_SCK3, + GPIO_FN_HSCK3, + + /* IPSR3 */ + GPIO_IFN_VI0_CLKENB, + GPIO_FN_MSIOF2_RXD, + GPIO_FN_RX3, + GPIO_FN_RD_WR_N, + GPIO_FN_HCTS3_N, + GPIO_IFN_VI0_HSYNC_N, + GPIO_FN_MSIOF2_TXD, + GPIO_FN_TX3, + GPIO_FN_HRTS3_N, + GPIO_IFN_VI0_VSYNC_N, + GPIO_FN_MSIOF2_SYNC, + GPIO_FN_CTS3_N, + GPIO_FN_HTX3, + GPIO_IFN_VI0_DATA0, + GPIO_FN_MSIOF2_SS1, + GPIO_FN_RTS3_N_TANS, + GPIO_FN_HRX3, + GPIO_IFN_VI0_DATA1, + GPIO_FN_MSIOF2_SS2, + GPIO_FN_SCK1, + GPIO_FN_SPEEDIN_A, + GPIO_IFN_VI0_DATA2, + GPIO_FN_AVB0_AVTP_PPS, + GPIO_FN_SDA3_A, + GPIO_IFN_VI0_DATA3, + GPIO_FN_HSCK1, + GPIO_FN_SCL3_A, + GPIO_IFN_VI0_DATA4, + GPIO_FN_HRTS1_N, + GPIO_FN_RX1_A, + + /* IPSR4 */ + GPIO_IFN_VI0_DATA5, + GPIO_FN_HCTS1_N, + GPIO_FN_TX1_A, + GPIO_IFN_VI0_DATA6, + GPIO_FN_HTX1, + GPIO_FN_CTS1_N, + GPIO_IFN_VI0_DATA7, + GPIO_FN_HRX1, + GPIO_FN_RTS1_N_TANS, + GPIO_IFN_VI0_DATA8, + GPIO_FN_HSCK2, + GPIO_FN_PWM0_A, + GPIO_FN_A22, + GPIO_IFN_VI0_DATA9, + GPIO_FN_HCTS2_N, + GPIO_FN_PWM1_A, + GPIO_FN_A23, + GPIO_FN_FSO_CFE_0_N_B, + GPIO_IFN_VI0_DATA10, + GPIO_FN_HRTS2_N, + GPIO_FN_PWM2_A, + GPIO_FN_A24, + GPIO_FN_FSO_CFE_1_N_B, + GPIO_IFN_VI0_DATA11, + GPIO_FN_HTX2, + GPIO_FN_PWM3_A, + GPIO_FN_A25, + GPIO_FN_FSO_TOE_N_B, + GPIO_IFN_VI0_FIELD, + GPIO_FN_HRX2, + GPIO_FN_PWM4_A, + GPIO_FN_CS1_N_A26, + GPIO_FN_FSCLKST2_N_A, + + /* IPSR5 */ + GPIO_IFN_VI1_CLK, + GPIO_FN_MSIOF1_RXD, + GPIO_FN_CS0_N, + GPIO_IFN_VI1_CLKENB, + GPIO_FN_MSIOF1_TXD, + GPIO_FN_D0, + GPIO_IFN_VI1_HSYNC_N, + GPIO_FN_MSIOF1_SCK, + GPIO_FN_D1, + GPIO_IFN_VI1_VSYNC_N, + GPIO_FN_MSIOF1_SYNC, + GPIO_FN_D2, + GPIO_IFN_VI1_DATA0, + GPIO_FN_MSIOF1_SS1, + GPIO_FN_D3, + GPIO_IFN_VI1_DATA1, + GPIO_FN_MSIOF1_SS2, + GPIO_FN_D4, + GPIO_FN_MMC_CMD, + GPIO_IFN_VI1_DATA2, + GPIO_FN_CANFD0_TX_B, + GPIO_FN_D5, + GPIO_FN_MMC_D0, + GPIO_IFN_VI1_DATA3, + GPIO_FN_CANFD0_RX_B, + GPIO_FN_D6, + GPIO_FN_MMC_D1, + + /* IPSR6 */ + GPIO_IFN_VI1_DATA4, + GPIO_FN_CANFD_CLK_B, + GPIO_FN_D7, + GPIO_FN_MMC_D2, + GPIO_IFN_VI1_DATA5, + GPIO_FN_SCK4, + GPIO_FN_D8, + GPIO_FN_MMC_D3, + GPIO_IFN_VI1_DATA6, + GPIO_FN_RX4, + GPIO_FN_D9, + GPIO_FN_MMC_CLK, + GPIO_IFN_VI1_DATA7, + GPIO_FN_TX4, + GPIO_FN_D10, + GPIO_FN_MMC_D4, + GPIO_IFN_VI1_DATA8, + GPIO_FN_CTS4_N, + GPIO_FN_D11, + GPIO_FN_MMC_D5, + GPIO_IFN_VI1_DATA9, + GPIO_FN_RTS4_N_TANS, + GPIO_FN_D12, + GPIO_FN_MMC_D6, + GPIO_FN_SCL3_B, + GPIO_IFN_VI1_DATA10, + GPIO_FN_D13, + GPIO_FN_MMC_D7, + GPIO_FN_SDA3_B, + GPIO_IFN_VI1_DATA11, + GPIO_FN_SCL4, + GPIO_FN_IRQ4, + GPIO_FN_D14, + GPIO_FN_MMC_WP, + + /* IPSR7 */ + GPIO_IFN_VI1_FIELD, + GPIO_FN_SDA4, + GPIO_FN_IRQ5, + GPIO_FN_D15, + GPIO_FN_MMC_CD, + GPIO_IFN_SCL0, + GPIO_FN_DU_DR0, + GPIO_FN_TPU0TO0, + GPIO_FN_CLKOUT, + GPIO_FN_MSIOF0_RXD, + GPIO_IFN_SDA0, + GPIO_FN_DU_DR1, + GPIO_FN_TPU0TO1, + GPIO_FN_BS_N, + GPIO_FN_SCK0, + GPIO_FN_MSIOF0_TXD, + GPIO_IFN_SCL1, + GPIO_FN_DU_DG0, + GPIO_FN_TPU0TO2, + GPIO_FN_RD_N, + GPIO_FN_CTS0_N, + GPIO_FN_MSIOF0_SCK, + GPIO_IFN_SDA1, + GPIO_FN_DU_DG1, + GPIO_FN_TPU0TO3, + GPIO_FN_WE0_N, + GPIO_FN_RTS0_N_TANS, + GPIO_FN_MSIOF0_SYNC, + GPIO_IFN_SCL2, + GPIO_FN_DU_DB0, + GPIO_FN_TCLK1_A, + GPIO_FN_WE1_N, + GPIO_FN_RX0, + GPIO_FN_MSIOF0_SS1, + GPIO_IFN_SDA2, + GPIO_FN_DU_DB1, + GPIO_FN_TCLK2_A, + GPIO_FN_EX_WAIT0, + GPIO_FN_TX0, + GPIO_FN_MSIOF0_SS2, + GPIO_IFN_AVB0_AVTP_CAPTURE, + GPIO_FN_FSCLKST2_N_B, + + /* IPSR8 */ + GPIO_IFN_CANFD0_TX_A, + GPIO_FN_FXR_TXDA, + GPIO_FN_PWM0_B, + GPIO_FN_DU_DISP, + GPIO_FN_FSCLKST2_N_C, + GPIO_IFN_CANFD0_RX_A, + GPIO_FN_RXDA_EXTFXR, + GPIO_FN_PWM1_B, + GPIO_FN_DU_CDE, + GPIO_IFN_CANFD1_TX, + GPIO_FN_FXR_TXDB, + GPIO_FN_PWM2_B, + GPIO_FN_TCLK1_B, + GPIO_FN_TX1_B, + GPIO_IFN_CANFD1_RX, + GPIO_FN_RXDB_EXTFXR, + GPIO_FN_PWM3_B, + GPIO_FN_TCLK2_B, + GPIO_FN_RX1_B, + GPIO_IFN_CANFD_CLK_A, + GPIO_FN_CLK_EXTFXR, + GPIO_FN_PWM4_B, + GPIO_FN_SPEEDIN_B, + GPIO_FN_SCIF_CLK_B, + GPIO_IFN_DIGRF_CLKIN, + GPIO_FN_DIGRF_CLKEN_IN, + GPIO_IFN_DIGRF_CLKOUT, + GPIO_FN_DIGRF_CLKEN_OUT, +}; + +#endif /* __ASM_R8A7797_GPIO_H__ */ diff --git a/arch/arm/include/asm/arch-rcar_gen3/r8a7797.h b/arch/arm/include/asm/arch-rcar_gen3/r8a7797.h new file mode 100644 index 0000000..09e83ba --- /dev/null +++ b/arch/arm/include/asm/arch-rcar_gen3/r8a7797.h @@ -0,0 +1,33 @@ +/* + * arch/arm/include/asm/arch-rcar_gen3/r8a7797.h + * This file defines registers and value for r8a7797. + * + * Copyright (C) 2016 Renesas Electronics Corporation + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __ASM_ARCH_R8A7797_H +#define __ASM_ARCH_R8A7797_H + +#include "rcar-base.h" + +/* Module stop control/status register bits */ +#define MSTP0_BITS 0x00230000 +#define MSTP1_BITS 0xFFFFFFFF +#define MSTP2_BITS 0x14062FD8 +#define MSTP3_BITS 0xFFFFFFDF +#define MSTP4_BITS 0x80000184 +#define MSTP5_BITS 0x83FFFFFF +#define MSTP6_BITS 0xFFFFFFFF +#define MSTP7_BITS 0xFFFFFFFF +#define MSTP8_BITS 0x7FF3FFF4 +#define MSTP9_BITS 0xFBF7FF97 +#define MSTP10_BITS 0xFFFEFFE0 +#define MSTP11_BITS 0x000000B7 + +/* SDHI */ +#define CONFIG_SYS_SH_SDHI2_BASE 0xEE140000 /* either MMC0 */ +#define CONFIG_SYS_SH_SDHI_NR_CHANNEL 1 + +#endif /* __ASM_ARCH_R8A7797_H */ diff --git a/arch/arm/include/asm/arch-rcar_gen3/rcar-base.h b/arch/arm/include/asm/arch-rcar_gen3/rcar-base.h index 18c1a74..fa24fc4 100644 --- a/arch/arm/include/asm/arch-rcar_gen3/rcar-base.h +++ b/arch/arm/include/asm/arch-rcar_gen3/rcar-base.h @@ -70,6 +70,11 @@ #define SMSTPCR10 0xE6150998 #define SMSTPCR11 0xE615099C +/* PLL */ +#define PLL0CR 0xE61500D8 +#define PLL0_STC_MASK 0x7F000000 +#define PLL0_STC_BIT 24 + /* SH-I2C */ #define CONFIG_SYS_I2C_SH_BASE0 0xE60B0000 diff --git a/arch/arm/include/asm/arch-rcar_gen3/rcar_gen3.h b/arch/arm/include/asm/arch-rcar_gen3/rcar_gen3.h index b412fad..c2ba0fb 100644 --- a/arch/arm/include/asm/arch-rcar_gen3/rcar_gen3.h +++ b/arch/arm/include/asm/arch-rcar_gen3/rcar_gen3.h @@ -14,6 +14,8 @@ #include #elif defined(CONFIG_R8A7796X) #include + #elif defined(CONFIG_R8A7797) + #include #else #error "SOC Name not defined" #endif diff --git a/drivers/serial/serial_sh.h b/drivers/serial/serial_sh.h index fe71e9a..478824e 100644 --- a/drivers/serial/serial_sh.h +++ b/drivers/serial/serial_sh.h @@ -226,7 +226,8 @@ struct uart_port { # define SCSCR_INIT(port) 0x38 /* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */ #elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \ defined(CONFIG_R8A7793) || defined(CONFIG_R8A7794) || \ - defined(CONFIG_R8A7795) || defined(CONFIG_R8A7796X) + defined(CONFIG_R8A7795) || defined(CONFIG_R8A7796X) || \ + defined(CONFIG_R8A7797) # define SCIF_ORER 0x0001 # define SCSCR_INIT(port) (port->clk_mode == EXT_CLK ? 0x32 : 0x30) /* TIE=0,RIE=0,TE=1,RE=1,REIE=0, */ diff --git a/include/configs/rcar-gen3-common.h b/include/configs/rcar-gen3-common.h index 0a959f7..ec20aba 100644 --- a/include/configs/rcar-gen3-common.h +++ b/include/configs/rcar-gen3-common.h @@ -124,6 +128,17 @@ #define PHYS_SDRAM_1_SIZE ((unsigned long)(0x80000000 - DRAM_RSV_SIZE)) #define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1 #define CONFIG_SYS_SDRAM_SIZE PHYS_SDRAM_1_SIZE +#elif defined(CONFIG_R8A7797) +#define CONFIG_NR_DRAM_BANKS 1 +#define PHYS_SDRAM_1 (0x40000000 + DRAM_RSV_SIZE) /* legacy */ +#define PHYS_SDRAM_1_SIZE ((unsigned long)(0x40000000 - DRAM_RSV_SIZE)) + #if defined(CONFIG_TARGET_V3MSK) + #define PHYS_SDRAM_1_SIZE ((unsigned long)(0x80000000 - DRAM_RSV_SIZE)) + #else + #define PHYS_SDRAM_1_SIZE ((unsigned long)(0x40000000 - DRAM_RSV_SIZE)) + #endif +#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1 +#define CONFIG_SYS_SDRAM_SIZE PHYS_SDRAM_1_SIZE #else #define CONFIG_NR_DRAM_BANKS 1 #define CONFIG_SYS_SDRAM_BASE 0x40000000 -- 1.9.1