summaryrefslogtreecommitdiff
path: root/target/linux/atheros/files
diff options
context:
space:
mode:
authorblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>2008-08-04 21:22:00 +0000
committerblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>2008-08-04 21:22:00 +0000
commit7fee7d1f224b8c02dd8eba0bdb388ab7c504ad99 (patch)
tree39a7c95e839de768dece7366afa0ba5d1a9d7131 /target/linux/atheros/files
parentd6077810b48b1dc454224f3f572db1f7d2075daa (diff)
- bump atheros to .26
- adds leds-gpio to default selection on atheros - extend led platform setup on atheros git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12100 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/atheros/files')
-rw-r--r--target/linux/atheros/files/arch/mips/atheros/ar5315/board.c43
1 files changed, 33 insertions, 10 deletions
diff --git a/target/linux/atheros/files/arch/mips/atheros/ar5315/board.c b/target/linux/atheros/files/arch/mips/atheros/ar5315/board.c
index eafde33780..96c6f8fef0 100644
--- a/target/linux/atheros/files/arch/mips/atheros/ar5315/board.c
+++ b/target/linux/atheros/files/arch/mips/atheros/ar5315/board.c
@@ -93,11 +93,9 @@ static struct platform_device ar5315_spiflash = {
};
#ifdef CONFIG_LEDS_GPIO
-static struct gpio_led ar5315_leds[] = {
- { .name = "wlan", .gpio = 0, .active_low = 1, },
-};
+static struct gpio_led ar5315_leds[8];
-static const struct gpio_led_platform_data ar5315_led_data = {
+static struct gpio_led_platform_data ar5315_led_data = {
.num_leds = ARRAY_SIZE(ar5315_leds),
.leds = (void *) ar5315_leds,
};
@@ -111,11 +109,8 @@ static struct platform_device ar5315_gpio_leds = {
};
#endif
-
static __initdata struct platform_device *ar5315_devs[5];
-
-
static void *flash_regs;
static inline __u32 spiflash_regread32(int reg)
@@ -147,12 +142,12 @@ static __u8 spiflash_probe(void)
spiflash_regwrite32(SPI_FLASH_OPCODE, 0xab);
reg = (reg & ~SPI_CTL_TX_RX_CNT_MASK) | 4 |
- (1 << 4) | SPI_CTL_START;
+ (1 << 4) | SPI_CTL_START;
spiflash_regwrite32(SPI_FLASH_CTL, reg);
do {
- reg = spiflash_regread32(SPI_FLASH_CTL);
+ reg = spiflash_regread32(SPI_FLASH_CTL);
} while (reg & SPI_CTL_BUSY);
reg = (__u32) spiflash_regread32(SPI_FLASH_DATA);
@@ -206,6 +201,10 @@ int __init ar5315_init_devices(void)
struct ar531x_config *config;
struct ar531x_boarddata *bcfg;
int dev = 0;
+#ifdef CONFIG_LEDS_GPIO
+ int i;
+ char *tmp;
+#endif
if (!is_5315)
return 0;
@@ -246,7 +245,31 @@ int __init ar5315_init_devices(void)
ar5315_devs[dev++] = &ar5315_spiflash;
#ifdef CONFIG_LEDS_GPIO
- ar5315_leds[0].gpio = bcfg->sysLedGpio;
+ ar5315_led_data.num_leds = 0;
+ for(i = 0; i < 8; i++)
+ {
+ if((i != AR5315_RESET_GPIO) && (i != bcfg->resetConfigGpio))
+ {
+ if(i == bcfg->sysLedGpio)
+ {
+ tmp = kstrdup("wlan", GFP_KERNEL);
+ } else {
+ tmp = kmalloc(6, GFP_KERNEL);
+ if(tmp)
+ sprintf((char*)tmp, "gpio%d", i);
+ }
+ if(tmp)
+ {
+ ar5315_leds[ar5315_led_data.num_leds].name = tmp;
+ ar5315_leds[ar5315_led_data.num_leds].gpio = i;
+ ar5315_leds[ar5315_led_data.num_leds].active_low = 0;
+ ar5315_led_data.num_leds++;
+ } else {
+ printk("failed to alloc led string\n");
+ continue;
+ }
+ }
+ }
ar5315_devs[dev++] = &ar5315_gpio_leds;
#endif