[OpenWrt-Devel] [PATCH] brcm63xx: Let the CFE partition in HG556a to be writeable

dani dgcbueu at gmail.com
Wed Dec 2 15:37:21 EST 2015


In the HG556a router the partition mtd0, where CFE lives, is read only.
This patch allows this partition to be writeable.

The BCM6358 SoC has two cores, but they are not identical. The second core has 
half icache. 
core0: icache=32kB
core1: icache=16kB

As default the HG556a uses the second core as the main one (configured by CFE).
Since currently there isn't SMP support for using both cores, we want to use the 
one with the best performance.

For using the core0 as the main one, we need to write some bytes at the offset
0x014 of mtd0 (CFE). Therefore we need the mtd0 partition to be writeable.

After setting the core0 as the main one, the performance can increase up to
+20% (tested). The performance gain isn't marginal.

For setting the core0 as the main one in an easy way I wrote a very simple utility:
https://wiki.openwrt.org/_media/media/huawei/tp0set.tar.gz
It can switch from core0 to core1 or vice versa in OpenWrt writing proper bytes
into bcm6358 CFE (fully tested in the HG556a, no bricks).

Signed-off-by: Daniel Gonzalez <dgcbueu at gmail.com>
diff --git a/target/linux/brcm63xx/dts/hg556a-a.dts b/target/linux/brcm63xx/dts/hg556a-a.dts
index 98e0a83..1b007c7 100644
--- a/target/linux/brcm63xx/dts/hg556a-a.dts
+++ b/target/linux/brcm63xx/dts/hg556a-a.dts
@@ -105,7 +105,6 @@
 	cfe at 0 {
 		label = "CFE";
 		reg = <0x000000 0x020000>;
-		read-only;
 	};
 
 	linux at 20000 {
diff --git a/target/linux/brcm63xx/dts/hg556a-b.dts b/target/linux/brcm63xx/dts/hg556a-b.dts
index 8a19856..950fd17 100644
--- a/target/linux/brcm63xx/dts/hg556a-b.dts
+++ b/target/linux/brcm63xx/dts/hg556a-b.dts
@@ -105,7 +105,6 @@
 	cfe at 0 {
 		label = "CFE";
 		reg = <0x000000 0x020000>;
-		read-only;
 	};
 
 	linux at 20000 {
diff --git a/target/linux/brcm63xx/dts/hg556a-c.dts b/target/linux/brcm63xx/dts/hg556a-c.dts
index 9798091..f6b635d 100644
--- a/target/linux/brcm63xx/dts/hg556a-c.dts
+++ b/target/linux/brcm63xx/dts/hg556a-c.dts
@@ -100,7 +100,6 @@
 	cfe at 0 {
 		label = "CFE";
 		reg = <0x000000 0x020000>;
-		read-only;
 	};
 
 	linux at 20000 {
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list