[MT7620a] Adding support for Devolo Repeater ac MT: 2767, 2779

Hello,

I'm working on a dts for the Devolo Repeater ac MT: 2767, 2779.
Although things seem to work quite well, at boot time i'm getting some unpleasant messages that i'm having trouble solving, mainly:

[    1.196131] spi spi0.0: force spi mode3
[    1.204500] spi-nor spi0.0: mx25l6405d (8192 Kbytes)
[    1.214582] 4 fixed-partitions partitions found on MTD device spi0.0
[    1.227326] OF: Bad cell count for /palmbus@10000000/spi@b00/flash@0/partitions
[    1.241946] OF: Bad cell count for /palmbus@10000000/spi@b00/flash@0/partitions
[    1.256828] Creating 4 MTD partitions on "spi0.0":
[    1.266420] 0x000000000000-0x000000030000 : "u-boot"
[    1.280550] 0x000000030000-0x000000040000 : "u-boot-env"
[    1.293913] 0x000000040000-0x000000050000 : "factory"
[    1.306825] OF: Bad cell count for /palmbus@10000000/spi@b00/flash@0/partitions
[    1.321923] 0x000000050000-0x000000800000 : "firmware"
[    1.335547] 2 uimage-fw partitions found on MTD device firmware
[    1.347445] Creating 2 MTD partitions on "firmware":
[    1.357345] 0x000000000000-0x00000027dc3b : "kernel"
[    1.367247] mtd: partition "kernel" doesn't end on an erase/write block -- force read-only
[    1.386411] 0x00000027dc3b-0x0000007b0000 : "rootfs"
[    1.396406] mtd: partition "rootfs" doesn't start on an erase/write block boundary -- force read-only
[    1.417279] mtd: setting mtd5 (rootfs) as root device
[    1.427598] 1 squashfs-split partitions found on MTD device rootfs
[    1.439955] 0x000000670000-0x0000007b0000 : "rootfs_data"
[    1.485445] gsw: ephy base address: 8
[    1.494159] gsw: setting port4 to ephy mode

Now, from what i understand, and according to my dts, kernel and rootfs should be mapped within firmware boundaries (0x50000-0x800000), i.e. 0x000000000000-0x00000027dc3b for "kernel" and 0x00000027dc3b-0x0000007b0000 for "rootfs" not absolute addresses but relative to "firmware", correct?
So, i don't understand why i'm getting those start/end ... erase/write block messages.

Also, a bit lower i'm getting

[   22.753355] jitterentropy: Initialization failed with host not compliant with requirements: 9

Is this purely informational or something to worry about?

My dts file is as follows:

#include "mt7620a.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>

/ {
	compatible = "devolo,rac", "ralink,mt7620a-soc";
	model = "devolo WiFi Repeater ac";

	aliases {
		led-boot = &led_power;
		led-failsafe = &led_power;
		led-running = &led_power;
		led-upgrade = &led_power;
	};

	keys {
		compatible = "gpio-keys";

		reset_wps {
			label = "reset_wps";
			gpios = <&gpio2 20 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_RESTART>;
		};

		switch_high {
			label = "switch high";
			gpios = <&gpio2 22 GPIO_ACTIVE_LOW>;
			linux,code = <BTN_0>;
			linux,input-type = <EV_SW>;
		};

		switch_off {
			label = "switch off";
			gpios = <&gpio2 23 GPIO_ACTIVE_LOW>;
			linux,code = <BTN_1>;
			linux,input-type = <EV_SW>;
		};
	};

	leds {

		compatible = "gpio-leds";

		led_power: power {
			label = "led_power";
			gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
		};

		led2 {
			label = "LED 2";
			gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "phy0radio";
		};

		led3 {
			label = "LED 3";
			gpios = <&gpio2 29 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "phy0radio";
		};

		led4 {
			label = "LED 4";
			gpios = <&gpio2 30 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "phy1radio";
		};

		led5 {
			label = "LED 5";
			gpios = <&gpio2 31 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "phy1radio";
		};
	};
};


&gpio1 {
	status = "okay";
};

&gpio2 {
	status = "okay";
};

&spi0 {
	status = "okay";

	flash@0 {
		compatible = "mx25l6405d","jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <10000000>;

		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;
			};

			partition@40000 {
				label = "factory";
				reg = <0x40000 0x10000>;
				read-only;

				nvmem-layout {
					compatible = "fixed-layout";
					#address-cells = <1>;
					#size-cells = <1>;

					eeprom_factory_0: eeprom@0 {
						reg = <0x0 0x200>;
					};

					eeprom_factory_8000: eeprom@8000 {
						reg = <0x8000 0x200>;
					};

					macaddr_factory_4: macaddr@4 {
						compatible = "mac-base";
						reg = <0x4 0x6>;
						#nvmem-cell-cells = <1>;
					};
				};
			};

			partition@50000 {
				compatible = "denx,uimage";
				label = "firmware";
				reg = <0x50000 0x7b0000>;
			};
		};
	};
};


&state_default {
	gpio {
		groups = "i2c", "uartf", "nd_sd", "rgmii2";
		function = "gpio";
	};
};

&pinctrl {
	phy_reset_pins: phy-reset {
		gpio {
			groups = "spi refclk";
			function = "gpio";
		};
	};
};

&ethernet {
	pinctrl-names = "default";
	pinctrl-0 = <&rgmii1_pins &mdio_pins &phy_reset_pins>;

	nvmem-cells = <&macaddr_factory_4 0>;
	nvmem-cell-names = "mac-address";

	phy-reset-gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
	phy-reset-duration = <30>;

	port@5 {
		status = "okay";
		mediatek,fixed-link = <1000 1 1 1>;
		phy-mode = "rgmii";
	};

	mdio-bus {
		status = "okay";

		phy0: ethernet-phy@0 {
			status = "disabled";
			reg = <0>;
			phy-mode = "rgmii";
		};

		phy1: ethernet-phy@1 {
			status = "disabled";
			reg = <1>;
			phy-mode = "rgmii";
		};

		phy2: ethernet-phy@2 {
			status = "disabled";
			reg = <2>;
			phy-mode = "rgmii";
		};

		phy3: ethernet-phy@3 {
			status = "disabled";
			reg = <3>;
			phy-mode = "rgmii";
		};

		phy4: ethernet-phy@4 {
			status = "disabled";
			reg = <4>;
			phy-mode = "rgmii";
		};
	};
};

&gsw {
	mediatek,ephy-base = /bits/ 8 <8>;
};

&wmac {
	nvmem-cells = <&eeprom_factory_0>, <&macaddr_factory_4 0>;
	nvmem-cell-names = "eeprom", "mac-address";
};

&pcie {
	status = "okay";
};

&pcie0 {
	wifi@0,0 {
		reg = <0x0000 0 0 0 0>;
		mediatek,mtd-eeprom = <&eeprom_factory_8000>;
		ieee80211-freq-limit = <5000000 6000000>;
		nvmem-cells = <&eeprom_factory_8000>, <&macaddr_factory_4 2>;
		nvmem-cell-names = "eeprom", "mac-address";
	};
};

Thanks in advance for your kind input.

No worries about rng, 6.6 introduced RNG test and disqualifies nearly all ramips platforms.

Reviewed your and dmesg partitions and they seem ok. Do you have PR to review or you just getting ready?
Can you save mtd from oem and from yours tftp-booted and check diffs ?

Ah, ok. Guess i should have asked sooner :sweat_smile:

I have a PR going on (see #16956). Trying to meet proposed changes right now.
Will probably push changes later today.

As for OEM saves, all i could get was an original bootlog and printenv output (available at my first go at it). No idea on how to revert to manufacturer firmware either. Been poking around with original firmware file but no luck.

Any other suggestions on improving are very much welcomed. Thanks!

1 Like

Again 8MB leaves no space to maintain any partition besides essentials to contribute to revert. Check tplink - you just sysupgrade to raw flash chopped kernel+rootfs form OEM fw.