From: Hauke Mehrtens Date: Mon, 7 Oct 2013 00:00:10 +0000 (+0000) Subject: brcm47xx: move clock detection patches X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=2402f8a9ee919020827f3a303480f18d3ed416b6;p=openwrt%2Fstaging%2Frobimarko.git brcm47xx: move clock detection patches Signed-off-by: Hauke Mehrtens SVN-Revision: 38311 --- diff --git a/target/linux/brcm47xx/patches-3.10/090-MIPS-BCM47XX-fix-clock-detection-for-BCM5354-with-20.patch b/target/linux/brcm47xx/patches-3.10/090-MIPS-BCM47XX-fix-clock-detection-for-BCM5354-with-20.patch new file mode 100644 index 0000000000..ec595342c0 --- /dev/null +++ b/target/linux/brcm47xx/patches-3.10/090-MIPS-BCM47XX-fix-clock-detection-for-BCM5354-with-20.patch @@ -0,0 +1,57 @@ +commit 0388a0410d590a6c239c1cfaa7d49bffd4ed1101 +Author: Hauke Mehrtens +Date: Wed Sep 18 13:32:59 2013 +0200 + + MIPS: BCM47XX: Fix clock detection for BCM5354 with 200MHz clock + + Some BCM5354 SoCs are running at 200MHz, but it is not possible to read + the clock from a register like it is done on some other SoC in ssb and + bcma. These devices should have a clkfreq nvram configuration value set + to 200, read it and set the clock to the correct value. + + Signed-off-by: Hauke Mehrtens + Cc: linux-mips@linux-mips.org + Patchwork: https://patchwork.linux-mips.org/patch/5842/ + Signed-off-by: Ralf Baechle + +--- a/arch/mips/bcm47xx/time.c ++++ b/arch/mips/bcm47xx/time.c +@@ -27,10 +27,14 @@ + #include + #include + #include ++#include + + void __init plat_time_init(void) + { + unsigned long hz = 0; ++ u16 chip_id = 0; ++ char buf[10]; ++ int len; + + /* + * Use deterministic values for initial counter interrupt +@@ -43,15 +47,23 @@ void __init plat_time_init(void) + #ifdef CONFIG_BCM47XX_SSB + case BCM47XX_BUS_TYPE_SSB: + hz = ssb_cpu_clock(&bcm47xx_bus.ssb.mipscore) / 2; ++ chip_id = bcm47xx_bus.ssb.chip_id; + break; + #endif + #ifdef CONFIG_BCM47XX_BCMA + case BCM47XX_BUS_TYPE_BCMA: + hz = bcma_cpu_clock(&bcm47xx_bus.bcma.bus.drv_mips) / 2; ++ chip_id = bcm47xx_bus.bcma.bus.chipinfo.id; + break; + #endif + } + ++ if (chip_id == 0x5354) { ++ len = bcm47xx_nvram_getenv("clkfreq", buf, sizeof(buf)); ++ if (len >= 0 && !strncmp(buf, "200", 4)) ++ hz = 100000000; ++ } ++ + if (!hz) + hz = 100000000; + diff --git a/target/linux/brcm47xx/patches-3.10/091-MIPS-BCM47XX-fix-detected-clock-on-Asus-WL520GC-and-.patch b/target/linux/brcm47xx/patches-3.10/091-MIPS-BCM47XX-fix-detected-clock-on-Asus-WL520GC-and-.patch new file mode 100644 index 0000000000..460c0e42d6 --- /dev/null +++ b/target/linux/brcm47xx/patches-3.10/091-MIPS-BCM47XX-fix-detected-clock-on-Asus-WL520GC-and-.patch @@ -0,0 +1,49 @@ +commit 935e93fcc022ff7be7046d2435ce6441e260abfb +Author: Hauke Mehrtens +Date: Wed Sep 18 13:33:00 2013 +0200 + + MIPS: BCM47XX: Fix detected clock on Asus WL520GC and WL520GU + + The Asus WL520GC and WL520GU are based on the BCM5354 and clocked at + 200MHz, but they do not have a clkfreq nvram variable set to the + correct value. This adds a workaround for these devices. + + Signed-off-by: Hauke Mehrtens + Cc: linux-mips@linux-mips.org + Patchwork: https://patchwork.linux-mips.org/patch/5843/ + Signed-off-by: Ralf Baechle + +--- a/arch/mips/bcm47xx/time.c ++++ b/arch/mips/bcm47xx/time.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + void __init plat_time_init(void) + { +@@ -35,6 +36,7 @@ void __init plat_time_init(void) + u16 chip_id = 0; + char buf[10]; + int len; ++ enum bcm47xx_board board = bcm47xx_board_get(); + + /* + * Use deterministic values for initial counter interrupt +@@ -64,6 +66,15 @@ void __init plat_time_init(void) + hz = 100000000; + } + ++ switch (board) { ++ case BCM47XX_BOARD_ASUS_WL520GC: ++ case BCM47XX_BOARD_ASUS_WL520GU: ++ hz = 100000000; ++ break; ++ default: ++ break; ++ } ++ + if (!hz) + hz = 100000000; + diff --git a/target/linux/brcm47xx/patches-3.10/520-MIPS-BCM47XX-fix-clock-detection-for-BCM5354-with-20.patch b/target/linux/brcm47xx/patches-3.10/520-MIPS-BCM47XX-fix-clock-detection-for-BCM5354-with-20.patch deleted file mode 100644 index 346e33530b..0000000000 --- a/target/linux/brcm47xx/patches-3.10/520-MIPS-BCM47XX-fix-clock-detection-for-BCM5354-with-20.patch +++ /dev/null @@ -1,41 +0,0 @@ ---- a/arch/mips/bcm47xx/time.c -+++ b/arch/mips/bcm47xx/time.c -@@ -27,10 +27,14 @@ - #include - #include - #include -+#include - - void __init plat_time_init(void) - { - unsigned long hz = 0; -+ u16 chip_id = 0; -+ char buf[10]; -+ int len; - - /* - * Use deterministic values for initial counter interrupt -@@ -43,15 +47,23 @@ void __init plat_time_init(void) - #ifdef CONFIG_BCM47XX_SSB - case BCM47XX_BUS_TYPE_SSB: - hz = ssb_cpu_clock(&bcm47xx_bus.ssb.mipscore) / 2; -+ chip_id = bcm47xx_bus.ssb.chip_id; - break; - #endif - #ifdef CONFIG_BCM47XX_BCMA - case BCM47XX_BUS_TYPE_BCMA: - hz = bcma_cpu_clock(&bcm47xx_bus.bcma.bus.drv_mips) / 2; -+ chip_id = bcm47xx_bus.bcma.bus.chipinfo.id; - break; - #endif - } - -+ if (chip_id == 0x5354) { -+ len = bcm47xx_nvram_getenv("clkfreq", buf, sizeof(buf)); -+ if (len >= 0 && !strncmp(buf, "200", 4)) -+ hz = 100000000; -+ } -+ - if (!hz) - hz = 100000000; - diff --git a/target/linux/brcm47xx/patches-3.10/521-MIPS-BCM47XX-fix-detected-clock-on-Asus-WL520GC-and-.patch b/target/linux/brcm47xx/patches-3.10/521-MIPS-BCM47XX-fix-detected-clock-on-Asus-WL520GC-and-.patch deleted file mode 100644 index c4eb83593e..0000000000 --- a/target/linux/brcm47xx/patches-3.10/521-MIPS-BCM47XX-fix-detected-clock-on-Asus-WL520GC-and-.patch +++ /dev/null @@ -1,34 +0,0 @@ ---- a/arch/mips/bcm47xx/time.c -+++ b/arch/mips/bcm47xx/time.c -@@ -28,6 +28,7 @@ - #include - #include - #include -+#include - - void __init plat_time_init(void) - { -@@ -35,6 +36,7 @@ void __init plat_time_init(void) - u16 chip_id = 0; - char buf[10]; - int len; -+ enum bcm47xx_board board = bcm47xx_board_get(); - - /* - * Use deterministic values for initial counter interrupt -@@ -64,6 +66,15 @@ void __init plat_time_init(void) - hz = 100000000; - } - -+ switch (board) { -+ case BCM47XX_BOARD_ASUS_WL520GC: -+ case BCM47XX_BOARD_ASUS_WL520GU: -+ hz = 100000000; -+ break; -+ default: -+ break; -+ } -+ - if (!hz) - hz = 100000000; -