mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 18:47:06 +00:00
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:
parent
f033d5ad1c
commit
38db2f12d6
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
|
||||||
|
Loading…
Reference in New Issue
Block a user