summaryrefslogtreecommitdiffstats
path: root/target/linux/ixp4xx
diff options
context:
space:
mode:
authorJohn Crispin <john@openwrt.org>2015-02-13 10:54:01 +0000
committerJohn Crispin <john@openwrt.org>2015-02-13 10:54:01 +0000
commit285348e0868ac6d84acb6b3caa45aa9afdb87196 (patch)
tree2046f1d85b9b25027990528793f3a7b3c06f7682 /target/linux/ixp4xx
parent8f3e9c91a861301e360a67601ce991ce3d9626cb (diff)
downloadmaster-31e0f0ae-285348e0868ac6d84acb6b3caa45aa9afdb87196.tar.gz
master-31e0f0ae-285348e0868ac6d84acb6b3caa45aa9afdb87196.tar.bz2
master-31e0f0ae-285348e0868ac6d84acb6b3caa45aa9afdb87196.zip
ixp4xx: fix gpio_line_set() logic, fixes #18986
Signed-off-by: John Crispin <blogic@openwrt.org> SVN-Revision: 44439
Diffstat (limited to 'target/linux/ixp4xx')
-rw-r--r--target/linux/ixp4xx/patches-3.18/030-gpio_line_config.patch18
1 files changed, 13 insertions, 5 deletions
diff --git a/target/linux/ixp4xx/patches-3.18/030-gpio_line_config.patch b/target/linux/ixp4xx/patches-3.18/030-gpio_line_config.patch
index 0477b3863d..c71ffd6b76 100644
--- a/target/linux/ixp4xx/patches-3.18/030-gpio_line_config.patch
+++ b/target/linux/ixp4xx/patches-3.18/030-gpio_line_config.patch
@@ -1,6 +1,6 @@
--- a/arch/arm/mach-ixp4xx/common.c
+++ b/arch/arm/mach-ixp4xx/common.c
-@@ -84,22 +84,7 @@ void __init ixp4xx_map_io(void)
+@@ -93,22 +93,7 @@
/*
* GPIO-functions
*/
@@ -24,7 +24,7 @@
{
if (direction == IXP4XX_GPIO_IN)
*IXP4XX_GPIO_GPOER |= (1 << line);
-@@ -107,12 +92,12 @@ static void gpio_line_config(u8 line, u3
+@@ -116,17 +101,17 @@
*IXP4XX_GPIO_GPOER &= ~(1 << line);
}
@@ -37,11 +37,19 @@
-static void gpio_line_set(u8 line, int value)
+void gpio_line_set(u8 line, int value)
{
- if (value == IXP4XX_GPIO_HIGH)
- *IXP4XX_GPIO_GPOUTR |= (1 << line);
+- if (value == IXP4XX_GPIO_HIGH)
+- *IXP4XX_GPIO_GPOUTR |= (1 << line);
+- else if (value == IXP4XX_GPIO_LOW)
++ if (value == IXP4XX_GPIO_LOW)
+ *IXP4XX_GPIO_GPOUTR &= ~(1 << line);
++ else
++ *IXP4XX_GPIO_GPOUTR |= (1 << line);
+ }
+
+ /*************************************************************************
--- a/arch/arm/mach-ixp4xx/include/mach/platform.h
+++ b/arch/arm/mach-ixp4xx/include/mach/platform.h
-@@ -131,5 +131,21 @@ struct pci_sys_data;
+@@ -131,5 +131,21 @@
extern int ixp4xx_setup(int nr, struct pci_sys_data *sys);
extern struct pci_ops ixp4xx_ops;