Index: target/linux/ramips/files/arch/mips/ralink/rt305x/mach-dir-300-revb.c
===================================================================
--- target/linux/ramips/files/arch/mips/ralink/rt305x/mach-dir-300-revb.c	(revision 35572)
+++ target/linux/ramips/files/arch/mips/ralink/rt305x/mach-dir-300-revb.c	(working copy)
@@ -22,6 +22,9 @@
 #define DIR_300B_GPIO_LED_STATUS_AMBER	8
 #define DIR_300B_GPIO_LED_STATUS_GREEN	9
 #define DIR_300B_GPIO_LED_WPS		13
+
+#define DIR_615D_GPIO_LED_WPS_RED	13
+#define DIR_615D_GPIO_LED_WPS_BLUE	11
 /*
  * NOTE: The wan led is also connected to the switch, both
  * switch and gpio must be active to make it light up
@@ -83,6 +86,34 @@
 	}
 };
 
+static struct gpio_led dir_615d_leds_gpio[] __initdata = {
+	{
+		.name		= "d-link:amber:status",
+		.gpio		= DIR_300B_GPIO_LED_STATUS_AMBER,
+		.active_low	= 1,
+	}, {
+		.name		= "d-link:green:status",
+		.gpio		= DIR_300B_GPIO_LED_STATUS_GREEN,
+		.active_low	= 1,
+	}, {
+		.name		= "d-link:amber:wan",
+		.gpio		= DIR_300B_GPIO_LED_WAN_AMBER,
+		.active_low	= 1,
+	}, {
+		.name		= "d-link:green:wan",
+		.gpio		= DIR_300B_GPIO_LED_WAN_GREEN,
+		.active_low	= 1,
+	}, {
+		.name		= "d-link:blue:wps",
+		.gpio		= DIR_615D_GPIO_LED_WPS_BLUE,
+		.active_low	= 1,
+	}, {
+		.name		= "d-link:red:wps",
+		.gpio		= DIR_615D_GPIO_LED_WPS_RED,
+		.active_low	= 1,
+	}
+};
+
 static struct gpio_led dir_620_leds_gpio[] __initdata = {
 	{
 		.name		= "d-link:amber:status",
@@ -131,6 +162,13 @@
 				  dir_300b_leds_gpio);
 }
 
+static void __init dir_615d_init(void)
+{
+	dir_common_init();
+	ramips_register_gpio_leds(-1, ARRAY_SIZE(dir_615d_leds_gpio),
+				  dir_615d_leds_gpio);
+}
+
 static void __init dir_620a1_init(void)
 {
 	dir_common_init();
@@ -149,7 +187,7 @@
 	     dir_300b_init);
 
 MIPS_MACHINE(RAMIPS_MACH_DIR_615_D, "DIR-615-D", "D-Link DIR-615 D",
-	     dir_300b_init);
+	     dir_615d_init);
 
 MIPS_MACHINE(RAMIPS_MACH_DIR_620_A1, "DIR-620-A1", "D-Link DIR-620 A1",
 	     dir_620a1_init);