// SPDX-License-Identifier: GPL-2.0
/*
 * Pin Function Controller Support
 *
 * Copyright (C) 2015 Niklas Söderlund
 */
#include <linux/init.h>
#include <linux/kernel.h>

#include "sh_pfc.h"

#define CPU_ALL_PORT(fn, pfx, sfx)					\
	PORT_10(0,  fn, pfx, sfx),	PORT_90(0,  fn, pfx, sfx),	\
	PORT_10(100, fn, pfx##10, sfx),	PORT_10(110, fn, pfx##11, sfx),	\
	PORT_10(120, fn, pfx##12, sfx),	PORT_10(130, fn, pfx##13, sfx),	\
	PORT_10(140, fn, pfx##14, sfx), PORT_1(150, fn, pfx##150, sfx), \
	PORT_1(151, fn, pfx##151, sfx), PORT_1(152, fn, pfx##152, sfx), \
	PORT_1(153, fn, pfx##153, sfx), PORT_1(154, fn, pfx##154, sfx), \
	PORT_1(155, fn, pfx##155, sfx), PORT_1(156, fn, pfx##156, sfx), \
	PORT_1(157, fn, pfx##157, sfx), PORT_1(158, fn, pfx##158, sfx)

enum {
	PINMUX_RESERVED = 0,

	PINMUX_DATA_BEGIN,
	PORT_ALL(DATA),
	PINMUX_DATA_END,

	PINMUX_FUNCTION_BEGIN,
	PORT_ALL(FN),

	/* GPSR0 */
	FN_LCD3_1_0_PORT18, FN_LCD3_1_0_PORT20, FN_LCD3_1_0_PORT21,
	FN_LCD3_1_0_PORT22, FN_LCD3_1_0_PORT23,
	FN_JT_SEL, FN_ERR_RST_REQB, FN_REF_CLKO, FN_EXT_CLKI, FN_LCD3_PXCLKB,

	/* GPSR1 */
	FN_LCD3_9_8_PORT38, FN_LCD3_9_8_PORT39, FN_LCD3_11_10_PORT40,
	FN_LCD3_11_10_PORT41, FN_LCD3_11_10_PORT42, FN_LCD3_11_10_PORT43,
	FN_IIC_1_0_PORT46, FN_IIC_1_0_PORT47,
	FN_LCD3_R0, FN_LCD3_R1, FN_LCD3_R2, FN_LCD3_R3, FN_LCD3_R4, FN_LCD3_R5,
	FN_IIC0_SCL, FN_IIC0_SDA, FN_SD_CKI, FN_SDI0_CKO, FN_SDI0_CKI,
	FN_SDI0_CMD, FN_SDI0_DATA0, FN_SDI0_DATA1, FN_SDI0_DATA2,
	FN_SDI0_DATA3, FN_SDI0_DATA4, FN_SDI0_DATA5, FN_SDI0_DATA6,
	FN_SDI0_DATA7, FN_SDI1_CKO, FN_SDI1_CKI, FN_SDI1_CMD,

	/* GPSR2 */
	FN_AB_1_0_PORT71, FN_AB_1_0_PORT72, FN_AB_1_0_PORT73,
	FN_AB_1_0_PORT74, FN_AB_1_0_PORT75, FN_AB_1_0_PORT76,
	FN_AB_1_0_PORT77, FN_AB_1_0_PORT78, FN_AB_1_0_PORT79,
	FN_AB_1_0_PORT80, FN_AB_1_0_PORT81, FN_AB_1_0_PORT82,
	FN_AB_1_0_PORT83, FN_AB_1_0_PORT84, FN_AB_3_2_PORT85,
	FN_AB_3_2_PORT86, FN_AB_3_2_PORT87, FN_AB_3_2_PORT88,
	FN_AB_5_4_PORT89, FN_AB_5_4_PORT90, FN_AB_7_6_PORT91,
	FN_AB_7_6_PORT92, FN_AB_1_0_PORT93, FN_AB_1_0_PORT94,
	FN_AB_1_0_PORT95,
	FN_SDI1_DATA0, FN_SDI1_DATA1, FN_SDI1_DATA2, FN_SDI1_DATA3,
	FN_AB_CLK, FN_AB_CSB0, FN_AB_CSB1,

	/* GPSR3 */
	FN_AB_13_12_PORT104, FN_AB_13_12_PORT103, FN_AB_11_10_PORT102,
	FN_AB_11_10_PORT101, FN_AB_11_10_PORT100, FN_AB_9_8_PORT99,
	FN_AB_9_8_PORT98, FN_AB_9_8_PORT97,
	FN_USI_1_0_PORT109, FN_USI_1_0_PORT110, FN_USI_1_0_PORT111,
	FN_USI_1_0_PORT112, FN_USI_3_2_PORT113, FN_USI_3_2_PORT114,
	FN_USI_5_4_PORT115, FN_USI_5_4_PORT116, FN_USI_5_4_PORT117,
	FN_USI_5_4_PORT118, FN_USI_7_6_PORT119, FN_USI_9_8_PORT120,
	FN_USI_9_8_PORT121,
	FN_AB_A20, FN_USI0_CS1, FN_USI0_CS2, FN_USI1_DI,
	FN_USI1_DO,
	FN_NTSC_CLK, FN_NTSC_DATA0, FN_NTSC_DATA1, FN_NTSC_DATA2,
	FN_NTSC_DATA3, FN_NTSC_DATA4,

	/* GPRS4 */
	FN_HSI_1_0_PORT143, FN_HSI_1_0_PORT144, FN_HSI_1_0_PORT145,
	FN_HSI_1_0_PORT146, FN_HSI_1_0_PORT147, FN_HSI_1_0_PORT148,
	FN_HSI_1_0_PORT149, FN_HSI_1_0_PORT150,
	FN_UART_1_0_PORT157, FN_UART_1_0_PORT158,
	FN_NTSC_DATA5, FN_NTSC_DATA6, FN_NTSC_DATA7, FN_CAM_CLKO,
	FN_CAM_CLKI, FN_CAM_VS, FN_CAM_HS, FN_CAM_YUV0,
	FN_CAM_YUV1, FN_CAM_YUV2, FN_CAM_YUV3, FN_CAM_YUV4,
	FN_CAM_YUV5, FN_CAM_YUV6, FN_CAM_YUV7,
	FN_JT_TDO, FN_JT_TDOEN, FN_LOWPWR, FN_USB_VBUS, FN_UART1_RX,
	FN_UART1_TX,

	/* CHG_PINSEL_LCD3 */
	FN_SEL_LCD3_1_0_00, FN_SEL_LCD3_1_0_01,
	FN_SEL_LCD3_9_8_00, FN_SEL_LCD3_9_8_10,
	FN_SEL_LCD3_11_10_00, FN_SEL_LCD3_11_10_01, FN_SEL_LCD3_11_10_10,

	/* CHG_PINSEL_IIC */
	FN_SEL_IIC_1_0_00, FN_SEL_IIC_1_0_01,

	/* CHG_PINSEL_AB */
	FN_SEL_AB_1_0_00, FN_SEL_AB_1_0_10, FN_SEL_AB_3_2_00,
	FN_SEL_AB_3_2_01, FN_SEL_AB_3_2_10, FN_SEL_AB_3_2_11,
	FN_SEL_AB_5_4_00, FN_SEL_AB_5_4_01, FN_SEL_AB_5_4_10,
	FN_SEL_AB_5_4_11, FN_SEL_AB_7_6_00, FN_SEL_AB_7_6_01,
	FN_SEL_AB_7_6_10,
	FN_SEL_AB_9_8_00, FN_SEL_AB_9_8_01, FN_SEL_AB_9_8_10,
	FN_SEL_AB_11_10_00, FN_SEL_AB_11_10_10,
	FN_SEL_AB_13_12_00, FN_SEL_AB_13_12_10,

	/* CHG_PINSEL_USI */
	FN_SEL_USI_1_0_00, FN_SEL_USI_1_0_01,
	FN_SEL_USI_3_2_00, FN_SEL_USI_3_2_01,
	FN_SEL_USI_5_4_00, FN_SEL_USI_5_4_01,
	FN_SEL_USI_7_6_00, FN_SEL_USI_7_6_01,
	FN_SEL_USI_9_8_00, FN_SEL_USI_9_8_01,

	/* CHG_PINSEL_HSI */
	FN_SEL_HSI_1_0_00, FN_SEL_HSI_1_0_01,

	/* CHG_PINSEL_UART */
	FN_SEL_UART_1_0_00, FN_SEL_UART_1_0_01,

	PINMUX_FUNCTION_END,

	PINMUX_MARK_BEGIN,

	/* GPSR0 */
	JT_SEL_MARK, ERR_RST_REQB_MARK, REF_CLKO_MARK, EXT_CLKI_MARK,
	LCD3_PXCLKB_MARK, SD_CKI_MARK,

	/* GPSR1 */
	LCD3_R0_MARK, LCD3_R1_MARK, LCD3_R2_MARK, LCD3_R3_MARK, LCD3_R4_MARK,
	LCD3_R5_MARK, IIC0_SCL_MARK, IIC0_SDA_MARK, SDI0_CKO_MARK,
	SDI0_CKI_MARK, SDI0_CMD_MARK, SDI0_DATA0_MARK, SDI0_DATA1_MARK,
	SDI0_DATA2_MARK, SDI0_DATA3_MARK, SDI0_DATA4_MARK, SDI0_DATA5_MARK,
	SDI0_DATA6_MARK, SDI0_DATA7_MARK, SDI1_CKO_MARK, SDI1_CKI_MARK,
	SDI1_CMD_MARK,

	/* GPSR2 */
	SDI1_DATA0_MARK, SDI1_DATA1_MARK, SDI1_DATA2_MARK, SDI1_DATA3_MARK,
	AB_CLK_MARK, AB_CSB0_MARK, AB_CSB1_MARK,

	/* GPSR3 */
	AB_A20_MARK, USI0_CS1_MARK, USI0_CS2_MARK, USI1_DI_MARK,
	USI1_DO_MARK,
	NTSC_CLK_MARK, NTSC_DATA0_MARK, NTSC_DATA1_MARK, NTSC_DATA2_MARK,
	NTSC_DATA3_MARK, NTSC_DATA4_MARK,

	/* GPSR3 */
	NTSC_DATA5_MARK, NTSC_DATA6_MARK, NTSC_DATA7_MARK, CAM_CLKO_MARK,
	CAM_CLKI_MARK, CAM_VS_MARK, CAM_HS_MARK, CAM_YUV0_MARK,
	CAM_YUV1_MARK, CAM_YUV2_MARK, CAM_YUV3_MARK, CAM_YUV4_MARK,
	CAM_YUV5_MARK, CAM_YUV6_MARK, CAM_YUV7_MARK,
	JT_TDO_MARK, JT_TDOEN_MARK, USB_VBUS_MARK, LOWPWR_MARK,
	UART1_RX_MARK, UART1_TX_MARK,

	/* CHG_PINSEL_LCD3 */
	LCD3_PXCLK_MARK, LCD3_CLK_I_MARK, LCD3_HS_MARK, LCD3_VS_MARK,
	LCD3_DE_MARK, LCD3_R6_MARK, LCD3_R7_MARK, LCD3_G0_MARK, LCD3_G1_MARK,
	LCD3_G2_MARK, LCD3_G3_MARK, LCD3_G4_MARK, LCD3_G5_MARK, LCD3_G6_MARK,
	LCD3_G7_MARK, LCD3_B0_MARK, LCD3_B1_MARK, LCD3_B2_MARK, LCD3_B3_MARK,
	LCD3_B4_MARK, LCD3_B5_MARK, LCD3_B6_MARK, LCD3_B7_MARK,
	YUV3_CLK_O_MARK, YUV3_CLK_I_MARK, YUV3_HS_MARK, YUV3_VS_MARK,
	YUV3_DE_MARK, YUV3_D0_MARK, YUV3_D1_MARK, YUV3_D2_MARK, YUV3_D3_MARK,
	YUV3_D4_MARK, YUV3_D5_MARK, YUV3_D6_MARK, YUV3_D7_MARK, YUV3_D8_MARK,
	YUV3_D9_MARK, YUV3_D10_MARK, YUV3_D11_MARK, YUV3_D12_MARK,
	YUV3_D13_MARK, YUV3_D14_MARK, YUV3_D15_MARK,
	TP33_CLK_MARK, TP33_CTRL_MARK, TP33_DATA0_MARK, TP33_DATA1_MARK,
	TP33_DATA2_MARK, TP33_DATA3_MARK, TP33_DATA4_MARK, TP33_DATA5_MARK,
	TP33_DATA6_MARK, TP33_DATA7_MARK, TP33_DATA8_MARK, TP33_DATA9_MARK,
	TP33_DATA10_MARK, TP33_DATA11_MARK, TP33_DATA12_MARK, TP33_DATA13_MARK,
	TP33_DATA14_MARK, TP33_DATA15_MARK,

	/* CHG_PINSEL_IIC */
	IIC1_SCL_MARK, IIC1_SDA_MARK, UART3_RX_MARK, UART3_TX_MARK,

	/* CHG_PINSEL_AB */
	AB_CSB2_MARK, AB_CSB3_MARK, AB_RDB_MARK, AB_WRB_MARK,
	AB_WAIT_MARK, AB_ADV_MARK, AB_AD0_MARK, AB_AD1_MARK,
	AB_AD2_MARK, AB_AD3_MARK, AB_AD4_MARK, AB_AD5_MARK,
	AB_AD6_MARK, AB_AD7_MARK, AB_AD8_MARK, AB_AD9_MARK,
	AB_AD10_MARK, AB_AD11_MARK, AB_AD12_MARK, AB_AD13_MARK,
	AB_AD14_MARK, AB_AD15_MARK, AB_A17_MARK, AB_A18_MARK,
	AB_A19_MARK, AB_A21_MARK, AB_A22_MARK, AB_A23_MARK,
	AB_A24_MARK, AB_A25_MARK, AB_A26_MARK, AB_A27_MARK,
	AB_A28_MARK, AB_BEN0_MARK, AB_BEN1_MARK,
	DTV_BCLK_A_MARK, DTV_PSYNC_A_MARK, DTV_VALID_A_MARK,
	DTV_DATA_A_MARK,
	SDI2_CKO_MARK, SDI2_CKI_MARK, SDI2_CMD_MARK,
	SDI2_DATA0_MARK, SDI2_DATA1_MARK, SDI2_DATA2_MARK,
	SDI2_DATA3_MARK,
	CF_CSB0_MARK, CF_CSB1_MARK, CF_IORDB_MARK,
	CF_IOWRB_MARK, CF_IORDY_MARK, CF_RESET_MARK,
	CF_D00_MARK, CF_D01_MARK, CF_D02_MARK, CF_D03_MARK,
	CF_D04_MARK, CF_D05_MARK, CF_D06_MARK, CF_D07_MARK,
	CF_D08_MARK, CF_D09_MARK, CF_D10_MARK, CF_D11_MARK,
	CF_D12_MARK, CF_D13_MARK, CF_D14_MARK, CF_D15_MARK,
	CF_A00_MARK, CF_A01_MARK, CF_A02_MARK,
	CF_INTRQ_MARK, CF_INPACKB_MARK, CF_CDB1_MARK, CF_CDB2_MARK,
	USI5_CLK_A_MARK, USI5_DI_A_MARK, USI5_DO_A_MARK,
	USI5_CS0_A_MARK, USI5_CS1_A_MARK, USI5_CS2_A_MARK,

	/* CHG_PINSEL_USI */
	USI0_CS3_MARK, USI0_CS4_MARK, USI0_CS5_MARK,
	USI0_CS6_MARK,
	USI2_CLK_MARK, USI2_DI_MARK, USI2_DO_MARK,
	USI2_CS0_MARK, USI2_CS1_MARK, USI2_CS2_MARK,
	USI3_CLK_MARK, USI3_DI_MARK, USI3_DO_MARK,
	USI3_CS0_MARK,
	USI4_CLK_MARK, USI4_DI_MARK, USI4_DO_MARK,
	USI4_CS0_MARK, USI4_CS1_MARK,
	PWM0_MARK, PWM1_MARK,
	DTV_BCLK_B_MARK, DTV_PSYNC_B_MARK, DTV_VALID_B_MARK,
	DTV_DATA_B_MARK,

	/* CHG_PINSEL_HSI */
	USI5_CLK_B_MARK, USI5_DO_B_MARK, USI5_CS0_B_MARK, USI5_CS1_B_MARK,
	USI5_CS2_B_MARK, USI5_CS3_B_MARK, USI5_CS4_B_MARK, USI5_DI_B_MARK,

	/* CHG_PINSEL_UART */
	UART1_CTSB_MARK, UART1_RTSB_MARK,
	UART2_RX_MARK, UART2_TX_MARK,

	PINMUX_MARK_END,
};

/* Pin numbers for pins without a corresponding GPIO port number are computed
 * from the row and column numbers with a 1000 offset to avoid collisions with
 * GPIO port numbers. */
#define PIN_NUMBER(row, col)            (1000+((row)-1)*23+(col)-1)

/* Expand to a list of sh_pfc_pin entries (named PORT#).
 * NOTE: No config are recorded since the driver do not handle pinconf. */
#define __PIN_CFG(pn, pfx, sfx)  SH_PFC_PIN_CFG(pfx, 0)
#define PINMUX_EMEV_GPIO_ALL()	  CPU_ALL_PORT(__PIN_CFG, , unused)

static const struct sh_pfc_pin pinmux_pins[] = {
	PINMUX_EMEV_GPIO_ALL(),

	/* Pins not associated with a GPIO port */
	SH_PFC_PIN_NAMED(2, 14, B14),
	SH_PFC_PIN_NAMED(2, 15, B15),
	SH_PFC_PIN_NAMED(2, 16, B16),
	SH_PFC_PIN_NAMED(2, 17, B17),
	SH_PFC_PIN_NAMED(3, 14, C14),
	SH_PFC_PIN_NAMED(3, 15, C15),
	SH_PFC_PIN_NAMED(3, 16, C16),
	SH_PFC_PIN_NAMED(3, 17, C17),
	SH_PFC_PIN_NAMED(4, 14, D14),
	SH_PFC_PIN_NAMED(4, 15, D15),
	SH_PFC_PIN_NAMED(4, 16, D16),
	SH_PFC_PIN_NAMED(4, 17, D17),
};

/* Expand to a list of name_DATA, name_FN marks */
#define __PORT_DATA(pn, pfx, sfx)  PINMUX_DATA(PORT##pfx##_DATA, PORT##pfx##_FN)
#define PINMUX_EMEV_DATA_ALL()	  CPU_ALL_PORT(__PORT_DATA, , unused)

static const u16 pinmux_data[] = {
	PINMUX_EMEV_DATA_ALL(), /* PINMUX_DATA(PORTN_DATA, PORTN_FN), */

	/* GPSR0 */
	/* V9 */
	PINMUX_SINGLE(JT_SEL),
	/* U9 */
	PINMUX_SINGLE(ERR_RST_REQB),
	/* V8 */
	PINMUX_SINGLE(REF_CLKO),
	/* U8 */
	PINMUX_SINGLE(EXT_CLKI),
	/* B22*/
	PINMUX_IPSR_NOFN(LCD3_1_0_PORT18, LCD3_PXCLK, SEL_LCD3_1_0_00),
	PINMUX_IPSR_NOFN(LCD3_1_0_PORT18, YUV3_CLK_O, SEL_LCD3_1_0_01),
	/* C21 */
	PINMUX_SINGLE(LCD3_PXCLKB),
	/* A21 */
	PINMUX_IPSR_NOFN(LCD3_1_0_PORT20, LCD3_CLK_I, SEL_LCD3_1_0_00),
	PINMUX_IPSR_NOFN(LCD3_1_0_PORT20, YUV3_CLK_I, SEL_LCD3_1_0_01),
	/* B21 */
	PINMUX_IPSR_NOFN(LCD3_1_0_PORT21, LCD3_HS, SEL_LCD3_1_0_00),
	PINMUX_IPSR_NOFN(LCD3_1_0_PORT21, YUV3_HS, SEL_LCD3_1_0_01),
	/* C20 */
	PINMUX_IPSR_NOFN(LCD3_1_0_PORT22, LCD3_VS, SEL_LCD3_1_0_00),
	PINMUX_IPSR_NOFN(LCD3_1_0_PORT22, YUV3_VS, SEL_LCD3_1_0_01),
	/* D19 */
	PINMUX_IPSR_NOFN(LCD3_1_0_PORT23, LCD3_DE, SEL_LCD3_1_0_00),
	PINMUX_IPSR_NOFN(LCD3_1_0_PORT23, YUV3_DE, SEL_LCD3_1_0_01),

	/* GPSR1 */
	/* A20 */
	PINMUX_SINGLE(LCD3_R0),
	/* B20 */
	PINMUX_SINGLE(LCD3_R1),
	/* A19 */
	PINMUX_SINGLE(LCD3_R2),
	/* B19 */
	PINMUX_SINGLE(LCD3_R3),
	/* C19 */
	PINMUX_SINGLE(LCD3_R4),
	/* B18 */
	PINMUX_SINGLE(LCD3_R5),
	/* C18 */
	PINMUX_IPSR_NOFN(LCD3_9_8_PORT38, LCD3_R6, SEL_LCD3_9_8_00),
	PINMUX_IPSR_NOFN(LCD3_9_8_PORT38, TP33_CLK, SEL_LCD3_9_8_10),
	/* D18 */
	PINMUX_IPSR_NOFN(LCD3_9_8_PORT39, LCD3_R7, SEL_LCD3_9_8_00),
	PINMUX_IPSR_NOFN(LCD3_9_8_PORT39, TP33_CTRL, SEL_LCD3_9_8_10),
	/* A18 */
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT40, LCD3_G0, SEL_LCD3_11_10_00),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT40, YUV3_D0, SEL_LCD3_11_10_01),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT40, TP33_DATA0, SEL_LCD3_11_10_10),
	/* A17 */
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT41, LCD3_G1, SEL_LCD3_11_10_00),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT41, YUV3_D1, SEL_LCD3_11_10_01),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT41, TP33_DATA1, SEL_LCD3_11_10_10),
	/* B17 */
	PINMUX_DATA(LCD3_G2_MARK, FN_SEL_LCD3_11_10_00),
	PINMUX_DATA(YUV3_D2_MARK, FN_SEL_LCD3_11_10_01),
	PINMUX_DATA(TP33_DATA2_MARK, FN_SEL_LCD3_11_10_10),
	/* C17 */
	PINMUX_DATA(LCD3_G3_MARK, FN_SEL_LCD3_11_10_00),
	PINMUX_DATA(YUV3_D3_MARK, FN_SEL_LCD3_11_10_01),
	PINMUX_DATA(TP33_DATA3_MARK, FN_SEL_LCD3_11_10_10),
	/* D17 */
	PINMUX_DATA(LCD3_G4_MARK, FN_SEL_LCD3_11_10_00),
	PINMUX_DATA(YUV3_D4_MARK, FN_SEL_LCD3_11_10_01),
	PINMUX_DATA(TP33_DATA4_MARK, FN_SEL_LCD3_11_10_10),
	/* B16 */
	PINMUX_DATA(LCD3_G5_MARK, FN_SEL_LCD3_11_10_00),
	PINMUX_DATA(YUV3_D5_MARK, FN_SEL_LCD3_11_10_01),
	PINMUX_DATA(TP33_DATA5_MARK, FN_SEL_LCD3_11_10_10),
	/* C16 */
	PINMUX_DATA(LCD3_G6_MARK, FN_SEL_LCD3_11_10_00),
	PINMUX_DATA(YUV3_D6_MARK, FN_SEL_LCD3_11_10_01),
	PINMUX_DATA(TP33_DATA6_MARK, FN_SEL_LCD3_11_10_10),
	/* D16 */
	PINMUX_DATA(LCD3_G7_MARK, FN_SEL_LCD3_11_10_00),
	PINMUX_DATA(YUV3_D7_MARK, FN_SEL_LCD3_11_10_01),
	PINMUX_DATA(TP33_DATA7_MARK, FN_SEL_LCD3_11_10_10),
	/* A16 */
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT42, LCD3_B0, SEL_LCD3_11_10_00),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT42, YUV3_D8, SEL_LCD3_11_10_01),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT42, TP33_DATA8, SEL_LCD3_11_10_10),
	/* A15 */
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, LCD3_B1, SEL_LCD3_11_10_00),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, YUV3_D9, SEL_LCD3_11_10_01),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, TP33_DATA9, SEL_LCD3_11_10_10),
	/* B15 */
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, LCD3_B2, SEL_LCD3_11_10_00),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, YUV3_D10, SEL_LCD3_11_10_01),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, TP33_DATA10, SEL_LCD3_11_10_10),
	/* C15 */
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, LCD3_B3, SEL_LCD3_11_10_00),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, YUV3_D11, SEL_LCD3_11_10_01),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, TP33_DATA11, SEL_LCD3_11_10_10),
	/* D15 */
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, LCD3_B4, SEL_LCD3_11_10_00),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, YUV3_D12, SEL_LCD3_11_10_01),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, TP33_DATA12, SEL_LCD3_11_10_10),
	/* B14 */
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, LCD3_B5, SEL_LCD3_11_10_00),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, YUV3_D13, SEL_LCD3_11_10_01),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, TP33_DATA13, SEL_LCD3_11_10_10),
	/* C14 */
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, LCD3_B6, SEL_LCD3_11_10_00),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, YUV3_D14, SEL_LCD3_11_10_01),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, TP33_DATA14, SEL_LCD3_11_10_10),
	/* D14 */
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, LCD3_B7, SEL_LCD3_11_10_00),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, YUV3_D15, SEL_LCD3_11_10_01),
	PINMUX_IPSR_NOFN(LCD3_11_10_PORT43, TP33_DATA15, SEL_LCD3_11_10_10),
	/* AA9 */
	PINMUX_SINGLE(IIC0_SCL),
	/* AA8 */
	PINMUX_SINGLE(IIC0_SDA),
	/* Y9 */
	PINMUX_IPSR_NOFN(IIC_1_0_PORT46, IIC1_SCL, SEL_IIC_1_0_00),
	PINMUX_IPSR_NOFN(IIC_1_0_PORT46, UART3_RX, SEL_IIC_1_0_01),
	/* Y8 */
	PINMUX_IPSR_NOFN(IIC_1_0_PORT47, IIC1_SDA, SEL_IIC_1_0_00),
	PINMUX_IPSR_NOFN(IIC_1_0_PORT47, UART3_TX, SEL_IIC_1_0_01),
	/* AC19 */
	PINMUX_SINGLE(SD_CKI),
	/* AB18 */
	PINMUX_SINGLE(SDI0_CKO),
	/* AC18 */
	PINMUX_SINGLE(SDI0_CKI),
	/* Y12 */
	PINMUX_SINGLE(SDI0_CMD),
	/* AA13 */
	PINMUX_SINGLE(SDI0_DATA0),
	/* Y13 */
	PINMUX_SINGLE(SDI0_DATA1),
	/* AA14 */
	PINMUX_SINGLE(SDI0_DATA2),
	/* Y14 */
	PINMUX_SINGLE(SDI0_DATA3),
	/* AA15 */
	PINMUX_SINGLE(SDI0_DATA4),
	/* Y15 */
	PINMUX_SINGLE(SDI0_DATA5),
	/* AA16 */
	PINMUX_SINGLE(SDI0_DATA6),
	/* Y16 */
	PINMUX_SINGLE(SDI0_DATA7),
	/* AB22 */
	PINMUX_SINGLE(SDI1_CKO),
	/* AA23 */
	PINMUX_SINGLE(SDI1_CKI),
	/* AC21 */
	PINMUX_SINGLE(SDI1_CMD),

	/* GPSR2 */
	/* AB21 */
	PINMUX_SINGLE(SDI1_DATA0),
	/* AB20 */
	PINMUX_SINGLE(SDI1_DATA1),
	/* AB19 */
	PINMUX_SINGLE(SDI1_DATA2),
	/* AA19 */
	PINMUX_SINGLE(SDI1_DATA3),
	/* J23 */
	PINMUX_SINGLE(AB_CLK),
	/* D21 */
	PINMUX_SINGLE(AB_CSB0),
	/* E21 */
	PINMUX_SINGLE(AB_CSB1),
	/* F20 */
	PINMUX_IPSR_NOFN(AB_1_0_PORT71, AB_CSB2, SEL_AB_1_0_00),
	PINMUX_IPSR_NOFN(AB_1_0_PORT71, CF_CSB0, SEL_AB_1_0_10),
	/* G20 */
	PINMUX_IPSR_NOFN(AB_1_0_PORT72, AB_CSB3, SEL_AB_1_0_00),
	PINMUX_IPSR_NOFN(AB_1_0_PORT72, CF_CSB1, SEL_AB_1_0_10),
	/* J20 */
	PINMUX_IPSR_NOFN(AB_1_0_PORT73, AB_RDB, SEL_AB_1_0_00),
	PINMUX_IPSR_NOFN(AB_1_0_PORT73, CF_IORDB, SEL_AB_1_0_10),
	/* H20 */
	PINMUX_IPSR_NOFN(AB_1_0_PORT74, AB_WRB, SEL_AB_1_0_00),
	PINMUX_IPSR_NOFN(AB_1_0_PORT74, CF_IOWRB, SEL_AB_1_0_10),
	/* L20 */
	PINMUX_IPSR_NOFN(AB_1_0_PORT75, AB_WAIT, SEL_AB_1_0_00),
	PINMUX_IPSR_NOFN(AB_1_0_PORT75, CF_IORDY, SEL_AB_1_0_10),
	/* K20 */
	PINMUX_IPSR_NOFN(AB_1_0_PORT76, AB_ADV, SEL_AB_1_0_00),
	PINMUX_IPSR_NOFN(AB_1_0_PORT76, CF_RESET, SEL_AB_1_0_10),
	/* C23 */
	PINMUX_IPSR_NOFN(AB_1_0_PORT77, AB_AD0, SEL_AB_1_0_00),
	PINMUX_IPSR_NOFN(AB_1_0_PORT77, CF_D00, SEL_AB_1_0_10),
	/* C22 */
	PINMUX_IPSR_NOFN(AB_1_0_PORT78, AB_AD1, SEL_AB_1_0_00),
	PINMUX_IPSR_NOFN(AB_1_0_PORT78, CF_D01, SEL_AB_1_0_10),
	/* D23 */
	PINMUX_IPSR_NOFN(AB_1_0_PORT79, AB_AD2, SEL_AB_1_0_00),
	PINMUX_IPSR_NOFN(AB_1_0_PORT79, CF_D02, SEL_AB_1_0_10),
	/* D22 */
	PINMUX_IPSR_NOFN(AB_1_0_PORT80, AB_AD3, SEL_AB_1_0_00),
	PINMUX_IPSR_NOFN(AB_1_0_PORT80, CF_D03, SEL_AB_1_0_10),
	/* E23 */
	PINMUX_IPSR_NOFN(AB_1_0_PORT81, AB_AD4, SEL_AB_1_0_00),
	PINMUX_IPSR_NOFN(AB_1_0_PORT81, CF_D04, SEL_AB_1_0_10),
	/* E22 */
	PINMUX_IPSR_NOFN(AB_1_0_PORT82, AB_AD5, SEL_AB_1_0_00),
	PINMUX_IPSR_NOFN(AB_1_0_PORT82, CF_D05, SEL_AB_1_0_10),
	/* F23 */
	PINMUX_IPSR_NOFN(AB_1_0_PORT83, AB_AD6, SEL_AB_1_0_00),
	PINMUX_IPSR_NOFN(AB_1_0_PORT83, CF_D06, SEL_AB_1_0_10),
	/* F22 */
	PINMUX_IPSR_NOFN(AB_1_0_PORT84, AB_AD7, SEL_AB_1_0_00),
	PINMUX_IPSR_NOFN(AB_1_0_PORT84, CF_D07, SEL_AB_1_0_10),
	/* F21 */
	PINMUX_IPSR_NOFN(AB_3_2_PORT85, AB_AD8, SEL_AB_3_2_00),
	PINMUX_IPSR_NOFN(AB_3_2_PORT85, DTV_BCLK_A, SEL_AB_3_2_01),
	PINMUX_IPSR_NOFN(AB_3_2_PORT85, CF_D08, SEL_AB_3_2_10),
	PINMUX_IPSR_NOFN(AB_3_2_PORT85, USI5_CLK_A, SEL_AB_3_2_11),
	/* G23 */
	PINMUX_IPSR_NOFN(AB_3_2_PORT86, AB_AD9, SEL_AB_3_2_00),
	PINMUX_IPSR_NOFN(AB_3_2_PORT86, DTV_PSYNC_A, SEL_AB_3_2_01),
	PINMUX_IPSR_NOFN(AB_3_2_PORT86, CF_D09, SEL_AB_3_2_10),
	PINMUX_IPSR_NOFN(AB_3_2_PORT86, USI5_DI_A, SEL_AB_3_2_11),
	/* G22 */
	PINMUX_IPSR_NOFN(AB_3_2_PORT87, AB_AD10, SEL_AB_3_2_00),
	PINMUX_IPSR_NOFN(AB_3_2_PORT87, DTV_VALID_A, SEL_AB_3_2_01),
	PINMUX_IPSR_NOFN(AB_3_2_PORT87, CF_D10, SEL_AB_3_2_10),
	PINMUX_IPSR_NOFN(AB_3_2_PORT87, USI5_DO_A, SEL_AB_3_2_11),
	/* G21 */
	PINMUX_IPSR_NOFN(AB_3_2_PORT88, AB_AD11, SEL_AB_3_2_00),
	PINMUX_IPSR_NOFN(AB_3_2_PORT88, DTV_DATA_A, SEL_AB_3_2_01),
	PINMUX_IPSR_NOFN(AB_3_2_PORT88, CF_D11, SEL_AB_3_2_10),
	PINMUX_IPSR_NOFN(AB_3_2_PORT88, USI5_CS0_A, SEL_AB_3_2_11),
	/* H23 */
	PINMUX_IPSR_NOFN(AB_5_4_PORT89, AB_AD12, SEL_AB_5_4_00),
	PINMUX_IPSR_NOFN(AB_5_4_PORT89, SDI2_DATA0, SEL_AB_5_4_01),
	PINMUX_IPSR_NOFN(AB_5_4_PORT89, CF_D12, SEL_AB_5_4_10),
	PINMUX_IPSR_NOFN(AB_5_4_PORT89, USI5_CS1_A, SEL_AB_5_4_11),
	/* H22 */
	PINMUX_IPSR_NOFN(AB_5_4_PORT90, AB_AD13, SEL_AB_5_4_00),
	PINMUX_IPSR_NOFN(AB_5_4_PORT90, SDI2_DATA1, SEL_AB_5_4_01),
	PINMUX_IPSR_NOFN(AB_5_4_PORT90, CF_D13, SEL_AB_5_4_10),
	PINMUX_IPSR_NOFN(AB_5_4_PORT90, USI5_CS2_A, SEL_AB_5_4_11),
	/* H21 */
	PINMUX_IPSR_NOFN(AB_7_6_PORT91, AB_AD14, SEL_AB_7_6_00),
	PINMUX_IPSR_NOFN(AB_7_6_PORT91, SDI2_DATA2, SEL_AB_7_6_01),
	PINMUX_IPSR_NOFN(AB_7_6_PORT91, CF_D14, SEL_AB_7_6_10),
	/* J22 */
	PINMUX_IPSR_NOFN(AB_7_6_PORT92, AB_AD15, SEL_AB_7_6_00),
	PINMUX_IPSR_NOFN(AB_7_6_PORT92, SDI2_DATA3, SEL_AB_7_6_01),
	PINMUX_IPSR_NOFN(AB_7_6_PORT92, CF_D15, SEL_AB_7_6_10),
	/* J21 */
	PINMUX_IPSR_NOFN(AB_1_0_PORT93, AB_A17, SEL_AB_1_0_00),
	PINMUX_IPSR_NOFN(AB_1_0_PORT93, CF_A00, SEL_AB_1_0_10),
	/* K21 */
	PINMUX_IPSR_NOFN(AB_1_0_PORT94, AB_A18, SEL_AB_1_0_00),
	PINMUX_IPSR_NOFN(AB_1_0_PORT94, CF_A01, SEL_AB_1_0_10),
	/* L21 */
	PINMUX_IPSR_NOFN(AB_1_0_PORT95, AB_A19, SEL_AB_1_0_00),
	PINMUX_IPSR_NOFN(AB_1_0_PORT95, CF_A02, SEL_AB_1_0_10),

	/* GPSR3 */
	/* M21 */
	PINMUX_SINGLE(AB_A20),
	/* N21 */
	PINMUX_IPSR_NOFN(AB_9_8_PORT97, AB_A21, SEL_AB_9_8_00),
	PINMUX_IPSR_NOFN(AB_9_8_PORT97, SDI2_CKO, SEL_AB_9_8_01),
	PINMUX_IPSR_NOFN(AB_9_8_PORT97, CF_INTRQ, SEL_AB_9_8_10),
	/* M20 */
	PINMUX_IPSR_NOFN(AB_9_8_PORT98, AB_A22, SEL_AB_9_8_00),
	PINMUX_IPSR_NOFN(AB_9_8_PORT98, SDI2_CKI, SEL_AB_9_8_01),
	/* N20 */
	PINMUX_IPSR_NOFN(AB_9_8_PORT99, AB_A23, SEL_AB_9_8_00),
	PINMUX_IPSR_NOFN(AB_9_8_PORT99, SDI2_CMD, SEL_AB_9_8_01),
	/* L18 */
	PINMUX_IPSR_NOFN(AB_11_10_PORT100, AB_A24, SEL_AB_11_10_00),
	PINMUX_IPSR_NOFN(AB_11_10_PORT100, CF_INPACKB, SEL_AB_11_10_10),
	/* M18 */
	PINMUX_IPSR_NOFN(AB_11_10_PORT101, AB_A25, SEL_AB_11_10_00),
	PINMUX_IPSR_NOFN(AB_11_10_PORT101, CF_CDB1, SEL_AB_11_10_10),
	/* N18 */
	PINMUX_IPSR_NOFN(AB_11_10_PORT102, AB_A26, SEL_AB_11_10_00),
	PINMUX_IPSR_NOFN(AB_11_10_PORT102, CF_CDB2, SEL_AB_11_10_10),
	/* L17 */
	PINMUX_IPSR_NOFN(AB_13_12_PORT103, AB_A27, SEL_AB_13_12_00),
	PINMUX_IPSR_NOFN(AB_13_12_PORT103, AB_BEN0, SEL_AB_13_12_10),
	/* M17 */
	PINMUX_IPSR_NOFN(AB_13_12_PORT104, AB_A28, SEL_AB_13_12_00),
	PINMUX_IPSR_NOFN(AB_13_12_PORT104, AB_BEN1, SEL_AB_13_12_10),
	/* B8 */
	PINMUX_SINGLE(USI0_CS1),
	/* B9 */
	PINMUX_SINGLE(USI0_CS2),
	/* C10 */
	PINMUX_SINGLE(USI1_DI),
	/* D10 */
	PINMUX_SINGLE(USI1_DO),
	/* AB5 */
	PINMUX_IPSR_NOFN(USI_1_0_PORT109, USI2_CLK, SEL_USI_1_0_00),
	PINMUX_IPSR_NOFN(USI_1_0_PORT109, DTV_BCLK_B, SEL_USI_1_0_01),
	/* AA6 */
	PINMUX_IPSR_NOFN(USI_1_0_PORT110, USI2_DI, SEL_USI_1_0_00),
	PINMUX_IPSR_NOFN(USI_1_0_PORT110, DTV_PSYNC_B, SEL_USI_1_0_01),
	/* AA5 */
	PINMUX_IPSR_NOFN(USI_1_0_PORT111, USI2_DO, SEL_USI_1_0_00),
	PINMUX_IPSR_NOFN(USI_1_0_PORT111, DTV_VALID_B, SEL_USI_1_0_01),
	/* Y7 */
	PINMUX_IPSR_NOFN(USI_1_0_PORT112, USI2_CS0, SEL_USI_1_0_00),
	PINMUX_IPSR_NOFN(USI_1_0_PORT112, DTV_DATA_B, SEL_USI_1_0_01),
	/* AA7 */
	PINMUX_IPSR_NOFN(USI_3_2_PORT113, USI2_CS1, SEL_USI_3_2_00),
	PINMUX_IPSR_NOFN(USI_3_2_PORT113, USI4_CS0, SEL_USI_3_2_01),
	/* Y6 */
	PINMUX_IPSR_NOFN(USI_3_2_PORT114, USI2_CS2, SEL_USI_3_2_00),
	PINMUX_IPSR_NOFN(USI_3_2_PORT114, USI4_CS1, SEL_USI_3_2_01),
	/* AC5 */
	PINMUX_IPSR_NOFN(USI_5_4_PORT115, USI3_CLK, SEL_USI_5_4_00),
	PINMUX_IPSR_NOFN(USI_5_4_PORT115, USI0_CS3, SEL_USI_5_4_01),
	/* AC4 */
	PINMUX_IPSR_NOFN(USI_5_4_PORT116, USI3_DI, SEL_USI_5_4_00),
	PINMUX_IPSR_NOFN(USI_5_4_PORT116, USI0_CS4, SEL_USI_5_4_01),
	/* AC3 */
	PINMUX_IPSR_NOFN(USI_5_4_PORT117, USI3_DO, SEL_USI_5_4_00),
	PINMUX_IPSR_NOFN(USI_5_4_PORT117, USI0_CS5, SEL_USI_5_4_01),
	/* AB4 */
	PINMUX_IPSR_NOFN(USI_5_4_PORT118, USI3_CS0, SEL_USI_5_4_00),
	PINMUX_IPSR_NOFN(USI_5_4_PORT118, USI0_CS6, SEL_USI_5_4_01),
	/* AB3 */
	PINMUX_IPSR_NOFN(USI_7_6_PORT119, USI4_CLK, SEL_USI_7_6_01),
	/* AA4 */
	PINMUX_IPSR_NOFN(USI_9_8_PORT120, PWM0, SEL_USI_9_8_00),
	PINMUX_IPSR_NOFN(USI_9_8_PORT120, USI4_DI, SEL_USI_9_8_01),
	/* Y5 */
	PINMUX_IPSR_NOFN(USI_9_8_PORT121, PWM1, SEL_USI_9_8_00),
	PINMUX_IPSR_NOFN(USI_9_8_PORT121, USI4_DO, SEL_USI_9_8_01),
	/* V20 */
	PINMUX_SINGLE(NTSC_CLK),
	/* P20 */
	PINMUX_SINGLE(NTSC_DATA0),
	/* P18 */
	PINMUX_SINGLE(NTSC_DATA1),
	/* R20 */
	PINMUX_SINGLE(NTSC_DATA2),
	/* R18 */
	PINMUX_SINGLE(NTSC_DATA3),
	/* T20 */
	PINMUX_SINGLE(NTSC_DATA4),

	/* GPRS3 */
	/* T18 */
	PINMUX_SINGLE(NTSC_DATA5),
	/* U20 */
	PINMUX_SINGLE(NTSC_DATA6),
	/* U18 */
	PINMUX_SINGLE(NTSC_DATA7),
	/* W23 */
	PINMUX_SINGLE(CAM_CLKO),
	/* Y23 */
	PINMUX_SINGLE(CAM_CLKI),
	/* W22 */
	PINMUX_SINGLE(CAM_VS),
	/* V21 */
	PINMUX_SINGLE(CAM_HS),
	/* T21 */
	PINMUX_SINGLE(CAM_YUV0),
	/* T22 */
	PINMUX_SINGLE(CAM_YUV1),
	/* T23 */
	PINMUX_SINGLE(CAM_YUV2),
	/* U21 */
	PINMUX_SINGLE(CAM_YUV3),
	/* U22 */
	PINMUX_SINGLE(CAM_YUV4),
	/* U23 */
	PINMUX_SINGLE(CAM_YUV5),
	/* V22 */
	PINMUX_SINGLE(CAM_YUV6),
	/* V23 */
	PINMUX_SINGLE(CAM_YUV7),
	/* K22 */
	PINMUX_IPSR_NOFN(HSI_1_0_PORT143, USI5_CLK_B, SEL_HSI_1_0_01),
	/* K23 */
	PINMUX_IPSR_NOFN(HSI_1_0_PORT144, USI5_DO_B, SEL_HSI_1_0_01),
	/* L23 */
	PINMUX_IPSR_NOFN(HSI_1_0_PORT145, USI5_CS0_B, SEL_HSI_1_0_01),
	/* L22 */
	PINMUX_IPSR_NOFN(HSI_1_0_PORT146, USI5_CS1_B, SEL_HSI_1_0_01),
	/* N22 */
	PINMUX_IPSR_NOFN(HSI_1_0_PORT147, USI5_CS2_B, SEL_HSI_1_0_01),
	/* N23 */
	PINMUX_IPSR_NOFN(HSI_1_0_PORT148, USI5_CS3_B, SEL_HSI_1_0_01),
	/* M23 */
	PINMUX_IPSR_NOFN(HSI_1_0_PORT149, USI5_CS4_B, SEL_HSI_1_0_01),
	/* M22 */
	PINMUX_IPSR_NOFN(HSI_1_0_PORT150, USI5_DI_B, SEL_HSI_1_0_01),
	/* D13 */
	PINMUX_SINGLE(JT_TDO),
	/* F13 */
	PINMUX_SINGLE(JT_TDOEN),
	/* AA12 */
	PINMUX_SINGLE(USB_VBUS),
	/* A12 */
	PINMUX_SINGLE(LOWPWR),
	/* Y11 */
	PINMUX_SINGLE(UART1_RX),
	/* Y10 */
	PINMUX_SINGLE(UART1_TX),
	/* AA10 */
	PINMUX_IPSR_NOFN(UART_1_0_PORT157, UART1_CTSB, SEL_UART_1_0_00),
	PINMUX_IPSR_NOFN(UART_1_0_PORT157, UART2_RX, SEL_UART_1_0_01),
	/* AB10 */
	PINMUX_IPSR_NOFN(UART_1_0_PORT158, UART1_RTSB, SEL_UART_1_0_00),
	PINMUX_IPSR_NOFN(UART_1_0_PORT158, UART2_TX, SEL_UART_1_0_01),
};


#define EMEV_MUX_PIN(name, pin, mark) \
	static const unsigned int name##_pins[] = { pin }; \
	static const unsigned int name##_mux[] = { mark##_MARK }

/* = [ System ] =========== */
EMEV_MUX_PIN(err_rst_reqb, 3, ERR_RST_REQB);
EMEV_MUX_PIN(ref_clko, 4, REF_CLKO);
EMEV_MUX_PIN(ext_clki, 5, EXT_CLKI);
EMEV_MUX_PIN(lowpwr, 154, LOWPWR);

/* = [ External Memory] === */
static const unsigned int ab_main_pins[] = {
	/* AB_RDB, AB_WRB */
	73, 74,
	/* AB_AD[0:15] */
	77, 78, 79, 80,
	81, 82, 83, 84,
	85, 86, 87, 88,
	89, 90, 91, 92,
};
static const unsigned int ab_main_mux[] = {
	AB_RDB_MARK, AB_WRB_MARK,
	AB_AD0_MARK, AB_AD1_MARK, AB_AD2_MARK, AB_AD3_MARK,
	AB_AD4_MARK, AB_AD5_MARK, AB_AD6_MARK, AB_AD7_MARK,
	AB_AD8_MARK, AB_AD9_MARK, AB_AD10_MARK, AB_AD11_MARK,
	AB_AD12_MARK, AB_AD13_MARK, AB_AD14_MARK, AB_AD15_MARK,
};

EMEV_MUX_PIN(ab_clk, 68, AB_CLK);
EMEV_MUX_PIN(ab_csb0, 69, AB_CSB0);
EMEV_MUX_PIN(ab_csb1, 70, AB_CSB1);
EMEV_MUX_PIN(ab_csb2, 71, AB_CSB2);
EMEV_MUX_PIN(ab_csb3, 72, AB_CSB3);
EMEV_MUX_PIN(ab_wait, 75, AB_WAIT);
EMEV_MUX_PIN(ab_adv, 76, AB_ADV);
EMEV_MUX_PIN(ab_a17, 93, AB_A17);
EMEV_MUX_PIN(ab_a18, 94, AB_A18);
EMEV_MUX_PIN(ab_a19, 95, AB_A19);
EMEV_MUX_PIN(ab_a20, 96, AB_A20);
EMEV_MUX_PIN(ab_a21, 97, AB_A21);
EMEV_MUX_PIN(ab_a22, 98, AB_A22);
EMEV_MUX_PIN(ab_a23, 99, AB_A23);
EMEV_MUX_PIN(ab_a24, 100, AB_A24);
EMEV_MUX_PIN(ab_a25, 101, AB_A25);
EMEV_MUX_PIN(ab_a26, 102, AB_A26);
EMEV_MUX_PIN(ab_a27, 103, AB_A27);
EMEV_MUX_PIN(ab_a28, 104, AB_A28);
EMEV_MUX_PIN(ab_ben0, 103, AB_BEN0);
EMEV_MUX_PIN(ab_ben1, 104, AB_BEN1);

/* = [ CAM ] ============== */
EMEV_MUX_PIN(cam_clko, 131, CAM_CLKO);
static const unsigned int cam_pins[] = {
	/* CLKI, VS, HS */
	132, 133, 134,
	/* CAM_YUV[0:7] */
	135, 136, 137, 138,
	139, 140, 141, 142,
};
static const unsigned int cam_mux[] = {
	CAM_CLKI_MARK, CAM_VS_MARK, CAM_HS_MARK,
	CAM_YUV0_MARK, CAM_YUV1_MARK, CAM_YUV2_MARK, CAM_YUV3_MARK,
	CAM_YUV4_MARK, CAM_YUV5_MARK, CAM_YUV6_MARK, CAM_YUV7_MARK,
};

/* = [ CF ] -============== */
static const unsigned int cf_ctrl_pins[] = {
	/* CSB0, CSB1, IORDB, IOWRB, IORDY, RESET,
	 * A00, A01, A02, INTRQ, INPACKB, CDB1, CDB2 */
	71, 72, 73, 74,
	75, 76, 93, 94,
	95, 97, 100, 101,
	102,
};
static const unsigned int cf_ctrl_mux[] = {
	CF_CSB0_MARK, CF_CSB1_MARK, CF_IORDB_MARK, CF_IOWRB_MARK,
	CF_IORDY_MARK, CF_RESET_MARK, CF_A00_MARK, CF_A01_MARK,
	CF_A02_MARK, CF_INTRQ_MARK, CF_INPACKB_MARK, CF_CDB1_MARK,
	CF_CDB2_MARK,
};

static const unsigned int cf_data8_pins[] = {
	/* CF_D[0:7] */
	77, 78, 79, 80,
	81, 82, 83, 84,
};
static const unsigned int cf_data8_mux[] = {
	CF_D00_MARK, CF_D01_MARK, CF_D02_MARK, CF_D03_MARK,
	CF_D04_MARK, CF_D05_MARK, CF_D06_MARK, CF_D07_MARK,
};
static const unsigned int cf_data16_pins[] = {
	/* CF_D[0:15] */
	77, 78, 79, 80,
	81, 82, 83, 84,
	85, 86, 87, 88,
	89, 90, 91, 92,
};
static const unsigned int cf_data16_mux[] = {
	CF_D00_MARK, CF_D01_MARK, CF_D02_MARK, CF_D03_MARK,
	CF_D04_MARK, CF_D05_MARK, CF_D06_MARK, CF_D07_MARK,
	CF_D08_MARK, CF_D09_MARK, CF_D10_MARK, CF_D11_MARK,
	CF_D12_MARK, CF_D13_MARK, CF_D14_MARK, CF_D15_MARK,
};

/* = [ DTV ] ============== */
static const unsigned int dtv_a_pins[] = {
	/* BCLK, PSYNC, VALID, DATA */
	85, 86, 87, 88,
};
static const unsigned int dtv_a_mux[] = {
	DTV_BCLK_A_MARK, DTV_PSYNC_A_MARK, DTV_VALID_A_MARK, DTV_DATA_A_MARK,
};

static const unsigned int dtv_b_pins[] = {
	/* BCLK, PSYNC, VALID, DATA */
	109, 110, 111, 112,
};
static const unsigned int dtv_b_mux[] = {
	DTV_BCLK_B_MARK, DTV_PSYNC_B_MARK, DTV_VALID_B_MARK, DTV_DATA_B_MARK,
};

/* = [ IIC0 ] ============= */
static const unsigned int iic0_pins[] = {
	/* SCL, SDA */
	44, 45,
};
static const unsigned int iic0_mux[] = {
	IIC0_SCL_MARK, IIC0_SDA_MARK,
};

/* = [ IIC1 ] ============= */
static const unsigned int iic1_pins[] = {
	/* SCL, SDA */
	46, 47,
};
static const unsigned int iic1_mux[] = {
	IIC1_SCL_MARK, IIC1_SDA_MARK,
};

/* = [ JTAG ] ============= */
static const unsigned int jtag_pins[] = {
	/* SEL, TDO, TDOEN */
	2, 151, 152,
};
static const unsigned int jtag_mux[] = {
	JT_SEL_MARK, JT_TDO_MARK, JT_TDOEN_MARK,
};

/* = [ LCD/YUV ] ========== */
EMEV_MUX_PIN(lcd3_pxclk, 18, LCD3_PXCLK);
EMEV_MUX_PIN(lcd3_pxclkb, 19, LCD3_PXCLKB);
EMEV_MUX_PIN(lcd3_clk_i, 20, LCD3_CLK_I);

static const unsigned int lcd3_sync_pins[] = {
	/* HS, VS, DE */
	21, 22, 23,
};
static const unsigned int lcd3_sync_mux[] = {
	LCD3_HS_MARK, LCD3_VS_MARK, LCD3_DE_MARK,
};

static const unsigned int lcd3_rgb888_pins[] = {
	/* R[0:7], G[0:7], B[0:7] */
	32, 33, 34, 35,
	36, 37, 38, 39,
	40, 41, PIN_NUMBER(2, 17), PIN_NUMBER(3, 17),
	PIN_NUMBER(4, 17), PIN_NUMBER(2, 16), PIN_NUMBER(3, 16),
	PIN_NUMBER(4, 16),
	42, 43, PIN_NUMBER(2, 15), PIN_NUMBER(3, 15),
	PIN_NUMBER(4, 15), PIN_NUMBER(2, 14), PIN_NUMBER(3, 14),
	PIN_NUMBER(4, 14)
};
static const unsigned int lcd3_rgb888_mux[] = {
	LCD3_R0_MARK, LCD3_R1_MARK, LCD3_R2_MARK, LCD3_R3_MARK,
	LCD3_R4_MARK, LCD3_R5_MARK, LCD3_R6_MARK, LCD3_R7_MARK,
	LCD3_G0_MARK, LCD3_G1_MARK, LCD3_G2_MARK, LCD3_G3_MARK,
	LCD3_G4_MARK, LCD3_G5_MARK, LCD3_G6_MARK, LCD3_G7_MARK,
	LCD3_B0_MARK, LCD3_B1_MARK, LCD3_B2_MARK, LCD3_B3_MARK,
	LCD3_B4_MARK, LCD3_B5_MARK, LCD3_B6_MARK, LCD3_B7_MARK,
};

EMEV_MUX_PIN(yuv3_clk_i, 20, YUV3_CLK_I);
static const unsigned int yuv3_pins[] = {
	/* CLK_O, HS, VS, DE */
	18, 21, 22, 23,
	/* YUV3_D[0:15] */
	40, 41, PIN_NUMBER(2, 17), PIN_NUMBER(3, 17),
	PIN_NUMBER(4, 17), PIN_NUMBER(2, 16), PIN_NUMBER(3, 16),
	PIN_NUMBER(4, 16),
	42, 43, PIN_NUMBER(2, 15), PIN_NUMBER(3, 15),
	PIN_NUMBER(4, 15), PIN_NUMBER(2, 14), PIN_NUMBER(3, 14),
	PIN_NUMBER(4, 14),
};
static const unsigned int yuv3_mux[] = {
	YUV3_CLK_O_MARK, YUV3_HS_MARK, YUV3_VS_MARK, YUV3_DE_MARK,
	YUV3_D0_MARK, YUV3_D1_MARK, YUV3_D2_MARK, YUV3_D3_MARK,
	YUV3_D4_MARK, YUV3_D5_MARK, YUV3_D6_MARK, YUV3_D7_MARK,
	YUV3_D8_MARK, YUV3_D9_MARK, YUV3_D10_MARK, YUV3_D11_MARK,
	YUV3_D12_MARK, YUV3_D13_MARK, YUV3_D14_MARK, YUV3_D15_MARK,
};

/* = [ NTSC ] ============= */
EMEV_MUX_PIN(ntsc_clk, 122, NTSC_CLK);
static const unsigned int ntsc_data_pins[] = {
	/* NTSC_DATA[0:7] */
	123, 124, 125, 126,
	127, 128, 129, 130,
};
static const unsigned int ntsc_data_mux[] = {
	NTSC_DATA0_MARK, NTSC_DATA1_MARK, NTSC_DATA2_MARK, NTSC_DATA3_MARK,
	NTSC_DATA4_MARK, NTSC_DATA5_MARK, NTSC_DATA6_MARK, NTSC_DATA7_MARK,
};

/* = [ PWM0 ] ============= */
EMEV_MUX_PIN(pwm0, 120, PWM0);

/* = [ PWM1 ] ============= */
EMEV_MUX_PIN(pwm1, 121, PWM1);

/* = [ SD ] =============== */
EMEV_MUX_PIN(sd_cki, 48, SD_CKI);

/* = [ SDIO0 ] ============ */
static const unsigned int sdi0_ctrl_pins[] = {
	/* CKO, CKI, CMD */
	50, 51, 52,
};
static const unsigned int sdi0_ctrl_mux[] = {
	SDI0_CKO_MARK, SDI0_CKI_MARK, SDI0_CMD_MARK,
};

static const unsigned int sdi0_data1_pins[] = {
	/* SDI0_DATA[0] */
	53,
};
static const unsigned int sdi0_data1_mux[] = {
	SDI0_DATA0_MARK,
};
static const unsigned int sdi0_data4_pins[] = {
	/* SDI0_DATA[0:3] */
	53, 54, 55, 56,
};
static const unsigned int sdi0_data4_mux[] = {
	SDI0_DATA0_MARK, SDI0_DATA1_MARK, SDI0_DATA2_MARK, SDI0_DATA3_MARK,
};
static const unsigned int sdi0_data8_pins[] = {
	/* SDI0_DATA[0:7] */
	53, 54, 55, 56,
	57, 58, 59, 60
};
static const unsigned int sdi0_data8_mux[] = {
	SDI0_DATA0_MARK, SDI0_DATA1_MARK, SDI0_DATA2_MARK, SDI0_DATA3_MARK,
	SDI0_DATA4_MARK, SDI0_DATA5_MARK, SDI0_DATA6_MARK, SDI0_DATA7_MARK,
};

/* = [ SDIO1 ] ============ */
static const unsigned int sdi1_ctrl_pins[] = {
	/* CKO, CKI, CMD */
	61, 62, 63,
};
static const unsigned int sdi1_ctrl_mux[] = {
	SDI1_CKO_MARK, SDI1_CKI_MARK, SDI1_CMD_MARK,
};

static const unsigned int sdi1_data1_pins[] = {
	/* SDI1_DATA[0] */
	64,
};
static const unsigned int sdi1_data1_mux[] = {
	SDI1_DATA0_MARK,
};
static const unsigned int sdi1_data4_pins[] = {
	/* SDI1_DATA[0:3] */
	64, 65, 66, 67,
};
static const unsigned int sdi1_data4_mux[] = {
	SDI1_DATA0_MARK, SDI1_DATA1_MARK, SDI1_DATA2_MARK, SDI1_DATA3_MARK,
};

/* = [ SDIO2 ] ============ */
static const unsigned int sdi2_ctrl_pins[] = {
	/* CKO, CKI, CMD */
	97, 98, 99,
};
static const unsigned int sdi2_ctrl_mux[] = {
	SDI2_CKO_MARK, SDI2_CKI_MARK, SDI2_CMD_MARK,
};

static const unsigned int sdi2_data1_pins[] = {
	/* SDI2_DATA[0] */
	89,
};
static const unsigned int sdi2_data1_mux[] = {
	SDI2_DATA0_MARK,
};
static const unsigned int sdi2_data4_pins[] = {
	/* SDI2_DATA[0:3] */
	89, 90, 91, 92,
};
static const unsigned int sdi2_data4_mux[] = {
	SDI2_DATA0_MARK, SDI2_DATA1_MARK, SDI2_DATA2_MARK, SDI2_DATA3_MARK,
};

/* = [ TP33 ] ============= */
static const unsigned int tp33_pins[] = {
	/* CLK, CTRL */
	38, 39,
	/* TP33_DATA[0:15] */
	40, 41, PIN_NUMBER(2, 17), PIN_NUMBER(3, 17),
	PIN_NUMBER(4, 17), PIN_NUMBER(2, 16), PIN_NUMBER(3, 16),
	PIN_NUMBER(4, 16),
	42, 43, PIN_NUMBER(2, 15), PIN_NUMBER(3, 15),
	PIN_NUMBER(4, 15), PIN_NUMBER(2, 14), PIN_NUMBER(3, 14),
	PIN_NUMBER(4, 14),
};
static const unsigned int tp33_mux[] = {
	TP33_CLK_MARK, TP33_CTRL_MARK,
	TP33_DATA0_MARK, TP33_DATA1_MARK, TP33_DATA2_MARK, TP33_DATA3_MARK,
	TP33_DATA4_MARK, TP33_DATA5_MARK, TP33_DATA6_MARK, TP33_DATA7_MARK,
	TP33_DATA8_MARK, TP33_DATA9_MARK, TP33_DATA10_MARK, TP33_DATA11_MARK,
	TP33_DATA12_MARK, TP33_DATA13_MARK, TP33_DATA14_MARK, TP33_DATA15_MARK,
};

/* = [ UART1 ] ============ */
static const unsigned int uart1_data_pins[] = {
	/* RX, TX */
	155, 156,
};
static const unsigned int uart1_data_mux[] = {
	UART1_RX_MARK, UART1_TX_MARK,
};

static const unsigned int uart1_ctrl_pins[] = {
	/* CTSB, RTSB */
	157, 158,
};
static const unsigned int uart1_ctrl_mux[] = {
	UART1_CTSB_MARK, UART1_RTSB_MARK,
};

/* = [ UART2 ] ============ */
static const unsigned int uart2_data_pins[] = {
	/* RX, TX */
	157, 158,
};
static const unsigned int uart2_data_mux[] = {
	UART2_RX_MARK, UART2_TX_MARK,
};

/* = [ UART3 ] ============ */
static const unsigned int uart3_data_pins[] = {
	/* RX, TX */
	46, 47,
};
static const unsigned int uart3_data_mux[] = {
	UART3_RX_MARK, UART3_TX_MARK,
};

/* = [ USB ] ============== */
EMEV_MUX_PIN(usb_vbus, 153, USB_VBUS);

/* = [ USI0 ] ============== */
EMEV_MUX_PIN(usi0_cs1, 105, USI0_CS1);
EMEV_MUX_PIN(usi0_cs2, 106, USI0_CS2);
EMEV_MUX_PIN(usi0_cs3, 115, USI0_CS3);
EMEV_MUX_PIN(usi0_cs4, 116, USI0_CS4);
EMEV_MUX_PIN(usi0_cs5, 117, USI0_CS5);
EMEV_MUX_PIN(usi0_cs6, 118, USI0_CS6);

/* = [ USI1 ] ============== */
static const unsigned int usi1_pins[] = {
	/* DI, DO*/
	107, 108,
};
static const unsigned int usi1_mux[] = {
	USI1_DI_MARK, USI1_DO_MARK,
};

/* = [ USI2 ] ============== */
static const unsigned int usi2_pins[] = {
	/* CLK, DI, DO*/
	109, 110, 111,
};
static const unsigned int usi2_mux[] = {
	USI2_CLK_MARK, USI2_DI_MARK, USI2_DO_MARK,
};
EMEV_MUX_PIN(usi2_cs0, 112, USI2_CS0);
EMEV_MUX_PIN(usi2_cs1, 113, USI2_CS1);
EMEV_MUX_PIN(usi2_cs2, 114, USI2_CS2);

/* = [ USI3 ] ============== */
static const unsigned int usi3_pins[] = {
	/* CLK, DI, DO*/
	115, 116, 117,
};
static const unsigned int usi3_mux[] = {
	USI3_CLK_MARK, USI3_DI_MARK, USI3_DO_MARK,
};
EMEV_MUX_PIN(usi3_cs0, 118, USI3_CS0);

/* = [ USI4 ] ============== */
static const unsigned int usi4_pins[] = {
	/* CLK, DI, DO*/
	119, 120, 121,
};
static const unsigned int usi4_mux[] = {
	USI4_CLK_MARK, USI4_DI_MARK, USI4_DO_MARK,
};
EMEV_MUX_PIN(usi4_cs0, 113, USI4_CS0);
EMEV_MUX_PIN(usi4_cs1, 114, USI4_CS1);

/* = [ USI5 ] ============== */
static const unsigned int usi5_a_pins[] = {
	/* CLK, DI, DO*/
	85, 86, 87,
};
static const unsigned int usi5_a_mux[] = {
	USI5_CLK_A_MARK, USI5_DI_A_MARK, USI5_DO_A_MARK,
};
EMEV_MUX_PIN(usi5_cs0_a, 88, USI5_CS0_A);
EMEV_MUX_PIN(usi5_cs1_a, 89, USI5_CS1_A);
EMEV_MUX_PIN(usi5_cs2_a, 90, USI5_CS2_A);

static const unsigned int usi5_b_pins[] = {
	/* CLK, DI, DO*/
	143, 144, 150,
};
static const unsigned int usi5_b_mux[] = {
	USI5_CLK_B_MARK, USI5_DI_B_MARK, USI5_DO_B_MARK,
};
EMEV_MUX_PIN(usi5_cs0_b, 145, USI5_CS0_B);
EMEV_MUX_PIN(usi5_cs1_b, 146, USI5_CS1_B);
EMEV_MUX_PIN(usi5_cs2_b, 147, USI5_CS2_B);
EMEV_MUX_PIN(usi5_cs3_b, 148, USI5_CS3_B);
EMEV_MUX_PIN(usi5_cs4_b, 149, USI5_CS4_B);

static const struct sh_pfc_pin_group pinmux_groups[] = {
	SH_PFC_PIN_GROUP(err_rst_reqb),
	SH_PFC_PIN_GROUP(ref_clko),
	SH_PFC_PIN_GROUP(ext_clki),
	SH_PFC_PIN_GROUP(lowpwr),

	SH_PFC_PIN_GROUP(ab_main),
	SH_PFC_PIN_GROUP(ab_clk),
	SH_PFC_PIN_GROUP(ab_csb0),
	SH_PFC_PIN_GROUP(ab_csb1),
	SH_PFC_PIN_GROUP(ab_csb2),
	SH_PFC_PIN_GROUP(ab_csb3),
	SH_PFC_PIN_GROUP(ab_wait),
	SH_PFC_PIN_GROUP(ab_adv),
	SH_PFC_PIN_GROUP(ab_a17),
	SH_PFC_PIN_GROUP(ab_a18),
	SH_PFC_PIN_GROUP(ab_a19),
	SH_PFC_PIN_GROUP(ab_a20),
	SH_PFC_PIN_GROUP(ab_a21),
	SH_PFC_PIN_GROUP(ab_a22),
	SH_PFC_PIN_GROUP(ab_a23),
	SH_PFC_PIN_GROUP(ab_a24),
	SH_PFC_PIN_GROUP(ab_a25),
	SH_PFC_PIN_GROUP(ab_a26),
	SH_PFC_PIN_GROUP(ab_a27),
	SH_PFC_PIN_GROUP(ab_a28),
	SH_PFC_PIN_GROUP(ab_ben0),
	SH_PFC_PIN_GROUP(ab_ben1),

	SH_PFC_PIN_GROUP(cam_clko),
	SH_PFC_PIN_GROUP(cam),

	SH_PFC_PIN_GROUP(cf_ctrl),
	SH_PFC_PIN_GROUP(cf_data8),
	SH_PFC_PIN_GROUP(cf_data16),

	SH_PFC_PIN_GROUP(dtv_a),
	SH_PFC_PIN_GROUP(dtv_b),

	SH_PFC_PIN_GROUP(iic0),

	SH_PFC_PIN_GROUP(iic1),

	SH_PFC_PIN_GROUP(jtag),

	SH_PFC_PIN_GROUP(lcd3_pxclk),
	SH_PFC_PIN_GROUP(lcd3_pxclkb),
	SH_PFC_PIN_GROUP(lcd3_clk_i),
	SH_PFC_PIN_GROUP(lcd3_sync),
	SH_PFC_PIN_GROUP(lcd3_rgb888),
	SH_PFC_PIN_GROUP(yuv3_clk_i),
	SH_PFC_PIN_GROUP(yuv3),

	SH_PFC_PIN_GROUP(ntsc_clk),
	SH_PFC_PIN_GROUP(ntsc_data),

	SH_PFC_PIN_GROUP(pwm0),

	SH_PFC_PIN_GROUP(pwm1),

	SH_PFC_PIN_GROUP(sd_cki),

	SH_PFC_PIN_GROUP(sdi0_ctrl),
	SH_PFC_PIN_GROUP(sdi0_data1),
	SH_PFC_PIN_GROUP(sdi0_data4),
	SH_PFC_PIN_GROUP(sdi0_data8),

	SH_PFC_PIN_GROUP(sdi1_ctrl),
	SH_PFC_PIN_GROUP(sdi1_data1),
	SH_PFC_PIN_GROUP(sdi1_data4),

	SH_PFC_PIN_GROUP(sdi2_ctrl),
	SH_PFC_PIN_GROUP(sdi2_data1),
	SH_PFC_PIN_GROUP(sdi2_data4),

	SH_PFC_PIN_GROUP(tp33),

	SH_PFC_PIN_GROUP(uart1_data),
	SH_PFC_PIN_GROUP(uart1_ctrl),

	SH_PFC_PIN_GROUP(uart2_data),

	SH_PFC_PIN_GROUP(uart3_data),

	SH_PFC_PIN_GROUP(usb_vbus),

	SH_PFC_PIN_GROUP(usi0_cs1),
	SH_PFC_PIN_GROUP(usi0_cs2),
	SH_PFC_PIN_GROUP(usi0_cs3),
	SH_PFC_PIN_GROUP(usi0_cs4),
	SH_PFC_PIN_GROUP(usi0_cs5),
	SH_PFC_PIN_GROUP(usi0_cs6),

	SH_PFC_PIN_GROUP(usi1),

	SH_PFC_PIN_GROUP(usi2),
	SH_PFC_PIN_GROUP(usi2_cs0),
	SH_PFC_PIN_GROUP(usi2_cs1),
	SH_PFC_PIN_GROUP(usi2_cs2),

	SH_PFC_PIN_GROUP(usi3),
	SH_PFC_PIN_GROUP(usi3_cs0),

	SH_PFC_PIN_GROUP(usi4),
	SH_PFC_PIN_GROUP(usi4_cs0),
	SH_PFC_PIN_GROUP(usi4_cs1),

	SH_PFC_PIN_GROUP(usi5_a),
	SH_PFC_PIN_GROUP(usi5_cs0_a),
	SH_PFC_PIN_GROUP(usi5_cs1_a),
	SH_PFC_PIN_GROUP(usi5_cs2_a),
	SH_PFC_PIN_GROUP(usi5_b),
	SH_PFC_PIN_GROUP(usi5_cs0_b),
	SH_PFC_PIN_GROUP(usi5_cs1_b),
	SH_PFC_PIN_GROUP(usi5_cs2_b),
	SH_PFC_PIN_GROUP(usi5_cs3_b),
	SH_PFC_PIN_GROUP(usi5_cs4_b),
};

static const char * const ab_groups[] = {
	"ab_main",
	"ab_clk",
	"ab_csb0",
	"ab_csb1",
	"ab_csb2",
	"ab_csb3",
	"ab_wait",
	"ab_adv",
	"ab_a17",
	"ab_a18",
	"ab_a19",
	"ab_a20",
	"ab_a21",
	"ab_a22",
	"ab_a23",
	"ab_a24",
	"ab_a25",
	"ab_a26",
	"ab_a27",
	"ab_a28",
	"ab_ben0",
	"ab_ben1",
};

static const char * const cam_groups[] = {
	"cam_clko",
	"cam",
};

static const char * const cf_groups[] = {
	"cf_ctrl",
	"cf_data8",
	"cf_data16",
};

static const char * const dtv_groups[] = {
	"dtv_a",
	"dtv_b",
};

static const char * const err_rst_reqb_groups[] = {
	"err_rst_reqb",
};

static const char * const ext_clki_groups[] = {
	"ext_clki",
};

static const char * const iic0_groups[] = {
	"iic0",
};

static const char * const iic1_groups[] = {
	"iic1",
};

static const char * const jtag_groups[] = {
	"jtag",
};

static const char * const lcd_groups[] = {
	"lcd3_pxclk",
	"lcd3_pxclkb",
	"lcd3_clk_i",
	"lcd3_sync",
	"lcd3_rgb888",
	"yuv3_clk_i",
	"yuv3",
};

static const char * const lowpwr_groups[] = {
	"lowpwr",
};

static const char * const ntsc_groups[] = {
	"ntsc_clk",
	"ntsc_data",
};

static const char * const pwm0_groups[] = {
	"pwm0",
};

static const char * const pwm1_groups[] = {
	"pwm1",
};

static const char * const ref_clko_groups[] = {
	"ref_clko",
};

static const char * const sd_groups[] = {
	"sd_cki",
};

static const char * const sdi0_groups[] = {
	"sdi0_ctrl",
	"sdi0_data1",
	"sdi0_data4",
	"sdi0_data8",
};

static const char * const sdi1_groups[] = {
	"sdi1_ctrl",
	"sdi1_data1",
	"sdi1_data4",
};

static const char * const sdi2_groups[] = {
	"sdi2_ctrl",
	"sdi2_data1",
	"sdi2_data4",
};

static const char * const tp33_groups[] = {
	"tp33",
};

static const char * const uart1_groups[] = {
	"uart1_data",
	"uart1_ctrl",
};

static const char * const uart2_groups[] = {
	"uart2_data",
};

static const char * const uart3_groups[] = {
	"uart3_data",
};

static const char * const usb_groups[] = {
	"usb_vbus",
};

static const char * const usi0_groups[] = {
	"usi0_cs1",
	"usi0_cs2",
	"usi0_cs3",
	"usi0_cs4",
	"usi0_cs5",
	"usi0_cs6",
};

static const char * const usi1_groups[] = {
	"usi1",
};

static const char * const usi2_groups[] = {
	"usi2",
	"usi2_cs0",
	"usi2_cs1",
	"usi2_cs2",
};

static const char * const usi3_groups[] = {
	"usi3",
	"usi3_cs0",
};

static const char * const usi4_groups[] = {
	"usi4",
	"usi4_cs0",
	"usi4_cs1",
};

static const char * const usi5_groups[] = {
	"usi5_a",
	"usi5_cs0_a",
	"usi5_cs1_a",
	"usi5_cs2_a",
	"usi5_b",
	"usi5_cs0_b",
	"usi5_cs1_b",
	"usi5_cs2_b",
	"usi5_cs3_b",
	"usi5_cs4_b",
};

static const struct sh_pfc_function pinmux_functions[] = {
	SH_PFC_FUNCTION(ab),
	SH_PFC_FUNCTION(cam),
	SH_PFC_FUNCTION(cf),
	SH_PFC_FUNCTION(dtv),
	SH_PFC_FUNCTION(err_rst_reqb),
	SH_PFC_FUNCTION(ext_clki),
	SH_PFC_FUNCTION(iic0),
	SH_PFC_FUNCTION(iic1),
	SH_PFC_FUNCTION(jtag),
	SH_PFC_FUNCTION(lcd),
	SH_PFC_FUNCTION(lowpwr),
	SH_PFC_FUNCTION(ntsc),
	SH_PFC_FUNCTION(pwm0),
	SH_PFC_FUNCTION(pwm1),
	SH_PFC_FUNCTION(ref_clko),
	SH_PFC_FUNCTION(sd),
	SH_PFC_FUNCTION(sdi0),
	SH_PFC_FUNCTION(sdi1),
	SH_PFC_FUNCTION(sdi2),
	SH_PFC_FUNCTION(tp33),
	SH_PFC_FUNCTION(uart1),
	SH_PFC_FUNCTION(uart2),
	SH_PFC_FUNCTION(uart3),
	SH_PFC_FUNCTION(usb),
	SH_PFC_FUNCTION(usi0),
	SH_PFC_FUNCTION(usi1),
	SH_PFC_FUNCTION(usi2),
	SH_PFC_FUNCTION(usi3),
	SH_PFC_FUNCTION(usi4),
	SH_PFC_FUNCTION(usi5),
};

static const struct pinmux_cfg_reg pinmux_config_regs[] = {
	{ PINMUX_CFG_REG("GPSR0", 0xe0140200, 32, 1, GROUP(
		0, PORT31_FN,				/* PIN: J18  */
		0, PORT30_FN,				/* PIN: H18  */
		0, PORT29_FN,				/* PIN: G18  */
		0, PORT28_FN,				/* PIN: F18  */
		0, PORT27_FN,				/* PIN: F17  */
		0, PORT26_FN,				/* PIN: F16  */
		0, PORT25_FN,				/* PIN: E20  */
		0, PORT24_FN,				/* PIN: D20  */
		FN_LCD3_1_0_PORT23, PORT23_FN,		/* PIN: D19  */
		FN_LCD3_1_0_PORT22, PORT22_FN,		/* PIN: C20  */
		FN_LCD3_1_0_PORT21, PORT21_FN,		/* PIN: B21  */
		FN_LCD3_1_0_PORT20, PORT20_FN,		/* PIN: A21  */
		FN_LCD3_PXCLKB, PORT19_FN,		/* PIN: C21  */
		FN_LCD3_1_0_PORT18, PORT18_FN,		/* PIN: B22  */
		0, PORT17_FN,				/* PIN: W20  */
		0, PORT16_FN,				/* PIN: W21  */
		0, PORT15_FN,				/* PIN: Y19  */
		0, PORT14_FN,				/* PIN: Y20  */
		0, PORT13_FN,				/* PIN: Y21  */
		0, PORT12_FN,				/* PIN: AA20 */
		0, PORT11_FN,				/* PIN: AA21 */
		0, PORT10_FN,				/* PIN: AA22 */
		0, PORT9_FN,				/* PIN: V15  */
		0, PORT8_FN,				/* PIN: V16  */
		0, PORT7_FN,				/* PIN: V17  */
		0, PORT6_FN,				/* PIN: V18  */
		FN_EXT_CLKI, PORT5_FN,			/* PIN: U8   */
		FN_REF_CLKO, PORT4_FN,			/* PIN: V8   */
		FN_ERR_RST_REQB, PORT3_FN,		/* PIN: U9   */
		FN_JT_SEL, PORT2_FN,			/* PIN: V9   */
		0, PORT1_FN,				/* PIN: U10  */
		0, PORT0_FN,				/* PIN: V10  */
		))
	},
	{ PINMUX_CFG_REG("GPSR1", 0xe0140204, 32, 1, GROUP(
		FN_SDI1_CMD, PORT63_FN,			/* PIN: AC21 */
		FN_SDI1_CKI, PORT62_FN,			/* PIN: AA23 */
		FN_SDI1_CKO, PORT61_FN,			/* PIN: AB22 */
		FN_SDI0_DATA7, PORT60_FN,		/* PIN: Y16  */
		FN_SDI0_DATA6, PORT59_FN,		/* PIN: AA16 */
		FN_SDI0_DATA5, PORT58_FN,		/* PIN: Y15  */
		FN_SDI0_DATA4, PORT57_FN,		/* PIN: AA15 */
		FN_SDI0_DATA3, PORT56_FN,		/* PIN: Y14  */
		FN_SDI0_DATA2, PORT55_FN,		/* PIN: AA14 */
		FN_SDI0_DATA1, PORT54_FN,		/* PIN: Y13  */
		FN_SDI0_DATA0, PORT53_FN,		/* PIN: AA13 */
		FN_SDI0_CMD, PORT52_FN,			/* PIN: Y12  */
		FN_SDI0_CKI, PORT51_FN,			/* PIN: AC18 */
		FN_SDI0_CKO, PORT50_FN,			/* PIN: AB18 */
		0, PORT49_FN,				/* PIN: AB16 */
		FN_SD_CKI, PORT48_FN,			/* PIN: AC19 */
		FN_IIC_1_0_PORT47, PORT47_FN,		/* PIN: Y8   */
		FN_IIC_1_0_PORT46, PORT46_FN,		/* PIN: Y9   */
		FN_IIC0_SDA, PORT45_FN,			/* PIN: AA8  */
		FN_IIC0_SCL, PORT44_FN,			/* PIN: AA9  */
		FN_LCD3_11_10_PORT43, PORT43_FN,	/* PIN: A15  */
		FN_LCD3_11_10_PORT42, PORT42_FN,	/* PIN: A16  */
		FN_LCD3_11_10_PORT41, PORT41_FN,	/* PIN: A17  */
		FN_LCD3_11_10_PORT40, PORT40_FN,	/* PIN: A18  */
		FN_LCD3_9_8_PORT39, PORT39_FN,		/* PIN: D18  */
		FN_LCD3_9_8_PORT38, PORT38_FN,		/* PIN: C18  */
		FN_LCD3_R5, PORT37_FN,			/* PIN: B18  */
		FN_LCD3_R4, PORT36_FN,			/* PIN: C19  */
		FN_LCD3_R3, PORT35_FN,			/* PIN: B19  */
		FN_LCD3_R2, PORT34_FN,			/* PIN: A19  */
		FN_LCD3_R1, PORT33_FN,			/* PIN: B20  */
		FN_LCD3_R0, PORT32_FN,			/* PIN: A20  */
		))
	},
	{ PINMUX_CFG_REG("GPSR2", 0xe0140208, 32, 1, GROUP(
		FN_AB_1_0_PORT95, PORT95_FN,		/* PIN: L21  */
		FN_AB_1_0_PORT94, PORT94_FN,		/* PIN: K21  */
		FN_AB_1_0_PORT93, PORT93_FN,		/* PIN: J21  */
		FN_AB_7_6_PORT92, PORT92_FN,		/* PIN: J22  */
		FN_AB_7_6_PORT91, PORT91_FN,		/* PIN: H21  */
		FN_AB_5_4_PORT90, PORT90_FN,		/* PIN: H22  */
		FN_AB_5_4_PORT89, PORT89_FN,		/* PIN: H23  */
		FN_AB_3_2_PORT88, PORT88_FN,		/* PIN: G21  */
		FN_AB_3_2_PORT87, PORT87_FN,		/* PIN: G22  */
		FN_AB_3_2_PORT86, PORT86_FN,		/* PIN: G23  */
		FN_AB_3_2_PORT85, PORT85_FN,		/* PIN: F21  */
		FN_AB_1_0_PORT84, PORT84_FN,		/* PIN: F22  */
		FN_AB_1_0_PORT83, PORT83_FN,		/* PIN: F23  */
		FN_AB_1_0_PORT82, PORT82_FN,		/* PIN: E22  */
		FN_AB_1_0_PORT81, PORT81_FN,		/* PIN: E23  */
		FN_AB_1_0_PORT80, PORT80_FN,		/* PIN: D22  */
		FN_AB_1_0_PORT79, PORT79_FN,		/* PIN: D23  */
		FN_AB_1_0_PORT78, PORT78_FN,		/* PIN: C22  */
		FN_AB_1_0_PORT77, PORT77_FN,		/* PIN: C23  */
		FN_AB_1_0_PORT76, PORT76_FN,		/* PIN: K20  */
		FN_AB_1_0_PORT75, PORT75_FN,		/* PIN: L20  */
		FN_AB_1_0_PORT74, PORT74_FN,		/* PIN: H20  */
		FN_AB_1_0_PORT73, PORT73_FN,		/* PIN: J20  */
		FN_AB_1_0_PORT72, PORT72_FN,		/* PIN: G20  */
		FN_AB_1_0_PORT71, PORT71_FN,		/* PIN: F20  */
		FN_AB_CSB1, PORT70_FN,			/* PIN: E21  */
		FN_AB_CSB0, PORT69_FN,			/* PIN: D21  */
		FN_AB_CLK, PORT68_FN,			/* PIN: J23  */
		FN_SDI1_DATA3, PORT67_FN,		/* PIN: AA19 */
		FN_SDI1_DATA2, PORT66_FN,		/* PIN: AB19 */
		FN_SDI1_DATA1, PORT65_FN,		/* PIN: AB20 */
		FN_SDI1_DATA0, PORT64_FN,		/* PIN: AB21 */
		))
	},
	{ PINMUX_CFG_REG("GPSR3", 0xe014020c, 32, 1, GROUP(
		FN_NTSC_DATA4, PORT127_FN,		/* PIN: T20  */
		FN_NTSC_DATA3, PORT126_FN,		/* PIN: R18  */
		FN_NTSC_DATA2, PORT125_FN,		/* PIN: R20  */
		FN_NTSC_DATA1, PORT124_FN,		/* PIN: P18  */
		FN_NTSC_DATA0, PORT123_FN,		/* PIN: P20  */
		FN_NTSC_CLK, PORT122_FN,		/* PIN: V20  */
		FN_USI_9_8_PORT121, PORT121_FN,		/* PIN: Y5   */
		FN_USI_9_8_PORT120, PORT120_FN,		/* PIN: AA4  */
		FN_USI_7_6_PORT119, PORT119_FN,		/* PIN: AB3  */
		FN_USI_5_4_PORT118, PORT118_FN,		/* PIN: AB4  */
		FN_USI_5_4_PORT117, PORT117_FN,		/* PIN: AC3  */
		FN_USI_5_4_PORT116, PORT116_FN,		/* PIN: AC4  */
		FN_USI_5_4_PORT115, PORT115_FN,		/* PIN: AC5  */
		FN_USI_3_2_PORT114, PORT114_FN,		/* PIN: Y6   */
		FN_USI_3_2_PORT113, PORT113_FN,		/* PIN: AA7  */
		FN_USI_1_0_PORT112, PORT112_FN,		/* PIN: Y7   */
		FN_USI_1_0_PORT111, PORT111_FN,		/* PIN: AA5  */
		FN_USI_1_0_PORT110, PORT110_FN,		/* PIN: AA6  */
		FN_USI_1_0_PORT109, PORT109_FN,		/* PIN: AB5  */
		FN_USI1_DO, PORT108_FN,			/* PIN: D10  */
		FN_USI1_DI, PORT107_FN,			/* PIN: C10  */
		FN_USI0_CS2, PORT106_FN,		/* PIN: B9   */
		FN_USI0_CS1, PORT105_FN,		/* PIN: B8   */
		FN_AB_13_12_PORT104, PORT104_FN,	/* PIN: M17  */
		FN_AB_13_12_PORT103, PORT103_FN,	/* PIN: L17  */
		FN_AB_11_10_PORT102, PORT102_FN,	/* PIN: N18  */
		FN_AB_11_10_PORT101, PORT101_FN,	/* PIN: M18  */
		FN_AB_11_10_PORT100, PORT100_FN,	/* PIN: L18  */
		FN_AB_9_8_PORT99, PORT99_FN,		/* PIN: N20  */
		FN_AB_9_8_PORT98, PORT98_FN,		/* PIN: M20  */
		FN_AB_9_8_PORT97, PORT97_FN,		/* PIN: N21  */
		FN_AB_A20, PORT96_FN,			/* PIN: M21  */
		))
	},
	{ PINMUX_CFG_REG("GPSR4", 0xe0140210, 32, 1, GROUP(
		0, 0,
		FN_UART_1_0_PORT158, PORT158_FN,	/* PIN: AB10 */
		FN_UART_1_0_PORT157, PORT157_FN,	/* PIN: AA10 */
		FN_UART1_TX, PORT156_FN,		/* PIN: Y10  */
		FN_UART1_RX, PORT155_FN,		/* PIN: Y11  */
		FN_LOWPWR, PORT154_FN,			/* PIN: A12  */
		FN_USB_VBUS, PORT153_FN,		/* PIN: AA12 */
		FN_JT_TDOEN, PORT152_FN,		/* PIN: F13  */
		FN_JT_TDO, PORT151_FN,			/* PIN: D13  */
		FN_HSI_1_0_PORT150, PORT150_FN,		/* PIN: M22  */
		FN_HSI_1_0_PORT149, PORT149_FN,		/* PIN: M23  */
		FN_HSI_1_0_PORT148, PORT148_FN,		/* PIN: N23  */
		FN_HSI_1_0_PORT147, PORT147_FN,		/* PIN: N22  */
		FN_HSI_1_0_PORT146, PORT146_FN,		/* PIN: L22  */
		FN_HSI_1_0_PORT145, PORT145_FN,		/* PIN: L23  */
		FN_HSI_1_0_PORT144, PORT144_FN,		/* PIN: K23  */
		FN_HSI_1_0_PORT143, PORT143_FN,		/* PIN: K22  */
		FN_CAM_YUV7, PORT142_FN,		/* PIN: V23  */
		FN_CAM_YUV6, PORT141_FN,		/* PIN: V22  */
		FN_CAM_YUV5, PORT140_FN,		/* PIN: U23  */
		FN_CAM_YUV4, PORT139_FN,		/* PIN: U22  */
		FN_CAM_YUV3, PORT138_FN,		/* PIN: U21  */
		FN_CAM_YUV2, PORT137_FN,		/* PIN: T23  */
		FN_CAM_YUV1, PORT136_FN,		/* PIN: T22  */
		FN_CAM_YUV0, PORT135_FN,		/* PIN: T21  */
		FN_CAM_HS, PORT134_FN,			/* PIN: V21  */
		FN_CAM_VS, PORT133_FN,			/* PIN: W22  */
		FN_CAM_CLKI, PORT132_FN,		/* PIN: Y23  */
		FN_CAM_CLKO, PORT131_FN,		/* PIN: W23  */
		FN_NTSC_DATA7, PORT130_FN,		/* PIN: U18  */
		FN_NTSC_DATA6, PORT129_FN,		/* PIN: U20  */
		FN_NTSC_DATA5, PORT128_FN,		/* PIN: T18  */
		))
	},
	{ PINMUX_CFG_REG_VAR("CHG_PINSEL_LCD3", 0xe0140284, 32,
			     GROUP(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
				   1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
				   2, 2),
			     GROUP(
		/* 31 - 12 */
		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,
		/* 11 - 10 */
		FN_SEL_LCD3_11_10_00, FN_SEL_LCD3_11_10_01,
		FN_SEL_LCD3_11_10_10, 0,
		/* 9 - 8 */
		FN_SEL_LCD3_9_8_00, 0, FN_SEL_LCD3_9_8_10, 0,
		/* 7 - 2 */
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		/* 1 - 0 */
		FN_SEL_LCD3_1_0_00, FN_SEL_LCD3_1_0_01, 0, 0,
		))
	},
	{ PINMUX_CFG_REG_VAR("CHG_PINSEL_UART", 0xe0140288, 32,
			     GROUP(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
				   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
				   1, 1, 1, 1, 1, 1, 2),
			     GROUP(
		/* 31 - 2 */
		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, 0, 0, 0, 0, 0, 0, 0, 0,
		/* 1 - 0 */
		FN_SEL_UART_1_0_00, FN_SEL_UART_1_0_01, 0, 0,
		))
	},
	{ PINMUX_CFG_REG_VAR("CHG_PINSEL_IIC", 0xe014028c, 32,
			     GROUP(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
				   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
				   1, 1, 1, 1, 1, 1, 2),
			     GROUP(
		/* 31 - 2 */
		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, 0, 0, 0, 0, 0, 0, 0, 0,
		/* 1 - 0 */
		FN_SEL_IIC_1_0_00, FN_SEL_IIC_1_0_01, 0, 0,
		))
	},
	{ PINMUX_CFG_REG_VAR("CHG_PINSEL_AB", 0xe0140294, 32,
			     GROUP(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
				   1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2),
			     GROUP(
		/* 31 - 14 */
		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,
		/* 13 - 12 */
		FN_SEL_AB_13_12_00, 0, FN_SEL_AB_13_12_10, 0,
		/* 11 - 10 */
		FN_SEL_AB_11_10_00, 0, FN_SEL_AB_11_10_10, 0,
		/* 9 - 8 */
		FN_SEL_AB_9_8_00, FN_SEL_AB_9_8_01, FN_SEL_AB_9_8_10, 0,
		/* 7 - 6 */
		FN_SEL_AB_7_6_00, FN_SEL_AB_7_6_01, FN_SEL_AB_7_6_10, 0,
		/* 5 - 4 */
		FN_SEL_AB_5_4_00, FN_SEL_AB_5_4_01,
		FN_SEL_AB_5_4_10, FN_SEL_AB_5_4_11,
		/* 3 - 2 */
		FN_SEL_AB_3_2_00, FN_SEL_AB_3_2_01,
		FN_SEL_AB_3_2_10, FN_SEL_AB_3_2_11,
		/* 1 - 0 */
		FN_SEL_AB_1_0_00, 0, FN_SEL_AB_1_0_10, 0,
		))
	},
	{ PINMUX_CFG_REG_VAR("CHG_PINSEL_USI", 0xe0140298, 32,
			     GROUP(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
				   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
				   2, 2, 2),
			     GROUP(
		/* 31 - 10 */
		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,
		/* 9 - 8 */
		FN_SEL_USI_9_8_00, FN_SEL_USI_9_8_01, 0, 0,
		/* 7 - 6 */
		FN_SEL_USI_7_6_00, FN_SEL_USI_7_6_01, 0, 0,
		/* 5 - 4 */
		FN_SEL_USI_5_4_00, FN_SEL_USI_5_4_01, 0, 0,
		/* 3 - 2 */
		FN_SEL_USI_3_2_00, FN_SEL_USI_3_2_01, 0, 0,
		/* 1 - 0 */
		FN_SEL_USI_1_0_00, FN_SEL_USI_1_0_01, 0, 0,
		))
	},
	{ PINMUX_CFG_REG_VAR("CHG_PINSEL_HSI", 0xe01402a8, 32,
			     GROUP(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
				   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
				   1, 1, 1, 1, 1, 1, 2),
			     GROUP(
		/* 31 - 2 */
		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, 0, 0, 0, 0, 0, 0, 0, 0,
		/* 1 - 0 */
		FN_SEL_HSI_1_0_00, FN_SEL_HSI_1_0_01, 0, 0,
		))
	},
	{ },
};

const struct sh_pfc_soc_info emev2_pinmux_info = {
	.name		= "emev2_pfc",

	.function	= { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },

	.pins		= pinmux_pins,
	.nr_pins	= ARRAY_SIZE(pinmux_pins),
	.groups		= pinmux_groups,
	.nr_groups	= ARRAY_SIZE(pinmux_groups),
	.functions	= pinmux_functions,
	.nr_functions	= ARRAY_SIZE(pinmux_functions),

	.cfg_regs	= pinmux_config_regs,

	.pinmux_data	= pinmux_data,
	.pinmux_data_size = ARRAY_SIZE(pinmux_data),
};
