// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Marvell Armada CP110 pinctrl driver based on mvebu pinctrl core
 *
 * Copyright (C) 2017 Marvell
 *
 * Hanna Hawa <hannah@marvell.com>
 */

#include <linux/err.h>
#include <linux/init.h>
#include <linux/io.h>
#include <linux/mfd/syscon.h>
#include <linux/of.h>
#include <linux/pinctrl/pinctrl.h>
#include <linux/platform_device.h>
#include <linux/property.h>

#include "pinctrl-mvebu.h"

/*
 * Even if the pin controller is the same the MMP available depend on the SoC
 * integration.
 *  - In Armada7K (single CP) almost all the MPPs are available (except the
 *    MMP 39 to 43)
 *  - In Armada8K (dual CP) the MPPs are split into 2 parts, MPPs 0-31 from
 *    CPS, and MPPs 32-62 from CPM, the below flags (V_ARMADA_8K_CPM,
 *    V_ARMADA_8K_CPS) set which MPP is available to the CPx.
 * The x_PLUS enum mean that the MPP available for CPx and for Armada70x0
 */
enum {
	V_ARMADA_7K = BIT(0),
	V_ARMADA_8K_CPM = BIT(1),
	V_ARMADA_8K_CPS = BIT(2),
	V_CP115_STANDALONE = BIT(3),
	V_ARMADA_7K_8K_CPM = (V_ARMADA_7K | V_ARMADA_8K_CPM),
	V_ARMADA_7K_8K_CPS = (V_ARMADA_7K | V_ARMADA_8K_CPS),
};

static struct mvebu_mpp_mode armada_cp110_mpp_modes[] = {
	MPP_MODE(0,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ale1"),
		 MPP_FUNCTION(2,	"au",		"i2smclk"),
		 MPP_FUNCTION(3,	"ge0",		"rxd3"),
		 MPP_FUNCTION(4,	"tdm",		"pclk"),
		 MPP_FUNCTION(6,	"ptp",		"pulse"),
		 MPP_FUNCTION(7,	"mss_i2c",	"sda"),
		 MPP_FUNCTION(8,	"uart0",	"rxd"),
		 MPP_FUNCTION(9,	"sata0",	"present_act"),
		 MPP_FUNCTION(10,	"ge",		"mdio")),
	MPP_MODE(1,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ale0"),
		 MPP_FUNCTION(2,	"au",		"i2sdo_spdifo"),
		 MPP_FUNCTION(3,	"ge0",		"rxd2"),
		 MPP_FUNCTION(4,	"tdm",		"drx"),
		 MPP_FUNCTION(6,	"ptp",		"clk"),
		 MPP_FUNCTION(7,	"mss_i2c",	"sck"),
		 MPP_FUNCTION(8,	"uart0",	"txd"),
		 MPP_FUNCTION(9,	"sata1",	"present_act"),
		 MPP_FUNCTION(10,	"ge",		"mdc")),
	MPP_MODE(2,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ad15"),
		 MPP_FUNCTION(2,	"au",		"i2sextclk"),
		 MPP_FUNCTION(3,	"ge0",		"rxd1"),
		 MPP_FUNCTION(4,	"tdm",		"dtx"),
		 MPP_FUNCTION(5,	"mss_uart",	"rxd"),
		 MPP_FUNCTION(6,	"ptp",		"pclk_out"),
		 MPP_FUNCTION(7,	"i2c1",		"sck"),
		 MPP_FUNCTION(8,	"uart1",	"rxd"),
		 MPP_FUNCTION(9,	"sata0",	"present_act"),
		 MPP_FUNCTION(10,	"xg",		"mdc")),
	MPP_MODE(3,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ad14"),
		 MPP_FUNCTION(2,	"au",		"i2slrclk"),
		 MPP_FUNCTION(3,	"ge0",		"rxd0"),
		 MPP_FUNCTION(4,	"tdm",		"fsync"),
		 MPP_FUNCTION(5,	"mss_uart",	"txd"),
		 MPP_FUNCTION(6,	"pcie",		"rstoutn"),
		 MPP_FUNCTION(7,	"i2c1",		"sda"),
		 MPP_FUNCTION(8,	"uart1",	"txd"),
		 MPP_FUNCTION(9,	"sata1",	"present_act"),
		 MPP_FUNCTION(10,	"xg",		"mdio")),
	MPP_MODE(4,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ad13"),
		 MPP_FUNCTION(2,	"au",		"i2sbclk"),
		 MPP_FUNCTION(3,	"ge0",		"rxctl"),
		 MPP_FUNCTION(4,	"tdm",		"rstn"),
		 MPP_FUNCTION(5,	"mss_uart",	"rxd"),
		 MPP_FUNCTION(6,	"uart1",	"cts"),
		 MPP_FUNCTION(7,	"pcie0",	"clkreq"),
		 MPP_FUNCTION(8,	"uart3",	"rxd"),
		 MPP_FUNCTION(10,	"ge",		"mdc")),
	MPP_MODE(5,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ad12"),
		 MPP_FUNCTION(2,	"au",		"i2sdi"),
		 MPP_FUNCTION(3,	"ge0",		"rxclk"),
		 MPP_FUNCTION(4,	"tdm",		"intn"),
		 MPP_FUNCTION(5,	"mss_uart",	"txd"),
		 MPP_FUNCTION(6,	"uart1",	"rts"),
		 MPP_FUNCTION(7,	"pcie1",	"clkreq"),
		 MPP_FUNCTION(8,	"uart3",	"txd"),
		 MPP_FUNCTION(10,	"ge",		"mdio")),
	MPP_MODE(6,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ad11"),
		 MPP_FUNCTION(3,	"ge0",		"txd3"),
		 MPP_FUNCTION(4,	"spi0",		"csn2"),
		 MPP_FUNCTION(5,	"au",		"i2sextclk"),
		 MPP_FUNCTION(6,	"sata1",	"present_act"),
		 MPP_FUNCTION(7,	"pcie2",	"clkreq"),
		 MPP_FUNCTION(8,	"uart0",	"rxd"),
		 MPP_FUNCTION(9,	"ptp",		"pulse")),
	MPP_MODE(7,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ad10"),
		 MPP_FUNCTION(3,	"ge0",		"txd2"),
		 MPP_FUNCTION(4,	"spi0",		"csn1"),
		 MPP_FUNCTION(5,	"spi1",		"csn1"),
		 MPP_FUNCTION(6,	"sata0",	"present_act"),
		 MPP_FUNCTION(7,	"led",		"data"),
		 MPP_FUNCTION(8,	"uart0",	"txd"),
		 MPP_FUNCTION(9,	"ptp",		"clk")),
	MPP_MODE(8,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ad9"),
		 MPP_FUNCTION(3,	"ge0",		"txd1"),
		 MPP_FUNCTION(4,	"spi0",		"csn0"),
		 MPP_FUNCTION(5,	"spi1",		"csn0"),
		 MPP_FUNCTION(6,	"uart0",	"cts"),
		 MPP_FUNCTION(7,	"led",		"stb"),
		 MPP_FUNCTION(8,	"uart2",	"rxd"),
		 MPP_FUNCTION(9,	"ptp",		"pclk_out"),
		 MPP_FUNCTION(10,	"synce1",	"clk")),
	MPP_MODE(9,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ad8"),
		 MPP_FUNCTION(3,	"ge0",		"txd0"),
		 MPP_FUNCTION(4,	"spi0",		"mosi"),
		 MPP_FUNCTION(5,	"spi1",		"mosi"),
		 MPP_FUNCTION(7,	"pcie",		"rstoutn"),
		 MPP_FUNCTION(10,	"synce2",	"clk")),
	MPP_MODE(10,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"readyn"),
		 MPP_FUNCTION(3,	"ge0",		"txctl"),
		 MPP_FUNCTION(4,	"spi0",		"miso"),
		 MPP_FUNCTION(5,	"spi1",		"miso"),
		 MPP_FUNCTION(6,	"uart0",	"cts"),
		 MPP_FUNCTION(7,	"sata1",	"present_act")),
	MPP_MODE(11,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"wen1"),
		 MPP_FUNCTION(3,	"ge0",		"txclkout"),
		 MPP_FUNCTION(4,	"spi0",		"clk"),
		 MPP_FUNCTION(5,	"spi1",		"clk"),
		 MPP_FUNCTION(6,	"uart0",	"rts"),
		 MPP_FUNCTION(7,	"led",		"clk"),
		 MPP_FUNCTION(8,	"uart2",	"txd"),
		 MPP_FUNCTION(9,	"sata0",	"present_act")),
	MPP_MODE(12,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"clk_out"),
		 MPP_FUNCTION(2,	"nf",		"rbn1"),
		 MPP_FUNCTION(3,	"spi1",		"csn1"),
		 MPP_FUNCTION(4,	"ge0",		"rxclk")),
	MPP_MODE(13,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"burstn"),
		 MPP_FUNCTION(2,	"nf",		"rbn0"),
		 MPP_FUNCTION(3,	"spi1",		"miso"),
		 MPP_FUNCTION(4,	"ge0",		"rxctl"),
		 MPP_FUNCTION(8,	"mss_spi",	"miso")),
	MPP_MODE(14,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"bootcsn"),
		 MPP_FUNCTION(2,	"dev",		"csn0"),
		 MPP_FUNCTION(3,	"spi1",		"csn0"),
		 MPP_FUNCTION(4,	"spi0",		"csn3"),
		 MPP_FUNCTION(5,	"au",		"i2sextclk"),
		 MPP_FUNCTION(6,	"spi0",		"miso"),
		 MPP_FUNCTION(7,	"sata0",	"present_act"),
		 MPP_FUNCTION(8,	"mss_spi",	"csn")),
	MPP_MODE(15,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ad7"),
		 MPP_FUNCTION(3,	"spi1",		"mosi"),
		 MPP_FUNCTION(6,	"spi0",		"mosi"),
		 MPP_FUNCTION(8,	"mss_spi",	"mosi"),
		 MPP_FUNCTION(11,	"ptp",		"pulse_cp2cp")),
	MPP_MODE(16,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ad6"),
		 MPP_FUNCTION(3,	"spi1",		"clk"),
		 MPP_FUNCTION(8,	"mss_spi",	"clk")),
	MPP_MODE(17,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ad5"),
		 MPP_FUNCTION(4,	"ge0",		"txd3")),
	MPP_MODE(18,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ad4"),
		 MPP_FUNCTION(4,	"ge0",		"txd2"),
		 MPP_FUNCTION(11,	"ptp",		"clk_cp2cp")),
	MPP_MODE(19,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ad3"),
		 MPP_FUNCTION(4,	"ge0",		"txd1"),
		 MPP_FUNCTION(11,	"wakeup",	"out_cp2cp")),
	MPP_MODE(20,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ad2"),
		 MPP_FUNCTION(4,	"ge0",		"txd0")),
	MPP_MODE(21,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ad1"),
		 MPP_FUNCTION(4,	"ge0",		"txctl"),
		 MPP_FUNCTION(11,	"sei",		"in_cp2cp")),
	MPP_MODE(22,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"ad0"),
		 MPP_FUNCTION(4,	"ge0",		"txclkout"),
		 MPP_FUNCTION(11,	"wakeup",	"in_cp2cp")),
	MPP_MODE(23,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"a1"),
		 MPP_FUNCTION(5,	"au",		"i2smclk"),
		 MPP_FUNCTION(11,	"link",		"rd_in_cp2cp")),
	MPP_MODE(24,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"a0"),
		 MPP_FUNCTION(5,	"au",		"i2slrclk")),
	MPP_MODE(25,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"oen"),
		 MPP_FUNCTION(5,	"au",		"i2sdo_spdifo")),
	MPP_MODE(26,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"wen0"),
		 MPP_FUNCTION(5,	"au",		"i2sbclk")),
	MPP_MODE(27,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"csn0"),
		 MPP_FUNCTION(2,	"spi1",		"miso"),
		 MPP_FUNCTION(3,	"mss_gpio4",	NULL),
		 MPP_FUNCTION(4,	"ge0",		"rxd3"),
		 MPP_FUNCTION(5,	"spi0",		"csn4"),
		 MPP_FUNCTION(8,	"ge",		"mdio"),
		 MPP_FUNCTION(9,	"sata0",	"present_act"),
		 MPP_FUNCTION(10,	"uart0",	"rts"),
		 MPP_FUNCTION(11,	"rei",		"in_cp2cp")),
	MPP_MODE(28,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"csn1"),
		 MPP_FUNCTION(2,	"spi1",		"csn0"),
		 MPP_FUNCTION(3,	"mss_gpio5",	NULL),
		 MPP_FUNCTION(4,	"ge0",		"rxd2"),
		 MPP_FUNCTION(5,	"spi0",		"csn5"),
		 MPP_FUNCTION(6,	"pcie2",	"clkreq"),
		 MPP_FUNCTION(7,	"ptp",		"pulse"),
		 MPP_FUNCTION(8,	"ge",		"mdc"),
		 MPP_FUNCTION(9,	"sata1",	"present_act"),
		 MPP_FUNCTION(10,	"uart0",	"cts"),
		 MPP_FUNCTION(11,	"led",		"data")),
	MPP_MODE(29,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"csn2"),
		 MPP_FUNCTION(2,	"spi1",		"mosi"),
		 MPP_FUNCTION(3,	"mss_gpio6",	NULL),
		 MPP_FUNCTION(4,	"ge0",		"rxd1"),
		 MPP_FUNCTION(5,	"spi0",		"csn6"),
		 MPP_FUNCTION(6,	"pcie1",	"clkreq"),
		 MPP_FUNCTION(7,	"ptp",		"clk"),
		 MPP_FUNCTION(8,	"mss_i2c",	"sda"),
		 MPP_FUNCTION(9,	"sata0",	"present_act"),
		 MPP_FUNCTION(10,	"uart0",	"rxd"),
		 MPP_FUNCTION(11,	"led",		"stb")),
	MPP_MODE(30,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"csn3"),
		 MPP_FUNCTION(2,	"spi1",		"clk"),
		 MPP_FUNCTION(3,	"mss_gpio7",	NULL),
		 MPP_FUNCTION(4,	"ge0",		"rxd0"),
		 MPP_FUNCTION(5,	"spi0",		"csn7"),
		 MPP_FUNCTION(6,	"pcie0",	"clkreq"),
		 MPP_FUNCTION(7,	"ptp",		"pclk_out"),
		 MPP_FUNCTION(8,	"mss_i2c",	"sck"),
		 MPP_FUNCTION(9,	"sata1",	"present_act"),
		 MPP_FUNCTION(10,	"uart0",	"txd"),
		 MPP_FUNCTION(11,	"led",		"clk")),
	MPP_MODE(31,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"dev",		"a2"),
		 MPP_FUNCTION(3,	"mss_gpio4",	NULL),
		 MPP_FUNCTION(6,	"pcie",		"rstoutn"),
		 MPP_FUNCTION(8,	"ge",		"mdc")),
	MPP_MODE(32,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"mii",		"col"),
		 MPP_FUNCTION(2,	"mii",		"txerr"),
		 MPP_FUNCTION(3,	"mss_spi",	"miso"),
		 MPP_FUNCTION(4,	"tdm",		"drx"),
		 MPP_FUNCTION(5,	"au",		"i2sextclk"),
		 MPP_FUNCTION(6,	"au",		"i2sdi"),
		 MPP_FUNCTION(7,	"ge",		"mdio"),
		 MPP_FUNCTION(8,	"sdio",		"v18_en"),
		 MPP_FUNCTION(9,	"pcie1",	"clkreq"),
		 MPP_FUNCTION(10,	"mss_gpio0",	NULL)),
	MPP_MODE(33,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"mii",		"txclk"),
		 MPP_FUNCTION(2,	"sdio",		"pwr10"),
		 MPP_FUNCTION(3,	"mss_spi",	"csn"),
		 MPP_FUNCTION(4,	"tdm",		"fsync"),
		 MPP_FUNCTION(5,	"au",		"i2smclk"),
		 MPP_FUNCTION(6,	"sdio",		"bus_pwr"),
		 MPP_FUNCTION(8,	"xg",		"mdio"),
		 MPP_FUNCTION(9,	"pcie2",	"clkreq"),
		 MPP_FUNCTION(10,	"mss_gpio1",	NULL)),
	MPP_MODE(34,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"mii",		"rxerr"),
		 MPP_FUNCTION(2,	"sdio",		"pwr11"),
		 MPP_FUNCTION(3,	"mss_spi",	"mosi"),
		 MPP_FUNCTION(4,	"tdm",		"dtx"),
		 MPP_FUNCTION(5,	"au",		"i2slrclk"),
		 MPP_FUNCTION(6,	"sdio",		"wr_protect"),
		 MPP_FUNCTION(7,	"ge",		"mdc"),
		 MPP_FUNCTION(9,	"pcie0",	"clkreq"),
		 MPP_FUNCTION(10,	"mss_gpio2",	NULL)),
	MPP_MODE(35,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"sata1",	"present_act"),
		 MPP_FUNCTION(2,	"i2c1",		"sda"),
		 MPP_FUNCTION(3,	"mss_spi",	"clk"),
		 MPP_FUNCTION(4,	"tdm",		"pclk"),
		 MPP_FUNCTION(5,	"au",		"i2sdo_spdifo"),
		 MPP_FUNCTION(6,	"sdio",		"card_detect"),
		 MPP_FUNCTION(7,	"xg",		"mdio"),
		 MPP_FUNCTION(8,	"ge",		"mdio"),
		 MPP_FUNCTION(9,	"pcie",		"rstoutn"),
		 MPP_FUNCTION(10,	"mss_gpio3",	NULL)),
	MPP_MODE(36,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"synce2",	"clk"),
		 MPP_FUNCTION(2,	"i2c1",		"sck"),
		 MPP_FUNCTION(3,	"ptp",		"clk"),
		 MPP_FUNCTION(4,	"synce1",	"clk"),
		 MPP_FUNCTION(5,	"au",		"i2sbclk"),
		 MPP_FUNCTION(6,	"sata0",	"present_act"),
		 MPP_FUNCTION(7,	"xg",		"mdc"),
		 MPP_FUNCTION(8,	"ge",		"mdc"),
		 MPP_FUNCTION(9,	"pcie2",	"clkreq"),
		 MPP_FUNCTION(10,	"mss_gpio5",	NULL)),
	MPP_MODE(37,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"uart2",	"rxd"),
		 MPP_FUNCTION(2,	"i2c0",		"sck"),
		 MPP_FUNCTION(3,	"ptp",		"pclk_out"),
		 MPP_FUNCTION(4,	"tdm",		"intn"),
		 MPP_FUNCTION(5,	"mss_i2c",	"sck"),
		 MPP_FUNCTION(6,	"sata1",	"present_act"),
		 MPP_FUNCTION(7,	"ge",		"mdc"),
		 MPP_FUNCTION(8,	"xg",		"mdc"),
		 MPP_FUNCTION(9,	"pcie1",	"clkreq"),
		 MPP_FUNCTION(10,	"mss_gpio6",	NULL),
		 MPP_FUNCTION(11,	"link",		"rd_out_cp2cp")),
	MPP_MODE(38,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"uart2",	"txd"),
		 MPP_FUNCTION(2,	"i2c0",		"sda"),
		 MPP_FUNCTION(3,	"ptp",		"pulse"),
		 MPP_FUNCTION(4,	"tdm",		"rstn"),
		 MPP_FUNCTION(5,	"mss_i2c",	"sda"),
		 MPP_FUNCTION(6,	"sata0",	"present_act"),
		 MPP_FUNCTION(7,	"ge",		"mdio"),
		 MPP_FUNCTION(8,	"xg",		"mdio"),
		 MPP_FUNCTION(9,	"au",		"i2sextclk"),
		 MPP_FUNCTION(10,	"mss_gpio7",	NULL),
		 MPP_FUNCTION(11,	"ptp",		"pulse_cp2cp")),
	MPP_MODE(39,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"sdio",		"wr_protect"),
		 MPP_FUNCTION(4,	"au",		"i2sbclk"),
		 MPP_FUNCTION(5,	"ptp",		"clk"),
		 MPP_FUNCTION(6,	"spi0",		"csn1"),
		 MPP_FUNCTION(9,	"sata1",	"present_act"),
		 MPP_FUNCTION(10,	"mss_gpio0",	NULL)),
	MPP_MODE(40,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"sdio",		"pwr11"),
		 MPP_FUNCTION(2,	"synce1",	"clk"),
		 MPP_FUNCTION(3,	"mss_i2c",	"sda"),
		 MPP_FUNCTION(4,	"au",		"i2sdo_spdifo"),
		 MPP_FUNCTION(5,	"ptp",		"pclk_out"),
		 MPP_FUNCTION(6,	"spi0",		"clk"),
		 MPP_FUNCTION(7,	"uart1",	"txd"),
		 MPP_FUNCTION(8,	"ge",		"mdio"),
		 MPP_FUNCTION(9,	"sata0",	"present_act"),
		 MPP_FUNCTION(10,	"mss_gpio1",	NULL)),
	MPP_MODE(41,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"sdio",		"pwr10"),
		 MPP_FUNCTION(2,	"sdio",		"bus_pwr"),
		 MPP_FUNCTION(3,	"mss_i2c",	"sck"),
		 MPP_FUNCTION(4,	"au",		"i2slrclk"),
		 MPP_FUNCTION(5,	"ptp",		"pulse"),
		 MPP_FUNCTION(6,	"spi0",		"mosi"),
		 MPP_FUNCTION(7,	"uart1",	"rxd"),
		 MPP_FUNCTION(8,	"ge",		"mdc"),
		 MPP_FUNCTION(9,	"sata1",	"present_act"),
		 MPP_FUNCTION(10,	"mss_gpio2",	NULL),
		 MPP_FUNCTION(11,	"rei",		"out_cp2cp")),
	MPP_MODE(42,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"sdio",		"v18_en"),
		 MPP_FUNCTION(2,	"sdio",		"wr_protect"),
		 MPP_FUNCTION(3,	"synce2",	"clk"),
		 MPP_FUNCTION(4,	"au",		"i2smclk"),
		 MPP_FUNCTION(5,	"mss_uart",	"txd"),
		 MPP_FUNCTION(6,	"spi0",		"miso"),
		 MPP_FUNCTION(7,	"uart1",	"cts"),
		 MPP_FUNCTION(8,	"xg",		"mdc"),
		 MPP_FUNCTION(9,	"sata0",	"present_act"),
		 MPP_FUNCTION(10,	"mss_gpio4",	NULL)),
	MPP_MODE(43,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"sdio",		"card_detect"),
		 MPP_FUNCTION(3,	"synce1",	"clk"),
		 MPP_FUNCTION(4,	"au",		"i2sextclk"),
		 MPP_FUNCTION(5,	"mss_uart",	"rxd"),
		 MPP_FUNCTION(6,	"spi0",		"csn0"),
		 MPP_FUNCTION(7,	"uart1",	"rts"),
		 MPP_FUNCTION(8,	"xg",		"mdio"),
		 MPP_FUNCTION(9,	"sata1",	"present_act"),
		 MPP_FUNCTION(10,	"mss_gpio5",	NULL),
		 MPP_FUNCTION(11,	"wakeup",	"out_cp2cp")),
	MPP_MODE(44,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"ge1",		"txd2"),
		 MPP_FUNCTION(7,	"uart0",	"rts"),
		 MPP_FUNCTION(11,	"ptp",		"clk_cp2cp")),
	MPP_MODE(45,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"ge1",		"txd3"),
		 MPP_FUNCTION(7,	"uart0",	"txd"),
		 MPP_FUNCTION(9,	"pcie",		"rstoutn")),
	MPP_MODE(46,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"ge1",		"txd1"),
		 MPP_FUNCTION(7,	"uart1",	"rts")),
	MPP_MODE(47,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"ge1",		"txd0"),
		 MPP_FUNCTION(5,	"spi1",		"clk"),
		 MPP_FUNCTION(7,	"uart1",	"txd"),
		 MPP_FUNCTION(8,	"ge",		"mdc")),
	MPP_MODE(48,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"ge1",		"txctl_txen"),
		 MPP_FUNCTION(5,	"spi1",		"mosi"),
		 MPP_FUNCTION(8,	"xg",		"mdc"),
		 MPP_FUNCTION(11,	"wakeup",	"in_cp2cp")),
	MPP_MODE(49,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"ge1",		"txclkout"),
		 MPP_FUNCTION(2,	"mii",		"crs"),
		 MPP_FUNCTION(5,	"spi1",		"miso"),
		 MPP_FUNCTION(7,	"uart1",	"rxd"),
		 MPP_FUNCTION(8,	"ge",		"mdio"),
		 MPP_FUNCTION(9,	"pcie0",	"clkreq"),
		 MPP_FUNCTION(10,	"sdio",		"v18_en"),
		 MPP_FUNCTION(11,	"sei",		"out_cp2cp")),
	MPP_MODE(50,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"ge1",		"rxclk"),
		 MPP_FUNCTION(2,	"mss_i2c",	"sda"),
		 MPP_FUNCTION(5,	"spi1",		"csn0"),
		 MPP_FUNCTION(6,	"uart2",	"txd"),
		 MPP_FUNCTION(7,	"uart0",	"rxd"),
		 MPP_FUNCTION(8,	"xg",		"mdio"),
		 MPP_FUNCTION(10,	"sdio",		"pwr11")),
	MPP_MODE(51,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"ge1",		"rxd0"),
		 MPP_FUNCTION(2,	"mss_i2c",	"sck"),
		 MPP_FUNCTION(5,	"spi1",		"csn1"),
		 MPP_FUNCTION(6,	"uart2",	"rxd"),
		 MPP_FUNCTION(7,	"uart0",	"cts"),
		 MPP_FUNCTION(10,	"sdio",		"pwr10")),
	MPP_MODE(52,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"ge1",		"rxd1"),
		 MPP_FUNCTION(2,	"synce1",	"clk"),
		 MPP_FUNCTION(4,	"synce2",	"clk"),
		 MPP_FUNCTION(5,	"spi1",		"csn2"),
		 MPP_FUNCTION(7,	"uart1",	"cts"),
		 MPP_FUNCTION(8,	"led",		"clk"),
		 MPP_FUNCTION(9,	"pcie",		"rstoutn"),
		 MPP_FUNCTION(10,	"pcie0",	"clkreq")),
	MPP_MODE(53,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"ge1",		"rxd2"),
		 MPP_FUNCTION(3,	"ptp",		"clk"),
		 MPP_FUNCTION(5,	"spi1",		"csn3"),
		 MPP_FUNCTION(7,	"uart1",	"rxd"),
		 MPP_FUNCTION(8,	"led",		"stb"),
		 MPP_FUNCTION(11,	"sdio",		"led")),
	MPP_MODE(54,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"ge1",		"rxd3"),
		 MPP_FUNCTION(2,	"synce2",	"clk"),
		 MPP_FUNCTION(3,	"ptp",		"pclk_out"),
		 MPP_FUNCTION(4,	"synce1",	"clk"),
		 MPP_FUNCTION(8,	"led",		"data"),
		 MPP_FUNCTION(10,	"sdio",		"hw_rst"),
		 MPP_FUNCTION(11,	"sdio_wp",	"wr_protect")),
	MPP_MODE(55,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"ge1",		"rxctl_rxdv"),
		 MPP_FUNCTION(3,	"ptp",		"pulse"),
		 MPP_FUNCTION(10,	"sdio",		"led"),
		 MPP_FUNCTION(11,	"sdio_cd",	"card_detect")),
	MPP_MODE(56,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(4,	"tdm",		"drx"),
		 MPP_FUNCTION(5,	"au",		"i2sdo_spdifo"),
		 MPP_FUNCTION(6,	"spi0",		"clk"),
		 MPP_FUNCTION(7,	"uart1",	"rxd"),
		 MPP_FUNCTION(9,	"sata1",	"present_act"),
		 MPP_FUNCTION(14,	"sdio",		"clk")),
	MPP_MODE(57,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(2,	"mss_i2c",	"sda"),
		 MPP_FUNCTION(3,	"ptp",		"pclk_out"),
		 MPP_FUNCTION(4,	"tdm",		"intn"),
		 MPP_FUNCTION(5,	"au",		"i2sbclk"),
		 MPP_FUNCTION(6,	"spi0",		"mosi"),
		 MPP_FUNCTION(7,	"uart1",	"txd"),
		 MPP_FUNCTION(9,	"sata0",	"present_act"),
		 MPP_FUNCTION(14,	"sdio",		"cmd")),
	MPP_MODE(58,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(2,	"mss_i2c",	"sck"),
		 MPP_FUNCTION(3,	"ptp",		"clk"),
		 MPP_FUNCTION(4,	"tdm",		"rstn"),
		 MPP_FUNCTION(5,	"au",		"i2sdi"),
		 MPP_FUNCTION(6,	"spi0",		"miso"),
		 MPP_FUNCTION(7,	"uart1",	"cts"),
		 MPP_FUNCTION(8,	"led",		"clk"),
		 MPP_FUNCTION(14,	"sdio",		"d0")),
	MPP_MODE(59,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"mss_gpio7",	NULL),
		 MPP_FUNCTION(2,	"synce2",	"clk"),
		 MPP_FUNCTION(4,	"tdm",		"fsync"),
		 MPP_FUNCTION(5,	"au",		"i2slrclk"),
		 MPP_FUNCTION(6,	"spi0",		"csn0"),
		 MPP_FUNCTION(7,	"uart0",	"cts"),
		 MPP_FUNCTION(8,	"led",		"stb"),
		 MPP_FUNCTION(9,	"uart1",	"txd"),
		 MPP_FUNCTION(14,	"sdio",		"d1")),
	MPP_MODE(60,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"mss_gpio6",	NULL),
		 MPP_FUNCTION(3,	"ptp",		"pulse"),
		 MPP_FUNCTION(4,	"tdm",		"dtx"),
		 MPP_FUNCTION(5,	"au",		"i2smclk"),
		 MPP_FUNCTION(6,	"spi0",		"csn1"),
		 MPP_FUNCTION(7,	"uart0",	"rts"),
		 MPP_FUNCTION(8,	"led",		"data"),
		 MPP_FUNCTION(9,	"uart1",	"rxd"),
		 MPP_FUNCTION(14,	"sdio",		"d2")),
	MPP_MODE(61,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"mss_gpio5",	NULL),
		 MPP_FUNCTION(3,	"ptp",		"clk"),
		 MPP_FUNCTION(4,	"tdm",		"pclk"),
		 MPP_FUNCTION(5,	"au",		"i2sextclk"),
		 MPP_FUNCTION(6,	"spi0",		"csn2"),
		 MPP_FUNCTION(7,	"uart0",	"txd"),
		 MPP_FUNCTION(8,	"uart2",	"txd"),
		 MPP_FUNCTION(9,	"sata1",	"present_act"),
		 MPP_FUNCTION(10,	"ge",		"mdio"),
		 MPP_FUNCTION(14,	"sdio",		"d3")),
	MPP_MODE(62,
		 MPP_FUNCTION(0,	"gpio",		NULL),
		 MPP_FUNCTION(1,	"mss_gpio4",	NULL),
		 MPP_FUNCTION(2,	"synce1",	"clk"),
		 MPP_FUNCTION(3,	"ptp",		"pclk_out"),
		 MPP_FUNCTION(5,	"sata1",	"present_act"),
		 MPP_FUNCTION(6,	"spi0",		"csn3"),
		 MPP_FUNCTION(7,	"uart0",	"rxd"),
		 MPP_FUNCTION(8,	"uart2",	"rxd"),
		 MPP_FUNCTION(9,	"sata0",	"present_act"),
		 MPP_FUNCTION(10,	"ge",		"mdc"),
		 MPP_FUNCTION(14,	"sdio",		"ds")),
};

static const struct of_device_id armada_cp110_pinctrl_of_match[] = {
	{
		.compatible	= "marvell,armada-7k-pinctrl",
		.data		= (void *) V_ARMADA_7K,
	},
	{
		.compatible	= "marvell,armada-8k-cpm-pinctrl",
		.data		= (void *) V_ARMADA_8K_CPM,
	},
	{
		.compatible	= "marvell,armada-8k-cps-pinctrl",
		.data		= (void *) V_ARMADA_8K_CPS,
	},
	{
		.compatible	= "marvell,cp115-standalone-pinctrl",
		.data		= (void *) V_CP115_STANDALONE,
	},
	{ },
};

static const struct mvebu_mpp_ctrl armada_cp110_mpp_controls[] = {
	MPP_FUNC_CTRL(0, 62, NULL, mvebu_regmap_mpp_ctrl),
};

static void mvebu_pinctrl_assign_variant(struct mvebu_mpp_mode *m,
					 u8 variant)
{
	struct mvebu_mpp_ctrl_setting *s;

	for (s = m->settings ; s->name ; s++)
		s->variant = variant;
}

static int armada_cp110_pinctrl_probe(struct platform_device *pdev)
{
	struct mvebu_pinctrl_soc_info *soc;
	int i;

	if (!pdev->dev.parent)
		return -ENODEV;

	soc = devm_kzalloc(&pdev->dev,
			   sizeof(struct mvebu_pinctrl_soc_info), GFP_KERNEL);
	if (!soc)
		return -ENOMEM;

	soc->variant = (unsigned long)device_get_match_data(&pdev->dev) & 0xff;
	soc->controls = armada_cp110_mpp_controls;
	soc->ncontrols = ARRAY_SIZE(armada_cp110_mpp_controls);
	soc->modes = armada_cp110_mpp_modes;
	soc->nmodes = ARRAY_SIZE(armada_cp110_mpp_modes);
	for (i = 0; i < ARRAY_SIZE(armada_cp110_mpp_modes); i++) {
		struct mvebu_mpp_mode *m = &armada_cp110_mpp_modes[i];

		switch (i) {
		case 0 ... 31:
			mvebu_pinctrl_assign_variant(m, (V_ARMADA_7K_8K_CPS |
							 V_CP115_STANDALONE));
			break;
		case 32 ... 38:
			mvebu_pinctrl_assign_variant(m, (V_ARMADA_7K_8K_CPM |
							 V_CP115_STANDALONE));
			break;
		case 39 ... 43:
			mvebu_pinctrl_assign_variant(m, (V_ARMADA_8K_CPM |
							 V_CP115_STANDALONE));
			break;
		case 44 ... 62:
			mvebu_pinctrl_assign_variant(m, (V_ARMADA_7K_8K_CPM |
							 V_CP115_STANDALONE));
			break;
		}
	}
	pdev->dev.platform_data = soc;

	return mvebu_pinctrl_simple_regmap_probe(pdev, pdev->dev.parent, 0);
}

static struct platform_driver armada_cp110_pinctrl_driver = {
	.driver = {
		.name = "armada-cp110-pinctrl",
		.of_match_table = of_match_ptr(armada_cp110_pinctrl_of_match),
	},
	.probe = armada_cp110_pinctrl_probe,
};

builtin_platform_driver(armada_cp110_pinctrl_driver);
