brcm63xx: add dts and profile for Livebox
[openwrt/staging/mkresin.git] / target / linux / brcm63xx / patches-3.18 / 513-MIPS-BCM63XX-add-inventel-Livebox-support.patch
index 2f7bf49ca86e70a568af51acba308726346aad6b..3414379969db558b41496acdb1250a46e6daadc0 100644 (file)
@@ -1,15 +1,15 @@
-From 7e6b22225e16fbb22dbf7f2113d8c6d65333818c Mon Sep 17 00:00:00 2001
+From e796582b499f0ba6acaa1ac3a10c09cceaab7702 Mon Sep 17 00:00:00 2001
 From: Jonas Gorski <jogo@openwrt.org>
 Date: Sun, 9 Mar 2014 04:55:52 +0100
-Subject: [PATCH 44/44] MIPS: BCM63XX: add inventel Livebox support
+Subject: [PATCH] MIPS: BCM63XX: add inventel Livebox support
 
 ---
- arch/mips/bcm63xx/boards/Kconfig         |   6 +
- arch/mips/bcm63xx/boards/Makefile        |   1 +
- arch/mips/bcm63xx/boards/board_common.c  |   2 +-
- arch/mips/bcm63xx/boards/board_common.h  |   6 +
- arch/mips/bcm63xx/boards/board_livebox.c | 193 +++++++++++++++++++++++++++++++
- 5 files changed, 207 insertions(+), 1 deletion(-)
+ arch/mips/bcm63xx/boards/Kconfig         |    6 +
+ arch/mips/bcm63xx/boards/Makefile        |    1 +
+ arch/mips/bcm63xx/boards/board_common.c  |    2 +-
+ arch/mips/bcm63xx/boards/board_common.h  |    6 +
+ arch/mips/bcm63xx/boards/board_livebox.c |  215 ++++++++++++++++++++++++++++++
+ 5 files changed, 229 insertions(+), 1 deletion(-)
  create mode 100644 arch/mips/bcm63xx/boards/board_livebox.c
 
 --- a/arch/mips/bcm63xx/boards/Kconfig
@@ -57,7 +57,7 @@ Subject: [PATCH 44/44] MIPS: BCM63XX: add inventel Livebox support
  #endif /* __BOARD_COMMON_H */
 --- /dev/null
 +++ b/arch/mips/bcm63xx/boards/board_livebox.c
-@@ -0,0 +1,200 @@
+@@ -0,0 +1,215 @@
 +/*
 + * This file is subject to the terms and conditions of the GNU General Public
 + * License.  See the file "COPYING" in the main directory of this archive
@@ -183,6 +183,11 @@ Subject: [PATCH 44/44] MIPS: BCM63XX: add inventel Livebox support
 +#endif
 +};
 +
++static struct of_device_id const livebox_boards_dt[] = {
++      { .compatible = "inventel,livebox-blue-5g", .data = &board_livebox_blue5g, },
++      { }
++};
++
 +/*
 + * register & return a new board mac address
 + */
@@ -227,23 +232,33 @@ Subject: [PATCH 44/44] MIPS: BCM63XX: add inventel Livebox support
 +      u32 val;
 +      u8 hw_version;
 +      const struct board_info *board;
-+
-+      /* Get hardware version */
-+      val = bcm_gpio_readl(GPIO_CTL_LO_REG);
-+      val &= ~LIVEBOX_GPIO_DETECT_MASK;
-+      bcm_gpio_writel(val, GPIO_CTL_LO_REG);
-+
-+      hw_version = bcm_gpio_readl(GPIO_DATA_LO_REG) & LIVEBOX_GPIO_DETECT_MASK;
-+      switch (hw_version) {
-+      case LIVEBOX_HW_BLUE5G_9:
-+              printk(KERN_INFO PFX "Livebox BLUE5G.9\n");
-+              board = bcm963xx_boards[0];
-+              break;
-+      default:
-+              printk(KERN_INFO PFX "Unknown livebox version: %02x\n", hw_version);
-+              /* use default livebox configuration */
-+              board = bcm963xx_boards[0];
-+              break;
++      const struct of_device_id *board_match;
++
++      /* find board by compat */
++      board_match = bcm63xx_match_board(livebox_boards_dt);
++      if (board_match) {
++              board = board_match->data;
++      } else {
++              /* Get hardware version */
++              val = bcm_gpio_readl(GPIO_CTL_LO_REG);
++              val &= ~LIVEBOX_GPIO_DETECT_MASK;
++              bcm_gpio_writel(val, GPIO_CTL_LO_REG);
++
++              hw_version = bcm_gpio_readl(GPIO_DATA_LO_REG);
++              hw_version &= LIVEBOX_GPIO_DETECT_MASK;
++
++              switch (hw_version) {
++              case LIVEBOX_HW_BLUE5G_9:
++                      printk(KERN_INFO PFX "Livebox BLUE5G.9\n");
++                      board = bcm963xx_boards[0];
++                      break;
++              default:
++                      printk(KERN_INFO PFX "Unknown livebox version: %02x\n",
++                             hw_version);
++                      /* use default livebox configuration */
++                      board = bcm963xx_boards[0];
++                      break;
++              }
 +      }
 +
 +      /* use default livebox configuration */