MM6108 (module FG4108E-S) on MT7628 SDI dont work

Hi all.

I am studying the possibility of using HALOW in the form of a FG4108E-S module on an MM6108 chip with an MT7628 processor running OpenWRT

I assembled everything as written on github for a project with SDI, then replaced it with my processor and compiled it again. All DTS and DTSI have been adjusted for SDI. The log says the following:

[ 14.014458] random: ubusd: uninitialized urandom read (4 bytes read)
[ 14.045464] random: ubus: uninitialized urandom read (4 bytes read)
[ 14.470586] morsechipreset: unable to find sdio device/driver to unbind; proceeding anyway
[ 15.966611] kmodloader: loading kernel modules from /etc/modules.d/*
[ 16.584458] Loading modules backported from Linux version v6.1.110-0-g5f55cad62cc9d
[ 16.599767] Backport generated by backports.git v6.1.110-1-0-g965f73fc
[ 17.209305] mt76_wmac 10300000.wmac: ASIC revision: 76280001
[ 17.256205] mt76_wmac 10300000.wmac: Direct firmware load for mt7603e_txpat.bin failed with error -2
[ 17.274408] mt76_wmac 10300000.wmac: Falling back to sysfs fallback for: mt7603e_txpat.bin
[ 17.385362] mt76_wmac 10300000.wmac: No TX Power Adjust file (mt7603e_txpat.bin) found.
[ 17.449812] mt76_wmac 10300000.wmac: Firmware Version: 20151201
[ 17.461659] mt76_wmac 10300000.wmac: Build Time: 20151201183641
[ 17.555194] mt76_wmac 10300000.wmac: firmware init done
[ 17.751069] mt76_wmac 10300000.wmac: registering led ‘mt76-phy0’
[ 17.842145] tun: Universal TUN/TAP device driver, 1.6
[ 17.958941] i2c_dev: i2c /dev entries driver
[ 18.023671] i2c-mt7621 10000900.i2c: clock 100 kHz
[ 18.207482] GACT probability on
[ 18.236823] Mirror/redirect action on
[ 18.299889] u32 classifier
[ 18.305368] input device check on
[ 18.312612] Actions configured
[ 18.515613] mtk-msdc 10130000.mmc: no support for card’s volts
[ 18.527232] mmc0: error -22 whilst initialising SDIO card
[ 18.668763] urngd: v1.0.2 started.
[ 18.860987] usbcore: registered new interface driver cdc_acm
[ 18.872312] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[ 19.015248] Morse Micro Dot11ah driver registration. Version 0-rel_1_16_4_2025_Sep_18
[ 19.216314] morse micro driver registration. Version 0-rel_1_16_4_2025_Sep_18
[ 19.344352] rtc-pcf8563 0-0051: pcf8563_write_block_data: err=-6 addr=0e, data=03
[ 19.359307] rtc-pcf8563 0-0051: pcf8563_probe: write error
[ 19.370197] rtc-pcf8563: probe of 0-0051 failed with error -5
[ 19.619242] xt_time: kernel timezone is -0000
[ 19.715403] batman_adv: B.A.T.M.A.N. advanced 2023.1-openwrt-7 (compatibility version 15) loaded
[ 19.773167] usbcore: registered new interface driver cdc_ether
[ 20.207948] mtk-msdc 10130000.mmc: no support for card’s volts
[ 20.219626] mmc0: error -22 whilst initialising SDIO card
[ 20.309654] PPP generic driver version 2.4.2
[ 20.351831] NET: Registered PF_PPPOX protocol family
[ 20.467781] kmodloader: done loading kernel modules from /etc/modules.d/*
[ 21.905590] mtk-msdc 10130000.mmc: no support for card’s volts
[ 21.917218] mmc0: error -22 whilst initialising SDIO card
[ 23.760989] mtk-msdc 10130000.mmc: no support for card’s volts
[ 23.772629] mmc0: error -22 whilst initialising SDIO card
[ 23.976372] random: crng init done

On file mt7628an.dtsi


/dts-v1/;

/ {
	#address-cells = <1>;
	#size-cells = <1>;
	compatible = "mediatek,mt7628an-soc";

	aliases {
		serial0 = &uartlite;
	};

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		cpu@0 {
			compatible = "mips,mips24KEc";
			reg = <0>;
		};
	};

	chosen {
		bootargs = "console=ttyS0,57600";
	};

	cpuintc: cpuintc {
		#address-cells = <0>;
		#interrupt-cells = <1>;
		interrupt-controller;
		compatible = "mti,cpu-interrupt-controller";
	};

	palmbus: palmbus@10000000 {
		compatible = "palmbus";
		reg = <0x10000000 0x200000>;
		ranges = <0x0 0x10000000 0x1FFFFF>;

		#address-cells = <1>;
		#size-cells = <1>;

		sysc: sysc@0 {
			compatible = "ralink,mt7620a-sysc", "syscon";
			reg = <0x0 0x100>;
		};

		watchdog: watchdog@100 {
			compatible = "ralink,mt7628an-wdt", "mediatek,mt7621-wdt";
			reg = <0x100 0x30>;

			resets = <&rstctrl 8>;
			reset-names = "wdt";

			interrupt-parent = <&intc>;
			interrupts = <24>;
		};

		intc: intc@200 {
			compatible = "ralink,mt7628an-intc", "ralink,rt2880-intc";
			reg = <0x200 0x100>;

			resets = <&rstctrl 9>;
			reset-names = "intc";

			interrupt-controller;
			#interrupt-cells = <1>;

			interrupt-parent = <&cpuintc>;
			interrupts = <2>;

			ralink,intc-registers = <0x9c 0xa0
						 0x6c 0xa4
						 0x80 0x78>;
		};

		memc: memc@300 {
			compatible = "ralink,mt7620a-memc", "ralink,rt3050-memc";
			reg = <0x300 0x100>;

			resets = <&rstctrl 10>;
			reset-names = "mc";

			interrupt-parent = <&intc>;
			interrupts = <3>;
		};

		gpio: gpio@600 {
			compatible = "mediatek,mt7621-gpio";
			reg = <0x600 0x100>;

			interrupt-parent = <&intc>;
			interrupts = <6>;

			#interrupt-cells = <2>;
			interrupt-controller;

			gpio-controller;
			#gpio-cells = <2>;
		};

		i2c: i2c@900 {
			compatible = "mediatek,mt7621-i2c";
			reg = <0x900 0x100>;

			resets = <&rstctrl 16>;
			reset-names = "i2c";

			#address-cells = <1>;
			#size-cells = <0>;

			status = "disabled";

			pinctrl-names = "default";
			pinctrl-0 = <&i2c_pins>;
		};

		i2s: i2s@a00 {
			compatible = "mediatek,mt7628-i2s";
			reg = <0xa00 0x100>;

			resets = <&rstctrl 17>;
			reset-names = "i2s";

			interrupt-parent = <&intc>;
			interrupts = <10>;

			txdma-req = <2>;
			rxdma-req = <3>;

			dmas = <&gdma 4>,
				<&gdma 6>;
			dma-names = "tx", "rx";

			status = "disabled";
		};

		spi0: spi@b00 {
			compatible = "ralink,mt7621-spi";
			reg = <0xb00 0x100>;

			resets = <&rstctrl 18>;
			reset-names = "spi";

			#address-cells = <1>;
			#size-cells = <0>;

			pinctrl-names = "default";
			pinctrl-0 = <&spi_pins>;

			status = "disabled";
		};

		uartlite: uartlite@c00 {
			compatible = "ns16550a";
			reg = <0xc00 0x100>;

			reg-shift = <2>;
			reg-io-width = <4>;
			no-loopback-test;

			clock-frequency = <40000000>;

			resets = <&rstctrl 12>;
			reset-names = "uartl";

			interrupt-parent = <&intc>;
			interrupts = <20>;

			pinctrl-names = "default";
			pinctrl-0 = <&uart0_pins>;
		};

		uart1: uart1@d00 {
			compatible = "ns16550a";
			reg = <0xd00 0x100>;

			reg-shift = <2>;
			reg-io-width = <4>;
			no-loopback-test;

			clock-frequency = <40000000>;

			resets = <&rstctrl 19>;
			reset-names = "uart1";

			interrupt-parent = <&intc>;
			interrupts = <21>;

			pinctrl-names = "default";
			pinctrl-0 = <&uart1_pins>;

			status = "disabled";
		};

		uart2: uart2@e00 {
			compatible = "ns16550a";
			reg = <0xe00 0x100>;

			reg-shift = <2>;
			reg-io-width = <4>;
			no-loopback-test;

			clock-frequency = <40000000>;

			resets = <&rstctrl 20>;
			reset-names = "uart2";

			interrupt-parent = <&intc>;
			interrupts = <22>;

			pinctrl-names = "default";
			pinctrl-0 = <&uart2_pins>;

			status = "disabled";
		};

		pwm: pwm@5000 {
			compatible = "mediatek,mt7628-pwm";
			reg = <0x5000 0x1000>;
			#pwm-cells = <2>;

			resets = <&rstctrl 31>;
			reset-names = "pwm";

			pinctrl-names = "default";
			pinctrl-0 = <&pwm0_pins>, <&pwm1_pins>;

			status = "disabled";
		};

		pcm: pcm@2000 {
			compatible = "ralink,mt7620a-pcm";
			reg = <0x2000 0x800>;

			resets = <&rstctrl 11>;
			reset-names = "pcm";

			interrupt-parent = <&intc>;
			interrupts = <4>;

			status = "disabled";
		};

		gdma: gdma@2800 {
			compatible = "ralink,rt3883-gdma";
			reg = <0x2800 0x800>;

			resets = <&rstctrl 14>;
			reset-names = "dma";

			interrupt-parent = <&intc>;
			interrupts = <7>;

			#dma-cells = <1>;
			#dma-channels = <16>;
			#dma-requests = <16>;

			status = "disabled";
		};
	};

	pinctrl: pinctrl {
		compatible = "ralink,rt2880-pinmux";
		pinctrl-names = "default";
		pinctrl-0 = <&state_default>;

		state_default: pinctrl0 {
		};

		spi_pins: spi_pins {
			spi_pins {
				groups = "spi";
				function = "spi";
			};
		};

		spi_cs1_pins: spi_cs1 {
			spi_cs1 {
				groups = "spi cs1";
				function = "spi cs1";
			};
		};

		i2c_pins: i2c_pins {
			i2c_pins {
				groups = "i2c";
				function = "i2c";
			};
		};

		i2s_pins: i2s {
			i2s {
				groups = "i2s";
				function = "i2s";
			};
		};

		uart0_pins: uartlite {
			uartlite {
				groups = "uart0";
				function = "uart0";
			};
		};

		uart1_pins: uart1 {
			uart1 {
				groups = "uart1";
				function = "uart1";
			};
		};

		uart2_pins: uart2 {
			uart2 {
				groups = "uart2";
				function = "uart2";
			};
		};

		sdxc_pins: sdxc {
			sdxc {
				groups = "sdmode";
				function = "sdxc";
			};
		};

		pwm0_pins: pwm0 {
			pwm0 {
				groups = "pwm0";
				function = "pwm0";
			};
		};

		pwm1_pins: pwm1 {
			pwm1 {
				groups = "pwm1";
				function = "pwm1";
			};
		};

		pcm_i2s_pins: pcm_i2s {
			pcm_i2s {
				groups = "i2s";
				function = "pcm";
			};
		};

		refclk_pins: refclk {
			refclk {
				groups = "refclk";
				function = "refclk";
			};
		};
	};

	rstctrl: rstctrl {
		compatible = "ralink,mt7620a-reset", "ralink,rt2880-reset";
		#reset-cells = <1>;
	};

	clkctrl: clkctrl {
		compatible = "ralink,rt2880-clock";
		#clock-cells = <1>;
	};

	usbphy: usbphy@10120000 {
		compatible = "mediatek,mt7628-usbphy", "mediatek,mt7620-usbphy";
		reg = <0x10120000 0x1000>;
		#phy-cells = <0>;

		ralink,sysctl = <&sysc>;
		resets = <&rstctrl 22 &rstctrl 25>;
		reset-names = "host", "device";
		clocks = <&clkctrl 22 &clkctrl 25>;
		clock-names = "host", "device";
	};

	mmc_clock: mmc_clock@0 {
		#clock-cells = <0>;
		compatible = "fixed-clock";
		clock-frequency = <48000000>;
	};

	mmc_fixed_3v3: fixedregulator@0 {
		compatible = "regulator-fixed";
		regulator-name = "mmc_power";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		enable-active-high;
		regulator-always-on;
	};

	mmc_fixed_1v8_io: fixedregulator@1 {
		compatible = "regulator-fixed";
		regulator-name = "mmc_io";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		enable-active-high;
		regulator-always-on;
	};

	sdhci: mmc@10130000 {
		compatible = "mediatek,mt7620-mmc";
		reg = <0x10130000 0x4000>;

		bus-width = <4>;
		max-frequency = <24000000>;

		pinctrl-names = "default", "state_uhs";
		pinctrl-0 = <&sdxc_pins>;
		pinctrl-1 = <&sdxc_pins>;

		clocks = <&mmc_clock>, <&mmc_clock>;
		clock-names = "source", "hclk";

		interrupt-parent = <&intc>;
		interrupts = <14>;

		status = "disabled";
	};

	ehci: ehci@101c0000 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "generic-ehci";
		reg = <0x101c0000 0x1000>;

		phys = <&usbphy>;
		phy-names = "usb";

		interrupt-parent = <&intc>;
		interrupts = <18>;

		ehci_port1: port@1 {
			reg = <1>;
			#trigger-source-cells = <0>;
		};
	};

	ohci: ohci@101c1000 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "generic-ohci";
		reg = <0x101c1000 0x1000>;

		phys = <&usbphy>;
		phy-names = "usb";

		interrupt-parent = <&intc>;
		interrupts = <18>;

		ohci_port1: port@1 {
			reg = <1>;
			#trigger-source-cells = <0>;
		};
	};

	ethernet: ethernet@10100000 {
		compatible = "ralink,rt5350-eth";
		reg = <0x10100000 0x10000>;

		interrupt-parent = <&cpuintc>;
		interrupts = <5>;

		resets = <&rstctrl 21>, <&rstctrl 23>;
		reset-names = "fe", "esw";

		mediatek,switch = <&esw>;
	};

	esw: esw@10110000 {
		compatible = "mediatek,mt7628-esw", "ralink,rt3050-esw";
		reg = <0x10110000 0x8000>;

		resets = <&rstctrl 24>;
		reset-names = "ephy";

		interrupt-parent = <&intc>;
		interrupts = <17>;
	};

	pcie: pcie@10140000 {
		compatible = "mediatek,mt7620-pci";
		reg = <0x10140000 0x100
			0x10142000 0x100>;

		#address-cells = <3>;
		#size-cells = <2>;

		interrupt-parent = <&cpuintc>;
		interrupts = <4>;

		resets = <&rstctrl 26 &rstctrl 27>;
		reset-names = "pcie0", "pcie1";
		clocks = <&clkctrl 26 &clkctrl 27>;
		clock-names = "pcie0", "pcie1";

		status = "disabled";

		device_type = "pci";

		bus-range = <0 255>;
		ranges = <
			0x02000000 0 0x00000000 0x20000000 0 0x10000000 /* pci memory */
			0x01000000 0 0x00000000 0x10160000 0 0x00010000 /* io space */
		>;

		pcie0: pcie@0,0 {
			reg = <0x0000 0 0 0 0>;

			#address-cells = <3>;
			#size-cells = <2>;

			device_type = "pci";

			ranges;
		};
	};

	wmac: wmac@10300000 {
		compatible = "mediatek,mt7628-wmac";
		reg = <0x10300000 0x100000>;

		interrupt-parent = <&cpuintc>;
		interrupts = <6>;

		status = "disabled";
	};
};



On to file mt7628an_morse.dts
#include “mt7628an.dtsi”

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

/ {
compatible = “morse,ekh09v1”, “mediatek,mt7628an-soc”;
model = “MorseMicro EKH09v1”;
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;

	/* 1 MB reserved for ramoops/pstore */
	ramoops@7EFFFFF {
		compatible = "ramoops";
		reg = <0x7EFFFFF 0x100000>;
		record-size = <0x4000>;
		console-size = <0x4000>;
	};
};
aliases {
	led-boot = &led_status;
	led-failsafe = &led_status;
	led-running = &led_status;
	led-upgrade = &led_status;
	label-mac-device = &wmac;
};

leds {
	compatible = "gpio-leds";

	led_status: status {
		label = "fuchsia:status";
		gpios = <&gpio 44 GPIO_ACTIVE_HIGH>;
	};
};

keys {
	compatible = "gpio-keys";

	morse-reset {
		label = "morse-reset";
		gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
		linux,code = <BTN_0>;
	};
};

gpio-export {
	compatible = "gpio-export";
	#size-cells = <0>;

	gpio2 {
		// J4 header attached to I2S_WS gpio2.
		// High value means STA, low AP.
		gpio-export,name = "morse-mode-switch";
		gpios = <&gpio 2 GPIO_ACTIVE_HIGH>;
	};
};

chosen {
	bootargs = "console=ttyS0,57600";
};

};

&spi0 {
status = “okay”;

flash@0 {
	compatible = "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>;
		};

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

		firmware: partition@50000 {
			compatible = "denx,uimage";
			label = "firmware";
			/* reg property is set based on flash size in DTS files */
		};
	};
};

mm6108_spi@1 {
	compatible = "morse,mm610x-spi";
	reg = <1>;
	spi-max-frequency = <10000000>;
	interrupt-parent = <&gpio>;
	interrupts = <11>;
	status = "okay";
	spi-mode = <0>;

	/* 
	spi-max-frequency = <26000000>;
	
	spi-mode = <0>;   // CPOL=0, CPHA=0, CS active low
	0x01	SPI_CPHA
	0x02	SPI_CPOL
	0x04	SPI_CS_HIGH
	0x08	SPI_LSB_FIRST
	0x10	SPI_3WIRE
	0x20	SPI_LOOP
	0x40	SPI_NO_CS
	0x80	SPI_READY
	
	
	reset-gpios = <&gpio XX GPIO_ACTIVE_LOW>;
	power-gpios = <&gpio XX GPIO_ACTIVE_HIGH>;
	vdd-supply = <&vcc_3v3>;
	wpan@0 {
		compatible = "fn-link,fg4108e-s-netdev";
		reg = <0>;
	};
	
	
	-spi-cpol;
	-spi-cpha;
		# dmesg |grep morse [ 14.296745] morsechipreset: unable to find sdio device/driver to unbind; proceeding anyway
		[ 18.924423] morse micro driver registration. Version 0-rel_1_16_4_2025_Sep_18
		[ 18.938938] morse_spi spi0.1: setup: unsupported mode bits 4
		[ 18.950219] morse_spi spi0.1: can't change chip-select polarity
		[ 18.961975] morse_spi spi0.1: morse_spi_probe: failed to init SPI with CMD63 (ret:-22)
		[ 18.977704] morse_spi_probe failed. The driver has not been loaded!
		[ 18.990130] morse_spi: probe of spi0.1 failed with error -22
	
		[   18.723121] Morse Micro Dot11ah driver registration. Version 0-rel_1_16_4_2025_Sep_18
		[   18.964492] morse micro driver registration. Version 0-rel_1_16_4_2025_Sep_18
		[   18.979005] morse_spi spi0.1: setup: unsupported mode bits 4
		[   18.990288] morse_spi spi0.1: can't change chip-select polarity
		[   19.002032] morse_spi spi0.1: morse_spi_probe: failed to init SPI with CMD63 (ret:-22)
		[   19.017757] morse_spi_probe failed. The driver has not been loaded!
		[   19.030183] morse_spi: probe of spi0.1 failed with error -22
	
	+spi-cpha;
	-spi-cpol;
		# dmesg | grep -i spi
		[    0.995445] spi spi0.1: setup: unsupported mode bits 1
		[    1.005751] spi-mt7621 10000b00.spi: can't setup spi0.1, status -22
		[    1.018183] spi_master spi0: spi_device register error /palmbus@10000000/spi@b00/mm6108_spi@1
		[    1.035108] spi_master spi0: Failed to create SPI device for /palmbus@10000000/spi@b00/mm6108_spi@1
		
	-spi-cpha;
	+spi-cpol;
		# dmesg |grep spi
		[    0.995800] spi spi0.1: setup: unsupported mode bits 2
		[    1.006106] spi-mt7621 10000b00.spi: can't setup spi0.1, status -22
		[    1.018538] spi_master spi0: spi_device register error /palmbus@10000000/spi@b00/mm6108_spi@1
		[    1.035463] spi_master spi0: Failed to create SPI device for /palmbus@10000000/spi@b00/mm6108_spi@1

	
	+spi-cpha;
	+spi-cpol;
		# dmesg |grep spi
		[    0.995593] spi spi0.1: setup: unsupported mode bits 3
		[    1.005900] spi-mt7621 10000b00.spi: can't setup spi0.1, status -22
		[    1.018330] spi_master spi0: spi_device register error /palmbus@10000000/spi@b00/mm6108_spi@1
		[    1.035255] spi_master spi0: Failed to create SPI device for /palmbus@10000000/spi@b00/mm6108_spi@1

	 */
};

};

&pinctrl {
spis_pins: spis{
spis{
groups = “spis”;
function = “pwm_uart2”;
};
};
};

&state_default {
gpio {
groups = “wled_an”, “refclk”, “wdt”, “p2led_an”, “p3led_an”, “p4led_an”;
function = “gpio”;
};
};

&wmac {
status = “okay”;

mediatek,mtd-eeprom = <&factory 0x0>;

};

&ethernet {
status = “okay”;
nvmem-cells = <&macaddr_factory_28>;
nvmem-cell-names = “mac-address”;
};

&esw {
status = “okay”;
mediatek,portmap = <0x5>;
mediatek,portdisable = <0x3a>;
};

&i2c {
status = “okay”;

rtc@51 {
	compatible = "nxp,pcf8563";
	reg = <0x51>;
};

/*
pinctrl-names = "default";
pinctrl-0 = <&i2c_pins>;
clock-frequency = <100000>;
*/

};

&i2s {
status = “okay”;
};

&gdma {
status = “okay”;
};

&gpio {
/* These are taken from the ‘Normal Mode’ of the GPIO pin shares,
* except that the GPIOs connect to the Morse chip are labelled
* (MM_RESET/MM_BUSY/MM_WAKE).
/
gpio-line-names =
“I2S_SDI”, “I2S_SDO”, “I2S_WS”, “I2S_CLK”, “I2C_SCLK”, “I2C_SD”,
“SPI_CS1”, “SPI_CLK”, “SPI_MOSI”, “SPI_MISO”, “SPI_CS0”,
“”, “UART_TXD0”, “UART_RXD0”,
“MDI_TP_P1”, “MDI_TN_P1”, “MDI_RP_P1”, “MDI_RN_P1”,
“MDI_RP_P2”, “MDI_RN_P2”, “MDI_TP_P2”, “MDI_TN_P2”,
“MDI_TP_P3”, “MDI_TN_P3”, “MDI_RP_P3”, “MDI_RN_P3”, “MDI_RP_P4”, “MDI_RN_P4”, “MDI_TP_P4”, “MDI_TN_P4”,
“”, “”, “”, “”, “”, “”,
“PERST_N”, “REF_CLKO”, “WDT_RST_N”,
“MM_BUSY”, “MM_RESET”, “MM_WAKE”,
“EPHY_LED1_N_JTDI”, “EPHY_LED0_N_JTDO”,
“WLED_N”, “UART_TXD1”, “UART_RXD1”,
/ GPIO47 → GPIO63 - unused, but need to be specified to avoid kernel complaints /
“”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”,
/ GPIO64 → GPIO95 - unused, but need to be specified to avoid kernel complaints */
“”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”
;

status = "okay";

};

&pwm {
status = “okay”;
};

&uart1 {
status = “okay”;

bt_fg6124: bt-fg6124 {
	compatible = "fn-link,fg6124nrxx", "realtek,rs624mf";
	status = "okay";
	reg = <0>;
	current-speed = <921600>;
	reset-gpios = <&gpio 36 GPIO_ACTIVE_LOW>;
	/* hw-flow-control; */
};

};

&uart2 {
pinctrl-0 = <&spis_pins>;
status = “okay”;
};

&factory {
compatible = “nvmem-cells”;
#address-cells = <1>;
#size-cells = <1>;

macaddr_factory_28: macaddr@28 {
	reg = <0x28 0x6>;
};

};

&sdhci {
status = “okay”;
mediatek,cd-poll;

cap-sd-highspeed;
cap-mmc-highspeed;
vmmc-supply = <&mmc_fixed_3v3>;
vqmmc-supply = <&mmc_fixed_3v3>;
cap-sdio-irq;
non-removable;
disable-wp;
no-1-8-v;

mm6108_sdio: mm6108_sdio@0 {
	compatible = "morse,mm610x";
	reset-gpios = <&gpio 40 0>;
	power-gpios = <&gpio 41 0>,<&gpio 42 0>;
	status = "okay";
	reg = <2>;
	bus-width = <4>;
};

};

#include “mt7628an_morse_ekh03_rgbled.dtsi”

&firmware {
reg = <0x50000 0xfb0000>;
};

&uart2_pins {
uart2 {
groups = “uart2”;
function = “gpio”;
};
};

&pwm0_pins {
pwm0 {
groups = “pwm0”;
function = “gpio”;
};
};

&pwm1_pins {
pwm1 {
groups = “pwm1”;
function = “gpio”;
};
};


How to teach the FG4108E-S module to work with MT7628.

P.S. I’m new, I can’t attach the file to the message yet.

Alex.

MM6108 (module FG4108E-S) on MT7628 SDI dont work.zip (125.5 KB)

Hi @AlanSbor

Your device tree looks okay to me from what I can see.

We’ve seen this issue before on the MT7628 platform when the SDIO pullups are populated with 47kOhm resistors.

Please try reduce the pullup resistors to 10k and see if that resolves your issue.

Good afternoon

Replacing the 47k resistors with 10k ones did not help. The same errors remain.