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)  * Copyright (C) 2013-2017 Broadcom
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    3)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    4)  * This program is free software; you can redistribute it and/or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    5)  * modify it under the terms of the GNU General Public License as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    6)  * published by the Free Software Foundation version 2.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    7)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    8)  * This program is distributed "as is" WITHOUT ANY WARRANTY of any
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    9)  * kind, whether express or implied; without even the implied warranty
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   10)  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   11)  * GNU General Public License for more details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   12)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   14) #include <linux/err.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   15) #include <linux/io.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   16) #include <linux/init.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   17) #include <linux/of.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/pinctrl/pinctrl.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   20) #include <linux/pinctrl/pinmux.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   21) #include <linux/pinctrl/pinconf.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   22) #include <linux/pinctrl/pinconf-generic.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   23) #include <linux/regmap.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   24) #include <linux/slab.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   25) #include "../core.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   26) #include "../pinctrl-utils.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   28) /* BCM281XX Pin Control Registers Definitions */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   29) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   30) /* Function Select bits are the same for all pin control registers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   31) #define BCM281XX_PIN_REG_F_SEL_MASK		0x0700
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   32) #define BCM281XX_PIN_REG_F_SEL_SHIFT		8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   33) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   34) /* Standard pin register */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   35) #define BCM281XX_STD_PIN_REG_DRV_STR_MASK	0x0007
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   36) #define BCM281XX_STD_PIN_REG_DRV_STR_SHIFT	0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   37) #define BCM281XX_STD_PIN_REG_INPUT_DIS_MASK	0x0008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   38) #define BCM281XX_STD_PIN_REG_INPUT_DIS_SHIFT	3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   39) #define BCM281XX_STD_PIN_REG_SLEW_MASK		0x0010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   40) #define BCM281XX_STD_PIN_REG_SLEW_SHIFT		4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   41) #define BCM281XX_STD_PIN_REG_PULL_UP_MASK	0x0020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   42) #define BCM281XX_STD_PIN_REG_PULL_UP_SHIFT	5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   43) #define BCM281XX_STD_PIN_REG_PULL_DN_MASK	0x0040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   44) #define BCM281XX_STD_PIN_REG_PULL_DN_SHIFT	6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   45) #define BCM281XX_STD_PIN_REG_HYST_MASK		0x0080
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   46) #define BCM281XX_STD_PIN_REG_HYST_SHIFT		7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   48) /* I2C pin register */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   49) #define BCM281XX_I2C_PIN_REG_INPUT_DIS_MASK	0x0004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   50) #define BCM281XX_I2C_PIN_REG_INPUT_DIS_SHIFT	2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   51) #define BCM281XX_I2C_PIN_REG_SLEW_MASK		0x0008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   52) #define BCM281XX_I2C_PIN_REG_SLEW_SHIFT		3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   53) #define BCM281XX_I2C_PIN_REG_PULL_UP_STR_MASK	0x0070
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   54) #define BCM281XX_I2C_PIN_REG_PULL_UP_STR_SHIFT	4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   55) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   56) /* HDMI pin register */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   57) #define BCM281XX_HDMI_PIN_REG_INPUT_DIS_MASK	0x0008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   58) #define BCM281XX_HDMI_PIN_REG_INPUT_DIS_SHIFT	3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   59) #define BCM281XX_HDMI_PIN_REG_MODE_MASK		0x0010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   60) #define BCM281XX_HDMI_PIN_REG_MODE_SHIFT	4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   61) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   62) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   63)  * bcm281xx_pin_type - types of pin register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   64)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   65) enum bcm281xx_pin_type {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   66) 	BCM281XX_PIN_TYPE_UNKNOWN = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   67) 	BCM281XX_PIN_TYPE_STD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   68) 	BCM281XX_PIN_TYPE_I2C,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   69) 	BCM281XX_PIN_TYPE_HDMI,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   70) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   72) static enum bcm281xx_pin_type std_pin = BCM281XX_PIN_TYPE_STD;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   73) static enum bcm281xx_pin_type i2c_pin = BCM281XX_PIN_TYPE_I2C;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   74) static enum bcm281xx_pin_type hdmi_pin = BCM281XX_PIN_TYPE_HDMI;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   75) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   76) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   77)  * bcm281xx_pin_function- define pin function
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   78)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   79) struct bcm281xx_pin_function {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   80) 	const char *name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   81) 	const char * const *groups;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   82) 	const unsigned ngroups;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   83) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   85) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   86)  * bcm281xx_pinctrl_data - Broadcom-specific pinctrl data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   87)  * @reg_base - base of pinctrl registers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   88)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   89) struct bcm281xx_pinctrl_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   90) 	void __iomem *reg_base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   91) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   92) 	/* List of all pins */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   93) 	const struct pinctrl_pin_desc *pins;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   94) 	const unsigned npins;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   95) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   96) 	const struct bcm281xx_pin_function *functions;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   97) 	const unsigned nfunctions;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   98) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   99) 	struct regmap *regmap;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  100) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  101) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  102) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  103)  * Pin number definition.  The order here must be the same as defined in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  104)  * PADCTRLREG block in the RDB.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  105)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  106) #define BCM281XX_PIN_ADCSYNC		0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  107) #define BCM281XX_PIN_BAT_RM		1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  108) #define BCM281XX_PIN_BSC1_SCL		2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  109) #define BCM281XX_PIN_BSC1_SDA		3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  110) #define BCM281XX_PIN_BSC2_SCL		4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  111) #define BCM281XX_PIN_BSC2_SDA		5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  112) #define BCM281XX_PIN_CLASSGPWR		6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  113) #define BCM281XX_PIN_CLK_CX8		7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  114) #define BCM281XX_PIN_CLKOUT_0		8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  115) #define BCM281XX_PIN_CLKOUT_1		9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  116) #define BCM281XX_PIN_CLKOUT_2		10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  117) #define BCM281XX_PIN_CLKOUT_3		11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  118) #define BCM281XX_PIN_CLKREQ_IN_0	12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  119) #define BCM281XX_PIN_CLKREQ_IN_1	13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  120) #define BCM281XX_PIN_CWS_SYS_REQ1	14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  121) #define BCM281XX_PIN_CWS_SYS_REQ2	15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  122) #define BCM281XX_PIN_CWS_SYS_REQ3	16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  123) #define BCM281XX_PIN_DIGMIC1_CLK	17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  124) #define BCM281XX_PIN_DIGMIC1_DQ		18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  125) #define BCM281XX_PIN_DIGMIC2_CLK	19
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  126) #define BCM281XX_PIN_DIGMIC2_DQ		20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  127) #define BCM281XX_PIN_GPEN13		21
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  128) #define BCM281XX_PIN_GPEN14		22
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  129) #define BCM281XX_PIN_GPEN15		23
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  130) #define BCM281XX_PIN_GPIO00		24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  131) #define BCM281XX_PIN_GPIO01		25
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  132) #define BCM281XX_PIN_GPIO02		26
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  133) #define BCM281XX_PIN_GPIO03		27
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  134) #define BCM281XX_PIN_GPIO04		28
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  135) #define BCM281XX_PIN_GPIO05		29
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  136) #define BCM281XX_PIN_GPIO06		30
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  137) #define BCM281XX_PIN_GPIO07		31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  138) #define BCM281XX_PIN_GPIO08		32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  139) #define BCM281XX_PIN_GPIO09		33
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  140) #define BCM281XX_PIN_GPIO10		34
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  141) #define BCM281XX_PIN_GPIO11		35
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  142) #define BCM281XX_PIN_GPIO12		36
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  143) #define BCM281XX_PIN_GPIO13		37
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  144) #define BCM281XX_PIN_GPIO14		38
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  145) #define BCM281XX_PIN_GPS_PABLANK	39
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  146) #define BCM281XX_PIN_GPS_TMARK		40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  147) #define BCM281XX_PIN_HDMI_SCL		41
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  148) #define BCM281XX_PIN_HDMI_SDA		42
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  149) #define BCM281XX_PIN_IC_DM		43
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  150) #define BCM281XX_PIN_IC_DP		44
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  151) #define BCM281XX_PIN_KP_COL_IP_0	45
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  152) #define BCM281XX_PIN_KP_COL_IP_1	46
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  153) #define BCM281XX_PIN_KP_COL_IP_2	47
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  154) #define BCM281XX_PIN_KP_COL_IP_3	48
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  155) #define BCM281XX_PIN_KP_ROW_OP_0	49
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  156) #define BCM281XX_PIN_KP_ROW_OP_1	50
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  157) #define BCM281XX_PIN_KP_ROW_OP_2	51
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  158) #define BCM281XX_PIN_KP_ROW_OP_3	52
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  159) #define BCM281XX_PIN_LCD_B_0		53
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  160) #define BCM281XX_PIN_LCD_B_1		54
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  161) #define BCM281XX_PIN_LCD_B_2		55
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  162) #define BCM281XX_PIN_LCD_B_3		56
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  163) #define BCM281XX_PIN_LCD_B_4		57
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  164) #define BCM281XX_PIN_LCD_B_5		58
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  165) #define BCM281XX_PIN_LCD_B_6		59
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  166) #define BCM281XX_PIN_LCD_B_7		60
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  167) #define BCM281XX_PIN_LCD_G_0		61
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  168) #define BCM281XX_PIN_LCD_G_1		62
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  169) #define BCM281XX_PIN_LCD_G_2		63
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  170) #define BCM281XX_PIN_LCD_G_3		64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  171) #define BCM281XX_PIN_LCD_G_4		65
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  172) #define BCM281XX_PIN_LCD_G_5		66
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  173) #define BCM281XX_PIN_LCD_G_6		67
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  174) #define BCM281XX_PIN_LCD_G_7		68
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  175) #define BCM281XX_PIN_LCD_HSYNC		69
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  176) #define BCM281XX_PIN_LCD_OE		70
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  177) #define BCM281XX_PIN_LCD_PCLK		71
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  178) #define BCM281XX_PIN_LCD_R_0		72
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  179) #define BCM281XX_PIN_LCD_R_1		73
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  180) #define BCM281XX_PIN_LCD_R_2		74
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  181) #define BCM281XX_PIN_LCD_R_3		75
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  182) #define BCM281XX_PIN_LCD_R_4		76
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  183) #define BCM281XX_PIN_LCD_R_5		77
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  184) #define BCM281XX_PIN_LCD_R_6		78
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  185) #define BCM281XX_PIN_LCD_R_7		79
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  186) #define BCM281XX_PIN_LCD_VSYNC		80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  187) #define BCM281XX_PIN_MDMGPIO0		81
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  188) #define BCM281XX_PIN_MDMGPIO1		82
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  189) #define BCM281XX_PIN_MDMGPIO2		83
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  190) #define BCM281XX_PIN_MDMGPIO3		84
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  191) #define BCM281XX_PIN_MDMGPIO4		85
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  192) #define BCM281XX_PIN_MDMGPIO5		86
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  193) #define BCM281XX_PIN_MDMGPIO6		87
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  194) #define BCM281XX_PIN_MDMGPIO7		88
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  195) #define BCM281XX_PIN_MDMGPIO8		89
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  196) #define BCM281XX_PIN_MPHI_DATA_0	90
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  197) #define BCM281XX_PIN_MPHI_DATA_1	91
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  198) #define BCM281XX_PIN_MPHI_DATA_2	92
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  199) #define BCM281XX_PIN_MPHI_DATA_3	93
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  200) #define BCM281XX_PIN_MPHI_DATA_4	94
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  201) #define BCM281XX_PIN_MPHI_DATA_5	95
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  202) #define BCM281XX_PIN_MPHI_DATA_6	96
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  203) #define BCM281XX_PIN_MPHI_DATA_7	97
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  204) #define BCM281XX_PIN_MPHI_DATA_8	98
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  205) #define BCM281XX_PIN_MPHI_DATA_9	99
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  206) #define BCM281XX_PIN_MPHI_DATA_10	100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  207) #define BCM281XX_PIN_MPHI_DATA_11	101
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  208) #define BCM281XX_PIN_MPHI_DATA_12	102
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  209) #define BCM281XX_PIN_MPHI_DATA_13	103
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  210) #define BCM281XX_PIN_MPHI_DATA_14	104
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  211) #define BCM281XX_PIN_MPHI_DATA_15	105
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  212) #define BCM281XX_PIN_MPHI_HA0		106
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  213) #define BCM281XX_PIN_MPHI_HAT0		107
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  214) #define BCM281XX_PIN_MPHI_HAT1		108
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  215) #define BCM281XX_PIN_MPHI_HCE0_N	109
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  216) #define BCM281XX_PIN_MPHI_HCE1_N	110
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  217) #define BCM281XX_PIN_MPHI_HRD_N		111
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  218) #define BCM281XX_PIN_MPHI_HWR_N		112
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  219) #define BCM281XX_PIN_MPHI_RUN0		113
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  220) #define BCM281XX_PIN_MPHI_RUN1		114
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  221) #define BCM281XX_PIN_MTX_SCAN_CLK	115
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  222) #define BCM281XX_PIN_MTX_SCAN_DATA	116
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  223) #define BCM281XX_PIN_NAND_AD_0		117
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  224) #define BCM281XX_PIN_NAND_AD_1		118
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  225) #define BCM281XX_PIN_NAND_AD_2		119
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  226) #define BCM281XX_PIN_NAND_AD_3		120
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  227) #define BCM281XX_PIN_NAND_AD_4		121
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  228) #define BCM281XX_PIN_NAND_AD_5		122
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  229) #define BCM281XX_PIN_NAND_AD_6		123
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  230) #define BCM281XX_PIN_NAND_AD_7		124
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  231) #define BCM281XX_PIN_NAND_ALE		125
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  232) #define BCM281XX_PIN_NAND_CEN_0		126
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  233) #define BCM281XX_PIN_NAND_CEN_1		127
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  234) #define BCM281XX_PIN_NAND_CLE		128
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  235) #define BCM281XX_PIN_NAND_OEN		129
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  236) #define BCM281XX_PIN_NAND_RDY_0		130
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  237) #define BCM281XX_PIN_NAND_RDY_1		131
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  238) #define BCM281XX_PIN_NAND_WEN		132
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  239) #define BCM281XX_PIN_NAND_WP		133
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  240) #define BCM281XX_PIN_PC1		134
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  241) #define BCM281XX_PIN_PC2		135
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  242) #define BCM281XX_PIN_PMU_INT		136
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  243) #define BCM281XX_PIN_PMU_SCL		137
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  244) #define BCM281XX_PIN_PMU_SDA		138
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  245) #define BCM281XX_PIN_RFST2G_MTSLOTEN3G	139
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  246) #define BCM281XX_PIN_RGMII_0_RX_CTL	140
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  247) #define BCM281XX_PIN_RGMII_0_RXC	141
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  248) #define BCM281XX_PIN_RGMII_0_RXD_0	142
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  249) #define BCM281XX_PIN_RGMII_0_RXD_1	143
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  250) #define BCM281XX_PIN_RGMII_0_RXD_2	144
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  251) #define BCM281XX_PIN_RGMII_0_RXD_3	145
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  252) #define BCM281XX_PIN_RGMII_0_TX_CTL	146
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  253) #define BCM281XX_PIN_RGMII_0_TXC	147
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  254) #define BCM281XX_PIN_RGMII_0_TXD_0	148
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  255) #define BCM281XX_PIN_RGMII_0_TXD_1	149
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  256) #define BCM281XX_PIN_RGMII_0_TXD_2	150
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  257) #define BCM281XX_PIN_RGMII_0_TXD_3	151
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  258) #define BCM281XX_PIN_RGMII_1_RX_CTL	152
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  259) #define BCM281XX_PIN_RGMII_1_RXC	153
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  260) #define BCM281XX_PIN_RGMII_1_RXD_0	154
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  261) #define BCM281XX_PIN_RGMII_1_RXD_1	155
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  262) #define BCM281XX_PIN_RGMII_1_RXD_2	156
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  263) #define BCM281XX_PIN_RGMII_1_RXD_3	157
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  264) #define BCM281XX_PIN_RGMII_1_TX_CTL	158
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  265) #define BCM281XX_PIN_RGMII_1_TXC	159
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  266) #define BCM281XX_PIN_RGMII_1_TXD_0	160
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  267) #define BCM281XX_PIN_RGMII_1_TXD_1	161
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  268) #define BCM281XX_PIN_RGMII_1_TXD_2	162
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  269) #define BCM281XX_PIN_RGMII_1_TXD_3	163
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  270) #define BCM281XX_PIN_RGMII_GPIO_0	164
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  271) #define BCM281XX_PIN_RGMII_GPIO_1	165
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  272) #define BCM281XX_PIN_RGMII_GPIO_2	166
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  273) #define BCM281XX_PIN_RGMII_GPIO_3	167
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  274) #define BCM281XX_PIN_RTXDATA2G_TXDATA3G1	168
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  275) #define BCM281XX_PIN_RTXEN2G_TXDATA3G2	169
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  276) #define BCM281XX_PIN_RXDATA3G0		170
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  277) #define BCM281XX_PIN_RXDATA3G1		171
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  278) #define BCM281XX_PIN_RXDATA3G2		172
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  279) #define BCM281XX_PIN_SDIO1_CLK		173
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  280) #define BCM281XX_PIN_SDIO1_CMD		174
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  281) #define BCM281XX_PIN_SDIO1_DATA_0	175
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  282) #define BCM281XX_PIN_SDIO1_DATA_1	176
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  283) #define BCM281XX_PIN_SDIO1_DATA_2	177
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  284) #define BCM281XX_PIN_SDIO1_DATA_3	178
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  285) #define BCM281XX_PIN_SDIO4_CLK		179
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  286) #define BCM281XX_PIN_SDIO4_CMD		180
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  287) #define BCM281XX_PIN_SDIO4_DATA_0	181
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  288) #define BCM281XX_PIN_SDIO4_DATA_1	182
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  289) #define BCM281XX_PIN_SDIO4_DATA_2	183
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  290) #define BCM281XX_PIN_SDIO4_DATA_3	184
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  291) #define BCM281XX_PIN_SIM_CLK		185
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  292) #define BCM281XX_PIN_SIM_DATA		186
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  293) #define BCM281XX_PIN_SIM_DET		187
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  294) #define BCM281XX_PIN_SIM_RESETN		188
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  295) #define BCM281XX_PIN_SIM2_CLK		189
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  296) #define BCM281XX_PIN_SIM2_DATA		190
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  297) #define BCM281XX_PIN_SIM2_DET		191
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  298) #define BCM281XX_PIN_SIM2_RESETN	192
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  299) #define BCM281XX_PIN_SRI_C		193
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  300) #define BCM281XX_PIN_SRI_D		194
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  301) #define BCM281XX_PIN_SRI_E		195
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  302) #define BCM281XX_PIN_SSP_EXTCLK		196
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  303) #define BCM281XX_PIN_SSP0_CLK		197
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  304) #define BCM281XX_PIN_SSP0_FS		198
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  305) #define BCM281XX_PIN_SSP0_RXD		199
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  306) #define BCM281XX_PIN_SSP0_TXD		200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  307) #define BCM281XX_PIN_SSP2_CLK		201
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  308) #define BCM281XX_PIN_SSP2_FS_0		202
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  309) #define BCM281XX_PIN_SSP2_FS_1		203
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  310) #define BCM281XX_PIN_SSP2_FS_2		204
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  311) #define BCM281XX_PIN_SSP2_FS_3		205
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  312) #define BCM281XX_PIN_SSP2_RXD_0		206
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  313) #define BCM281XX_PIN_SSP2_RXD_1		207
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  314) #define BCM281XX_PIN_SSP2_TXD_0		208
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  315) #define BCM281XX_PIN_SSP2_TXD_1		209
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  316) #define BCM281XX_PIN_SSP3_CLK		210
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  317) #define BCM281XX_PIN_SSP3_FS		211
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  318) #define BCM281XX_PIN_SSP3_RXD		212
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  319) #define BCM281XX_PIN_SSP3_TXD		213
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  320) #define BCM281XX_PIN_SSP4_CLK		214
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  321) #define BCM281XX_PIN_SSP4_FS		215
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  322) #define BCM281XX_PIN_SSP4_RXD		216
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  323) #define BCM281XX_PIN_SSP4_TXD		217
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  324) #define BCM281XX_PIN_SSP5_CLK		218
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  325) #define BCM281XX_PIN_SSP5_FS		219
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  326) #define BCM281XX_PIN_SSP5_RXD		220
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  327) #define BCM281XX_PIN_SSP5_TXD		221
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  328) #define BCM281XX_PIN_SSP6_CLK		222
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  329) #define BCM281XX_PIN_SSP6_FS		223
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  330) #define BCM281XX_PIN_SSP6_RXD		224
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  331) #define BCM281XX_PIN_SSP6_TXD		225
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  332) #define BCM281XX_PIN_STAT_1		226
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  333) #define BCM281XX_PIN_STAT_2		227
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  334) #define BCM281XX_PIN_SYSCLKEN		228
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  335) #define BCM281XX_PIN_TRACECLK		229
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  336) #define BCM281XX_PIN_TRACEDT00		230
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  337) #define BCM281XX_PIN_TRACEDT01		231
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  338) #define BCM281XX_PIN_TRACEDT02		232
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  339) #define BCM281XX_PIN_TRACEDT03		233
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  340) #define BCM281XX_PIN_TRACEDT04		234
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  341) #define BCM281XX_PIN_TRACEDT05		235
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  342) #define BCM281XX_PIN_TRACEDT06		236
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  343) #define BCM281XX_PIN_TRACEDT07		237
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  344) #define BCM281XX_PIN_TRACEDT08		238
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  345) #define BCM281XX_PIN_TRACEDT09		239
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  346) #define BCM281XX_PIN_TRACEDT10		240
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  347) #define BCM281XX_PIN_TRACEDT11		241
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  348) #define BCM281XX_PIN_TRACEDT12		242
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  349) #define BCM281XX_PIN_TRACEDT13		243
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  350) #define BCM281XX_PIN_TRACEDT14		244
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  351) #define BCM281XX_PIN_TRACEDT15		245
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  352) #define BCM281XX_PIN_TXDATA3G0		246
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  353) #define BCM281XX_PIN_TXPWRIND		247
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  354) #define BCM281XX_PIN_UARTB1_UCTS	248
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  355) #define BCM281XX_PIN_UARTB1_URTS	249
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  356) #define BCM281XX_PIN_UARTB1_URXD	250
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  357) #define BCM281XX_PIN_UARTB1_UTXD	251
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  358) #define BCM281XX_PIN_UARTB2_URXD	252
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  359) #define BCM281XX_PIN_UARTB2_UTXD	253
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  360) #define BCM281XX_PIN_UARTB3_UCTS	254
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  361) #define BCM281XX_PIN_UARTB3_URTS	255
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  362) #define BCM281XX_PIN_UARTB3_URXD	256
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  363) #define BCM281XX_PIN_UARTB3_UTXD	257
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  364) #define BCM281XX_PIN_UARTB4_UCTS	258
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  365) #define BCM281XX_PIN_UARTB4_URTS	259
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  366) #define BCM281XX_PIN_UARTB4_URXD	260
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  367) #define BCM281XX_PIN_UARTB4_UTXD	261
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  368) #define BCM281XX_PIN_VC_CAM1_SCL	262
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  369) #define BCM281XX_PIN_VC_CAM1_SDA	263
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  370) #define BCM281XX_PIN_VC_CAM2_SCL	264
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  371) #define BCM281XX_PIN_VC_CAM2_SDA	265
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  372) #define BCM281XX_PIN_VC_CAM3_SCL	266
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  373) #define BCM281XX_PIN_VC_CAM3_SDA	267
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  374) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  375) #define BCM281XX_PIN_DESC(a, b, c) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  376) 	{ .number = a, .name = b, .drv_data = &c##_pin }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  377) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  378) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  379)  * Pin description definition.  The order here must be the same as defined in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  380)  * the PADCTRLREG block in the RDB, since the pin number is used as an index
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  381)  * into this array.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  382)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  383) static const struct pinctrl_pin_desc bcm281xx_pinctrl_pins[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  384) 	BCM281XX_PIN_DESC(BCM281XX_PIN_ADCSYNC, "adcsync", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  385) 	BCM281XX_PIN_DESC(BCM281XX_PIN_BAT_RM, "bat_rm", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  386) 	BCM281XX_PIN_DESC(BCM281XX_PIN_BSC1_SCL, "bsc1_scl", i2c),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  387) 	BCM281XX_PIN_DESC(BCM281XX_PIN_BSC1_SDA, "bsc1_sda", i2c),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  388) 	BCM281XX_PIN_DESC(BCM281XX_PIN_BSC2_SCL, "bsc2_scl", i2c),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  389) 	BCM281XX_PIN_DESC(BCM281XX_PIN_BSC2_SDA, "bsc2_sda", i2c),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  390) 	BCM281XX_PIN_DESC(BCM281XX_PIN_CLASSGPWR, "classgpwr", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  391) 	BCM281XX_PIN_DESC(BCM281XX_PIN_CLK_CX8, "clk_cx8", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  392) 	BCM281XX_PIN_DESC(BCM281XX_PIN_CLKOUT_0, "clkout_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  393) 	BCM281XX_PIN_DESC(BCM281XX_PIN_CLKOUT_1, "clkout_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  394) 	BCM281XX_PIN_DESC(BCM281XX_PIN_CLKOUT_2, "clkout_2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  395) 	BCM281XX_PIN_DESC(BCM281XX_PIN_CLKOUT_3, "clkout_3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  396) 	BCM281XX_PIN_DESC(BCM281XX_PIN_CLKREQ_IN_0, "clkreq_in_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  397) 	BCM281XX_PIN_DESC(BCM281XX_PIN_CLKREQ_IN_1, "clkreq_in_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  398) 	BCM281XX_PIN_DESC(BCM281XX_PIN_CWS_SYS_REQ1, "cws_sys_req1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  399) 	BCM281XX_PIN_DESC(BCM281XX_PIN_CWS_SYS_REQ2, "cws_sys_req2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  400) 	BCM281XX_PIN_DESC(BCM281XX_PIN_CWS_SYS_REQ3, "cws_sys_req3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  401) 	BCM281XX_PIN_DESC(BCM281XX_PIN_DIGMIC1_CLK, "digmic1_clk", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  402) 	BCM281XX_PIN_DESC(BCM281XX_PIN_DIGMIC1_DQ, "digmic1_dq", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  403) 	BCM281XX_PIN_DESC(BCM281XX_PIN_DIGMIC2_CLK, "digmic2_clk", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  404) 	BCM281XX_PIN_DESC(BCM281XX_PIN_DIGMIC2_DQ, "digmic2_dq", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  405) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPEN13, "gpen13", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  406) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPEN14, "gpen14", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  407) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPEN15, "gpen15", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  408) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPIO00, "gpio00", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  409) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPIO01, "gpio01", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  410) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPIO02, "gpio02", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  411) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPIO03, "gpio03", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  412) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPIO04, "gpio04", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  413) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPIO05, "gpio05", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  414) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPIO06, "gpio06", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  415) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPIO07, "gpio07", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  416) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPIO08, "gpio08", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  417) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPIO09, "gpio09", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  418) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPIO10, "gpio10", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  419) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPIO11, "gpio11", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  420) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPIO12, "gpio12", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  421) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPIO13, "gpio13", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  422) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPIO14, "gpio14", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  423) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPS_PABLANK, "gps_pablank", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  424) 	BCM281XX_PIN_DESC(BCM281XX_PIN_GPS_TMARK, "gps_tmark", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  425) 	BCM281XX_PIN_DESC(BCM281XX_PIN_HDMI_SCL, "hdmi_scl", hdmi),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  426) 	BCM281XX_PIN_DESC(BCM281XX_PIN_HDMI_SDA, "hdmi_sda", hdmi),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  427) 	BCM281XX_PIN_DESC(BCM281XX_PIN_IC_DM, "ic_dm", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  428) 	BCM281XX_PIN_DESC(BCM281XX_PIN_IC_DP, "ic_dp", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  429) 	BCM281XX_PIN_DESC(BCM281XX_PIN_KP_COL_IP_0, "kp_col_ip_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  430) 	BCM281XX_PIN_DESC(BCM281XX_PIN_KP_COL_IP_1, "kp_col_ip_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  431) 	BCM281XX_PIN_DESC(BCM281XX_PIN_KP_COL_IP_2, "kp_col_ip_2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  432) 	BCM281XX_PIN_DESC(BCM281XX_PIN_KP_COL_IP_3, "kp_col_ip_3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  433) 	BCM281XX_PIN_DESC(BCM281XX_PIN_KP_ROW_OP_0, "kp_row_op_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  434) 	BCM281XX_PIN_DESC(BCM281XX_PIN_KP_ROW_OP_1, "kp_row_op_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  435) 	BCM281XX_PIN_DESC(BCM281XX_PIN_KP_ROW_OP_2, "kp_row_op_2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  436) 	BCM281XX_PIN_DESC(BCM281XX_PIN_KP_ROW_OP_3, "kp_row_op_3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  437) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_B_0, "lcd_b_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  438) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_B_1, "lcd_b_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  439) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_B_2, "lcd_b_2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  440) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_B_3, "lcd_b_3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  441) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_B_4, "lcd_b_4", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  442) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_B_5, "lcd_b_5", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  443) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_B_6, "lcd_b_6", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  444) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_B_7, "lcd_b_7", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  445) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_G_0, "lcd_g_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  446) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_G_1, "lcd_g_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  447) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_G_2, "lcd_g_2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  448) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_G_3, "lcd_g_3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  449) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_G_4, "lcd_g_4", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  450) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_G_5, "lcd_g_5", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  451) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_G_6, "lcd_g_6", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  452) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_G_7, "lcd_g_7", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  453) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_HSYNC, "lcd_hsync", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  454) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_OE, "lcd_oe", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  455) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_PCLK, "lcd_pclk", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  456) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_R_0, "lcd_r_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  457) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_R_1, "lcd_r_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  458) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_R_2, "lcd_r_2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  459) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_R_3, "lcd_r_3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  460) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_R_4, "lcd_r_4", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  461) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_R_5, "lcd_r_5", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  462) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_R_6, "lcd_r_6", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  463) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_R_7, "lcd_r_7", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  464) 	BCM281XX_PIN_DESC(BCM281XX_PIN_LCD_VSYNC, "lcd_vsync", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  465) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MDMGPIO0, "mdmgpio0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  466) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MDMGPIO1, "mdmgpio1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  467) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MDMGPIO2, "mdmgpio2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  468) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MDMGPIO3, "mdmgpio3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  469) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MDMGPIO4, "mdmgpio4", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  470) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MDMGPIO5, "mdmgpio5", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  471) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MDMGPIO6, "mdmgpio6", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  472) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MDMGPIO7, "mdmgpio7", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  473) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MDMGPIO8, "mdmgpio8", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  474) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_DATA_0, "mphi_data_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  475) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_DATA_1, "mphi_data_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  476) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_DATA_2, "mphi_data_2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  477) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_DATA_3, "mphi_data_3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  478) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_DATA_4, "mphi_data_4", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  479) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_DATA_5, "mphi_data_5", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  480) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_DATA_6, "mphi_data_6", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  481) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_DATA_7, "mphi_data_7", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  482) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_DATA_8, "mphi_data_8", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  483) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_DATA_9, "mphi_data_9", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  484) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_DATA_10, "mphi_data_10", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  485) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_DATA_11, "mphi_data_11", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  486) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_DATA_12, "mphi_data_12", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  487) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_DATA_13, "mphi_data_13", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  488) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_DATA_14, "mphi_data_14", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  489) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_DATA_15, "mphi_data_15", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  490) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_HA0, "mphi_ha0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  491) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_HAT0, "mphi_hat0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  492) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_HAT1, "mphi_hat1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  493) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_HCE0_N, "mphi_hce0_n", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  494) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_HCE1_N, "mphi_hce1_n", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  495) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_HRD_N, "mphi_hrd_n", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  496) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_HWR_N, "mphi_hwr_n", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  497) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_RUN0, "mphi_run0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  498) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MPHI_RUN1, "mphi_run1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  499) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MTX_SCAN_CLK, "mtx_scan_clk", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  500) 	BCM281XX_PIN_DESC(BCM281XX_PIN_MTX_SCAN_DATA, "mtx_scan_data", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  501) 	BCM281XX_PIN_DESC(BCM281XX_PIN_NAND_AD_0, "nand_ad_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  502) 	BCM281XX_PIN_DESC(BCM281XX_PIN_NAND_AD_1, "nand_ad_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  503) 	BCM281XX_PIN_DESC(BCM281XX_PIN_NAND_AD_2, "nand_ad_2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  504) 	BCM281XX_PIN_DESC(BCM281XX_PIN_NAND_AD_3, "nand_ad_3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  505) 	BCM281XX_PIN_DESC(BCM281XX_PIN_NAND_AD_4, "nand_ad_4", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  506) 	BCM281XX_PIN_DESC(BCM281XX_PIN_NAND_AD_5, "nand_ad_5", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  507) 	BCM281XX_PIN_DESC(BCM281XX_PIN_NAND_AD_6, "nand_ad_6", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  508) 	BCM281XX_PIN_DESC(BCM281XX_PIN_NAND_AD_7, "nand_ad_7", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  509) 	BCM281XX_PIN_DESC(BCM281XX_PIN_NAND_ALE, "nand_ale", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  510) 	BCM281XX_PIN_DESC(BCM281XX_PIN_NAND_CEN_0, "nand_cen_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  511) 	BCM281XX_PIN_DESC(BCM281XX_PIN_NAND_CEN_1, "nand_cen_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  512) 	BCM281XX_PIN_DESC(BCM281XX_PIN_NAND_CLE, "nand_cle", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  513) 	BCM281XX_PIN_DESC(BCM281XX_PIN_NAND_OEN, "nand_oen", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  514) 	BCM281XX_PIN_DESC(BCM281XX_PIN_NAND_RDY_0, "nand_rdy_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  515) 	BCM281XX_PIN_DESC(BCM281XX_PIN_NAND_RDY_1, "nand_rdy_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  516) 	BCM281XX_PIN_DESC(BCM281XX_PIN_NAND_WEN, "nand_wen", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  517) 	BCM281XX_PIN_DESC(BCM281XX_PIN_NAND_WP, "nand_wp", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  518) 	BCM281XX_PIN_DESC(BCM281XX_PIN_PC1, "pc1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  519) 	BCM281XX_PIN_DESC(BCM281XX_PIN_PC2, "pc2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  520) 	BCM281XX_PIN_DESC(BCM281XX_PIN_PMU_INT, "pmu_int", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  521) 	BCM281XX_PIN_DESC(BCM281XX_PIN_PMU_SCL, "pmu_scl", i2c),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  522) 	BCM281XX_PIN_DESC(BCM281XX_PIN_PMU_SDA, "pmu_sda", i2c),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  523) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RFST2G_MTSLOTEN3G, "rfst2g_mtsloten3g",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  524) 		std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  525) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_0_RX_CTL, "rgmii_0_rx_ctl", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  526) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_0_RXC, "rgmii_0_rxc", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  527) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_0_RXD_0, "rgmii_0_rxd_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  528) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_0_RXD_1, "rgmii_0_rxd_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  529) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_0_RXD_2, "rgmii_0_rxd_2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  530) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_0_RXD_3, "rgmii_0_rxd_3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  531) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_0_TX_CTL, "rgmii_0_tx_ctl", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  532) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_0_TXC, "rgmii_0_txc", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  533) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_0_TXD_0, "rgmii_0_txd_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  534) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_0_TXD_1, "rgmii_0_txd_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  535) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_0_TXD_2, "rgmii_0_txd_2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  536) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_0_TXD_3, "rgmii_0_txd_3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  537) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_1_RX_CTL, "rgmii_1_rx_ctl", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  538) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_1_RXC, "rgmii_1_rxc", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  539) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_1_RXD_0, "rgmii_1_rxd_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  540) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_1_RXD_1, "rgmii_1_rxd_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  541) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_1_RXD_2, "rgmii_1_rxd_2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  542) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_1_RXD_3, "rgmii_1_rxd_3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  543) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_1_TX_CTL, "rgmii_1_tx_ctl", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  544) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_1_TXC, "rgmii_1_txc", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  545) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_1_TXD_0, "rgmii_1_txd_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  546) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_1_TXD_1, "rgmii_1_txd_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  547) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_1_TXD_2, "rgmii_1_txd_2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  548) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_1_TXD_3, "rgmii_1_txd_3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  549) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_GPIO_0, "rgmii_gpio_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  550) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_GPIO_1, "rgmii_gpio_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  551) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_GPIO_2, "rgmii_gpio_2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  552) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RGMII_GPIO_3, "rgmii_gpio_3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  553) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RTXDATA2G_TXDATA3G1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  554) 		"rtxdata2g_txdata3g1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  555) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RTXEN2G_TXDATA3G2, "rtxen2g_txdata3g2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  556) 		std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  557) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RXDATA3G0, "rxdata3g0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  558) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RXDATA3G1, "rxdata3g1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  559) 	BCM281XX_PIN_DESC(BCM281XX_PIN_RXDATA3G2, "rxdata3g2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  560) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SDIO1_CLK, "sdio1_clk", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  561) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SDIO1_CMD, "sdio1_cmd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  562) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SDIO1_DATA_0, "sdio1_data_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  563) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SDIO1_DATA_1, "sdio1_data_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  564) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SDIO1_DATA_2, "sdio1_data_2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  565) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SDIO1_DATA_3, "sdio1_data_3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  566) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SDIO4_CLK, "sdio4_clk", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  567) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SDIO4_CMD, "sdio4_cmd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  568) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SDIO4_DATA_0, "sdio4_data_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  569) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SDIO4_DATA_1, "sdio4_data_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  570) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SDIO4_DATA_2, "sdio4_data_2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  571) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SDIO4_DATA_3, "sdio4_data_3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  572) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SIM_CLK, "sim_clk", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  573) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SIM_DATA, "sim_data", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  574) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SIM_DET, "sim_det", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  575) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SIM_RESETN, "sim_resetn", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  576) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SIM2_CLK, "sim2_clk", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  577) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SIM2_DATA, "sim2_data", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  578) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SIM2_DET, "sim2_det", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  579) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SIM2_RESETN, "sim2_resetn", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  580) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SRI_C, "sri_c", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  581) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SRI_D, "sri_d", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  582) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SRI_E, "sri_e", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  583) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP_EXTCLK, "ssp_extclk", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  584) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP0_CLK, "ssp0_clk", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  585) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP0_FS, "ssp0_fs", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  586) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP0_RXD, "ssp0_rxd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  587) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP0_TXD, "ssp0_txd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  588) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP2_CLK, "ssp2_clk", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  589) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP2_FS_0, "ssp2_fs_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  590) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP2_FS_1, "ssp2_fs_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  591) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP2_FS_2, "ssp2_fs_2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  592) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP2_FS_3, "ssp2_fs_3", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  593) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP2_RXD_0, "ssp2_rxd_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  594) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP2_RXD_1, "ssp2_rxd_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  595) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP2_TXD_0, "ssp2_txd_0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  596) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP2_TXD_1, "ssp2_txd_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  597) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP3_CLK, "ssp3_clk", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  598) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP3_FS, "ssp3_fs", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  599) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP3_RXD, "ssp3_rxd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  600) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP3_TXD, "ssp3_txd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  601) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP4_CLK, "ssp4_clk", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  602) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP4_FS, "ssp4_fs", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  603) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP4_RXD, "ssp4_rxd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  604) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP4_TXD, "ssp4_txd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  605) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP5_CLK, "ssp5_clk", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  606) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP5_FS, "ssp5_fs", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  607) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP5_RXD, "ssp5_rxd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  608) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP5_TXD, "ssp5_txd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  609) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP6_CLK, "ssp6_clk", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  610) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP6_FS, "ssp6_fs", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  611) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP6_RXD, "ssp6_rxd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  612) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SSP6_TXD, "ssp6_txd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  613) 	BCM281XX_PIN_DESC(BCM281XX_PIN_STAT_1, "stat_1", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  614) 	BCM281XX_PIN_DESC(BCM281XX_PIN_STAT_2, "stat_2", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  615) 	BCM281XX_PIN_DESC(BCM281XX_PIN_SYSCLKEN, "sysclken", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  616) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TRACECLK, "traceclk", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  617) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TRACEDT00, "tracedt00", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  618) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TRACEDT01, "tracedt01", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  619) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TRACEDT02, "tracedt02", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  620) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TRACEDT03, "tracedt03", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  621) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TRACEDT04, "tracedt04", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  622) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TRACEDT05, "tracedt05", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  623) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TRACEDT06, "tracedt06", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  624) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TRACEDT07, "tracedt07", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  625) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TRACEDT08, "tracedt08", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  626) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TRACEDT09, "tracedt09", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  627) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TRACEDT10, "tracedt10", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  628) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TRACEDT11, "tracedt11", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  629) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TRACEDT12, "tracedt12", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  630) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TRACEDT13, "tracedt13", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  631) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TRACEDT14, "tracedt14", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  632) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TRACEDT15, "tracedt15", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  633) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TXDATA3G0, "txdata3g0", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  634) 	BCM281XX_PIN_DESC(BCM281XX_PIN_TXPWRIND, "txpwrind", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  635) 	BCM281XX_PIN_DESC(BCM281XX_PIN_UARTB1_UCTS, "uartb1_ucts", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  636) 	BCM281XX_PIN_DESC(BCM281XX_PIN_UARTB1_URTS, "uartb1_urts", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  637) 	BCM281XX_PIN_DESC(BCM281XX_PIN_UARTB1_URXD, "uartb1_urxd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  638) 	BCM281XX_PIN_DESC(BCM281XX_PIN_UARTB1_UTXD, "uartb1_utxd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  639) 	BCM281XX_PIN_DESC(BCM281XX_PIN_UARTB2_URXD, "uartb2_urxd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  640) 	BCM281XX_PIN_DESC(BCM281XX_PIN_UARTB2_UTXD, "uartb2_utxd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  641) 	BCM281XX_PIN_DESC(BCM281XX_PIN_UARTB3_UCTS, "uartb3_ucts", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  642) 	BCM281XX_PIN_DESC(BCM281XX_PIN_UARTB3_URTS, "uartb3_urts", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  643) 	BCM281XX_PIN_DESC(BCM281XX_PIN_UARTB3_URXD, "uartb3_urxd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  644) 	BCM281XX_PIN_DESC(BCM281XX_PIN_UARTB3_UTXD, "uartb3_utxd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  645) 	BCM281XX_PIN_DESC(BCM281XX_PIN_UARTB4_UCTS, "uartb4_ucts", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  646) 	BCM281XX_PIN_DESC(BCM281XX_PIN_UARTB4_URTS, "uartb4_urts", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  647) 	BCM281XX_PIN_DESC(BCM281XX_PIN_UARTB4_URXD, "uartb4_urxd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  648) 	BCM281XX_PIN_DESC(BCM281XX_PIN_UARTB4_UTXD, "uartb4_utxd", std),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  649) 	BCM281XX_PIN_DESC(BCM281XX_PIN_VC_CAM1_SCL, "vc_cam1_scl", i2c),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  650) 	BCM281XX_PIN_DESC(BCM281XX_PIN_VC_CAM1_SDA, "vc_cam1_sda", i2c),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  651) 	BCM281XX_PIN_DESC(BCM281XX_PIN_VC_CAM2_SCL, "vc_cam2_scl", i2c),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  652) 	BCM281XX_PIN_DESC(BCM281XX_PIN_VC_CAM2_SDA, "vc_cam2_sda", i2c),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  653) 	BCM281XX_PIN_DESC(BCM281XX_PIN_VC_CAM3_SCL, "vc_cam3_scl", i2c),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  654) 	BCM281XX_PIN_DESC(BCM281XX_PIN_VC_CAM3_SDA, "vc_cam3_sda", i2c),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  655) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  656) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  657) static const char * const bcm281xx_alt_groups[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  658) 	"adcsync",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  659) 	"bat_rm",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  660) 	"bsc1_scl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  661) 	"bsc1_sda",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  662) 	"bsc2_scl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  663) 	"bsc2_sda",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  664) 	"classgpwr",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  665) 	"clk_cx8",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  666) 	"clkout_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  667) 	"clkout_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  668) 	"clkout_2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  669) 	"clkout_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  670) 	"clkreq_in_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  671) 	"clkreq_in_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  672) 	"cws_sys_req1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  673) 	"cws_sys_req2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  674) 	"cws_sys_req3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  675) 	"digmic1_clk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  676) 	"digmic1_dq",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  677) 	"digmic2_clk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  678) 	"digmic2_dq",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  679) 	"gpen13",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  680) 	"gpen14",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  681) 	"gpen15",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  682) 	"gpio00",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  683) 	"gpio01",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  684) 	"gpio02",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  685) 	"gpio03",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  686) 	"gpio04",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  687) 	"gpio05",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  688) 	"gpio06",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  689) 	"gpio07",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  690) 	"gpio08",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  691) 	"gpio09",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  692) 	"gpio10",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  693) 	"gpio11",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  694) 	"gpio12",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  695) 	"gpio13",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  696) 	"gpio14",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  697) 	"gps_pablank",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  698) 	"gps_tmark",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  699) 	"hdmi_scl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  700) 	"hdmi_sda",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  701) 	"ic_dm",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  702) 	"ic_dp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  703) 	"kp_col_ip_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  704) 	"kp_col_ip_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  705) 	"kp_col_ip_2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  706) 	"kp_col_ip_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  707) 	"kp_row_op_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  708) 	"kp_row_op_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  709) 	"kp_row_op_2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  710) 	"kp_row_op_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  711) 	"lcd_b_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  712) 	"lcd_b_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  713) 	"lcd_b_2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  714) 	"lcd_b_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  715) 	"lcd_b_4",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  716) 	"lcd_b_5",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  717) 	"lcd_b_6",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  718) 	"lcd_b_7",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  719) 	"lcd_g_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  720) 	"lcd_g_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  721) 	"lcd_g_2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  722) 	"lcd_g_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  723) 	"lcd_g_4",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  724) 	"lcd_g_5",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  725) 	"lcd_g_6",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  726) 	"lcd_g_7",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  727) 	"lcd_hsync",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  728) 	"lcd_oe",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  729) 	"lcd_pclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  730) 	"lcd_r_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  731) 	"lcd_r_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  732) 	"lcd_r_2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  733) 	"lcd_r_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  734) 	"lcd_r_4",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  735) 	"lcd_r_5",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  736) 	"lcd_r_6",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  737) 	"lcd_r_7",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  738) 	"lcd_vsync",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  739) 	"mdmgpio0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  740) 	"mdmgpio1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  741) 	"mdmgpio2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  742) 	"mdmgpio3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  743) 	"mdmgpio4",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  744) 	"mdmgpio5",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  745) 	"mdmgpio6",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  746) 	"mdmgpio7",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  747) 	"mdmgpio8",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  748) 	"mphi_data_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  749) 	"mphi_data_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  750) 	"mphi_data_2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  751) 	"mphi_data_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  752) 	"mphi_data_4",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  753) 	"mphi_data_5",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  754) 	"mphi_data_6",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  755) 	"mphi_data_7",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  756) 	"mphi_data_8",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  757) 	"mphi_data_9",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  758) 	"mphi_data_10",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  759) 	"mphi_data_11",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  760) 	"mphi_data_12",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  761) 	"mphi_data_13",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  762) 	"mphi_data_14",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  763) 	"mphi_data_15",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  764) 	"mphi_ha0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  765) 	"mphi_hat0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  766) 	"mphi_hat1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  767) 	"mphi_hce0_n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  768) 	"mphi_hce1_n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  769) 	"mphi_hrd_n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  770) 	"mphi_hwr_n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  771) 	"mphi_run0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  772) 	"mphi_run1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  773) 	"mtx_scan_clk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  774) 	"mtx_scan_data",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  775) 	"nand_ad_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  776) 	"nand_ad_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  777) 	"nand_ad_2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  778) 	"nand_ad_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  779) 	"nand_ad_4",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  780) 	"nand_ad_5",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  781) 	"nand_ad_6",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  782) 	"nand_ad_7",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  783) 	"nand_ale",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  784) 	"nand_cen_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  785) 	"nand_cen_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  786) 	"nand_cle",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  787) 	"nand_oen",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  788) 	"nand_rdy_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  789) 	"nand_rdy_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  790) 	"nand_wen",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  791) 	"nand_wp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  792) 	"pc1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  793) 	"pc2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  794) 	"pmu_int",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  795) 	"pmu_scl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  796) 	"pmu_sda",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  797) 	"rfst2g_mtsloten3g",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  798) 	"rgmii_0_rx_ctl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  799) 	"rgmii_0_rxc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  800) 	"rgmii_0_rxd_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  801) 	"rgmii_0_rxd_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  802) 	"rgmii_0_rxd_2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  803) 	"rgmii_0_rxd_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  804) 	"rgmii_0_tx_ctl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  805) 	"rgmii_0_txc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  806) 	"rgmii_0_txd_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  807) 	"rgmii_0_txd_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  808) 	"rgmii_0_txd_2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  809) 	"rgmii_0_txd_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  810) 	"rgmii_1_rx_ctl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  811) 	"rgmii_1_rxc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  812) 	"rgmii_1_rxd_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  813) 	"rgmii_1_rxd_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  814) 	"rgmii_1_rxd_2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  815) 	"rgmii_1_rxd_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  816) 	"rgmii_1_tx_ctl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  817) 	"rgmii_1_txc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  818) 	"rgmii_1_txd_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  819) 	"rgmii_1_txd_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  820) 	"rgmii_1_txd_2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  821) 	"rgmii_1_txd_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  822) 	"rgmii_gpio_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  823) 	"rgmii_gpio_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  824) 	"rgmii_gpio_2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  825) 	"rgmii_gpio_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  826) 	"rtxdata2g_txdata3g1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  827) 	"rtxen2g_txdata3g2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  828) 	"rxdata3g0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  829) 	"rxdata3g1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  830) 	"rxdata3g2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  831) 	"sdio1_clk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  832) 	"sdio1_cmd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  833) 	"sdio1_data_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  834) 	"sdio1_data_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  835) 	"sdio1_data_2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  836) 	"sdio1_data_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  837) 	"sdio4_clk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  838) 	"sdio4_cmd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  839) 	"sdio4_data_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  840) 	"sdio4_data_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  841) 	"sdio4_data_2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  842) 	"sdio4_data_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  843) 	"sim_clk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  844) 	"sim_data",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  845) 	"sim_det",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  846) 	"sim_resetn",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  847) 	"sim2_clk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  848) 	"sim2_data",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  849) 	"sim2_det",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  850) 	"sim2_resetn",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  851) 	"sri_c",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  852) 	"sri_d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  853) 	"sri_e",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  854) 	"ssp_extclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  855) 	"ssp0_clk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  856) 	"ssp0_fs",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  857) 	"ssp0_rxd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  858) 	"ssp0_txd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  859) 	"ssp2_clk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  860) 	"ssp2_fs_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  861) 	"ssp2_fs_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  862) 	"ssp2_fs_2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  863) 	"ssp2_fs_3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  864) 	"ssp2_rxd_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  865) 	"ssp2_rxd_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  866) 	"ssp2_txd_0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  867) 	"ssp2_txd_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  868) 	"ssp3_clk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  869) 	"ssp3_fs",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  870) 	"ssp3_rxd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  871) 	"ssp3_txd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  872) 	"ssp4_clk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  873) 	"ssp4_fs",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  874) 	"ssp4_rxd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  875) 	"ssp4_txd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  876) 	"ssp5_clk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  877) 	"ssp5_fs",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  878) 	"ssp5_rxd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  879) 	"ssp5_txd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  880) 	"ssp6_clk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  881) 	"ssp6_fs",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  882) 	"ssp6_rxd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  883) 	"ssp6_txd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  884) 	"stat_1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  885) 	"stat_2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  886) 	"sysclken",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  887) 	"traceclk",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  888) 	"tracedt00",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  889) 	"tracedt01",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  890) 	"tracedt02",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  891) 	"tracedt03",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  892) 	"tracedt04",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  893) 	"tracedt05",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  894) 	"tracedt06",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  895) 	"tracedt07",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  896) 	"tracedt08",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  897) 	"tracedt09",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  898) 	"tracedt10",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  899) 	"tracedt11",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  900) 	"tracedt12",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  901) 	"tracedt13",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  902) 	"tracedt14",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  903) 	"tracedt15",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  904) 	"txdata3g0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  905) 	"txpwrind",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  906) 	"uartb1_ucts",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  907) 	"uartb1_urts",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  908) 	"uartb1_urxd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  909) 	"uartb1_utxd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  910) 	"uartb2_urxd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  911) 	"uartb2_utxd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  912) 	"uartb3_ucts",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  913) 	"uartb3_urts",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  914) 	"uartb3_urxd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  915) 	"uartb3_utxd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  916) 	"uartb4_ucts",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  917) 	"uartb4_urts",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  918) 	"uartb4_urxd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  919) 	"uartb4_utxd",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  920) 	"vc_cam1_scl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  921) 	"vc_cam1_sda",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  922) 	"vc_cam2_scl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  923) 	"vc_cam2_sda",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  924) 	"vc_cam3_scl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  925) 	"vc_cam3_sda",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  926) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  927) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  928) /* Every pin can implement all ALT1-ALT4 functions */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  929) #define BCM281XX_PIN_FUNCTION(fcn_name)			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  930) {							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  931) 	.name = #fcn_name,				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  932) 	.groups = bcm281xx_alt_groups,			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  933) 	.ngroups = ARRAY_SIZE(bcm281xx_alt_groups),	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  934) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  935) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  936) static const struct bcm281xx_pin_function bcm281xx_functions[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  937) 	BCM281XX_PIN_FUNCTION(alt1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  938) 	BCM281XX_PIN_FUNCTION(alt2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  939) 	BCM281XX_PIN_FUNCTION(alt3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  940) 	BCM281XX_PIN_FUNCTION(alt4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  941) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  942) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  943) static struct bcm281xx_pinctrl_data bcm281xx_pinctrl = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  944) 	.pins = bcm281xx_pinctrl_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  945) 	.npins = ARRAY_SIZE(bcm281xx_pinctrl_pins),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  946) 	.functions = bcm281xx_functions,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  947) 	.nfunctions = ARRAY_SIZE(bcm281xx_functions),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  948) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  949) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  950) static inline enum bcm281xx_pin_type pin_type_get(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  951) 						  unsigned pin)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  952) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  953) 	struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  954) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  955) 	if (pin >= pdata->npins)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  956) 		return BCM281XX_PIN_TYPE_UNKNOWN;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  957) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  958) 	return *(enum bcm281xx_pin_type *)(pdata->pins[pin].drv_data);
^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) #define BCM281XX_PIN_SHIFT(type, param) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  962) 	(BCM281XX_ ## type ## _PIN_REG_ ## param ## _SHIFT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  963) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  964) #define BCM281XX_PIN_MASK(type, param) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  965) 	(BCM281XX_ ## type ## _PIN_REG_ ## param ## _MASK)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  966) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  967) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  968)  * This helper function is used to build up the value and mask used to write to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  969)  * a pin register, but does not actually write to the register.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  970)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  971) static inline void bcm281xx_pin_update(u32 *reg_val, u32 *reg_mask,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  972) 				       u32 param_val, u32 param_shift,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  973) 				       u32 param_mask)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  974) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  975) 	*reg_val &= ~param_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  976) 	*reg_val |= (param_val << param_shift) & param_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  977) 	*reg_mask |= param_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  978) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  979) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  980) static const struct regmap_config bcm281xx_pinctrl_regmap_config = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  981) 	.reg_bits = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  982) 	.reg_stride = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  983) 	.val_bits = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  984) 	.max_register = BCM281XX_PIN_VC_CAM3_SDA,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  985) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  986) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  987) static int bcm281xx_pinctrl_get_groups_count(struct pinctrl_dev *pctldev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  988) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  989) 	struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  990) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  991) 	return pdata->npins;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  992) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  993) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  994) static const char *bcm281xx_pinctrl_get_group_name(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  995) 						   unsigned group)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  996) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  997) 	struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  998) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  999) 	return pdata->pins[group].name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) static int bcm281xx_pinctrl_get_group_pins(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) 					   unsigned group,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) 					   const unsigned **pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) 					   unsigned *num_pins)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) 	struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009) 	*pins = &pdata->pins[group].number;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) 	*num_pins = 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) static void bcm281xx_pinctrl_pin_dbg_show(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) 					  struct seq_file *s,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) 					  unsigned offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) 	seq_printf(s, " %s", dev_name(pctldev->dev));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) static const struct pinctrl_ops bcm281xx_pinctrl_ops = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) 	.get_groups_count = bcm281xx_pinctrl_get_groups_count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024) 	.get_group_name = bcm281xx_pinctrl_get_group_name,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) 	.get_group_pins = bcm281xx_pinctrl_get_group_pins,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) 	.pin_dbg_show = bcm281xx_pinctrl_pin_dbg_show,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) 	.dt_node_to_map = pinconf_generic_dt_node_to_map_pin,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) 	.dt_free_map = pinctrl_utils_free_map,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) static int bcm281xx_pinctrl_get_fcns_count(struct pinctrl_dev *pctldev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) 	struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) 	return pdata->nfunctions;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038) static const char *bcm281xx_pinctrl_get_fcn_name(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039) 						 unsigned function)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041) 	struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) 	return pdata->functions[function].name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046) static int bcm281xx_pinctrl_get_fcn_groups(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) 					   unsigned function,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) 					   const char * const **groups,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049) 					   unsigned * const num_groups)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051) 	struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) 	*groups = pdata->functions[function].groups;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) 	*num_groups = pdata->functions[function].ngroups;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059) static int bcm281xx_pinmux_set(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060) 			       unsigned function,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) 			       unsigned group)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) 	struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064) 	const struct bcm281xx_pin_function *f = &pdata->functions[function];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065) 	u32 offset = 4 * pdata->pins[group].number;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) 	int rc = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) 	dev_dbg(pctldev->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069) 		"%s(): Enable function %s (%d) of pin %s (%d) @offset 0x%x.\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070) 		__func__, f->name, function, pdata->pins[group].name,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071) 		pdata->pins[group].number, offset);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) 	rc = regmap_update_bits(pdata->regmap, offset,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) 		BCM281XX_PIN_REG_F_SEL_MASK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) 		function << BCM281XX_PIN_REG_F_SEL_SHIFT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076) 	if (rc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) 		dev_err(pctldev->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) 			"Error updating register for pin %s (%d).\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) 			pdata->pins[group].name, pdata->pins[group].number);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081) 	return rc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) static const struct pinmux_ops bcm281xx_pinctrl_pinmux_ops = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) 	.get_functions_count = bcm281xx_pinctrl_get_fcns_count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086) 	.get_function_name = bcm281xx_pinctrl_get_fcn_name,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) 	.get_function_groups = bcm281xx_pinctrl_get_fcn_groups,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) 	.set_mux = bcm281xx_pinmux_set,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) static int bcm281xx_pinctrl_pin_config_get(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092) 					   unsigned pin,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) 					   unsigned long *config)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) 	return -ENOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) /* Goes through the configs and update register val/mask */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) static int bcm281xx_std_pin_update(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) 				   unsigned pin,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102) 				   unsigned long *configs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) 				   unsigned num_configs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104) 				   u32 *val,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105) 				   u32 *mask)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107) 	struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) 	enum pin_config_param param;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110) 	u32 arg;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) 	for (i = 0; i < num_configs; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) 		param = pinconf_to_config_param(configs[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) 		arg = pinconf_to_config_argument(configs[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) 		switch (param) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117) 		case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) 			arg = (arg >= 1 ? 1 : 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) 			bcm281xx_pin_update(val, mask, arg,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) 				BCM281XX_PIN_SHIFT(STD, HYST),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) 				BCM281XX_PIN_MASK(STD, HYST));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) 		/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) 		 * The pin bias can only be one of pull-up, pull-down, or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) 		 * disable.  The user does not need to specify a value for the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126) 		 * property, and the default value from pinconf-generic is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127) 		 * ignored.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) 		 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129) 		case PIN_CONFIG_BIAS_DISABLE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130) 			bcm281xx_pin_update(val, mask, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131) 				BCM281XX_PIN_SHIFT(STD, PULL_UP),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132) 				BCM281XX_PIN_MASK(STD, PULL_UP));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133) 			bcm281xx_pin_update(val, mask, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134) 				BCM281XX_PIN_SHIFT(STD, PULL_DN),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135) 				BCM281XX_PIN_MASK(STD, PULL_DN));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) 		case PIN_CONFIG_BIAS_PULL_UP:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) 			bcm281xx_pin_update(val, mask, 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140) 				BCM281XX_PIN_SHIFT(STD, PULL_UP),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) 				BCM281XX_PIN_MASK(STD, PULL_UP));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) 			bcm281xx_pin_update(val, mask, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143) 				BCM281XX_PIN_SHIFT(STD, PULL_DN),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144) 				BCM281XX_PIN_MASK(STD, PULL_DN));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) 		case PIN_CONFIG_BIAS_PULL_DOWN:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148) 			bcm281xx_pin_update(val, mask, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149) 				BCM281XX_PIN_SHIFT(STD, PULL_UP),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) 				BCM281XX_PIN_MASK(STD, PULL_UP));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) 			bcm281xx_pin_update(val, mask, 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152) 				BCM281XX_PIN_SHIFT(STD, PULL_DN),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153) 				BCM281XX_PIN_MASK(STD, PULL_DN));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) 		case PIN_CONFIG_SLEW_RATE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) 			arg = (arg >= 1 ? 1 : 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) 			bcm281xx_pin_update(val, mask, arg,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) 				BCM281XX_PIN_SHIFT(STD, SLEW),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160) 				BCM281XX_PIN_MASK(STD, SLEW));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) 		case PIN_CONFIG_INPUT_ENABLE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) 			/* inversed since register is for input _disable_ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) 			arg = (arg >= 1 ? 0 : 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166) 			bcm281xx_pin_update(val, mask, arg,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) 				BCM281XX_PIN_SHIFT(STD, INPUT_DIS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168) 				BCM281XX_PIN_MASK(STD, INPUT_DIS));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) 		case PIN_CONFIG_DRIVE_STRENGTH:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) 			/* Valid range is 2-16 mA, even numbers only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) 			if ((arg < 2) || (arg > 16) || (arg % 2)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174) 				dev_err(pctldev->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) 					"Invalid Drive Strength value (%d) for "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) 					"pin %s (%d). Valid values are "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) 					"(2..16) mA, even numbers only.\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) 					arg, pdata->pins[pin].name, pin);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) 				return -EINVAL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180) 			}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) 			bcm281xx_pin_update(val, mask, (arg/2)-1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) 				BCM281XX_PIN_SHIFT(STD, DRV_STR),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183) 				BCM281XX_PIN_MASK(STD, DRV_STR));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186) 		default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) 			dev_err(pctldev->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188) 				"Unrecognized pin config %d for pin %s (%d).\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189) 				param, pdata->pins[pin].name, pin);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190) 			return -EINVAL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192) 		} /* switch config */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193) 	} /* for each config */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199)  * The pull-up strength for an I2C pin is represented by bits 4-6 in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200)  * register with the following mapping:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201)  *   0b000: No pull-up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202)  *   0b001: 1200 Ohm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203)  *   0b010: 1800 Ohm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204)  *   0b011: 720 Ohm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205)  *   0b100: 2700 Ohm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206)  *   0b101: 831 Ohm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207)  *   0b110: 1080 Ohm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208)  *   0b111: 568 Ohm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209)  * This array maps pull-up strength in Ohms to register values (1+index).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211) static const u16 bcm281xx_pullup_map[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212) 	1200, 1800, 720, 2700, 831, 1080, 568
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215) /* Goes through the configs and update register val/mask */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216) static int bcm281xx_i2c_pin_update(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217) 				   unsigned pin,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218) 				   unsigned long *configs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219) 				   unsigned num_configs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220) 				   u32 *val,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221) 				   u32 *mask)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223) 	struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224) 	int i, j;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225) 	enum pin_config_param param;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226) 	u32 arg;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228) 	for (i = 0; i < num_configs; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229) 		param = pinconf_to_config_param(configs[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230) 		arg = pinconf_to_config_argument(configs[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232) 		switch (param) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233) 		case PIN_CONFIG_BIAS_PULL_UP:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234) 			for (j = 0; j < ARRAY_SIZE(bcm281xx_pullup_map); j++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235) 				if (bcm281xx_pullup_map[j] == arg)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236) 					break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238) 			if (j == ARRAY_SIZE(bcm281xx_pullup_map)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239) 				dev_err(pctldev->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240) 					"Invalid pull-up value (%d) for pin %s "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241) 					"(%d). Valid values are 568, 720, 831, "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242) 					"1080, 1200, 1800, 2700 Ohms.\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243) 					arg, pdata->pins[pin].name, pin);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244) 				return -EINVAL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) 			}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247) 			bcm281xx_pin_update(val, mask, j+1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248) 				BCM281XX_PIN_SHIFT(I2C, PULL_UP_STR),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249) 				BCM281XX_PIN_MASK(I2C, PULL_UP_STR));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252) 		case PIN_CONFIG_BIAS_DISABLE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253) 			bcm281xx_pin_update(val, mask, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254) 				BCM281XX_PIN_SHIFT(I2C, PULL_UP_STR),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255) 				BCM281XX_PIN_MASK(I2C, PULL_UP_STR));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258) 		case PIN_CONFIG_SLEW_RATE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259) 			arg = (arg >= 1 ? 1 : 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260) 			bcm281xx_pin_update(val, mask, arg,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261) 				BCM281XX_PIN_SHIFT(I2C, SLEW),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262) 				BCM281XX_PIN_MASK(I2C, SLEW));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265) 		case PIN_CONFIG_INPUT_ENABLE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266) 			/* inversed since register is for input _disable_ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267) 			arg = (arg >= 1 ? 0 : 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268) 			bcm281xx_pin_update(val, mask, arg,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269) 				BCM281XX_PIN_SHIFT(I2C, INPUT_DIS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270) 				BCM281XX_PIN_MASK(I2C, INPUT_DIS));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273) 		default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274) 			dev_err(pctldev->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275) 				"Unrecognized pin config %d for pin %s (%d).\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276) 				param, pdata->pins[pin].name, pin);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1277) 			return -EINVAL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1278) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1279) 		} /* switch config */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1280) 	} /* for each config */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1281) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1282) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1283) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1284) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1285) /* Goes through the configs and update register val/mask */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1286) static int bcm281xx_hdmi_pin_update(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1287) 				    unsigned pin,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1288) 				    unsigned long *configs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1289) 				    unsigned num_configs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1290) 				    u32 *val,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1291) 				    u32 *mask)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1292) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1293) 	struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1294) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1295) 	enum pin_config_param param;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1296) 	u32 arg;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1297) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1298) 	for (i = 0; i < num_configs; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1299) 		param = pinconf_to_config_param(configs[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1300) 		arg = pinconf_to_config_argument(configs[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1301) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1302) 		switch (param) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1303) 		case PIN_CONFIG_SLEW_RATE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1304) 			arg = (arg >= 1 ? 1 : 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1305) 			bcm281xx_pin_update(val, mask, arg,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1306) 				BCM281XX_PIN_SHIFT(HDMI, MODE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1307) 				BCM281XX_PIN_MASK(HDMI, MODE));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1308) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1309) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1310) 		case PIN_CONFIG_INPUT_ENABLE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1311) 			/* inversed since register is for input _disable_ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1312) 			arg = (arg >= 1 ? 0 : 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1313) 			bcm281xx_pin_update(val, mask, arg,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1314) 				BCM281XX_PIN_SHIFT(HDMI, INPUT_DIS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1315) 				BCM281XX_PIN_MASK(HDMI, INPUT_DIS));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1316) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1317) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1318) 		default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1319) 			dev_err(pctldev->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1320) 				"Unrecognized pin config %d for pin %s (%d).\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1321) 				param, pdata->pins[pin].name, pin);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1322) 			return -EINVAL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1323) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1324) 		} /* switch config */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1325) 	} /* for each config */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1326) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1327) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1328) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1329) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1330) static int bcm281xx_pinctrl_pin_config_set(struct pinctrl_dev *pctldev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1331) 					   unsigned pin,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1332) 					   unsigned long *configs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1333) 					   unsigned num_configs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1334) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1335) 	struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1336) 	enum bcm281xx_pin_type pin_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1337) 	u32 offset = 4 * pin;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1338) 	u32 cfg_val, cfg_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1339) 	int rc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1340) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1341) 	cfg_val = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1342) 	cfg_mask = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1343) 	pin_type = pin_type_get(pctldev, pin);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1344) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1345) 	/* Different pins have different configuration options */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1346) 	switch (pin_type) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1347) 	case BCM281XX_PIN_TYPE_STD:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1348) 		rc = bcm281xx_std_pin_update(pctldev, pin, configs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1349) 			num_configs, &cfg_val, &cfg_mask);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1350) 		break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1351) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1352) 	case BCM281XX_PIN_TYPE_I2C:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1353) 		rc = bcm281xx_i2c_pin_update(pctldev, pin, configs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1354) 			num_configs, &cfg_val, &cfg_mask);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1355) 		break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1356) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1357) 	case BCM281XX_PIN_TYPE_HDMI:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1358) 		rc = bcm281xx_hdmi_pin_update(pctldev, pin, configs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1359) 			num_configs, &cfg_val, &cfg_mask);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1360) 		break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1361) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1362) 	default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1363) 		dev_err(pctldev->dev, "Unknown pin type for pin %s (%d).\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1364) 			pdata->pins[pin].name, pin);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1365) 		return -EINVAL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1366) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1367) 	} /* switch pin type */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1368) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1369) 	if (rc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1370) 		return rc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1371) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1372) 	dev_dbg(pctldev->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1373) 		"%s(): Set pin %s (%d) with config 0x%x, mask 0x%x\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1374) 		__func__, pdata->pins[pin].name, pin, cfg_val, cfg_mask);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1375) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1376) 	rc = regmap_update_bits(pdata->regmap, offset, cfg_mask, cfg_val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1377) 	if (rc) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1378) 		dev_err(pctldev->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1379) 			"Error updating register for pin %s (%d).\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1380) 			pdata->pins[pin].name, pin);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1381) 		return rc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1382) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1383) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1384) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1385) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1386) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1387) static const struct pinconf_ops bcm281xx_pinctrl_pinconf_ops = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1388) 	.pin_config_get = bcm281xx_pinctrl_pin_config_get,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1389) 	.pin_config_set = bcm281xx_pinctrl_pin_config_set,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1390) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1391) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1392) static struct pinctrl_desc bcm281xx_pinctrl_desc = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1393) 	/* name, pins, npins members initialized in probe function */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1394) 	.pctlops = &bcm281xx_pinctrl_ops,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1395) 	.pmxops = &bcm281xx_pinctrl_pinmux_ops,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1396) 	.confops = &bcm281xx_pinctrl_pinconf_ops,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1397) 	.owner = THIS_MODULE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1398) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1399) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1400) static int __init bcm281xx_pinctrl_probe(struct platform_device *pdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1401) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1402) 	struct bcm281xx_pinctrl_data *pdata = &bcm281xx_pinctrl;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1403) 	struct pinctrl_dev *pctl;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1404) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1405) 	/* So far We can assume there is only 1 bank of registers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1406) 	pdata->reg_base = devm_platform_ioremap_resource(pdev, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1407) 	if (IS_ERR(pdata->reg_base)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1408) 		dev_err(&pdev->dev, "Failed to ioremap MEM resource\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1409) 		return PTR_ERR(pdata->reg_base);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1410) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1411) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1412) 	/* Initialize the dynamic part of pinctrl_desc */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1413) 	pdata->regmap = devm_regmap_init_mmio(&pdev->dev, pdata->reg_base,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1414) 		&bcm281xx_pinctrl_regmap_config);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1415) 	if (IS_ERR(pdata->regmap)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1416) 		dev_err(&pdev->dev, "Regmap MMIO init failed.\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1417) 		return -ENODEV;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1418) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1419) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1420) 	bcm281xx_pinctrl_desc.name = dev_name(&pdev->dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1421) 	bcm281xx_pinctrl_desc.pins = bcm281xx_pinctrl.pins;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1422) 	bcm281xx_pinctrl_desc.npins = bcm281xx_pinctrl.npins;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1423) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1424) 	pctl = devm_pinctrl_register(&pdev->dev, &bcm281xx_pinctrl_desc, pdata);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1425) 	if (IS_ERR(pctl)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1426) 		dev_err(&pdev->dev, "Failed to register pinctrl\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1427) 		return PTR_ERR(pctl);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1428) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1429) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1430) 	platform_set_drvdata(pdev, pdata);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1431) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1432) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1433) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1434) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1435) static const struct of_device_id bcm281xx_pinctrl_of_match[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1436) 	{ .compatible = "brcm,bcm11351-pinctrl", },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1437) 	{ },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1438) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1439) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1440) static struct platform_driver bcm281xx_pinctrl_driver = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1441) 	.driver = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1442) 		.name = "bcm281xx-pinctrl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1443) 		.of_match_table = bcm281xx_pinctrl_of_match,
^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) builtin_platform_driver_probe(bcm281xx_pinctrl_driver, bcm281xx_pinctrl_probe);