ramips: add AW9523 I2C GPIO expander driver
This adds a driver for the AW9523 I2C GPIO expander. This driver is required to make LEDs as well as buttons on the Tenbay T-MB5EU-V01 work. This driver already had several upstream iterations. I'm working to push this driver to mainline. Ref: https://patchwork.ozlabs.org/project/linux-gpio/list/?series=226287 Signed-off-by: David Bauer <mail@david-bauer.net>
This commit is contained in:
		
							
								
								
									
										1135
									
								
								target/linux/ramips/files/drivers/pinctrl/pinctrl-aw9523.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1135
									
								
								target/linux/ramips/files/drivers/pinctrl/pinctrl-aw9523.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -148,6 +148,7 @@ CONFIG_PGTABLE_LEVELS=2 | |||||||
| CONFIG_PHYLIB=y | CONFIG_PHYLIB=y | ||||||
| CONFIG_PHY_RALINK_USB=y | CONFIG_PHY_RALINK_USB=y | ||||||
| CONFIG_PINCTRL=y | CONFIG_PINCTRL=y | ||||||
|  | # CONFIG_PINCTRL_AW9523 is not set | ||||||
| CONFIG_PINCTRL_RT2880=y | CONFIG_PINCTRL_RT2880=y | ||||||
| # CONFIG_PINCTRL_SINGLE is not set | # CONFIG_PINCTRL_SINGLE is not set | ||||||
| CONFIG_RALINK=y | CONFIG_RALINK=y | ||||||
|   | |||||||
| @@ -150,6 +150,7 @@ CONFIG_PGTABLE_LEVELS=2 | |||||||
| CONFIG_PHYLIB=y | CONFIG_PHYLIB=y | ||||||
| CONFIG_PHY_RALINK_USB=y | CONFIG_PHY_RALINK_USB=y | ||||||
| CONFIG_PINCTRL=y | CONFIG_PINCTRL=y | ||||||
|  | # CONFIG_PINCTRL_AW9523 is not set | ||||||
| CONFIG_PINCTRL_RT2880=y | CONFIG_PINCTRL_RT2880=y | ||||||
| # CONFIG_PINCTRL_SINGLE is not set | # CONFIG_PINCTRL_SINGLE is not set | ||||||
| CONFIG_RALINK=y | CONFIG_RALINK=y | ||||||
|   | |||||||
| @@ -212,6 +212,7 @@ CONFIG_PHYLIB=y | |||||||
| CONFIG_PHYLINK=y | CONFIG_PHYLINK=y | ||||||
| # CONFIG_PHY_RALINK_USB is not set | # CONFIG_PHY_RALINK_USB is not set | ||||||
| CONFIG_PINCTRL=y | CONFIG_PINCTRL=y | ||||||
|  | CONFIG_PINCTRL_AW9523=y | ||||||
| CONFIG_PINCTRL_RT2880=y | CONFIG_PINCTRL_RT2880=y | ||||||
| # CONFIG_PINCTRL_SINGLE is not set | # CONFIG_PINCTRL_SINGLE is not set | ||||||
| CONFIG_PINCTRL_SX150X=y | CONFIG_PINCTRL_SX150X=y | ||||||
|   | |||||||
| @@ -202,6 +202,7 @@ CONFIG_PHYLIB=y | |||||||
| CONFIG_PHYLINK=y | CONFIG_PHYLINK=y | ||||||
| # CONFIG_PHY_RALINK_USB is not set | # CONFIG_PHY_RALINK_USB is not set | ||||||
| CONFIG_PINCTRL=y | CONFIG_PINCTRL=y | ||||||
|  | CONFIG_PINCTRL_AW9523=y | ||||||
| CONFIG_PINCTRL_RT2880=y | CONFIG_PINCTRL_RT2880=y | ||||||
| # CONFIG_PINCTRL_SINGLE is not set | # CONFIG_PINCTRL_SINGLE is not set | ||||||
| CONFIG_PINCTRL_SX150X=y | CONFIG_PINCTRL_SX150X=y | ||||||
|   | |||||||
| @@ -143,6 +143,7 @@ CONFIG_PGTABLE_LEVELS=2 | |||||||
| CONFIG_PHYLIB=y | CONFIG_PHYLIB=y | ||||||
| CONFIG_PHY_RALINK_USB=y | CONFIG_PHY_RALINK_USB=y | ||||||
| CONFIG_PINCTRL=y | CONFIG_PINCTRL=y | ||||||
|  | # CONFIG_PINCTRL_AW9523 is not set | ||||||
| CONFIG_PINCTRL_RT2880=y | CONFIG_PINCTRL_RT2880=y | ||||||
| # CONFIG_PINCTRL_SINGLE is not set | # CONFIG_PINCTRL_SINGLE is not set | ||||||
| CONFIG_RALINK=y | CONFIG_RALINK=y | ||||||
|   | |||||||
| @@ -143,6 +143,7 @@ CONFIG_PGTABLE_LEVELS=2 | |||||||
| CONFIG_PHYLIB=y | CONFIG_PHYLIB=y | ||||||
| CONFIG_PHY_RALINK_USB=y | CONFIG_PHY_RALINK_USB=y | ||||||
| CONFIG_PINCTRL=y | CONFIG_PINCTRL=y | ||||||
|  | # CONFIG_PINCTRL_AW9523 is not set | ||||||
| CONFIG_PINCTRL_RT2880=y | CONFIG_PINCTRL_RT2880=y | ||||||
| # CONFIG_PINCTRL_SINGLE is not set | # CONFIG_PINCTRL_SINGLE is not set | ||||||
| CONFIG_RALINK=y | CONFIG_RALINK=y | ||||||
|   | |||||||
							
								
								
									
										72
									
								
								target/linux/ramips/patches-5.10/805-pinctrl-AW9523.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								target/linux/ramips/patches-5.10/805-pinctrl-AW9523.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | |||||||
|  | From: AngeloGioacchino Del Regno | ||||||
|  |         <angelogioacchino.delregno@somainline.org> | ||||||
|  | To: linus.walleij@linaro.org | ||||||
|  | Cc: linux-kernel@vger.kernel.org, konrad.dybcio@somainline.org, | ||||||
|  |         marijn.suijten@somainline.org, martin.botka@somainline.org, | ||||||
|  |         phone-devel@vger.kernel.org, linux-gpio@vger.kernel.org, | ||||||
|  |         devicetree@vger.kernel.org, robh+dt@kernel.org, | ||||||
|  |         AngeloGioacchino Del Regno | ||||||
|  |         <angelogioacchino.delregno@somainline.org> | ||||||
|  | Subject: [PATCH v5 1/2] pinctrl: Add driver for Awinic AW9523/B I2C GPIO | ||||||
|  |  Expander | ||||||
|  | Date: Mon, 25 Jan 2021 19:22:18 +0100 | ||||||
|  |  | ||||||
|  | The Awinic AW9523(B) is a multi-function I2C gpio expander in a | ||||||
|  | TQFN-24L package, featuring PWM (max 37mA per pin, or total max | ||||||
|  | power 3.2Watts) for LED driving capability. | ||||||
|  |  | ||||||
|  | It has two ports with 8 pins per port (for a total of 16 pins), | ||||||
|  | configurable as either PWM with 1/256 stepping or GPIO input/output, | ||||||
|  | 1.8V logic input; each GPIO can be configured as input or output | ||||||
|  | independently from each other. | ||||||
|  |  | ||||||
|  | This IC also has an internal interrupt controller, which is capable | ||||||
|  | of generating an interrupt for each GPIO, depending on the | ||||||
|  | configuration, and will raise an interrupt on the INTN pin to | ||||||
|  | advertise this to an external interrupt controller. | ||||||
|  |  | ||||||
|  | Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org> | ||||||
|  | --- | ||||||
|  |  drivers/pinctrl/Kconfig          |   17 + | ||||||
|  |  drivers/pinctrl/Makefile         |    1 + | ||||||
|  |  drivers/pinctrl/pinctrl-aw9523.c | 1122 ++++++++++++++++++++++++++++++ | ||||||
|  |  3 files changed, 1140 insertions(+) | ||||||
|  |  create mode 100644 drivers/pinctrl/pinctrl-aw9523.c | ||||||
|  |  | ||||||
|  | --- a/drivers/pinctrl/Kconfig | ||||||
|  | +++ b/drivers/pinctrl/Kconfig | ||||||
|  | @@ -110,6 +110,24 @@ config PINCTRL_AMD | ||||||
|  |  	  Requires ACPI/FDT device enumeration code to set up a platform | ||||||
|  |  	  device. | ||||||
|  |   | ||||||
|  | +config PINCTRL_AW9523 | ||||||
|  | +	bool "Awinic AW9523/AW9523B I2C GPIO expander pinctrl driver" | ||||||
|  | +	depends on OF && I2C | ||||||
|  | +	select PINMUX | ||||||
|  | +	select PINCONF | ||||||
|  | +	select GENERIC_PINCONF | ||||||
|  | +	select GPIOLIB | ||||||
|  | +	select GPIOLIB_IRQCHIP | ||||||
|  | +	select REGMAP | ||||||
|  | +	select REGMAP_I2C | ||||||
|  | +	help | ||||||
|  | +	  The Awinic AW9523/AW9523B is a multi-function I2C GPIO | ||||||
|  | +	  expander with PWM functionality. This driver bundles a | ||||||
|  | +	  pinctrl driver to select the function muxing and a GPIO | ||||||
|  | +	  driver to handle GPIO, when the GPIO function is selected. | ||||||
|  | + | ||||||
|  | +	  Say yes to enable pinctrl and GPIO support for the AW9523(B). | ||||||
|  | + | ||||||
|  |  config PINCTRL_BM1880 | ||||||
|  |  	bool "Bitmain BM1880 Pinctrl driver" | ||||||
|  |  	depends on OF && (ARCH_BITMAIN || COMPILE_TEST) | ||||||
|  | --- a/drivers/pinctrl/Makefile | ||||||
|  | +++ b/drivers/pinctrl/Makefile | ||||||
|  | @@ -14,6 +14,7 @@ obj-$(CONFIG_PINCTRL_AXP209)	+= pinctrl- | ||||||
|  |  obj-$(CONFIG_PINCTRL_AT91)	+= pinctrl-at91.o | ||||||
|  |  obj-$(CONFIG_PINCTRL_AT91PIO4)	+= pinctrl-at91-pio4.o | ||||||
|  |  obj-$(CONFIG_PINCTRL_AMD)	+= pinctrl-amd.o | ||||||
|  | +obj-$(CONFIG_PINCTRL_AW9523)	+= pinctrl-aw9523.o | ||||||
|  |  obj-$(CONFIG_PINCTRL_BM1880)	+= pinctrl-bm1880.o | ||||||
|  |  obj-$(CONFIG_PINCTRL_DA850_PUPD) += pinctrl-da850-pupd.o | ||||||
|  |  obj-$(CONFIG_PINCTRL_DA9062)	+= pinctrl-da9062.o | ||||||
							
								
								
									
										72
									
								
								target/linux/ramips/patches-5.4/805-pinctrl-AW9523.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								target/linux/ramips/patches-5.4/805-pinctrl-AW9523.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | |||||||
|  | From: AngeloGioacchino Del Regno | ||||||
|  |         <angelogioacchino.delregno@somainline.org> | ||||||
|  | To: linus.walleij@linaro.org | ||||||
|  | Cc: linux-kernel@vger.kernel.org, konrad.dybcio@somainline.org, | ||||||
|  |         marijn.suijten@somainline.org, martin.botka@somainline.org, | ||||||
|  |         phone-devel@vger.kernel.org, linux-gpio@vger.kernel.org, | ||||||
|  |         devicetree@vger.kernel.org, robh+dt@kernel.org, | ||||||
|  |         AngeloGioacchino Del Regno | ||||||
|  |         <angelogioacchino.delregno@somainline.org> | ||||||
|  | Subject: [PATCH v5 1/2] pinctrl: Add driver for Awinic AW9523/B I2C GPIO | ||||||
|  |  Expander | ||||||
|  | Date: Mon, 25 Jan 2021 19:22:18 +0100 | ||||||
|  |  | ||||||
|  | The Awinic AW9523(B) is a multi-function I2C gpio expander in a | ||||||
|  | TQFN-24L package, featuring PWM (max 37mA per pin, or total max | ||||||
|  | power 3.2Watts) for LED driving capability. | ||||||
|  |  | ||||||
|  | It has two ports with 8 pins per port (for a total of 16 pins), | ||||||
|  | configurable as either PWM with 1/256 stepping or GPIO input/output, | ||||||
|  | 1.8V logic input; each GPIO can be configured as input or output | ||||||
|  | independently from each other. | ||||||
|  |  | ||||||
|  | This IC also has an internal interrupt controller, which is capable | ||||||
|  | of generating an interrupt for each GPIO, depending on the | ||||||
|  | configuration, and will raise an interrupt on the INTN pin to | ||||||
|  | advertise this to an external interrupt controller. | ||||||
|  |  | ||||||
|  | Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org> | ||||||
|  | --- | ||||||
|  |  drivers/pinctrl/Kconfig          |   17 + | ||||||
|  |  drivers/pinctrl/Makefile         |    1 + | ||||||
|  |  drivers/pinctrl/pinctrl-aw9523.c | 1122 ++++++++++++++++++++++++++++++ | ||||||
|  |  3 files changed, 1140 insertions(+) | ||||||
|  |  create mode 100644 drivers/pinctrl/pinctrl-aw9523.c | ||||||
|  |  | ||||||
|  | --- a/drivers/pinctrl/Kconfig | ||||||
|  | +++ b/drivers/pinctrl/Kconfig | ||||||
|  | @@ -109,6 +109,24 @@ config PINCTRL_AMD | ||||||
|  |  	  Requires ACPI/FDT device enumeration code to set up a platform | ||||||
|  |  	  device. | ||||||
|  |   | ||||||
|  | +config PINCTRL_AW9523 | ||||||
|  | +	bool "Awinic AW9523/AW9523B I2C GPIO expander pinctrl driver" | ||||||
|  | +	depends on OF && I2C | ||||||
|  | +	select PINMUX | ||||||
|  | +	select PINCONF | ||||||
|  | +	select GENERIC_PINCONF | ||||||
|  | +	select GPIOLIB | ||||||
|  | +	select GPIOLIB_IRQCHIP | ||||||
|  | +	select REGMAP | ||||||
|  | +	select REGMAP_I2C | ||||||
|  | +	help | ||||||
|  | +	  The Awinic AW9523/AW9523B is a multi-function I2C GPIO | ||||||
|  | +	  expander with PWM functionality. This driver bundles a | ||||||
|  | +	  pinctrl driver to select the function muxing and a GPIO | ||||||
|  | +	  driver to handle GPIO, when the GPIO function is selected. | ||||||
|  | + | ||||||
|  | +	  Say yes to enable pinctrl and GPIO support for the AW9523(B). | ||||||
|  | + | ||||||
|  |  config PINCTRL_BM1880 | ||||||
|  |  	bool "Bitmain BM1880 Pinctrl driver" | ||||||
|  |  	depends on OF && (ARCH_BITMAIN || COMPILE_TEST) | ||||||
|  | --- a/drivers/pinctrl/Makefile | ||||||
|  | +++ b/drivers/pinctrl/Makefile | ||||||
|  | @@ -14,6 +14,7 @@ obj-$(CONFIG_PINCTRL_AXP209)	+= pinctrl- | ||||||
|  |  obj-$(CONFIG_PINCTRL_AT91)	+= pinctrl-at91.o | ||||||
|  |  obj-$(CONFIG_PINCTRL_AT91PIO4)	+= pinctrl-at91-pio4.o | ||||||
|  |  obj-$(CONFIG_PINCTRL_AMD)	+= pinctrl-amd.o | ||||||
|  | +obj-$(CONFIG_PINCTRL_AW9523)	+= pinctrl-aw9523.o | ||||||
|  |  obj-$(CONFIG_PINCTRL_BM1880)	+= pinctrl-bm1880.o | ||||||
|  |  obj-$(CONFIG_PINCTRL_DA850_PUPD) += pinctrl-da850-pupd.o | ||||||
|  |  obj-$(CONFIG_PINCTRL_DIGICOLOR)	+= pinctrl-digicolor.o | ||||||
| @@ -131,6 +131,7 @@ CONFIG_PGTABLE_LEVELS=2 | |||||||
| CONFIG_PHYLIB=y | CONFIG_PHYLIB=y | ||||||
| # CONFIG_PHY_RALINK_USB is not set | # CONFIG_PHY_RALINK_USB is not set | ||||||
| CONFIG_PINCTRL=y | CONFIG_PINCTRL=y | ||||||
|  | # CONFIG_PINCTRL_AW9523 is not set | ||||||
| CONFIG_PINCTRL_RT2880=y | CONFIG_PINCTRL_RT2880=y | ||||||
| # CONFIG_PINCTRL_SINGLE is not set | # CONFIG_PINCTRL_SINGLE is not set | ||||||
| CONFIG_RALINK=y | CONFIG_RALINK=y | ||||||
|   | |||||||
| @@ -131,6 +131,7 @@ CONFIG_PGTABLE_LEVELS=2 | |||||||
| CONFIG_PHYLIB=y | CONFIG_PHYLIB=y | ||||||
| # CONFIG_PHY_RALINK_USB is not set | # CONFIG_PHY_RALINK_USB is not set | ||||||
| CONFIG_PINCTRL=y | CONFIG_PINCTRL=y | ||||||
|  | # CONFIG_PINCTRL_AW9523 is not set | ||||||
| CONFIG_PINCTRL_RT2880=y | CONFIG_PINCTRL_RT2880=y | ||||||
| # CONFIG_PINCTRL_SINGLE is not set | # CONFIG_PINCTRL_SINGLE is not set | ||||||
| CONFIG_RALINK=y | CONFIG_RALINK=y | ||||||
|   | |||||||
| @@ -131,6 +131,7 @@ CONFIG_PGTABLE_LEVELS=2 | |||||||
| CONFIG_PHYLIB=y | CONFIG_PHYLIB=y | ||||||
| CONFIG_PHY_RALINK_USB=y | CONFIG_PHY_RALINK_USB=y | ||||||
| CONFIG_PINCTRL=y | CONFIG_PINCTRL=y | ||||||
|  | # CONFIG_PINCTRL_AW9523 is not set | ||||||
| CONFIG_PINCTRL_RT2880=y | CONFIG_PINCTRL_RT2880=y | ||||||
| # CONFIG_PINCTRL_SINGLE is not set | # CONFIG_PINCTRL_SINGLE is not set | ||||||
| CONFIG_RALINK=y | CONFIG_RALINK=y | ||||||
|   | |||||||
| @@ -131,6 +131,7 @@ CONFIG_PGTABLE_LEVELS=2 | |||||||
| CONFIG_PHYLIB=y | CONFIG_PHYLIB=y | ||||||
| CONFIG_PHY_RALINK_USB=y | CONFIG_PHY_RALINK_USB=y | ||||||
| CONFIG_PINCTRL=y | CONFIG_PINCTRL=y | ||||||
|  | # CONFIG_PINCTRL_AW9523 is not set | ||||||
| CONFIG_PINCTRL_RT2880=y | CONFIG_PINCTRL_RT2880=y | ||||||
| # CONFIG_PINCTRL_SINGLE is not set | # CONFIG_PINCTRL_SINGLE is not set | ||||||
| CONFIG_RALINK=y | CONFIG_RALINK=y | ||||||
|   | |||||||
| @@ -132,6 +132,7 @@ CONFIG_PGTABLE_LEVELS=2 | |||||||
| CONFIG_PHYLIB=y | CONFIG_PHYLIB=y | ||||||
| CONFIG_PHY_RALINK_USB=y | CONFIG_PHY_RALINK_USB=y | ||||||
| CONFIG_PINCTRL=y | CONFIG_PINCTRL=y | ||||||
|  | # CONFIG_PINCTRL_AW9523 is not set | ||||||
| CONFIG_PINCTRL_RT2880=y | CONFIG_PINCTRL_RT2880=y | ||||||
| # CONFIG_PINCTRL_SINGLE is not set | # CONFIG_PINCTRL_SINGLE is not set | ||||||
| CONFIG_RALINK=y | CONFIG_RALINK=y | ||||||
|   | |||||||
| @@ -133,6 +133,7 @@ CONFIG_PGTABLE_LEVELS=2 | |||||||
| CONFIG_PHYLIB=y | CONFIG_PHYLIB=y | ||||||
| CONFIG_PHY_RALINK_USB=y | CONFIG_PHY_RALINK_USB=y | ||||||
| CONFIG_PINCTRL=y | CONFIG_PINCTRL=y | ||||||
|  | # CONFIG_PINCTRL_AW9523 is not set | ||||||
| CONFIG_PINCTRL_RT2880=y | CONFIG_PINCTRL_RT2880=y | ||||||
| # CONFIG_PINCTRL_SINGLE is not set | # CONFIG_PINCTRL_SINGLE is not set | ||||||
| CONFIG_RALINK=y | CONFIG_RALINK=y | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 David Bauer
					David Bauer