Summary of changes: * moved config-3.18 to config-4.4 and patches-3.18 to patches-4.4 * removed most of the first two patches, that seem to be upstream already * changed deprecated/removed IRQF_DISABLED to zero following examples in upstream kernel patches * added config line to disable device-tree to satisfy kernel configuration * add new image generation code Build tested and run tested on an Accton MR3201A. Signed-off-by: Russell Senior <russell@personaltelco.net> Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com> Signed-off-by: John Crispin <john@phrozen.org>
		
			
				
	
	
		
			117 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- a/arch/mips/ath25/ar2315.c
 | 
						|
+++ b/arch/mips/ath25/ar2315.c
 | 
						|
@@ -23,6 +23,7 @@
 | 
						|
 #include <linux/reboot.h>
 | 
						|
 #include <linux/delay.h>
 | 
						|
 #include <linux/gpio.h>
 | 
						|
+#include <linux/leds.h>
 | 
						|
 #include <asm/bootinfo.h>
 | 
						|
 #include <asm/reboot.h>
 | 
						|
 #include <asm/time.h>
 | 
						|
@@ -260,6 +261,50 @@ static struct platform_device ar2315_spi
 | 
						|
 	.num_resources = ARRAY_SIZE(ar2315_spiflash_res)
 | 
						|
 };
 | 
						|
 
 | 
						|
+#ifdef CONFIG_LEDS_GPIO
 | 
						|
+static struct gpio_led ar2315_leds[6];
 | 
						|
+static struct gpio_led_platform_data ar2315_led_data = {
 | 
						|
+	.leds = (void *)ar2315_leds,
 | 
						|
+};
 | 
						|
+
 | 
						|
+static struct platform_device ar2315_gpio_leds = {
 | 
						|
+	.name = "leds-gpio",
 | 
						|
+	.id = -1,
 | 
						|
+	.dev = {
 | 
						|
+		.platform_data = (void *)&ar2315_led_data,
 | 
						|
+	}
 | 
						|
+};
 | 
						|
+
 | 
						|
+static void __init ar2315_init_gpio_leds(void)
 | 
						|
+{
 | 
						|
+	static char led_names[6][6];
 | 
						|
+	int i, led = 0;
 | 
						|
+
 | 
						|
+	ar2315_led_data.num_leds = 0;
 | 
						|
+	for (i = 1; i < 8; i++) {
 | 
						|
+		if ((i == AR2315_RESET_GPIO) ||
 | 
						|
+		    (i == ath25_board.config->reset_config_gpio))
 | 
						|
+			continue;
 | 
						|
+
 | 
						|
+		if (i == ath25_board.config->sys_led_gpio)
 | 
						|
+			strcpy(led_names[led], "wlan");
 | 
						|
+		else
 | 
						|
+			sprintf(led_names[led], "gpio%d", i);
 | 
						|
+
 | 
						|
+		ar2315_leds[led].name = led_names[led];
 | 
						|
+		ar2315_leds[led].gpio = i;
 | 
						|
+		ar2315_leds[led].active_low = 0;
 | 
						|
+		led++;
 | 
						|
+	}
 | 
						|
+	ar2315_led_data.num_leds = led;
 | 
						|
+	platform_device_register(&ar2315_gpio_leds);
 | 
						|
+}
 | 
						|
+#else
 | 
						|
+static inline void ar2315_init_gpio_leds(void)
 | 
						|
+{
 | 
						|
+}
 | 
						|
+#endif
 | 
						|
+
 | 
						|
 void __init ar2315_init_devices(void)
 | 
						|
 {
 | 
						|
 	/* Find board configuration */
 | 
						|
@@ -270,6 +315,8 @@ void __init ar2315_init_devices(void)
 | 
						|
 	ar2315_gpio_res[1].end = ar2315_gpio_res[1].start;
 | 
						|
 	platform_device_register(&ar2315_gpio);
 | 
						|
 
 | 
						|
+	ar2315_init_gpio_leds();
 | 
						|
+
 | 
						|
 	ar2315_wdt_res[1].start = irq_create_mapping(ar2315_misc_irq_domain,
 | 
						|
 						     AR2315_MISC_IRQ_WATCHDOG);
 | 
						|
 	ar2315_wdt_res[1].end = ar2315_wdt_res[1].start;
 | 
						|
--- a/arch/mips/ath25/ar5312.c
 | 
						|
+++ b/arch/mips/ath25/ar5312.c
 | 
						|
@@ -23,6 +23,7 @@
 | 
						|
 #include <linux/mtd/physmap.h>
 | 
						|
 #include <linux/reboot.h>
 | 
						|
 #include <linux/gpio.h>
 | 
						|
+#include <linux/leds.h>
 | 
						|
 #include <asm/bootinfo.h>
 | 
						|
 #include <asm/reboot.h>
 | 
						|
 #include <asm/time.h>
 | 
						|
@@ -231,6 +232,23 @@ static struct platform_device ar5312_gpi
 | 
						|
 	.num_resources = ARRAY_SIZE(ar5312_gpio_res),
 | 
						|
 };
 | 
						|
 
 | 
						|
+#ifdef CONFIG_LEDS_GPIO
 | 
						|
+static struct gpio_led ar5312_leds[] = {
 | 
						|
+	{ .name = "wlan", .gpio = 0, .active_low = 1, },
 | 
						|
+};
 | 
						|
+
 | 
						|
+static const struct gpio_led_platform_data ar5312_led_data = {
 | 
						|
+	.num_leds = ARRAY_SIZE(ar5312_leds),
 | 
						|
+	.leds = (void *)ar5312_leds,
 | 
						|
+};
 | 
						|
+
 | 
						|
+static struct platform_device ar5312_gpio_leds = {
 | 
						|
+	.name = "leds-gpio",
 | 
						|
+	.id = -1,
 | 
						|
+	.dev.platform_data = (void *)&ar5312_led_data,
 | 
						|
+};
 | 
						|
+#endif
 | 
						|
+
 | 
						|
 static void __init ar5312_flash_init(void)
 | 
						|
 {
 | 
						|
 	void __iomem *flashctl_base;
 | 
						|
@@ -301,6 +319,11 @@ void __init ar5312_init_devices(void)
 | 
						|
 
 | 
						|
 	platform_device_register(&ar5312_gpio);
 | 
						|
 
 | 
						|
+#ifdef CONFIG_LEDS_GPIO
 | 
						|
+	ar5312_leds[0].gpio = config->sys_led_gpio;
 | 
						|
+	platform_device_register(&ar5312_gpio_leds);
 | 
						|
+#endif
 | 
						|
+
 | 
						|
 	/* Fix up MAC addresses if necessary */
 | 
						|
 	if (is_broadcast_ether_addr(config->enet0_mac))
 | 
						|
 		ether_addr_copy(config->enet0_mac, config->enet1_mac);
 |