mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-29 18:19:02 +00:00
f7f9e6bd20
Buffalo WCR-1166DS uses trx-fomatted firmware and the custom magic number (0x5C436F74, "\Cot") is required for OpenWrt installation from OEM WebUI. But the current mtdsplit_trx doesn't support the custom magic number and fail to parse and split to kernel and rootfs when the factory image is flashed. Then, the kernel fails to mount rootfs automatically and panics. Before the commitfddc78bc11
, mtdsplit_trx was patched in ramips target and the device-specific magic number was supported only for WCR-1166DS[1]. But the patch was not inherited to the later version of the kernel and deleted by the above commit, then, the custom magic number support was broken. [1]:05d6e92594/target/linux/ramips/patches-4.4/0400-mtd-mtdsplit-add-support-for-custom-trx-magic-for-Buffalo-WCR-1166DS.patch (L27)
log (factory image): [ 1.165312] spi-mt7621 10000b00.spi: sys_freq: 193333333 [ 1.195782] spi-nor spi0.0: w25q128 (16384 Kbytes) [ 1.205353] 7 fixed-partitions partitions found on MTD device spi0.0 [ 1.217938] Creating 7 MTD partitions on "spi0.0": [ 1.227436] 0x000000000000-0x000000030000 : "u-boot" [ 1.238427] 0x000000030000-0x000000040000 : "u-boot-env" [ 1.250123] 0x000000040000-0x000000050000 : "factory" [ 1.261306] 0x000000050000-0x000000810000 : "firmware" [ 1.282051] 0x000000810000-0x000000fd0000 : "firmware2" [ 1.293594] 0x000000fd0000-0x000000fe0000 : "glbcfg" [ 1.304719] 0x000000fe0000-0x000000ff0000 : "board_data" ... [ 1.452424] /dev/root: Can't open blockdev [ 1.460619] VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6 [ 1.475434] Please append a correct "root=" boot option; here are the available partitions: [ 1.491986] 1f00 192 mtdblock0 [ 1.491989] (driver?) [ 1.504938] 1f01 64 mtdblock1 [ 1.504941] (driver?) [ 1.517885] 1f02 64 mtdblock2 [ 1.517888] (driver?) [ 1.530831] 1f03 7936 mtdblock3 [ 1.530834] (driver?) [ 1.543777] 1f04 7936 mtdblock4 [ 1.543781] (driver?) [ 1.556724] 1f05 64 mtdblock5 [ 1.556727] (driver?) [ 1.569672] 1f06 64 mtdblock6 [ 1.569675] (driver?) [ 1.582617] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) [ 1.598976] Rebooting in 1 seconds.. This patch fixes this issue by using parser_trx with specifying custom magic number in dts instead of mtdsplit_trx. log (fixed factory image): [ 1.202044] spi-mt7621 10000b00.spi: sys_freq: 193333333 [ 1.225369] spi-nor spi0.0: w25q128 (16384 Kbytes) [ 1.235015] 7 fixed-partitions partitions found on MTD device spi0.0 [ 1.247603] Creating 7 MTD partitions on "spi0.0": [ 1.257106] 0x000000000000-0x000000030000 : "u-boot" [ 1.269447] 0x000000030000-0x000000040000 : "u-boot-env" [ 1.281192] 0x000000040000-0x000000050000 : "factory" [ 1.294208] 0x000000050000-0x000000810000 : "firmware" [ 1.305774] 2 trx partitions found on MTD device firmware [ 1.316540] Creating 2 MTD partitions on "firmware": [ 1.326399] 0x00000000001c-0x000000214754 : "linux" [ 1.336063] mtd: partition "linux" doesn't start on an erase/write block boundary -- force read-only [ 1.357070] 0x000000214754-0x0000007c0000 : "rootfs" [ 1.366994] mtd: partition "rootfs" doesn't start on an erase/write block boundary -- force read-only [ 1.386368] mtd: device 5 (rootfs) set to be root filesystem [ 1.398700] 1 squashfs-split partitions found on MTD device rootfs [ 1.411027] 0x000000520000-0x0000007c0000 : "rootfs_data" [ 1.422841] 0x000000810000-0x000000fd0000 : "firmware2" [ 1.436282] 0x000000fd0000-0x000000fe0000 : "glbcfg" [ 1.447408] 0x000000fe0000-0x000000ff0000 : "board_data" ... [ 1.611216] VFS: Mounted root (squashfs filesystem) readonly on device 31:5. Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
180 lines
2.9 KiB
Plaintext
180 lines
2.9 KiB
Plaintext
#include "mt7628an.dtsi"
|
|
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
#include <dt-bindings/input/input.h>
|
|
|
|
/ {
|
|
compatible = "buffalo,wcr-1166ds", "mediatek,mt7628an-soc";
|
|
model = "Buffalo WCR-1166DS";
|
|
|
|
aliases {
|
|
led-boot = &led_power;
|
|
led-failsafe = &led_power;
|
|
led-running = &led_power;
|
|
led-upgrade = &led_power;
|
|
};
|
|
|
|
keys {
|
|
compatible = "gpio-keys";
|
|
|
|
aoss {
|
|
label = "aoss";
|
|
gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
|
|
linux,code = <KEY_WPS_BUTTON>;
|
|
};
|
|
|
|
ap {
|
|
label = "ap";
|
|
gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
|
|
linux,code = <BTN_0>;
|
|
linux,input-type = <EV_SW>;
|
|
};
|
|
|
|
reset {
|
|
label = "reset";
|
|
gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
|
linux,code = <KEY_RESTART>;
|
|
};
|
|
};
|
|
|
|
leds {
|
|
compatible = "gpio-leds";
|
|
|
|
router_o {
|
|
label = "orange:router";
|
|
gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
|
|
};
|
|
|
|
router_g {
|
|
label = "green:router";
|
|
gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
|
|
};
|
|
|
|
internet_o {
|
|
label = "orange:internet";
|
|
gpios = <&gpio 39 GPIO_ACTIVE_LOW>;
|
|
};
|
|
|
|
internet_g {
|
|
label = "green:internet";
|
|
gpios = <&gpio 40 GPIO_ACTIVE_LOW>;
|
|
};
|
|
|
|
wireless_o {
|
|
label = "orange:wireless";
|
|
gpios = <&gpio 41 GPIO_ACTIVE_LOW>;
|
|
};
|
|
|
|
wireless_g {
|
|
label = "green:wireless";
|
|
gpios = <&gpio 42 GPIO_ACTIVE_LOW>;
|
|
};
|
|
|
|
diag {
|
|
label = "orange:diag";
|
|
gpios = <&gpio 43 GPIO_ACTIVE_LOW>;
|
|
};
|
|
|
|
led_power: power {
|
|
label = "green:power";
|
|
gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
|
|
};
|
|
};
|
|
};
|
|
|
|
&ehci {
|
|
status = "disabled";
|
|
};
|
|
|
|
&esw {
|
|
mediatek,portmap = <0x2f>;
|
|
mediatek,portdisable = <0x27>;
|
|
};
|
|
|
|
&ohci {
|
|
status = "disabled";
|
|
};
|
|
|
|
&pcie {
|
|
status = "okay";
|
|
};
|
|
|
|
&pcie0 {
|
|
mt76@0,0 {
|
|
reg = <0x0000 0 0 0 0>;
|
|
mediatek,mtd-eeprom = <&factory 0x8000>;
|
|
ieee80211-freq-limit = <5000000 6000000>;
|
|
};
|
|
};
|
|
|
|
&state_default {
|
|
gpio {
|
|
groups = "uart1", "wled_an", "p0led_an", "p1led_an", "p2led_an", "p3led_an", "p4led_an", "wdt", "refclk", "gpio", "i2s";
|
|
function = "gpio";
|
|
};
|
|
};
|
|
|
|
&spi0 {
|
|
status = "okay";
|
|
|
|
flash@0 {
|
|
compatible = "jedec,spi-nor";
|
|
reg = <0>;
|
|
spi-max-frequency = <40000000>;
|
|
|
|
partitions {
|
|
compatible = "fixed-partitions";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
|
|
partition@0 {
|
|
label = "u-boot";
|
|
reg = <0x0 0x30000>;
|
|
read-only;
|
|
};
|
|
|
|
partition@30000 {
|
|
label = "u-boot-env";
|
|
reg = <0x30000 0x10000>;
|
|
read-only;
|
|
};
|
|
|
|
factory: partition@40000 {
|
|
label = "factory";
|
|
reg = <0x40000 0x10000>;
|
|
read-only;
|
|
};
|
|
|
|
partition@50000 {
|
|
compatible = "brcm,trx";
|
|
brcm,trx-magic = <0x746f435c>;
|
|
label = "firmware";
|
|
reg = <0x50000 0x7c0000>;
|
|
};
|
|
|
|
partition@810000 {
|
|
label = "firmware2";
|
|
reg = <0x810000 0x7c0000>;
|
|
};
|
|
|
|
partition@fd0000 {
|
|
label = "glbcfg";
|
|
reg = <0xfd0000 0x10000>;
|
|
read-only;
|
|
};
|
|
|
|
partition@fe0000 {
|
|
label = "board_data";
|
|
reg = <0xfe0000 0x10000>;
|
|
read-only;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
&wmac {
|
|
status = "okay";
|
|
|
|
mediatek,mtd-eeprom = <&factory 0x0>;
|
|
};
|