projects
/
openwrt
/
openwrt.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
fbe5c88
)
make all AR913x GPIO lines usable
author
Gabor Juhos
<juhosg@openwrt.org>
Thu, 4 Dec 2008 12:17:14 +0000
(12:17 +0000)
committer
Gabor Juhos
<juhosg@openwrt.org>
Thu, 4 Dec 2008 12:17:14 +0000
(12:17 +0000)
SVN-Revision: 13509
target/linux/ar71xx/files/arch/mips/ar71xx/gpio.c
patch
|
blob
|
history
target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/ar71xx.h
patch
|
blob
|
history
target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/gpio.h
patch
|
blob
|
history
diff --git
a/target/linux/ar71xx/files/arch/mips/ar71xx/gpio.c
b/target/linux/ar71xx/files/arch/mips/ar71xx/gpio.c
index 03bf38b7c0d94a350ae45d98f8601ce97c868daf..a3d00aeedd3713a27f6b747cd7c07477eded53a0 100644
(file)
--- a/
target/linux/ar71xx/files/arch/mips/ar71xx/gpio.c
+++ b/
target/linux/ar71xx/files/arch/mips/ar71xx/gpio.c
@@
-22,6
+22,9
@@
static DEFINE_SPINLOCK(ar71xx_gpio_lock);
static DEFINE_SPINLOCK(ar71xx_gpio_lock);
+unsigned long ar71xx_gpio_count;
+EXPORT_SYMBOL(ar71xx_gpio_count);
+
void __ar71xx_gpio_set_value(unsigned gpio, int value)
{
unsigned long flags;
void __ar71xx_gpio_set_value(unsigned gpio, int value)
{
unsigned long flags;
@@
-129,6
+132,22
@@
void __init ar71xx_gpio_init(void)
"AR71xx GPIO controller"))
panic("cannot allocate AR71xx GPIO registers page");
"AR71xx GPIO controller"))
panic("cannot allocate AR71xx GPIO registers page");
+ switch (ar71xx_soc) {
+ case AR71XX_SOC_AR7130:
+ case AR71XX_SOC_AR7141:
+ case AR71XX_SOC_AR7161:
+ ar71xx_gpio_chip.ngpio = AR71XX_GPIO_COUNT;
+ break;
+
+ case AR71XX_SOC_AR9130:
+ case AR71XX_SOC_AR9132:
+ ar71xx_gpio_chip.ngpio = AR91XX_GPIO_COUNT;
+ break;
+
+ default:
+ BUG();
+ }
+
err = gpiochip_add(&ar71xx_gpio_chip);
if (err)
panic("cannot add AR71xx GPIO chip, error=%d", err);
err = gpiochip_add(&ar71xx_gpio_chip);
if (err)
panic("cannot add AR71xx GPIO chip, error=%d", err);
diff --git
a/target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/ar71xx.h
b/target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/ar71xx.h
index 78cf1ca24437ea1a8119a47868fc00fe01066bbd..5e551a14fdfdaa9c877b590d60890eac11048554 100644
(file)
--- a/
target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/ar71xx.h
+++ b/
target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/ar71xx.h
@@
-206,6
+206,7
@@
extern void ar71xx_add_device_usb(void) __init;
#define GPIO_FUNC_USB_CLK_EN BIT(0)
#define AR71XX_GPIO_COUNT 16
#define GPIO_FUNC_USB_CLK_EN BIT(0)
#define AR71XX_GPIO_COUNT 16
+#define AR91XX_GPIO_COUNT 22
extern void __iomem *ar71xx_gpio_base;
extern void __iomem *ar71xx_gpio_base;
diff --git
a/target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/gpio.h
b/target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/gpio.h
index 347727001bf2a3850278bedd9fdb399f21217978..6354d68cf3ea0b0322831244b8318a2d939fc3ef 100644
(file)
--- a/
target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/gpio.h
+++ b/
target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/gpio.h
@@
-18,6
+18,7
@@
#include <asm/mach-ar71xx/ar71xx.h>
#include <asm/mach-ar71xx/ar71xx.h>
+extern unsigned long ar71xx_gpio_count;
extern void __ar71xx_gpio_set_value(unsigned gpio, int value);
extern int __ar71xx_gpio_get_value(unsigned gpio);
extern void __ar71xx_gpio_set_value(unsigned gpio, int value);
extern int __ar71xx_gpio_get_value(unsigned gpio);
@@
-33,7
+34,7
@@
static inline int irq_to_gpio(unsigned irq)
static inline int gpio_get_value(unsigned gpio)
{
static inline int gpio_get_value(unsigned gpio)
{
- if (gpio <
AR71XX_GPIO_COUNT
)
+ if (gpio <
ar71xx_gpio_count
)
return __ar71xx_gpio_get_value(gpio);
return __gpio_get_value(gpio);
return __ar71xx_gpio_get_value(gpio);
return __gpio_get_value(gpio);
@@
-41,7
+42,7
@@
static inline int gpio_get_value(unsigned gpio)
static inline void gpio_set_value(unsigned gpio, int value)
{
static inline void gpio_set_value(unsigned gpio, int value)
{
- if (gpio <
AR71XX_GPIO_COUNT
)
+ if (gpio <
ar71xx_gpio_count
)
__ar71xx_gpio_set_value(gpio, value);
else
__gpio_set_value(gpio, value);
__ar71xx_gpio_set_value(gpio, value);
else
__gpio_set_value(gpio, value);