[at91] Tag the uncompressed image
[openwrt.git] / target / linux / brcm47xx / patches-2.6.34 / 012-MIPS-BCM47xx-Fill-values-for-b43-into-ssb-sprom.patch
index f3213d6..e72b5d7 100644 (file)
@@ -1,24 +1,32 @@
-From f382c623892dad1c6a9ebc0e12d01fd45ee50db8 Mon Sep 17 00:00:00 2001
+From e5c5828063a55a752e2392d820383dd7a5da3737 Mon Sep 17 00:00:00 2001
 From: Hauke Mehrtens <hauke@hauke-m.de>
 Date: Sun, 18 Jul 2010 13:34:32 +0200
-Subject: [PATCH 2/5] MIPS: BCM47xx: Fill more values into ssb sprom
+Subject: [PATCH 2/6] MIPS: BCM47xx: Fill values for b43 into ssb sprom
 
 Most of the values are stored in the nvram and not in the CFE. At first
 the nvram should be read and if there is no value it should look into
 the CFE. Now more values are read out because the b43 and b43legacy
 drivers needs them.
 
+Some parts of this patch have been in OpenWRT for a long time and were
+made by Michael Buesch.
+
 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
 ---
- arch/mips/bcm47xx/setup.c |  130 +++++++++++++++++++++++++++++++++-----------
- 1 files changed, 97 insertions(+), 33 deletions(-)
+ arch/mips/bcm47xx/setup.c |  131 +++++++++++++++++++++++++++++++++-----------
+ 1 files changed, 98 insertions(+), 33 deletions(-)
 
 --- a/arch/mips/bcm47xx/setup.c
 +++ b/arch/mips/bcm47xx/setup.c
-@@ -74,6 +74,94 @@ static void str2eaddr(char *str, char *d
+@@ -74,6 +74,95 @@ static void str2eaddr(char *str, char *d
        }
  }
  
++#define READ_FROM_NVRAM(_outvar, name, buf) \
++      if (nvram_getenv(name, buf, sizeof(buf)) >= 0 || \
++          cfe_getenv(name, buf, sizeof(buf)) >= 0) \
++              sprom->_outvar = simple_strtoul(buf, NULL, 0);
++
 +static void bcm47xx_fill_sprom(struct ssb_sprom *sprom)
 +{
 +      char buf[100];
@@ -26,7 +34,8 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
 +
 +      memset(sprom, 0, sizeof(struct ssb_sprom));
 +
-+      sprom->revision = 3;
++      sprom->revision = 1; /* Fallback: Old hardware does not define this. */
++      READ_FROM_NVRAM(revision, "sromrev", buf);
 +      if (nvram_getenv("il0macaddr", buf, sizeof(buf)) >= 0 ||
 +          cfe_getenv("il0macaddr", buf, sizeof(buf)) >= 0)
 +              str2eaddr(buf, sprom->il0mac);
@@ -36,60 +45,55 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
 +      if (nvram_getenv("et1macaddr", buf, sizeof(buf)) >= 0 ||
 +          cfe_getenv("et1macaddr", buf, sizeof(buf)) >= 0)
 +              str2eaddr(buf, sprom->et1mac);
-+      if (nvram_getenv("et0phyaddr", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("et0phyaddr", buf, sizeof(buf)) >= 0)
-+              sprom->et0phyaddr = simple_strtoul(buf, NULL, 0);
-+      if (nvram_getenv("et1phyaddr", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("et1phyaddr", buf, sizeof(buf)) >= 0)
-+              sprom->et1phyaddr = simple_strtoul(buf, NULL, 0);
-+      if (nvram_getenv("et0mdcport", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("et0mdcport", buf, sizeof(buf)) >= 0)
-+              sprom->et0mdcport = !!simple_strtoul(buf, NULL, 10);
-+      if (nvram_getenv("et1mdcport", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("et1mdcport", buf, sizeof(buf)) >= 0)
-+              sprom->et1mdcport = !!simple_strtoul(buf, NULL, 10);
-+      if (nvram_getenv("pa0b0", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("pa0b0", buf, sizeof(buf)) >= 0)
-+              sprom->pa0b0 = simple_strtoul(buf, NULL, 0);
-+      if (nvram_getenv("pa0b1", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("pa0b1", buf, sizeof(buf)) >= 0)
-+              sprom->pa0b1 = simple_strtoul(buf, NULL, 0);
-+      if (nvram_getenv("pa0b2", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("pa0b2", buf, sizeof(buf)) >= 0)
-+              sprom->pa0b2 = simple_strtoul(buf, NULL, 0);
-+      if (nvram_getenv("pa1b0", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("pa1b0", buf, sizeof(buf)) >= 0)
-+              sprom->pa1b0 = simple_strtoul(buf, NULL, 0);
-+      if (nvram_getenv("pa1b1", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("pa1b1", buf, sizeof(buf)) >= 0)
-+              sprom->pa1b1 = simple_strtoul(buf, NULL, 0);
-+      if (nvram_getenv("pa1b2", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("pa1b2", buf, sizeof(buf)) >= 0)
-+              sprom->pa1b2 = simple_strtoul(buf, NULL, 0);
-+      if (nvram_getenv("wl0gpio0", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("wl0gpio0", buf, sizeof(buf)) >= 0)
-+              sprom->gpio0 = simple_strtoul(buf, NULL, 0);
-+      if (nvram_getenv("wl0gpio1", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("wl0gpio1", buf, sizeof(buf)) >= 0)
-+              sprom->gpio1 = simple_strtoul(buf, NULL, 0);
-+      if (nvram_getenv("wl0gpio2", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("wl0gpio2", buf, sizeof(buf)) >= 0)
-+              sprom->gpio2 = simple_strtoul(buf, NULL, 0);
-+      if (nvram_getenv("wl0gpio3", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("wl0gpio3", buf, sizeof(buf)) >= 0)
-+              sprom->gpio3 = simple_strtoul(buf, NULL, 0);
-+      if (nvram_getenv("pa0maxpwr", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("pa0maxpwr", buf, sizeof(buf)) >= 0)
-+              sprom->maxpwr_bg = simple_strtoul(buf, NULL, 0);
-+      if (nvram_getenv("pa1maxpwr", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("pa1maxpwr", buf, sizeof(buf)) >= 0)
-+              sprom->maxpwr_a = simple_strtoul(buf, NULL, 0);
-+      if (nvram_getenv("pa0itssit", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("pa0itssit", buf, sizeof(buf)) >= 0)
-+              sprom->itssi_bg = simple_strtoul(buf, NULL, 0);
-+      if (nvram_getenv("pa1itssit", buf, sizeof(buf)) >= 0 ||
-+          cfe_getenv("pa1itssit", buf, sizeof(buf)) >= 0)
-+              sprom->itssi_a = simple_strtoul(buf, NULL, 0);
++      READ_FROM_NVRAM(et0phyaddr, "et0phyaddr", buf);
++      READ_FROM_NVRAM(et1phyaddr, "et1phyaddr", buf);
++      READ_FROM_NVRAM(et0mdcport, "et0mdcport", buf);
++      READ_FROM_NVRAM(et1mdcport, "et1mdcport", buf);
++      READ_FROM_NVRAM(board_rev, "boardrev", buf);
++      READ_FROM_NVRAM(country_code, "ccode", buf);
++      READ_FROM_NVRAM(ant_available_a, "aa5g", buf);
++      READ_FROM_NVRAM(ant_available_bg, "aa2g", buf);
++      READ_FROM_NVRAM(pa0b0, "pa0b0", buf);
++      READ_FROM_NVRAM(pa0b1, "pa0b1", buf);
++      READ_FROM_NVRAM(pa0b2, "pa0b2", buf);
++      READ_FROM_NVRAM(pa1b0, "pa1b0", buf);
++      READ_FROM_NVRAM(pa1b1, "pa1b1", buf);
++      READ_FROM_NVRAM(pa1b2, "pa1b2", buf);
++      READ_FROM_NVRAM(pa1lob0, "pa1lob0", buf);
++      READ_FROM_NVRAM(pa1lob2, "pa1lob1", buf);
++      READ_FROM_NVRAM(pa1lob1, "pa1lob2", buf);
++      READ_FROM_NVRAM(pa1hib0, "pa1hib0", buf);
++      READ_FROM_NVRAM(pa1hib2, "pa1hib1", buf);
++      READ_FROM_NVRAM(pa1hib1, "pa1hib2", buf);
++      READ_FROM_NVRAM(gpio0, "wl0gpio0", buf);
++      READ_FROM_NVRAM(gpio1, "wl0gpio1", buf);
++      READ_FROM_NVRAM(gpio2, "wl0gpio2", buf);
++      READ_FROM_NVRAM(gpio3, "wl0gpio3", buf);
++      READ_FROM_NVRAM(maxpwr_bg, "pa0maxpwr", buf);
++      READ_FROM_NVRAM(maxpwr_al, "pa1lomaxpwr", buf);
++      READ_FROM_NVRAM(maxpwr_a, "pa1maxpwr", buf);
++      READ_FROM_NVRAM(maxpwr_ah, "pa1himaxpwr", buf);
++      READ_FROM_NVRAM(itssi_a, "pa1itssit", buf);
++      READ_FROM_NVRAM(itssi_bg, "pa0itssit", buf);
++      READ_FROM_NVRAM(tri2g, "tri2g", buf);
++      READ_FROM_NVRAM(tri5gl, "tri5gl", buf);
++      READ_FROM_NVRAM(tri5g, "tri5g", buf);
++      READ_FROM_NVRAM(tri5gh, "tri5gh", buf);
++      READ_FROM_NVRAM(rxpo2g, "rxpo2g", buf);
++      READ_FROM_NVRAM(rxpo5g, "rxpo5g", buf);
++      READ_FROM_NVRAM(rssisav2g, "rssisav2g", buf);
++      READ_FROM_NVRAM(rssismc2g, "rssismc2g", buf);
++      READ_FROM_NVRAM(rssismf2g, "rssismf2g", buf);
++      READ_FROM_NVRAM(bxa2g, "bxa2g", buf);
++      READ_FROM_NVRAM(rssisav5g, "rssisav5g", buf);
++      READ_FROM_NVRAM(rssismc5g, "rssismc5g", buf);
++      READ_FROM_NVRAM(rssismf5g, "rssismf5g", buf);
++      READ_FROM_NVRAM(bxa5g, "bxa5g", buf);
++      READ_FROM_NVRAM(cck2gpo, "cck2gpo", buf);
++      READ_FROM_NVRAM(ofdm2gpo, "ofdm2gpo", buf);
++      READ_FROM_NVRAM(ofdm5glpo, "ofdm5glpo", buf);
++      READ_FROM_NVRAM(ofdm5gpo, "ofdm5gpo", buf);
++      READ_FROM_NVRAM(ofdm5ghpo, "ofdm5ghpo", buf);
 +
 +      if (nvram_getenv("boardflags", buf, sizeof(buf)) >= 0 ||
 +          cfe_getenv("boardflags", buf, sizeof(buf)) >= 0)
@@ -110,7 +114,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
  static int bcm47xx_get_invariants(struct ssb_bus *bus,
                                   struct ssb_init_invariants *iv)
  {
-@@ -82,43 +170,19 @@ static int bcm47xx_get_invariants(struct
+@@ -82,43 +171,19 @@ static int bcm47xx_get_invariants(struct
        /* Fill boardinfo structure */
        memset(&(iv->boardinfo), 0 , sizeof(struct ssb_boardinfo));
  
This page took 0.025768 seconds and 4 git commands to generate.