// SPDX-License-Identifier: GPL-2.0
/*
 * Intel Moorefield SoC pinctrl driver
 *
 * Copyright (C) 2022, Intel Corporation
 * Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
 */

#include <linux/array_size.h>
#include <linux/init.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/types.h>

#include <linux/pinctrl/pinctrl.h>

#include "pinctrl-tangier.h"

static const struct pinctrl_pin_desc mofld_pins[] = {
	/* ULPI (13 pins) */
	PINCTRL_PIN(0, "GP101_ULPI_CLK"),
	PINCTRL_PIN(1, "GP136_ULPI_D0"),
	PINCTRL_PIN(2, "GP143_ULPI_D1"),
	PINCTRL_PIN(3, "GP144_ULPI_D2"),
	PINCTRL_PIN(4, "GP145_ULPI_D3"),
	PINCTRL_PIN(5, "GP146_ULPI_D4"),
	PINCTRL_PIN(6, "GP147_ULPI_D5"),
	PINCTRL_PIN(7, "GP148_ULPI_D6"),
	PINCTRL_PIN(8, "GP149_ULPI_D7"),
	PINCTRL_PIN(9, "ULPI_DIR"),
	PINCTRL_PIN(10, "ULPI_NXT"),
	PINCTRL_PIN(11, "ULPI_REFCLK"),
	PINCTRL_PIN(12, "ULPI_STP"),
	/* eMMC (12 pins) */
	PINCTRL_PIN(13, "EMMC_CLK"),
	PINCTRL_PIN(14, "EMMC_CMD"),
	PINCTRL_PIN(15, "EMMC_D0"),
	PINCTRL_PIN(16, "EMMC_D1"),
	PINCTRL_PIN(17, "EMMC_D2"),
	PINCTRL_PIN(18, "EMMC_D3"),
	PINCTRL_PIN(19, "EMMC_D4"),
	PINCTRL_PIN(20, "EMMC_D5"),
	PINCTRL_PIN(21, "EMMC_D6"),
	PINCTRL_PIN(22, "EMMC_D7"),
	PINCTRL_PIN(23, "EMMC_RST_N"),
	PINCTRL_PIN(24, "EMMC_RCLK"),
	/* SDIO (20 pins) */
	PINCTRL_PIN(25, "GP77_SD_CD"),
	PINCTRL_PIN(26, "GP78_SD_CLK"),
	PINCTRL_PIN(27, "GP79_SD_CMD"),
	PINCTRL_PIN(28, "GP80_SD_D0"),
	PINCTRL_PIN(29, "GP81_SD_D1"),
	PINCTRL_PIN(30, "GP82_SD_D2"),
	PINCTRL_PIN(31, "GP83_SD_D3"),
	PINCTRL_PIN(32, "GP84_SD_LS_CLK_FB"),
	PINCTRL_PIN(33, "GP85_SD_LS_CMD_DIR"),
	PINCTRL_PIN(34, "GP86_SD_LS_D_DIR"),
	PINCTRL_PIN(35, "GP88_SD_LS_SEL"),
	PINCTRL_PIN(36, "GP87_SD_PD"),
	PINCTRL_PIN(37, "GP89_SD_WP"),
	PINCTRL_PIN(38, "GP90_SDIO_CLK"),
	PINCTRL_PIN(39, "GP91_SDIO_CMD"),
	PINCTRL_PIN(40, "GP92_SDIO_D0"),
	PINCTRL_PIN(41, "GP93_SDIO_D1"),
	PINCTRL_PIN(42, "GP94_SDIO_D2"),
	PINCTRL_PIN(43, "GP95_SDIO_D3"),
	PINCTRL_PIN(44, "GP96_SDIO_PD"),
	/* HSI (8 pins) */
	PINCTRL_PIN(45, "HSI_ACDATA"),
	PINCTRL_PIN(46, "HSI_ACFLAG"),
	PINCTRL_PIN(47, "HSI_ACREADY"),
	PINCTRL_PIN(48, "HSI_ACWAKE"),
	PINCTRL_PIN(49, "HSI_CADATA"),
	PINCTRL_PIN(50, "HSI_CAFLAG"),
	PINCTRL_PIN(51, "HSI_CAREADY"),
	PINCTRL_PIN(52, "HSI_CAWAKE"),
	/* SSP Audio (14 pins) */
	PINCTRL_PIN(53, "GP70"),
	PINCTRL_PIN(54, "GP71"),
	PINCTRL_PIN(55, "GP32_I2S_0_CLK"),
	PINCTRL_PIN(56, "GP33_I2S_0_FS"),
	PINCTRL_PIN(57, "GP34_I2S_0_RXD"),
	PINCTRL_PIN(58, "GP35_I2S_0_TXD"),
	PINCTRL_PIN(59, "GP36_I2S_1_CLK"),
	PINCTRL_PIN(60, "GP37_I2S_1_FS"),
	PINCTRL_PIN(61, "GP38_I2S_1_RXD"),
	PINCTRL_PIN(62, "GP39_I2S_1_TXD"),
	PINCTRL_PIN(63, "GP40_I2S_2_CLK"),
	PINCTRL_PIN(64, "GP41_I2S_2_FS"),
	PINCTRL_PIN(65, "GP42_I2S_2_RXD"),
	PINCTRL_PIN(66, "GP43_I2S_2_TXD"),
	/* GP SSP (22 pins) */
	PINCTRL_PIN(67, "GP120_SPI_0_CLK"),
	PINCTRL_PIN(68, "GP121_SPI_0_SS"),
	PINCTRL_PIN(69, "GP122_SPI_0_RXD"),
	PINCTRL_PIN(70, "GP123_SPI_0_TXD"),
	PINCTRL_PIN(71, "GP102_SPI_1_CLK"),
	PINCTRL_PIN(72, "GP103_SPI_1_SS0"),
	PINCTRL_PIN(73, "GP104_SPI_1_SS1"),
	PINCTRL_PIN(74, "GP105_SPI_1_SS2"),
	PINCTRL_PIN(75, "GP106_SPI_1_SS3"),
	PINCTRL_PIN(76, "GP107_SPI_1_RXD"),
	PINCTRL_PIN(77, "GP108_SPI_1_TXD"),
	PINCTRL_PIN(78, "GP109_SPI_2_CLK"),
	PINCTRL_PIN(79, "GP110_SPI_2_SS0"),
	PINCTRL_PIN(80, "GP111_SPI_2_SS1"),
	PINCTRL_PIN(81, "GP112_SPI_2_SS2"),
	PINCTRL_PIN(82, "GP113_SPI_2_SS3"),
	PINCTRL_PIN(83, "GP114_SPI_2_RXD"),
	PINCTRL_PIN(84, "GP115_SPI_2_TXD"),
	PINCTRL_PIN(85, "GP116_SPI_3_CLK"),
	PINCTRL_PIN(86, "GP117_SPI_3_SS"),
	PINCTRL_PIN(87, "GP118_SPI_3_RXD"),
	PINCTRL_PIN(88, "GP119_SPI_3_TXD"),
	/* I2C (20 pins) */
	PINCTRL_PIN(89, "I2C_0_SCL"),
	PINCTRL_PIN(90, "I2C_0_SDA"),
	PINCTRL_PIN(91, "GP19_I2C_1_SCL"),
	PINCTRL_PIN(92, "GP20_I2C_1_SDA"),
	PINCTRL_PIN(93, "GP21_I2C_2_SCL"),
	PINCTRL_PIN(94, "GP22_I2C_2_SDA"),
	PINCTRL_PIN(95, "GP17_I2C_3_SCL_HDMI"),
	PINCTRL_PIN(96, "GP18_I2C_3_SDA_HDMI"),
	PINCTRL_PIN(97, "GP23_I2C_4_SCL"),
	PINCTRL_PIN(98, "GP24_I2C_4_SDA"),
	PINCTRL_PIN(99, "GP25_I2C_5_SCL"),
	PINCTRL_PIN(100, "GP26_I2C_5_SDA"),
	PINCTRL_PIN(101, "GP27_I2C_6_SCL"),
	PINCTRL_PIN(102, "GP28_I2C_6_SDA"),
	PINCTRL_PIN(103, "GP29_I2C_7_SCL"),
	PINCTRL_PIN(104, "GP30_I2C_7_SDA"),
	PINCTRL_PIN(105, "I2C_8_SCL"),
	PINCTRL_PIN(106, "I2C_8_SDA"),
	PINCTRL_PIN(107, "I2C_9_SCL"),
	PINCTRL_PIN(108, "I2C_9_SDA"),
	/* UART (23 pins) */
	PINCTRL_PIN(109, "GP124_UART_0_CTS"),
	PINCTRL_PIN(110, "GP125_UART_0_RTS"),
	PINCTRL_PIN(111, "GP126_UART_0_RX"),
	PINCTRL_PIN(112, "GP127_UART_0_TX"),
	PINCTRL_PIN(113, "GP128_UART_1_CTS"),
	PINCTRL_PIN(114, "GP129_UART_1_RTS"),
	PINCTRL_PIN(115, "GP130_UART_1_RX"),
	PINCTRL_PIN(116, "GP131_UART_1_TX"),
	PINCTRL_PIN(117, "GP132_UART_2_CTS"),
	PINCTRL_PIN(118, "GP133_UART_2_RTS"),
	PINCTRL_PIN(119, "GP134_UART_2_RX"),
	PINCTRL_PIN(120, "GP135_UART_2_TX"),
	PINCTRL_PIN(121, "GP97"),
	PINCTRL_PIN(122, "GP154"),
	PINCTRL_PIN(123, "GP155"),
	PINCTRL_PIN(124, "GP156"),
	PINCTRL_PIN(125, "GP157"),
	PINCTRL_PIN(126, "GP158"),
	PINCTRL_PIN(127, "GP159"),
	PINCTRL_PIN(128, "GP160"),
	PINCTRL_PIN(129, "GP161"),
	PINCTRL_PIN(130, "GP12_PWM0"),
	PINCTRL_PIN(131, "GP13_PWM1"),
	/* GPIO South (20 pins) */
	PINCTRL_PIN(132, "GP176"),
	PINCTRL_PIN(133, "GP177"),
	PINCTRL_PIN(134, "GP178"),
	PINCTRL_PIN(135, "GP179"),
	PINCTRL_PIN(136, "GP180"),
	PINCTRL_PIN(137, "GP181"),
	PINCTRL_PIN(138, "GP182_PWM2"),
	PINCTRL_PIN(139, "GP183_PWM3"),
	PINCTRL_PIN(140, "GP184"),
	PINCTRL_PIN(141, "GP185"),
	PINCTRL_PIN(142, "GP186"),
	PINCTRL_PIN(143, "GP187"),
	PINCTRL_PIN(144, "GP188"),
	PINCTRL_PIN(145, "GP189"),
	PINCTRL_PIN(146, "GP190"),
	PINCTRL_PIN(147, "GP191"),
	PINCTRL_PIN(148, "GP14"),
	PINCTRL_PIN(149, "GP15"),
	PINCTRL_PIN(150, "GP162"),
	PINCTRL_PIN(151, "GP163"),
	/* Camera Sideband (15 pins) */
	PINCTRL_PIN(152, "GP0"),
	PINCTRL_PIN(153, "GP1"),
	PINCTRL_PIN(154, "GP2"),
	PINCTRL_PIN(155, "GP3"),
	PINCTRL_PIN(156, "GP4"),
	PINCTRL_PIN(157, "GP5"),
	PINCTRL_PIN(158, "GP6"),
	PINCTRL_PIN(159, "GP7"),
	PINCTRL_PIN(160, "GP8"),
	PINCTRL_PIN(161, "GP9"),
	PINCTRL_PIN(162, "GP10"),
	PINCTRL_PIN(163, "GP11"),
	PINCTRL_PIN(164, "GP16_HDMI_HPD"),
	PINCTRL_PIN(165, "GP68_DSI_A_TE"),
	PINCTRL_PIN(166, "GP69_DSI_C_TE"),
	/* Clock (14 pins) */
	PINCTRL_PIN(167, "GP137"),
	PINCTRL_PIN(168, "GP138"),
	PINCTRL_PIN(169, "GP139"),
	PINCTRL_PIN(170, "GP140"),
	PINCTRL_PIN(171, "GP141"),
	PINCTRL_PIN(172, "GP142"),
	PINCTRL_PIN(173, "GP98"),
	PINCTRL_PIN(174, "OSC_CLK_CTRL0"),
	PINCTRL_PIN(175, "OSC_CLK_CTRL1"),
	PINCTRL_PIN(176, "OSC_CLK0"),
	PINCTRL_PIN(177, "OSC_CLK1"),
	PINCTRL_PIN(178, "OSC_CLK2"),
	PINCTRL_PIN(179, "OSC_CLK3"),
	PINCTRL_PIN(180, "OSC_CLK4"),
	/* PMIC (15 pins) */
	PINCTRL_PIN(181, "PROCHOT"),
	PINCTRL_PIN(182, "RESETOUT"),
	PINCTRL_PIN(183, "RTC_CLK"),
	PINCTRL_PIN(184, "STANDBY"),
	PINCTRL_PIN(185, "SVID_ALERT"),
	PINCTRL_PIN(186, "SVID_CLK"),
	PINCTRL_PIN(187, "SVID_D"),
	PINCTRL_PIN(188, "THERMTRIP"),
	PINCTRL_PIN(189, "PREQ"),
	PINCTRL_PIN(190, "ZQ_A"),
	PINCTRL_PIN(191, "ZQ_B"),
	PINCTRL_PIN(192, "GP64_FAST_INT0"),
	PINCTRL_PIN(193, "GP65_FAST_INT1"),
	PINCTRL_PIN(194, "GP66_FAST_INT2"),
	PINCTRL_PIN(195, "GP67_FAST_INT3"),
	/* Keyboard (20 pins) */
	PINCTRL_PIN(196, "GP44"),
	PINCTRL_PIN(197, "GP45"),
	PINCTRL_PIN(198, "GP46"),
	PINCTRL_PIN(199, "GP47"),
	PINCTRL_PIN(200, "GP48"),
	PINCTRL_PIN(201, "GP49"),
	PINCTRL_PIN(202, "GP50"),
	PINCTRL_PIN(203, "GP51"),
	PINCTRL_PIN(204, "GP52"),
	PINCTRL_PIN(205, "GP53"),
	PINCTRL_PIN(206, "GP54"),
	PINCTRL_PIN(207, "GP55"),
	PINCTRL_PIN(208, "GP56"),
	PINCTRL_PIN(209, "GP57"),
	PINCTRL_PIN(210, "GP58"),
	PINCTRL_PIN(211, "GP59"),
	PINCTRL_PIN(212, "GP60"),
	PINCTRL_PIN(213, "GP61"),
	PINCTRL_PIN(214, "GP62"),
	PINCTRL_PIN(215, "GP63"),
	/* GPIO North (13 pins) */
	PINCTRL_PIN(216, "GP164"),
	PINCTRL_PIN(217, "GP165"),
	PINCTRL_PIN(218, "GP166"),
	PINCTRL_PIN(219, "GP167"),
	PINCTRL_PIN(220, "GP168_MJTAG_TCK"),
	PINCTRL_PIN(221, "GP169_MJTAG_TDI"),
	PINCTRL_PIN(222, "GP170_MJTAG_TDO"),
	PINCTRL_PIN(223, "GP171_MJTAG_TMS"),
	PINCTRL_PIN(224, "GP172_MJTAG_TRST"),
	PINCTRL_PIN(225, "GP173"),
	PINCTRL_PIN(226, "GP174"),
	PINCTRL_PIN(227, "GP175"),
	PINCTRL_PIN(228, "GP176"),
	/* PTI (22 pins) */
	PINCTRL_PIN(229, "GP72_PTI_CLK"),
	PINCTRL_PIN(230, "GP73_PTI_D0"),
	PINCTRL_PIN(231, "GP74_PTI_D1"),
	PINCTRL_PIN(232, "GP75_PTI_D2"),
	PINCTRL_PIN(233, "GP76_PTI_D3"),
	PINCTRL_PIN(234, "GP164"),
	PINCTRL_PIN(235, "GP165"),
	PINCTRL_PIN(236, "GP166"),
	PINCTRL_PIN(237, "GP167"),
	PINCTRL_PIN(238, "GP168_MJTAG_TCK"),
	PINCTRL_PIN(239, "GP169_MJTAG_TDI"),
	PINCTRL_PIN(240, "GP170_MJTAG_TDO"),
	PINCTRL_PIN(241, "GP171_MJTAG_TMS"),
	PINCTRL_PIN(242, "GP172_MJTAG_TRST"),
	PINCTRL_PIN(243, "GP173"),
	PINCTRL_PIN(244, "GP174"),
	PINCTRL_PIN(245, "GP175"),
	PINCTRL_PIN(246, "JTAG_TCK"),
	PINCTRL_PIN(247, "JTAG_TDI"),
	PINCTRL_PIN(248, "JTAG_TDO"),
	PINCTRL_PIN(249, "JTAG_TMS"),
	PINCTRL_PIN(250, "JTAG_TRST"),
};

static const struct tng_family mofld_families[] = {
	TNG_FAMILY(0, 0, 12),
	TNG_FAMILY(1, 13, 24),
	TNG_FAMILY(2, 25, 44),
	TNG_FAMILY(3, 45, 52),
	TNG_FAMILY(4, 53, 66),
	TNG_FAMILY(5, 67, 88),
	TNG_FAMILY(6, 89, 108),
	TNG_FAMILY(7, 109, 131),
	TNG_FAMILY(8, 132, 151),
	TNG_FAMILY(9, 152, 166),
	TNG_FAMILY(10, 167, 180),
	TNG_FAMILY(11, 181, 195),
	TNG_FAMILY(12, 196, 215),
	TNG_FAMILY(13, 216, 228),
	TNG_FAMILY(14, 229, 250),
};

static const struct tng_pinctrl mofld_soc_data = {
	.pins = mofld_pins,
	.npins = ARRAY_SIZE(mofld_pins),
	.families = mofld_families,
	.nfamilies = ARRAY_SIZE(mofld_families),
};

static const struct acpi_device_id mofld_acpi_table[] = {
	{ "INTC1003", (kernel_ulong_t)&mofld_soc_data },
	{ }
};
MODULE_DEVICE_TABLE(acpi, mofld_acpi_table);

static struct platform_driver mofld_pinctrl_driver = {
	.probe = devm_tng_pinctrl_probe,
	.driver = {
		.name = "pinctrl-moorefield",
		.acpi_match_table = mofld_acpi_table,
	},
};

static int __init mofld_pinctrl_init(void)
{
	return platform_driver_register(&mofld_pinctrl_driver);
}
subsys_initcall(mofld_pinctrl_init);

static void __exit mofld_pinctrl_exit(void)
{
	platform_driver_unregister(&mofld_pinctrl_driver);
}
module_exit(mofld_pinctrl_exit);

MODULE_AUTHOR("Andy Shevchenko <andriy.shevchenko@linux.intel.com>");
MODULE_DESCRIPTION("Intel Moorefield SoC pinctrl driver");
MODULE_LICENSE("GPL v2");
MODULE_ALIAS("platform:pinctrl-moorefield");
MODULE_IMPORT_NS(PINCTRL_TANGIER);
