Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    1) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    2)  * Driver for the Gemini pin controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    3)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    4)  * Copyright (C) 2017 Linus Walleij <linus.walleij@linaro.org>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    5)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    6)  * This is a group-only pin controller.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    7)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    8) #include <linux/err.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    9) #include <linux/init.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   10) #include <linux/io.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   11) #include <linux/mfd/syscon.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   12) #include <linux/of.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   13) #include <linux/pinctrl/machine.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   14) #include <linux/pinctrl/pinctrl.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   15) #include <linux/pinctrl/pinmux.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   16) #include <linux/pinctrl/pinconf.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   17) #include <linux/pinctrl/pinconf-generic.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   18) #include <linux/platform_device.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   19) #include <linux/slab.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   20) #include <linux/regmap.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   21) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   22) #include "pinctrl-utils.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   24) #define DRIVER_NAME "pinctrl-gemini"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   26) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   27)  * struct gemini_pin_conf - information about configuring a pin
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   28)  * @pin: the pin number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   29)  * @reg: config register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   30)  * @mask: the bits affecting the configuration of the pin
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   31)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   32) struct gemini_pin_conf {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   33) 	unsigned int pin;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   34) 	u32 reg;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   35) 	u32 mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   36) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   38) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   39)  * struct gemini_pmx - state holder for the gemini pin controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   40)  * @dev: a pointer back to containing device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   41)  * @virtbase: the offset to the controller in virtual memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   42)  * @map: regmap to access registers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   43)  * @is_3512: whether the SoC/package is the 3512 variant
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   44)  * @is_3516: whether the SoC/package is the 3516 variant
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   45)  * @flash_pin: whether the flash pin (extended pins for parallel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   46)  * flash) is set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   47)  * @confs: pin config information
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   48)  * @nconfs: number of pin config information items
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   49)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   50) struct gemini_pmx {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   51) 	struct device *dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   52) 	struct pinctrl_dev *pctl;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   53) 	struct regmap *map;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   54) 	bool is_3512;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   55) 	bool is_3516;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   56) 	bool flash_pin;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   57) 	const struct gemini_pin_conf *confs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   58) 	unsigned int nconfs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   59) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   60) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   61) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   62)  * struct gemini_pin_group - describes a Gemini pin group
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   63)  * @name: the name of this specific pin group
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   64)  * @pins: an array of discrete physical pins used in this group, taken
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   65)  *	from the driver-local pin enumeration space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   66)  * @num_pins: the number of pins in this group array, i.e. the number of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   67)  *	elements in .pins so we can iterate over that array
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   68)  * @mask: bits to clear to enable this when doing pin muxing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   69)  * @value: bits to set to enable this when doing pin muxing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   70)  * @driving_mask: bitmask for the IO Pad driving register for this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   71)  *	group, if it supports altering the driving strength of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   72)  *	its lines.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   73)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   74) struct gemini_pin_group {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   75) 	const char *name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   76) 	const unsigned int *pins;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   77) 	const unsigned int num_pins;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   78) 	u32 mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   79) 	u32 value;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   80) 	u32 driving_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   81) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   82) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   83) /* Some straight-forward control registers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   84) #define GLOBAL_WORD_ID		0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   85) #define GLOBAL_STATUS		0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   86) #define GLOBAL_STATUS_FLPIN	BIT(20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   87) #define GLOBAL_IODRIVE		0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   88) #define GLOBAL_GMAC_CTRL_SKEW	0x1c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   89) #define GLOBAL_GMAC0_DATA_SKEW	0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   90) #define GLOBAL_GMAC1_DATA_SKEW	0x24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   91) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   92)  * Global Miscellaneous Control Register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   93)  * This register controls all Gemini pad/pin multiplexing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   94)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   95)  * It is a tricky register though:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   96)  * - For the bits named *_ENABLE, once you DISABLE something, it simply cannot
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   97)  *   be brought back online, so it means permanent disablement of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   98)  *   corresponding pads.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   99)  * - For the bits named *_DISABLE, once you enable something, it cannot be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  100)  *   DISABLED again. So you select a flash configuration once, and then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  101)  *   you are stuck with it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  102)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  103) #define GLOBAL_MISC_CTRL	0x30
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  104) #define GEMINI_GMAC_IOSEL_MASK	GENMASK(28, 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  105) /* Not really used */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  106) #define GEMINI_GMAC_IOSEL_GMAC0_GMII	BIT(28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  107) /* Activated with GMAC1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  108) #define GEMINI_GMAC_IOSEL_GMAC0_GMAC1_RGMII BIT(27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  109) /* This will be the default */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  110) #define GEMINI_GMAC_IOSEL_GMAC0_RGMII_GMAC1_GPIO2 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  111) #define TVC_CLK_PAD_ENABLE	BIT(20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  112) #define PCI_CLK_PAD_ENABLE	BIT(17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  113) #define LPC_CLK_PAD_ENABLE	BIT(16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  114) #define TVC_PADS_ENABLE		BIT(9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  115) #define SSP_PADS_ENABLE		BIT(8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  116) #define LCD_PADS_ENABLE		BIT(7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  117) #define LPC_PADS_ENABLE		BIT(6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  118) #define PCI_PADS_ENABLE		BIT(5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  119) #define IDE_PADS_ENABLE		BIT(4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  120) #define DRAM_PADS_POWERDOWN	BIT(3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  121) #define NAND_PADS_DISABLE	BIT(2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  122) #define PFLASH_PADS_DISABLE	BIT(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  123) #define SFLASH_PADS_DISABLE	BIT(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  124) #define PADS_MASK		(GENMASK(9, 0) | BIT(16) | BIT(17) | BIT(20) | BIT(27))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  125) #define PADS_MAXBIT		27
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  126) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  127) /* Ordered by bit index */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  128) static const char * const gemini_padgroups[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  129) 	"serial flash",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  130) 	"parallel flash",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  131) 	"NAND flash",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  132) 	"DRAM",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  133) 	"IDE",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  134) 	"PCI",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  135) 	"LPC",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  136) 	"LCD",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  137) 	"SSP",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  138) 	"TVC",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  139) 	NULL, NULL, NULL, NULL, NULL, NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  140) 	"LPC CLK",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  141) 	"PCI CLK",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  142) 	NULL, NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  143) 	"TVC CLK",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  144) 	NULL, NULL, NULL, NULL, NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  145) 	"GMAC1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  146) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  147) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  148) static const struct pinctrl_pin_desc gemini_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  149) 	/* Row A */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  150) 	PINCTRL_PIN(0, "A1 VREF CTRL"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  151) 	PINCTRL_PIN(1, "A2 VCC2IO CTRL"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  152) 	PINCTRL_PIN(2, "A3 DRAM CK"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  153) 	PINCTRL_PIN(3, "A4 DRAM CK N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  154) 	PINCTRL_PIN(4, "A5 DRAM A5"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  155) 	PINCTRL_PIN(5, "A6 DRAM CKE"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  156) 	PINCTRL_PIN(6, "A7 DRAM DQ11"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  157) 	PINCTRL_PIN(7, "A8 DRAM DQ0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  158) 	PINCTRL_PIN(8, "A9 DRAM DQ5"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  159) 	PINCTRL_PIN(9, "A10 DRAM DQ6"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  160) 	PINCTRL_PIN(10, "A11 DRAM DRAM VREF"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  161) 	PINCTRL_PIN(11, "A12 DRAM BA1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  162) 	PINCTRL_PIN(12, "A13 DRAM A2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  163) 	PINCTRL_PIN(13, "A14 PCI GNT1 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  164) 	PINCTRL_PIN(14, "A15 PCI REQ9 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  165) 	PINCTRL_PIN(15, "A16 PCI REQ2 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  166) 	PINCTRL_PIN(16, "A17 PCI REQ3 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  167) 	PINCTRL_PIN(17, "A18 PCI AD31"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  168) 	/* Row B */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  169) 	PINCTRL_PIN(18, "B1 VCCK CTRL"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  170) 	PINCTRL_PIN(19, "B2 PWR EN"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  171) 	PINCTRL_PIN(20, "B3 RTC CLKI"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  172) 	PINCTRL_PIN(21, "B4 DRAM A4"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  173) 	PINCTRL_PIN(22, "B5 DRAM A6"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  174) 	PINCTRL_PIN(23, "B6 DRAM A12"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  175) 	PINCTRL_PIN(24, "B7 DRAM DQS1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  176) 	PINCTRL_PIN(25, "B8 DRAM DQ15"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  177) 	PINCTRL_PIN(26, "B9 DRAM DQ4"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  178) 	PINCTRL_PIN(27, "B10 DRAM DQS0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  179) 	PINCTRL_PIN(28, "B11 DRAM WE N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  180) 	PINCTRL_PIN(29, "B12 DRAM A10"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  181) 	PINCTRL_PIN(30, "B13 DRAM A3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  182) 	PINCTRL_PIN(31, "B14 PCI GNT0 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  183) 	PINCTRL_PIN(32, "B15 PCI GNT3 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  184) 	PINCTRL_PIN(33, "B16 PCI REQ1 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  185) 	PINCTRL_PIN(34, "B17 PCI AD30"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  186) 	PINCTRL_PIN(35, "B18 PCI AD29"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  187) 	/* Row C */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  188) 	PINCTRL_PIN(36, "C1 CIR RST N"), /* REALLY? CIR is not in 3512... */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  189) 	PINCTRL_PIN(37, "C2 XTALI"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  190) 	PINCTRL_PIN(38, "C3 PWR BTN"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  191) 	PINCTRL_PIN(39, "C4 RTC CLKO"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  192) 	PINCTRL_PIN(40, "C5 DRAM A7"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  193) 	PINCTRL_PIN(41, "C6 DRAM A11"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  194) 	PINCTRL_PIN(42, "C7 DRAM DQ10"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  195) 	PINCTRL_PIN(43, "C8 DRAM DQ14"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  196) 	PINCTRL_PIN(44, "C9 DRAM DQ3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  197) 	PINCTRL_PIN(45, "C10 DRAM DQ7"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  198) 	PINCTRL_PIN(46, "C11 DRAM CAS N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  199) 	PINCTRL_PIN(47, "C12 DRAM A0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  200) 	PINCTRL_PIN(48, "C13 PCI INT0 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  201) 	PINCTRL_PIN(49, "C14 EXT RESET N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  202) 	PINCTRL_PIN(50, "C15 PCI GNT2 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  203) 	PINCTRL_PIN(51, "C16 PCI AD28"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  204) 	PINCTRL_PIN(52, "C17 PCI AD27"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  205) 	PINCTRL_PIN(53, "C18 PCI AD26"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  206) 	/* Row D */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  207) 	PINCTRL_PIN(54, "D1 AVCCKHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  208) 	PINCTRL_PIN(55, "D2 AGNDIOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  209) 	PINCTRL_PIN(56, "D3 XTALO"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  210) 	PINCTRL_PIN(57, "D4 AVCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  211) 	PINCTRL_PIN(58, "D5 DRAM A8"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  212) 	PINCTRL_PIN(59, "D6 DRAM A9"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  213) 	PINCTRL_PIN(60, "D7 DRAM DQ9"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  214) 	PINCTRL_PIN(61, "D8 DRAM DQ13"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  215) 	PINCTRL_PIN(62, "D9 DRAM DQ2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  216) 	PINCTRL_PIN(63, "D10 DRAM A13"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  217) 	PINCTRL_PIN(64, "D11 DRAM RAS N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  218) 	PINCTRL_PIN(65, "D12 DRAM A1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  219) 	PINCTRL_PIN(66, "D13 PCI INTC N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  220) 	PINCTRL_PIN(67, "D14 PCI CLK"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  221) 	PINCTRL_PIN(68, "D15 PCI AD25"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  222) 	PINCTRL_PIN(69, "D16 PCI AD24"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  223) 	PINCTRL_PIN(70, "D17 PCI CBE3 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  224) 	PINCTRL_PIN(71, "D18 PCI AD23"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  225) 	/* Row E */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  226) 	PINCTRL_PIN(72, "E1 AVCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  227) 	PINCTRL_PIN(73, "E2 EBG"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  228) 	PINCTRL_PIN(74, "E3 AVCC3IOHB"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  229) 	PINCTRL_PIN(75, "E4 REXT"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  230) 	PINCTRL_PIN(76, "E5 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  231) 	PINCTRL_PIN(77, "E6 DRAM DQM1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  232) 	PINCTRL_PIN(78, "E7 DRAM DQ8"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  233) 	PINCTRL_PIN(79, "E8 DRAM DQ12"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  234) 	PINCTRL_PIN(80, "E9 DRAM DQ1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  235) 	PINCTRL_PIN(81, "E10 DRAM DQM0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  236) 	PINCTRL_PIN(82, "E11 DRAM BA0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  237) 	PINCTRL_PIN(83, "E12 PCI INTA N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  238) 	PINCTRL_PIN(84, "E13 PCI INTB N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  239) 	PINCTRL_PIN(85, "E14 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  240) 	PINCTRL_PIN(86, "E15 PCI AD22"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  241) 	PINCTRL_PIN(87, "E16 PCI AD21"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  242) 	PINCTRL_PIN(88, "E17 PCI AD20"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  243) 	PINCTRL_PIN(89, "E18 PCI AD19"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  244) 	/* Row F */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  245) 	PINCTRL_PIN(90, "F1 SATA0 RXDP"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  246) 	PINCTRL_PIN(91, "F2 SATA0 RXDN"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  247) 	PINCTRL_PIN(92, "F3 AGNDK 0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  248) 	PINCTRL_PIN(93, "F4 AVCC3 S"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  249) 	PINCTRL_PIN(94, "F5 AVCCK P"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  250) 	PINCTRL_PIN(95, "F6 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  251) 	PINCTRL_PIN(96, "F7 VCC2IOHA 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  252) 	PINCTRL_PIN(97, "F8 VCC2IOHA 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  253) 	PINCTRL_PIN(98, "F9 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  254) 	PINCTRL_PIN(99, "F10 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  255) 	PINCTRL_PIN(100, "F11 VCC2IOHA 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  256) 	PINCTRL_PIN(101, "F12 VCC2IOHA 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  257) 	PINCTRL_PIN(102, "F13 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  258) 	PINCTRL_PIN(103, "F14 PCI AD18"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  259) 	PINCTRL_PIN(104, "F15 PCI AD17"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  260) 	PINCTRL_PIN(105, "F16 PCI AD16"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  261) 	PINCTRL_PIN(106, "F17 PCI CBE2 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  262) 	PINCTRL_PIN(107, "F18 PCI FRAME N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  263) 	/* Row G */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  264) 	PINCTRL_PIN(108, "G1 SATA0 TXDP"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  265) 	PINCTRL_PIN(109, "G2 SATA0 TXDN"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  266) 	PINCTRL_PIN(110, "G3 AGNDK 1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  267) 	PINCTRL_PIN(111, "G4 AVCCK 0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  268) 	PINCTRL_PIN(112, "G5 TEST CLKOUT"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  269) 	PINCTRL_PIN(113, "G6 AGND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  270) 	PINCTRL_PIN(114, "G7 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  271) 	PINCTRL_PIN(115, "G8 VCC2IOHA 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  272) 	PINCTRL_PIN(116, "G9 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  273) 	PINCTRL_PIN(117, "G10 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  274) 	PINCTRL_PIN(118, "G11 VCC2IOHA 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  275) 	PINCTRL_PIN(119, "G12 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  276) 	PINCTRL_PIN(120, "G13 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  277) 	PINCTRL_PIN(121, "G14 PCI IRDY N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  278) 	PINCTRL_PIN(122, "G15 PCI TRDY N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  279) 	PINCTRL_PIN(123, "G16 PCI DEVSEL N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  280) 	PINCTRL_PIN(124, "G17 PCI STOP N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  281) 	PINCTRL_PIN(125, "G18 PCI PAR"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  282) 	/* Row H */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  283) 	PINCTRL_PIN(126, "H1 SATA1 TXDP"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  284) 	PINCTRL_PIN(127, "H2 SATA1 TXDN"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  285) 	PINCTRL_PIN(128, "H3 AGNDK 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  286) 	PINCTRL_PIN(129, "H4 AVCCK 1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  287) 	PINCTRL_PIN(130, "H5 AVCCK S"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  288) 	PINCTRL_PIN(131, "H6 AVCCKHB"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  289) 	PINCTRL_PIN(132, "H7 AGND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  290) 	PINCTRL_PIN(133, "H8 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  291) 	PINCTRL_PIN(134, "H9 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  292) 	PINCTRL_PIN(135, "H10 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  293) 	PINCTRL_PIN(136, "H11 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  294) 	PINCTRL_PIN(137, "H12 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  295) 	PINCTRL_PIN(138, "H13 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  296) 	PINCTRL_PIN(139, "H14 PCI CBE1 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  297) 	PINCTRL_PIN(140, "H15 PCI AD15"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  298) 	PINCTRL_PIN(141, "H16 PCI AD14"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  299) 	PINCTRL_PIN(142, "H17 PCI AD13"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  300) 	PINCTRL_PIN(143, "H18 PCI AD12"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  301) 	/* Row J (for some reason I is skipped) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  302) 	PINCTRL_PIN(144, "J1 SATA1 RXDP"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  303) 	PINCTRL_PIN(145, "J2 SATA1 RXDN"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  304) 	PINCTRL_PIN(146, "J3 AGNDK 3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  305) 	PINCTRL_PIN(147, "J4 AVCCK 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  306) 	PINCTRL_PIN(148, "J5 IDE DA1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  307) 	PINCTRL_PIN(149, "J6 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  308) 	PINCTRL_PIN(150, "J7 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  309) 	PINCTRL_PIN(151, "J8 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  310) 	PINCTRL_PIN(152, "J9 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  311) 	PINCTRL_PIN(153, "J10 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  312) 	PINCTRL_PIN(154, "J11 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  313) 	PINCTRL_PIN(155, "J12 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  314) 	PINCTRL_PIN(156, "J13 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  315) 	PINCTRL_PIN(157, "J14 PCI AD11"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  316) 	PINCTRL_PIN(158, "J15 PCI AD10"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  317) 	PINCTRL_PIN(159, "J16 PCI AD9"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  318) 	PINCTRL_PIN(160, "J17 PCI AD8"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  319) 	PINCTRL_PIN(161, "J18 PCI CBE0 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  320) 	/* Row K */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  321) 	PINCTRL_PIN(162, "K1 IDE CS1 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  322) 	PINCTRL_PIN(163, "K2 IDE CS0 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  323) 	PINCTRL_PIN(164, "K3 AVCCK 3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  324) 	PINCTRL_PIN(165, "K4 IDE DA2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  325) 	PINCTRL_PIN(166, "K5 IDE DA0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  326) 	PINCTRL_PIN(167, "K6 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  327) 	PINCTRL_PIN(168, "K7 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  328) 	PINCTRL_PIN(169, "K8 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  329) 	PINCTRL_PIN(170, "K9 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  330) 	PINCTRL_PIN(171, "K10 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  331) 	PINCTRL_PIN(172, "K11 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  332) 	PINCTRL_PIN(173, "K12 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  333) 	PINCTRL_PIN(174, "K13 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  334) 	PINCTRL_PIN(175, "K14 PCI AD3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  335) 	PINCTRL_PIN(176, "K15 PCI AD4"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  336) 	PINCTRL_PIN(177, "K16 PCI AD5"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  337) 	PINCTRL_PIN(178, "K17 PCI AD6"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  338) 	PINCTRL_PIN(179, "K18 PCI AD7"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  339) 	/* Row L */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  340) 	PINCTRL_PIN(180, "L1 IDE INTRQ"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  341) 	PINCTRL_PIN(181, "L2 IDE DMACK N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  342) 	PINCTRL_PIN(182, "L3 IDE IORDY"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  343) 	PINCTRL_PIN(183, "L4 IDE DIOR N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  344) 	PINCTRL_PIN(184, "L5 IDE DIOW N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  345) 	PINCTRL_PIN(185, "L6 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  346) 	PINCTRL_PIN(186, "L7 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  347) 	PINCTRL_PIN(187, "L8 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  348) 	PINCTRL_PIN(188, "L9 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  349) 	PINCTRL_PIN(189, "L10 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  350) 	PINCTRL_PIN(190, "L11 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  351) 	PINCTRL_PIN(191, "L12 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  352) 	PINCTRL_PIN(192, "L13 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  353) 	PINCTRL_PIN(193, "L14 GPIO0 30"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  354) 	PINCTRL_PIN(194, "L15 GPIO0 31"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  355) 	PINCTRL_PIN(195, "L16 PCI AD0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  356) 	PINCTRL_PIN(196, "L17 PCI AD1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  357) 	PINCTRL_PIN(197, "L18 PCI AD2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  358) 	/* Row M */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  359) 	PINCTRL_PIN(198, "M1 IDE DMARQ"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  360) 	PINCTRL_PIN(199, "M2 IDE DD15"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  361) 	PINCTRL_PIN(200, "M3 IDE DD0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  362) 	PINCTRL_PIN(201, "M4 IDE DD14"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  363) 	PINCTRL_PIN(202, "M5 IDE DD1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  364) 	PINCTRL_PIN(203, "M6 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  365) 	PINCTRL_PIN(204, "M7 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  366) 	PINCTRL_PIN(205, "M8 VCC2IOHA 1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  367) 	PINCTRL_PIN(206, "M9 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  368) 	PINCTRL_PIN(207, "M10 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  369) 	PINCTRL_PIN(208, "M11 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  370) 	PINCTRL_PIN(209, "M12 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  371) 	PINCTRL_PIN(210, "M13 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  372) 	PINCTRL_PIN(211, "M14 GPIO0 25"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  373) 	PINCTRL_PIN(212, "M15 GPIO0 26"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  374) 	PINCTRL_PIN(213, "M16 GPIO0 27"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  375) 	PINCTRL_PIN(214, "M17 GPIO0 28"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  376) 	PINCTRL_PIN(215, "M18 GPIO0 29"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  377) 	/* Row N */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  378) 	PINCTRL_PIN(216, "N1 IDE DD13"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  379) 	PINCTRL_PIN(217, "N2 IDE DD2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  380) 	PINCTRL_PIN(218, "N3 IDE DD12"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  381) 	PINCTRL_PIN(219, "N4 IDE DD3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  382) 	PINCTRL_PIN(220, "N5 IDE DD11"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  383) 	PINCTRL_PIN(221, "N6 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  384) 	PINCTRL_PIN(222, "N7 VCC2IOHA 1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  385) 	PINCTRL_PIN(223, "N8 VCC2IOHA 1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  386) 	PINCTRL_PIN(224, "N9 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  387) 	PINCTRL_PIN(225, "N10 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  388) 	PINCTRL_PIN(226, "N11 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  389) 	PINCTRL_PIN(227, "N12 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  390) 	PINCTRL_PIN(228, "N13 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  391) 	PINCTRL_PIN(229, "N14 GPIO0 20"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  392) 	PINCTRL_PIN(230, "N15 GPIO0 21"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  393) 	PINCTRL_PIN(231, "N16 GPIO0 22"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  394) 	PINCTRL_PIN(232, "N17 GPIO0 23"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  395) 	PINCTRL_PIN(233, "N18 GPIO0 24"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  396) 	/* Row P (for some reason O is skipped) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  397) 	PINCTRL_PIN(234, "P1 IDE DD4"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  398) 	PINCTRL_PIN(235, "P2 IDE DD10"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  399) 	PINCTRL_PIN(236, "P3 IDE DD5"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  400) 	PINCTRL_PIN(237, "P4 IDE DD9"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  401) 	PINCTRL_PIN(238, "P5 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  402) 	PINCTRL_PIN(239, "P6 USB XSCO"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  403) 	PINCTRL_PIN(240, "P7 GMAC0 TXD3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  404) 	PINCTRL_PIN(241, "P8 GMAC0 TXEN"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  405) 	PINCTRL_PIN(242, "P9 GMAC0 RXD2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  406) 	PINCTRL_PIN(243, "P10 GMAC1 TXC"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  407) 	PINCTRL_PIN(244, "P11 GMAC1 RXD1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  408) 	PINCTRL_PIN(245, "P12 MODE SEL 1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  409) 	PINCTRL_PIN(246, "P13 GPIO1 28"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  410) 	PINCTRL_PIN(247, "P14 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  411) 	PINCTRL_PIN(248, "P15 GPIO0 5"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  412) 	PINCTRL_PIN(249, "P16 GPIO0 17"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  413) 	PINCTRL_PIN(250, "P17 GPIO0 18"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  414) 	PINCTRL_PIN(251, "P18 GPIO0 19"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  415) 	/* Row R (for some reason Q us skipped) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  416) 	PINCTRL_PIN(252, "R1 IDE DD6"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  417) 	PINCTRL_PIN(253, "R2 IDE DD8"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  418) 	PINCTRL_PIN(254, "R3 IDE DD7"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  419) 	PINCTRL_PIN(255, "R4 IDE RESET N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  420) 	PINCTRL_PIN(256, "R5 ICE0 DBGACK"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  421) 	PINCTRL_PIN(257, "R6 USB XSCI"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  422) 	PINCTRL_PIN(258, "R7 GMAC0 TXD2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  423) 	PINCTRL_PIN(259, "R8 GMAC0 RXDV"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  424) 	PINCTRL_PIN(260, "R9 GMAC0 RXD3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  425) 	PINCTRL_PIN(261, "R10 GMAC1 TXD0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  426) 	PINCTRL_PIN(262, "R11 GMAC1 RXD0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  427) 	PINCTRL_PIN(263, "R12 MODE SEL 0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  428) 	PINCTRL_PIN(264, "R13 MODE SEL 3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  429) 	PINCTRL_PIN(265, "R14 GPIO0 0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  430) 	PINCTRL_PIN(266, "R15 GPIO0 4"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  431) 	PINCTRL_PIN(267, "R16 GPIO0 9"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  432) 	PINCTRL_PIN(268, "R17 GPIO0 15"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  433) 	PINCTRL_PIN(269, "R18 GPIO0 16"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  434) 	/* Row T (for some reason S is skipped) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  435) 	PINCTRL_PIN(270, "T1 ICE0 DBGRQ"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  436) 	PINCTRL_PIN(271, "T2 ICE0 IDO"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  437) 	PINCTRL_PIN(272, "T3 ICE0 ICK"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  438) 	PINCTRL_PIN(273, "T4 ICE0 IMS"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  439) 	PINCTRL_PIN(274, "T5 ICE0 IDI"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  440) 	PINCTRL_PIN(275, "T6 USB RREF"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  441) 	PINCTRL_PIN(276, "T7 GMAC0 TXD1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  442) 	PINCTRL_PIN(277, "T8 GMAC0 RXC"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  443) 	PINCTRL_PIN(278, "T9 GMAC0 CRS"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  444) 	PINCTRL_PIN(279, "T10 GMAC1 TXD1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  445) 	PINCTRL_PIN(280, "T11 GMAC1 RXC"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  446) 	PINCTRL_PIN(281, "T12 GMAC1 CRS"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  447) 	PINCTRL_PIN(282, "T13 EXT CLK"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  448) 	PINCTRL_PIN(283, "T14 GPIO1 31"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  449) 	PINCTRL_PIN(284, "T15 GPIO0 3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  450) 	PINCTRL_PIN(285, "T16 GPIO0 8"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  451) 	PINCTRL_PIN(286, "T17 GPIO0 12"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  452) 	PINCTRL_PIN(287, "T18 GPIO0 14"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  453) 	/* Row U */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  454) 	PINCTRL_PIN(288, "U1 ICE0 IRST N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  455) 	PINCTRL_PIN(289, "U2 USB0 VCCHSRT"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  456) 	PINCTRL_PIN(290, "U3 USB0 DP"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  457) 	PINCTRL_PIN(291, "U4 USB VCCA U20"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  458) 	PINCTRL_PIN(292, "U5 USB1 DP"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  459) 	PINCTRL_PIN(293, "U6 USB1 GNDHSRT 1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  460) 	PINCTRL_PIN(294, "U7 GMAC0 TXD0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  461) 	PINCTRL_PIN(295, "U8 GMAC0 RXD0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  462) 	PINCTRL_PIN(296, "U9 GMAC1 COL"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  463) 	PINCTRL_PIN(297, "U10 GMAC1 TXD2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  464) 	PINCTRL_PIN(298, "U11 GMAC1 RXDV"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  465) 	PINCTRL_PIN(299, "U12 GMAC1 RXD3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  466) 	PINCTRL_PIN(300, "U13 MODE SEL 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  467) 	PINCTRL_PIN(301, "U14 GPIO1 30"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  468) 	PINCTRL_PIN(302, "U15 GPIO0 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  469) 	PINCTRL_PIN(303, "U16 GPIO0 7"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  470) 	PINCTRL_PIN(304, "U17 GPIO0 11"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  471) 	PINCTRL_PIN(305, "U18 GPIO0 13"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  472) 	/* Row V */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  473) 	PINCTRL_PIN(306, "V1 USB0 GNDHSRT"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  474) 	PINCTRL_PIN(307, "V2 USB0 DM"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  475) 	PINCTRL_PIN(308, "V3 USB GNDA U20"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  476) 	PINCTRL_PIN(309, "V4 USB1 DM"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  477) 	PINCTRL_PIN(310, "V5 USB1 VCCHSRT1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  478) 	PINCTRL_PIN(311, "V6 GMAC0 COL"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  479) 	PINCTRL_PIN(312, "V7 GMAC0 TXC"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  480) 	PINCTRL_PIN(313, "V8 GMAC0 RXD1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  481) 	PINCTRL_PIN(314, "V9 REF CLK"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  482) 	PINCTRL_PIN(315, "V10 GMAC1 TXD3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  483) 	PINCTRL_PIN(316, "V11 GMAC1 TXEN"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  484) 	PINCTRL_PIN(317, "V12 GMAC1 RXD2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  485) 	PINCTRL_PIN(318, "V13 M30 CLK"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  486) 	PINCTRL_PIN(319, "V14 GPIO1 29"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  487) 	PINCTRL_PIN(320, "V15 GPIO0 1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  488) 	PINCTRL_PIN(321, "V16 GPIO0 6"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  489) 	PINCTRL_PIN(322, "V17 GPIO0 10"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  490) 	PINCTRL_PIN(323, "V18 SYS RESET N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  491) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  492) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  493) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  494) /* Digital ground */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  495) static const unsigned int gnd_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  496) 	76, 85, 95, 102, 114, 119, 133, 134, 135, 136, 151, 152, 153, 154, 169,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  497) 	170, 171, 172, 187, 188, 189, 190, 204, 209, 221, 228, 238, 247
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  498) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  499) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  500) static const unsigned int dram_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  501) 	2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 21, 22, 23, 24, 25, 26, 27, 28, 29,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  502) 	30, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 64, 65, 77,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  503) 	78, 79, 80, 81, 82
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  504) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  505) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  506) static const unsigned int rtc_3512_pins[] = { 57, 20, 39 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  507) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  508) static const unsigned int power_3512_pins[] = { 19, 38, 36, 55, 37, 56, 54, 72 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  509) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  510) static const unsigned int system_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  511) 	318, 264, 300, 245, 263, 282, 314, 323, 49,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  512) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  513) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  514) static const unsigned int vcontrol_3512_pins[] = { 18, 0, 1 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  515) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  516) static const unsigned int ice_3512_pins[] = { 256, 270, 271, 272, 273, 274, 288 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  517) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  518) static const unsigned int ide_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  519) 	162, 163, 165, 166, 148, 180, 181, 182, 183, 184, 198, 199, 200, 201, 202,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  520) 	216, 217, 218, 219, 220, 234, 235, 236, 237, 252, 253, 254, 255
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  521) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  522) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  523) static const unsigned int sata_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  524) 	75, 74, 73, 93, 94, 131, 112, 130, 92, 91, 90, 111, 110, 109, 108, 129,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  525) 	128, 127, 126, 147, 146, 145, 144, 164
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  526) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  527) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  528) static const unsigned int usb_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  529) 	306, 289, 307, 290, 239, 257, 275, 308, 291, 309, 292, 310, 293
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  530) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  531) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  532) /* GMII, ethernet pins */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  533) static const unsigned int gmii_gmac0_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  534) 	240, 241, 242, 258, 259, 260, 276, 277, 278, 294, 295, 311, 312, 313
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  535) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  536) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  537) static const unsigned int gmii_gmac1_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  538) 	243, 244, 261, 262, 279, 280, 281, 296, 297, 298, 299, 315, 316, 317
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  539) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  540) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  541) static const unsigned int pci_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  542) 	13, 14, 15, 16, 17, 31, 32, 33, 34, 35, 48, 50, 51, 52, 53, 66, 67, 68, 69,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  543) 	70, 71, 83, 84, 86, 87, 88, 89, 103, 104, 105, 106, 107, 121, 122, 123,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  544) 	124, 125, 139, 140, 141, 142, 143, 157, 158, 159, 160, 161, 175, 176, 177,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  545) 	178, 179, 195, 196, 197
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  546) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  547) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  548) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  549)  * Apparently the LPC interface is using the PCICLK for the clocking so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  550)  * PCI needs to be active at the same time.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  551)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  552) static const unsigned int lpc_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  553) 	285, /* LPC_LAD[0] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  554) 	304, /* LPC_SERIRQ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  555) 	286, /* LPC_LAD[2] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  556) 	305, /* LPC_LFRAME# */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  557) 	287, /* LPC_LAD[3] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  558) 	268, /* LPC_LAD[1] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  559) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  560) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  561) /* Character LCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  562) static const unsigned int lcd_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  563) 	262, 244, 317, 299, 246, 319, 301, 283, 269, 233, 211
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  564) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  565) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  566) static const unsigned int ssp_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  567) 	285, /* SSP_97RST# SSP AC97 Reset, active low */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  568) 	304, /* SSP_FSC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  569) 	286, /* SSP_ECLK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  570) 	305, /* SSP_TXD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  571) 	287, /* SSP_RXD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  572) 	268, /* SSP_SCLK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  573) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  574) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  575) static const unsigned int uart_rxtx_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  576) 	267, /* UART_SIN serial input, RX */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  577) 	322, /* UART_SOUT serial output, TX */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  578) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  579) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  580) static const unsigned int uart_modem_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  581) 	285, /* UART_NDCD DCD carrier detect */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  582) 	304, /* UART_NDTR DTR data terminal ready */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  583) 	286, /* UART_NDSR DSR data set ready */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  584) 	305, /* UART_NRTS RTS request to send */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  585) 	287, /* UART_NCTS CTS clear to send */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  586) 	268, /* UART_NRI RI ring indicator */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  587) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  588) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  589) static const unsigned int tvc_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  590) 	246, /* TVC_DATA[0] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  591) 	319, /* TVC_DATA[1] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  592) 	301, /* TVC_DATA[2] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  593) 	283, /* TVC_DATA[3] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  594) 	320, /* TVC_DATA[4] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  595) 	302, /* TVC_DATA[5] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  596) 	284, /* TVC_DATA[6] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  597) 	266, /* TVC_DATA[7] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  598) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  599) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  600) static const unsigned int tvc_clk_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  601) 	265, /* TVC_CLK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  602) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  603) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  604) /* NAND flash pins */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  605) static const unsigned int nflash_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  606) 	199, 200, 201, 202, 216, 217, 218, 219, 220, 234, 235, 236, 237, 252,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  607) 	253, 254, 249, 250, 232, 233, 211, 193, 194
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  608) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  609) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  610) /* Parallel (NOR) flash pins, D[0-15], A[16-25], CE0, CE1, RB, WE, OE, ALE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  611) static const unsigned int pflash_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  612) 	162, 163, 165, 166, 148, 199, 200, 201, 202, 216, 217, 218, 219, 220,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  613) 	234, 235, 236, 237, 252, 253, 254, 251, 229, 232, 233, 211, 212, 213,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  614) 	214, 215, 193, 194
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  615) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  616) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  617) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  618)  * The parallel flash can be set up in a 26-bit address bus mode exposing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  619)  * A[0-15] (A[15] takes the place of ALE), but it has the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  620)  * side effect of stealing pins from GMAC1 and TVC so these blocks cannot be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  621)  * used at the same time.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  622)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  623) static const unsigned int pflash_3512_pins_extended[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  624) 	162, 163, 165, 166, 148, 199, 200, 201, 202, 216, 217, 218, 219, 220,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  625) 	234, 235, 236, 237, 252, 253, 254, 251, 229, 232, 233, 211, 212, 213,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  626) 	214, 215, 193, 194,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  627) 	/* The extra pins */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  628) 	296, 315, 297, 279, 261, 243, 316, 298, 280, 262, 244, 317, 299, 281,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  629) 	265,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  630) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  631) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  632) /* Serial flash pins CE0, CE1, DI, DO, CK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  633) static const unsigned int sflash_3512_pins[] = { 230, 231, 232, 233, 211 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  634) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  635) /* The GPIO0A (0) pin overlap with TVC CLK and extended parallel flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  636) static const unsigned int gpio0a_3512_pins[] = { 265 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  637) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  638) /* The GPIO0B (1-4) pins overlap with TVC and ICE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  639) static const unsigned int gpio0b_3512_pins[] = { 320, 302, 284, 266 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  640) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  641) /* The GPIO0C (5-7) pins overlap with ICE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  642) static const unsigned int gpio0c_3512_pins[] = { 248, 321, 303 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  643) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  644) /* The GPIO0D (9,10) pins overlap with UART RX/TX */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  645) static const unsigned int gpio0d_3512_pins[] = { 267, 322 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  646) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  647) /* The GPIO0E (8,11-15) pins overlap with LPC, UART modem pins, SSP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  648) static const unsigned int gpio0e_3512_pins[] = { 285, 304, 286, 305, 287, 268 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  649) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  650) /* The GPIO0F (16) pins overlap with LCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  651) static const unsigned int gpio0f_3512_pins[] = { 269 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  652) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  653) /* The GPIO0G (17,18) pins overlap with NAND flash CE0, CE1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  654) static const unsigned int gpio0g_3512_pins[] = { 249, 250 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  655) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  656) /* The GPIO0H (19,20) pins overlap with parallel flash CE0, CE1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  657) static const unsigned int gpio0h_3512_pins[] = { 251, 229 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  658) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  659) /* The GPIO0I (21,22) pins overlap with serial flash CE0, CE1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  660) static const unsigned int gpio0i_3512_pins[] = { 230, 231 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  661) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  662) /* The GPIO0J (23) pins overlap with all flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  663) static const unsigned int gpio0j_3512_pins[] = { 232 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  664) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  665) /* The GPIO0K (24,25) pins overlap with all flash and LCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  666) static const unsigned int gpio0k_3512_pins[] = { 233, 211 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  667) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  668) /* The GPIO0L (26-29) pins overlap with parallel flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  669) static const unsigned int gpio0l_3512_pins[] = { 212, 213, 214, 215 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  670) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  671) /* The GPIO0M (30,31) pins overlap with parallel flash and NAND flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  672) static const unsigned int gpio0m_3512_pins[] = { 193, 194 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  673) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  674) /* The GPIO1A (0-4) pins that overlap with IDE and parallel flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  675) static const unsigned int gpio1a_3512_pins[] = { 162, 163, 165, 166, 148 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  676) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  677) /* The GPIO1B (5-10, 27) pins overlap with just IDE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  678) static const unsigned int gpio1b_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  679) 	180, 181, 182, 183, 184, 198, 255
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  680) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  681) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  682) /* The GPIO1C (11-26) pins overlap with IDE, parallel flash and NAND flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  683) static const unsigned int gpio1c_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  684) 	199, 200, 201, 202, 216, 217, 218, 219, 220, 234, 235, 236, 237,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  685) 	252, 253, 254
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  686) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  687) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  688) /* The GPIO1D (28-31) pins overlap with LCD and TVC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  689) static const unsigned int gpio1d_3512_pins[] = { 246, 319, 301, 283 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  690) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  691) /* The GPIO2A (0-3) pins overlap with GMII GMAC1 and extended parallel flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  692) static const unsigned int gpio2a_3512_pins[] = { 315, 297, 279, 261 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  693) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  694) /* The GPIO2B (4-7) pins overlap with GMII GMAC1, extended parallel flash and LCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  695) static const unsigned int gpio2b_3512_pins[] = { 262, 244, 317, 299 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  696) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  697) /* The GPIO2C (8-31) pins overlap with PCI */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  698) static const unsigned int gpio2c_3512_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  699) 	17, 34, 35, 51, 52, 53, 68, 69, 71, 86, 87, 88, 89, 103, 104, 105,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  700) 	140, 141, 142, 143, 157, 158, 159, 160
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  701) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  702) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  703) /* Groups for the 3512 SoC/package */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  704) static const struct gemini_pin_group gemini_3512_pin_groups[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  705) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  706) 		.name = "gndgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  707) 		.pins = gnd_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  708) 		.num_pins = ARRAY_SIZE(gnd_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  709) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  710) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  711) 		.name = "dramgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  712) 		.pins = dram_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  713) 		.num_pins = ARRAY_SIZE(dram_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  714) 		.mask = DRAM_PADS_POWERDOWN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  715) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  716) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  717) 		.name = "rtcgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  718) 		.pins = rtc_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  719) 		.num_pins = ARRAY_SIZE(rtc_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  720) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  721) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  722) 		.name = "powergrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  723) 		.pins = power_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  724) 		.num_pins = ARRAY_SIZE(power_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  725) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  726) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  727) 		.name = "systemgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  728) 		.pins = system_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  729) 		.num_pins = ARRAY_SIZE(system_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  730) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  731) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  732) 		.name = "vcontrolgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  733) 		.pins = vcontrol_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  734) 		.num_pins = ARRAY_SIZE(vcontrol_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  735) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  736) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  737) 		.name = "icegrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  738) 		.pins = ice_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  739) 		.num_pins = ARRAY_SIZE(ice_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  740) 		/* Conflict with some GPIO groups */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  741) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  742) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  743) 		.name = "idegrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  744) 		.pins = ide_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  745) 		.num_pins = ARRAY_SIZE(ide_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  746) 		/* Conflict with all flash usage */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  747) 		.value = IDE_PADS_ENABLE | NAND_PADS_DISABLE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  748) 			PFLASH_PADS_DISABLE | SFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  749) 		.driving_mask = GENMASK(21, 20),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  750) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  751) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  752) 		.name = "satagrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  753) 		.pins = sata_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  754) 		.num_pins = ARRAY_SIZE(sata_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  755) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  756) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  757) 		.name = "usbgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  758) 		.pins = usb_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  759) 		.num_pins = ARRAY_SIZE(usb_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  760) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  761) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  762) 		.name = "gmii_gmac0_grp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  763) 		.pins = gmii_gmac0_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  764) 		.num_pins = ARRAY_SIZE(gmii_gmac0_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  765) 		.driving_mask = GENMASK(17, 16),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  766) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  767) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  768) 		.name = "gmii_gmac1_grp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  769) 		.pins = gmii_gmac1_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  770) 		.num_pins = ARRAY_SIZE(gmii_gmac1_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  771) 		/* Bring out RGMII on the GMAC1 pins */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  772) 		.value = GEMINI_GMAC_IOSEL_GMAC0_GMAC1_RGMII,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  773) 		.driving_mask = GENMASK(19, 18),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  774) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  775) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  776) 		.name = "pcigrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  777) 		.pins = pci_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  778) 		.num_pins = ARRAY_SIZE(pci_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  779) 		/* Conflict only with GPIO2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  780) 		.value = PCI_PADS_ENABLE | PCI_CLK_PAD_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  781) 		.driving_mask = GENMASK(23, 22),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  782) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  783) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  784) 		.name = "lpcgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  785) 		.pins = lpc_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  786) 		.num_pins = ARRAY_SIZE(lpc_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  787) 		/* Conflict with SSP and UART modem pins */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  788) 		.mask = SSP_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  789) 		.value = LPC_PADS_ENABLE | LPC_CLK_PAD_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  790) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  791) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  792) 		.name = "lcdgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  793) 		.pins = lcd_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  794) 		.num_pins = ARRAY_SIZE(lcd_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  795) 		/* Conflict with TVC and ICE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  796) 		.mask = TVC_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  797) 		.value = LCD_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  798) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  799) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  800) 		.name = "sspgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  801) 		.pins = ssp_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  802) 		.num_pins = ARRAY_SIZE(ssp_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  803) 		/* Conflict with LPC and UART modem pins */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  804) 		.mask = LPC_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  805) 		.value = SSP_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  806) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  807) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  808) 		.name = "uartrxtxgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  809) 		.pins = uart_rxtx_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  810) 		.num_pins = ARRAY_SIZE(uart_rxtx_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  811) 		/* No conflicts except GPIO */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  812) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  813) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  814) 		.name = "uartmodemgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  815) 		.pins = uart_modem_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  816) 		.num_pins = ARRAY_SIZE(uart_modem_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  817) 		/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  818) 		 * Conflict with LPC and SSP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  819) 		 * so when those are both disabled, modem UART can thrive.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  820) 		 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  821) 		.mask = LPC_PADS_ENABLE | SSP_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  822) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  823) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  824) 		.name = "tvcgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  825) 		.pins = tvc_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  826) 		.num_pins = ARRAY_SIZE(tvc_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  827) 		/* Conflict with character LCD and ICE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  828) 		.mask = LCD_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  829) 		.value = TVC_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  830) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  831) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  832) 		.name = "tvcclkgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  833) 		.pins = tvc_clk_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  834) 		.num_pins = ARRAY_SIZE(tvc_clk_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  835) 		.value = TVC_CLK_PAD_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  836) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  837) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  838) 	 * The construction is done such that it is possible to use a serial
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  839) 	 * flash together with a NAND or parallel (NOR) flash, but it is not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  840) 	 * possible to use NAND and parallel flash together. To use serial
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  841) 	 * flash with one of the two others, the muxbits need to be flipped
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  842) 	 * around before any access.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  843) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  844) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  845) 		.name = "nflashgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  846) 		.pins = nflash_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  847) 		.num_pins = ARRAY_SIZE(nflash_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  848) 		/* Conflict with IDE, parallel and serial flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  849) 		.mask = NAND_PADS_DISABLE | IDE_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  850) 		.value = PFLASH_PADS_DISABLE | SFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  851) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  852) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  853) 		.name = "pflashgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  854) 		.pins = pflash_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  855) 		.num_pins = ARRAY_SIZE(pflash_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  856) 		/* Conflict with IDE, NAND and serial flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  857) 		.mask = PFLASH_PADS_DISABLE | IDE_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  858) 		.value = NAND_PADS_DISABLE | SFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  859) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  860) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  861) 		.name = "sflashgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  862) 		.pins = sflash_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  863) 		.num_pins = ARRAY_SIZE(sflash_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  864) 		/* Conflict with IDE, NAND and parallel flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  865) 		.mask = SFLASH_PADS_DISABLE | IDE_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  866) 		.value = NAND_PADS_DISABLE | PFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  867) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  868) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  869) 		.name = "gpio0agrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  870) 		.pins = gpio0a_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  871) 		.num_pins = ARRAY_SIZE(gpio0a_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  872) 		/* Conflict with TVC CLK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  873) 		.mask = TVC_CLK_PAD_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  874) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  875) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  876) 		.name = "gpio0bgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  877) 		.pins = gpio0b_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  878) 		.num_pins = ARRAY_SIZE(gpio0b_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  879) 		/* Conflict with TVC and ICE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  880) 		.mask = TVC_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  881) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  882) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  883) 		.name = "gpio0cgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  884) 		.pins = gpio0c_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  885) 		.num_pins = ARRAY_SIZE(gpio0c_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  886) 		/* Conflict with ICE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  887) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  888) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  889) 		.name = "gpio0dgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  890) 		.pins = gpio0d_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  891) 		.num_pins = ARRAY_SIZE(gpio0d_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  892) 		/* Conflict with UART RX/TX */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  893) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  894) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  895) 		.name = "gpio0egrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  896) 		.pins = gpio0e_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  897) 		.num_pins = ARRAY_SIZE(gpio0e_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  898) 		/* Conflict with LPC, UART modem pins, SSP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  899) 		.mask = LPC_PADS_ENABLE | SSP_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  900) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  901) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  902) 		.name = "gpio0fgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  903) 		.pins = gpio0f_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  904) 		.num_pins = ARRAY_SIZE(gpio0f_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  905) 		/* Conflict with LCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  906) 		.mask = LCD_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  907) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  908) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  909) 		.name = "gpio0ggrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  910) 		.pins = gpio0g_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  911) 		.num_pins = ARRAY_SIZE(gpio0g_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  912) 		/* Conflict with NAND flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  913) 		.value = NAND_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  914) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  915) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  916) 		.name = "gpio0hgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  917) 		.pins = gpio0h_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  918) 		.num_pins = ARRAY_SIZE(gpio0h_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  919) 		/* Conflict with parallel flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  920) 		.value = PFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  921) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  922) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  923) 		.name = "gpio0igrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  924) 		.pins = gpio0i_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  925) 		.num_pins = ARRAY_SIZE(gpio0i_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  926) 		/* Conflict with serial flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  927) 		.value = SFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  928) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  929) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  930) 		.name = "gpio0jgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  931) 		.pins = gpio0j_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  932) 		.num_pins = ARRAY_SIZE(gpio0j_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  933) 		/* Conflict with all flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  934) 		.value = PFLASH_PADS_DISABLE | NAND_PADS_DISABLE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  935) 			SFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  936) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  937) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  938) 		.name = "gpio0kgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  939) 		.pins = gpio0k_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  940) 		.num_pins = ARRAY_SIZE(gpio0k_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  941) 		/* Conflict with all flash and LCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  942) 		.mask = LCD_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  943) 		.value = PFLASH_PADS_DISABLE | NAND_PADS_DISABLE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  944) 			SFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  945) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  946) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  947) 		.name = "gpio0lgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  948) 		.pins = gpio0l_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  949) 		.num_pins = ARRAY_SIZE(gpio0l_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  950) 		/* Conflict with parallel flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  951) 		.value = PFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  952) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  953) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  954) 		.name = "gpio0mgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  955) 		.pins = gpio0m_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  956) 		.num_pins = ARRAY_SIZE(gpio0m_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  957) 		/* Conflict with parallel and NAND flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  958) 		.value = PFLASH_PADS_DISABLE | NAND_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  959) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  960) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  961) 		.name = "gpio1agrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  962) 		.pins = gpio1a_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  963) 		.num_pins = ARRAY_SIZE(gpio1a_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  964) 		/* Conflict with IDE and parallel flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  965) 		.mask = IDE_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  966) 		.value = PFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  967) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  968) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  969) 		.name = "gpio1bgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  970) 		.pins = gpio1b_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  971) 		.num_pins = ARRAY_SIZE(gpio1b_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  972) 		/* Conflict with IDE only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  973) 		.mask = IDE_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  974) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  975) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  976) 		.name = "gpio1cgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  977) 		.pins = gpio1c_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  978) 		.num_pins = ARRAY_SIZE(gpio1c_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  979) 		/* Conflict with IDE, parallel and NAND flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  980) 		.mask = IDE_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  981) 		.value = NAND_PADS_DISABLE | PFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  982) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  983) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  984) 		.name = "gpio1dgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  985) 		.pins = gpio1d_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  986) 		.num_pins = ARRAY_SIZE(gpio1d_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  987) 		/* Conflict with LCD and TVC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  988) 		.mask = LCD_PADS_ENABLE | TVC_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  989) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  990) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  991) 		.name = "gpio2agrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  992) 		.pins = gpio2a_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  993) 		.num_pins = ARRAY_SIZE(gpio2a_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  994) 		.mask = GEMINI_GMAC_IOSEL_GMAC0_GMAC1_RGMII,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  995) 		/* Conflict with GMII GMAC1 and extended parallel flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  996) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  997) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  998) 		.name = "gpio2bgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  999) 		.pins = gpio2b_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) 		.num_pins = ARRAY_SIZE(gpio2b_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) 		/* Conflict with GMII GMAC1, extended parallel flash and LCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) 		.mask = LCD_PADS_ENABLE | GEMINI_GMAC_IOSEL_GMAC0_GMAC1_RGMII,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) 		.name = "gpio2cgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) 		.pins = gpio2c_3512_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) 		.num_pins = ARRAY_SIZE(gpio2c_3512_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) 		/* Conflict with PCI */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009) 		.mask = PCI_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) /* Pin names for the pinmux subsystem, 3516 variant */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) static const struct pinctrl_pin_desc gemini_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) 	/* Row A */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) 	PINCTRL_PIN(0, "A1 AVCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) 	PINCTRL_PIN(1, "A2 DRAM CK N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018) 	PINCTRL_PIN(2, "A3 DRAM CK"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) 	PINCTRL_PIN(3, "A4 DRAM DQM1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020) 	PINCTRL_PIN(4, "A5 DRAM DQ9"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) 	PINCTRL_PIN(5, "A6 DRAM DQ13"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) 	PINCTRL_PIN(6, "A7 DRAM DQ1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) 	PINCTRL_PIN(7, "A8 DRAM DQ2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024) 	PINCTRL_PIN(8, "A9 DRAM DQ4"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) 	PINCTRL_PIN(9, "A10 DRAM VREF"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) 	PINCTRL_PIN(10, "A11 DRAM DQ24"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) 	PINCTRL_PIN(11, "A12 DRAM DQ28"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) 	PINCTRL_PIN(12, "A13 DRAM DQ30"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) 	PINCTRL_PIN(13, "A14 DRAM DQ18"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) 	PINCTRL_PIN(14, "A15 DRAM DQ21"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) 	PINCTRL_PIN(15, "A16 DRAM CAS_N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) 	PINCTRL_PIN(16, "A17 DRAM BA1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) 	PINCTRL_PIN(17, "A18 PCI INTA N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034) 	PINCTRL_PIN(18, "A19 PCI INTB N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) 	PINCTRL_PIN(19, "A20 PCI INTC N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036) 	/* Row B */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037) 	PINCTRL_PIN(20, "B1 PWR EN"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038) 	PINCTRL_PIN(21, "B2 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039) 	PINCTRL_PIN(22, "B3 RTC CLKO"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040) 	PINCTRL_PIN(23, "B4 DRAM A5"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041) 	PINCTRL_PIN(24, "B5 DRAM A6"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042) 	PINCTRL_PIN(25, "B6 DRAM DQS1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) 	PINCTRL_PIN(26, "B7 DRAM DQ11"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044) 	PINCTRL_PIN(27, "B8 DRAM DQ0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045) 	PINCTRL_PIN(28, "B9 DRAM DQS0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046) 	PINCTRL_PIN(29, "B10 DRAM DQ7"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) 	PINCTRL_PIN(30, "B11 DRAM DQS3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) 	PINCTRL_PIN(31, "B12 DRAM DQ27"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049) 	PINCTRL_PIN(32, "B13 DRAM DQ31"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) 	PINCTRL_PIN(33, "B14 DRAM DQ20"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051) 	PINCTRL_PIN(34, "B15 DRAM DQS2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) 	PINCTRL_PIN(35, "B16 DRAM WE N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) 	PINCTRL_PIN(36, "B17 DRAM A10"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) 	PINCTRL_PIN(37, "B18 DRAM A2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055) 	PINCTRL_PIN(38, "B19 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) 	PINCTRL_PIN(39, "B20 PCI GNT0 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) 	/* Row C */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) 	PINCTRL_PIN(40, "C1 AGNDIOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059) 	PINCTRL_PIN(41, "C2 XTALI"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060) 	PINCTRL_PIN(42, "C3 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) 	PINCTRL_PIN(43, "C4 RTC CLKI"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062) 	PINCTRL_PIN(44, "C5 DRAM A12"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) 	PINCTRL_PIN(45, "C6 DRAM A11"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064) 	PINCTRL_PIN(46, "C7 DRAM DQ8"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065) 	PINCTRL_PIN(47, "C8 DRAM DQ10"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) 	PINCTRL_PIN(48, "C9 DRAM DQ3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067) 	PINCTRL_PIN(49, "C10 DRAM DQ6"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) 	PINCTRL_PIN(50, "C11 DRAM DQM0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069) 	PINCTRL_PIN(51, "C12 DRAM DQ26"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070) 	PINCTRL_PIN(52, "C13 DRAM DQ16"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071) 	PINCTRL_PIN(53, "C14 DRAM DQ22"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072) 	PINCTRL_PIN(54, "C15 DRAM DQM2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) 	PINCTRL_PIN(55, "C16 DRAM BA0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) 	PINCTRL_PIN(56, "C17 DRAM A3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) 	PINCTRL_PIN(57, "C18 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076) 	PINCTRL_PIN(58, "C19 PCI GNT1 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) 	PINCTRL_PIN(59, "C20 PCI REQ2 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) 	/* Row D */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) 	PINCTRL_PIN(60, "D1 AVCC3IOAHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) 	PINCTRL_PIN(61, "D2 AVCCKHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081) 	PINCTRL_PIN(62, "D3 XTALO"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) 	PINCTRL_PIN(63, "D4 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083) 	PINCTRL_PIN(64, "D5 CIR RXD"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) 	PINCTRL_PIN(65, "D6 DRAM A7"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) 	PINCTRL_PIN(66, "D7 DRAM A4"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086) 	PINCTRL_PIN(67, "D8 DRAM A8"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) 	PINCTRL_PIN(68, "D9 DRAM CKE"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) 	PINCTRL_PIN(69, "D10 DRAM DQ14"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089) 	PINCTRL_PIN(70, "D11 DRAM DQ5"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) 	PINCTRL_PIN(71, "D12 DRAM DQ25"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) 	PINCTRL_PIN(72, "D13 DRAM DQ17"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092) 	PINCTRL_PIN(73, "D14 DRAM DQ23"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) 	PINCTRL_PIN(74, "D15 DRAM RAS N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) 	PINCTRL_PIN(75, "D16 DRAM A1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) 	PINCTRL_PIN(76, "D17 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) 	PINCTRL_PIN(77, "D18 EXT RESET N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) 	PINCTRL_PIN(78, "D19 PCI REQ1 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098) 	PINCTRL_PIN(79, "D20 PCI REQ3 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) 	/* Row E */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) 	PINCTRL_PIN(80, "E1 VCC2IO CTRL"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) 	PINCTRL_PIN(81, "E2 VREF CTRL"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102) 	PINCTRL_PIN(82, "E3 CIR RST N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) 	PINCTRL_PIN(83, "E4 PWR BTN"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104) 	PINCTRL_PIN(84, "E5 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105) 	PINCTRL_PIN(85, "E6 CIR TXD"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) 	PINCTRL_PIN(86, "E7 VCCK CTRL"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107) 	PINCTRL_PIN(87, "E8 DRAM A9"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) 	PINCTRL_PIN(88, "E9 DRAM DQ12"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) 	PINCTRL_PIN(89, "E10 DRAM DQ15"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110) 	PINCTRL_PIN(90, "E11 DRAM DQM3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111) 	PINCTRL_PIN(91, "E12 DRAM DQ29"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) 	PINCTRL_PIN(92, "E13 DRAM DQ19"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) 	PINCTRL_PIN(93, "E14 DRAM A13"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) 	PINCTRL_PIN(94, "E15 DRAM A0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) 	PINCTRL_PIN(95, "E16 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) 	PINCTRL_PIN(96, "E17 PCI INTD N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117) 	PINCTRL_PIN(97, "E18 PCI GNT3 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) 	PINCTRL_PIN(98, "E19 PCI AD29"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) 	PINCTRL_PIN(99, "E20 PCI AD28"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) 	/* Row F */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) 	PINCTRL_PIN(100, "F1 AVCCKHB"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122) 	PINCTRL_PIN(101, "F2 AVCCK P"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) 	PINCTRL_PIN(102, "F3 EBG"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) 	PINCTRL_PIN(103, "F4 REXT"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) 	PINCTRL_PIN(104, "F5 AVCC3IOHB"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126) 	PINCTRL_PIN(105, "F6 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127) 	PINCTRL_PIN(106, "F7 VCC2IOHA 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) 	PINCTRL_PIN(107, "F8 VCC2IOHA 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129) 	PINCTRL_PIN(108, "F9 VCC2IOHA 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130) 	PINCTRL_PIN(109, "F10 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131) 	PINCTRL_PIN(110, "F11 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132) 	PINCTRL_PIN(111, "F12 VCC2IOHA 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133) 	PINCTRL_PIN(112, "F13 VCC2IOHA 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134) 	PINCTRL_PIN(113, "F14 VCC2IOHA 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135) 	PINCTRL_PIN(114, "F15 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136) 	PINCTRL_PIN(115, "F16 PCI CLK"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137) 	PINCTRL_PIN(116, "F17 PCI GNT2 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) 	PINCTRL_PIN(117, "F18 PCI AD31"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) 	PINCTRL_PIN(118, "F19 PCI AD26"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140) 	PINCTRL_PIN(119, "F20 PCI CBE3 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) 	/* Row G */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) 	PINCTRL_PIN(120, "G1 SATA0 RXDP"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143) 	PINCTRL_PIN(121, "G2 SATA0 RXDN"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144) 	PINCTRL_PIN(122, "G3 AGNDK 0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) 	PINCTRL_PIN(123, "G4 AVCCK S"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146) 	PINCTRL_PIN(124, "G5 AVCC3 S"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) 	PINCTRL_PIN(125, "G6 VCC2IOHA 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148) 	PINCTRL_PIN(126, "G7 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149) 	PINCTRL_PIN(127, "G8 VCC2IOHA 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) 	PINCTRL_PIN(128, "G9 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) 	PINCTRL_PIN(129, "G10 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152) 	PINCTRL_PIN(130, "G11 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153) 	PINCTRL_PIN(131, "G12 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) 	PINCTRL_PIN(132, "G13 VCC2IOHA 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) 	PINCTRL_PIN(133, "G14 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) 	PINCTRL_PIN(134, "G15 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) 	PINCTRL_PIN(135, "G16 PCI REQ0 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) 	PINCTRL_PIN(136, "G17 PCI AD30"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) 	PINCTRL_PIN(137, "G18 PCI AD24"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160) 	PINCTRL_PIN(138, "G19 PCI AD23"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) 	PINCTRL_PIN(139, "G20 PCI AD21"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) 	/* Row H */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) 	PINCTRL_PIN(140, "H1 SATA0 TXDP"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) 	PINCTRL_PIN(141, "H2 SATA0 TXDN"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) 	PINCTRL_PIN(142, "H3 AGNDK 1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166) 	PINCTRL_PIN(143, "H4 AVCCK 0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) 	PINCTRL_PIN(144, "H5 TEST CLKOUT"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168) 	PINCTRL_PIN(145, "H6 AGND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169) 	PINCTRL_PIN(146, "H7 VCC2IOHA 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170) 	PINCTRL_PIN(147, "H8 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) 	PINCTRL_PIN(148, "H9 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) 	PINCTRL_PIN(149, "H10 GDN"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) 	PINCTRL_PIN(150, "H11 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174) 	PINCTRL_PIN(151, "H12 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) 	PINCTRL_PIN(152, "H13 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) 	PINCTRL_PIN(153, "H14 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) 	PINCTRL_PIN(154, "H15 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) 	PINCTRL_PIN(155, "H16 PCI AD27"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) 	PINCTRL_PIN(156, "H17 PCI AD25"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180) 	PINCTRL_PIN(157, "H18 PCI AD22"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) 	PINCTRL_PIN(158, "H19 PCI AD18"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) 	PINCTRL_PIN(159, "H20 PCI AD17"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183) 	/* Row J (for some reason I is skipped) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) 	PINCTRL_PIN(160, "J1 SATA1 TXDP"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) 	PINCTRL_PIN(161, "J2 SATA1 TXDN"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186) 	PINCTRL_PIN(162, "J3 AGNDK 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) 	PINCTRL_PIN(163, "J4 AVCCK 1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188) 	PINCTRL_PIN(164, "J5 AGND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189) 	PINCTRL_PIN(165, "J6 AGND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190) 	PINCTRL_PIN(166, "J7 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) 	PINCTRL_PIN(167, "J8 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192) 	PINCTRL_PIN(168, "J9 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193) 	PINCTRL_PIN(169, "J10 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) 	PINCTRL_PIN(170, "J11 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) 	PINCTRL_PIN(171, "J12 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) 	PINCTRL_PIN(172, "J13 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) 	PINCTRL_PIN(173, "J14 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) 	PINCTRL_PIN(174, "J15 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) 	PINCTRL_PIN(175, "J16 PCI AD19"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) 	PINCTRL_PIN(176, "J17 PCI AD20"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201) 	PINCTRL_PIN(177, "J18 PCI AD16"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202) 	PINCTRL_PIN(178, "J19 PCI CBE2 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203) 	PINCTRL_PIN(179, "J20 PCI FRAME N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204) 	/* Row K */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205) 	PINCTRL_PIN(180, "K1 SATA1 RXDP"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206) 	PINCTRL_PIN(181, "K2 SATA1 RXDN"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207) 	PINCTRL_PIN(182, "K3 AGNDK 3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208) 	PINCTRL_PIN(183, "K4 AVCCK 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209) 	PINCTRL_PIN(184, "K5 AGND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210) 	PINCTRL_PIN(185, "K6 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211) 	PINCTRL_PIN(186, "K7 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212) 	PINCTRL_PIN(187, "K8 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213) 	PINCTRL_PIN(188, "K9 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214) 	PINCTRL_PIN(189, "K10 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215) 	PINCTRL_PIN(190, "K11 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216) 	PINCTRL_PIN(191, "K12 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217) 	PINCTRL_PIN(192, "K13 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218) 	PINCTRL_PIN(193, "K14 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219) 	PINCTRL_PIN(194, "K15 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220) 	PINCTRL_PIN(195, "K16 PCI TRDY N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221) 	PINCTRL_PIN(196, "K17 PCI IRDY N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222) 	PINCTRL_PIN(197, "K18 PCI DEVSEL N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223) 	PINCTRL_PIN(198, "K19 PCI STOP N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224) 	PINCTRL_PIN(199, "K20 PCI PAR"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225) 	/* Row L */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226) 	PINCTRL_PIN(200, "L1 IDE CS0 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227) 	PINCTRL_PIN(201, "L2 IDE DA0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228) 	PINCTRL_PIN(202, "L3 AVCCK 3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229) 	PINCTRL_PIN(203, "L4 AGND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230) 	PINCTRL_PIN(204, "L5 IDE DIOR N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231) 	PINCTRL_PIN(205, "L6 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232) 	PINCTRL_PIN(206, "L7 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233) 	PINCTRL_PIN(207, "L8 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234) 	PINCTRL_PIN(208, "L9 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235) 	PINCTRL_PIN(209, "L10 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236) 	PINCTRL_PIN(210, "L11 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237) 	PINCTRL_PIN(211, "L12 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238) 	PINCTRL_PIN(212, "L13 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239) 	PINCTRL_PIN(213, "L14 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240) 	PINCTRL_PIN(214, "L15 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241) 	PINCTRL_PIN(215, "L16 PCI AD12"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242) 	PINCTRL_PIN(216, "L17 PCI AD13"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243) 	PINCTRL_PIN(217, "L18 PCI AD14"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244) 	PINCTRL_PIN(218, "L19 PCI AD15"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) 	PINCTRL_PIN(219, "L20 PCI CBE1 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246) 	/* Row M */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247) 	PINCTRL_PIN(220, "M1 IDE DA1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248) 	PINCTRL_PIN(221, "M2 IDE CS1 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249) 	PINCTRL_PIN(222, "M3 IDE DA2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250) 	PINCTRL_PIN(223, "M4 IDE DMACK N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251) 	PINCTRL_PIN(224, "M5 IDE DD1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252) 	PINCTRL_PIN(225, "M6 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253) 	PINCTRL_PIN(226, "M7 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254) 	PINCTRL_PIN(227, "M8 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255) 	PINCTRL_PIN(228, "M9 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256) 	PINCTRL_PIN(229, "M10 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257) 	PINCTRL_PIN(230, "M11 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258) 	PINCTRL_PIN(231, "M12 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259) 	PINCTRL_PIN(232, "M13 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260) 	PINCTRL_PIN(233, "M14 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261) 	PINCTRL_PIN(234, "M15 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262) 	PINCTRL_PIN(235, "M16 PCI AD7"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263) 	PINCTRL_PIN(236, "M17 PCI AD6"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264) 	PINCTRL_PIN(237, "M18 PCI AD9"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265) 	PINCTRL_PIN(238, "M19 PCI AD10"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266) 	PINCTRL_PIN(239, "M20 PCI AD11"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267) 	/* Row N */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268) 	PINCTRL_PIN(240, "N1 IDE IORDY"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269) 	PINCTRL_PIN(241, "N2 IDE INTRQ"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270) 	PINCTRL_PIN(242, "N3 IDE DIOW N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271) 	PINCTRL_PIN(243, "N4 IDE DD15"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272) 	PINCTRL_PIN(244, "N5 IDE DMARQ"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273) 	PINCTRL_PIN(245, "N6 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274) 	PINCTRL_PIN(246, "N7 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275) 	PINCTRL_PIN(247, "N8 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276) 	PINCTRL_PIN(248, "N9 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1277) 	PINCTRL_PIN(249, "N10 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1278) 	PINCTRL_PIN(250, "N11 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1279) 	PINCTRL_PIN(251, "N12 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1280) 	PINCTRL_PIN(252, "N13 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1281) 	PINCTRL_PIN(253, "N14 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1282) 	PINCTRL_PIN(254, "N15 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1283) 	PINCTRL_PIN(255, "N16 PCI CLKRUN N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1284) 	PINCTRL_PIN(256, "N17 PCI AD0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1285) 	PINCTRL_PIN(257, "N18 PCI AD4"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1286) 	PINCTRL_PIN(258, "N19 PCI CBE0 N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1287) 	PINCTRL_PIN(259, "N20 PCI AD8"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1288) 	/* Row P (for some reason O is skipped) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1289) 	PINCTRL_PIN(260, "P1 IDE DD0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1290) 	PINCTRL_PIN(261, "P2 IDE DD14"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1291) 	PINCTRL_PIN(262, "P3 IDE DD2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1292) 	PINCTRL_PIN(263, "P4 IDE DD4"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1293) 	PINCTRL_PIN(264, "P5 IDE DD3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1294) 	PINCTRL_PIN(265, "P6 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1295) 	PINCTRL_PIN(266, "P7 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1296) 	PINCTRL_PIN(267, "P8 VCC2IOHA 1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1297) 	PINCTRL_PIN(268, "P9 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1298) 	PINCTRL_PIN(269, "P10 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1299) 	PINCTRL_PIN(270, "P11 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1300) 	PINCTRL_PIN(271, "P12 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1301) 	PINCTRL_PIN(272, "P13 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1302) 	PINCTRL_PIN(273, "P14 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1303) 	PINCTRL_PIN(274, "P15 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1304) 	PINCTRL_PIN(275, "P16 GPIO0 30"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1305) 	PINCTRL_PIN(276, "P17 GPIO0 28"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1306) 	PINCTRL_PIN(277, "P18 PCI AD1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1307) 	PINCTRL_PIN(278, "P19 PCI AD3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1308) 	PINCTRL_PIN(279, "P20 PCI AD5"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1309) 	/* Row R (for some reason Q us skipped) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1310) 	PINCTRL_PIN(280, "R1 IDE DD13"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1311) 	PINCTRL_PIN(281, "R2 IDE DD12"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1312) 	PINCTRL_PIN(282, "R3 IDE DD10"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1313) 	PINCTRL_PIN(283, "R4 IDE DD6"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1314) 	PINCTRL_PIN(284, "R5 ICE0 IDI"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1315) 	PINCTRL_PIN(285, "R6 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1316) 	PINCTRL_PIN(286, "R7 VCC2IOHA 1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1317) 	PINCTRL_PIN(287, "R8 VCC2IOHA 1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1318) 	PINCTRL_PIN(288, "R9 VCC2IOHA 1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1319) 	PINCTRL_PIN(289, "R10 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1320) 	PINCTRL_PIN(290, "R11 V1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1321) 	PINCTRL_PIN(291, "R12 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1322) 	PINCTRL_PIN(292, "R13 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1323) 	PINCTRL_PIN(293, "R14 VCC3IOHA"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1324) 	PINCTRL_PIN(294, "R15 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1325) 	PINCTRL_PIN(295, "R16 GPIO0 23"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1326) 	PINCTRL_PIN(296, "R17 GPIO0 21"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1327) 	PINCTRL_PIN(297, "R18 GPIO0 26"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1328) 	PINCTRL_PIN(298, "R19 GPIO0 31"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1329) 	PINCTRL_PIN(299, "R20 PCI AD2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1330) 	/* Row T (for some reason S is skipped) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1331) 	PINCTRL_PIN(300, "T1 IDE DD11"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1332) 	PINCTRL_PIN(301, "T2 IDE DD5"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1333) 	PINCTRL_PIN(302, "T3 IDE DD8"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1334) 	PINCTRL_PIN(303, "T4 ICE0 IDO"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1335) 	PINCTRL_PIN(304, "T5 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1336) 	PINCTRL_PIN(305, "T6 USB GNDA U20"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1337) 	PINCTRL_PIN(306, "T7 GMAC0 TXD0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1338) 	PINCTRL_PIN(307, "T8 GMAC0 TXEN"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1339) 	PINCTRL_PIN(308, "T9 GMAC1 TXD3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1340) 	PINCTRL_PIN(309, "T10 GMAC1 RXDV"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1341) 	PINCTRL_PIN(310, "T11 GMAC1 RXD2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1342) 	PINCTRL_PIN(311, "T12 GPIO1 29"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1343) 	PINCTRL_PIN(312, "T13 GPIO0 3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1344) 	PINCTRL_PIN(313, "T14 GPIO0 9"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1345) 	PINCTRL_PIN(314, "T15 GPIO0 16"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1346) 	PINCTRL_PIN(315, "T16 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1347) 	PINCTRL_PIN(316, "T17 GPIO0 14"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1348) 	PINCTRL_PIN(317, "T18 GPIO0 19"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1349) 	PINCTRL_PIN(318, "T19 GPIO0 27"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1350) 	PINCTRL_PIN(319, "T20 GPIO0 29"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1351) 	/* Row U */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1352) 	PINCTRL_PIN(320, "U1 IDE DD9"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1353) 	PINCTRL_PIN(321, "U2 IDE DD7"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1354) 	PINCTRL_PIN(322, "U3 ICE0 ICK"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1355) 	PINCTRL_PIN(323, "U4 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1356) 	PINCTRL_PIN(324, "U5 USB XSCO"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1357) 	PINCTRL_PIN(325, "U6 GMAC0 TXD1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1358) 	PINCTRL_PIN(326, "U7 GMAC0 TXD3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1359) 	PINCTRL_PIN(327, "U8 GMAC0 TXC"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1360) 	PINCTRL_PIN(328, "U9 GMAC0 RXD3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1361) 	PINCTRL_PIN(329, "U10 GMAC1 TXD0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1362) 	PINCTRL_PIN(330, "U11 GMAC1 CRS"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1363) 	PINCTRL_PIN(331, "U12 EXT CLK"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1364) 	PINCTRL_PIN(332, "U13 DEV DEF"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1365) 	PINCTRL_PIN(333, "U14 GPIO0 0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1366) 	PINCTRL_PIN(334, "U15 GPIO0 4"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1367) 	PINCTRL_PIN(335, "U16 GPIO0 10"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1368) 	PINCTRL_PIN(336, "U17 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1369) 	PINCTRL_PIN(337, "U18 GPIO0 17"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1370) 	PINCTRL_PIN(338, "U19 GPIO0 22"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1371) 	PINCTRL_PIN(339, "U20 GPIO0 25"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1372) 	/* Row V */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1373) 	PINCTRL_PIN(340, "V1 ICE0 DBGACK"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1374) 	PINCTRL_PIN(341, "V2 ICE0 DBGRQ"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1375) 	PINCTRL_PIN(342, "V3 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1376) 	PINCTRL_PIN(343, "V4 ICE0 IRST N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1377) 	PINCTRL_PIN(344, "V5 USB XSCI"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1378) 	PINCTRL_PIN(345, "V6 GMAC0 COL"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1379) 	PINCTRL_PIN(346, "V7 GMAC0 TXD2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1380) 	PINCTRL_PIN(347, "V8 GMAC0 RXDV"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1381) 	PINCTRL_PIN(348, "V9 GMAC0 RXD1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1382) 	PINCTRL_PIN(349, "V10 GMAC1 COL"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1383) 	PINCTRL_PIN(350, "V11 GMAC1 TXC"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1384) 	PINCTRL_PIN(351, "V12 GMAC1 RXD1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1385) 	PINCTRL_PIN(352, "V13 MODE SEL1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1386) 	PINCTRL_PIN(353, "V14 GPIO1 28"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1387) 	PINCTRL_PIN(354, "V15 GPIO0 1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1388) 	PINCTRL_PIN(355, "V16 GPIO0 8"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1389) 	PINCTRL_PIN(356, "V17 GPIO0 11"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1390) 	PINCTRL_PIN(357, "V18 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1391) 	PINCTRL_PIN(358, "V19 GPIO0 18"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1392) 	PINCTRL_PIN(359, "V20 GPIO0 24"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1393) 	/* Row W */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1394) 	PINCTRL_PIN(360, "W1 IDE RESET N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1395) 	PINCTRL_PIN(361, "W2 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1396) 	PINCTRL_PIN(362, "W3 USB0 VCCHSRT"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1397) 	PINCTRL_PIN(363, "W4 USB0 DP"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1398) 	PINCTRL_PIN(364, "W5 USB VCCA U20"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1399) 	PINCTRL_PIN(365, "W6 USB1 DP"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1400) 	PINCTRL_PIN(366, "W7 USB1 GNDHSRT"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1401) 	PINCTRL_PIN(367, "W8 GMAC0 RXD0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1402) 	PINCTRL_PIN(368, "W9 GMAC0 CRS"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1403) 	PINCTRL_PIN(369, "W10 GMAC1 TXD2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1404) 	PINCTRL_PIN(370, "W11 GMAC1 TXEN"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1405) 	PINCTRL_PIN(371, "W12 GMAC1 RXD3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1406) 	PINCTRL_PIN(372, "W13 MODE SEL0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1407) 	PINCTRL_PIN(373, "W14 MODE SEL3"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1408) 	PINCTRL_PIN(374, "W15 GPIO1 31"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1409) 	PINCTRL_PIN(375, "W16 GPIO0 5"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1410) 	PINCTRL_PIN(376, "W17 GPIO0 7"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1411) 	PINCTRL_PIN(377, "W18 GPIO0 12"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1412) 	PINCTRL_PIN(378, "W19 GND"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1413) 	PINCTRL_PIN(379, "W20 GPIO0 20"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1414) 	/* Row Y */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1415) 	PINCTRL_PIN(380, "Y1 ICE0 IMS"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1416) 	PINCTRL_PIN(381, "Y2 USB0 GNDHSRT"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1417) 	PINCTRL_PIN(382, "Y3 USB0 DM"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1418) 	PINCTRL_PIN(383, "Y4 USB RREF"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1419) 	PINCTRL_PIN(384, "Y5 USB1 DM"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1420) 	PINCTRL_PIN(385, "Y6 USB1 VCCHSRT"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1421) 	PINCTRL_PIN(386, "Y7 GMAC0 RXC"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1422) 	PINCTRL_PIN(387, "Y8 GMAC0 RXD2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1423) 	PINCTRL_PIN(388, "Y9 REF CLK"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1424) 	PINCTRL_PIN(389, "Y10 GMAC1 TXD1"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1425) 	PINCTRL_PIN(390, "Y11 GMAC1 RXC"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1426) 	PINCTRL_PIN(391, "Y12 GMAC1 RXD0"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1427) 	PINCTRL_PIN(392, "Y13 M30 CLK"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1428) 	PINCTRL_PIN(393, "Y14 MODE SEL2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1429) 	PINCTRL_PIN(394, "Y15 GPIO1 30"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1430) 	PINCTRL_PIN(395, "Y16 GPIO0 2"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1431) 	PINCTRL_PIN(396, "Y17 GPIO0 6"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1432) 	PINCTRL_PIN(397, "Y18 SYS RESET N"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1433) 	PINCTRL_PIN(398, "Y19 GPIO0 13"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1434) 	PINCTRL_PIN(399, "Y20 GPIO0 15"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1435) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1436) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1437) /* Digital ground */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1438) static const unsigned int gnd_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1439) 	21, 38, 42, 57, 63, 76, 84, 95, 105, 114, 126, 133, 147, 148, 149, 150,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1440) 	151, 152, 167, 168, 169, 170, 171, 172, 187, 188, 189, 190, 191, 192,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1441) 	207, 208, 209, 210, 211, 212, 227, 228, 229, 230, 231, 232, 247, 248,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1442) 	249, 250, 251, 252, 266, 273, 285, 294, 304, 315, 323, 336, 342, 357,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1443) 	361, 378
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1444) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1445) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1446) static const unsigned int dram_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1447) 	1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 23, 24, 25, 26,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1448) 	27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 44, 45, 46, 47, 48, 49, 50,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1449) 	51, 52, 53, 54, 55, 56, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1450) 	87, 88, 89, 90, 91, 92, 93, 94
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1451) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1452) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1453) static const unsigned int rtc_3516_pins[] = { 0, 43, 22 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1454) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1455) static const unsigned int power_3516_pins[] = { 20, 83, 40, 41, 60, 61, 62 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1456) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1457) static const unsigned int cir_3516_pins[] = { 85, 64, 82 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1458) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1459) static const unsigned int system_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1460) 	332, 392, 372, 373, 393, 352, 331, 388, 397, 77
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1461) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1462) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1463) static const unsigned int vcontrol_3516_pins[] = { 86, 81, 80 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1464) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1465) static const unsigned int ice_3516_pins[] = { 340, 341, 303, 322, 380, 284, 343 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1466) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1467) static const unsigned int ide_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1468) 	200, 201, 204, 220, 221, 222, 223, 224, 240, 241, 242, 243, 244, 260,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1469) 	261, 262, 263, 264, 280, 281, 282, 283, 300, 301, 302, 320, 321, 360
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1470) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1471) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1472) static const unsigned int sata_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1473) 	100, 101, 102, 103, 104, 120, 121, 122, 123, 124, 140, 141, 142, 143,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1474) 	144, 160, 161, 162, 163, 180, 181, 182, 183, 202
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1475) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1476) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1477) static const unsigned int usb_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1478) 	305, 324, 344, 362, 363, 364, 365, 366, 381, 382, 383, 384, 385
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1479) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1480) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1481) /* GMII, ethernet pins */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1482) static const unsigned int gmii_gmac0_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1483) 	306, 307, 325, 326, 327, 328, 345, 346, 347, 348, 367, 368, 386, 387
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1484) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1485) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1486) static const unsigned int gmii_gmac1_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1487) 	308, 309, 310, 329, 330, 349, 350, 351, 369, 370, 371, 389, 390, 391
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1488) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1489) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1490) static const unsigned int pci_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1491) 	17, 18, 19, 39, 58, 59, 78, 79, 96, 97, 98, 99, 115, 116, 117, 118,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1492) 	119, 135, 136, 137, 138, 139, 155, 156, 157, 158, 159, 175, 176, 177,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1493) 	178, 179, 195, 196, 197, 198, 199, 215, 216, 217, 218, 219, 235, 236,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1494) 	237, 238, 239, 255, 256, 257, 258, 259, 277, 278, 279, 299
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1495) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1496) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1497) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1498)  * Apparently the LPC interface is using the PCICLK for the clocking so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1499)  * PCI needs to be active at the same time.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1500)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1501) static const unsigned int lpc_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1502) 	355, /* LPC_LAD[0] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1503) 	356, /* LPC_SERIRQ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1504) 	377, /* LPC_LAD[2] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1505) 	398, /* LPC_LFRAME# */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1506) 	316, /* LPC_LAD[3] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1507) 	399, /* LPC_LAD[1] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1508) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1509) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1510) /* Character LCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1511) static const unsigned int lcd_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1512) 	391, 351, 310, 371, 353, 311, 394, 374, 314, 359, 339
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1513) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1514) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1515) static const unsigned int ssp_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1516) 	355, /* SSP_97RST# SSP AC97 Reset, active low */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1517) 	356, /* SSP_FSC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1518) 	377, /* SSP_ECLK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1519) 	398, /* SSP_TXD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1520) 	316, /* SSP_RXD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1521) 	399, /* SSP_SCLK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1522) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1523) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1524) static const unsigned int uart_rxtx_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1525) 	313, /* UART_SIN serial input, RX */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1526) 	335, /* UART_SOUT serial output, TX */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1527) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1528) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1529) static const unsigned int uart_modem_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1530) 	355, /* UART_NDCD DCD carrier detect */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1531) 	356, /* UART_NDTR DTR data terminal ready */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1532) 	377, /* UART_NDSR DSR data set ready */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1533) 	398, /* UART_NRTS RTS request to send */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1534) 	316, /* UART_NCTS CTS clear to send */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1535) 	399, /* UART_NRI RI ring indicator */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1536) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1537) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1538) static const unsigned int tvc_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1539) 	353, /* TVC_DATA[0] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1540) 	311, /* TVC_DATA[1] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1541) 	394, /* TVC_DATA[2] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1542) 	374, /* TVC_DATA[3] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1543) 	354, /* TVC_DATA[4] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1544) 	395, /* TVC_DATA[5] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1545) 	312, /* TVC_DATA[6] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1546) 	334, /* TVC_DATA[7] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1547) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1548) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1549) static const unsigned int tvc_clk_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1550) 	333, /* TVC_CLK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1551) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1552) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1553) /* NAND flash pins */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1554) static const unsigned int nflash_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1555) 	243, 260, 261, 224, 280, 262, 281, 264, 300, 263, 282, 301, 320, 283,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1556) 	302, 321, 337, 358, 295, 359, 339, 275, 298
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1557) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1558) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1559) /* Parallel (NOR) flash pins, D[0-15], A[16-25], CE0, CE1, RB, WE, OE, ALE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1560) static const unsigned int pflash_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1561) 	221, 200, 222, 201, 220, 243, 260, 261, 224, 280, 262, 281, 264, 300,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1562) 	263, 282, 301, 320, 283, 302, 321, 317, 379, 295, 359, 339, 297, 318,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1563) 	276, 319, 275, 298
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1564) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1565) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1566) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1567)  * The parallel flash can be set up in a 26-bit address bus mode exposing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1568)  * A[0-15] (A[15] takes the place of ALE), but it has the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1569)  * side effect of stealing pins from GMAC1 and TVC so these blocks cannot be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1570)  * used at the same time.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1571)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1572) static const unsigned int pflash_3516_pins_extended[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1573) 	221, 200, 222, 201, 220, 243, 260, 261, 224, 280, 262, 281, 264, 300,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1574) 	263, 282, 301, 320, 283, 302, 321, 317, 379, 295, 359, 339, 297, 318,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1575) 	276, 319, 275, 298,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1576) 	/* The extra pins */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1577) 	349, 308, 369, 389, 329, 350, 370, 309, 390, 391, 351, 310, 371, 330,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1578) 	333
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1579) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1580) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1581) /* Serial flash pins CE0, CE1, DI, DO, CK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1582) static const unsigned int sflash_3516_pins[] = { 296, 338, 295, 359, 339 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1583) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1584) /* The GPIO0A (0-4) pins overlap with TVC and extended parallel flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1585) static const unsigned int gpio0a_3516_pins[] = { 354, 395, 312, 334 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1586) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1587) /* The GPIO0B (5-7) pins overlap with ICE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1588) static const unsigned int gpio0b_3516_pins[] = { 375, 396, 376 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1589) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1590) /* The GPIO0C (8,11-15) pins overlap with LPC, UART and SSP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1591) static const unsigned int gpio0c_3516_pins[] = { 355, 356, 377, 398, 316, 399 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1592) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1593) /* The GPIO0D (9,10) pins overlap with UART RX/TX */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1594) static const unsigned int gpio0d_3516_pins[] = { 313, 335 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1595) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1596) /* The GPIO0E (16) pins overlap with LCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1597) static const unsigned int gpio0e_3516_pins[] = { 314 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1598) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1599) /* The GPIO0F (17,18) pins overlap with NAND flash CE0, CE1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1600) static const unsigned int gpio0f_3516_pins[] = { 337, 358 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1601) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1602) /* The GPIO0G (19,20,26-29) pins overlap with parallel flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1603) static const unsigned int gpio0g_3516_pins[] = { 317, 379, 297, 318, 276, 319 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1604) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1605) /* The GPIO0H (21,22) pins overlap with serial flash CE0, CE1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1606) static const unsigned int gpio0h_3516_pins[] = { 296, 338 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1607) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1608) /* The GPIO0I (23) pins overlap with all flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1609) static const unsigned int gpio0i_3516_pins[] = { 295 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1610) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1611) /* The GPIO0J (24,25) pins overlap with all flash and LCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1612) static const unsigned int gpio0j_3516_pins[] = { 359, 339 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1613) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1614) /* The GPIO0K (30,31) pins overlap with NAND flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1615) static const unsigned int gpio0k_3516_pins[] = { 275, 298 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1616) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1617) /* The GPIO0L (0) pins overlap with TVC_CLK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1618) static const unsigned int gpio0l_3516_pins[] = { 333 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1619) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1620) /* The GPIO1A (0-4) pins that overlap with IDE and parallel flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1621) static const unsigned int gpio1a_3516_pins[] = { 221, 200, 222, 201, 220 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1622) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1623) /* The GPIO1B (5-10,27) pins overlap with just IDE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1624) static const unsigned int gpio1b_3516_pins[] = { 241, 223, 240, 204, 242, 244, 360 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1625) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1626) /* The GPIO1C (11-26) pins overlap with IDE, parallel flash and NAND flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1627) static const unsigned int gpio1c_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1628) 	243, 260, 261, 224, 280, 262, 281, 264, 300, 263, 282, 301, 320, 283,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1629) 	302, 321
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1630) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1631) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1632) /* The GPIO1D (28-31) pins overlap with TVC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1633) static const unsigned int gpio1d_3516_pins[] = { 353, 311, 394, 374 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1634) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1635) /* The GPIO2A (0-3) pins overlap with GMII GMAC1 and extended parallel flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1636) static const unsigned int gpio2a_3516_pins[] = { 308, 369, 389, 329 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1637) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1638) /* The GPIO2B (4-7) pins overlap with GMII GMAC1, extended parallel flash and LCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1639) static const unsigned int gpio2b_3516_pins[] = { 391, 351, 310, 371 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1640) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1641) /* The GPIO2C (8-31) pins overlap with PCI */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1642) static const unsigned int gpio2c_3516_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1643) 	259, 237, 238, 239, 215, 216, 217, 218, 177, 159, 158, 175, 176, 139,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1644) 	157, 138, 137, 156, 118, 155, 99, 98, 136, 117
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1645) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1646) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1647) /* Groups for the 3516 SoC/package */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1648) static const struct gemini_pin_group gemini_3516_pin_groups[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1649) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1650) 		.name = "gndgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1651) 		.pins = gnd_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1652) 		.num_pins = ARRAY_SIZE(gnd_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1653) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1654) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1655) 		.name = "dramgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1656) 		.pins = dram_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1657) 		.num_pins = ARRAY_SIZE(dram_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1658) 		.mask = DRAM_PADS_POWERDOWN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1659) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1660) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1661) 		.name = "rtcgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1662) 		.pins = rtc_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1663) 		.num_pins = ARRAY_SIZE(rtc_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1664) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1665) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1666) 		.name = "powergrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1667) 		.pins = power_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1668) 		.num_pins = ARRAY_SIZE(power_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1669) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1670) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1671) 		.name = "cirgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1672) 		.pins = cir_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1673) 		.num_pins = ARRAY_SIZE(cir_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1674) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1675) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1676) 		.name = "systemgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1677) 		.pins = system_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1678) 		.num_pins = ARRAY_SIZE(system_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1679) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1680) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1681) 		.name = "vcontrolgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1682) 		.pins = vcontrol_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1683) 		.num_pins = ARRAY_SIZE(vcontrol_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1684) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1685) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1686) 		.name = "icegrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1687) 		.pins = ice_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1688) 		.num_pins = ARRAY_SIZE(ice_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1689) 		/* Conflict with some GPIO groups */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1690) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1691) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1692) 		.name = "idegrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1693) 		.pins = ide_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1694) 		.num_pins = ARRAY_SIZE(ide_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1695) 		/* Conflict with all flash usage */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1696) 		.value = IDE_PADS_ENABLE | NAND_PADS_DISABLE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1697) 			PFLASH_PADS_DISABLE | SFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1698) 		.driving_mask = GENMASK(21, 20),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1699) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1700) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1701) 		.name = "satagrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1702) 		.pins = sata_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1703) 		.num_pins = ARRAY_SIZE(sata_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1704) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1705) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1706) 		.name = "usbgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1707) 		.pins = usb_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1708) 		.num_pins = ARRAY_SIZE(usb_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1709) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1710) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1711) 		.name = "gmii_gmac0_grp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1712) 		.pins = gmii_gmac0_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1713) 		.num_pins = ARRAY_SIZE(gmii_gmac0_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1714) 		.mask = GEMINI_GMAC_IOSEL_MASK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1715) 		.driving_mask = GENMASK(17, 16),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1716) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1717) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1718) 		.name = "gmii_gmac1_grp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1719) 		.pins = gmii_gmac1_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1720) 		.num_pins = ARRAY_SIZE(gmii_gmac1_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1721) 		/* Bring out RGMII on the GMAC1 pins */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1722) 		.mask = GEMINI_GMAC_IOSEL_MASK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1723) 		.value = GEMINI_GMAC_IOSEL_GMAC0_GMAC1_RGMII,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1724) 		.driving_mask = GENMASK(19, 18),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1725) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1726) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1727) 		.name = "pcigrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1728) 		.pins = pci_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1729) 		.num_pins = ARRAY_SIZE(pci_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1730) 		/* Conflict only with GPIO2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1731) 		.value = PCI_PADS_ENABLE | PCI_CLK_PAD_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1732) 		.driving_mask = GENMASK(23, 22),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1733) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1734) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1735) 		.name = "lpcgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1736) 		.pins = lpc_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1737) 		.num_pins = ARRAY_SIZE(lpc_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1738) 		/* Conflict with SSP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1739) 		.mask = SSP_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1740) 		.value = LPC_PADS_ENABLE | LPC_CLK_PAD_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1741) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1742) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1743) 		.name = "lcdgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1744) 		.pins = lcd_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1745) 		.num_pins = ARRAY_SIZE(lcd_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1746) 		.mask = TVC_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1747) 		.value = LCD_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1748) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1749) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1750) 		.name = "sspgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1751) 		.pins = ssp_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1752) 		.num_pins = ARRAY_SIZE(ssp_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1753) 		/* Conflict with LPC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1754) 		.mask = LPC_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1755) 		.value = SSP_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1756) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1757) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1758) 		.name = "uartrxtxgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1759) 		.pins = uart_rxtx_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1760) 		.num_pins = ARRAY_SIZE(uart_rxtx_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1761) 		/* No conflicts except GPIO */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1762) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1763) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1764) 		.name = "uartmodemgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1765) 		.pins = uart_modem_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1766) 		.num_pins = ARRAY_SIZE(uart_modem_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1767) 		/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1768) 		 * Conflict with LPC and SSP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1769) 		 * so when those are both disabled, modem UART can thrive.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1770) 		 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1771) 		.mask = LPC_PADS_ENABLE | SSP_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1772) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1773) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1774) 		.name = "tvcgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1775) 		.pins = tvc_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1776) 		.num_pins = ARRAY_SIZE(tvc_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1777) 		/* Conflict with character LCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1778) 		.mask = LCD_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1779) 		.value = TVC_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1780) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1781) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1782) 		.name = "tvcclkgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1783) 		.pins = tvc_clk_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1784) 		.num_pins = ARRAY_SIZE(tvc_clk_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1785) 		.value = TVC_CLK_PAD_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1786) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1787) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1788) 	 * The construction is done such that it is possible to use a serial
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1789) 	 * flash together with a NAND or parallel (NOR) flash, but it is not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1790) 	 * possible to use NAND and parallel flash together. To use serial
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1791) 	 * flash with one of the two others, the muxbits need to be flipped
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1792) 	 * around before any access.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1793) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1794) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1795) 		.name = "nflashgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1796) 		.pins = nflash_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1797) 		.num_pins = ARRAY_SIZE(nflash_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1798) 		/* Conflict with IDE, parallel and serial flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1799) 		.mask = NAND_PADS_DISABLE | IDE_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1800) 		.value = PFLASH_PADS_DISABLE | SFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1801) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1802) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1803) 		.name = "pflashgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1804) 		.pins = pflash_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1805) 		.num_pins = ARRAY_SIZE(pflash_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1806) 		/* Conflict with IDE, NAND and serial flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1807) 		.mask = PFLASH_PADS_DISABLE | IDE_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1808) 		.value = NAND_PADS_DISABLE | SFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1809) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1810) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1811) 		.name = "sflashgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1812) 		.pins = sflash_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1813) 		.num_pins = ARRAY_SIZE(sflash_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1814) 		/* Conflict with IDE, NAND and parallel flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1815) 		.mask = SFLASH_PADS_DISABLE | IDE_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1816) 		.value = NAND_PADS_DISABLE | PFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1817) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1818) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1819) 		.name = "gpio0agrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1820) 		.pins = gpio0a_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1821) 		.num_pins = ARRAY_SIZE(gpio0a_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1822) 		/* Conflict with TVC and ICE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1823) 		.mask = TVC_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1824) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1825) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1826) 		.name = "gpio0bgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1827) 		.pins = gpio0b_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1828) 		.num_pins = ARRAY_SIZE(gpio0b_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1829) 		/* Conflict with ICE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1830) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1831) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1832) 		.name = "gpio0cgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1833) 		.pins = gpio0c_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1834) 		.num_pins = ARRAY_SIZE(gpio0c_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1835) 		/* Conflict with LPC, UART and SSP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1836) 		.mask = LPC_PADS_ENABLE | SSP_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1837) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1838) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1839) 		.name = "gpio0dgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1840) 		.pins = gpio0d_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1841) 		.num_pins = ARRAY_SIZE(gpio0d_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1842) 		/* Conflict with UART */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1843) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1844) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1845) 		.name = "gpio0egrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1846) 		.pins = gpio0e_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1847) 		.num_pins = ARRAY_SIZE(gpio0e_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1848) 		/* Conflict with LCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1849) 		.mask = LCD_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1850) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1851) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1852) 		.name = "gpio0fgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1853) 		.pins = gpio0f_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1854) 		.num_pins = ARRAY_SIZE(gpio0f_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1855) 		/* Conflict with NAND flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1856) 		.value = NAND_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1857) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1858) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1859) 		.name = "gpio0ggrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1860) 		.pins = gpio0g_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1861) 		.num_pins = ARRAY_SIZE(gpio0g_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1862) 		/* Conflict with parallel flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1863) 		.value = PFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1864) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1865) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1866) 		.name = "gpio0hgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1867) 		.pins = gpio0h_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1868) 		.num_pins = ARRAY_SIZE(gpio0h_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1869) 		/* Conflict with serial flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1870) 		.value = SFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1871) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1872) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1873) 		.name = "gpio0igrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1874) 		.pins = gpio0i_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1875) 		.num_pins = ARRAY_SIZE(gpio0i_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1876) 		/* Conflict with all flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1877) 		.value = PFLASH_PADS_DISABLE | NAND_PADS_DISABLE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1878) 			SFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1879) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1880) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1881) 		.name = "gpio0jgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1882) 		.pins = gpio0j_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1883) 		.num_pins = ARRAY_SIZE(gpio0j_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1884) 		/* Conflict with all flash and LCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1885) 		.mask = LCD_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1886) 		.value = PFLASH_PADS_DISABLE | NAND_PADS_DISABLE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1887) 			SFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1888) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1889) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1890) 		.name = "gpio0kgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1891) 		.pins = gpio0k_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1892) 		.num_pins = ARRAY_SIZE(gpio0k_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1893) 		/* Conflict with parallel and NAND flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1894) 		.value = PFLASH_PADS_DISABLE | NAND_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1895) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1896) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1897) 		.name = "gpio0lgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1898) 		.pins = gpio0l_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1899) 		.num_pins = ARRAY_SIZE(gpio0l_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1900) 		/* Conflict with TVE CLK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1901) 		.mask = TVC_CLK_PAD_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1902) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1903) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1904) 		.name = "gpio1agrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1905) 		.pins = gpio1a_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1906) 		.num_pins = ARRAY_SIZE(gpio1a_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1907) 		/* Conflict with IDE and parallel flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1908) 		.mask = IDE_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1909) 		.value = PFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1910) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1911) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1912) 		.name = "gpio1bgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1913) 		.pins = gpio1b_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1914) 		.num_pins = ARRAY_SIZE(gpio1b_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1915) 		/* Conflict with IDE only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1916) 		.mask = IDE_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1917) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1918) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1919) 		.name = "gpio1cgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1920) 		.pins = gpio1c_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1921) 		.num_pins = ARRAY_SIZE(gpio1c_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1922) 		/* Conflict with IDE, parallel and NAND flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1923) 		.mask = IDE_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1924) 		.value = NAND_PADS_DISABLE | PFLASH_PADS_DISABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1925) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1926) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1927) 		.name = "gpio1dgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1928) 		.pins = gpio1d_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1929) 		.num_pins = ARRAY_SIZE(gpio1d_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1930) 		/* Conflict with TVC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1931) 		.mask = TVC_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1932) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1933) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1934) 		.name = "gpio2agrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1935) 		.pins = gpio2a_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1936) 		.num_pins = ARRAY_SIZE(gpio2a_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1937) 		.mask = GEMINI_GMAC_IOSEL_GMAC0_GMAC1_RGMII,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1938) 		/* Conflict with GMII GMAC1 and extended parallel flash */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1939) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1940) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1941) 		.name = "gpio2bgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1942) 		.pins = gpio2b_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1943) 		.num_pins = ARRAY_SIZE(gpio2b_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1944) 		/* Conflict with GMII GMAC1, extended parallel flash and LCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1945) 		.mask = LCD_PADS_ENABLE | GEMINI_GMAC_IOSEL_GMAC0_GMAC1_RGMII,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1946) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1947) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1948) 		.name = "gpio2cgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1949) 		.pins = gpio2c_3516_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1950) 		.num_pins = ARRAY_SIZE(gpio2c_3516_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1951) 		/* Conflict with PCI */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1952) 		.mask = PCI_PADS_ENABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1953) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1954) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1955) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1956) static int gemini_get_groups_count(struct pinctrl_dev *pctldev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1957) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1958) 	struct gemini_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1959) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1960) 	if (pmx->is_3512)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1961) 		return ARRAY_SIZE(gemini_3512_pin_groups);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1962) 	if (pmx->is_3516)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1963) 		return ARRAY_SIZE(gemini_3516_pin_groups);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1964) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1965) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1966) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1967) static const char *gemini_get_group_name(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1968) 					 unsigned int selector)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1969) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1970) 	struct gemini_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1971) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1972) 	if (pmx->is_3512)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1973) 		return gemini_3512_pin_groups[selector].name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1974) 	if (pmx->is_3516)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1975) 		return gemini_3516_pin_groups[selector].name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1976) 	return NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1977) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1978) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1979) static int gemini_get_group_pins(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1980) 				 unsigned int selector,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1981) 				 const unsigned int **pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1982) 				 unsigned int *num_pins)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1983) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1984) 	struct gemini_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1985) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1986) 	/* The special case with the 3516 flash pin */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1987) 	if (pmx->flash_pin &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1988) 	    pmx->is_3512 &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1989) 	    !strcmp(gemini_3512_pin_groups[selector].name, "pflashgrp")) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1990) 		*pins = pflash_3512_pins_extended;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1991) 		*num_pins = ARRAY_SIZE(pflash_3512_pins_extended);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1992) 		return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1993) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1994) 	if (pmx->flash_pin &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1995) 	    pmx->is_3516 &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1996) 	    !strcmp(gemini_3516_pin_groups[selector].name, "pflashgrp")) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1997) 		*pins = pflash_3516_pins_extended;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1998) 		*num_pins = ARRAY_SIZE(pflash_3516_pins_extended);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1999) 		return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2000) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2001) 	if (pmx->is_3512) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2002) 		*pins = gemini_3512_pin_groups[selector].pins;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2003) 		*num_pins = gemini_3512_pin_groups[selector].num_pins;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2004) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2005) 	if (pmx->is_3516) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2006) 		*pins = gemini_3516_pin_groups[selector].pins;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2007) 		*num_pins = gemini_3516_pin_groups[selector].num_pins;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2008) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2009) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2010) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2011) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2012) static void gemini_pin_dbg_show(struct pinctrl_dev *pctldev, struct seq_file *s,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2013) 				unsigned int offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2014) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2015) 	seq_printf(s, " " DRIVER_NAME);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2016) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2017) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2018) static const struct pinctrl_ops gemini_pctrl_ops = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2019) 	.get_groups_count = gemini_get_groups_count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2020) 	.get_group_name = gemini_get_group_name,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2021) 	.get_group_pins = gemini_get_group_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2022) 	.pin_dbg_show = gemini_pin_dbg_show,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2023) 	.dt_node_to_map = pinconf_generic_dt_node_to_map_all,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2024) 	.dt_free_map = pinconf_generic_dt_free_map,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2025) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2026) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2027) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2028)  * struct gemini_pmx_func - describes Gemini pinmux functions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2029)  * @name: the name of this specific function
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2030)  * @groups: corresponding pin groups
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2031)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2032) struct gemini_pmx_func {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2033) 	const char *name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2034) 	const char * const *groups;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2035) 	const unsigned int num_groups;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2036) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2037) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2038) static const char * const dramgrps[] = { "dramgrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2039) static const char * const rtcgrps[] = { "rtcgrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2040) static const char * const powergrps[] = { "powergrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2041) static const char * const cirgrps[] = { "cirgrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2042) static const char * const systemgrps[] = { "systemgrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2043) static const char * const vcontrolgrps[] = { "vcontrolgrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2044) static const char * const icegrps[] = { "icegrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2045) static const char * const idegrps[] = { "idegrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2046) static const char * const satagrps[] = { "satagrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2047) static const char * const usbgrps[] = { "usbgrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2048) static const char * const gmiigrps[] = { "gmii_gmac0_grp", "gmii_gmac1_grp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2049) static const char * const pcigrps[] = { "pcigrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2050) static const char * const lpcgrps[] = { "lpcgrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2051) static const char * const lcdgrps[] = { "lcdgrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2052) static const char * const sspgrps[] = { "sspgrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2053) static const char * const uartgrps[] = { "uartrxtxgrp", "uartmodemgrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2054) static const char * const tvcgrps[] = { "tvcgrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2055) static const char * const nflashgrps[] = { "nflashgrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2056) static const char * const pflashgrps[] = { "pflashgrp", "pflashextgrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2057) static const char * const sflashgrps[] = { "sflashgrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2058) static const char * const gpio0grps[] = { "gpio0agrp", "gpio0bgrp", "gpio0cgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2059) 					  "gpio0dgrp", "gpio0egrp", "gpio0fgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2060) 					  "gpio0ggrp", "gpio0hgrp", "gpio0igrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2061) 					  "gpio0jgrp", "gpio0kgrp", "gpio0lgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2062) 					  "gpio0mgrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2063) static const char * const gpio1grps[] = { "gpio1agrp", "gpio1bgrp", "gpio1cgrp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2064) 					  "gpio1dgrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2065) static const char * const gpio2grps[] = { "gpio2agrp", "gpio2bgrp", "gpio2cgrp" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2066) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2067) static const struct gemini_pmx_func gemini_pmx_functions[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2068) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2069) 		.name = "dram",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2070) 		.groups = dramgrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2071) 		.num_groups = ARRAY_SIZE(idegrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2072) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2073) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2074) 		.name = "rtc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2075) 		.groups = rtcgrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2076) 		.num_groups = ARRAY_SIZE(rtcgrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2077) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2078) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2079) 		.name = "power",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2080) 		.groups = powergrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2081) 		.num_groups = ARRAY_SIZE(powergrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2082) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2083) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2084) 		/* This function is strictly unavailable on 3512 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2085) 		.name = "cir",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2086) 		.groups = cirgrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2087) 		.num_groups = ARRAY_SIZE(cirgrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2088) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2089) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2090) 		.name = "system",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2091) 		.groups = systemgrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2092) 		.num_groups = ARRAY_SIZE(systemgrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2093) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2094) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2095) 		.name = "vcontrol",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2096) 		.groups = vcontrolgrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2097) 		.num_groups = ARRAY_SIZE(vcontrolgrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2098) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2099) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2100) 		.name = "ice",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2101) 		.groups = icegrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2102) 		.num_groups = ARRAY_SIZE(icegrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2103) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2104) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2105) 		.name = "ide",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2106) 		.groups = idegrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2107) 		.num_groups = ARRAY_SIZE(idegrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2108) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2109) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2110) 		.name = "sata",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2111) 		.groups = satagrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2112) 		.num_groups = ARRAY_SIZE(satagrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2113) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2114) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2115) 		.name = "usb",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2116) 		.groups = usbgrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2117) 		.num_groups = ARRAY_SIZE(usbgrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2118) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2119) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2120) 		.name = "gmii",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2121) 		.groups = gmiigrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2122) 		.num_groups = ARRAY_SIZE(gmiigrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2123) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2124) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2125) 		.name = "pci",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2126) 		.groups = pcigrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2127) 		.num_groups = ARRAY_SIZE(pcigrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2128) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2129) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2130) 		.name = "lpc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2131) 		.groups = lpcgrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2132) 		.num_groups = ARRAY_SIZE(lpcgrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2133) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2134) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2135) 		.name = "lcd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2136) 		.groups = lcdgrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2137) 		.num_groups = ARRAY_SIZE(lcdgrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2138) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2139) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2140) 		.name = "ssp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2141) 		.groups = sspgrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2142) 		.num_groups = ARRAY_SIZE(sspgrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2143) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2144) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2145) 		.name = "uart",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2146) 		.groups = uartgrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2147) 		.num_groups = ARRAY_SIZE(uartgrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2148) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2149) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2150) 		.name = "tvc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2151) 		.groups = tvcgrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2152) 		.num_groups = ARRAY_SIZE(tvcgrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2153) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2154) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2155) 		.name = "nflash",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2156) 		.groups = nflashgrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2157) 		.num_groups = ARRAY_SIZE(nflashgrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2158) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2159) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2160) 		.name = "pflash",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2161) 		.groups = pflashgrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2162) 		.num_groups = ARRAY_SIZE(pflashgrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2163) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2164) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2165) 		.name = "sflash",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2166) 		.groups = sflashgrps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2167) 		.num_groups = ARRAY_SIZE(sflashgrps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2168) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2169) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2170) 		.name = "gpio0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2171) 		.groups = gpio0grps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2172) 		.num_groups = ARRAY_SIZE(gpio0grps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2173) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2174) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2175) 		.name = "gpio1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2176) 		.groups = gpio1grps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2177) 		.num_groups = ARRAY_SIZE(gpio1grps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2178) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2179) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2180) 		.name = "gpio2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2181) 		.groups = gpio2grps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2182) 		.num_groups = ARRAY_SIZE(gpio2grps),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2183) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2184) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2185) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2186) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2187) static int gemini_pmx_set_mux(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2188) 			      unsigned int selector,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2189) 			      unsigned int group)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2190) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2191) 	struct gemini_pmx *pmx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2192) 	const struct gemini_pmx_func *func;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2193) 	const struct gemini_pin_group *grp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2194) 	u32 before, after, expected;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2195) 	unsigned long tmp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2196) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2197) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2198) 	pmx = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2199) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2200) 	func = &gemini_pmx_functions[selector];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2201) 	if (pmx->is_3512)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2202) 		grp = &gemini_3512_pin_groups[group];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2203) 	else if (pmx->is_3516)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2204) 		grp = &gemini_3516_pin_groups[group];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2205) 	else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2206) 		dev_err(pmx->dev, "invalid SoC type\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2207) 		return -ENODEV;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2208) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2209) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2210) 	dev_dbg(pmx->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2211) 		"ACTIVATE function \"%s\" with group \"%s\"\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2212) 		func->name, grp->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2213) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2214) 	regmap_read(pmx->map, GLOBAL_MISC_CTRL, &before);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2215) 	regmap_update_bits(pmx->map, GLOBAL_MISC_CTRL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2216) 			   grp->mask | grp->value,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2217) 			   grp->value);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2218) 	regmap_read(pmx->map, GLOBAL_MISC_CTRL, &after);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2219) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2220) 	/* Which bits changed */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2221) 	before &= PADS_MASK;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2222) 	after &= PADS_MASK;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2223) 	expected = before &= ~grp->mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2224) 	expected |= grp->value;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2225) 	expected &= PADS_MASK;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2226) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2227) 	/* Print changed states */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2228) 	tmp = grp->mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2229) 	for_each_set_bit(i, &tmp, PADS_MAXBIT) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2230) 		bool enabled = !(i > 3);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2231) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2232) 		/* Did not go low though it should */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2233) 		if (after & BIT(i)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2234) 			dev_err(pmx->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2235) 				"pin group %s could not be %s: "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2236) 				"probably a hardware limitation\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2237) 				gemini_padgroups[i],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2238) 				enabled ? "enabled" : "disabled");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2239) 			dev_err(pmx->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2240) 				"GLOBAL MISC CTRL before: %08x, after %08x, expected %08x\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2241) 				before, after, expected);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2242) 		} else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2243) 			dev_dbg(pmx->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2244) 				"padgroup %s %s\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2245) 				gemini_padgroups[i],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2246) 				enabled ? "enabled" : "disabled");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2247) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2248) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2249) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2250) 	tmp = grp->value;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2251) 	for_each_set_bit(i, &tmp, PADS_MAXBIT) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2252) 		bool enabled = (i > 3);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2253) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2254) 		/* Did not go high though it should */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2255) 		if (!(after & BIT(i))) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2256) 			dev_err(pmx->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2257) 				"pin group %s could not be %s: "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2258) 				"probably a hardware limitation\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2259) 				gemini_padgroups[i],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2260) 				enabled ? "enabled" : "disabled");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2261) 			dev_err(pmx->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2262) 				"GLOBAL MISC CTRL before: %08x, after %08x, expected %08x\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2263) 				before, after, expected);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2264) 		} else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2265) 			dev_dbg(pmx->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2266) 				"padgroup %s %s\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2267) 				gemini_padgroups[i],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2268) 				enabled ? "enabled" : "disabled");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2269) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2270) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2271) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2272) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2273) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2274) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2275) static int gemini_pmx_get_funcs_count(struct pinctrl_dev *pctldev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2276) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2277) 	return ARRAY_SIZE(gemini_pmx_functions);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2278) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2279) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2280) static const char *gemini_pmx_get_func_name(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2281) 					    unsigned int selector)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2282) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2283) 	return gemini_pmx_functions[selector].name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2284) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2285) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2286) static int gemini_pmx_get_groups(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2287) 				 unsigned int selector,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2288) 				 const char * const **groups,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2289) 				 unsigned int * const num_groups)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2290) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2291) 	*groups = gemini_pmx_functions[selector].groups;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2292) 	*num_groups = gemini_pmx_functions[selector].num_groups;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2293) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2294) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2295) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2296) static const struct pinmux_ops gemini_pmx_ops = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2297) 	.get_functions_count = gemini_pmx_get_funcs_count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2298) 	.get_function_name = gemini_pmx_get_func_name,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2299) 	.get_function_groups = gemini_pmx_get_groups,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2300) 	.set_mux = gemini_pmx_set_mux,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2301) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2302) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2303) #define GEMINI_CFGPIN(_n, _r, _lb, _hb) {	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2304) 	.pin = _n,				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2305) 	.reg = _r,				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2306) 	.mask = GENMASK(_hb, _lb)		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2307) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2308) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2309) static const struct gemini_pin_conf gemini_confs_3512[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2310) 	GEMINI_CFGPIN(259, GLOBAL_GMAC_CTRL_SKEW, 0, 3), /* GMAC0 RXDV */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2311) 	GEMINI_CFGPIN(277, GLOBAL_GMAC_CTRL_SKEW, 4, 7), /* GMAC0 RXC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2312) 	GEMINI_CFGPIN(241, GLOBAL_GMAC_CTRL_SKEW, 8, 11), /* GMAC0 TXEN */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2313) 	GEMINI_CFGPIN(312, GLOBAL_GMAC_CTRL_SKEW, 12, 15), /* GMAC0 TXC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2314) 	GEMINI_CFGPIN(298, GLOBAL_GMAC_CTRL_SKEW, 16, 19), /* GMAC1 RXDV */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2315) 	GEMINI_CFGPIN(280, GLOBAL_GMAC_CTRL_SKEW, 20, 23), /* GMAC1 RXC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2316) 	GEMINI_CFGPIN(316, GLOBAL_GMAC_CTRL_SKEW, 24, 27), /* GMAC1 TXEN */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2317) 	GEMINI_CFGPIN(243, GLOBAL_GMAC_CTRL_SKEW, 28, 31), /* GMAC1 TXC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2318) 	GEMINI_CFGPIN(295, GLOBAL_GMAC0_DATA_SKEW, 0, 3), /* GMAC0 RXD0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2319) 	GEMINI_CFGPIN(313, GLOBAL_GMAC0_DATA_SKEW, 4, 7), /* GMAC0 RXD1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2320) 	GEMINI_CFGPIN(242, GLOBAL_GMAC0_DATA_SKEW, 8, 11), /* GMAC0 RXD2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2321) 	GEMINI_CFGPIN(260, GLOBAL_GMAC0_DATA_SKEW, 12, 15), /* GMAC0 RXD3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2322) 	GEMINI_CFGPIN(294, GLOBAL_GMAC0_DATA_SKEW, 16, 19), /* GMAC0 TXD0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2323) 	GEMINI_CFGPIN(276, GLOBAL_GMAC0_DATA_SKEW, 20, 23), /* GMAC0 TXD1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2324) 	GEMINI_CFGPIN(258, GLOBAL_GMAC0_DATA_SKEW, 24, 27), /* GMAC0 TXD2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2325) 	GEMINI_CFGPIN(240, GLOBAL_GMAC0_DATA_SKEW, 28, 31), /* GMAC0 TXD3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2326) 	GEMINI_CFGPIN(262, GLOBAL_GMAC1_DATA_SKEW, 0, 3), /* GMAC1 RXD0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2327) 	GEMINI_CFGPIN(244, GLOBAL_GMAC1_DATA_SKEW, 4, 7), /* GMAC1 RXD1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2328) 	GEMINI_CFGPIN(317, GLOBAL_GMAC1_DATA_SKEW, 8, 11), /* GMAC1 RXD2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2329) 	GEMINI_CFGPIN(299, GLOBAL_GMAC1_DATA_SKEW, 12, 15), /* GMAC1 RXD3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2330) 	GEMINI_CFGPIN(261, GLOBAL_GMAC1_DATA_SKEW, 16, 19), /* GMAC1 TXD0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2331) 	GEMINI_CFGPIN(279, GLOBAL_GMAC1_DATA_SKEW, 20, 23), /* GMAC1 TXD1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2332) 	GEMINI_CFGPIN(297, GLOBAL_GMAC1_DATA_SKEW, 24, 27), /* GMAC1 TXD2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2333) 	GEMINI_CFGPIN(315, GLOBAL_GMAC1_DATA_SKEW, 28, 31), /* GMAC1 TXD3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2334) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2335) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2336) static const struct gemini_pin_conf gemini_confs_3516[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2337) 	GEMINI_CFGPIN(347, GLOBAL_GMAC_CTRL_SKEW, 0, 3), /* GMAC0 RXDV */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2338) 	GEMINI_CFGPIN(386, GLOBAL_GMAC_CTRL_SKEW, 4, 7), /* GMAC0 RXC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2339) 	GEMINI_CFGPIN(307, GLOBAL_GMAC_CTRL_SKEW, 8, 11), /* GMAC0 TXEN */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2340) 	GEMINI_CFGPIN(327, GLOBAL_GMAC_CTRL_SKEW, 12, 15), /* GMAC0 TXC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2341) 	GEMINI_CFGPIN(309, GLOBAL_GMAC_CTRL_SKEW, 16, 19), /* GMAC1 RXDV */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2342) 	GEMINI_CFGPIN(390, GLOBAL_GMAC_CTRL_SKEW, 20, 23), /* GMAC1 RXC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2343) 	GEMINI_CFGPIN(370, GLOBAL_GMAC_CTRL_SKEW, 24, 27), /* GMAC1 TXEN */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2344) 	GEMINI_CFGPIN(350, GLOBAL_GMAC_CTRL_SKEW, 28, 31), /* GMAC1 TXC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2345) 	GEMINI_CFGPIN(367, GLOBAL_GMAC0_DATA_SKEW, 0, 3), /* GMAC0 RXD0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2346) 	GEMINI_CFGPIN(348, GLOBAL_GMAC0_DATA_SKEW, 4, 7), /* GMAC0 RXD1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2347) 	GEMINI_CFGPIN(387, GLOBAL_GMAC0_DATA_SKEW, 8, 11), /* GMAC0 RXD2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2348) 	GEMINI_CFGPIN(328, GLOBAL_GMAC0_DATA_SKEW, 12, 15), /* GMAC0 RXD3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2349) 	GEMINI_CFGPIN(306, GLOBAL_GMAC0_DATA_SKEW, 16, 19), /* GMAC0 TXD0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2350) 	GEMINI_CFGPIN(325, GLOBAL_GMAC0_DATA_SKEW, 20, 23), /* GMAC0 TXD1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2351) 	GEMINI_CFGPIN(346, GLOBAL_GMAC0_DATA_SKEW, 24, 27), /* GMAC0 TXD2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2352) 	GEMINI_CFGPIN(326, GLOBAL_GMAC0_DATA_SKEW, 28, 31), /* GMAC0 TXD3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2353) 	GEMINI_CFGPIN(391, GLOBAL_GMAC1_DATA_SKEW, 0, 3), /* GMAC1 RXD0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2354) 	GEMINI_CFGPIN(351, GLOBAL_GMAC1_DATA_SKEW, 4, 7), /* GMAC1 RXD1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2355) 	GEMINI_CFGPIN(310, GLOBAL_GMAC1_DATA_SKEW, 8, 11), /* GMAC1 RXD2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2356) 	GEMINI_CFGPIN(371, GLOBAL_GMAC1_DATA_SKEW, 12, 15), /* GMAC1 RXD3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2357) 	GEMINI_CFGPIN(329, GLOBAL_GMAC1_DATA_SKEW, 16, 19), /* GMAC1 TXD0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2358) 	GEMINI_CFGPIN(389, GLOBAL_GMAC1_DATA_SKEW, 20, 23), /* GMAC1 TXD1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2359) 	GEMINI_CFGPIN(369, GLOBAL_GMAC1_DATA_SKEW, 24, 27), /* GMAC1 TXD2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2360) 	GEMINI_CFGPIN(308, GLOBAL_GMAC1_DATA_SKEW, 28, 31), /* GMAC1 TXD3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2361) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2362) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2363) static const struct gemini_pin_conf *gemini_get_pin_conf(struct gemini_pmx *pmx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2364) 							 unsigned int pin)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2365) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2366) 	const struct gemini_pin_conf *retconf;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2367) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2368) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2369) 	for (i = 0; i < pmx->nconfs; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2370) 		retconf = &pmx->confs[i];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2371) 		if (retconf->pin == pin)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2372) 			return retconf;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2373) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2374) 	return NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2375) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2376) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2377) static int gemini_pinconf_get(struct pinctrl_dev *pctldev, unsigned int pin,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2378) 			      unsigned long *config)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2379) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2380) 	struct gemini_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2381) 	enum pin_config_param param = pinconf_to_config_param(*config);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2382) 	const struct gemini_pin_conf *conf;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2383) 	u32 val;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2384) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2385) 	switch (param) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2386) 	case PIN_CONFIG_SKEW_DELAY:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2387) 		conf = gemini_get_pin_conf(pmx, pin);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2388) 		if (!conf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2389) 			return -ENOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2390) 		regmap_read(pmx->map, conf->reg, &val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2391) 		val &= conf->mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2392) 		val >>= (ffs(conf->mask) - 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2393) 		*config = pinconf_to_config_packed(PIN_CONFIG_SKEW_DELAY, val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2394) 		break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2395) 	default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2396) 		return -ENOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2397) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2398) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2399) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2400) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2401) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2402) static int gemini_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2403) 			      unsigned long *configs, unsigned int num_configs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2404) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2405) 	struct gemini_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2406) 	const struct gemini_pin_conf *conf;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2407) 	enum pin_config_param param;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2408) 	u32 arg;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2409) 	int ret = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2410) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2411) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2412) 	for (i = 0; i < num_configs; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2413) 		param = pinconf_to_config_param(configs[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2414) 		arg = pinconf_to_config_argument(configs[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2415) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2416) 		switch (param) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2417) 		case PIN_CONFIG_SKEW_DELAY:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2418) 			if (arg > 0xf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2419) 				return -EINVAL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2420) 			conf = gemini_get_pin_conf(pmx, pin);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2421) 			if (!conf) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2422) 				dev_err(pmx->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2423) 					"invalid pin for skew delay %d\n", pin);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2424) 				return -ENOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2425) 			}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2426) 			arg <<= (ffs(conf->mask) - 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2427) 			dev_dbg(pmx->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2428) 				"set pin %d to skew delay mask %08x, val %08x\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2429) 				pin, conf->mask, arg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2430) 			regmap_update_bits(pmx->map, conf->reg, conf->mask, arg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2431) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2432) 		default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2433) 			dev_err(pmx->dev, "Invalid config param %04x\n", param);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2434) 			return -ENOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2435) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2436) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2437) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2438) 	return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2439) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2440) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2441) static int gemini_pinconf_group_set(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2442) 				    unsigned selector,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2443) 				    unsigned long *configs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2444) 				    unsigned num_configs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2445) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2446) 	struct gemini_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2447) 	const struct gemini_pin_group *grp = NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2448) 	enum pin_config_param param;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2449) 	u32 arg;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2450) 	u32 val;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2451) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2452) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2453) 	if (pmx->is_3512)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2454) 		grp = &gemini_3512_pin_groups[selector];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2455) 	if (pmx->is_3516)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2456) 		grp = &gemini_3516_pin_groups[selector];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2457) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2458) 	/* First figure out if this group supports configs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2459) 	if (!grp->driving_mask) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2460) 		dev_err(pmx->dev, "pin config group \"%s\" does "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2461) 			"not support drive strength setting\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2462) 			grp->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2463) 		return -EINVAL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2464) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2465) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2466) 	for (i = 0; i < num_configs; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2467) 		param = pinconf_to_config_param(configs[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2468) 		arg = pinconf_to_config_argument(configs[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2469) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2470) 		switch (param) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2471) 		case PIN_CONFIG_DRIVE_STRENGTH:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2472) 			switch (arg) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2473) 			case 4:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2474) 				val = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2475) 				break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2476) 			case 8:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2477) 				val = 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2478) 				break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2479) 			case 12:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2480) 				val = 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2481) 				break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2482) 			case 16:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2483) 				val = 3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2484) 				break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2485) 			default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2486) 				dev_err(pmx->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2487) 					"invalid drive strength %d mA\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2488) 					arg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2489) 				return -ENOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2490) 			}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2491) 			val <<= (ffs(grp->driving_mask) - 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2492) 			regmap_update_bits(pmx->map, GLOBAL_IODRIVE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2493) 					   grp->driving_mask,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2494) 					   val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2495) 			dev_dbg(pmx->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2496) 				"set group %s to %d mA drive strength mask %08x val %08x\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2497) 				grp->name, arg, grp->driving_mask, val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2498) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2499) 		default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2500) 			dev_err(pmx->dev, "invalid config param %04x\n", param);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2501) 			return -ENOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2502) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2503) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2504) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2505) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2506) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2507) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2508) static const struct pinconf_ops gemini_pinconf_ops = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2509) 	.pin_config_get = gemini_pinconf_get,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2510) 	.pin_config_set = gemini_pinconf_set,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2511) 	.pin_config_group_set = gemini_pinconf_group_set,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2512) 	.is_generic = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2513) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2514) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2515) static struct pinctrl_desc gemini_pmx_desc = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2516) 	.name = DRIVER_NAME,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2517) 	.pctlops = &gemini_pctrl_ops,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2518) 	.pmxops = &gemini_pmx_ops,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2519) 	.confops = &gemini_pinconf_ops,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2520) 	.owner = THIS_MODULE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2521) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2522) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2523) static int gemini_pmx_probe(struct platform_device *pdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2524) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2525) 	struct gemini_pmx *pmx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2526) 	struct regmap *map;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2527) 	struct device *dev = &pdev->dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2528) 	struct device *parent;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2529) 	unsigned long tmp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2530) 	u32 val;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2531) 	int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2532) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2533) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2534) 	/* Create state holders etc for this driver */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2535) 	pmx = devm_kzalloc(&pdev->dev, sizeof(*pmx), GFP_KERNEL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2536) 	if (!pmx)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2537) 		return -ENOMEM;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2538) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2539) 	pmx->dev = &pdev->dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2540) 	parent = dev->parent;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2541) 	if (!parent) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2542) 		dev_err(dev, "no parent to pin controller\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2543) 		return -ENODEV;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2544) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2545) 	map = syscon_node_to_regmap(parent->of_node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2546) 	if (IS_ERR(map)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2547) 		dev_err(dev, "no syscon regmap\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2548) 		return PTR_ERR(map);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2549) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2550) 	pmx->map = map;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2551) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2552) 	/* Check that regmap works at first call, then no more */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2553) 	ret = regmap_read(map, GLOBAL_WORD_ID, &val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2554) 	if (ret) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2555) 		dev_err(dev, "cannot access regmap\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2556) 		return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2557) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2558) 	val >>= 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2559) 	val &= 0xffff;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2560) 	if (val == 0x3512) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2561) 		pmx->is_3512 = true;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2562) 		pmx->confs = gemini_confs_3512;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2563) 		pmx->nconfs = ARRAY_SIZE(gemini_confs_3512);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2564) 		gemini_pmx_desc.pins = gemini_3512_pins;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2565) 		gemini_pmx_desc.npins = ARRAY_SIZE(gemini_3512_pins);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2566) 		dev_info(dev, "detected 3512 chip variant\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2567) 	} else if (val == 0x3516) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2568) 		pmx->is_3516 = true;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2569) 		pmx->confs = gemini_confs_3516;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2570) 		pmx->nconfs = ARRAY_SIZE(gemini_confs_3516);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2571) 		gemini_pmx_desc.pins = gemini_3516_pins;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2572) 		gemini_pmx_desc.npins = ARRAY_SIZE(gemini_3516_pins);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2573) 		dev_info(dev, "detected 3516 chip variant\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2574) 	} else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2575) 		dev_err(dev, "unknown chip ID: %04x\n", val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2576) 		return -ENODEV;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2577) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2578) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2579) 	ret = regmap_read(map, GLOBAL_MISC_CTRL, &val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2580) 	dev_info(dev, "GLOBAL MISC CTRL at boot: 0x%08x\n", val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2581) 	/* Mask off relevant pads */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2582) 	val &= PADS_MASK;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2583) 	/* Invert the meaning of the DRAM+flash pads */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2584) 	val ^= 0x0f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2585) 	/* Print initial state */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2586) 	tmp = val;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2587) 	for_each_set_bit(i, &tmp, PADS_MAXBIT) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2588) 		dev_dbg(dev, "pad group %s %s\n", gemini_padgroups[i],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2589) 			(val & BIT(i)) ? "enabled" : "disabled");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2590) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2591) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2592) 	/* Check if flash pin is set */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2593) 	regmap_read(map, GLOBAL_STATUS, &val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2594) 	pmx->flash_pin = !!(val & GLOBAL_STATUS_FLPIN);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2595) 	dev_info(dev, "flash pin is %s\n", pmx->flash_pin ? "set" : "not set");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2596) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2597) 	pmx->pctl = devm_pinctrl_register(dev, &gemini_pmx_desc, pmx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2598) 	if (IS_ERR(pmx->pctl)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2599) 		dev_err(dev, "could not register pinmux driver\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2600) 		return PTR_ERR(pmx->pctl);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2601) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2602) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2603) 	dev_info(dev, "initialized Gemini pin control driver\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2604) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2605) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2606) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2607) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2608) static const struct of_device_id gemini_pinctrl_match[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2609) 	{ .compatible = "cortina,gemini-pinctrl" },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2610) 	{},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2611) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2612) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2613) static struct platform_driver gemini_pmx_driver = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2614) 	.driver = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2615) 		.name = DRIVER_NAME,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2616) 		.of_match_table = gemini_pinctrl_match,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2617) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2618) 	.probe = gemini_pmx_probe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2619) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2620) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2621) static int __init gemini_pmx_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2622) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2623) 	return platform_driver_register(&gemini_pmx_driver);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2624) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2625) arch_initcall(gemini_pmx_init);