diff --git a/arch/mips/ar7/platform.c b/arch/mips/ar7/platform.c
index 1db191c..76a358e 100644
--- a/arch/mips/ar7/platform.c
+++ b/arch/mips/ar7/platform.c
@@ -42,39 +42,42 @@
 #include <asm/mach-ar7/gpio.h>
 #include <asm/mach-ar7/prom.h>
 
+/*****************************************************************************
+ * VLYNQ Bus
+ ****************************************************************************/
 struct plat_vlynq_data {
 	struct plat_vlynq_ops ops;
 	int gpio_bit;
 	int reset_bit;
 };
 
-
 static int vlynq_on(struct vlynq_device *dev)
 {
-	int result;
+	int ret;
 	struct plat_vlynq_data *pdata = dev->dev.platform_data;
 
-	result = gpio_request(pdata->gpio_bit, "vlynq");
-	if (result)
+	ret = gpio_request(pdata->gpio_bit, "vlynq");
+	if (ret)
 		goto out;
 
 	ar7_device_reset(pdata->reset_bit);
 
-	result = ar7_gpio_disable(pdata->gpio_bit);
-	if (result)
+	ret = ar7_gpio_disable(pdata->gpio_bit);
+	if (ret)
 		goto out_enabled;
 
-	result = ar7_gpio_enable(pdata->gpio_bit);
-	if (result)
+	ret = ar7_gpio_enable(pdata->gpio_bit);
+	if (ret)
 		goto out_enabled;
 
-	result = gpio_direction_output(pdata->gpio_bit, 0);
-	if (result)
+	ret = gpio_direction_output(pdata->gpio_bit, 0);
+	if (ret)
 		goto out_gpio_enabled;
 
 	msleep(50);
 
 	gpio_set_value(pdata->gpio_bit, 1);
+
 	msleep(50);
 
 	return 0;
@@ -85,352 +88,208 @@
 	ar7_device_disable(pdata->reset_bit);
 	gpio_free(pdata->gpio_bit);
 out:
-	return result;
+	return ret;
 }
 
 static void vlynq_off(struct vlynq_device *dev)
 {
 	struct plat_vlynq_data *pdata = dev->dev.platform_data;
+
 	ar7_gpio_disable(pdata->gpio_bit);
 	gpio_free(pdata->gpio_bit);
 	ar7_device_disable(pdata->reset_bit);
 }
 
-static struct resource physmap_flash_resource = {
-	.name = "mem",
-	.flags = IORESOURCE_MEM,
-	.start = 0x10000000,
-	.end = 0x107fffff,
-};
-
-static struct resource cpmac_low_res[] = {
-	{
-		.name = "regs",
-		.flags = IORESOURCE_MEM,
-		.start = AR7_REGS_MAC0,
-		.end = AR7_REGS_MAC0 + 0x7ff,
-	},
-	{
-		.name = "irq",
-		.flags = IORESOURCE_IRQ,
-		.start = 27,
-		.end = 27,
-	},
-};
-
-static struct resource cpmac_high_res[] = {
-	{
-		.name = "regs",
-		.flags = IORESOURCE_MEM,
-		.start = AR7_REGS_MAC1,
-		.end = AR7_REGS_MAC1 + 0x7ff,
-	},
-	{
-		.name = "irq",
-		.flags = IORESOURCE_IRQ,
-		.start = 41,
-		.end = 41,
-	},
-};
-
 static struct resource vlynq_low_res[] = {
 	{
-		.name = "regs",
-		.flags = IORESOURCE_MEM,
-		.start = AR7_REGS_VLYNQ0,
-		.end = AR7_REGS_VLYNQ0 + 0xff,
+		.name	= "regs",
+		.flags	= IORESOURCE_MEM,
+		.start	= AR7_REGS_VLYNQ0,
+		.end	= AR7_REGS_VLYNQ0 + 0xff,
 	},
 	{
-		.name = "irq",
-		.flags = IORESOURCE_IRQ,
-		.start = 29,
-		.end = 29,
+		.name	= "irq",
+		.flags	= IORESOURCE_IRQ,
+		.start	= 29,
+		.end	= 29,
 	},
 	{
-		.name = "mem",
-		.flags = IORESOURCE_MEM,
-		.start = 0x04000000,
-		.end = 0x04ffffff,
+		.name	= "mem",
+		.flags	= IORESOURCE_MEM,
+		.start	= 0x04000000,
+		.end	= 0x04ffffff,
 	},
 	{
-		.name = "devirq",
-		.flags = IORESOURCE_IRQ,
-		.start = 80,
-		.end = 111,
+		.name	= "devirq",
+		.flags	= IORESOURCE_IRQ,
+		.start	= 80,
+		.end	= 111,
 	},
 };
 
 static struct resource vlynq_high_res[] = {
 	{
-		.name = "regs",
-		.flags = IORESOURCE_MEM,
-		.start = AR7_REGS_VLYNQ1,
-		.end = AR7_REGS_VLYNQ1 + 0xff,
+		.name	= "regs",
+		.flags	= IORESOURCE_MEM,
+		.start	= AR7_REGS_VLYNQ1,
+		.end	= AR7_REGS_VLYNQ1 + 0xff,
 	},
 	{
-		.name = "irq",
-		.flags = IORESOURCE_IRQ,
-		.start = 33,
-		.end = 33,
+		.name	= "irq",
+		.flags	= IORESOURCE_IRQ,
+		.start	= 33,
+		.end	= 33,
 	},
 	{
-		.name = "mem",
-		.flags = IORESOURCE_MEM,
-		.start = 0x0c000000,
-		.end = 0x0cffffff,
+		.name	= "mem",
+		.flags	= IORESOURCE_MEM,
+		.start	= 0x0c000000,
+		.end	= 0x0cffffff,
 	},
 	{
-		.name = "devirq",
-		.flags = IORESOURCE_IRQ,
-		.start = 112,
-		.end = 143,
+		.name	= "devirq",
+		.flags	= IORESOURCE_IRQ,
+		.start	= 112,
+		.end	= 143,
 	},
 };
 
-static struct resource usb_res[] = {
-	{
-		.name = "regs",
-		.flags = IORESOURCE_MEM,
-		.start = AR7_REGS_USB,
-		.end = AR7_REGS_USB + 0xff,
-	},
-	{
-		.name = "irq",
-		.flags = IORESOURCE_IRQ,
-		.start = 32,
-		.end = 32,
-	},
-	{
-		.name = "mem",
-		.flags = IORESOURCE_MEM,
-		.start = 0x03400000,
-		.end = 0x03401fff,
-	},
-};
-
-static struct physmap_flash_data physmap_flash_data = {
-	.width = 2,
-};
-
-static struct fixed_phy_status fixed_phy_status __initdata = {
-	.link = 1,
-	.speed = 100,
-	.duplex = 1,
-};
-
-static struct plat_cpmac_data cpmac_low_data = {
-	.reset_bit = 17,
-	.power_bit = 20,
-	.phy_mask = 0x80000000,
-};
-
-static struct plat_cpmac_data cpmac_high_data = {
-	.reset_bit = 21,
-	.power_bit = 22,
-	.phy_mask = 0x7fffffff,
-};
-
 static struct plat_vlynq_data vlynq_low_data = {
-	.ops.on = vlynq_on,
-	.ops.off = vlynq_off,
-	.reset_bit = 20,
-	.gpio_bit = 18,
+	.ops = {
+		.on	= vlynq_on,
+		.off	= vlynq_off,
+	},
+	.reset_bit	= 20,
+	.gpio_bit	= 18,
 };
 
 static struct plat_vlynq_data vlynq_high_data = {
-	.ops.on = vlynq_on,
-	.ops.off = vlynq_off,
-	.reset_bit = 16,
-	.gpio_bit = 19,
-};
-
-static struct platform_device physmap_flash = {
-	.id = 0,
-	.name = "physmap-flash",
-	.dev.platform_data = &physmap_flash_data,
-	.resource = &physmap_flash_resource,
-	.num_resources = 1,
-};
-
-static u64 cpmac_dma_mask = DMA_BIT_MASK(32);
-static struct platform_device cpmac_low = {
-	.id = 0,
-	.name = "cpmac",
-	.dev = {
-		.dma_mask = &cpmac_dma_mask,
-		.coherent_dma_mask = DMA_BIT_MASK(32),
-		.platform_data = &cpmac_low_data,
+	.ops = {
+		.on	= vlynq_on,
+		.off	= vlynq_off,
 	},
-	.resource = cpmac_low_res,
-	.num_resources = ARRAY_SIZE(cpmac_low_res),
-};
-
-static struct platform_device cpmac_high = {
-	.id = 1,
-	.name = "cpmac",
-	.dev = {
-		.dma_mask = &cpmac_dma_mask,
-		.coherent_dma_mask = DMA_BIT_MASK(32),
-		.platform_data = &cpmac_high_data,
-	},
-	.resource = cpmac_high_res,
-	.num_resources = ARRAY_SIZE(cpmac_high_res),
+	.reset_bit	= 26,
+	.gpio_bit	= 19,
 };
 
 static struct platform_device vlynq_low = {
-	.id = 0,
-	.name = "vlynq",
-	.dev.platform_data = &vlynq_low_data,
-	.resource = vlynq_low_res,
-	.num_resources = ARRAY_SIZE(vlynq_low_res),
+	.id		= 0,
+	.name		= "vlynq",
+	.dev = {
+		.platform_data	= &vlynq_low_data,
+	},
+	.resource	= vlynq_low_res,
+	.num_resources	= ARRAY_SIZE(vlynq_low_res),
 };
 
 static struct platform_device vlynq_high = {
-	.id = 1,
-	.name = "vlynq",
-	.dev.platform_data = &vlynq_high_data,
-	.resource = vlynq_high_res,
-	.num_resources = ARRAY_SIZE(vlynq_high_res),
-};
-
-
-static struct gpio_led default_leds[] = {
-	{
-		.name = "status",
-		.gpio = 8,
-		.active_low = 1,
-	},
-};
-
-static struct gpio_led dsl502t_leds[] = {
-	{
-		.name = "status",
-		.gpio = 9,
-		.active_low = 1,
-	},
-	{
-		.name = "ethernet",
-		.gpio = 7,
-		.active_low = 1,
-	},
-	{
-		.name = "usb",
-		.gpio = 12,
-		.active_low = 1,
-	},
-};
-
-static struct gpio_led dg834g_leds[] = {
-	{
-		.name = "ppp",
-		.gpio = 6,
-		.active_low = 1,
-	},
-	{
-		.name = "status",
-		.gpio = 7,
-		.active_low = 1,
-	},
-	{
-		.name = "adsl",
-		.gpio = 8,
-		.active_low = 1,
-	},
-	{
-		.name = "wifi",
-		.gpio = 12,
-		.active_low = 1,
-	},
-	{
-		.name = "power",
-		.gpio = 14,
-		.active_low = 1,
-		.default_trigger = "default-on",
-	},
-};
-
-static struct gpio_led fb_sl_leds[] = {
-	{
-		.name = "1",
-		.gpio = 7,
-	},
-	{
-		.name = "2",
-		.gpio = 13,
-		.active_low = 1,
-	},
-	{
-		.name = "3",
-		.gpio = 10,
-		.active_low = 1,
-	},
-	{
-		.name = "4",
-		.gpio = 12,
-		.active_low = 1,
-	},
-	{
-		.name = "5",
-		.gpio = 9,
-		.active_low = 1,
-	},
-};
-
-static struct gpio_led fb_fon_leds[] = {
-	{
-		.name = "1",
-		.gpio = 8,
-	},
-	{
-		.name = "2",
-		.gpio = 3,
-		.active_low = 1,
-	},
-	{
-		.name = "3",
-		.gpio = 5,
-	},
-	{
-		.name = "4",
-		.gpio = 4,
-		.active_low = 1,
-	},
-	{
-		.name = "5",
-		.gpio = 11,
-		.active_low = 1,
-	},
-};
-
-static struct gpio_led_platform_data ar7_led_data;
-
-static struct platform_device ar7_gpio_leds = {
-	.name = "leds-gpio",
-	.id = -1,
+	.id		= 1,
+	.name		= "vlynq",
 	.dev = {
-		.platform_data = &ar7_led_data,
-	}
+		.platform_data	= &vlynq_high_data,
+	},
+	.resource	= vlynq_high_res,
+	.num_resources	= ARRAY_SIZE(vlynq_high_res),
 };
 
-static struct platform_device ar7_udc = {
-	.id = -1,
-	.name = "ar7_udc",
-	.resource = usb_res,
-	.num_resources = ARRAY_SIZE(usb_res),
+/*****************************************************************************
+ * Flash
+ ****************************************************************************/
+static struct resource physmap_flash_resource = {
+	.name	= "mem",
+	.flags	= IORESOURCE_MEM,
+	.start	= 0x10000000,
+	.end	= 0x107fffff,
 };
 
-static struct resource ar7_wdt_res = {
-	.name = "regs",
-	.start = -1, /* Filled at runtime */
-	.end = -1, /* Filled at runtime */
-	.flags = IORESOURCE_MEM,
+static struct physmap_flash_data physmap_flash_data = {
+	.width	= 2,
 };
 
-static struct platform_device ar7_wdt = {
-	.id = -1,
-	.name  = "ar7_wdt",
-	.resource = &ar7_wdt_res,
-	.num_resources = 1,
+static struct platform_device physmap_flash = {
+	.name		= "physmap-flash",
+	.dev = {
+		.platform_data	= &physmap_flash_data,
+	},
+	.resource	= &physmap_flash_resource,
+	.num_resources	= 1,
+};
+
+/*****************************************************************************
+ * Ethernet
+ ****************************************************************************/
+static struct resource cpmac_low_res[] = {
+	{
+		.name	= "regs",
+		.flags	= IORESOURCE_MEM,
+		.start	= AR7_REGS_MAC0,
+		.end	= AR7_REGS_MAC0 + 0x7ff,
+	},
+	{
+		.name	= "irq",
+		.flags	= IORESOURCE_IRQ,
+		.start	= 27,
+		.end 	= 27,
+	},
+};
+
+static struct resource cpmac_high_res[] = {
+	{
+		.name	= "regs",
+		.flags	= IORESOURCE_MEM,
+		.start	= AR7_REGS_MAC1,
+		.end	= AR7_REGS_MAC1 + 0x7ff,
+	},
+	{
+		.name	= "irq",
+		.flags	= IORESOURCE_IRQ,
+		.start	= 41,
+		.end	= 41,
+	},
+};
+
+static struct fixed_phy_status fixed_phy_status __initdata = {
+	.link		= 1,
+	.speed		= 100,
+	.duplex		= 1,
+};
+
+static struct plat_cpmac_data cpmac_low_data = {
+	.reset_bit	= 17,
+	.power_bit	= 20,
+	.phy_mask	= 0x80000000,
+};
+
+static struct plat_cpmac_data cpmac_high_data = {
+	.reset_bit	= 21,
+	.power_bit	= 22,
+	.phy_mask	= 0x7fffffff,
+};
+
+static u64 cpmac_dma_mask = DMA_BIT_MASK(32);
+
+static struct platform_device cpmac_low = {
+	.id		= 0,
+	.name		= "cpmac",
+	.dev = {
+		.dma_mask		= &cpmac_dma_mask,
+		.coherent_dma_mask	= DMA_BIT_MASK(32),
+		.platform_data		= &cpmac_low_data,
+	},
+	.resource	= cpmac_low_res,
+	.num_resources	= ARRAY_SIZE(cpmac_low_res),
+};
+
+static struct platform_device cpmac_high = {
+	.id		= 1,
+	.name		= "cpmac",
+	.dev = {
+		.dma_mask		= &cpmac_dma_mask,
+		.coherent_dma_mask	= DMA_BIT_MASK(32),
+		.platform_data		= &cpmac_high_data,
+	},
+	.resource	= cpmac_high_res,
+	.num_resources	= ARRAY_SIZE(cpmac_high_res),
 };
 
 static inline unsigned char char2hex(char h)
@@ -469,6 +328,156 @@
 			char2hex(mac[i * 3 + 1]);
 }
 
+/*****************************************************************************
+ * USB
+ ****************************************************************************/
+static struct resource usb_res[] = {
+	{
+		.name	= "regs",
+		.flags	= IORESOURCE_MEM,
+		.start	= AR7_REGS_USB,
+		.end	= AR7_REGS_USB + 0xff,
+	},
+	{
+		.name	= "irq",
+		.flags	= IORESOURCE_IRQ,
+		.start	= 32,
+		.end	= 32,
+	},
+	{
+		.name	= "mem",
+		.flags	= IORESOURCE_MEM,
+		.start	= 0x03400000,
+		.end	= 0x034001fff,
+	},
+};
+
+static struct platform_device ar7_udc = {
+	.name		= "ar7_udc",
+	.resource	= usb_res,
+	.num_resources	= ARRAY_SIZE(usb_res),
+};
+
+/*****************************************************************************
+ * LEDs
+ ****************************************************************************/
+static struct gpio_led default_leds[] = {
+	{
+		.name			= "status",
+		.gpio			= 8,
+		.active_low		= 1,
+	},
+};
+
+static struct gpio_led dsl502t_leds[] = {
+	{
+		.name			= "status",
+		.gpio			= 9,
+		.active_low		= 1,
+	},
+	{
+		.name			= "ethernet",
+		.gpio			= 7,
+		.active_low		= 1,
+	},
+	{
+		.name			= "usb",
+		.gpio			= 12,
+		.active_low		= 1,
+	},
+};
+
+static struct gpio_led dg834g_leds[] = {
+	{
+		.name			= "ppp",
+		.gpio			= 6,
+		.active_low		= 1,
+	},
+	{
+		.name			= "status",
+		.gpio			= 7,
+		.active_low		= 1,
+	},
+	{
+		.name			= "adsl",
+		.gpio			= 8,
+		.active_low		= 1,
+	},
+	{
+		.name			= "wifi",
+		.gpio			= 12,
+		.active_low		= 1,
+	},
+	{
+		.name			= "power",
+		.gpio			= 14,
+		.active_low		= 1,
+		.default_trigger	= "default-on",
+	},
+};
+
+static struct gpio_led fb_sl_leds[] = {
+	{
+		.name			= "1",
+		.gpio			= 7,
+	},
+	{
+		.name			= "2",
+		.gpio			= 13,
+		.active_low		= 1,
+	},
+	{
+		.name			= "3",
+		.gpio			= 10,
+		.active_low		= 1,
+	},
+	{
+		.name			= "4",
+		.gpio			= 12,
+		.active_low		= 1,
+	},
+	{
+		.name			= "5",
+		.gpio			= 9,
+		.active_low		= 1,
+	},
+};
+
+static struct gpio_led fb_fon_leds[] = {
+	{
+		.name			= "1",
+		.gpio			= 8,
+	},
+	{
+		.name			= "2",
+		.gpio			= 3,
+		.active_low		= 1,
+	},
+	{
+		.name			= "3",
+		.gpio			= 5,
+	},
+	{
+		.name			= "4",
+		.gpio			= 4,
+		.active_low		= 1,
+	},
+	{
+		.name			= "5",
+		.gpio			= 11,
+		.active_low		= 1,
+	},
+};
+
+static struct gpio_led_platform_data ar7_led_data;
+
+static struct platform_device ar7_gpio_leds = {
+	.name = "leds-gpio",
+	.dev = {
+		.platform_data = &ar7_led_data,
+	}
+};
+
 static void __init detect_leds(void)
 {
 	char *prid, *usb_prod;
@@ -501,6 +510,25 @@
 	}
 }
 
+/*****************************************************************************
+ * Watchdog
+ ****************************************************************************/
+static struct resource ar7_wdt_res = {
+	.name		= "regs",
+	.flags		= IORESOURCE_MEM,
+	.start		= -1,	/* Filled at runtime */
+	.end		= -1,	/* Filled at runtime */
+};
+
+static struct platform_device ar7_wdt = {
+	.name		= "ar7_wdt",
+	.resource	= &ar7_wdt_res,
+	.num_resources	= 1,
+};
+
+/*****************************************************************************
+ * Init
+ ****************************************************************************/
 static int __init ar7_register_devices(void)
 {
 	u16 chip_id;
@@ -516,29 +544,28 @@
 	if (IS_ERR(bus_clk))
 		panic("unable to get bus clk\n");
 
-	uart_port[0].type = PORT_16550A;
-	uart_port[0].line = 0;
-	uart_port[0].irq = AR7_IRQ_UART0;
-	uart_port[0].uartclk = clk_get_rate(bus_clk) / 2;
-	uart_port[0].iotype = UPIO_MEM32;
-	uart_port[0].mapbase = AR7_REGS_UART0;
-	uart_port[0].membase = ioremap(uart_port[0].mapbase, 256);
-	uart_port[0].regshift = 2;
+	uart_port[0].type	= PORT_16550A;
+	uart_port[0].line	= 0;
+	uart_port[0].irq	= AR7_IRQ_UART0;
+	uart_port[0].uartclk	= clk_get_rate(bus_clk) / 2;
+	uart_port[0].iotype	= UPIO_MEM32;
+	uart_port[0].mapbase	= AR7_REGS_UART0;
+	uart_port[0].membase	= ioremap(uart_port[0].mapbase, 256);
+	uart_port[0].regshift	= 2;
 	res = early_serial_setup(&uart_port[0]);
 	if (res)
 		return res;
 
-
 	/* Only TNETD73xx have a second serial port */
 	if (ar7_has_second_uart()) {
-		uart_port[1].type = PORT_16550A;
-		uart_port[1].line = 1;
-		uart_port[1].irq = AR7_IRQ_UART1;
-		uart_port[1].uartclk = clk_get_rate(bus_clk) / 2;
-		uart_port[1].iotype = UPIO_MEM32;
-		uart_port[1].mapbase = UR8_REGS_UART1;
-		uart_port[1].membase = ioremap(uart_port[1].mapbase, 256);
-		uart_port[1].regshift = 2;
+		uart_port[1].type	= PORT_16550A;
+		uart_port[1].line	= 1;
+		uart_port[1].irq	= AR7_IRQ_UART1;
+		uart_port[1].uartclk	= clk_get_rate(bus_clk) / 2;
+		uart_port[1].iotype	= UPIO_MEM32;
+		uart_port[1].mapbase	= UR8_REGS_UART1;
+		uart_port[1].membase 	= ioremap(uart_port[1].mapbase, 256);
+		uart_port[1].regshift	= 2;
 		res = early_serial_setup(&uart_port[1]);
 		if (res)
 			return res;
