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_PHY_RALINK_USB=y | ||||
| CONFIG_PINCTRL=y | ||||
| # CONFIG_PINCTRL_AW9523 is not set | ||||
| CONFIG_PINCTRL_RT2880=y | ||||
| # CONFIG_PINCTRL_SINGLE is not set | ||||
| CONFIG_RALINK=y | ||||
|   | ||||
| @@ -150,6 +150,7 @@ CONFIG_PGTABLE_LEVELS=2 | ||||
| CONFIG_PHYLIB=y | ||||
| CONFIG_PHY_RALINK_USB=y | ||||
| CONFIG_PINCTRL=y | ||||
| # CONFIG_PINCTRL_AW9523 is not set | ||||
| CONFIG_PINCTRL_RT2880=y | ||||
| # CONFIG_PINCTRL_SINGLE is not set | ||||
| CONFIG_RALINK=y | ||||
|   | ||||
| @@ -212,6 +212,7 @@ CONFIG_PHYLIB=y | ||||
| CONFIG_PHYLINK=y | ||||
| # CONFIG_PHY_RALINK_USB is not set | ||||
| CONFIG_PINCTRL=y | ||||
| CONFIG_PINCTRL_AW9523=y | ||||
| CONFIG_PINCTRL_RT2880=y | ||||
| # CONFIG_PINCTRL_SINGLE is not set | ||||
| CONFIG_PINCTRL_SX150X=y | ||||
|   | ||||
| @@ -202,6 +202,7 @@ CONFIG_PHYLIB=y | ||||
| CONFIG_PHYLINK=y | ||||
| # CONFIG_PHY_RALINK_USB is not set | ||||
| CONFIG_PINCTRL=y | ||||
| CONFIG_PINCTRL_AW9523=y | ||||
| CONFIG_PINCTRL_RT2880=y | ||||
| # CONFIG_PINCTRL_SINGLE is not set | ||||
| CONFIG_PINCTRL_SX150X=y | ||||
|   | ||||
| @@ -143,6 +143,7 @@ CONFIG_PGTABLE_LEVELS=2 | ||||
| CONFIG_PHYLIB=y | ||||
| CONFIG_PHY_RALINK_USB=y | ||||
| CONFIG_PINCTRL=y | ||||
| # CONFIG_PINCTRL_AW9523 is not set | ||||
| CONFIG_PINCTRL_RT2880=y | ||||
| # CONFIG_PINCTRL_SINGLE is not set | ||||
| CONFIG_RALINK=y | ||||
|   | ||||
| @@ -143,6 +143,7 @@ CONFIG_PGTABLE_LEVELS=2 | ||||
| CONFIG_PHYLIB=y | ||||
| CONFIG_PHY_RALINK_USB=y | ||||
| CONFIG_PINCTRL=y | ||||
| # CONFIG_PINCTRL_AW9523 is not set | ||||
| CONFIG_PINCTRL_RT2880=y | ||||
| # CONFIG_PINCTRL_SINGLE is not set | ||||
| 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_PHY_RALINK_USB is not set | ||||
| CONFIG_PINCTRL=y | ||||
| # CONFIG_PINCTRL_AW9523 is not set | ||||
| CONFIG_PINCTRL_RT2880=y | ||||
| # CONFIG_PINCTRL_SINGLE is not set | ||||
| CONFIG_RALINK=y | ||||
|   | ||||
| @@ -131,6 +131,7 @@ CONFIG_PGTABLE_LEVELS=2 | ||||
| CONFIG_PHYLIB=y | ||||
| # CONFIG_PHY_RALINK_USB is not set | ||||
| CONFIG_PINCTRL=y | ||||
| # CONFIG_PINCTRL_AW9523 is not set | ||||
| CONFIG_PINCTRL_RT2880=y | ||||
| # CONFIG_PINCTRL_SINGLE is not set | ||||
| CONFIG_RALINK=y | ||||
|   | ||||
| @@ -131,6 +131,7 @@ CONFIG_PGTABLE_LEVELS=2 | ||||
| CONFIG_PHYLIB=y | ||||
| CONFIG_PHY_RALINK_USB=y | ||||
| CONFIG_PINCTRL=y | ||||
| # CONFIG_PINCTRL_AW9523 is not set | ||||
| CONFIG_PINCTRL_RT2880=y | ||||
| # CONFIG_PINCTRL_SINGLE is not set | ||||
| CONFIG_RALINK=y | ||||
|   | ||||
| @@ -131,6 +131,7 @@ CONFIG_PGTABLE_LEVELS=2 | ||||
| CONFIG_PHYLIB=y | ||||
| CONFIG_PHY_RALINK_USB=y | ||||
| CONFIG_PINCTRL=y | ||||
| # CONFIG_PINCTRL_AW9523 is not set | ||||
| CONFIG_PINCTRL_RT2880=y | ||||
| # CONFIG_PINCTRL_SINGLE is not set | ||||
| CONFIG_RALINK=y | ||||
|   | ||||
| @@ -132,6 +132,7 @@ CONFIG_PGTABLE_LEVELS=2 | ||||
| CONFIG_PHYLIB=y | ||||
| CONFIG_PHY_RALINK_USB=y | ||||
| CONFIG_PINCTRL=y | ||||
| # CONFIG_PINCTRL_AW9523 is not set | ||||
| CONFIG_PINCTRL_RT2880=y | ||||
| # CONFIG_PINCTRL_SINGLE is not set | ||||
| CONFIG_RALINK=y | ||||
|   | ||||
| @@ -133,6 +133,7 @@ CONFIG_PGTABLE_LEVELS=2 | ||||
| CONFIG_PHYLIB=y | ||||
| CONFIG_PHY_RALINK_USB=y | ||||
| CONFIG_PINCTRL=y | ||||
| # CONFIG_PINCTRL_AW9523 is not set | ||||
| CONFIG_PINCTRL_RT2880=y | ||||
| # CONFIG_PINCTRL_SINGLE is not set | ||||
| CONFIG_RALINK=y | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 David Bauer
					David Bauer