diff --git a/target/linux/brcm47xx/patches-2.6.35/012-MIPS-BCM47xx-Fill-more-values-into-ssb-sprom.patch b/target/linux/brcm47xx/patches-2.6.34/012-MIPS-BCM47xx-Fill-values-for-b43-into-ssb-sprom.patch similarity index 55% rename from target/linux/brcm47xx/patches-2.6.35/012-MIPS-BCM47xx-Fill-more-values-into-ssb-sprom.patch rename to target/linux/brcm47xx/patches-2.6.34/012-MIPS-BCM47xx-Fill-values-for-b43-into-ssb-sprom.patch index f3213d6f63a243e557b8c2d88833e1740707e37e..426e3c35c492e2fc93008dd07c8e4fb55ae23428 100644 --- a/target/linux/brcm47xx/patches-2.6.35/012-MIPS-BCM47xx-Fill-more-values-into-ssb-sprom.patch +++ b/target/linux/brcm47xx/patches-2.6.34/012-MIPS-BCM47xx-Fill-values-for-b43-into-ssb-sprom.patch @@ -1,7 +1,7 @@ -From f382c623892dad1c6a9ebc0e12d01fd45ee50db8 Mon Sep 17 00:00:00 2001 +From fbdfca0b2489ad94c6a3bc90b47adfd5c8179a89 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/5] 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 @@ -10,15 +10,20 @@ drivers needs them. 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 +31,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 +42,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 +111,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)); diff --git a/target/linux/brcm47xx/patches-2.6.34/014-MIPS-BCM47xx-Setup-and-register-serial-early.patch b/target/linux/brcm47xx/patches-2.6.34/014-MIPS-BCM47xx-Setup-and-register-serial-early.patch index 5ee1bafc6e8751d91c3a2f312f02ea44a280f875..ab23a366aeca0ac1228fbe935e516f4bead6738c 100644 --- a/target/linux/brcm47xx/patches-2.6.34/014-MIPS-BCM47xx-Setup-and-register-serial-early.patch +++ b/target/linux/brcm47xx/patches-2.6.34/014-MIPS-BCM47xx-Setup-and-register-serial-early.patch @@ -1,4 +1,4 @@ -From 3902bba103634d3256dac557020d7974f0d08aff Mon Sep 17 00:00:00 2001 +From a41121d789e236fd637ab49beb5ce7b48763613a Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens <hauke@hauke-m.de> Date: Sun, 18 Jul 2010 14:59:24 +0200 Subject: [PATCH 4/5] MIPS: BCM47xx: Setup and register serial early @@ -33,7 +33,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> #include <asm/bootinfo.h> #include <asm/reboot.h> #include <asm/time.h> -@@ -189,12 +191,45 @@ static int bcm47xx_get_invariants(struct +@@ -190,12 +192,45 @@ static int bcm47xx_get_invariants(struct void __init plat_mem_setup(void) { diff --git a/target/linux/brcm47xx/patches-2.6.34/400-arch-bcm47xx.patch b/target/linux/brcm47xx/patches-2.6.34/400-arch-bcm47xx.patch index 0c407e8b221465816cd2b2d3f46d4ef032897fe0..722a94ba5f6fe3033ce570ffcc3b362a6ddfce26 100644 --- a/target/linux/brcm47xx/patches-2.6.34/400-arch-bcm47xx.patch +++ b/target/linux/brcm47xx/patches-2.6.34/400-arch-bcm47xx.patch @@ -33,7 +33,7 @@ +EXPORT_SYMBOL(nvram_get); --- a/arch/mips/bcm47xx/setup.c +++ b/arch/mips/bcm47xx/setup.c -@@ -235,3 +235,20 @@ void __init plat_mem_setup(void) +@@ -236,3 +236,20 @@ void __init plat_mem_setup(void) _machine_halt = bcm47xx_machine_halt; pm_power_off = bcm47xx_machine_halt; } diff --git a/target/linux/brcm47xx/patches-2.6.34/012-MIPS-BCM47xx-Fill-more-values-into-ssb-sprom.patch b/target/linux/brcm47xx/patches-2.6.35/012-MIPS-BCM47xx-Fill-values-for-b43-into-ssb-sprom.patch similarity index 100% rename from target/linux/brcm47xx/patches-2.6.34/012-MIPS-BCM47xx-Fill-more-values-into-ssb-sprom.patch rename to target/linux/brcm47xx/patches-2.6.35/012-MIPS-BCM47xx-Fill-values-for-b43-into-ssb-sprom.patch diff --git a/target/linux/brcm47xx/patches-2.6.35/014-MIPS-BCM47xx-Setup-and-register-serial-early.patch b/target/linux/brcm47xx/patches-2.6.35/014-MIPS-BCM47xx-Setup-and-register-serial-early.patch index 5ee1bafc6e8751d91c3a2f312f02ea44a280f875..ab23a366aeca0ac1228fbe935e516f4bead6738c 100644 --- a/target/linux/brcm47xx/patches-2.6.35/014-MIPS-BCM47xx-Setup-and-register-serial-early.patch +++ b/target/linux/brcm47xx/patches-2.6.35/014-MIPS-BCM47xx-Setup-and-register-serial-early.patch @@ -1,4 +1,4 @@ -From 3902bba103634d3256dac557020d7974f0d08aff Mon Sep 17 00:00:00 2001 +From a41121d789e236fd637ab49beb5ce7b48763613a Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens <hauke@hauke-m.de> Date: Sun, 18 Jul 2010 14:59:24 +0200 Subject: [PATCH 4/5] MIPS: BCM47xx: Setup and register serial early @@ -33,7 +33,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> #include <asm/bootinfo.h> #include <asm/reboot.h> #include <asm/time.h> -@@ -189,12 +191,45 @@ static int bcm47xx_get_invariants(struct +@@ -190,12 +192,45 @@ static int bcm47xx_get_invariants(struct void __init plat_mem_setup(void) { diff --git a/target/linux/brcm47xx/patches-2.6.35/400-arch-bcm47xx.patch b/target/linux/brcm47xx/patches-2.6.35/400-arch-bcm47xx.patch index 0c407e8b221465816cd2b2d3f46d4ef032897fe0..722a94ba5f6fe3033ce570ffcc3b362a6ddfce26 100644 --- a/target/linux/brcm47xx/patches-2.6.35/400-arch-bcm47xx.patch +++ b/target/linux/brcm47xx/patches-2.6.35/400-arch-bcm47xx.patch @@ -33,7 +33,7 @@ +EXPORT_SYMBOL(nvram_get); --- a/arch/mips/bcm47xx/setup.c +++ b/arch/mips/bcm47xx/setup.c -@@ -235,3 +235,20 @@ void __init plat_mem_setup(void) +@@ -236,3 +236,20 @@ void __init plat_mem_setup(void) _machine_halt = bcm47xx_machine_halt; pm_power_off = bcm47xx_machine_halt; }