openwrtv3/target/linux/ramips/patches-4.4/0400-mtd-mtdsplit-add-support-for-custom-trx-magic-for-Buffalo-WCR-1166DS.patch
FUKAUMI Naoki 6b0b526a4f ramips: add support for Buffalo WCR-1166DS
Buffalo WCR-1166DS is a small wireless router with

 - MT7628AN + MT7612E
 - 64MiB DDR2 SDRAM
 - 16MiB SPI flash
 - 2T2R 11ac/a/b/g/n Wi-Fi
 - 2x 10/100M ethernet switch
 - 8x programmable LED
 - 3x button
 - UART pad on PCB (J2: 3.3V, GND, TX, RX)

factory image can be installed via stock web UI.

due to the "dual image" function in the bootloader, the second half of
the SPI flash ("firmware2" partition) cannot be used as a part of the
file system.

Signed-off-by: FUKAUMI Naoki <naobsd@gmail.com>
2017-01-31 11:10:58 +01:00

30 lines
924 B
Diff

--- a/drivers/mtd/mtdsplit/mtdsplit_trx.c
+++ b/drivers/mtd/mtdsplit/mtdsplit_trx.c
@@ -13,6 +13,7 @@
#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
+#include <linux/of.h>
#include <linux/slab.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
@@ -20,7 +21,8 @@
#include "mtdsplit.h"
-#define TRX_MAGIC 0x30524448 /* "HDR0" */
+#define TRX_MAGIC 0x30524448 /* "HDR0" */
+#define TRX_MAGIC_BUFFALO 0x746f435c
struct trx_header {
__le32 magic;
@@ -82,7 +84,8 @@ mtdsplit_parse_trx(struct mtd_info *mast
if (ret)
continue;
- if (hdr.magic != cpu_to_le32(TRX_MAGIC)) {
+ if (hdr.magic != cpu_to_le32(TRX_MAGIC) &&
+ !(of_machine_is_compatible("buffalo,wcr-1166ds") && hdr.magic == cpu_to_le32(TRX_MAGIC_BUFFALO))) {
pr_debug("no valid trx header found in \"%s\" at offset %llx\n",
master->name, (unsigned long long) offset);
continue;