mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
make atheros wifi cards used on arcaydian 4519 ifxmips based boards work
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@11676 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
@@ -93,7 +93,7 @@ CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_IRQ_CPU=y
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_LEDS_ALIX is not set
|
||||
# CONFIG_LEDS_GPIO is not set
|
||||
CONFIG_LEDS_GPIO=y
|
||||
CONFIG_LEDS_IFXMIPS=y
|
||||
# CONFIG_LEMOTE_FULONG is not set
|
||||
CONFIG_LZO_COMPRESS=m
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
#include <asm/io.h>
|
||||
#include <linux/etherdevice.h>
|
||||
#include <asm/ifxmips/ifxmips.h>
|
||||
#include <linux/leds.h>
|
||||
|
||||
#define MAX_BOARD_NAME_LEN 32
|
||||
#define MAX_IFXMIPS_DEVS 9
|
||||
@@ -120,6 +121,31 @@ ifxmips_gpio_dev = {
|
||||
.num_resources = 1,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_LEDS_GPIO
|
||||
static struct gpio_led arv4519_leds[] = {
|
||||
{ .name = "ifxmips:green:power0", .gpio = 3, .active_low = 0, },
|
||||
{ .name = "ifxmips:red:power1", .gpio = 7, .active_low = 1, },
|
||||
{ .name = "ifxmips:green:adsl", .gpio = 4, .active_low = 1, },
|
||||
{ .name = "ifxmips:green:internet0", .gpio = 5, .active_low = 0, },
|
||||
{ .name = "ifxmips:red:internet1", .gpio = 8, .active_low = 1, },
|
||||
{ .name = "ifxmips:green:wlan", .gpio = 6, .active_low = 1, },
|
||||
{ .name = "ifxmips:green:usb", .gpio = 19, .active_low = 1, },
|
||||
};
|
||||
|
||||
static const struct gpio_led_platform_data arv4519_led_data = {
|
||||
.num_leds = ARRAY_SIZE(arv4519_leds),
|
||||
.leds = (void *) arv4519_leds,
|
||||
};
|
||||
|
||||
static struct platform_device arv4519_gpio_leds = {
|
||||
.name = "leds-gpio",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = (void *) &arv4519_led_data,
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
const char*
|
||||
get_system_type(void)
|
||||
{
|
||||
@@ -235,8 +261,11 @@ static struct ifxmips_board boards[] =
|
||||
.system_type = SYSTEM_DANUBE_CHIPID2,
|
||||
.devs =
|
||||
{
|
||||
&ifxmips_led, &ifxmips_gpio, &ifxmips_mii,
|
||||
&ifxmips_gpio, &ifxmips_mii,
|
||||
&ifxmips_mtd, &ifxmips_wdt, &ifxmips_gpio_dev,
|
||||
#ifdef CONFIG_LEDS_GPIO
|
||||
&arv4519_gpio_leds,
|
||||
#endif
|
||||
},
|
||||
.reset_resource =
|
||||
{
|
||||
@@ -277,6 +306,7 @@ ifxmips_has_brn_block(void)
|
||||
{
|
||||
return ifxmips_brn;
|
||||
}
|
||||
EXPORT_SYMBOL(ifxmips_has_brn_block);
|
||||
|
||||
struct ifxmips_board*
|
||||
ifxmips_find_board(void)
|
||||
|
||||
@@ -122,7 +122,6 @@ static int
|
||||
ifxmips_wdt_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
ifxmips_wdt_enable(wdt_timeout);
|
||||
printk("ifxmips_wdt: activated");
|
||||
return nonseekable_open(inode, file);
|
||||
}
|
||||
|
||||
|
||||
@@ -26,23 +26,35 @@
|
||||
#include <asm/ifxmips/ifxmips.h>
|
||||
#include <asm/ifxmips/ifxmips_gpio.h>
|
||||
|
||||
#define GPIO_TO_PORT(x) ((x > 15)?(1):(0))
|
||||
#define GPIO_TO_GPIO(x) ((x > 15)?(x-16):(x))
|
||||
|
||||
static inline int gpio_direction_input(unsigned gpio) {
|
||||
ifxmips_port_set_dir_in(0, gpio);
|
||||
ifxmips_port_set_open_drain(GPIO_TO_PORT(gpio), GPIO_TO_GPIO(gpio));
|
||||
ifxmips_port_clear_altsel0(GPIO_TO_PORT(gpio), GPIO_TO_GPIO(gpio));
|
||||
ifxmips_port_clear_altsel1(GPIO_TO_PORT(gpio), GPIO_TO_GPIO(gpio));
|
||||
ifxmips_port_set_dir_in(GPIO_TO_PORT(gpio), GPIO_TO_GPIO(gpio));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int gpio_direction_output(unsigned gpio, int value) {
|
||||
ifxmips_port_set_dir_out(0, gpio);
|
||||
ifxmips_port_clear_open_drain(GPIO_TO_PORT(gpio), GPIO_TO_GPIO(gpio));
|
||||
ifxmips_port_clear_altsel0(GPIO_TO_PORT(gpio), GPIO_TO_GPIO(gpio));
|
||||
ifxmips_port_clear_altsel1(GPIO_TO_PORT(gpio), GPIO_TO_GPIO(gpio));
|
||||
ifxmips_port_set_dir_out(GPIO_TO_PORT(gpio), GPIO_TO_GPIO(gpio));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int gpio_get_value(unsigned gpio) {
|
||||
ifxmips_port_get_input(0, gpio);
|
||||
ifxmips_port_get_input(GPIO_TO_PORT(gpio), GPIO_TO_GPIO(gpio));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void gpio_set_value(unsigned gpio, int value) {
|
||||
ifxmips_port_set_output(0, gpio);
|
||||
if(value)
|
||||
ifxmips_port_set_output(GPIO_TO_PORT(gpio), GPIO_TO_GPIO(gpio));
|
||||
else
|
||||
ifxmips_port_clear_output(GPIO_TO_PORT(gpio), GPIO_TO_GPIO(gpio));
|
||||
}
|
||||
|
||||
static inline int gpio_request(unsigned gpio, const char *label) {
|
||||
|
||||
Reference in New Issue
Block a user