diff options
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.dts | 8 | ||||
-rw-r--r-- | target/linux/ramips/image/Makefile | 8 | ||||
-rw-r--r-- | target/linux/ramips/patches-3.10/0135-mtd-add-rtn56u-support.patch | 28 |
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); + } |