76d079204d
Changelogs: * https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.12 * https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.13 * https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.14 Build tested on brcm63xx and ipq806x, runtested on brcm63xx. Signed-off-by: Jonas Gorski <jogo@openwrt.org> SVN-Revision: 45711
74 lines
1.9 KiB
Diff
74 lines
1.9 KiB
Diff
--- a/arch/arm/mach-ixp4xx/common.c
|
|
+++ b/arch/arm/mach-ixp4xx/common.c
|
|
@@ -93,22 +93,7 @@ void __init ixp4xx_map_io(void)
|
|
/*
|
|
* GPIO-functions
|
|
*/
|
|
-/*
|
|
- * The following converted to the real HW bits the gpio_line_config
|
|
- */
|
|
-/* GPIO pin types */
|
|
-#define IXP4XX_GPIO_OUT 0x1
|
|
-#define IXP4XX_GPIO_IN 0x2
|
|
-
|
|
-/* GPIO signal types */
|
|
-#define IXP4XX_GPIO_LOW 0
|
|
-#define IXP4XX_GPIO_HIGH 1
|
|
-
|
|
-/* GPIO Clocks */
|
|
-#define IXP4XX_GPIO_CLK_0 14
|
|
-#define IXP4XX_GPIO_CLK_1 15
|
|
-
|
|
-static void gpio_line_config(u8 line, u32 direction)
|
|
+void gpio_line_config(u8 line, u32 direction)
|
|
{
|
|
if (direction == IXP4XX_GPIO_IN)
|
|
*IXP4XX_GPIO_GPOER |= (1 << line);
|
|
@@ -116,17 +101,17 @@ static void gpio_line_config(u8 line, u3
|
|
*IXP4XX_GPIO_GPOER &= ~(1 << line);
|
|
}
|
|
|
|
-static void gpio_line_get(u8 line, int *value)
|
|
+void gpio_line_get(u8 line, int *value)
|
|
{
|
|
*value = (*IXP4XX_GPIO_GPINR >> line) & 0x1;
|
|
}
|
|
|
|
-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);
|
|
- 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;
|
|
extern int ixp4xx_setup(int nr, struct pci_sys_data *sys);
|
|
extern struct pci_ops ixp4xx_ops;
|
|
|
|
+/* GPIO pin types */
|
|
+#define IXP4XX_GPIO_OUT 0x1
|
|
+#define IXP4XX_GPIO_IN 0x2
|
|
+
|
|
+/* GPIO signal types */
|
|
+#define IXP4XX_GPIO_LOW 0
|
|
+#define IXP4XX_GPIO_HIGH 1
|
|
+
|
|
+/* GPIO Clocks */
|
|
+#define IXP4XX_GPIO_CLK_0 14
|
|
+#define IXP4XX_GPIO_CLK_1 15
|
|
+
|
|
+void gpio_line_config(u8 line, u32 direction);
|
|
+void gpio_line_get(u8 line, int *value);
|
|
+void gpio_line_set(u8 line, int value);
|
|
+
|
|
#endif // __ASSEMBLY__
|
|
|