mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-28 01:43:10 +02:00
[ar71xx] make all AR913x GPIO lines usable
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13509 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
59266b3466
commit
b80c50f7cf
@ -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)
|
void __ar71xx_gpio_set_value(unsigned gpio, int value)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
@ -129,6 +132,22 @@ void __init ar71xx_gpio_init(void)
|
|||||||
"AR71xx GPIO controller"))
|
"AR71xx GPIO controller"))
|
||||||
panic("cannot allocate AR71xx GPIO registers page");
|
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);
|
err = gpiochip_add(&ar71xx_gpio_chip);
|
||||||
if (err)
|
if (err)
|
||||||
panic("cannot add AR71xx GPIO chip, error=%d", err);
|
panic("cannot add AR71xx GPIO chip, error=%d", err);
|
||||||
|
@ -206,6 +206,7 @@ extern void ar71xx_add_device_usb(void) __init;
|
|||||||
#define GPIO_FUNC_USB_CLK_EN BIT(0)
|
#define GPIO_FUNC_USB_CLK_EN BIT(0)
|
||||||
|
|
||||||
#define AR71XX_GPIO_COUNT 16
|
#define AR71XX_GPIO_COUNT 16
|
||||||
|
#define AR91XX_GPIO_COUNT 22
|
||||||
|
|
||||||
extern void __iomem *ar71xx_gpio_base;
|
extern void __iomem *ar71xx_gpio_base;
|
||||||
|
|
||||||
|
@ -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 void __ar71xx_gpio_set_value(unsigned gpio, int value);
|
||||||
extern int __ar71xx_gpio_get_value(unsigned gpio);
|
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 __ar71xx_gpio_get_value(gpio);
|
||||||
|
|
||||||
return __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);
|
__ar71xx_gpio_set_value(gpio, value);
|
||||||
else
|
else
|
||||||
__gpio_set_value(gpio, value);
|
__gpio_set_value(gpio, value);
|
||||||
|
Loading…
Reference in New Issue
Block a user