/*
 * Pinctrl Driver for ADI GPIO2 controller
 *
 * Copyright 2007-2013 Analog Devices Inc.
 *
 * Licensed under the GPLv2 or later
 */

#include <asm/portmux.h>
#include "pinctrl-adi2.h"

static const struct pinctrl_pin_desc adi_pads[] = {
	PINCTRL_PIN(0, "PA0"),
	PINCTRL_PIN(1, "PA1"),
	PINCTRL_PIN(2, "PA2"),
	PINCTRL_PIN(3, "PG3"),
	PINCTRL_PIN(4, "PA4"),
	PINCTRL_PIN(5, "PA5"),
	PINCTRL_PIN(6, "PA6"),
	PINCTRL_PIN(7, "PA7"),
	PINCTRL_PIN(8, "PA8"),
	PINCTRL_PIN(9, "PA9"),
	PINCTRL_PIN(10, "PA10"),
	PINCTRL_PIN(11, "PA11"),
	PINCTRL_PIN(12, "PA12"),
	PINCTRL_PIN(13, "PA13"),
	PINCTRL_PIN(14, "PA14"),
	PINCTRL_PIN(15, "PA15"),
	PINCTRL_PIN(16, "PB0"),
	PINCTRL_PIN(17, "PB1"),
	PINCTRL_PIN(18, "PB2"),
	PINCTRL_PIN(19, "PB3"),
	PINCTRL_PIN(20, "PB4"),
	PINCTRL_PIN(21, "PB5"),
	PINCTRL_PIN(22, "PB6"),
	PINCTRL_PIN(23, "PB7"),
	PINCTRL_PIN(24, "PB8"),
	PINCTRL_PIN(25, "PB9"),
	PINCTRL_PIN(26, "PB10"),
	PINCTRL_PIN(27, "PB11"),
	PINCTRL_PIN(28, "PB12"),
	PINCTRL_PIN(29, "PB13"),
	PINCTRL_PIN(30, "PB14"),
	PINCTRL_PIN(32, "PC0"),
	PINCTRL_PIN(33, "PC1"),
	PINCTRL_PIN(34, "PC2"),
	PINCTRL_PIN(35, "PC3"),
	PINCTRL_PIN(36, "PC4"),
	PINCTRL_PIN(37, "PC5"),
	PINCTRL_PIN(38, "PC6"),
	PINCTRL_PIN(39, "PC7"),
	PINCTRL_PIN(40, "PC8"),
	PINCTRL_PIN(41, "PC9"),
	PINCTRL_PIN(42, "PC10"),
	PINCTRL_PIN(43, "PC11"),
	PINCTRL_PIN(44, "PC12"),
	PINCTRL_PIN(45, "PC13"),
	PINCTRL_PIN(48, "PD0"),
	PINCTRL_PIN(49, "PD1"),
	PINCTRL_PIN(50, "PD2"),
	PINCTRL_PIN(51, "PD3"),
	PINCTRL_PIN(52, "PD4"),
	PINCTRL_PIN(53, "PD5"),
	PINCTRL_PIN(54, "PD6"),
	PINCTRL_PIN(55, "PD7"),
	PINCTRL_PIN(56, "PD8"),
	PINCTRL_PIN(57, "PD9"),
	PINCTRL_PIN(58, "PD10"),
	PINCTRL_PIN(59, "PD11"),
	PINCTRL_PIN(60, "PD12"),
	PINCTRL_PIN(61, "PD13"),
	PINCTRL_PIN(62, "PD14"),
	PINCTRL_PIN(63, "PD15"),
	PINCTRL_PIN(64, "PE0"),
	PINCTRL_PIN(65, "PE1"),
	PINCTRL_PIN(66, "PE2"),
	PINCTRL_PIN(67, "PE3"),
	PINCTRL_PIN(68, "PE4"),
	PINCTRL_PIN(69, "PE5"),
	PINCTRL_PIN(70, "PE6"),
	PINCTRL_PIN(71, "PE7"),
	PINCTRL_PIN(72, "PE8"),
	PINCTRL_PIN(73, "PE9"),
	PINCTRL_PIN(74, "PE10"),
	PINCTRL_PIN(75, "PE11"),
	PINCTRL_PIN(76, "PE12"),
	PINCTRL_PIN(77, "PE13"),
	PINCTRL_PIN(78, "PE14"),
	PINCTRL_PIN(79, "PE15"),
	PINCTRL_PIN(80, "PF0"),
	PINCTRL_PIN(81, "PF1"),
	PINCTRL_PIN(82, "PF2"),
	PINCTRL_PIN(83, "PF3"),
	PINCTRL_PIN(84, "PF4"),
	PINCTRL_PIN(85, "PF5"),
	PINCTRL_PIN(86, "PF6"),
	PINCTRL_PIN(87, "PF7"),
	PINCTRL_PIN(88, "PF8"),
	PINCTRL_PIN(89, "PF9"),
	PINCTRL_PIN(90, "PF10"),
	PINCTRL_PIN(91, "PF11"),
	PINCTRL_PIN(92, "PF12"),
	PINCTRL_PIN(93, "PF13"),
	PINCTRL_PIN(94, "PF14"),
	PINCTRL_PIN(95, "PF15"),
	PINCTRL_PIN(96, "PG0"),
	PINCTRL_PIN(97, "PG1"),
	PINCTRL_PIN(98, "PG2"),
	PINCTRL_PIN(99, "PG3"),
	PINCTRL_PIN(100, "PG4"),
	PINCTRL_PIN(101, "PG5"),
	PINCTRL_PIN(102, "PG6"),
	PINCTRL_PIN(103, "PG7"),
	PINCTRL_PIN(104, "PG8"),
	PINCTRL_PIN(105, "PG9"),
	PINCTRL_PIN(106, "PG10"),
	PINCTRL_PIN(107, "PG11"),
	PINCTRL_PIN(108, "PG12"),
	PINCTRL_PIN(109, "PG13"),
	PINCTRL_PIN(110, "PG14"),
	PINCTRL_PIN(111, "PG15"),
	PINCTRL_PIN(112, "PH0"),
	PINCTRL_PIN(113, "PH1"),
	PINCTRL_PIN(114, "PH2"),
	PINCTRL_PIN(115, "PH3"),
	PINCTRL_PIN(116, "PH4"),
	PINCTRL_PIN(117, "PH5"),
	PINCTRL_PIN(118, "PH6"),
	PINCTRL_PIN(119, "PH7"),
	PINCTRL_PIN(120, "PH8"),
	PINCTRL_PIN(121, "PH9"),
	PINCTRL_PIN(122, "PH10"),
	PINCTRL_PIN(123, "PH11"),
	PINCTRL_PIN(124, "PH12"),
	PINCTRL_PIN(125, "PH13"),
	PINCTRL_PIN(128, "PI0"),
	PINCTRL_PIN(129, "PI1"),
	PINCTRL_PIN(130, "PI2"),
	PINCTRL_PIN(131, "PI3"),
	PINCTRL_PIN(132, "PI4"),
	PINCTRL_PIN(133, "PI5"),
	PINCTRL_PIN(134, "PI6"),
	PINCTRL_PIN(135, "PI7"),
	PINCTRL_PIN(136, "PI8"),
	PINCTRL_PIN(137, "PI9"),
	PINCTRL_PIN(138, "PI10"),
	PINCTRL_PIN(139, "PI11"),
	PINCTRL_PIN(140, "PI12"),
	PINCTRL_PIN(141, "PI13"),
	PINCTRL_PIN(142, "PI14"),
	PINCTRL_PIN(143, "PI15"),
	PINCTRL_PIN(144, "PJ0"),
	PINCTRL_PIN(145, "PJ1"),
	PINCTRL_PIN(146, "PJ2"),
	PINCTRL_PIN(147, "PJ3"),
	PINCTRL_PIN(148, "PJ4"),
	PINCTRL_PIN(149, "PJ5"),
	PINCTRL_PIN(150, "PJ6"),
	PINCTRL_PIN(151, "PJ7"),
	PINCTRL_PIN(152, "PJ8"),
	PINCTRL_PIN(153, "PJ9"),
	PINCTRL_PIN(154, "PJ10"),
	PINCTRL_PIN(155, "PJ11"),
	PINCTRL_PIN(156, "PJ12"),
	PINCTRL_PIN(157, "PJ13"),
};

static const unsigned uart0_pins[] = {
	GPIO_PE7, GPIO_PE8,
};

static const unsigned uart1_pins[] = {
	GPIO_PH0, GPIO_PH1,
};

static const unsigned uart1_ctsrts_pins[] = {
	GPIO_PE9, GPIO_PE10,
};

static const unsigned uart2_pins[] = {
	GPIO_PB4, GPIO_PB5,
};

static const unsigned uart3_pins[] = {
	GPIO_PB6, GPIO_PB7,
};

static const unsigned uart3_ctsrts_pins[] = {
	GPIO_PB2, GPIO_PB3,
};

static const unsigned rsi0_pins[] = {
	GPIO_PC8, GPIO_PC9, GPIO_PC10, GPIO_PC11, GPIO_PC12, GPIO_PC13,
};

static const unsigned spi0_pins[] = {
	GPIO_PE0, GPIO_PE1, GPIO_PE2,
};

static const unsigned spi1_pins[] = {
	GPIO_PG8, GPIO_PG9, GPIO_PG10,
};

static const unsigned twi0_pins[] = {
	GPIO_PE14, GPIO_PE15,
};

static const unsigned twi1_pins[] = {
	GPIO_PB0, GPIO_PB1,
};

static const unsigned rotary_pins[] = {
	GPIO_PH4, GPIO_PH3, GPIO_PH5,
};

static const unsigned can0_pins[] = {
	GPIO_PG13, GPIO_PG12,
};

static const unsigned can1_pins[] = {
	GPIO_PG14, GPIO_PG15,
};

static const unsigned smc0_pins[] = {
	GPIO_PH8, GPIO_PH9, GPIO_PH10, GPIO_PH11, GPIO_PH12, GPIO_PH13,
	GPIO_PI0, GPIO_PI1, GPIO_PI2, GPIO_PI3, GPIO_PI4, GPIO_PI5, GPIO_PI6,
	GPIO_PI7, GPIO_PI8, GPIO_PI9, GPIO_PI10, GPIO_PI11,
	GPIO_PI12, GPIO_PI13, GPIO_PI14, GPIO_PI15,
};

static const unsigned sport0_pins[] = {
	GPIO_PC0, GPIO_PC2, GPIO_PC3, GPIO_PC4, GPIO_PC6, GPIO_PC7,
};

static const unsigned sport1_pins[] = {
	GPIO_PD0, GPIO_PD2, GPIO_PD3, GPIO_PD4, GPIO_PD6, GPIO_PD7,
};

static const unsigned sport2_pins[] = {
	GPIO_PA0, GPIO_PA2, GPIO_PA3, GPIO_PA4, GPIO_PA6, GPIO_PA7,
};

static const unsigned sport3_pins[] = {
	GPIO_PA8, GPIO_PA10, GPIO_PA11, GPIO_PA12, GPIO_PA14, GPIO_PA15,
};

static const unsigned ppi0_8b_pins[] = {
	GPIO_PF0, GPIO_PF1, GPIO_PF2, GPIO_PF3, GPIO_PF4, GPIO_PF5, GPIO_PF6,
	GPIO_PF7, GPIO_PF13, GPIO_PG0, GPIO_PG1, GPIO_PG2,
};

static const unsigned ppi0_16b_pins[] = {
	GPIO_PF0, GPIO_PF1, GPIO_PF2, GPIO_PF3, GPIO_PF4, GPIO_PF5, GPIO_PF6,
	GPIO_PF7, GPIO_PF9, GPIO_PF10, GPIO_PF11, GPIO_PF12,
	GPIO_PF13, GPIO_PF14, GPIO_PF15,
	GPIO_PG0, GPIO_PG1, GPIO_PG2,
};

static const unsigned ppi0_24b_pins[] = {
	GPIO_PF0, GPIO_PF1, GPIO_PF2, GPIO_PF3, GPIO_PF4, GPIO_PF5, GPIO_PF6,
	GPIO_PF7, GPIO_PF8, GPIO_PF9, GPIO_PF10, GPIO_PF11, GPIO_PF12,
	GPIO_PF13, GPIO_PF14, GPIO_PF15, GPIO_PD0, GPIO_PD1, GPIO_PD2,
	GPIO_PD3, GPIO_PD4, GPIO_PD5, GPIO_PG3, GPIO_PG4,
	GPIO_PG0, GPIO_PG1, GPIO_PG2,
};

static const unsigned ppi1_8b_pins[] = {
	GPIO_PD0, GPIO_PD1, GPIO_PD2, GPIO_PD3, GPIO_PD4, GPIO_PD5, GPIO_PD6,
	GPIO_PD7, GPIO_PE11, GPIO_PE12, GPIO_PE13,
};

static const unsigned ppi1_16b_pins[] = {
	GPIO_PD0, GPIO_PD1, GPIO_PD2, GPIO_PD3, GPIO_PD4, GPIO_PD5, GPIO_PD6,
	GPIO_PD7, GPIO_PD8, GPIO_PD9, GPIO_PD10, GPIO_PD11, GPIO_PD12,
	GPIO_PD13, GPIO_PD14, GPIO_PD15,
	GPIO_PE11, GPIO_PE12, GPIO_PE13,
};

static const unsigned ppi2_8b_pins[] = {
	GPIO_PD8, GPIO_PD9, GPIO_PD10, GPIO_PD11, GPIO_PD12,
	GPIO_PD13, GPIO_PD14, GPIO_PD15,
	GPIO_PA7, GPIO_PB0, GPIO_PB1, GPIO_PB2, GPIO_PB3,
};

static const unsigned atapi_pins[] = {
	GPIO_PH2, GPIO_PJ3, GPIO_PJ4, GPIO_PJ5, GPIO_PJ6,
	GPIO_PJ7, GPIO_PJ8, GPIO_PJ9, GPIO_PJ10,
};

static const unsigned atapi_alter_pins[] = {
	GPIO_PF0, GPIO_PF1, GPIO_PF2, GPIO_PF3, GPIO_PF4, GPIO_PF5, GPIO_PF6,
	GPIO_PF7, GPIO_PF8, GPIO_PF9, GPIO_PF10, GPIO_PF11, GPIO_PF12,
	GPIO_PF13, GPIO_PF14, GPIO_PF15, GPIO_PG2, GPIO_PG3, GPIO_PG4,
};

static const unsigned nfc0_pins[] = {
	GPIO_PJ1, GPIO_PJ2,
};

static const unsigned keys_4x4_pins[] = {
	GPIO_PD8, GPIO_PD9, GPIO_PD10, GPIO_PD11,
	GPIO_PD12, GPIO_PD13, GPIO_PD14, GPIO_PD15,
};

static const unsigned keys_8x8_pins[] = {
	GPIO_PD8, GPIO_PD9, GPIO_PD10, GPIO_PD11,
	GPIO_PD12, GPIO_PD13, GPIO_PD14, GPIO_PD15,
	GPIO_PE0, GPIO_PE1, GPIO_PE2, GPIO_PE3,
	GPIO_PE4, GPIO_PE5, GPIO_PE6, GPIO_PE7,
};

static const unsigned short uart0_mux[] = {
	P_UART0_TX, P_UART0_RX,
	0
};

static const unsigned short uart1_mux[] = {
	P_UART1_TX, P_UART1_RX,
	0
};

static const unsigned short uart1_ctsrts_mux[] = {
	P_UART1_RTS, P_UART1_CTS,
	0
};

static const unsigned short uart2_mux[] = {
	P_UART2_TX, P_UART2_RX,
	0
};

static const unsigned short uart3_mux[] = {
	P_UART3_TX, P_UART3_RX,
	0
};

static const unsigned short uart3_ctsrts_mux[] = {
	P_UART3_RTS, P_UART3_CTS,
	0
};

static const unsigned short rsi0_mux[] = {
	P_SD_D0, P_SD_D1, P_SD_D2, P_SD_D3, P_SD_CLK, P_SD_CMD,
	0
};

static const unsigned short spi0_mux[] = {
	P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0
};

static const unsigned short spi1_mux[] = {
	P_SPI1_SCK, P_SPI1_MISO, P_SPI1_MOSI, 0
};

static const unsigned short twi0_mux[] = {
	P_TWI0_SCL, P_TWI0_SDA, 0
};

static const unsigned short twi1_mux[] = {
	P_TWI1_SCL, P_TWI1_SDA, 0
};

static const unsigned short rotary_mux[] = {
	P_CNT_CUD, P_CNT_CDG, P_CNT_CZM, 0
};

static const unsigned short sport0_mux[] = {
	P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
	P_SPORT0_DRPRI, P_SPORT0_RSCLK, 0
};

static const unsigned short sport1_mux[] = {
	P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
	P_SPORT1_DRPRI, P_SPORT1_RSCLK, 0
};

static const unsigned short sport2_mux[] = {
	P_SPORT2_TFS, P_SPORT2_DTPRI, P_SPORT2_TSCLK, P_SPORT2_RFS,
	P_SPORT2_DRPRI, P_SPORT2_RSCLK, 0
};

static const unsigned short sport3_mux[] = {
	P_SPORT3_TFS, P_SPORT3_DTPRI, P_SPORT3_TSCLK, P_SPORT3_RFS,
	P_SPORT3_DRPRI, P_SPORT3_RSCLK, 0
};

static const unsigned short can0_mux[] = {
	P_CAN0_RX, P_CAN0_TX, 0
};

static const unsigned short can1_mux[] = {
	P_CAN1_RX, P_CAN1_TX, 0
};

static const unsigned short smc0_mux[] = {
	P_A4, P_A5, P_A6, P_A7, P_A8, P_A9, P_A10, P_A11, P_A12,
	P_A13, P_A14, P_A15, P_A16, P_A17, P_A18, P_A19, P_A20, P_A21,
	P_A22, P_A23, P_A24, P_A25, P_NOR_CLK, 0,
};

static const unsigned short ppi0_8b_mux[] = {
	P_PPI0_D0, P_PPI0_D1, P_PPI0_D2, P_PPI0_D3,
	P_PPI0_D4, P_PPI0_D5, P_PPI0_D6, P_PPI0_D7,
	P_PPI0_CLK, P_PPI0_FS1, P_PPI0_FS2,
	0,
};

static const unsigned short ppi0_16b_mux[] = {
	P_PPI0_D0, P_PPI0_D1, P_PPI0_D2, P_PPI0_D3,
	P_PPI0_D4, P_PPI0_D5, P_PPI0_D6, P_PPI0_D7,
	P_PPI0_D8, P_PPI0_D9, P_PPI0_D10, P_PPI0_D11,
	P_PPI0_D12, P_PPI0_D13, P_PPI0_D14, P_PPI0_D15,
	P_PPI0_CLK, P_PPI0_FS1, P_PPI0_FS2,
	0,
};

static const unsigned short ppi0_24b_mux[] = {
	P_PPI0_D0, P_PPI0_D1, P_PPI0_D2, P_PPI0_D3,
	P_PPI0_D4, P_PPI0_D5, P_PPI0_D6, P_PPI0_D7,
	P_PPI0_D8, P_PPI0_D9, P_PPI0_D10, P_PPI0_D11,
	P_PPI0_D12, P_PPI0_D13, P_PPI0_D14, P_PPI0_D15,
	P_PPI0_D16, P_PPI0_D17, P_PPI0_D18, P_PPI0_D19,
	P_PPI0_D20, P_PPI0_D21, P_PPI0_D22, P_PPI0_D23,
	P_PPI0_CLK, P_PPI0_FS1, P_PPI0_FS2,
	0,
};

static const unsigned short ppi1_8b_mux[] = {
	P_PPI1_D0, P_PPI1_D1, P_PPI1_D2, P_PPI1_D3,
	P_PPI1_D4, P_PPI1_D5, P_PPI1_D6, P_PPI1_D7,
	P_PPI1_CLK, P_PPI1_FS1, P_PPI1_FS2,
	0,
};

static const unsigned short ppi1_16b_mux[] = {
	P_PPI1_D0, P_PPI1_D1, P_PPI1_D2, P_PPI1_D3,
	P_PPI1_D4, P_PPI1_D5, P_PPI1_D6, P_PPI1_D7,
	P_PPI1_D8, P_PPI1_D9, P_PPI1_D10, P_PPI1_D11,
	P_PPI1_D12, P_PPI1_D13, P_PPI1_D14, P_PPI1_D15,
	P_PPI1_CLK, P_PPI1_FS1, P_PPI1_FS2,
	0,
};

static const unsigned short ppi2_8b_mux[] = {
	P_PPI2_D0, P_PPI2_D1, P_PPI2_D2, P_PPI2_D3,
	P_PPI2_D4, P_PPI2_D5, P_PPI2_D6, P_PPI2_D7,
	P_PPI2_CLK, P_PPI2_FS1, P_PPI2_FS2,
	0,
};

static const unsigned short atapi_mux[] = {
	P_ATAPI_RESET, P_ATAPI_DIOR, P_ATAPI_DIOW, P_ATAPI_CS0, P_ATAPI_CS1,
	P_ATAPI_DMACK, P_ATAPI_DMARQ, P_ATAPI_INTRQ, P_ATAPI_IORDY,
};

static const unsigned short atapi_alter_mux[] = {
	P_ATAPI_D0A, P_ATAPI_D1A, P_ATAPI_D2A, P_ATAPI_D3A, P_ATAPI_D4A,
	P_ATAPI_D5A, P_ATAPI_D6A, P_ATAPI_D7A, P_ATAPI_D8A, P_ATAPI_D9A,
	P_ATAPI_D10A, P_ATAPI_D11A, P_ATAPI_D12A, P_ATAPI_D13A, P_ATAPI_D14A,
	P_ATAPI_D15A, P_ATAPI_A0A, P_ATAPI_A1A, P_ATAPI_A2A,
	0
};

static const unsigned short nfc0_mux[] = {
	P_NAND_CE, P_NAND_RB,
	0
};

static const unsigned short keys_4x4_mux[] = {
	P_KEY_ROW3, P_KEY_ROW2, P_KEY_ROW1, P_KEY_ROW0,
	P_KEY_COL3, P_KEY_COL2, P_KEY_COL1, P_KEY_COL0,
	0
};

static const unsigned short keys_8x8_mux[] = {
	P_KEY_ROW7, P_KEY_ROW6, P_KEY_ROW5, P_KEY_ROW4,
	P_KEY_ROW3, P_KEY_ROW2, P_KEY_ROW1, P_KEY_ROW0,
	P_KEY_COL7, P_KEY_COL6, P_KEY_COL5, P_KEY_COL4,
	P_KEY_COL3, P_KEY_COL2, P_KEY_COL1, P_KEY_COL0,
	0
};

static const struct adi_pin_group adi_pin_groups[] = {
	ADI_PIN_GROUP("uart0grp", uart0_pins, uart0_mux),
	ADI_PIN_GROUP("uart1grp", uart1_pins, uart1_mux),
	ADI_PIN_GROUP("uart1ctsrtsgrp", uart1_ctsrts_pins, uart1_ctsrts_mux),
	ADI_PIN_GROUP("uart2grp", uart2_pins, uart2_mux),
	ADI_PIN_GROUP("uart3grp", uart3_pins, uart3_mux),
	ADI_PIN_GROUP("uart3ctsrtsgrp", uart3_ctsrts_pins, uart3_ctsrts_mux),
	ADI_PIN_GROUP("rsi0grp", rsi0_pins, rsi0_mux),
	ADI_PIN_GROUP("spi0grp", spi0_pins, spi0_mux),
	ADI_PIN_GROUP("spi1grp", spi1_pins, spi1_mux),
	ADI_PIN_GROUP("twi0grp", twi0_pins, twi0_mux),
	ADI_PIN_GROUP("twi1grp", twi1_pins, twi1_mux),
	ADI_PIN_GROUP("rotarygrp", rotary_pins, rotary_mux),
	ADI_PIN_GROUP("can0grp", can0_pins, can0_mux),
	ADI_PIN_GROUP("can1grp", can1_pins, can1_mux),
	ADI_PIN_GROUP("smc0grp", smc0_pins, smc0_mux),
	ADI_PIN_GROUP("sport0grp", sport0_pins, sport0_mux),
	ADI_PIN_GROUP("sport1grp", sport1_pins, sport1_mux),
	ADI_PIN_GROUP("sport2grp", sport2_pins, sport2_mux),
	ADI_PIN_GROUP("sport3grp", sport3_pins, sport3_mux),
	ADI_PIN_GROUP("ppi0_8bgrp", ppi0_8b_pins, ppi0_8b_mux),
	ADI_PIN_GROUP("ppi0_16bgrp", ppi0_16b_pins, ppi0_16b_mux),
	ADI_PIN_GROUP("ppi0_24bgrp", ppi0_24b_pins, ppi0_24b_mux),
	ADI_PIN_GROUP("ppi1_8bgrp", ppi1_8b_pins, ppi1_8b_mux),
	ADI_PIN_GROUP("ppi1_16bgrp", ppi1_16b_pins, ppi1_16b_mux),
	ADI_PIN_GROUP("ppi2_8bgrp", ppi2_8b_pins, ppi2_8b_mux),
	ADI_PIN_GROUP("atapigrp", atapi_pins, atapi_mux),
	ADI_PIN_GROUP("atapialtergrp", atapi_alter_pins, atapi_alter_mux),
	ADI_PIN_GROUP("nfc0grp", nfc0_pins, nfc0_mux),
	ADI_PIN_GROUP("keys_4x4grp", keys_4x4_pins, keys_4x4_mux),
	ADI_PIN_GROUP("keys_8x8grp", keys_8x8_pins, keys_8x8_mux),
};

static const char * const uart0grp[] = { "uart0grp" };
static const char * const uart1grp[] = { "uart1grp" };
static const char * const uart1ctsrtsgrp[] = { "uart1ctsrtsgrp" };
static const char * const uart2grp[] = { "uart2grp" };
static const char * const uart3grp[] = { "uart3grp" };
static const char * const uart3ctsrtsgrp[] = { "uart3ctsrtsgrp" };
static const char * const rsi0grp[] = { "rsi0grp" };
static const char * const spi0grp[] = { "spi0grp" };
static const char * const spi1grp[] = { "spi1grp" };
static const char * const twi0grp[] = { "twi0grp" };
static const char * const twi1grp[] = { "twi1grp" };
static const char * const rotarygrp[] = { "rotarygrp" };
static const char * const can0grp[] = { "can0grp" };
static const char * const can1grp[] = { "can1grp" };
static const char * const smc0grp[] = { "smc0grp" };
static const char * const sport0grp[] = { "sport0grp" };
static const char * const sport1grp[] = { "sport1grp" };
static const char * const sport2grp[] = { "sport2grp" };
static const char * const sport3grp[] = { "sport3grp" };
static const char * const ppi0grp[] = { "ppi0_8bgrp",
					"ppi0_16bgrp",
					"ppi0_24bgrp" };
static const char * const ppi1grp[] = { "ppi1_8bgrp",
					"ppi1_16bgrp" };
static const char * const ppi2grp[] = { "ppi2_8bgrp" };
static const char * const atapigrp[] = { "atapigrp" };
static const char * const atapialtergrp[] = { "atapialtergrp" };
static const char * const nfc0grp[] = { "nfc0grp" };
static const char * const keysgrp[] = { "keys_4x4grp",
					"keys_8x8grp" };

static const struct adi_pmx_func adi_pmx_functions[] = {
	ADI_PMX_FUNCTION("uart0", uart0grp),
	ADI_PMX_FUNCTION("uart1", uart1grp),
	ADI_PMX_FUNCTION("uart1_ctsrts", uart1ctsrtsgrp),
	ADI_PMX_FUNCTION("uart2", uart2grp),
	ADI_PMX_FUNCTION("uart3", uart3grp),
	ADI_PMX_FUNCTION("uart3_ctsrts", uart3ctsrtsgrp),
	ADI_PMX_FUNCTION("rsi0", rsi0grp),
	ADI_PMX_FUNCTION("spi0", spi0grp),
	ADI_PMX_FUNCTION("spi1", spi1grp),
	ADI_PMX_FUNCTION("twi0", twi0grp),
	ADI_PMX_FUNCTION("twi1", twi1grp),
	ADI_PMX_FUNCTION("rotary", rotarygrp),
	ADI_PMX_FUNCTION("can0", can0grp),
	ADI_PMX_FUNCTION("can1", can1grp),
	ADI_PMX_FUNCTION("smc0", smc0grp),
	ADI_PMX_FUNCTION("sport0", sport0grp),
	ADI_PMX_FUNCTION("sport1", sport1grp),
	ADI_PMX_FUNCTION("sport2", sport2grp),
	ADI_PMX_FUNCTION("sport3", sport3grp),
	ADI_PMX_FUNCTION("ppi0", ppi0grp),
	ADI_PMX_FUNCTION("ppi1", ppi1grp),
	ADI_PMX_FUNCTION("ppi2", ppi2grp),
	ADI_PMX_FUNCTION("atapi", atapigrp),
	ADI_PMX_FUNCTION("atapi_alter", atapialtergrp),
	ADI_PMX_FUNCTION("nfc0", nfc0grp),
	ADI_PMX_FUNCTION("keys", keysgrp),
};

static const struct adi_pinctrl_soc_data adi_bf54x_soc = {
	.functions = adi_pmx_functions,
	.nfunctions = ARRAY_SIZE(adi_pmx_functions),
	.groups = adi_pin_groups,
	.ngroups = ARRAY_SIZE(adi_pin_groups),
	.pins = adi_pads,
	.npins = ARRAY_SIZE(adi_pads),
};

void adi_pinctrl_soc_init(const struct adi_pinctrl_soc_data **soc)
{
	*soc = &adi_bf54x_soc;
}
