MT7615 PCIe bus not work

Hi
I know this is not the right place, but I don't know where anything else asks for advice.

In my PCB prototype, I can't see the MT7615 radio chip

[    1.263200] mt7621-pci 1e140000.pcie: pcie0 no card, disable it (RST & CLK)

The firmware is right, on Inet it works.

In the Datasheet it is written that it is based on an ARM CPU
But is the firmware in an internal flash ?
Or is it charged from the PCIe bus at the boot ?

The datasheet i have is 28 pages, Surely incomplete.

Is this related to OpenWrt?

If not OpenWrt-related, try seeking advice from:

  1. The company/person that gave you the hardware
  2. The company/person that made the firmware

This may also be helpful:

I developed the hardware

then answer the question asked by @lleachii

1 Like

Not, problem is hardware.
But here, there are competences that can help me understand how the system works.

so you're asking us why your black box dev board/hw isn't working for you ?

2 Likes

I am asking how the Boot of the MT7615 works
If it is openwrt that upload its firmware during the boot, or as MT7615 has its firmware to start.

Maybe providing more details about your project will compel other users/developers to answer your questions more thoroughly:

I am desperate.
I have written dozens of times to Mediatek and they have never responded.
They write so many nice words on the site, about customer support, but they are all falsehoods.
I could not find any forum where there is expertise on this.

The product is this:

There is OpenWRT without custom firmware, just the configuration and some scripts in .sh
The OpenWRT Build works well on the iNet GL-MT1300 which has the same MT7621 + MT7615 pairing.

This Boot on iNet

[    1.242808] mt7621-pci 1e140000.pcie: pcie1 no card, disable it (RST & CLK)
[    1.249741] mt7621-pci 1e140000.pcie: pcie2 no card, disable it (RST & CLK)
[    1.256689] mt7621-pci 1e140000.pcie: PCIE0 enabled
[    1.261550] mt7621-pci 1e140000.pcie: PCI coherence region base: 0x60000000, mask/settings: 0xf0000002
[    1.271026] mt7621-pci 1e140000.pcie: PCI host bridge to bus 0000:00

This Boot on my hardware:

[    1.263200] mt7621-pci 1e140000.pcie: pcie0 no card, disable it (RST & CLK)
[    1.270133] mt7621-pci 1e140000.pcie: pcie1 no card, disable it (RST & CLK)
[    1.277086] mt7621-pci 1e140000.pcie: pcie2 no card, disable it (RST & CLK)
[    1.284042] mt7621-pci 1e140000.pcie: Nothing is connected in virtual bridges. Exiting...

I prepare some waveforms and post them here.

I hope there is someone who knows the hardware of the MT7615 here or at least the PCIe bus

honestly I didn't understand anything, I take the liberty of writing in Italian, because I see that your shop has an Italian name. Did you build the hardware and do you have a firmware working? then when you say the mt7615 card doesn't work, what do you mean. it doesn't work with openwrt or with which firmware. if you explained the situation in Italian with the necessary English translation it would be better for me, and maybe I could help you.

onestamente non ho capito niente, mi permetto di scrivere in italiano, perche vedo che il tuo negozio ha un nome italiano.tu hai costruito l'hardware ed hai un firmware funzionante? poi quando dici non funzionano i la card mt7615, cosa intendi.non funziona con openwrt o con quale firmware.se tu spiegassi la situazione in italiano con la dovuta traduzione in inglese sarebbe meglio per me,e forse potrei aiutarti.

Ciao, ti ringrazio.

Ho realizzato un prototipo di scheda, con MT7621 + MT7615
Ho compilato OpenWRT con il mio DTS
Se carico il bin su inet funziona.
Se lo carico sulla mia scheda non funziona, non parte il bus PCIe
OpenWRT dice che non trova nulla sul bus pcie0 e i segnali dimostrano che tenta di partire e, o non parte dopo due tentativi, oppure parte in ritardo, forse dopo che il boot ha cercato il dispositivo.
Ci sono due reset sul MT7615, uno generale e uno del PCI
Quello generale sale al power on, quello del PCB durante il boot.
Su inet, il bus parte subito al primo reset.
Sul mio, il bus fa due tentativi dopo il reset del PCIe, e anche quando parte, lo fa al reset del PCIe
Il problema è hardware, al 99%, non so se è lato MT7621 o lato MT7615
Non ho rispettato i 100Ohm richiesti per il bus, ma è solo 1Cm, non credo che influisca, oppure si.
Ti carico gli screenshot.

I made a card prototype, with MT7621 + MT7615
I build openwrt with my dts
If I load the Bin on Inet it works.
If I load it on my card it doesn't work, the PCIe bus does not start
OpenWrt says he finds nothing about the pcie0 bus and the signals show that he tries to leave and, or not start after two attempts, or starts late, perhaps after the boot searched for the device.
There are two resets on the MT7615, one general and one of the PCI
The general one rises to the power on, that of the PCB during the boot.
On Inet, the bus starts immediately at the first reset.
On mine, the bus makes two attempts after the reset of the Pcie, and even when it leaves, it does so at the reset of the Pcie
The problem is hardware, 99%, I don't know if it is MT7621 or MT7615 side
I have not respected the 100ohm requested for the bus, but it's only 1cm, I don't think it affects, or yes.
I load the screenshots.

This is iNet
Blue PCI Reset (LDO_RST_N pin56)
Violet Gen Reset (PERST_N pin55)
Yellow MT7515 PCIE_TX (N o P)

This geva:



puoi farmi avere il DTS oppure puoi dirmi quale DTS utilizzare per provare a compilare? posso usare glinet 1300 DTS?

can you share the DTS of device?

Il mio ha meno ram e flash del inet, i led sono differenti, però funziona sul inet.
Per i calibration data:
[ 0.705868] 0x000000040000-0x000000050000 : "factory"
Ho letto la flash di inet, ho compilato uboot di Padvan, poi ho fatto:

My has less ram and flash of the inet, the LEDs are different, but it works on the inet.
For the Calibration Data: 0x000000040000-0x000000050000 : "factory"
I read the Inet flash, I compiled Padvan Uboot, then I did:

cp uboot_at3_bt.bin  output
262143-193148=68995
dd if=/dev/zero bs=1 count=68996 >> output

327680-262144 = 65536 
dd if=EEPROM_LETTA_DA_INET.bin of=data bs=1 skip=262144 count=65536

dd if=data >> output

DTS:

// SPDX-License-Identifier: GPL-2.0-or-later OR MIT

#include "mt7621.dtsi"

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

/ {
	compatible = "geva,batteryPoE-at3-bt", "mediatek,mt7621-soc";
	model = "GEVA BatteryPoE at3 bt";

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

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

	keys {
		compatible = "gpio-keys";

		reset {
			label = "reset";
			gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_RESTART>;
		};
	};

	leds {
		compatible = "gpio-leds";

		led_run: system-red{
			label = "system-red";
			gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
		};
		system-blue{
			label = "system-blue";
			gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
		};
		wifi-red{
			label = "wifi-red";
			gpios = <&gpio 26 GPIO_ACTIVE_LOW>;
		};
		wifi-blue{
			label = "wifi-blue";
			gpios = <&gpio 27 GPIO_ACTIVE_LOW>;
		};
		eth-red{
			label = "eth-red";
			gpios = <&gpio 24 GPIO_ACTIVE_LOW>;
		};
		eth-green{
			label = "eth-green";
			gpios = <&gpio 22 GPIO_ACTIVE_LOW>;
		};
		eth-blue{
			label = "eth-blue";
			gpios = <&gpio 23 GPIO_ACTIVE_LOW>;
		};
	};
};

&i2c {
	status = "okay";
};

&sdhci {
	status = "okay";
};

&spi0 {
	status = "okay";

	flash@0 {
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <80000000>;
		m25p,fast-read;
		broken-flash-reset;

		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 = "denx,uimage";
				label = "firmware";
				reg = <0x50000 0xfb0000>;
			};
		};
	};
};

&pcie {
	status = "okay";
};

&pcie0 {
	wifi@0,0 {
		compatible = "mediatek,mt76";
		reg = <0x0000 0 0 0 0>;
		mediatek,mtd-eeprom = <&factory 0x8000>;
	};
};

&gmac0 {
	nvmem-cells = <&macaddr_factory_4000>;
	nvmem-cell-names = "mac-address";
	mac-address-increment = <1>;
};

&switch0 {
	ports {
		port@4 {
			status = "okay";
			label = "lan1";
			nvmem-cells = <&macaddr_factory_4000>;
			nvmem-cell-names = "mac-address";
		};
	};
};

&uartlite3 {
	status = "okay";
};

&state_default {
	gpio {
		group = "wdt", "jtag", "rgmii2";
		function = "gpio";
	};
};

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

	macaddr_factory_4000: macaddr@4000 {
		reg = <0x4000 0x6>;
	};
};

&ethernet {
	pinctrl-0 = <&mdio_pins>, <&rgmii1_pins>;
};

mt7621.mk

define Device/geva_BatteryPoE-at3-bt
  $(Device/dsa-migration)
  $(Device/uimage-lzma-loader)  
  IMAGE_SIZE := 32448k
  DEVICE_VENDOR := GEVA
  DEVICE_MODEL := BatteryPoE-at3-bt
  DEVICE_PACKAGES :=   kmod-usb2 kmod-usb3 kmod-usb-ohci kmod-usb-uhci kmod-usb-ehci \
	kmod-usb-ledtrig-usbport kmod-usb-storage kmod-usb-storage-extras \
	kmod-usb-storage-uas kmod-usb-core kmod-usb-net \
	usbutils usbmuxd libusb-1.0-0 libusbmuxd \
	swconfig iperf3 chat ppp ppp-mod-pppoa ppp-mod-pppoe ppp-mod-pppol2tp \
	ppp-mod-pptp luci luci-theme-material block-mount kmod-fs-msdos luci-app-commands speedtestpp \
	kmod-mt7615e kmod-mt7615-firmware ethtool
endef
TARGET_DEVICES += geva_BatteryPoE-at3-bt

are you sure is that righ?

Sicuro è morto.
Non ci capisco quasi nulla di DTS
Ho copiato da Asus o da Inet.
Però credo che se c'è un errore, non andrà il wifi
Adesso però dovrebbe rilevarmi la periferica PCIe

Sure is dead.
I copied from Asus or from Inet.
But I think if there is a mistake, wifi will not go
But now the PCIE device should detect me

today i need go out for lunch, I'll try this when I get back tonight. so we understand if it's a driver problem, hardware or something else.

i need know the device you copied from, the specific device, asus or gflinet? the model

ok

Ho verificato e l'ho preso da Asus n56u B1 che ha la CPU MT7621, ma non trovo che radio usa.
Verifico se inet e diverso e ricompilo

I checked and took it from Asus N56U B1 which has the MT7621 CPU, but I find it that US Radio.
I check if Inet and different and recompile