ixp4xx: fix GPIOLIB support

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@22650 3c298f89-4303-0410-b956-a3cf2f4a3e73
master
Gabor Juhos 2010-08-14 21:07:46 +00:00
parent 10f0eb32c9
commit 0cffb6ab42
4 changed files with 64 additions and 20 deletions

View File

@ -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,
+}; +};

View File

@ -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,
+}; +};

View File

@ -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,
+}; +};

View File

@ -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,
+}; +};