aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux
diff options
context:
space:
mode:
authorJohn Crispin <john@openwrt.org>2014-06-16 18:57:20 +0000
committerJohn Crispin <john@openwrt.org>2014-06-16 18:57:20 +0000
commitdc5fe5f73f7cef3282fb6f529f4d91b8cf764706 (patch)
treef30fd1791e6056989790ae89ac2a4df4e4fdd574 /target/linux
parent28277caccb1590f63e392dc90ffe7a2a83658878 (diff)
downloadupstream-dc5fe5f73f7cef3282fb6f529f4d91b8cf764706.tar.gz
upstream-dc5fe5f73f7cef3282fb6f529f4d91b8cf764706.tar.bz2
upstream-dc5fe5f73f7cef3282fb6f529f4d91b8cf764706.zip
ramips: RT-N56U support fixes and factory image creation
Signed-off-by: Mikko Hissa <mikko.hissa@werzek.com> SVN-Revision: 41224
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/ramips/base-files/lib/preinit/04_handle_checksumming (renamed from target/linux/ramips/base-files/lib/preinit/04_disable_wnce2001_flash_checksumming)17
-rw-r--r--target/linux/ramips/dts/RTN56U.dts8
-rw-r--r--target/linux/ramips/image/Makefile8
-rw-r--r--target/linux/ramips/patches-3.10/0135-mtd-add-rtn56u-support.patch28
4 files changed, 58 insertions, 3 deletions
diff --git a/target/linux/ramips/base-files/lib/preinit/04_disable_wnce2001_flash_checksumming b/target/linux/ramips/base-files/lib/preinit/04_handle_checksumming
index 67a1746f1d..fd06d20c99 100644
--- a/target/linux/ramips/base-files/lib/preinit/04_disable_wnce2001_flash_checksumming
+++ b/target/linux/ramips/base-files/lib/preinit/04_handle_checksumming
@@ -5,7 +5,7 @@
# this, so we make sure to zero checksum and size to be checksummed before
# that happens, so this needs to run very early during boot.
-do_wnce2001_checksumming_disable() {
+do_checksumming_disable() {
. /lib/ramips.sh
local board=$(ramips_board_name)
@@ -35,9 +35,22 @@ do_wnce2001_checksumming_disable() {
echo "Checksum is already zero, nothing to do."
fi
;;
+ rt-n56u)
+ echo "Board is ASUS RT-N56U, replacing uImage header..."
+ local firmware_mtd=$(find_mtd_part firmware)
+ local rootfs_mtd=$(find_mtd_part rootfs)
+ local rootfs_data_mtd=$(find_mtd_part rootfs_data)
+ local rootfs_len=$(grep \"rootfs\" /proc/mtd | awk -F' ' '{print "0x"$2}')
+ local rootfs_data_len=$(grep \"rootfs_data\" /proc/mtd | awk -F' ' '{print "0x"$2}')
+ local offset=$(echo "$rootfs_len $rootfs_data_len 0x40" | awk -F' ' '{printf "%i",$1-$2-$3}')
+ local signature=$(dd if=$rootfs_mtd skip=$offset bs=1 count=4 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"')
+ if [ "$signature" == "27051956" ]; then
+ dd conv=notrunc if=$rootfs_mtd skip=$offset of=$firmware_mtd bs=1 count=64 2>/dev/null
+ fi
+ ;;
esac
return 0
}
-boot_hook_add preinit_main do_wnce2001_checksumming_disable
+boot_hook_add preinit_main do_checksumming_disable
diff --git a/target/linux/ramips/dts/RTN56U.dts b/target/linux/ramips/dts/RTN56U.dts
index b962aa0d23..305e36e85b 100644
--- a/target/linux/ramips/dts/RTN56U.dts
+++ b/target/linux/ramips/dts/RTN56U.dts
@@ -43,12 +43,20 @@
host-bridge {
pci-bridge@1 {
status = "okay";
+ wmac@0,0 {
+ compatible = "ralink,rt2880-pci", "pciclass060400", "pciclass0604";
+ reg = < 0x10000 0 0 0 0 >;
+ ralink,eeprom = "rt2x00pci_1_0.eeprom";
+ };
+
};
};
};
wmac@10180000 {
+ status = "okay";
ralink,2ghz = <0>;
+ ralink,eeprom = "soc_wmac.eeprom";
};
ehci@101c0000 {
diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile
index 58a54773c2..1b342deb7a 100644
--- a/target/linux/ramips/image/Makefile
+++ b/target/linux/ramips/image/Makefile
@@ -665,7 +665,13 @@ Image/Build/Profile/DIR645=$(call BuildFirmware/Seama/$(1),$(1),dir-645,DIR-645,
omniembhpm_mtd_size=16449536
Image/Build/Profile/OMNIEMBHPM=$(call BuildFirmware/CustomFlash/$(1),$(1),omni-emb-hpm,OMNI-EMB-HPM,$(omniembhpm_mtd_size))
-Image/Build/Profile/RTN56U=$(call BuildFirmware/Default8M/$(1),$(1),rt-n56u,RTN56U)
+define BuildFirmware/RTN56U/squashfs
+ $(call BuildFirmware/Default8M/$(1),$(1),rt-n56u,RTN56U)
+ -mkrtn56uimg -s $(call sysupname,$(1),rt-n56u)
+ -cp $(call sysupname,$(1),rt-n56u) $(call imgname,$(1),rt-n56u)-factory.bin
+ -mkrtn56uimg -f $(call imgname,$(1),rt-n56u)-factory.bin
+endef
+Image/Build/Profile/RTN56U=$(call BuildFirmware/RTN56U/$(1),$(1),rt-n56u,RTN56U)
Image/Build/Profile/TEW691GR=$(call BuildFirmware/UMedia/$(1),$(1),tew-691gr,TEW-691GR,0x026910)
diff --git a/target/linux/ramips/patches-3.10/0135-mtd-add-rtn56u-support.patch b/target/linux/ramips/patches-3.10/0135-mtd-add-rtn56u-support.patch
new file mode 100644
index 0000000000..52379916b9
--- /dev/null
+++ b/target/linux/ramips/patches-3.10/0135-mtd-add-rtn56u-support.patch
@@ -0,0 +1,28 @@
+--- a/drivers/mtd/mtdpart.c 2014-04-27 10:09:21.566294160 +0300
++++ b/drivers/mtd/mtdpart.c 2014-06-09 11:27:48.952211672 +0300
+@@ -793,8 +793,11 @@
+ {
+ struct {
+ __be32 magic;
+- __be32 pad[2];
++ __be32 pad0[2];
+ __be32 size;
++ __be32 pad1[4];
++ __be32 name[7];
++ __be32 kern_size;
+ } hdr;
+ size_t len;
+
+@@ -804,7 +807,11 @@
+ if (len != sizeof(hdr) || hdr.magic != cpu_to_be32(UBOOT_MAGIC))
+ return;
+
+- len = be32_to_cpu(hdr.size) + 0x40;
++ if (hdr.kern_size != 0 && hdr.name[0] == 0)
++ len = be32_to_cpu(hdr.kern_size);
++ else
++ len = be32_to_cpu(hdr.size) + 0x40;
++
+ __mtd_add_partition(master, "rootfs", part->offset + len,
+ part->mtd.size - len, false);
+ }