Browse Source

- bump atheros to .26 - adds leds-gpio to default selection on atheros - extend led platform setup on atheros

SVN-Revision: 12100
John Crispin 17 years ago
parent
commit
d38b4fd256

+ 1 - 1
target/linux/atheros/Makefile

@@ -11,7 +11,7 @@ BOARD:=atheros
 BOARDNAME:=Atheros 231x/5312
 FEATURES:=squashfs jffs2
 
-LINUX_VERSION:=2.6.23.17
+LINUX_VERSION:=2.6.26
 
 include $(INCLUDE_DIR)/target.mk
 

+ 1 - 0
target/linux/atheros/config-2.6.26

@@ -251,3 +251,4 @@ CONFIG_VIDEO_V4L1=m
 CONFIG_VIDEO_V4L2=m
 CONFIG_VIDEO_V4L2_COMMON=m
 CONFIG_ZONE_DMA_FLAG=0
+CONFIG_LEDS_GPIO=y

+ 33 - 10
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