Adding support for Fritz!Repeater 2400

Hi, I'm trying to add support for this repeater which has this hardware:

  • SoC: QN5502 (actually WiFi 2.4Ghz is not supported in OpenWrt)
  • WiFi5: QCA9984 (Chip WiFi 4x4 MU-MIMO 802.11ac Wave 2 (5GHz, PCIe)
  • RAM: 128MB (NT5TU64M16HG RAM DDR2 Nanya 64M×16bit = 128MB)
  • Flash: NOR SPI 64MB (Macronix MX25L51245GZ21-10G)
  • Leds: HC595A (Shift register 74HC595)
  • Ethernet PHY: AR8033
  • I2C: temperature sensor lm75 (pin 16 SDA, 17 SCL)

Similar hardware is the TP-Link Archer A9 v6 which is supported but the WiFi 2.4 Ghz.

This is the original DTS extracted from Fritz!OS 8.20 image:

/dts-v1/;

/ {
	compatible = "qca,ath79";
	#address-cells = <0x01>;
	#size-cells = <0x01>;
	model = "AVM FRITZ!Repeater 2400";
	nmi-relocation = <0x01>;

	aliases {
		spi0 = "/ahb/spi@1f000000";
		serial0 = "/ahb/apb/uart@18020000";
		eth0 = "/ahb/ethernet@19000000";
		eth1 = "/ahb/ethernet@1a000000";
	};

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

		cpu@0 {
			device_type = "cpu";
			compatible = "mips,mips74Kc";
			reg = <0x00>;
		};
	};

	interrupt-controller {
		compatible = "qca,ar9132-cpu-intc", "qca,ar7100-cpu-intc";
		interrupt-controller;
		#interrupt-cells = <0x01>;
		linux,phandle = <0x01>;
		phandle = <0x01>;
	};

	ahb {
		compatible = "simple-bus";
		ranges;
		#address-cells = <0x01>;
		#size-cells = <0x01>;
		interrupt-parent = <0x01>;

		apb {
			compatible = "simple-bus";
			ranges;
			#address-cells = <0x01>;
			#size-cells = <0x01>;
			interrupt-parent = <0x02>;

			memory-controller@18000000 {
				compatible = "qca,ar9132-ddr-controller", "qca,ar7240-ddr-controller";
				reg = <0x18000000 0x100>;
				#qca,ddr-wb-channel-cells = <0x01>;
			};

			uart@18020000 {
				compatible = "ns16550A", "serial8250";
				reg = <0x18020000 0x20>;
				interrupts = <0x03>;
				interrupt-parent = <0x02>;
				clocks = <0x03 0x03>;
				clock-names = "uart";
				reg-io-width = <0x04>;
				reg-shift = <0x02>;
				no-loopback-test;
				status = "okay";
			};

			gpio@18040000 {
				compatible = "qca,ar9340-gpio", "qca,ar7100-gpio";
				reg = <0x18040000 0x30>;
				interrupts = <0x02>;
				ngpios = <0x17>;
				gpio-controller;
				#gpio-cells = <0x02>;
				interrupt-controller;
				#interrupt-cells = <0x02>;
				status = "okay";
				linux,phandle = <0x0f>;
				phandle = <0x0f>;
			};

			pll-controller@18050000 {
				compatible = "qca,ar9132-ppl", "qca,ar9130-pll";
				reg = <0x18050000 0x20>;
				clock-names = "ref";
				clocks = <0x04>;
				#clock-cells = <0x01>;
				clock-output-names = "cpu", "ddr", "ahb";
				linux,phandle = <0x03>;
				phandle = <0x03>;
			};

			wdt@18060008 {
				compatible = "qca,ar7130-wdt";
				reg = <0x18060008 0x08>;
				interrupts = <0x04>;
				clocks = <0x03 0x02>;
				clock-names = "wdt";
			};

			interrupt-controller@18060010 {
				compatible = "qca,ar7240-misc-intc", "qca,ar9132-misc-intc", "qca,ar7100-misc-intc";
				reg = <0x18060010 0x08>;
				interrupt-parent = <0x01>;
				interrupts = <0x06>;
				interrupt-controller;
				#interrupt-cells = <0x01>;
				linux,phandle = <0x02>;
				phandle = <0x02>;
			};

			interrupt-controller@18040000 {
				compatible = "qca,ath79-gpio-intc";
				interrupt-parent = <0x02>;
				interrupts = <0x02>;
				interrupt-controller;
				#interrupt-cells = <0x01>;
			};

			interrupt-controller@ip2_int {
				compatible = "qca,ath79-ip2-intc";
				interrupt-controller;
				#interrupt-cells = <0x01>;
				interrupt-parent = <0x01>;
				interrupts = <0x02>;
				linux,phandle = <0x10>;
				phandle = <0x10>;
			};

			interrupt-controller@ip3_int {
				compatible = "qca,ath79-ip3-intc";
				interrupt-controller;
				#interrupt-cells = <0x01>;
				interrupt-parent = <0x01>;
				interrupts = <0x03>;
				linux,phandle = <0x05>;
				phandle = <0x05>;
			};

			reset-controller@1806001c {
				compatible = "qca,ar9132-reset", "qca,ar7100-reset";
				reg = <0x1806001c 0x04>;
				#reset-cells = <0x01>;
			};

			i2c@18018000 {
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				compatible = "snps,designware-i2c";
				reg = <0x18018000 0x80>;
				interrupt-parent = <0x02>;
				interrupts = <0x18>;
				is_old_version = <0x01>;
				i2c-sck-gpio = <0x11>;
				i2c-sda-gpio = <0x12>;
				i2c-tx-fifo-depth = <0x10>;
				i2c-rx-fifo-depth = <0x40>;
				clocks = <0x03 0x03>;
				clock-names = "ref";
				status = "disabled";
			};

			pci@0x16000000 {
				compatible = "qca,ar724x-pci";
				reg = <0x16000000 0x1000 0x18280000 0x100 0x18250000 0x1000 0x12000000 0x2000000 0x01 0x01>;
				reg-names = "cfg_base", "ctrl_base", "crp_base", "mem_base", "io_base";
				interrupt-parent = <0x05>;
				interrupts = <0x02>;
				status = "okay";
			};
		};

		spi@1f000000 {
			compatible = "qca,ar9132-spi", "qca,ar7100-spi";
			reg = <0x1f000000 0x18>;
			clocks = <0x03 0x02>;
			clock-names = "ahb";
			status = "okay";
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			ath79,is-flash = <0x01>;
			spi-max-frequency = <0x17d7840>;
		};
	};

	avm-portinfo {

		p1 {
			ifname = "eth0";
			case_label = "LAN1";
		};
	};

	memory@0 {
		device_type = "memory";
		reg = <0x00 0x2000000>;
	};

	reserved-memory {
		#address-cells = <0x01>;
		#size-cells = <0x01>;
		ranges;

		ramoops@00000000 {
			compatible = "ramoops";
			reg = <0xf80000 0x80000>;
			record-size = <0x20000>;
		};
	};

	chosen {
		bootargs-append = " slub_debug=-";
	};

	avm-gpio {
		compatible = "avm,avm_gpio_generic";

		gpio_avm_shift_clk {
			value = <0x02>;
			param = <0x0a>;
		};

		gpio_avm_shift_din {
			value = <0x03>;
			param = <0x0a>;
		};

		gpio_avm_shift_rclk {
			value = <0x00>;
			param = <0x0a>;
		};

		shift_register_size {
			value = <0x08>;
			param = <0x0d>;
			function = <0x00>;
		};

		gpio_avm_led_fsi0 {
			value = <0x64>;
			linux,phandle = <0x09>;
			phandle = <0x09>;
		};

		gpio_avm_led_fsi1 {
			value = <0x65>;
			linux,phandle = <0x0a>;
			phandle = <0x0a>;
		};

		gpio_avm_led_fsi2 {
			value = <0x66>;
			linux,phandle = <0x0b>;
			phandle = <0x0b>;
		};

		gpio_avm_led_fsi3 {
			value = <0x67>;
			linux,phandle = <0x0c>;
			phandle = <0x0c>;
		};

		gpio_avm_led_fsi4 {
			value = <0x68>;
			linux,phandle = <0x0d>;
			phandle = <0x0d>;
		};

		gpio_avm_led_power {
			value = <0x69>;
			linux,phandle = <0x07>;
			phandle = <0x07>;
		};

		gpio_avm_led_wlan {
			value = <0x6a>;
			linux,phandle = <0x06>;
			phandle = <0x06>;
		};

		gpio_avm_led_lan {
			value = <0x6b>;
			linux,phandle = <0x08>;
			phandle = <0x08>;
		};

		gpio_avm_button_wlan {
			value = <0x01>;
			param = <0x0c>;
			linux,phandle = <0x0e>;
			phandle = <0x0e>;
		};

		gpio_avm_uart_rx {
			value = <0x12>;
			param = <0x0d>;
			function = <0x08>;
		};

		gpio_avm_uart_tx {
			value = <0x13>;
			param = <0x0b>;
			function = <0x16>;
		};

		gpio_avm_extphy1_reset {
			value = <0x14>;
			param = <0x0b>;
			default = <0x01>;
		};

		gpio_avm_pcie_reset {
			value = <0x05>;
			param = <0x0b>;
			default = <0x01>;
		};

		gpio_avm_i2c_clk {
			value = <0x11>;
			param = <0x0a>;
		};

		gpio_avm_i2c_data {
			value = <0x10>;
			param = <0x0a>;
		};
	};

	avm-hui {
		compatible = "avm,hui";

		repeater-one-no-rssi {
			compatible = "avm,hui-generic-led-avm";
			avm-gpios = <0x06 0x07 0x08>;

			colors {
				normal = <0x00 0xff 0x00>;
				warn = <0x00 0x00 0xff>;
				error = <0xff 0x00 0x00>;
			};
		};

		rssi1 {
			compatible = "avm,hui-generic-led-avm";
			led-type = "uplink-rssi";
			location = <0x01>;
			avm-gpios = <0x09>;
		};

		rssi2 {
			compatible = "avm,hui-generic-led-avm";
			led-type = "uplink-rssi";
			location = <0x02>;
			avm-gpios = <0x0a>;
		};

		rssi3 {
			compatible = "avm,hui-generic-led-avm";
			led-type = "uplink-rssi";
			location = <0x03>;
			avm-gpios = <0x0b>;
		};

		rssi4 {
			compatible = "avm,hui-generic-led-avm";
			led-type = "uplink-rssi";
			location = <0x04>;
			avm-gpios = <0x0c>;
		};

		rssi5 {
			compatible = "avm,hui-generic-led-avm";
			led-type = "uplink-rssi";
			location = <0x05>;
			avm-gpios = <0x0d>;
		};

		repeater-connect {
			compatible = "avm,hui-generic-button-avm";
			avm-gpios = <0x0e>;
		};
	};

	oscillator {
		compatible = "fixed-clock";
		#clock-cells = <0x00>;
		clock-frequency = <0x17d7840>;
		linux,phandle = <0x04>;
		phandle = <0x04>;
	};

	i2c@0 {
		status = "okay";
		compatible = "i2c-gpio";
		gpios = <0x0f 0x10 0x00 0x0f 0x11 0x00>;
		i2c-gpio,delay-us = <0x05>;
		#address-cells = <0x01>;
		#size-cells = <0x00>;

		lm75@48 {
			compatible = "national,lm75";
			reg = <0x48>;
			#thermal-sensor-cells = <0x00>;
			linux,phandle = <0x11>;
			phandle = <0x11>;
		};
	};

	wifi@b8100000 {
		compatible = "qca,wifi-ar550x";
		reg = <0xb8100000 0x20000>;
		core-id = <0x00>;
		interrupt-parent = <0x10>;
		interrupts = <0x01>;
		interrupt-names = "legacy";
		status = "ok";
		#cooling-cells = <0x02>;
		linux,phandle = <0x13>;
		phandle = <0x13>;
	};

	avm_pmu@18116CC4 {
		reg = <0x18116cc4 0x300000>;
	};

	thermal-zones {

		package-thermal {
			polling-delay-passive = <0xfa>;
			polling-delay = <0x3e8>;
			thermal-sensors = <0x11>;

			trips {

				t0 {
					temperature = <0x186a0>;
					hysteresis = <0x1388>;
					type = "passive";
					linux,phandle = <0x12>;
					phandle = <0x12>;
				};

				t1 {
					temperature = <0x19258>;
					hysteresis = <0xbb8>;
					type = "hot";
				};

				t2 {
					temperature = <0x19a28>;
					hysteresis = <0x7d0>;
					type = "hot";
				};
			};

			cooling-maps {

				map0 {
					trip = <0x12>;
					cooling-device = <0x13 0xffffffff 0xffffffff>;
				};
			};
		};
	};

	avm-hw-revision {
		compatible = "avm,avm_hw_revision";
		revision = "241";
		subrevision = "0";
	};
};

and add to generic.mk

define Device/avm_fritz-repeater-2400
  $(Device/avm)
  SOC := qcn5502
  IMAGE_SIZE := 31552k
  DEVICE_MODEL := FRITZ!Repeater 2400
  DEVICE_PACKAGES += ath10k-firmware-qca9984-ct kmod-ath10k-ct \
  kmod-i2c-gpio kmod-lm75 kmod-gpio-74x164
  EVA_FW_PART := part1
endef
TARGET_DEVICES += avm_fritz-repeater-2400

As you can see, the GPIO 5 is reported like PCIe reset.

I made the first draft of the DTS based also on the Archer A9 v6:

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

#include "qca956x.dtsi"

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

/ {
	model = "AVM FRITZ!Repeater 2400";
	compatible = "avm,fritz-repeater-2400", "qca,qcn5500", "qca,qca9560";

	chosen {
		bootargs = "console=ttyS0,115200n8 loglevel=8 initcall_debug";
	};

	aliases {
		led-boot = &led_power;
		led-failsafe = &led_power;
		led-running = &led_power;
		led-upgrade = &led_power;
		label-mac-device = &eth0;
	};

	keys {
		compatible = "gpio-keys";

		wps {
			label = "wps";
			linux,code = <KEY_WPS_BUTTON>;
			gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
			debounce-interval = <60>;
		};
	};

	/*
	 * 74HC595 shift register for LEDs
	 * GPIO 2 = SRCLK (shift clock)
	 * GPIO 3 = SER   (serial data in)
	 * GPIO 0 = RCLK  (storage/latch clock, used as CS)
	 *
	 * Requires CONFIG_SPI_GPIO=y and CONFIG_GPIO_74X164=y
	 *
	 * Shift register bit mapping:
	 *   bit 0: rssi1
	 *   bit 1: rssi2
	 *   bit 2: rssi3
	 *   bit 3: rssi4
	 *   bit 4: rssi5
	 *   bit 5: power
	 *   bit 6: wlan
	 *   bit 7: lan
	 */
	led_spi: spi-led {
		compatible = "spi-gpio";
		#address-cells = <1>;
		#size-cells = <0>;

		sck-gpios  = <&gpio 2 GPIO_ACTIVE_HIGH>;
		mosi-gpios = <&gpio 3 GPIO_ACTIVE_HIGH>;
		cs-gpios   = <&gpio 0 GPIO_ACTIVE_LOW>;
		num-chipselects = <1>;

		led_gpio: led_gpio@0 {
			compatible = "fairchild,74hc595";
			reg = <0>;
			gpio-controller;
			#gpio-cells = <2>;
			registers-number = <1>;
			spi-max-frequency = <10000000>;
		};
	};

	leds {
		compatible = "gpio-leds";

		rssi1 {
			label = "green:rssi1";
			gpios = <&led_gpio 0 GPIO_ACTIVE_HIGH>;
		};

		rssi2 {
			label = "green:rssi2";
			gpios = <&led_gpio 1 GPIO_ACTIVE_HIGH>;
		};

		rssi3 {
			label = "green:rssi3";
			gpios = <&led_gpio 2 GPIO_ACTIVE_HIGH>;
		};

		rssi4 {
			label = "green:rssi4";
			gpios = <&led_gpio 3 GPIO_ACTIVE_HIGH>;
		};

		rssi5 {
			label = "green:rssi5";
			gpios = <&led_gpio 4 GPIO_ACTIVE_HIGH>;
		};

		led_power: led-power {
			function = LED_FUNCTION_POWER;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&led_gpio 5 GPIO_ACTIVE_HIGH>;
			default-state = "on";
		};

		wlan {
			function = LED_FUNCTION_WLAN;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&led_gpio 6 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "phy0tpt";
		};

		lan {
			function = LED_FUNCTION_LAN;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&led_gpio 7 GPIO_ACTIVE_HIGH>;
		};
	};

	/* I2C bit-banged: LM75 temperature sensor
	 * GPIO 16 = SDA, GPIO 17 = SCL
	 */
	i2c {
		compatible = "i2c-gpio";
		sda-gpios = <&gpio 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		scl-gpios = <&gpio 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		i2c-gpio,delay-us = <5>;

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

		thermal@48 {
			compatible = "national,lm75";
			reg = <0x48>;
			#thermal-sensor-cells = <0>;
		};
	};
};

&uart {
	status = "okay";
};

&spi {
	status = "okay";

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

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

			/*
			 * Flash layout (64 MB MX25L51245G) — from boot log:
			 *
			 * 0x000000 - 0x020000 : urlader      (128 KB, EVA bootloader)
			 * 0x020000 - 0x090000 : tffs (1)      (448 KB, AVM config primary)
			 * 0x090000 - 0x2000000: firmware       (~31.5 MB, kernel + rootfs)
			 * 0x2000000- 0x2020000: caldata        (128 KB, Wi-Fi calibration)
			 * 0x2020000- 0x2090000: tffs (2)       (448 KB, AVM config backup)
			 * 0x2090000- 0x4000000: reserved       (~30 MB)
			 */

			partition@0 {
				label = "urlader";
				reg = <0x000000 0x020000>;
				read-only;

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

					/*
					 * TODO: verify MAC address offset.
					 */
					macaddr_urlader: macaddr@a91 {
						compatible = "mac-base";
						reg = <0xa91 0x6>;
						#nvmem-cell-cells = <1>;
					};
				};
			};

			partition@20000 {
				label = "tffs (1)";
				reg = <0x020000 0x070000>;
				read-only;
			};

			partition@90000 {
				compatible = "denx,uimage";
				label = "firmware";
				reg = <0x090000 0x1f70000>;
			};

			partition@2000000 {
				label = "caldata";
				reg = <0x2000000 0x020000>;
				read-only;

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

					/*
					 * TODO: verify caldata offsets.
					 */
					cal_ath9k: calibration@1000 {
						reg = <0x1000 0x440>;
					};

					cal_ath10k: calibration@5000 {
						reg = <0x5000 0x2f20>;
					};
				};
			};

			partition@2020000 {
				label = "tffs (2)";
				reg = <0x2020000 0x070000>;
				read-only;
			};

			partition@2090000 {
				label = "reserved";
				reg = <0x2090000 0x1f70000>;
				read-only;
			};
		};
	};
};

/*
 * Ethernet: AR8033 external Gigabit PHY
 *
 * PHY reset on GPIO 20 (active low).
 */
&mdio0 {
	status = "okay";

	phy0: ethernet-phy@0 {
		compatible = "ethernet-phy-id004d.d074";  /* AR8033 */
		reg = <0>;
		reset-gpios = <&gpio 20 GPIO_ACTIVE_LOW>;
		reset-assert-us = <20000>;
		reset-deassert-us = <20000>;
		qca,clk-out-frequency = <125000000>;
		qca,smarteee-tw-us-1g = <24>;
	};
};

&eth0 {
	status = "okay";

	phy-handle = <&phy0>;
	phy-mode = "sgmii";

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

	pll-data = <0x03000000 0x00000101 0x00001919>;

	gmac-config {
		device = <&gmac>;
		ge0-sgmii-cfg-clk;
	};
};

/* 2.4 GHz radio — integrated WMAC (ath9k/QCN5502, not yet supported) */
&wmac {
	status = "disabled";

	nvmem-cells = <&cal_ath9k>, <&macaddr_urlader 1>;
	nvmem-cell-names = "calibration", "mac-address";
};

/*
 * 5 GHz radio — QCA9984 on PCIe (ath10k)
 */
&pcie {
	status = "okay";

	wifi@0,0 {
		compatible = "qcom,ath10k";
		reg = <0x0000 0 0 0 0>;

		nvmem-cells = <&cal_ath10k>, <&macaddr_urlader 2>;
		nvmem-cell-names = "pre-calibration", "mac-address";
	};
};

&gpio {
	/*phy-reset {
	*	gpio-hog;
	*	gpios = <20 GPIO_ACTIVE_HIGH>;
	*	output-high;
	*	line-name = "PHY reset";
	*};
	*/

	pcie-reset {
		gpio-hog;
		gpios = <5 GPIO_ACTIVE_HIGH>;
		output-high;
		line-name = "PCIE reset";
	};
};

Here the problem: if I disable pci (status="disabled") I can boot OpenWrt and access to Luci (but no wifi). If I enable pcie, boot is blocking at [ 10.727677] calling deferred_probe_initcall+0x0/0xc0 @ 1 as you can see from the log:


(AVM) EVA Revision: 1.11013
(C) Copyright 2018 AVM Date: May 20 2020 Time: 14:58:06 (0) 3 0x0-0x240D

[FLASH:] MACRONIX Uniform-Flash 64MB 256 Bytes WriteBuffer
[FLASH:](Eraseregion [0] 1024 sectors a 64kB) 
[SYSTEM:] QCA956x on 775/650/258MHz

Eva_AVM >
Eva_AVM >..............................................................................................................ExecuteProgram
[    0.000000] Linux version 6.12.74 (enversat@lenovo-v130) (mips-openwrt-linux-musl-gcc (OpenWrt GCC 14.3.0 r33473-7ba45de827) 14.3.0, GNU ld (GNU Binutils) 2.44) #0 Fri Mar 20 12:21:46 2026
[...]
[   10.216617] 8021q: 802.1Q VLAN Support v1.8
[   10.221004] initcall vlan_proto_init+0x0/0xb0 returned 0 after 4387 usecs
[   10.228089] calling  kernel_do_mounts_initrd_sysctls_init+0x0/0x38 @ 1
[   10.234894] initcall kernel_do_mounts_initrd_sysctls_init+0x0/0x38 returned 0 after 13 usecs
[   10.243633] calling  kernel_panic_sysfs_init+0x0/0x30 @ 1
[   10.249247] initcall kernel_panic_sysfs_init+0x0/0x30 returned 0 after 16 usecs
[   10.256815] calling  kernel_panic_sysctls_init+0x0/0x38 @ 1
[   10.262598] initcall kernel_panic_sysctls_init+0x0/0x38 returned 0 after 8 usecs
[   10.270262] calling  kernel_exit_sysfs_init+0x0/0x30 @ 1
[   10.275769] initcall kernel_exit_sysfs_init+0x0/0x30 returned 0 after 8 usecs
[   10.283158] calling  kernel_exit_sysctls_init+0x0/0x38 @ 1
[   10.288842] initcall kernel_exit_sysctls_init+0x0/0x38 returned 0 after 7 usecs
[   10.296410] calling  param_sysfs_builtin_init+0x0/0x23c @ 1
[   10.305850] initcall param_sysfs_builtin_init+0x0/0x23c returned 0 after 3646 usecs
[   10.313871] calling  reboot_ksysfs_init+0x0/0x98 @ 1
[   10.319047] initcall reboot_ksysfs_init+0x0/0x98 returned 0 after 35 usecs
[   10.326184] calling  sched_core_sysctl_init+0x0/0x38 @ 1
[   10.331695] initcall sched_core_sysctl_init+0x0/0x38 returned 0 after 3 usecs
[   10.339082] calling  sched_fair_sysctl_init+0x0/0x38 @ 1
[   10.344594] initcall sched_fair_sysctl_init+0x0/0x38 returned 0 after 9 usecs
[   10.351992] calling  sched_dl_sysctl_init+0x0/0x38 @ 1
[   10.357316] initcall sched_dl_sysctl_init+0x0/0x38 returned 0 after 9 usecs
[   10.364522] calling  sched_rt_sysctl_init+0x0/0x38 @ 1
[   10.369853] initcall sched_rt_sysctl_init+0x0/0x38 returned 0 after 10 usecs
[   10.377143] calling  printk_late_init+0x0/0x1ec @ 1
[   10.382222] initcall printk_late_init+0x0/0x1ec returned 0 after 24 usecs
[   10.389240] calling  tk_debug_sleep_time_init+0x0/0x3c @ 1
[   10.394947] initcall tk_debug_sleep_time_init+0x0/0x3c returned 0 after 25 usecs
[   10.402616] calling  bpf_ksym_iter_register+0x0/0x10 @ 1
[   10.408112] initcall bpf_ksym_iter_register+0x0/0x10 returned 0 after 2 usecs
[   10.415501] calling  bpf_rstat_kfunc_init+0x0/0x10 @ 1
[   10.420826] initcall bpf_rstat_kfunc_init+0x0/0x10 returned 0 after 1 usecs
[   10.428028] calling  bpf_global_ma_init+0x0/0x34 @ 1
[   10.433303] initcall bpf_global_ma_init+0x0/0x34 returned 0 after 132 usecs
[   10.440549] calling  bpf_syscall_sysctl_init+0x0/0x38 @ 1
[   10.446150] initcall bpf_syscall_sysctl_init+0x0/0x38 returned 0 after 14 usecs
[   10.453727] calling  unbound_reg_init+0x0/0x3c @ 1
[   10.458681] initcall unbound_reg_init+0x0/0x3c returned 0 after 1 usecs
[   10.465528] calling  kfunc_init+0x0/0xcc @ 1
[   10.469955] initcall kfunc_init+0x0/0xcc returned 0 after 2 usecs
[   10.476260] calling  init_subsystem+0x0/0x10 @ 1
[   10.481055] initcall init_subsystem+0x0/0x10 returned 0 after 0 usecs
[   10.487719] calling  bpf_map_iter_init+0x0/0x40 @ 1
[   10.492776] initcall bpf_map_iter_init+0x0/0x40 returned 0 after 2 usecs
[   10.499718] calling  task_iter_init+0x0/0xb4 @ 1
[   10.504525] initcall task_iter_init+0x0/0xb4 returned 0 after 33 usecs
[   10.511301] calling  bpf_prog_iter_init+0x0/0x10 @ 1
[   10.516437] initcall bpf_prog_iter_init+0x0/0x10 returned 0 after 1 usecs
[   10.523470] calling  bpf_link_iter_init+0x0/0x10 @ 1
[   10.528604] initcall bpf_link_iter_init+0x0/0x10 returned 0 after 1 usecs
[   10.535632] calling  init_trampolines+0x0/0x24 @ 1
[   10.540620] initcall init_trampolines+0x0/0x24 returned 0 after 14 usecs
[   10.547555] calling  bpf_cgroup_iter_init+0x0/0x18 @ 1
[   10.552878] initcall bpf_cgroup_iter_init+0x0/0x18 returned 0 after 1 usecs
[   10.560089] calling  cpumask_kfunc_init+0x0/0x8c @ 1
[   10.565241] initcall cpumask_kfunc_init+0x0/0x8c returned 0 after 17 usecs
[   10.572362] calling  crypto_kfunc_init+0x0/0x88 @ 1
[   10.577410] initcall crypto_kfunc_init+0x0/0x88 returned 0 after 1 usecs
[   10.584345] calling  init_lru_gen+0x0/0x88 @ 1
[   10.588992] initcall init_lru_gen+0x0/0x88 returned 0 after 51 usecs
[   10.595591] calling  fault_around_debugfs+0x0/0x3c @ 1
[   10.600931] initcall fault_around_debugfs+0x0/0x3c returned 0 after 10 usecs
[   10.608222] calling  slab_sysfs_init+0x0/0x120 @ 1
[   10.619164] initcall slab_sysfs_init+0x0/0x120 returned 0 after 5962 usecs
[   10.626364] calling  set_hardened_usercopy+0x0/0xcc @ 1
[   10.631801] initcall set_hardened_usercopy+0x0/0xcc returned 1 after 0 usecs
[   10.639098] calling  init_root_keyring+0x0/0xc @ 1
[   10.644200] initcall init_root_keyring+0x0/0xc returned 0 after 134 usecs
[   10.651259] calling  crypto_algapi_init+0x0/0x20 @ 1
[   10.656405] initcall crypto_algapi_init+0x0/0x20 returned 0 after 12 usecs
[   10.663528] calling  blk_timeout_init+0x0/0x14 @ 1
[   10.668488] initcall blk_timeout_init+0x0/0x14 returned 0 after 0 usecs
[   10.675349] calling  pci_resource_alignment_sysfs_init+0x0/0x14 @ 1
[   10.681869] initcall pci_resource_alignment_sysfs_init+0x0/0x14 returned 0 after 17 usecs
[   10.690337] calling  pci_sysfs_init+0x0/0xa8 @ 1
[   10.695122] initcall pci_sysfs_init+0x0/0xa8 returned 0 after 5 usecs
[   10.701792] calling  clk_debug_init+0x0/0x134 @ 1
[   10.707058] initcall clk_debug_init+0x0/0x134 returned 0 after 399 usecs
[   10.714056] calling  sync_state_resume_initcall+0x0/0x20 @ 1
[   10.719940] initcall sync_state_resume_initcall+0x0/0x20 returned 0 after 2 usecs
[   10.727677] calling  deferred_probe_initcall+0x0/0xc0 @ 1

Last thing: actually I'm booting from ftpt using YoutFritz/eva-tools:

make -j$(nproc) V=s 2>&1 | tee build.log
cp ~/openwrt/bin/targets/ath79/generic/openwrt-ath79-generic-avm_fritz-repeater-2400-initramfs-kernel.bin ~/fritz_initramfs_padded.bin
truncate -s %4096 ~/fritz_initramfs_padded.bin
cd ~/YourFritz/eva_tools/
bash eva_to_memory ~/fritz_initramfs_padded.bin 192.168.178.1

Anyone could help me understand why boot is blocking with pcie enabled?

If you enable pcie, but comment out the wifi block, does it hang in the same location?

The deferred_probe_initcall is for devices that deferred probing earlier.

I'm pretty sure there's a bootarg that's available that will indicate which drivers were probed and which returned deferral. However I can't seem to find it with my Google-foo right now. Hopefully that gives you a path to look down though.

It's a drivers thing

return -EPROBE_DEFER;

Mostly missing some gpios or others.

Enable gio and pinctrl in "kernel build options" may help here

It blocks always in the same location ([ 15.580895] calling deferred_probe_initcall+0x0/0xc0 @ 1), also commenting out the wifi log. I really don't understand where is the problem (yes, the pcie initialization is the problem, but why? is the GPIO 5 the real problem?)
Reference for this log:

  • add to bootargs driver_deferred_probe_timeout=10
  • commented out the wifi block
  • add this kernel build options: CONFIG_KERNEL_DEBUG_PINCTRL, CONFIG_KERNEL_DEBUG_GPIO, CONFIG_PACKAGE_ATH_DEBUG
(AVM) EVA Revision: 1.11013
(C) Copyright 2018 AVM Date: May 20 2020 Time: 14:58:06 (0) 3 0x0-0x240D

[FLASH:] MACRONIX Uniform-Flash 64MB 256 Bytes WriteBuffer
[FLASH:](Eraseregion [0] 1024 sectors a 64kB) 
[SYSTEM:] QCA956x on 775/650/258MHz

Eva_AVM >
Eva_AVM >........................................................................................................................ExecuteProgram
[    0.000000] Linux version 6.12.74 (enversat@lenovo-v130) (mips-openwrt-linux-musl-gcc (OpenWrt GCC 14.3.0 r33473-7ba45de827) 14.3.0, GNU ld (GNU Binutils) 2.44) #0 Fri Mar 20 12:21:46 2026
[    0.000000] printk: legacy bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 00019750 (MIPS 74Kc)
[    0.000000] MIPS: machine is AVM FRITZ!Repeater 2400
[    0.000000] SoC: Qualcomm Atheros QCA550X ver 1 rev 0
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] OF: reserved mem: Reserved memory: No reserved-memory node in the DT
[    0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0 
[    0.000000] Kernel command line: console=ttyS0,115200n8 loglevel=8 initcall_debug driver_deferred_probe_timeout=10 rootfstype=squashfs,jffs2
[    0.000000] Unknown kernel command line parameters "driver_deferred_probe_timeout=10", will be passed to user space.
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)
[    0.000000] Writing ErrCtl register=00000000
[    0.000000] Readback ErrCtl register=00000000
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 32768
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] RCU Tasks Trace: Setting shift to 0 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=1.
[    0.000000] NR_IRQS: 51
[    0.000000] CPU clock: 775.000 MHz
[    0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 4932285024 ns
[    0.000001] sched_clock: 32 bits at 388MHz, resolution 2ns, wraps every 5541893118ns
[    0.008255] Calibrating delay loop... 385.84 BogoMIPS (lpj=1929216)
[    0.074772] pid_max: default: 32768 minimum: 301
[    0.088841] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.096580] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[...]
[   15.069708] 8021q: 802.1Q VLAN Support v1.8
[   15.074098] initcall vlan_proto_init+0x0/0xb0 returned 0 after 4389 usecs
[   15.081197] calling  kernel_do_mounts_initrd_sysctls_init+0x0/0x38 @ 1
[   15.088018] initcall kernel_do_mounts_initrd_sysctls_init+0x0/0x38 returned 0 after 13 usecs
[   15.096754] calling  kernel_panic_sysfs_init+0x0/0x30 @ 1
[   15.102364] initcall kernel_panic_sysfs_init+0x0/0x30 returned 0 after 15 usecs
[   15.109933] calling  kernel_panic_sysctls_init+0x0/0x38 @ 1
[   15.115726] initcall kernel_panic_sysctls_init+0x0/0x38 returned 0 after 8 usecs
[   15.123389] calling  kernel_exit_sysfs_init+0x0/0x30 @ 1
[   15.128899] initcall kernel_exit_sysfs_init+0x0/0x30 returned 0 after 10 usecs
[   15.136383] calling  kernel_exit_sysctls_init+0x0/0x38 @ 1
[   15.142066] initcall kernel_exit_sysctls_init+0x0/0x38 returned 0 after 6 usecs
[   15.149633] calling  param_sysfs_builtin_init+0x0/0x23c @ 1
[   15.159153] initcall param_sysfs_builtin_init+0x0/0x23c returned 0 after 3741 usecs
[   15.167185] calling  reboot_ksysfs_init+0x0/0x98 @ 1
[   15.172363] initcall reboot_ksysfs_init+0x0/0x98 returned 0 after 35 usecs
[   15.179500] calling  sched_core_sysctl_init+0x0/0x38 @ 1
[   15.185009] initcall sched_core_sysctl_init+0x0/0x38 returned 0 after 3 usecs
[   15.192388] calling  sched_fair_sysctl_init+0x0/0x38 @ 1
[   15.197897] initcall sched_fair_sysctl_init+0x0/0x38 returned 0 after 8 usecs
[   15.205282] calling  sched_dl_sysctl_init+0x0/0x38 @ 1
[   15.210602] initcall sched_dl_sysctl_init+0x0/0x38 returned 0 after 8 usecs
[   15.217815] calling  sched_rt_sysctl_init+0x0/0x38 @ 1
[   15.223157] initcall sched_rt_sysctl_init+0x0/0x38 returned 0 after 11 usecs
[   15.230442] calling  printk_late_init+0x0/0x1ec @ 1
[   15.235518] initcall printk_late_init+0x0/0x1ec returned 0 after 21 usecs
[   15.242547] calling  tk_debug_sleep_time_init+0x0/0x3c @ 1
[   15.248250] initcall tk_debug_sleep_time_init+0x0/0x3c returned 0 after 24 usecs
[   15.255910] calling  bpf_ksym_iter_register+0x0/0x10 @ 1
[   15.261409] initcall bpf_ksym_iter_register+0x0/0x10 returned 0 after 2 usecs
[   15.268794] calling  bpf_rstat_kfunc_init+0x0/0x10 @ 1
[   15.274122] initcall bpf_rstat_kfunc_init+0x0/0x10 returned 0 after 1 usecs
[   15.281316] calling  bpf_global_ma_init+0x0/0x34 @ 1
[   15.286587] initcall bpf_global_ma_init+0x0/0x34 returned 0 after 127 usecs
[   15.293842] calling  bpf_syscall_sysctl_init+0x0/0x38 @ 1
[   15.299439] initcall bpf_syscall_sysctl_init+0x0/0x38 returned 0 after 14 usecs
[   15.307010] calling  unbound_reg_init+0x0/0x3c @ 1
[   15.311969] initcall unbound_reg_init+0x0/0x3c returned 0 after 1 usecs
[   15.318820] calling  kfunc_init+0x0/0xcc @ 1
[   15.323253] initcall kfunc_init+0x0/0xcc returned 0 after 3 usecs
[   15.329557] calling  init_subsystem+0x0/0x10 @ 1
[   15.334357] initcall init_subsystem+0x0/0x10 returned 0 after 1 usecs
[   15.341017] calling  bpf_map_iter_init+0x0/0x40 @ 1
[   15.346073] initcall bpf_map_iter_init+0x0/0x40 returned 0 after 3 usecs
[   15.353016] calling  task_iter_init+0x0/0xb4 @ 1
[   15.357792] initcall task_iter_init+0x0/0xb4 returned 0 after 2 usecs
[   15.364465] calling  bpf_prog_iter_init+0x0/0x10 @ 1
[   15.369599] initcall bpf_prog_iter_init+0x0/0x10 returned 0 after 1 usecs
[   15.376628] calling  bpf_link_iter_init+0x0/0x10 @ 1
[   15.381768] initcall bpf_link_iter_init+0x0/0x10 returned 0 after 1 usecs
[   15.388792] calling  init_trampolines+0x0/0x24 @ 1
[   15.393770] initcall init_trampolines+0x0/0x24 returned 0 after 15 usecs
[   15.400700] calling  bpf_cgroup_iter_init+0x0/0x18 @ 1
[   15.406023] initcall bpf_cgroup_iter_init+0x0/0x18 returned 0 after 1 usecs
[   15.413234] calling  cpumask_kfunc_init+0x0/0x8c @ 1
[   15.418385] initcall cpumask_kfunc_init+0x0/0x8c returned 0 after 16 usecs
[   15.425504] calling  crypto_kfunc_init+0x0/0x88 @ 1
[   15.430554] initcall crypto_kfunc_init+0x0/0x88 returned 0 after 1 usecs
[   15.437493] calling  init_lru_gen+0x0/0x88 @ 1
[   15.442147] initcall init_lru_gen+0x0/0x88 returned 0 after 51 usecs
[   15.448753] calling  fault_around_debugfs+0x0/0x3c @ 1
[   15.454096] initcall fault_around_debugfs+0x0/0x3c returned 0 after 12 usecs
[   15.461396] calling  slab_sysfs_init+0x0/0x120 @ 1
[   15.472286] initcall slab_sysfs_init+0x0/0x120 returned 0 after 5911 usecs
[   15.479491] calling  set_hardened_usercopy+0x0/0xcc @ 1
[   15.484920] initcall set_hardened_usercopy+0x0/0xcc returned 1 after 0 usecs
[   15.492207] calling  init_root_keyring+0x0/0xc @ 1
[   15.497448] initcall init_root_keyring+0x0/0xc returned 0 after 261 usecs
[   15.504507] calling  crypto_algapi_init+0x0/0x20 @ 1
[   15.509657] initcall crypto_algapi_init+0x0/0x20 returned 0 after 13 usecs
[   15.516781] calling  blk_timeout_init+0x0/0x14 @ 1
[   15.521740] initcall blk_timeout_init+0x0/0x14 returned 0 after 0 usecs
[   15.528585] calling  pci_resource_alignment_sysfs_init+0x0/0x14 @ 1
[   15.535096] initcall pci_resource_alignment_sysfs_init+0x0/0x14 returned 0 after 16 usecs
[   15.543561] calling  pci_sysfs_init+0x0/0xa8 @ 1
[   15.548347] initcall pci_sysfs_init+0x0/0xa8 returned 0 after 5 usecs
[   15.555031] calling  clk_debug_init+0x0/0x134 @ 1
[   15.560265] initcall clk_debug_init+0x0/0x134 returned 0 after 363 usecs
[   15.567268] calling  sync_state_resume_initcall+0x0/0x20 @ 1
[   15.573158] initcall sync_state_resume_initcall+0x0/0x20 returned 0 after 1 usecs
[   15.580895] calling  deferred_probe_initcall+0x0/0xc0 @ 1

I started to debug and found where the code is blocking. First I patched pci-ar724x.c:

--- a/arch/mips/pci/pci-ar724x.c
+++ b/arch/mips/pci/pci-ar724x.c
@@ -12,6 +12,7 @@
 #include <linux/init.h>
 #include <linux/delay.h>
 #include <linux/platform_device.h>
+#include <linux/device.h>
 #include <linux/irqchip/chained_irq.h>
 #include <asm/mach-ath79/ath79.h>
 #include <asm/mach-ath79/ar71xx_regs.h>
@@ -47,6 +48,8 @@
 	void __iomem *crp_base;
 
 	int irq;
+	
+	struct device *dev;
 
 	bool link_up;
 	bool bar0_is_cached;
@@ -343,12 +346,19 @@
 {
 	u32 ppl, rst, app;
 	int wait = 0;
-
+	
+	dev_info(apc->dev, "hw_init: === START PCIe initialization ===\n");
 	/* deassert PCIe host controller and PCIe PHY reset */
+	dev_info(apc->dev, "hw_init: deassert HC...");
 	reset_control_deassert(apc->hc_reset);
+	dev_info(apc->dev, "OK\n");
+	dev_info(apc->dev, "hw_init: deassert PHY...");
 	reset_control_deassert(apc->phy_reset);
+	dev_info(apc->dev, "OK\n");
+	
 
 	if (of_device_is_compatible(apc->np, "qcom,qca9550-pci")) {
+		dev_info(apc->dev, "hw_init: 9550 node\n");
 		/* remove the reset of the PCIE PLL */
 		ppl = ath79_pll_rr(QCA955X_PLL_PCIE_CONFIG_REG);
 		ppl &= ~QCA955X_PLL_PCIE_CONFIG_PLL_PWD;
@@ -359,33 +369,62 @@
 		ppl &= ~QCA955X_PLL_PCIE_CONFIG_PLL_BYPASS;
 		ath79_pll_wr(QCA955X_PLL_PCIE_CONFIG_REG, ppl);
 	} else {
+		dev_info(apc->dev, "hw_init: AR724X node\n");
 		/* remove the reset of the PCIE PLL */
+		dev_info(apc->dev, "hw_init: PLL step 1/4 - reading PCIE_CONFIG\n");
 		ppl = ath79_pll_rr(AR724X_PLL_REG_PCIE_CONFIG);
+		dev_info(apc->dev, "hw_init: PLL step 1/4 - read OK, value=0x%08x\n", ppl);
+		
 		ppl &= ~(AR934X_PLL_PCIE_CONFIG_PLL_PWD |
 			 AR724X_PLL_REG_PCIE_CONFIG_PPL_RESET);
+		dev_info(apc->dev, "hw_init: PLL step 2/4 - writing PCIE_CONFIG=0x%08x (clear PWD+RESET)\n", ppl);
 		ath79_pll_wr(AR724X_PLL_REG_PCIE_CONFIG, ppl);
+		dev_info(apc->dev, "hw_init: PLL step 2/4 - write OK\n");
 
 		/* deassert bypass for the PCIE PLL */
+		dev_info(apc->dev, "hw_init: PLL step 3/4 - reading PCIE_CONFIG\n");
 		ppl = ath79_pll_rr(AR724X_PLL_REG_PCIE_CONFIG);
+		dev_info(apc->dev, "hw_init: PLL step 3/4 - read OK, value=0x%08x\n", ppl);
 		ppl &= ~AR724X_PLL_REG_PCIE_CONFIG_PPL_BYPASS;
+		dev_info(apc->dev, "hw_init: PLL step 4/4 - writing PCIE_CONFIG=0x%08x (clear BYPASS)\n", ppl);
 		ath79_pll_wr(AR724X_PLL_REG_PCIE_CONFIG, ppl);
+		dev_info(apc->dev, "hw_init: PLL step 4/4 - write OK\n");
 	}
 
 	/* deassert the reset state of the PCIE endpoint */
 	rst = __raw_readl(apc->ctrl_base + AR724X_PCI_REG_RESET);
 	rst |= AR724X_PCI_RESET_EP_RESET_L;
 	__raw_writel(rst, apc->ctrl_base + AR724X_PCI_REG_RESET);
+	dev_info(apc->dev, "hw_init: deassert the reset state of the PCIE endpoint - LTSSM enabled\n");
+	dev_info(apc->dev, "hw_init: endpoint reset deasserted (REG_RESET=0x%08x)\n",
+		 __raw_readl(apc->ctrl_base + AR724X_PCI_REG_RESET));
 
 	/* set PCIE Application Control to ready */
 	app = __raw_readl(apc->ctrl_base + AR724X_PCI_REG_APP);
 	app |= AR724X_PCI_APP_LTSSM_ENABLE;
 	__raw_writel(app, apc->ctrl_base + AR724X_PCI_REG_APP);
+	dev_info(apc->dev, "hw_init: set PCIE Application Control to ready - LTSSM enabled\n");
+	dev_info(apc->dev, "hw_init: LTSSM enabled (REG_APP=0x%08x)\n",
+		 __raw_readl(apc->ctrl_base + AR724X_PCI_REG_APP));
 
 	/* wait up to 100ms for PHY link up */
+	dev_info(apc->dev, "hw_init: polling for link up (max 100 ms)...\n");
+			 
 	do {
 		mdelay(10);
 		wait++;
+		dev_info(apc->dev, "hw_init: link poll %d/10 - REG_RESET=0x%08x link=%s\n",
+			 wait, __raw_readl(apc->ctrl_base + AR724X_PCI_REG_RESET),
+			 ar724x_pci_check_link(apc) ? "UP" : "DOWN");
 	} while (wait < 10 && !ar724x_pci_check_link(apc));
+			 
+	/*if (ar724x_pci_check_link(apc)) {
+		dev_info(apc->dev, "hw_init: link is UP after %d ms\n", wait * 10);
+		return true;
+	}
+
+	dev_warn(apc->dev, "hw_init: link is DOWN after %d ms\n", wait * 10);
+	return false;*/
 }
 
 static int ar724x_pci_probe(struct platform_device *pdev)
@@ -401,6 +440,8 @@
 			    GFP_KERNEL);
 	if (!apc)
 		return -ENOMEM;
+	
+	apc->dev = &pdev->dev;
 
 	apc->ctrl_base = devm_platform_ioremap_resource_byname(pdev, "ctrl_base");
 	if (IS_ERR(apc->ctrl_base))

and here the last part of the log:

[   16.385239] calling  sync_state_resume_initcall+0x0/0x20 @ 1
[   16.391115] initcall sync_state_resume_initcall+0x0/0x20 returned 0 after 2 usecs
[   16.398867] calling  deferred_probe_initcall+0x0/0xc0 @ 1
[   16.411347] ar724x-pci 18250000.pcie: hw_init: === START PCIe initialization ===
[   16.419056] ar724x-pci 18250000.pcie: hw_init: deassert HC...
[   16.425002] ar724x-pci 18250000.pcie: OK
[   16.429058] ar724x-pci 18250000.pcie: hw_init: deassert PHY...
[   16.435098] ar724x-pci 18250000.pcie: OK
[   16.439150] ar724x-pci 18250000.pcie: hw_init: AR724X node
[   16.444825] ar724x-pci 18250000.pcie: hw_init: PLL step 1/4 - reading PCIE_CONFIG
[   16.452552] ar724x-pci 18250000.pcie: hw_init: PLL step 1/4 - read OK, value=0x00010000
[   16.460831] ar724x-pci 18250000.pcie: hw_init: PLL step 2/4 - writing PCIE_CONFIG=0x00010000 (clear PWD+RESET)
[   16.471170] ar724x-pci 18250000.pcie: hw_init: PLL step 2/4 - write OK
[   16.477917] ar724x-pci 18250000.pcie: hw_init: PLL step 3/4 - reading PCIE_CONFIG
[   16.485648] ar724x-pci 18250000.pcie: hw_init: PLL step 3/4 - read OK, value=0x00010000
[   16.493919] ar724x-pci 18250000.pcie: hw_init: PLL step 4/4 - writing PCIE_CONFIG=0x00000000 (clear BYPASS)

As u can see the code blocks at this line of code of the pci-ar724x.c file:

ath79_pll_wr(AR724X_PLL_REG_PCIE_CONFIG, ppl);

Anybody as any idea why? With other hardware like TP-Link Archer A9 v6 (which has same chips, QCA5502+QCN9984) it works. With the fritzrepeater2400 no....