MIPS: BCM47XX: Add detection and GPIO config for Siemens SE505v2
authorHauke Mehrtens <hauke@hauke-m.de>
Sun, 2 Mar 2014 16:49:28 +0000 (17:49 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Wed, 26 Mar 2014 22:09:23 +0000 (23:09 +0100)
This adds board detection for the Siemens SE505v2 and the led gpio
configuration. This board does not have any buttons.
This is based on OpenWrt broadcom-diag and Manuel Munz's nvram dump.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Cc: linux-mips@linux-mips.org
Cc: zajec5@gmail.com
Patchwork: https://patchwork.linux-mips.org/patch/6593/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/bcm47xx/board.c
arch/mips/bcm47xx/leds.c
arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h

index 63979dcec7e85f719e62cba231c681b738837087..abfc04ebb5bd945923c28197d232e50ae178ff80 100644 (file)
@@ -181,6 +181,13 @@ struct bcm47xx_board_type_list3 bcm47xx_board_list_board[] __initconst = {
        { {0}, NULL},
 };
 
+/* boardtype, boardrev */
+static const
+struct bcm47xx_board_type_list2 bcm47xx_board_list_board_type_rev[] __initconst = {
+       {{BCM47XX_BOARD_SIEMENS_SE505V2, "Siemens SE505 V2"}, "0x0101", "0x10"},
+       { {0}, NULL},
+};
+
 static const
 struct bcm47xx_board_type bcm47xx_board_unknown[] __initconst = {
        {BCM47XX_BOARD_UNKNOWN, "Unknown Board"},
@@ -274,6 +281,16 @@ static __init const struct bcm47xx_board_type *bcm47xx_board_get_nvram(void)
                                return &e3->board;
                }
        }
+
+       if (bcm47xx_nvram_getenv("boardtype", buf1, sizeof(buf1)) >= 0 &&
+           bcm47xx_nvram_getenv("boardrev", buf2, sizeof(buf2)) >= 0 &&
+           bcm47xx_nvram_getenv("boardnum", buf3, sizeof(buf3)) ==  -ENOENT) {
+               for (e2 = bcm47xx_board_list_board_type_rev; e2->value1; e2++) {
+                       if (!strcmp(buf1, e2->value1) &&
+                           !strcmp(buf2, e2->value2))
+                               return &e2->board;
+               }
+       }
        return bcm47xx_board_unknown;
 }
 
index d74117574f0196e80a616b200bd229c2a9246ff7..8bacc37e03828bac9d70a37c4d253af394230e12 100644 (file)
@@ -383,6 +383,14 @@ bcm47xx_leds_netgear_wnr834bv2[] __initconst = {
        BCM47XX_GPIO_LED(7, "unk", "connected", 0, LEDS_GPIO_DEFSTATE_OFF),
 };
 
+/* Siemens */
+static const struct gpio_led
+bcm47xx_leds_siemens_se505v2[] __initconst = {
+       BCM47XX_GPIO_LED(0, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF),
+       BCM47XX_GPIO_LED(3, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
+       BCM47XX_GPIO_LED(5, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON),
+};
+
 /* SimpleTech */
 
 static const struct gpio_led
@@ -562,6 +570,10 @@ void __init bcm47xx_leds_register(void)
                bcm47xx_set_pdata(bcm47xx_leds_netgear_wnr834bv2);
                break;
 
+       case BCM47XX_BOARD_SIEMENS_SE505V2:
+               bcm47xx_set_pdata(bcm47xx_leds_siemens_se505v2);
+               break;
+
        case BCM47XX_BOARD_SIMPLETECH_SIMPLESHARE:
                bcm47xx_set_pdata(bcm47xx_leds_simpletech_simpleshare);
                break;
index a564a9fb92bcb887d334bdfc5953702790f1bdd1..60d3742986b4d58b375bd813391b8f979ab999fe 100644 (file)
@@ -94,6 +94,8 @@ enum bcm47xx_board {
 
        BCM47XX_BOARD_PHICOMM_M1,
 
+       BCM47XX_BOARD_SIEMENS_SE505V2,
+
        BCM47XX_BOARD_SIMPLETECH_SIMPLESHARE,
 
        BCM47XX_BOARD_ZTE_H218N,