iwinfo: don't use the txpower value from debugfs for now, it does not match the value...
[openwrt/svn-archive/archive.git] / target / linux / brcm63xx / patches-3.3 / 501-board-NB4.patch
index 9365efa7a65bb4fda938c30f6d6951d9c21b606c..61fc79343882e91402dfc3d0139d9a2faa418ebb 100644 (file)
@@ -1,16 +1,15 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -14,6 +14,9 @@
- #include <linux/ssb/ssb.h>
+@@ -15,6 +15,8 @@
  #include <linux/gpio_keys.h>
  #include <linux/input.h>
-+#include <linux/spi/spi.h>
+ #include <linux/spi/spi.h>
 +#include <linux/spi/spi_gpio.h>
 +#include <linux/spi/74x164.h>
  #include <asm/addrspace.h>
  #include <bcm63xx_board.h>
  #include <bcm63xx_cpu.h>
-@@ -40,6 +43,12 @@
+@@ -44,6 +46,12 @@
  #define CFE_OFFSET_64K                0x10000
  #define CFE_OFFSET_128K               0x20000
  
 +#define NB4_SPI_GPIO_CLK      6
 +#define NB4_74HC64_GPIO(X)    (NB4_74X164_GPIO_BASE + (X))
 +
- static struct bcm963xx_nvram nvram;
- static unsigned int mac_addr_used;
  static struct board_info board;
-@@ -666,6 +675,496 @@ static struct board_info __initdata boar
+ /*
+@@ -667,6 +675,586 @@ static struct board_info __initdata boar
  
        .has_ohci0                      = 1,
  };
 +
 +      .leds = {
 +              {
-+                      .name           = "adsl",
++                      .name           = "NB4-SER-r0:white:adsl",
 +                      .gpio           = NB4_74HC64_GPIO(4),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "traffic",
++                      .name           = "NB4-SER-r0:white:traffic",
 +                      .gpio           = 2,
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "tel",
++                      .name           = "NB4-SER-r0:white:tel",
 +                      .gpio           = NB4_74HC64_GPIO(3),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "tv",
++                      .name           = "NB4-SER-r0:white:tv",
 +                      .gpio           = NB4_74HC64_GPIO(2),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "wifi",
++                      .name           = "NB4-SER-r0:white:wifi",
 +                      .gpio           = 15,
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "alarm",
++                      .name           = "NB4-SER-r0:white:alarm",
 +                      .gpio           = NB4_74HC64_GPIO(0),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "service:red",
++                      .name           = "NB4-SER-r0:red:service",
 +                      .gpio           = 29,
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "service:green",
++                      .name           = "NB4-SER-r0:green:service",
 +                      .gpio           = 30,
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "service:blue",
++                      .name           = "NB4-SER-r0:blue:service",
 +                      .gpio           = 4,
 +                      .active_low     = 1,
 +              },
 +                      .gpio           = 34,
 +                      .type           = EV_KEY,
 +                      .code           = KEY_RESTART,
++                      .active_low     = 1,
 +                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
 +              },
 +              {
 +                      .gpio           = 37,
 +                      .type           = EV_KEY,
 +                      .code           = KEY_WPS_BUTTON,
++                      .active_low     = 1,
++                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++              },
++              {
++                      .desc           = "service",
++                      .gpio           = 27,
++                      .type           = EV_KEY,
++                      .code           = BTN_0,
++                      .active_low     = 1,
++                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++              },
++              {
++                      .desc           = "clip",
++                      .gpio           = 31,
++                      .type           = EV_KEY,
++                      .code           = BTN_1,
++                      .active_low     = 1,
 +                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
 +              },
 +      },
 +
 +      .leds = {
 +              {
-+                      .name           = "adsl",
++                      .name           = "NB4-SER-r1:white:adsl",
 +                      .gpio           = NB4_74HC64_GPIO(4),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "traffic",
++                      .name           = "NB4-SER-r1:white:traffic",
 +                      .gpio           = 2,
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "tel",
++                      .name           = "NB4-SER-r1:white:tel",
 +                      .gpio           = NB4_74HC64_GPIO(3),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "tv",
++                      .name           = "NB4-SER-r1:white:tv",
 +                      .gpio           = NB4_74HC64_GPIO(2),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "wifi",
++                      .name           = "NB4-SER-r1:white:wifi",
 +                      .gpio           = 15,
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "alarm",
++                      .name           = "NB4-SER-r1:white:alarm",
 +                      .gpio           = NB4_74HC64_GPIO(0),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "service:red",
++                      .name           = "NB4-SER-r1:red:service",
 +                      .gpio           = 29,
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "service:green",
++                      .name           = "NB4-SER-r1:green:service",
 +                      .gpio           = 30,
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "service:blue",
++                      .name           = "NB4-SER-r1:blue:service",
 +                      .gpio           = 4,
 +                      .active_low     = 1,
 +              },
 +                      .gpio           = 34,
 +                      .type           = EV_KEY,
 +                      .code           = KEY_RESTART,
++                      .active_low     = 1,
 +                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
 +              },
 +              {
 +                      .gpio           = 37,
 +                      .type           = EV_KEY,
 +                      .code           = KEY_WPS_BUTTON,
++                      .active_low     = 1,
++                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++              },
++              {
++                      .desc           = "service",
++                      .gpio           = 27,
++                      .type           = EV_KEY,
++                      .code           = BTN_0,
++                      .active_low     = 1,
++                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++              },
++              {
++                      .desc           = "clip",
++                      .gpio           = 31,
++                      .type           = EV_KEY,
++                      .code           = BTN_1,
++                      .active_low     = 1,
 +                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
 +              },
 +      },
 +
 +      .leds = {
 +              {
-+                      .name           = "adsl",
++                      .name           = "NB4-SER-r2:white:adsl",
 +                      .gpio           = NB4_74HC64_GPIO(4),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "traffic",
++                      .name           = "NB4-SER-r2:white:traffic",
 +                      .gpio           = 2,
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "tel",
++                      .name           = "NB4-SER-r2:white:tel",
 +                      .gpio           = NB4_74HC64_GPIO(3),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "tv",
++                      .name           = "NB4-SER-r2:white:tv",
 +                      .gpio           = NB4_74HC64_GPIO(2),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "wifi",
++                      .name           = "NB4-SER-r2:white:wifi",
 +                      .gpio           = 15,
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "alarm",
++                      .name           = "NB4-SER-r2:white:alarm",
 +                      .gpio           = NB4_74HC64_GPIO(0),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "service:red",
++                      .name           = "NB4-SER-r2:red:service",
 +                      .gpio           = 29,
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "service:green",
++                      .name           = "NB4-SER-r2:green:service",
 +                      .gpio           = 30,
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "service:blue",
++                      .name           = "NB4-SER-r2:blue:service",
 +                      .gpio           = 4,
 +                      .active_low     = 1,
 +              },
 +                      .gpio           = 34,
 +                      .type           = EV_KEY,
 +                      .code           = KEY_RESTART,
++                      .active_low     = 1,
 +                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
 +              },
 +              {
 +                      .gpio           = 37,
 +                      .type           = EV_KEY,
 +                      .code           = KEY_WPS_BUTTON,
++                      .active_low     = 1,
++                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++              },
++              {
++                      .desc           = "service",
++                      .gpio           = 27,
++                      .type           = EV_KEY,
++                      .code           = BTN_0,
++                      .active_low     = 1,
++                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++              },
++              {
++                      .desc           = "clip",
++                      .gpio           = 31,
++                      .type           = EV_KEY,
++                      .code           = BTN_1,
++                      .active_low     = 1,
 +                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
 +              },
 +      },
 +
 +      .leds = {
 +              {
-+                      .name           = "adsl",
++                      .name           = "NB4-FXC-r1:white:adsl",
 +                      .gpio           = NB4_74HC64_GPIO(4),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "traffic",
++                      .name           = "NB4-FXC-r1:white:traffic",
 +                      .gpio           = 2,
 +              },
 +              {
-+                      .name           = "tel",
++                      .name           = "NB4-FXC-r1:white:tel",
 +                      .gpio           = NB4_74HC64_GPIO(3),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "tv",
++                      .name           = "NB4-FXC-r1:white:tv",
 +                      .gpio           = NB4_74HC64_GPIO(2),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "wifi",
++                      .name           = "NB4-FXC-r1:white:wifi",
 +                      .gpio           = 15,
 +              },
 +              {
-+                      .name           = "alarm",
++                      .name           = "NB4-FXC-r1:white:alarm",
 +                      .gpio           = NB4_74HC64_GPIO(0),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "service:red",
++                      .name           = "NB4-FXC-r1:red:service",
 +                      .gpio           = 29,
 +              },
 +              {
-+                      .name           = "service:green",
++                      .name           = "NB4-FXC-r1:green:service",
 +                      .gpio           = 30,
 +              },
 +              {
-+                      .name           = "service:blue",
++                      .name           = "NB4-FXC-r1:blue:service",
 +                      .gpio           = 4,
 +              },
 +      },
 +                      .gpio           = 34,
 +                      .type           = EV_KEY,
 +                      .code           = KEY_RESTART,
++                      .active_low     = 1,
 +                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
 +              },
 +              {
 +                      .gpio           = 37,
 +                      .type           = EV_KEY,
 +                      .code           = KEY_WPS_BUTTON,
++                      .active_low     = 1,
++                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++              },
++              {
++                      .desc           = "service",
++                      .gpio           = 27,
++                      .type           = EV_KEY,
++                      .code           = BTN_0,
++                      .active_low     = 1,
++                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++              },
++              {
++                      .desc           = "clip",
++                      .gpio           = 31,
++                      .type           = EV_KEY,
++                      .code           = BTN_1,
++                      .active_low     = 1,
 +                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
 +              },
 +      },
 +
 +      .leds = {
 +              {
-+                      .name           = "adsl",
++                      .name           = "NB4-FXC-r2:white:adsl",
 +                      .gpio           = NB4_74HC64_GPIO(4),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "traffic",
++                      .name           = "NB4-FXC-r2:white:traffic",
 +                      .gpio           = 2,
 +              },
 +              {
-+                      .name           = "tel",
++                      .name           = "NB4-FXC-r2:white:tel",
 +                      .gpio           = NB4_74HC64_GPIO(3),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "tv",
++                      .name           = "NB4-FXC-r2:white:tv",
 +                      .gpio           = NB4_74HC64_GPIO(2),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "wifi",
++                      .name           = "NB4-FXC-r2:white:wifi",
 +                      .gpio           = 15,
 +              },
 +              {
-+                      .name           = "alarm",
++                      .name           = "NB4-FXC-r2:white:alarm",
 +                      .gpio           = NB4_74HC64_GPIO(0),
 +                      .active_low     = 1,
 +              },
 +              {
-+                      .name           = "service:red",
++                      .name           = "NB4-FXC-r2:red:service",
 +                      .gpio           = 29,
 +              },
 +              {
-+                      .name           = "service:green",
++                      .name           = "NB4-FXC-r2:green:service",
 +                      .gpio           = 30,
 +              },
 +              {
-+                      .name           = "service:blue",
++                      .name           = "NB4-FXC-r2:blue:service",
 +                      .gpio           = 4,
 +              },
 +      },
 +                      .gpio           = 34,
 +                      .type           = EV_KEY,
 +                      .code           = KEY_RESTART,
++                      .active_low     = 1,
 +                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
 +              },
 +              {
 +                      .gpio           = 37,
 +                      .type           = EV_KEY,
 +                      .code           = KEY_WPS_BUTTON,
++                      .active_low     = 1,
++                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++              },
++              {
++                      .desc           = "service",
++                      .gpio           = 27,
++                      .type           = EV_KEY,
++                      .code           = BTN_0,
++                      .active_low     = 1,
++                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++              },
++              {
++                      .desc           = "clip",
++                      .gpio           = 31,
++                      .type           = EV_KEY,
++                      .code           = BTN_1,
++                      .active_low     = 1,
 +                      .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
 +              },
 +      },
  #endif
  
  /*
-@@ -696,9 +1195,30 @@ static const struct board_info __initdat
+@@ -697,6 +1285,11 @@ static const struct board_info __initdat
        &board_96358vw2,
        &board_AGPFS0,
        &board_DWVS0,
  #endif
  };
  
-+static void __init nb4_nvram_fixup(void)
-+{
-+      u8 *boot_addr, *p;
-+      u32 val;
-+
-+      if (BCMCPU_IS_6358() && (!strcmp(nvram.name, "96358VW"))) {
-+              val = bcm_mpi_readl(MPI_CSBASE_REG(0));
-+              val &= MPI_CSBASE_BASE_MASK;
-+              boot_addr = (u8 *)KSEG1ADDR(val);
+@@ -751,6 +1344,16 @@ static void __init boardid_fixup(u8 *boo
+       struct bcm_tag *tag = (struct bcm_tag *)(boot_addr + CFE_OFFSET_64K);
+       char *board_name = (char *)bcm63xx_nvram_get_name();
++      if (BCMCPU_IS_6358() && (!strcmp(board_name, "96358VW"))) {
++              u8 *p = boot_addr + NB4_PID_OFFSET;
++
 +              /* Extract nb4 PID */
-+              p = boot_addr + NB4_PID_OFFSET;
-+              if (!memcmp(p, "NB4-", 4))
-+                      memcpy(nvram.name, p, sizeof("NB4-XXX-rX"));
++              if (!memcmp(p, "NB4-", 4)) {
++                      memcpy(board_name, p, sizeof("NB4-XXX-rX"));
++                      return;
++              }
 +      }
-+}
-+
- /*
-  * Register a sane SPROMv2 to make the on-board
-  * bcm4318 WLAN work
-@@ -854,6 +1374,9 @@ void __init board_prom_init(void)
-               boardid_fixup(boot_addr);
-       }
-+      /* Fixup broken nb4 board name */
-+      nb4_nvram_fixup();
 +
-       /* find board by name */
-       for (i = 0; i < ARRAY_SIZE(bcm963xx_boards); i++) {
-               if (strncmp(nvram.name, bcm963xx_boards[i]->name,
+       /* check if bcm_tag is at 64k offset */
+       if (strncmp(board_name, tag->board_id, BOARDID_LEN) != 0) {
+               /* else try 128k */