diff mbox series

[OpenWrt-Devel,v2,3/3] ipq40xx: add support for FritzBox 7530

Message ID 20190218225834.28100-3-mail@david-bauer.net
State Accepted, archived
Delegated to: Christian Lamparter
Headers show
Series None | expand

Commit Message

David Bauer Feb. 18, 2019, 10:58 p.m. UTC
Hardware
--------
CPU:   Qualcomm IPQ4019
RAM:   256M
FLASH: 128M NAND
ETH:   QCA8075
VDSL:  Intel/Lantiq VRX518 PCIe attached
       currently not supported
DECT:  Dialog SC14448
       currently not supported
WiFi2: IPQ4019 2T2R 2SS b/g/n
WiFi5: IPQ4019 2T2R 2SS n/ac
LED:    - Power/DSL green
        - WLAN green
        - FON/DECT green
        - Connect/WPS green
        - Info green
        - Info red
BTN:    - WLAN
        - FON
        - WPS/Connect
UART:  115200n8 3.3V (located under the Dialog chip)
       VCC - RX - TX - GND (Square is VCC)

Installation
------------
1. Grab the uboot for the Device from the 'u-boot-fritz7530'
   subdirectory. Place it in the same directory as the 'eva_ramboot.py'
   script. It is located in the 'scripts/flashing' subdirectory of the
   OpenWRT tree.

2. Assign yourself the IP address 192.168.178.10/24. Connect your
   Computer to one of the boxes LAN ports.

3. Connect Power to the Box. As soon as the LAN port of your computer
   shows link, load the U-Boot to the box using following command.

   > ./eva_ramboot.py --offset 0x85000000 192.168.178.1 uboot-fritz7530.bin

4. The U-Boot will now start. Now assign yourself the IP address
   192.168.1.70/24. Copy the OpenWRT initramfs (!) image to a TFTP
   server root directory and rename it to 'FRITZ7530.bin'.

5. The Box will now boot OpenWRT from RAM. This can take up to two
   minutes.

6. Copy the U-Boot and the OpenWRT sysupgrade (!) image to the Box using
   scp. SSH into the Box and first write the Bootloader to both previous
   kernel partitions.

   > mtd write /path/to/uboot-fritz7530.bin uboot0
   > mtd write /path/to/uboot-fritz7530.bin uboot1

7. Remove the AVM filesystem partitions to make room for our kernel +
   rootfs + overlayfs.

   > ubirmvol /dev/ubi0 --name=avm_filesys_0
   > ubirmvol /dev/ubi0 --name=avm_filesys_1

8. Flash OpenWRT peristently using sysupgrade.

   > sysupgrade -n /path/to/openwrt-sysupgrade.bin

Signed-off-by: David Bauer <mail@david-bauer.net>
---
v2:
 - add PCIe subnode so VRX518 is detected on the PCIe bus
   - driver is still missing
 - add fallback onto uboot1 partition for the caldata
 - adjust caldata size so no padding is extracted
 - reordered 01_leds
 - remove gpio52 from nand pinmux
 - fixed wrong label on SBL1 partition
 - drop 'qcom,ipq4019' compatible

 package/boot/uboot-fritz4040/Makefile         |   7 +-
 package/firmware/ipq-wifi/Makefile            |   3 +-
 package/firmware/ipq-wifi/board-fritz7530.bin | Bin 0 -> 24324 bytes
 .../ipq40xx/base-files/etc/board.d/01_leds    |   7 +-
 .../ipq40xx/base-files/etc/board.d/02_network |   4 +
 .../etc/hotplug.d/firmware/11-ath10k-caldata  |   8 +
 .../base-files/lib/upgrade/platform.sh        |   3 +-
 .../boot/dts/qcom-ipq4019-fritzbox-7530.dts   | 305 +++++++++++++++++
 .../boot/dts/qcom-ipq4019-fritzbox-7530.dts   | 309 ++++++++++++++++++
 target/linux/ipq40xx/image/Makefile           |   9 +
 .../901-arm-boot-add-dts-files.patch          |   3 +-
 .../901-arm-boot-add-dts-files.patch          |   3 +-
 12 files changed, 653 insertions(+), 8 deletions(-)
 create mode 100644 package/firmware/ipq-wifi/board-fritz7530.bin
 create mode 100644 target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
 create mode 100644 target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts

Comments

Christian Lamparter Feb. 20, 2019, 5:02 p.m. UTC | #1
On Monday, February 18, 2019 11:58:34 PM CET David Bauer wrote:
> diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
> new file mode 100644
> index 0000000000..b2a33468bb
> --- /dev/null
> +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
> @@ -0,0 +1,305 @@
> +&pcie0 {
> +	status = "okay";
> +
> +	ranges = <0x81000000 0 0x40200000 0x40200000
> +			0 0x00100000   /* downstream I/O */
> +			0x82000000 0 0x48000000 0x48000000
> +			0 0x10000000>; /* non-prefetchable memory */

Let me dig out my MR33 (will have to wait until the Weekend) and see if this
should be put into the qcom-ipq4019.dtsi as well.

> +
> +	perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
> +	wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
> +
> +	bridge@0,0 {
> +		reg = <0x00000000 0 0 0 0>;
> +		#address-cells = <3>;
> +		#size-cells = <2>;
> +		ranges;
> +
> +		dsl@1,0 {
> +			compatible = "intel,vrx518";
> +			status = "okay";
> +			reg = <0x00010000 0 0 0 0>;
> +		};
> +	};
> +};
Christian Lamparter Feb. 25, 2019, 10:10 p.m. UTC | #2
On Wednesday, February 20, 2019 6:02:21 PM CET Christian Lamparter wrote:
> On Monday, February 18, 2019 11:58:34 PM CET David Bauer wrote:
> > diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
> > new file mode 100644
> > index 0000000000..b2a33468bb
> > --- /dev/null
> > +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
> > @@ -0,0 +1,305 @@
> > +&pcie0 {
> > +	status = "okay";
> > +
> > +	ranges = <0x81000000 0 0x40200000 0x40200000
> > +			0 0x00100000   /* downstream I/O */
> > +			0x82000000 0 0x48000000 0x48000000
> > +			0 0x10000000>; /* non-prefetchable memory */
> 
> Let me dig out my MR33 (will have to wait until the Weekend) and see if this
> should be put into the qcom-ipq4019.dtsi as well.

And it didn't work. While the pcie enumeration worked fine. 
The QCA9887 was no longer attaching. As soon as the driver was
loaded it failed due to:

[    8.888466] ath10k_pci 0000:01:00.0: enabling device (0140 -> 0142)
[    8.934145] ath10k_pci 0000:01:00.0: failed to wake up device : -110
[    8.935258] ath10k: failed to probe PCI : -110, retry-count: 0
[    8.949596] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
[    8.989503] ath10k_pci 0000:01:00.0: failed to wake up device : -110
[    8.989899] ath10k: failed to probe PCI : -110, retry-count: 1
[    9.005086] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
[    9.046821] ath10k_pci 0000:01:00.0: failed to wake up device : -110
[    9.049851] ath10k: failed to probe PCI : -110, retry-count: 2
[    9.062448] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
[    9.099055] ath10k_pci 0000:01:00.0: failed to wake up device : -110
[    9.099442] ath10k: failed to probe PCI : -110, retry-count: 3
[...]
[    9.489869] ath10k: failed to probe PCI : -110, retry-count: 10
[    9.503780] ath10k_pci: probe of 0000:01:00.0 failed with error -110
[...]

But I think we can fix the problem. Because according to the old
qcom-ipq40xx.dtsi I dug up:

<https://github.com/gl-inet/openwrt-imagebuilder-ipq806x/blob/master/build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/linux-ipq806x/linux-3.14.77/arch/arm/boot/dts/qcom-ipq40xx.dtsi#L631>

The non-prefetchable memory area window size should be 0x00d00000.

	ranges =	<0x81000000 0 0x40200000 0x40200000 0 0x00100000>, /* downstream I/O */
				<0x82000000 0 0x40300000 0x40300000 0 0x00d00000>; /* non-prefetchable memory */

(yes, I'll be preparing a patch for linux-msm-arm. Can you please let
me know if does indeed finally let you enumerate the device?)

> > +
> > +	perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
> > +	wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
> > +
> > +	bridge@0,0 {
> > +		reg = <0x00000000 0 0 0 0>;
> > +		#address-cells = <3>;
> > +		#size-cells = <2>;
> > +		ranges;
> > +
> > +		dsl@1,0 {
> > +			compatible = "intel,vrx518";
> > +			status = "okay";
> > +			reg = <0x00010000 0 0 0 0>;
> > +		};
> > +	};
> > +};


Regards,
Christian
David Bauer Feb. 25, 2019, 11:15 p.m. UTC | #3
Hello Christian,

On 25.02.19 23:10, Christian Lamparter wrote:
> On Wednesday, February 20, 2019 6:02:21 PM CET Christian Lamparter wrote:
>> On Monday, February 18, 2019 11:58:34 PM CET David Bauer wrote:
>>> diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>>> new file mode 100644
>>> index 0000000000..b2a33468bb
>>> --- /dev/null
>>> +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>>> @@ -0,0 +1,305 @@
>>> +&pcie0 {
>>> +	status = "okay";
>>> +
>>> +	ranges = <0x81000000 0 0x40200000 0x40200000
>>> +			0 0x00100000   /* downstream I/O */
>>> +			0x82000000 0 0x48000000 0x48000000
>>> +			0 0x10000000>; /* non-prefetchable memory */
>>
>> Let me dig out my MR33 (will have to wait until the Weekend) and see if this
>> should be put into the qcom-ipq4019.dtsi as well.
> 
> And it didn't work. While the pcie enumeration worked fine. 
> The QCA9887 was no longer attaching. As soon as the driver was
> loaded it failed due to:
> 
> [    8.888466] ath10k_pci 0000:01:00.0: enabling device (0140 -> 0142)
> [    8.934145] ath10k_pci 0000:01:00.0: failed to wake up device : -110
> [    8.935258] ath10k: failed to probe PCI : -110, retry-count: 0
> [    8.949596] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
> [    8.989503] ath10k_pci 0000:01:00.0: failed to wake up device : -110
> [    8.989899] ath10k: failed to probe PCI : -110, retry-count: 1
> [    9.005086] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
> [    9.046821] ath10k_pci 0000:01:00.0: failed to wake up device : -110
> [    9.049851] ath10k: failed to probe PCI : -110, retry-count: 2
> [    9.062448] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
> [    9.099055] ath10k_pci 0000:01:00.0: failed to wake up device : -110
> [    9.099442] ath10k: failed to probe PCI : -110, retry-count: 3
> [...]
> [    9.489869] ath10k: failed to probe PCI : -110, retry-count: 10
> [    9.503780] ath10k_pci: probe of 0000:01:00.0 failed with error -110
> [...]
> 
> But I think we can fix the problem. Because according to the old
> qcom-ipq40xx.dtsi I dug up:
> 
> <https://github.com/gl-inet/openwrt-imagebuilder-ipq806x/blob/master/build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/linux-ipq806x/linux-3.14.77/arch/arm/boot/dts/qcom-ipq40xx.dtsi#L631>
> 
> The non-prefetchable memory area window size should be 0x00d00000.
> 
> 	ranges =	<0x81000000 0 0x40200000 0x40200000 0 0x00100000>, /* downstream I/O */
> 				<0x82000000 0 0x40300000 0x40300000 0 0x00d00000>; /* non-prefetchable memory */
> 
> (yes, I'll be preparing a patch for linux-msm-arm. Can you please let
> me know if does indeed finally let you enumerate the device?)

It seems to work with your proposed change:

[    0.042117] OF: PCI: host bridge /soc/pci@40000000 ranges:
[    0.042152] OF: PCI:    IO 0x40200000..0x402fffff -> 0x40200000
[    0.042171] OF: PCI:   MEM 0x40300000..0x40ffffff -> 0x40300000
[    0.259505] qcom-pcie 40000000.pci: link up
[    0.259649] qcom-pcie 40000000.pci: PCI host bridge to bus 0000:00
[    0.259671] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.259687] pci_bus 0000:00: root bus resource [io  0x0000-0xfffff]
(bus address [0x40200000-0x402fffff])
[    0.259700] pci_bus 0000:00: root bus resource [mem
0x40300000-0x40ffffff]
[    0.259742] pci 0000:00:00.0: [17cb:1001] type 01 class 0x060400
[    0.259776] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00000fff 64bit]
[    0.259829] pci 0000:00:00.0: PME# supported from D0 D3hot
[    0.260015] PCI: bus0: Fast back to back transfers disabled
[    0.260195] pci 0000:01:00.0: [8086:09a9] type 00 class 0x028000
[    0.260312] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x007fffff]
[    0.260790] pci 0000:01:00.0: supports D1 D2
[    0.260797] pci 0000:01:00.0: PME# supported from D0 D1 D3hot D3cold
[    0.261043] PCI: bus1: Fast back to back transfers disabled
[    0.261095] pci 0000:00:00.0: BAR 8: assigned [mem 0x40800000-0x40ffffff]
[    0.261112] pci 0000:00:00.0: BAR 0: assigned [mem
0x40300000-0x40300fff 64bit]
[    0.261136] pci 0000:01:00.0: BAR 0: assigned [mem 0x40800000-0x40ffffff]
[    0.261164] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    0.261180] pci 0000:00:00.0:   bridge window [mem 0x40800000-0x40ffffff]
[    0.261891] pcieport 0000:00:00.0: AER enabled with IRQ 93

See
https://github.com/blocktrron/openwrt/commit/cc1a94b2e1616d33698852df38ae23f72f193b74

How should we proceed on this device? Should i resend a v3 or will you
remove the ranges property and backport the patch you prepare for upstream?

Best wishes
David

> 
>>> +
>>> +	perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
>>> +	wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
>>> +
>>> +	bridge@0,0 {
>>> +		reg = <0x00000000 0 0 0 0>;
>>> +		#address-cells = <3>;
>>> +		#size-cells = <2>;
>>> +		ranges;
>>> +
>>> +		dsl@1,0 {
>>> +			compatible = "intel,vrx518";
>>> +			status = "okay";
>>> +			reg = <0x00010000 0 0 0 0>;
>>> +		};
>>> +	};
>>> +};
> 
> 
> Regards,
> Christian
> 
>
Christian Lamparter Feb. 26, 2019, 10:17 p.m. UTC | #4
Hello David,

On Tuesday, February 26, 2019 12:15:41 AM CET David Bauer wrote:
> On 25.02.19 23:10, Christian Lamparter wrote:
> > On Wednesday, February 20, 2019 6:02:21 PM CET Christian Lamparter wrote:
> >> On Monday, February 18, 2019 11:58:34 PM CET David Bauer wrote:
> >>> diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
> >>> new file mode 100644
> >>> index 0000000000..b2a33468bb
> >>> --- /dev/null
> >>> +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
> >>> @@ -0,0 +1,305 @@
> >>> +&pcie0 {
> >>> +	status = "okay";
> >>> +
> >>> +	ranges = <0x81000000 0 0x40200000 0x40200000
> >>> +			0 0x00100000   /* downstream I/O */
> >>> +			0x82000000 0 0x48000000 0x48000000
> >>> +			0 0x10000000>; /* non-prefetchable memory */
> >>
> >> Let me dig out my MR33 (will have to wait until the Weekend) and see if this
> >> should be put into the qcom-ipq4019.dtsi as well.
> > 
> > And it didn't work. While the pcie enumeration worked fine. 
> > The QCA9887 was no longer attaching. As soon as the driver was
> > loaded it failed due to:
> > 
> > [    8.888466] ath10k_pci 0000:01:00.0: enabling device (0140 -> 0142)
> > [    8.934145] ath10k_pci 0000:01:00.0: failed to wake up device : -110
> > [    8.935258] ath10k: failed to probe PCI : -110, retry-count: 0
> > [    8.949596] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
> > [    8.989503] ath10k_pci 0000:01:00.0: failed to wake up device : -110
> > [    8.989899] ath10k: failed to probe PCI : -110, retry-count: 1
> > [    9.005086] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
> > [    9.046821] ath10k_pci 0000:01:00.0: failed to wake up device : -110
> > [    9.049851] ath10k: failed to probe PCI : -110, retry-count: 2
> > [    9.062448] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
> > [    9.099055] ath10k_pci 0000:01:00.0: failed to wake up device : -110
> > [    9.099442] ath10k: failed to probe PCI : -110, retry-count: 3
> > [...]
> > [    9.489869] ath10k: failed to probe PCI : -110, retry-count: 10
> > [    9.503780] ath10k_pci: probe of 0000:01:00.0 failed with error -110
> > [...]
> > 
> > But I think we can fix the problem. Because according to the old
> > qcom-ipq40xx.dtsi I dug up:
> > 
> > <https://github.com/gl-inet/openwrt-imagebuilder-ipq806x/blob/master/build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/linux-ipq806x/linux-3.14.77/arch/arm/boot/dts/qcom-ipq40xx.dtsi#L631>
> > 
> > The non-prefetchable memory area window size should be 0x00d00000.
> > 
> > 	ranges =	<0x81000000 0 0x40200000 0x40200000 0 0x00100000>, /* downstream I/O */
> > 				<0x82000000 0 0x40300000 0x40300000 0 0x00d00000>; /* non-prefetchable memory */
> > 
> > (yes, I'll be preparing a patch for linux-msm-arm. Can you please let
> > me know if does indeed finally let you enumerate the device?)
> 
> It seems to work with your proposed change:
> 
> [    0.042117] OF: PCI: host bridge /soc/pci@40000000 ranges:
> [    0.042152] OF: PCI:    IO 0x40200000..0x402fffff -> 0x40200000
> [    0.042171] OF: PCI:   MEM 0x40300000..0x40ffffff -> 0x40300000
> [    0.259505] qcom-pcie 40000000.pci: link up
> [    0.259649] qcom-pcie 40000000.pci: PCI host bridge to bus 0000:00
> [    0.259671] pci_bus 0000:00: root bus resource [bus 00-ff]
> [    0.259687] pci_bus 0000:00: root bus resource [io  0x0000-0xfffff]
> (bus address [0x40200000-0x402fffff])
> [    0.259700] pci_bus 0000:00: root bus resource [mem
> 0x40300000-0x40ffffff]
> [    0.259742] pci 0000:00:00.0: [17cb:1001] type 01 class 0x060400
> [    0.259776] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00000fff 64bit]
> [    0.259829] pci 0000:00:00.0: PME# supported from D0 D3hot
> [    0.260015] PCI: bus0: Fast back to back transfers disabled
> [    0.260195] pci 0000:01:00.0: [8086:09a9] type 00 class 0x028000
> [    0.260312] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x007fffff]
> [    0.260790] pci 0000:01:00.0: supports D1 D2
> [    0.260797] pci 0000:01:00.0: PME# supported from D0 D1 D3hot D3cold
> [    0.261043] PCI: bus1: Fast back to back transfers disabled
> [    0.261095] pci 0000:00:00.0: BAR 8: assigned [mem 0x40800000-0x40ffffff]
> [    0.261112] pci 0000:00:00.0: BAR 0: assigned [mem
> 0x40300000-0x40300fff 64bit]
> [    0.261136] pci 0000:01:00.0: BAR 0: assigned [mem 0x40800000-0x40ffffff]
> [    0.261164] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
> [    0.261180] pci 0000:00:00.0:   bridge window [mem 0x40800000-0x40ffffff]
> [    0.261891] pcieport 0000:00:00.0: AER enabled with IRQ 93
> 
> See
> https://github.com/blocktrron/openwrt/commit/cc1a94b2e1616d33698852df38ae23f72f193b74
> 
> How should we proceed on this device? Should i resend a v3 or will you
> remove the ranges property and backport the patch you prepare for upstream?

Sorry for the late reply, I added a rebased version
on top of the latest changes) into my staging tree:
https://git.openwrt.org/?p=openwrt/staging/chunkeey.git;a=commit;h=206a40911118f24c062ccdfc24dfc3fdd653c71a 

And it turned out that there was also a pcie msi irq fix
https://git.openwrt.org/?p=openwrt/staging/chunkeey.git;a=commit;h=307f6a6ed6cfca4c0d3cb5dc4dc5493ec3f41e1c
it just goes on and on and on...

Regards,
Christian
David Bauer Feb. 27, 2019, 12:03 p.m. UTC | #5
Hello Christian,

On 26.02.19 23:17, Christian Lamparter wrote:
> Hello David,
> 
> On Tuesday, February 26, 2019 12:15:41 AM CET David Bauer wrote:
>> On 25.02.19 23:10, Christian Lamparter wrote:
>>> On Wednesday, February 20, 2019 6:02:21 PM CET Christian Lamparter wrote:
>>>> On Monday, February 18, 2019 11:58:34 PM CET David Bauer wrote:
>>>>> diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>>>>> new file mode 100644
>>>>> index 0000000000..b2a33468bb
>>>>> --- /dev/null
>>>>> +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>>>>> @@ -0,0 +1,305 @@
>>>>> +&pcie0 {
>>>>> +	status = "okay";
>>>>> +
>>>>> +	ranges = <0x81000000 0 0x40200000 0x40200000
>>>>> +			0 0x00100000   /* downstream I/O */
>>>>> +			0x82000000 0 0x48000000 0x48000000
>>>>> +			0 0x10000000>; /* non-prefetchable memory */
>>>>
>>>> Let me dig out my MR33 (will have to wait until the Weekend) and see if this
>>>> should be put into the qcom-ipq4019.dtsi as well.
>>>
>>> And it didn't work. While the pcie enumeration worked fine. 
>>> The QCA9887 was no longer attaching. As soon as the driver was
>>> loaded it failed due to:
>>>
>>> [    8.888466] ath10k_pci 0000:01:00.0: enabling device (0140 -> 0142)
>>> [    8.934145] ath10k_pci 0000:01:00.0: failed to wake up device : -110
>>> [    8.935258] ath10k: failed to probe PCI : -110, retry-count: 0
>>> [    8.949596] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
>>> [    8.989503] ath10k_pci 0000:01:00.0: failed to wake up device : -110
>>> [    8.989899] ath10k: failed to probe PCI : -110, retry-count: 1
>>> [    9.005086] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
>>> [    9.046821] ath10k_pci 0000:01:00.0: failed to wake up device : -110
>>> [    9.049851] ath10k: failed to probe PCI : -110, retry-count: 2
>>> [    9.062448] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
>>> [    9.099055] ath10k_pci 0000:01:00.0: failed to wake up device : -110
>>> [    9.099442] ath10k: failed to probe PCI : -110, retry-count: 3
>>> [...]
>>> [    9.489869] ath10k: failed to probe PCI : -110, retry-count: 10
>>> [    9.503780] ath10k_pci: probe of 0000:01:00.0 failed with error -110
>>> [...]
>>>
>>> But I think we can fix the problem. Because according to the old
>>> qcom-ipq40xx.dtsi I dug up:
>>>
>>> <https://github.com/gl-inet/openwrt-imagebuilder-ipq806x/blob/master/build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/linux-ipq806x/linux-3.14.77/arch/arm/boot/dts/qcom-ipq40xx.dtsi#L631>
>>>
>>> The non-prefetchable memory area window size should be 0x00d00000.
>>>
>>> 	ranges =	<0x81000000 0 0x40200000 0x40200000 0 0x00100000>, /* downstream I/O */
>>> 				<0x82000000 0 0x40300000 0x40300000 0 0x00d00000>; /* non-prefetchable memory */
>>>
>>> (yes, I'll be preparing a patch for linux-msm-arm. Can you please let
>>> me know if does indeed finally let you enumerate the device?)
>>
>> It seems to work with your proposed change:
>>
>> [    0.042117] OF: PCI: host bridge /soc/pci@40000000 ranges:
>> [    0.042152] OF: PCI:    IO 0x40200000..0x402fffff -> 0x40200000
>> [    0.042171] OF: PCI:   MEM 0x40300000..0x40ffffff -> 0x40300000
>> [    0.259505] qcom-pcie 40000000.pci: link up
>> [    0.259649] qcom-pcie 40000000.pci: PCI host bridge to bus 0000:00
>> [    0.259671] pci_bus 0000:00: root bus resource [bus 00-ff]
>> [    0.259687] pci_bus 0000:00: root bus resource [io  0x0000-0xfffff]
>> (bus address [0x40200000-0x402fffff])
>> [    0.259700] pci_bus 0000:00: root bus resource [mem
>> 0x40300000-0x40ffffff]
>> [    0.259742] pci 0000:00:00.0: [17cb:1001] type 01 class 0x060400
>> [    0.259776] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00000fff 64bit]
>> [    0.259829] pci 0000:00:00.0: PME# supported from D0 D3hot
>> [    0.260015] PCI: bus0: Fast back to back transfers disabled
>> [    0.260195] pci 0000:01:00.0: [8086:09a9] type 00 class 0x028000
>> [    0.260312] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x007fffff]
>> [    0.260790] pci 0000:01:00.0: supports D1 D2
>> [    0.260797] pci 0000:01:00.0: PME# supported from D0 D1 D3hot D3cold
>> [    0.261043] PCI: bus1: Fast back to back transfers disabled
>> [    0.261095] pci 0000:00:00.0: BAR 8: assigned [mem 0x40800000-0x40ffffff]
>> [    0.261112] pci 0000:00:00.0: BAR 0: assigned [mem
>> 0x40300000-0x40300fff 64bit]
>> [    0.261136] pci 0000:01:00.0: BAR 0: assigned [mem 0x40800000-0x40ffffff]
>> [    0.261164] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
>> [    0.261180] pci 0000:00:00.0:   bridge window [mem 0x40800000-0x40ffffff]
>> [    0.261891] pcieport 0000:00:00.0: AER enabled with IRQ 93
>>
>> See
>> https://github.com/blocktrron/openwrt/commit/cc1a94b2e1616d33698852df38ae23f72f193b74
>>
>> How should we proceed on this device? Should i resend a v3 or will you
>> remove the ranges property and backport the patch you prepare for upstream?
> 
> Sorry for the late reply, I added a rebased version
> on top of the latest changes) into my staging tree:
> https://git.openwrt.org/?p=openwrt/staging/chunkeey.git;a=commit;h=206a40911118f24c062ccdfc24dfc3fdd653c71a 
> 
> And it turned out that there was also a pcie msi irq fix
> https://git.openwrt.org/?p=openwrt/staging/chunkeey.git;a=commit;h=307f6a6ed6cfca4c0d3cb5dc4dc5493ec3f41e1c
> it just goes on and on and on...
> 

Thanks! I will test an image built from your staging tree this evening
and give feedback.

Best wishes
David

> Regards,
> Christian
> 
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
>
David Bauer Feb. 27, 2019, 10:29 p.m. UTC | #6
Hello Christian,

On 27.02.19 13:03, David Bauer wrote:
> Hello Christian,
> 
> On 26.02.19 23:17, Christian Lamparter wrote:
>> Hello David,
>>
>> On Tuesday, February 26, 2019 12:15:41 AM CET David Bauer wrote:
>>> On 25.02.19 23:10, Christian Lamparter wrote:
>>>> On Wednesday, February 20, 2019 6:02:21 PM CET Christian Lamparter wrote:
>>>>> On Monday, February 18, 2019 11:58:34 PM CET David Bauer wrote:
>>>>>> diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>>>>>> new file mode 100644
>>>>>> index 0000000000..b2a33468bb
>>>>>> --- /dev/null
>>>>>> +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>>>>>> @@ -0,0 +1,305 @@
>>>>>> +&pcie0 {
>>>>>> +	status = "okay";
>>>>>> +
>>>>>> +	ranges = <0x81000000 0 0x40200000 0x40200000
>>>>>> +			0 0x00100000   /* downstream I/O */
>>>>>> +			0x82000000 0 0x48000000 0x48000000
>>>>>> +			0 0x10000000>; /* non-prefetchable memory */
>>>>>
>>>>> Let me dig out my MR33 (will have to wait until the Weekend) and see if this
>>>>> should be put into the qcom-ipq4019.dtsi as well.
>>>>
>>>> And it didn't work. While the pcie enumeration worked fine.
>>>> The QCA9887 was no longer attaching. As soon as the driver was
>>>> loaded it failed due to:
>>>>
>>>> [    8.888466] ath10k_pci 0000:01:00.0: enabling device (0140 -> 0142)
>>>> [    8.934145] ath10k_pci 0000:01:00.0: failed to wake up device : -110
>>>> [    8.935258] ath10k: failed to probe PCI : -110, retry-count: 0
>>>> [    8.949596] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
>>>> [    8.989503] ath10k_pci 0000:01:00.0: failed to wake up device : -110
>>>> [    8.989899] ath10k: failed to probe PCI : -110, retry-count: 1
>>>> [    9.005086] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
>>>> [    9.046821] ath10k_pci 0000:01:00.0: failed to wake up device : -110
>>>> [    9.049851] ath10k: failed to probe PCI : -110, retry-count: 2
>>>> [    9.062448] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
>>>> [    9.099055] ath10k_pci 0000:01:00.0: failed to wake up device : -110
>>>> [    9.099442] ath10k: failed to probe PCI : -110, retry-count: 3
>>>> [...]
>>>> [    9.489869] ath10k: failed to probe PCI : -110, retry-count: 10
>>>> [    9.503780] ath10k_pci: probe of 0000:01:00.0 failed with error -110
>>>> [...]
>>>>
>>>> But I think we can fix the problem. Because according to the old
>>>> qcom-ipq40xx.dtsi I dug up:
>>>>
>>>> <https://github.com/gl-inet/openwrt-imagebuilder-ipq806x/blob/master/build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/linux-ipq806x/linux-3.14.77/arch/arm/boot/dts/qcom-ipq40xx.dtsi#L631>
>>>>
>>>> The non-prefetchable memory area window size should be 0x00d00000.
>>>>
>>>> 	ranges =	<0x81000000 0 0x40200000 0x40200000 0 0x00100000>, /* downstream I/O */
>>>> 				<0x82000000 0 0x40300000 0x40300000 0 0x00d00000>; /* non-prefetchable memory */
>>>>
>>>> (yes, I'll be preparing a patch for linux-msm-arm. Can you please let
>>>> me know if does indeed finally let you enumerate the device?)
>>>
>>> It seems to work with your proposed change:
>>>
>>> [    0.042117] OF: PCI: host bridge /soc/pci@40000000 ranges:
>>> [    0.042152] OF: PCI:    IO 0x40200000..0x402fffff -> 0x40200000
>>> [    0.042171] OF: PCI:   MEM 0x40300000..0x40ffffff -> 0x40300000
>>> [    0.259505] qcom-pcie 40000000.pci: link up
>>> [    0.259649] qcom-pcie 40000000.pci: PCI host bridge to bus 0000:00
>>> [    0.259671] pci_bus 0000:00: root bus resource [bus 00-ff]
>>> [    0.259687] pci_bus 0000:00: root bus resource [io  0x0000-0xfffff]
>>> (bus address [0x40200000-0x402fffff])
>>> [    0.259700] pci_bus 0000:00: root bus resource [mem
>>> 0x40300000-0x40ffffff]
>>> [    0.259742] pci 0000:00:00.0: [17cb:1001] type 01 class 0x060400
>>> [    0.259776] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00000fff 64bit]
>>> [    0.259829] pci 0000:00:00.0: PME# supported from D0 D3hot
>>> [    0.260015] PCI: bus0: Fast back to back transfers disabled
>>> [    0.260195] pci 0000:01:00.0: [8086:09a9] type 00 class 0x028000
>>> [    0.260312] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x007fffff]
>>> [    0.260790] pci 0000:01:00.0: supports D1 D2
>>> [    0.260797] pci 0000:01:00.0: PME# supported from D0 D1 D3hot D3cold
>>> [    0.261043] PCI: bus1: Fast back to back transfers disabled
>>> [    0.261095] pci 0000:00:00.0: BAR 8: assigned [mem 0x40800000-0x40ffffff]
>>> [    0.261112] pci 0000:00:00.0: BAR 0: assigned [mem
>>> 0x40300000-0x40300fff 64bit]
>>> [    0.261136] pci 0000:01:00.0: BAR 0: assigned [mem 0x40800000-0x40ffffff]
>>> [    0.261164] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
>>> [    0.261180] pci 0000:00:00.0:   bridge window [mem 0x40800000-0x40ffffff]
>>> [    0.261891] pcieport 0000:00:00.0: AER enabled with IRQ 93
>>>
>>> See
>>> https://github.com/blocktrron/openwrt/commit/cc1a94b2e1616d33698852df38ae23f72f193b74
>>>
>>> How should we proceed on this device? Should i resend a v3 or will you
>>> remove the ranges property and backport the patch you prepare for upstream?
>>
>> Sorry for the late reply, I added a rebased version
>> on top of the latest changes) into my staging tree:
>> https://git.openwrt.org/?p=openwrt/staging/chunkeey.git;a=commit;h=206a40911118f24c062ccdfc24dfc3fdd653c71a
>>
>> And it turned out that there was also a pcie msi irq fix
>> https://git.openwrt.org/?p=openwrt/staging/chunkeey.git;a=commit;h=307f6a6ed6cfca4c0d3cb5dc4dc5493ec3f41e1c
>> it just goes on and on and on...
>>
> 
> Thanks! I will test an image built from your staging tree this evening
> and give feedback.

I've built on commit 206a40911118f24c062ccdfc24dfc3fdd653c71a in your 
staging tree and the resulting image works flawlessly.

Best wishes
David

> 
> Best wishes
> David
> 
>> Regards,
>> Christian
>>
>>
>>
>> _______________________________________________
>> openwrt-devel mailing list
>> openwrt-devel@lists.openwrt.org
>> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
>>
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
>
diff mbox series

Patch

diff --git a/package/boot/uboot-fritz4040/Makefile b/package/boot/uboot-fritz4040/Makefile
index 45f211527d..a53b7d010f 100644
--- a/package/boot/uboot-fritz4040/Makefile
+++ b/package/boot/uboot-fritz4040/Makefile
@@ -30,6 +30,11 @@  define U-Boot/fritz4040
   BUILD_DEVICES:=avm_fritzbox-4040
 endef
 
+define U-Boot/fritz7530
+  NAME:=FritzBox 7530
+  BUILD_DEVICES:=avm_fritzbox-7530
+endef
+
 UBOOT_CONFIGURE_VARS += USE_PRIVATE_LIBGCC=yes
 UBOOT_MAKE_FLAGS = USE_PRIVATE_LIBGCC=yes
 export DTC
@@ -56,6 +61,6 @@  define Package/u-boot/install
 	$(INSTALL_BIN) $(PKG_BUILD_DIR)/upload-to-f4040.sh $(1)/
 endef
 
-UBOOT_TARGETS := fritz4040
+UBOOT_TARGETS := fritz4040 fritz7530
 
 $(eval $(call BuildPackage/U-Boot))
diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
index 7c9def8967..695d2f4429 100644
--- a/package/firmware/ipq-wifi/Makefile
+++ b/package/firmware/ipq-wifi/Makefile
@@ -17,7 +17,7 @@  endef
 # Please send a mail with your device-specific board files upstream.
 # You can find instructions and examples on the linux-wireless wiki:
 # <https://wireless.wiki.kernel.org/en/users/drivers/ath10k/boardfiles>
-ALLWIFIBOARDS:=asus_map-ac2200 engenius_eap1300 linksys_ea6350v3
+ALLWIFIBOARDS:=asus_map-ac2200 engenius_eap1300 fritz7530 linksys_ea6350v3
 ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD))
 
 define Package/ipq-wifi-default
@@ -54,6 +54,7 @@  endef
 #$(eval $(call generate-ipq-wifi-package,<devicename>,<filename>,<displayname>))
 $(eval $(call generate-ipq-wifi-package,asus_map-ac2200,board-map-ac2200.bin,ASUS MAP-AC2200))
 $(eval $(call generate-ipq-wifi-package,engenius_eap1300,board-engenius_eap1300.bin,EnGenius EAP1300))
+$(eval $(call generate-ipq-wifi-package,fritz7530,board-fritz7530.bin,AVM FRITZ!Box 7530))
 $(eval $(call generate-ipq-wifi-package,linksys_ea6350v3,board-linksys_ea6350v3.bin,Linksys EA6350v3))
 
 $(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE))))
diff --git a/package/firmware/ipq-wifi/board-fritz7530.bin b/package/firmware/ipq-wifi/board-fritz7530.bin
new file mode 100644
index 0000000000000000000000000000000000000000..905145f1da5ee91c481f30e6bd08b3cf8da0c2ed
GIT binary patch
literal 24324
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
Bh^qhq

literal 0
HcmV?d00001

diff --git a/target/linux/ipq40xx/base-files/etc/board.d/01_leds b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
index 9105bf2452..ec8486aa95 100755
--- a/target/linux/ipq40xx/base-files/etc/board.d/01_leds
+++ b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
@@ -22,15 +22,16 @@  avm,fritzbox-4040)
 	ucidef_set_led_netdev "wan" "WAN" "fritz4040:green:wan" "eth1"
 	ucidef_set_led_switch "lan" "LAN" "fritz4040:green:lan" "switch0" "0x1e"
 	;;
+avm,fritzbox-7530 |\
+glinet,gl-b1300)
+	ucidef_set_led_wlan "wlan" "WLAN" "${boardname}:green:wlan" "phy0tpt"
+	;;
 engenius,eap1300)
 	ucidef_set_led_netdev "lan" "LAN" "${boardname}:blue:lan" "eth0"
 	ucidef_set_led_wlan "wlan2g" "WLAN2G" "${boardname}:blue:wlan2g" "phy0tpt"
 	ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:yellow:wlan5g" "phy1tpt"
 	ucidef_set_led_default "mesh" "MESH" "${boardname}:blue:mesh" "0"
 	;;
-glinet,gl-b1300)
-	ucidef_set_led_wlan "wlan" "WLAN" "${boardname}:green:wlan" "phy0tpt"
-	;;
 netgear,ex6100v2 |\
 netgear,ex6150v2)
 	ucidef_set_led_wlan "wlan2g" "WLAN2G" "ex61x0v2:green:router" "phy0tpt"
diff --git a/target/linux/ipq40xx/base-files/etc/board.d/02_network b/target/linux/ipq40xx/base-files/etc/board.d/02_network
index 43be592071..2fd3d76ed0 100755
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
@@ -32,6 +32,10 @@  ipq40xx_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0u@eth0" "1:lan" "2:lan" "3:lan" "4:lan"
 		;;
+	avm,fritzbox-7530)
+		ucidef_add_switch "switch0" \
+			"0u@eth0" "1:lan" "2:lan" "3:lan" "4:lan"
+		;;
 	compex,wpj428)
 		ucidef_set_interface_lan "eth0 eth1"
 		;;
diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 59a809e792..d9d362598d 100644
--- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -134,6 +134,10 @@  case "$FIRMWARE" in
 	avm,fritzbox-4040)
 		/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
 		;;
+	avm,fritzbox-7530)
+		/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
+		/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
+		;;
 	meraki,mr33)
 		ath10kcal_ubi_extract "ART" 4096 12064
 		ath10kcal_is_caldata_valid "202f" || ath10kcal_extract "ART" 4096 12064
@@ -175,6 +179,10 @@  case "$FIRMWARE" in
 	avm,fritzbox-4040)
 		/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
 		;;
+	avm,fritzbox-7530)
+		/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
+		/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
+		;;
 	meraki,mr33)
 		ath10kcal_ubi_extract "ART" 20480 12064
 		ath10kcal_is_caldata_valid "202f" || ath10kcal_extract "ART" 20480 12064
diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
index f6bc173a76..eb1c64aa49 100644
--- a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
@@ -46,7 +46,8 @@  zyxel_do_upgrade() {
 
 platform_do_upgrade() {
 	case "$(board_name)" in
-	8dev,jalapeno)
+	8dev,jalapeno|\
+	avm,fritzbox-7530)
 		nand_do_upgrade "$ARGV"
 		;;
 	asus,map-ac2200)
diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
new file mode 100644
index 0000000000..b2a33468bb
--- /dev/null
+++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
@@ -0,0 +1,305 @@ 
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+	model = "AVM FRITZ!Box 7530";
+	compatible = "avm,fritzbox-7530";
+
+	aliases {
+		led-boot = &power_green;
+		led-failsafe = &info_red;
+		led-running = &power_green;
+		led-upgrade = &info_green;
+	};
+
+	soc {
+		mdio@90000 {
+			status = "okay";
+		};
+
+		ess-psgmii@98000 {
+			status = "okay";
+		};
+
+		tcsr@1949000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1949000 0x100>;
+			qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+		};
+
+		tcsr@194b000 {
+			compatible = "qcom,tcsr";
+			reg = <0x194b000 0x100>;
+			qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
+		};
+
+		ess_tcsr@1953000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1953000 0x1000>;
+			qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+		};
+
+		tcsr@1957000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1957000 0x100>;
+			qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+		};
+
+		usb3@8af8800 {
+			status = "okay";
+		};
+
+		crypto@8e3a000 {
+			status = "okay";
+		};
+
+		watchdog@b017000 {
+			status = "okay";
+		};
+
+		ess-switch@c000000 {
+			status = "okay";
+		};
+
+		edma@c080000 {
+			status = "okay";
+			qcom,num_gmac = <1>;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		wlan {
+			label = "wlan";
+			gpios = <&tlmm 42 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RFKILL>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&tlmm 41 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+
+		dect {
+			label = "dect";
+			gpios = <&tlmm 43 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_PHONE>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		info_red: info_red {
+			label = "fritzbox-7530:red:info";
+			gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
+		};
+
+		info_green: info {
+			label = "fritzbox-7530:green:info";
+			gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
+		};
+
+		wlan {
+			label = "fritzbox-7530:green:wlan";
+			gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
+		};
+
+		fon {
+			label = "fritzbox-7530:green:fon";
+			gpios = <&tlmm 35 GPIO_ACTIVE_LOW>;
+		};
+
+		power_green: power {
+			label = "fritzbox-7530:green:power";
+			gpios = <&tlmm 39 GPIO_ACTIVE_LOW>;
+		};
+
+		wps {
+			label = "fritzbox-7530:green:wps";
+			gpios = <&tlmm 45 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&tlmm {
+	serial_0_pins: serial_pinmux {
+		mux {
+			pins = "gpio16", "gpio17";
+			function = "blsp_uart0";
+			bias-disable;
+		};
+	};
+
+	nand_pins: nand_pins {
+		pullups {
+			pins = "gpio53", "gpio58", "gpio59";
+			function = "qpic";
+			bias-pull-up;
+		};
+
+		pulldowns {
+			pins = "gpio54", "gpio55", "gpio56",
+				"gpio57", "gpio60", "gpio61",
+				"gpio62", "gpio63", "gpio64",
+				"gpio65", "gpio66", "gpio67",
+				"gpio68", "gpio69";
+			function = "qpic";
+			bias-pull-down;
+		};
+	};
+
+	usb-power {
+		line-name = "enable USB3 power";
+		gpios = <49 GPIO_ACTIVE_HIGH>;
+		gpio-hog;
+		output-high;
+	};
+};
+
+&nand {
+	pinctrl-0 = <&nand_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+	cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
+
+	nand@0 {
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				label = "SBL1";
+				reg = <0x000000 0x80000>;
+				read-only;
+			};
+
+			partition@80000 {
+				label = "MIBIB";
+				reg = <0x080000 0x80000>;
+				read-only;
+			};
+
+			partition@100000 {
+				label = "QSEE";
+				reg = <0x100000 0x80000>;
+				read-only;
+			};
+
+			partition@180000 {
+				label = "CDT";
+				reg = <0x180000 0x40000>;
+				read-only;
+			};
+
+			partition@1c0000 {
+				label = "QSEE_B";
+				reg = <0x1c0000 0x80000>;
+				read-only;
+			};
+
+			partition@240000 {
+				label = "urlader0";
+				reg = <0x240000 0x40000>;
+				read-only;
+			};
+
+			partition@280000 {
+				label = "urlader1";
+				reg = <0x280000 0x40000>;
+				read-only;
+			};
+
+			partition@2c0000 {
+				label = "nand-tffs";
+				reg = <0x2c0000 0x840000>;
+				read-only;
+			};
+
+			partition@b00000 {
+				/* 'kernel1' in AVM firmware */
+				label = "uboot0";
+				reg = <0xb00000 0x400000>;
+			};
+
+			partition@f00000 {
+				/* 'kernel2' in AVM firmware */
+				label = "uboot1";
+				reg = <0xf00000 0x400000>;
+			};
+
+			partition@1300000 {
+				label = "ubi";
+				reg = <0x1300000 0x6d00000>;
+			};
+		};
+	};
+};
+
+&cryptobam {
+	status = "okay";
+};
+
+&blsp_dma {
+	status = "okay";
+};
+
+&blsp1_uart1 {
+	pinctrl-0 = <&serial_0_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+};
+
+&usb3_ss_phy {
+	status = "okay";
+};
+
+&usb3_hs_phy {
+	status = "okay";
+};
+
+&qpic_bam {
+	status = "okay";
+};
+
+&wifi0 {
+	status = "okay";
+	qcom,ath10k-calibration-variant = "AVM-FRITZBox-7530";
+};
+
+&wifi1 {
+	status = "okay";
+	qcom,ath10k-calibration-variant = "AVM-FRITZBox-7530";
+};
+
+&pcie0 {
+	status = "okay";
+
+	ranges = <0x81000000 0 0x40200000 0x40200000
+			0 0x00100000   /* downstream I/O */
+			0x82000000 0 0x48000000 0x48000000
+			0 0x10000000>; /* non-prefetchable memory */
+
+	perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
+	wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
+
+	bridge@0,0 {
+		reg = <0x00000000 0 0 0 0>;
+		#address-cells = <3>;
+		#size-cells = <2>;
+		ranges;
+
+		dsl@1,0 {
+			compatible = "intel,vrx518";
+			status = "okay";
+			reg = <0x00010000 0 0 0 0>;
+		};
+	};
+};
diff --git a/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
new file mode 100644
index 0000000000..7dacf0ad90
--- /dev/null
+++ b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
@@ -0,0 +1,309 @@ 
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+	model = "AVM FRITZ!Box 7530";
+	compatible = "avm,fritzbox-7530";
+
+	aliases {
+		led-boot = &power_green;
+		led-failsafe = &info_red;
+		led-running = &power_green;
+		led-upgrade = &info_green;
+	};
+
+	soc {
+		rng@22000 {
+			status = "okay";
+		};
+
+		mdio@90000 {
+			status = "okay";
+		};
+
+		ess-psgmii@98000 {
+			status = "okay";
+		};
+
+		tcsr@1949000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1949000 0x100>;
+			qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+		};
+
+		tcsr@194b000 {
+			compatible = "qcom,tcsr";
+			reg = <0x194b000 0x100>;
+			qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
+		};
+
+		ess_tcsr@1953000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1953000 0x1000>;
+			qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+		};
+
+		tcsr@1957000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1957000 0x100>;
+			qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+		};
+
+		usb3@8af8800 {
+			status = "okay";
+		};
+
+		crypto@8e3a000 {
+			status = "okay";
+		};
+
+		watchdog@b017000 {
+			status = "okay";
+		};
+
+		ess-switch@c000000 {
+			status = "okay";
+		};
+
+		edma@c080000 {
+			status = "okay";
+			qcom,num_gmac = <1>;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		wlan {
+			label = "wlan";
+			gpios = <&tlmm 42 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RFKILL>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&tlmm 41 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+
+		dect {
+			label = "dect";
+			gpios = <&tlmm 43 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_PHONE>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		info_red: info_red {
+			label = "fritzbox-7530:red:info";
+			gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
+		};
+
+		info_green: info {
+			label = "fritzbox-7530:green:info";
+			gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
+		};
+
+		wlan {
+			label = "fritzbox-7530:green:wlan";
+			gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
+		};
+
+		fon {
+			label = "fritzbox-7530:green:fon";
+			gpios = <&tlmm 35 GPIO_ACTIVE_LOW>;
+		};
+
+		power_green: power {
+			label = "fritzbox-7530:green:power";
+			gpios = <&tlmm 39 GPIO_ACTIVE_LOW>;
+		};
+
+		wps {
+			label = "fritzbox-7530:green:wps";
+			gpios = <&tlmm 45 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&tlmm {
+	serial_0_pins: serial_pinmux {
+		mux {
+			pins = "gpio16", "gpio17";
+			function = "blsp_uart0";
+			bias-disable;
+		};
+	};
+
+	nand_pins: nand_pins {
+		pullups {
+			pins = "gpio53", "gpio58", "gpio59";
+			function = "qpic";
+			bias-pull-up;
+		};
+
+		pulldowns {
+			pins = "gpio54", "gpio55", "gpio56",
+				"gpio57", "gpio60", "gpio61",
+				"gpio62", "gpio63", "gpio64",
+				"gpio65", "gpio66", "gpio67",
+				"gpio68", "gpio69";
+			function = "qpic";
+			bias-pull-down;
+		};
+	};
+
+	usb-power {
+		line-name = "enable USB3 power";
+		gpios = <49 GPIO_ACTIVE_HIGH>;
+		gpio-hog;
+		output-high;
+	};
+};
+
+&nand {
+	pinctrl-0 = <&nand_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+	cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
+
+	nand@0 {
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				label = "SBL1";
+				reg = <0x000000 0x80000>;
+				read-only;
+			};
+
+			partition@80000 {
+				label = "MIBIB";
+				reg = <0x080000 0x80000>;
+				read-only;
+			};
+
+			partition@100000 {
+				label = "QSEE";
+				reg = <0x100000 0x80000>;
+				read-only;
+			};
+
+			partition@180000 {
+				label = "CDT";
+				reg = <0x180000 0x40000>;
+				read-only;
+			};
+
+			partition@1c0000 {
+				label = "QSEE_B";
+				reg = <0x1c0000 0x80000>;
+				read-only;
+			};
+
+			partition@240000 {
+				label = "urlader0";
+				reg = <0x240000 0x40000>;
+				read-only;
+			};
+
+			partition@280000 {
+				label = "urlader1";
+				reg = <0x280000 0x40000>;
+				read-only;
+			};
+
+			partition@2c0000 {
+				label = "nand-tffs";
+				reg = <0x2c0000 0x840000>;
+				read-only;
+			};
+
+			partition@b00000 {
+				/* 'kernel1' in AVM firmware */
+				label = "uboot0";
+				reg = <0xb00000 0x400000>;
+			};
+
+			partition@f00000 {
+				/* 'kernel2' in AVM firmware */
+				label = "uboot1";
+				reg = <0xf00000 0x400000>;
+			};
+
+			partition@1300000 {
+				label = "ubi";
+				reg = <0x1300000 0x6d00000>;
+			};
+		};
+	};
+};
+
+&cryptobam {
+	status = "okay";
+};
+
+&blsp_dma {
+	status = "okay";
+};
+
+&blsp1_uart1 {
+	pinctrl-0 = <&serial_0_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+};
+
+&usb3_ss_phy {
+	status = "okay";
+};
+
+&usb3_hs_phy {
+	status = "okay";
+};
+
+&qpic_bam {
+	status = "okay";
+};
+
+&wifi0 {
+	status = "okay";
+	qcom,ath10k-calibration-variant = "AVM-FRITZBox-7530";
+};
+
+&wifi1 {
+	status = "okay";
+	qcom,ath10k-calibration-variant = "AVM-FRITZBox-7530";
+};
+
+&pcie0 {
+	status = "okay";
+
+	ranges = <0x81000000 0 0x40200000 0x40200000
+			0 0x00100000   /* downstream I/O */
+			0x82000000 0 0x48000000 0x48000000
+			0 0x10000000>; /* non-prefetchable memory */
+
+	perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
+	wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
+
+	bridge@0,0 {
+		reg = <0x00000000 0 0 0 0>;
+		#address-cells = <3>;
+		#size-cells = <2>;
+		ranges;
+
+		dsl@1,0 {
+			compatible = "intel,vrx518";
+			status = "okay";
+			reg = <0x00010000 0 0 0 0>;
+		};
+	};
+};
diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile
index 31468fd758..4b42ca1241 100644
--- a/target/linux/ipq40xx/image/Makefile
+++ b/target/linux/ipq40xx/image/Makefile
@@ -106,6 +106,15 @@  define Device/avm_fritzbox-4040
 endef
 TARGET_DEVICES += avm_fritzbox-4040
 
+define Device/avm_fritzbox-7530
+	$(call Device/FitImageLzma)
+	DEVICE_DTS := qcom-ipq4019-fritzbox-7530
+	DEVICE_TITLE := AVM Fritz!Box 7530
+	DEVICE_PACKAGES := fritz-caldata ipq-wifi-fritz7530
+	IMAGES := sysupgrade.bin
+endef
+TARGET_DEVICES += avm_fritzbox-7530
+
 define Device/compex_wpj428
 	$(call Device/FitImage)
 	DEVICE_DTS := qcom-ipq4028-wpj428
diff --git a/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch b/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
index 20ea3a8449..a528743b69 100644
--- a/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
+++ b/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
@@ -10,7 +10,7 @@  Signed-off-by: John Crispin <john@phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -697,7 +697,23 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -697,7 +697,24 @@ dtb-$(CONFIG_ARCH_QCOM) += \
  	qcom-apq8074-dragonboard.dtb \
  	qcom-apq8084-ifc6540.dtb \
  	qcom-apq8084-mtp.dtb \
@@ -27,6 +27,7 @@  Signed-off-by: John Crispin <john@phrozen.org>
  	qcom-ipq4019-ap.dk01.1-c1.dtb \
 +	qcom-ipq4019-a62.dtb \
 +	qcom-ipq4019-ap.dk04.1-c1.dtb \
++	qcom-ipq4019-fritzbox-7530.dtb \
 +	qcom-ipq4019-map-ac2200.dtb \
 +	qcom-ipq4028-wpj428.dtb \
 +	qcom-ipq4029-gl-b1300.dtb \
diff --git a/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch b/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
index f3472b32c0..050779e5a0 100644
--- a/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
+++ b/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
@@ -10,7 +10,7 @@  Signed-off-by: John Crispin <john@phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -785,11 +785,26 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -785,11 +785,27 @@ dtb-$(CONFIG_ARCH_QCOM) += \
  	qcom-apq8074-dragonboard.dtb \
  	qcom-apq8084-ifc6540.dtb \
  	qcom-apq8084-mtp.dtb \
@@ -30,6 +30,7 @@  Signed-off-by: John Crispin <john@phrozen.org>
  	qcom-ipq4019-ap.dk07.1-c1.dtb \
  	qcom-ipq4019-ap.dk07.1-c2.dtb \
 +	qcom-ipq4019-a62.dtb \
++	qcom-ipq4019-fritzbox-7530.dtb \
 +	qcom-ipq4019-map-ac2200.dtb \
 +	qcom-ipq4028-wpj428.dtb \
 +	qcom-ipq4029-gl-b1300.dtb \