diff options
author | John Crispin <john@openwrt.org> | 2015-02-13 10:54:01 +0000 |
---|---|---|
committer | John Crispin <john@openwrt.org> | 2015-02-13 10:54:01 +0000 |
commit | 285348e0868ac6d84acb6b3caa45aa9afdb87196 (patch) | |
tree | 2046f1d85b9b25027990528793f3a7b3c06f7682 | |
parent | 8f3e9c91a861301e360a67601ce991ce3d9626cb (diff) | |
download | upstream-285348e0868ac6d84acb6b3caa45aa9afdb87196.tar.gz upstream-285348e0868ac6d84acb6b3caa45aa9afdb87196.tar.bz2 upstream-285348e0868ac6d84acb6b3caa45aa9afdb87196.zip |
ixp4xx: fix gpio_line_set() logic, fixes #18986
Signed-off-by: John Crispin <blogic@openwrt.org>
SVN-Revision: 44439
-rw-r--r-- | target/linux/ixp4xx/patches-3.18/030-gpio_line_config.patch | 18 |
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; |