From: Marcin Jurkowski <marcin1j@gmail.com>
Date: Thu, 31 Oct 2013 22:33:10 +0000
Subject: [PATCH] bcm63xx: Add kernel support for Sagemcom F@ST2704V2 ADSL
 router

This adds kernel support support for Sagemcom F@st 2704 wireless ADSL
router.
It's a BCM6328-based 802.11n wireless router with USB port and ADSL2+
modem equipped with 64 MiB RAM and 8 MiB flash.

Signed-off-by: Marcin Jurkowski <marcin1j@gmail.com>
---
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -660,6 +660,122 @@ static struct board_info __initdata boar
 		},
 	},
 };
+
+static struct board_info __initdata board_FAST2704V2 = {
+	.name				= "F@ST2704V2",
+	.expected_cpu_id		= 0x6328,
+
+	.has_uart0			= 1,
+	.has_pci			= 1,
+	.has_ohci0			= 1,
+	.has_ehci0			= 1,
+	.has_usbd			= 1,
+
+	.has_enetsw			= 1,
+
+	.enetsw = {
+		.used_ports = {
+			[0] = {
+				.used	= 1,
+				.phy_id = 1,
+				.name	= "Port 1",
+			},
+			[1] = {
+				.used	= 1,
+				.phy_id	= 2,
+				.name	= "Port 2",
+			},
+			[2] = {
+				.used	= 1,
+				.phy_id	= 3,
+				.name	= "Port 3",
+			},
+			[3] = {
+				.used	= 1,
+				.phy_id	= 4,
+				.name	= "Port 4",
+			},
+		},
+	},
+
+	.leds = {
+		/* front LEDs */
+		{
+			.name			= "F@ST2704V2:green:power",
+			.gpio			= 4,
+			.active_low		= 1,
+			.default_trigger	= "default-on",
+		},
+		{
+			.name			= "F@ST2704V2:red:power",
+			.gpio			= 5,
+			.active_low		= 1,
+		},
+		{
+			.name			= "F@ST2704V2:red:inet",
+			.gpio			= 2,
+			.active_low		= 1,
+		},
+		{
+			.name			= "F@ST2704V2:green:dsl",
+			.gpio			= 3,
+			.active_low		= 1,
+		},
+		{
+			.name			= "F@ST2704V2:green:inet",
+			.gpio			= 11,
+			.active_low		= 1,
+		},
+		{
+			.name			= "F@ST2704V2:green:usb",
+			.gpio			= 1,
+			.active_low		= 1,
+		},
+
+		/* side button LEDs */
+		{
+			.name			= "F@ST2704V2:green:wps",
+			.gpio			= 10,
+			.active_low		= 1,
+		},
+
+		/* FIXME: can't control gpio0 line in "out" state, needs further investigation */
+		/*
+		{
+			.name			= "F@ST2704V2:green:rfkill",
+			.gpio			= 0,
+			.active_low		= 1,
+		},
+		*/
+
+	},
+	.buttons = {
+		{
+			.desc			= "reset",
+			.gpio			= 23,
+			.active_low		= 1,
+			.type			= EV_KEY,
+			.code			= KEY_RESTART,
+			.debounce_interval	= BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+		},
+		{
+			.desc			= "wps",
+			.gpio			= 24,
+			.active_low		= 1,
+			.type			= EV_KEY,
+			.code			= KEY_WPS_BUTTON,
+			.debounce_interval	= BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+		},
+		{
+			.desc			= "rfkill",
+			.gpio			= 15,
+			.active_low		= 1,
+			.type			= EV_KEY,
+			.code			= KEY_WLAN,
+			.debounce_interval	= BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+		},
+	},
+};
 #endif /* CONFIG_BCM63XX_CPU_6328 */
 
 /*
@@ -3502,6 +3618,7 @@ static const struct board_info __initcon
 	&board_963281TAN,
 	&board_A4001N1,
 	&board_dsl_274xb_f1,
+	&board_FAST2704V2,
 #endif
 #ifdef CONFIG_BCM63XX_CPU_6338
 	&board_96338gw,