ixp4xx: fix GPIOLIB support
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@22650 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
10f0eb32c9
commit
0cffb6ab42
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
#include <asm/mach/map.h>
|
#include <asm/mach/map.h>
|
||||||
#include <asm/mach/irq.h>
|
#include <asm/mach/irq.h>
|
||||||
@@ -375,12 +376,39 @@ static struct platform_device *ixp46x_de
|
@@ -375,12 +376,50 @@ static struct platform_device *ixp46x_de
|
||||||
unsigned long ixp4xx_exp_bus_size;
|
unsigned long ixp4xx_exp_bus_size;
|
||||||
EXPORT_SYMBOL(ixp4xx_exp_bus_size);
|
EXPORT_SYMBOL(ixp4xx_exp_bus_size);
|
||||||
|
|
||||||
|
@ -17,7 +17,6 @@
|
||||||
+ gpio_line_config(gpio, IXP4XX_GPIO_IN);
|
+ gpio_line_config(gpio, IXP4XX_GPIO_IN);
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
+EXPORT_SYMBOL(ixp4xx_gpio_direction_input);
|
|
||||||
+
|
+
|
||||||
+static int ixp4xx_gpio_direction_output(struct gpio_chip *chip, unsigned gpio, int level)
|
+static int ixp4xx_gpio_direction_output(struct gpio_chip *chip, unsigned gpio, int level)
|
||||||
+{
|
+{
|
||||||
|
@ -25,14 +24,26 @@
|
||||||
+ gpio_line_config(gpio, IXP4XX_GPIO_OUT);
|
+ gpio_line_config(gpio, IXP4XX_GPIO_OUT);
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
+EXPORT_SYMBOL(ixp4xx_gpio_direction_output);
|
+
|
||||||
|
+static int ixp4xx_gpio_get_value(struct gpio_chip *chip, unsigned gpio)
|
||||||
|
+{
|
||||||
|
+ int value;
|
||||||
|
+
|
||||||
|
+ gpio_line_get(gpio, &value);
|
||||||
|
+ return value;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void ixp4xx_gpio_set_value(struct gpio_chip *chip, unsigned gpio, int value)
|
||||||
|
+{
|
||||||
|
+ gpio_line_set(gpio, value);
|
||||||
|
+}
|
||||||
+
|
+
|
||||||
+static struct gpio_chip ixp4xx_gpio_chip = {
|
+static struct gpio_chip ixp4xx_gpio_chip = {
|
||||||
+ .label = "IXP4XX_GPIO_CHIP",
|
+ .label = "IXP4XX_GPIO_CHIP",
|
||||||
+ .direction_input = ixp4xx_gpio_direction_input,
|
+ .direction_input = ixp4xx_gpio_direction_input,
|
||||||
+ .direction_output = ixp4xx_gpio_direction_output,
|
+ .direction_output = ixp4xx_gpio_direction_output,
|
||||||
+ .get = gpio_get_value,
|
+ .get = ixp4xx_gpio_get_value,
|
||||||
+ .set = gpio_set_value,
|
+ .set = ixp4xx_gpio_set_value,
|
||||||
+ .base = 0,
|
+ .base = 0,
|
||||||
+ .ngpio = 16,
|
+ .ngpio = 16,
|
||||||
+};
|
+};
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
#include <asm/mach/map.h>
|
#include <asm/mach/map.h>
|
||||||
#include <asm/mach/irq.h>
|
#include <asm/mach/irq.h>
|
||||||
@@ -375,12 +376,39 @@ static struct platform_device *ixp46x_de
|
@@ -375,12 +376,50 @@ static struct platform_device *ixp46x_de
|
||||||
unsigned long ixp4xx_exp_bus_size;
|
unsigned long ixp4xx_exp_bus_size;
|
||||||
EXPORT_SYMBOL(ixp4xx_exp_bus_size);
|
EXPORT_SYMBOL(ixp4xx_exp_bus_size);
|
||||||
|
|
||||||
|
@ -17,7 +17,6 @@
|
||||||
+ gpio_line_config(gpio, IXP4XX_GPIO_IN);
|
+ gpio_line_config(gpio, IXP4XX_GPIO_IN);
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
+EXPORT_SYMBOL(ixp4xx_gpio_direction_input);
|
|
||||||
+
|
+
|
||||||
+static int ixp4xx_gpio_direction_output(struct gpio_chip *chip, unsigned gpio, int level)
|
+static int ixp4xx_gpio_direction_output(struct gpio_chip *chip, unsigned gpio, int level)
|
||||||
+{
|
+{
|
||||||
|
@ -25,14 +24,26 @@
|
||||||
+ gpio_line_config(gpio, IXP4XX_GPIO_OUT);
|
+ gpio_line_config(gpio, IXP4XX_GPIO_OUT);
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
+EXPORT_SYMBOL(ixp4xx_gpio_direction_output);
|
+
|
||||||
|
+static int ixp4xx_gpio_get_value(struct gpio_chip *chip, unsigned gpio)
|
||||||
|
+{
|
||||||
|
+ int value;
|
||||||
|
+
|
||||||
|
+ gpio_line_get(gpio, &value);
|
||||||
|
+ return value;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void ixp4xx_gpio_set_value(struct gpio_chip *chip, unsigned gpio, int value)
|
||||||
|
+{
|
||||||
|
+ gpio_line_set(gpio, value);
|
||||||
|
+}
|
||||||
+
|
+
|
||||||
+static struct gpio_chip ixp4xx_gpio_chip = {
|
+static struct gpio_chip ixp4xx_gpio_chip = {
|
||||||
+ .label = "IXP4XX_GPIO_CHIP",
|
+ .label = "IXP4XX_GPIO_CHIP",
|
||||||
+ .direction_input = ixp4xx_gpio_direction_input,
|
+ .direction_input = ixp4xx_gpio_direction_input,
|
||||||
+ .direction_output = ixp4xx_gpio_direction_output,
|
+ .direction_output = ixp4xx_gpio_direction_output,
|
||||||
+ .get = gpio_get_value,
|
+ .get = ixp4xx_gpio_get_value,
|
||||||
+ .set = gpio_set_value,
|
+ .set = ixp4xx_gpio_set_value,
|
||||||
+ .base = 0,
|
+ .base = 0,
|
||||||
+ .ngpio = 16,
|
+ .ngpio = 16,
|
||||||
+};
|
+};
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
#include <asm/mach/map.h>
|
#include <asm/mach/map.h>
|
||||||
#include <asm/mach/irq.h>
|
#include <asm/mach/irq.h>
|
||||||
@@ -375,12 +376,39 @@ static struct platform_device *ixp46x_de
|
@@ -375,12 +376,50 @@ static struct platform_device *ixp46x_de
|
||||||
unsigned long ixp4xx_exp_bus_size;
|
unsigned long ixp4xx_exp_bus_size;
|
||||||
EXPORT_SYMBOL(ixp4xx_exp_bus_size);
|
EXPORT_SYMBOL(ixp4xx_exp_bus_size);
|
||||||
|
|
||||||
|
@ -17,7 +17,6 @@
|
||||||
+ gpio_line_config(gpio, IXP4XX_GPIO_IN);
|
+ gpio_line_config(gpio, IXP4XX_GPIO_IN);
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
+EXPORT_SYMBOL(ixp4xx_gpio_direction_input);
|
|
||||||
+
|
+
|
||||||
+static int ixp4xx_gpio_direction_output(struct gpio_chip *chip, unsigned gpio, int level)
|
+static int ixp4xx_gpio_direction_output(struct gpio_chip *chip, unsigned gpio, int level)
|
||||||
+{
|
+{
|
||||||
|
@ -25,14 +24,26 @@
|
||||||
+ gpio_line_config(gpio, IXP4XX_GPIO_OUT);
|
+ gpio_line_config(gpio, IXP4XX_GPIO_OUT);
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
+EXPORT_SYMBOL(ixp4xx_gpio_direction_output);
|
+
|
||||||
|
+static int ixp4xx_gpio_get_value(struct gpio_chip *chip, unsigned gpio)
|
||||||
|
+{
|
||||||
|
+ int value;
|
||||||
|
+
|
||||||
|
+ gpio_line_get(gpio, &value);
|
||||||
|
+ return value;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void ixp4xx_gpio_set_value(struct gpio_chip *chip, unsigned gpio, int value)
|
||||||
|
+{
|
||||||
|
+ gpio_line_set(gpio, value);
|
||||||
|
+}
|
||||||
+
|
+
|
||||||
+static struct gpio_chip ixp4xx_gpio_chip = {
|
+static struct gpio_chip ixp4xx_gpio_chip = {
|
||||||
+ .label = "IXP4XX_GPIO_CHIP",
|
+ .label = "IXP4XX_GPIO_CHIP",
|
||||||
+ .direction_input = ixp4xx_gpio_direction_input,
|
+ .direction_input = ixp4xx_gpio_direction_input,
|
||||||
+ .direction_output = ixp4xx_gpio_direction_output,
|
+ .direction_output = ixp4xx_gpio_direction_output,
|
||||||
+ .get = gpio_get_value,
|
+ .get = ixp4xx_gpio_get_value,
|
||||||
+ .set = gpio_set_value,
|
+ .set = ixp4xx_gpio_set_value,
|
||||||
+ .base = 0,
|
+ .base = 0,
|
||||||
+ .ngpio = 16,
|
+ .ngpio = 16,
|
||||||
+};
|
+};
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
#include <asm/mach/map.h>
|
#include <asm/mach/map.h>
|
||||||
#include <asm/mach/irq.h>
|
#include <asm/mach/irq.h>
|
||||||
@@ -374,12 +375,39 @@ static struct platform_device *ixp46x_de
|
@@ -374,12 +375,50 @@ static struct platform_device *ixp46x_de
|
||||||
unsigned long ixp4xx_exp_bus_size;
|
unsigned long ixp4xx_exp_bus_size;
|
||||||
EXPORT_SYMBOL(ixp4xx_exp_bus_size);
|
EXPORT_SYMBOL(ixp4xx_exp_bus_size);
|
||||||
|
|
||||||
|
@ -17,7 +17,6 @@
|
||||||
+ gpio_line_config(gpio, IXP4XX_GPIO_IN);
|
+ gpio_line_config(gpio, IXP4XX_GPIO_IN);
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
+EXPORT_SYMBOL(ixp4xx_gpio_direction_input);
|
|
||||||
+
|
+
|
||||||
+static int ixp4xx_gpio_direction_output(struct gpio_chip *chip, unsigned gpio, int level)
|
+static int ixp4xx_gpio_direction_output(struct gpio_chip *chip, unsigned gpio, int level)
|
||||||
+{
|
+{
|
||||||
|
@ -25,14 +24,26 @@
|
||||||
+ gpio_line_config(gpio, IXP4XX_GPIO_OUT);
|
+ gpio_line_config(gpio, IXP4XX_GPIO_OUT);
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
+EXPORT_SYMBOL(ixp4xx_gpio_direction_output);
|
+
|
||||||
|
+static int ixp4xx_gpio_get_value(struct gpio_chip *chip, unsigned gpio)
|
||||||
|
+{
|
||||||
|
+ int value;
|
||||||
|
+
|
||||||
|
+ gpio_line_get(gpio, &value);
|
||||||
|
+ return value;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void ixp4xx_gpio_set_value(struct gpio_chip *chip, unsigned gpio, int value)
|
||||||
|
+{
|
||||||
|
+ gpio_line_set(gpio, value);
|
||||||
|
+}
|
||||||
+
|
+
|
||||||
+static struct gpio_chip ixp4xx_gpio_chip = {
|
+static struct gpio_chip ixp4xx_gpio_chip = {
|
||||||
+ .label = "IXP4XX_GPIO_CHIP",
|
+ .label = "IXP4XX_GPIO_CHIP",
|
||||||
+ .direction_input = ixp4xx_gpio_direction_input,
|
+ .direction_input = ixp4xx_gpio_direction_input,
|
||||||
+ .direction_output = ixp4xx_gpio_direction_output,
|
+ .direction_output = ixp4xx_gpio_direction_output,
|
||||||
+ .get = gpio_get_value,
|
+ .get = ixp4xx_gpio_get_value,
|
||||||
+ .set = gpio_set_value,
|
+ .set = ixp4xx_gpio_set_value,
|
||||||
+ .base = 0,
|
+ .base = 0,
|
||||||
+ .ngpio = 16,
|
+ .ngpio = 16,
|
||||||
+};
|
+};
|
||||||
|
|
Loading…
Reference in New Issue