Commit Graph

269 Commits

Author SHA1 Message Date
Robert Marko
fb90296c32 qualcommax: ipq50xx: spi-qpic-snand: default to 4-bit ECC
There are NAND IC-s that define 1-bit ECC as the minimal strength,
however that is unsupported by QPIC-SNAND as it only supports 4 or 8 bit
ECC.

Since most of these chips also support 4-bit ECC just fine, instead of
erroring out if 1-bit ECC is requested lets instead default to 4-bit ECC.

Fixes: 01b72ce61e ("qualcommax: ipq50xx: remove ECC user config from board files")
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18795
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-16 17:57:40 +02:00
Robert Marko
91e9a1d221 qualcommax: add 6.12 as testing kernel
Allow testing 6.12 as the testing kernel.

Link: https://github.com/openwrt/openwrt/pull/18795
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-16 17:57:40 +02:00
Robert Marko
fc4eaa34f8 qualcommax: 6.12: MPD: add missing <linux/of_platform.h>
It seems that kernel cleaned up its kernels so we need to include
<linux/of_platform.h> for of_platform_device_create().

Link: https://github.com/openwrt/openwrt/pull/18795
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-16 17:57:40 +02:00
Robert Marko
2018a61211 qualcommax: 6.12: pwm: use devm_clk_get_enabled()
Using devm_clk_get_enabled() allows simplification of the driver and
dropping of the .remove OP as well.

Link: https://github.com/openwrt/openwrt/pull/18795
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-16 17:57:40 +02:00
Robert Marko
93697be03c qualcommax: 6.12: pwm: fixup for 6.12
6.12 PWM core introduced a bunch of incompatible changes, namely removal
of manual module owner assignment, complete PWM struct allocation and usage
refactor, etc.

So, update the driver to follow other drivers in 6.12 so it compiles.

Link: https://github.com/openwrt/openwrt/pull/18795
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-16 17:57:40 +02:00
Robert Marko
427522d1de qualcommax: 6.12: cpr: update for 6.12
Remove op is now of a void type and strlcpy was removed.

Link: https://github.com/openwrt/openwrt/pull/18795
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-16 17:57:40 +02:00
Robert Marko
b152f7ba22 qualcommax: 6.12: apm: change remove to void
Remove op is now of a void type, update APM.

Link: https://github.com/openwrt/openwrt/pull/18795
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-16 17:57:40 +02:00
Robert Marko
d2774a55c3 qualcommax: 6.12: refresh config
Refresh kernel config by running kernel_menuconfig.

Manually enable CONFIG_HW_RANDOM and CONFIG_CRYPTO_DEV_QCOM_RNG as these
got somehow disabled by the refresh.

Link: https://github.com/openwrt/openwrt/pull/18795
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-16 17:57:40 +02:00
Robert Marko
a2de324e14 qualcommax: 6.12: refresh patches
Refresh 6.12 patches, those that failed automatic refresh were refreshed
manually.

DT bindings patches that failed were dropped as we dont use them in practice.

Link: https://github.com/openwrt/openwrt/pull/18795
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-16 17:57:40 +02:00
Robert Marko
dbf9c83e7a qualcommax: 6.12: drop upstreamed patches
Drop patches that are already present in kernel 6.12.

Link: https://github.com/openwrt/openwrt/pull/18795
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-16 17:57:40 +02:00
Robert Marko
6d1f4b2077 kernel/qualcommax: Restore kernel files for v6.6
This is an automatically generated commit which aids following Kernel patch
history, as git will see the move and copy as a rename thus defeating the
purpose.

For the original discussion see:
https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html

Link: https://github.com/openwrt/openwrt/pull/18795
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-16 17:57:40 +02:00
Robert Marko
e40daa5b99 kernel/qualcommax: Create kernel files for v6.12 (from v6.6)
This is an automatically generated commit.

When doing `git bisect`, consider `git bisect --skip`.

Link: https://github.com/openwrt/openwrt/pull/18795
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-16 17:57:40 +02:00
Paweł Owoc
86a6c550b9 qualcommax: dts: fix missing or empty reg property warning
Remove property 'status = "disabled"' for partitions in Zyxel NBG7815.
This option is mainly used for NAND memory and here we have SPI memory.

Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18787
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-15 18:29:00 +02:00
Paweł Owoc
af021c1285 qualcommax: dts: fix property has invalid length warning
Fix "property has invalid length" warning for two devices:
- TP-Link EAP620 HD v1
- Zyxel NBG7815

Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18787
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-15 18:29:00 +02:00
Robert Marko
ca51f7aaf5 qualcommax: ipq60xx: fix EAP625-Outdoor HD BDF package name
Currently, non existing ipq-wifi package name is selected for
EAP625-Outdoor HD, so correct the name.

Fixes: 51c1ea08d0 ("qualcommax: ipq60xx: add TP-Link EAP625-Outdoor HD v1 support")
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-15 14:57:14 +02:00
Alexandru Gagniuc
51c1ea08d0 qualcommax: ipq60xx: add TP-Link EAP625-Outdoor HD v1 support
TP-Link EAP625-Outdoor HD is a 802.11ax AP claiming AX1800 support.
It is wall or pole mountable, and rated for outdoor use. It can only
be powered via PoE.

Hardware-wise, it is very similar to the older EAP610-Outdoor model.
Software-wise, I couldn't find a difference other than the board
data files, and device name. For this reason, the majority of the
devicetree from the EAP610-Outdoor is reused.

This device currently comes in a "v1", and "v1.6" version. The
"support-list" of the vendor firmware does not have a distinction
between these versions. This commit was tested on a 'V1.6" device.

Specifications:
---------------
* CPU: Qualcomm IPQ6018 Quad core Cortex-A53
* RAM: 512 MB
* Storage: 128MB NAND
* Ethernet:
  * Gigabit RJ45 port with PoE input
* WLAN:
  * 2.4GHz/5GHz
* LEDs:
  * Multi-color System LED (Green/Amber)
* Buttons:
  * 1x Reset
* UART: 4-pin unpopulated header
  * 1.8 V level, Pinout 1 - TX, 2 - RX, 3 - GND, 4 - 1.8V

Installation:
=============

Web UI method
-------------

Set up the device using the vendor's web UI. After that go to
Management->SSH and enable the "SSH Login" checkbox. Select "Save".
The connect to the machine via SSH:

ssh -o hostkeyalgorithms=ssh-rsa <ip_of_device>

Disable signature verification:

cliclientd stopcs

Rename the "-web-ui-factory" image to something less than 63
characters, maintaining the ".bin" suffix.
 * Go to System -> Firmware Update.
 * Under "New Firmware File", click "Browse" and select the image
 * Select "Update" and confirm by clicking "OK".

If the update fails, the web UI should show an error message.
Otherwise, the device should reboot into OpenWRT.

NOTE: If ssh continues to complain that "no matching host key type
found. Their offer: ssh-rsa,ssh-dss" it likely means that yor distro
has completely disabled deprecated siphers in ssh. In that case, run
the ssh command from a docker container of an older distro.

TFTP method
-----------

To flash via tftp, first place the initramfs image on the TFTP server.

setenv serverip <ip of tftp server>
setenv ipaddr <ip in same subnet as tftp server>
tftpboot tplink_eap625-outdoor-hd-v1-initramfs-uImage.itb
bootm

This should boot OpenWRT. Once booted, flash the sysupgrade.bin image
using either luci or the commandline.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18584
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-14 19:38:25 +02:00
Alexandru Gagniuc
c75223338f qualcommax: ipq60xx: eap6xx-outdoor: add PHY reset pinctrl
It was suggested that the pinctrl property of the mdio node should
include the PHY reset GPIO. Add them in.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18584
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-14 19:38:25 +02:00
Alexandru Gagniuc
7be36c20f1 qualcommax: ipq60xx: split eap610-outdoor devicetree
I have an EAP625-Outdoor HD v1 that is very similar with the EAP610
Outdoor. It works with the EAP610 initramfs, without any obvious loss
of functionality. In order to prepare for supporting the EAP625, move
the common parts into a shared .dtsi.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18584
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-14 19:38:25 +02:00
Robert Marko
9d15c1a020 qualcommax: ipq50xx: add PCI path migration script
PCI paths of IPQ50xx devices have changed now that linux,pci-domain is set
in the DTSI, so add a migration script for wireless config.

Link: https://github.com/openwrt/openwrt/pull/18789
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-13 19:58:22 +02:00
Robert Marko
cfbfdd9ca6 qualcommax: ipq50xx: update PCI path for caldata
Now that IPQ50xx PCIe nodes have linux,pci-domain property defined
it changed the PCI path, but its now predictable and fixed.

So, update the caldata script accordingly.

Link: https://github.com/openwrt/openwrt/pull/18789
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-13 19:58:22 +02:00
Robert Marko
1e20f7b6c6 qualcommax: fix PCIe card wifi node address
Unlike other buses, for PCIe child nodes we should not use "wifi@1,0" as
the bus adress since for PCI devices the actual device adress on the bus is
actually set via the "reg" property and the node name is unused completely.

Though, it will cause DTC to throw warnings, so after investigation and
similar issue upstream[1] simply set the nodes to "wifi@0,0" instead.

[1] https://lists.infradead.org/pipermail/linux-arm-kernel/2021-August/680846.html

Link: https://github.com/openwrt/openwrt/pull/18789
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-13 19:58:22 +02:00
Robert Marko
487fc2ec96 qualcommax: remove PCIe bridge nodes
PCIe bridge nodes are now present in the SoC DTSI, so drop our downstream
ones as otherwise ath1*k BDF matching will fail.

Link: https://github.com/openwrt/openwrt/pull/18789
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-13 19:58:22 +02:00
Robert Marko
5e0bbd3670 qualcommax: ipq50xx: add missing bus-range to PCIe bridges
It seems that bus-range property was missed for the PCIe bridges on
IPQ50xx, thus causing DTC to warn on any bus adress used on nodes
under the PCIe bridges.

Link: https://github.com/openwrt/openwrt/pull/18789
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-13 19:58:22 +02:00
Robert Marko
8aad4cd43d qualcommax: ipq50xx: use latest v9 PCIe DTS patch
Use the latest v9 PCIe DTS patch that is pending upstream, notable change
being that it includes PCIe bridge nodes.

Link: https://github.com/openwrt/openwrt/pull/18789
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-13 19:58:22 +02:00
Robert Marko
2c2808a71a qualcommax: ipq807x, ipq60xx: backport DTS PCIe bridge node
Currently, we manually define PCI bridge nodes in devices that use
PCI cards, etc.

But since we will need to rework this for 6.12 anyway since upstream added
the PCIe bridge nodes[1][2] lets backport it now.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/arch/arm64/boot/dts/qcom/ipq8074.dtsi?h=v6.12.28&id=ed3893f6f9b800ca774f63810c5f8838bc7cee78
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/arch/arm64/boot/dts/qcom/ipq6018.dtsi?h=v6.12.28&id=52358c64937e982d3cdcf64be58f08f30d8e518c

Link: https://github.com/openwrt/openwrt/pull/18789
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-13 19:58:22 +02:00
INAGAKI Hiroshi
8fb46725cf qualcommax: ipq50xx: fix NAND ECC for ELECOM WRC-X3000GS2
Specify 4-bit ECC strength instead of 8-bit, to resolve NAND I/O errors
on ELECOM WRC-X3000GS2.

ELECOM WRC-X3000GS2 has a Macronix MX35UF1G24AD SPI-NAND chip as a flash
storage. That chip is registered as a chip that has 128 bytes OOB and
requires 8-bit ECC, and described as the same in the Macronix's datasheet.

But on WRC-X3000GS2, 8-bit ECC breaks NAND I/O on mtdblock devices with
the following errors and 4-bit ECC needs to be used to resolve this issue.

current (ECC strength=8):

```
[    1.401566] 0x000000480000-0x000000500000 : "0:appsblenv"
[    1.407128] 1 fixed-partitions partitions found on MTD device 0:appsblenv
[    1.410663] Creating 1 MTD partitions on "0:appsblenv":
[    1.417359] 0x000000000000-0x000000040000 : "env-data"
[    1.479865] u-boot-env-layout: probe of 79b0000.qpic-nand:flash@0:partitions:partition-0-appsblenv:partition@0:nvmem-layout failed with error -74

root@OpenWrt:~# strings /dev/mtdblock10
[   55.693754] mtdblock: MTD device '0:appsblenv' is NAND, please consider using UBI block devices instead.
[   55.694660] I/O error, dev mtdblock10, sector 0 op 0x0:(READ) flags 0x80700 phys_seg 4 prio class 2
[   55.703147] I/O error, dev mtdblock10, sector 8 op 0x0:(READ) flags 0x80700 phys_seg 3 prio class 2
[   55.711884] I/O error, dev mtdblock10, sector 16 op 0x0:(READ) flags 0x80700 phys_seg 2 prio class 2
[   55.720778] I/O error, dev mtdblock10, sector 24 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 2
[   55.730310] I/O error, dev mtdblock10, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
[   55.738607] Buffer I/O error on dev mtdblock10, logical block 0, async page read
```

after fixing (ECC strength=4):

```
[    1.402301] 0x000000480000-0x000000500000 : "0:appsblenv"
[    1.407909] 1 fixed-partitions partitions found on MTD device 0:appsblenv
[    1.411370] Creating 1 MTD partitions on "0:appsblenv":
[    1.418075] 0x000000000000-0x000000040000 : "env-data"
(no error)

root@OpenWrt:~# strings /dev/mtdblock10
[   39.131008] mtdblock: MTD device '0:appsblenv' is NAND, please consider using UBI block devices instead.
bootcmd=bootipq
baudrate=115200
wifi2=7C:F8:54:01:BD:F3
CRASH_COUNT=0
...

```

Fixes: 01b72ce61e ("qualcommax: ipq50xx: remove ECC user config from board files")
Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18770
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-10 12:14:18 +02:00
Robert Marko
b2fa7e4b9d qualcommax: use upstreamed IPQ5018 PCI support
Instead of downstream patch, use the upstreamed version.
Makes it easy to update to 6.12.

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-08 21:03:47 +02:00
Robert Marko
5337627ca4 qualcommax: use upstream QMP pipe patch
Passing QMP pipe clocks was upstreamed, but it requires conversion single
QMP node, so backport both of those instead of our downstream patch.

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-08 18:53:34 +02:00
Robert Marko
0b07da92f5 qualcommax: renumber upstreamed patches
In order to free up some more number space, simply renumber existing
upstreamed patches starting from 0 again.

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-08 17:53:37 +02:00
George Moussalem
01b72ce61e qualcommax: ipq50xx: remove ECC user config from board files
With the spi-qpic-snand driver now supporting reading ECC requirements
from the NAND chip itself, there's no need to set those in the DTS
anymore avoiding issues with devices of the same revision using
different NAND types with varying ECC requirements.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18723
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-08 15:40:03 +02:00
George Moussalem
c5e359a236 spi: spi-qpic-snand: update driver with latest patches from upstream
Updating the spi-qpic-snand driver with the latest patches sent
upstream and remove custom patches.
These patches add error handling fixes, use of right read location in
read ops, removal of unused variable, ability to read user config and
nand chip requirements, and support for 8bits ECC strength.

Tested on: Gl.iNet GL-B3000 & Linksys MR5500, MX2000, MX5500, SPNMX56

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18723
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-08 15:40:03 +02:00
Robert Marko
cc50cac8a0 qualcommax: use upstreamed multiple conf clock patches
Multiple conf support was upstreamed into kernel 6.10, so lets use the
upstreamed patches and mark them as so.

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-08 13:28:52 +02:00
Robert Marko
d0234d4a29 qualcommax: update kernel version for MP5496 patches
MP5496 patches are not part of 6.15, but rather will be part of 6.16 as
they are no in 6.15 RC releases but they are in linux-next.

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-08 12:19:32 +02:00
Scott Mercer
e31738e83d qualcommax: ipq50xx: gl-b3000: add 03_set_oem_name
This additional board.d script creates the "/tmp/sysinfo/oem_name" file
and populates it with the proper OEM "supported_devices" metadata entry
to be used by the new fwtool.sh oem detection feature.

(#18554): add oem image dectection to fwtool.sh

Signed-off-by: Scott Mercer <TheRootEd24@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18656
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-07 10:45:03 +02:00
John Audia
fbcd547a44 kernel: bump 6.6 to 6.6.89
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.89

All patches automatically rebased.

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/18607
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-05-03 19:57:53 +02:00
Rosen Penev
aec2de120f qualcommax: remoteproc: use remove_new
Easy compability fix for kernel 6.12.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18660
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-05-02 01:34:23 +02:00
Rosen Penev
d183da890b qualcommax: pwm: use remove_new
Easy compability fix for kernel 6.12.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18660
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-05-02 01:34:21 +02:00
George Moussalem
d879e59823 qualcommax: ipq50xx: fix DTB warning in USB node of Linksys MR5500
Fix DTB warning when compiling an image by adding the missing hash sign
of adress-cells in the usb_dwc node.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18672
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-01 20:40:24 +02:00
George Moussalem
a0fa3ed36f qualcommax: ipq50xx: fix ECC strength for Linksys MR5500
Commit fc3ff2af0c introduced reading
ECC strength from the device tree. Linksys MR5500 uses the mx-base dtsi
which was originally developed for Linksys MX2000 and MX5500 where the
ECC strength is set to 8. Correct this and set it to strength of 4 as
per the NAND specs for Gigadevice GD5F2GQ5REYIH.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18672
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-01 20:40:24 +02:00
George Moussalem
2259807d81 Revert "qualcommax: ipq50xx: fix GE_PHY and Uniphy resets"
This reverts commit 34e5bc4af54d366147a83904c094d54fec7fb025.

While fixing support for 2.5Gbps mode on uniphy in phy to phy link
setups, it inadvertently broke fixed link scenario. So let's revert this
commit until there's a fix that doesn't impact fixed links.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18668
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-01 20:13:54 +02:00
Scott Mercer
6d4ded04ac qualcommax: ipq5018: glinet_gl-b3000: fix kernel alignment
fixes the following warning seen in bootlog

	"Kernel image misaligned at boot, please fix your bootloader!"

Fixes: 3307fe8 ("qualcommax: ipq50xx: add support for GL.iNET GL-B3000")

Signed-off-by: Scott Mercer <TheRootEd24@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18658
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-01 20:11:16 +02:00
George Moussalem
028d8d4275 qualcommax: ipq50xx: fix GE_PHY and Uniphy resets
Fix the resets of the GE_PHY and Uniphy found on the IPQ5018 SoC.
Bitmasks are used to perform multiple resets simultaneously, including
the RX and TX clocks. This enables the Uniphy to properly shift between
SGMII/1G and SGMII+/2.5G modes.

While at it, properly reorder the patches, and rename some to follow
naming standards.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18638
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-30 11:27:33 +02:00
George Moussalem
31e56f0340 qualcommax: ipq50xx: fix ipq5018 GE PHY and tidy up mdio nodes
As part of the previous commit to add the #clock-cells property to the
GE PHY, the PHY was inadvertently moved under the second mdio node in
the dtsi, and therefore broke the init sequence as the driver was trying
to use the wrong mdio bus to set the init values (ex. DAC, MSE, and AZ).
So let's move it back under the right mdio node and, while at it, pad
the register addresses to 8 hex numbers and re-order properties in line
with Linux DTS coding standards.

Fixes: 6782d0e66f
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18634
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-29 14:54:59 +02:00
Erik Servili
f84cac4654 qualcommax: ipq60xx: LED mapping update for Netgear WAX610 and WAX610Y
Fix swapped WLAN LEDs and move to blue LEDs to match stock behavior. Add LAN LED mappings.

Signed-off-by: Erik Servili <serverror@serverror.com>
Link: https://github.com/openwrt/openwrt/pull/18624
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-29 14:53:56 +02:00
INAGAKI Hiroshi
f22d872c65 qualcommax: ipq50xx: drop unused factory.ubi for ELECOM WRC-X3000GS2
Drop the firmware image entry "factory.ubi" from IMAGES for ELECOM
WRC-X3000GS2.
`Device/UbiFit` is added in the early stage of working for adding
support of the device, but finally, only `KERNEL_IN_UBI` is neccesary
and factory.ubi is not. So `Device/UbiFit` should have been replaced
to `KERNEL_IN_UBI` but it was forgotten.

Fixes: 3b7d72bc2e ("qualcommax: add support for ELECOM WRC-X3000GS2")
Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18611
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-27 11:14:31 +02:00
INAGAKI Hiroshi
aa6d245e39 qualcommax: fix ECC strength of SPI-NAND flash on GL-iNet GL-B3000
Fix nand-ecc-strength property in the spi-nand node of GL-iNet GL-B3000
to 4, to solve the following ECC error on that spi-nand chip.

[    1.551618] ubi0: attaching mtd11
[    1.552331] ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 64 bytes from PEB 0:0, read only 64 bytes, retry
[    1.554455] ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 64 bytes from PEB 0:0, read only 64 bytes, retry
[    1.565931] ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 64 bytes from PEB 0:0, read only 64 bytes, retry
[    1.576568] ubi0 error: ubi_io_read: error -74 (ECC error) while reading 64 bytes from PEB 0:0, read 64 bytes
[    1.587146] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.6.87 #0
[    1.597153] Hardware name: GL.iNet GL-B3000 (DT)
[    1.602881] Call trace:
[    1.607739]  dump_backtrace+0xa0/0xe0
[    1.609910]  show_stack+0x18/0x24
[    1.613728]  dump_stack_lvl+0x48/0x60
[    1.617027]  dump_stack+0x18/0x24
[    1.620672]  ubi_io_read+0x11c/0x32c
[    1.623972]  ubi_io_read_ec_hdr+0x50/0x1f0
[    1.627618]  ubi_attach+0x35c/0x133c
[    1.631524]  ubi_attach_mtd_dev+0x494/0xaf4
[    1.635257]  ubi_init_attach+0xac/0x2e4
[    1.639163]  do_one_initcall+0x6c/0x1fc
[    1.642983]  kernel_init_freeable+0x204/0x2e4
[    1.646803]  kernel_init+0x28/0x1dc
[    1.651316]  ret_from_fork+0x10/0x20

The GL-B3000 has a Winbond W25N01GW and the spare size (oobsize) of it
is 64. So the maximum available ECC strength with the qpic-snand driver
is 4 but not 8.
The "nand-ecc-strength" property was not used before the commit
fc3ff2af0c ("qualcommax: allow overriding ECC strength for qpic-snand")
and calculated from the registered spare size in the Linux Kernel. As a
result, we had no issues on the GL-B3000 with the wrong ECC strength
value.

Fixes: 3307fe8ee4 ("qualcommax: ipq50xx: add support for GL.iNET GL-B3000")
Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18595
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-25 12:17:25 +02:00
INAGAKI Hiroshi
3b7d72bc2e qualcommax: add support for ELECOM WRC-X3000GS2
ELECOM WRC-X3000GS2 is a 2.4/5 GHz band 11ax (Wi-Fi 6) router, based on
IPQ5018.

Specification:

- SoC             : Qualcomm IPQ5018
- RAM             : DDR3 256 MiB (Zentel A3T2GF40CBF-HP)
- Flash           : SPI-NAND 128 MiB (Macronix MX35UF1G24AD-Z4I)
- WLAN            : 2.4/5 GHz 2T2R
  - 2.4 GHz       : Qualcomm IPQ5018 (SoC)
  - 5 GHz         : Qualcomm Atheros QCN6102
- Ethernet        : 5x 10/100/1000 Mbps
  - wan (phy)     : Qualcomm IPQ5018 (SoC)
  - lan (switch)  : Qualcomm Atheros QCA8337
- LEDs/Keys (GPIO): 8x/3x
- UART            : through-hole on PCB, 4pins near the barcode
  - assignment    : 3.3V, TX, RX, NC, GND from the barcode side
  - settings      : 115200n8
- Power           : 12 VDC, 1 A (Max. 11.5W)

Flash instruction using initramfs-factory.bin image:

1. Boot WRC-X3000GS2 normally with router mode
2. Access to the WebUI ("http://192.168.2.1/") on the device and open
   the firmware update page ("ファームウェア更新")
3. Select the OpenWrt factory.bin image and click apply ("適用") button
4. Wait ~120 seconds to complete flashing

Switching to the stock firmware:

1. Load the elecom.sh script

   . /lib/upgrade/elecom.sh

2. Check the current index of rootfs

   bootconfig_rw_index 0:bootconfig rootfs

3. Set the index to inverted value

   bootconfig_rw_index 0:bootconfig rootfs <value>
   bootconfig_rw_index 0:bootconfig1 rootfs <value>

   example:

   - step2 returned "0":

     bootconfig_rw_index 0:bootconfig rootfs 1
     bootconfig_rw_index 0:bootconfig1 rootfs 1

   - step2 returned "1":

     bootconfig_rw_index 0:bootconfig rootfs 0
     bootconfig_rw_index 0:bootconfig1 rootfs 0

4. Reboot

Partition Layout (Stock FW):

0x000000000000-0x000000080000 : "0:SBL1"
0x000000080000-0x000000100000 : "0:MIBIB"
0x000000100000-0x000000140000 : "0:BOOTCONFIG"
0x000000140000-0x000000180000 : "0:BOOTCONFIG1"
0x000000180000-0x000000280000 : "0:QSEE"
0x000000280000-0x000000380000 : "0:QSEE_1"
0x000000380000-0x0000003c0000 : "0:DEVCFG"
0x0000003c0000-0x000000400000 : "0:DEVCFG_1"
0x000000400000-0x000000440000 : "0:CDT"
0x000000440000-0x000000480000 : "0:CDT_1"
0x000000480000-0x000000500000 : "0:APPSBLENV"
0x000000500000-0x000000640000 : "0:APPSBL"
0x000000640000-0x000000780000 : "0:APPSBL_1"
0x000000780000-0x000000880000 : "0:ART"
0x000000880000-0x000000900000 : "0:TRAINING"
0x000000900000-0x000003c40000 : "rootfs"
0x000003c40000-0x000003fc0000 : "Config"
0x000003fc0000-0x000007300000 : "rootfs_1"
0x000007300000-0x000007680000 : "Config_2"
0x000007680000-0x000007b80000 : "Reserved"
0x000007b80000-0x000007c00000 : "FWHEADER"
0x000007c00000-0x000007c80000 : "Factory"

Known Issues:

- All Wi-Fi related peripherals are disabled.
  This device has only 256 MiB RAM and it's too few for ath11k. To
  prevent OOM when using LuCI or other softwares, disable Wi-Fi related
  peripherals in device tree at the moment.

- This device has a Macronix MX35UF1G24AD SPI-NAND chip registered as
  oobsize=128 in Linux Kernel. But using BCH8 breaks I/O on the chip
  with the following errors, so this support uses BCH4 instead.

  root@OpenWrt:~# strings /dev/mtdblock10
  [26427.133154] mtdblock: MTD device '0:appsblenv' is NAND, please consider using UBI block devices instead.
  [26427.134125] I/O error, dev mtdblock10, sector 0 op 0x0:(READ) flags 0x80700 phys_seg 4 prio class 2
  [26427.142240] I/O error, dev mtdblock10, sector 8 op 0x0:(READ) flags 0x80700 phys_seg 3 prio class 2
  [26427.151427] I/O error, dev mtdblock10, sector 16 op 0x0:(READ) flags 0x80700 phys_seg 2 prio class 2
  [26427.160440] I/O error, dev mtdblock10, sector 24 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 2
  [26427.169619] I/O error, dev mtdblock10, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
  [26427.178083] Buffer I/O error on dev mtdblock10, logical block 0, async page read

Notes:

- This device has dual-boot feature and it's managed by the index in the
  0:bootconfig and 0:bootconfig1 partitions.

MAC Addresses:

LAN    : 38:97:A4:xx:xx:60 (0:APPSBLENV, "eth1addr"/"ethaddr"  (text))
WAN    : 38:97:A4:xx:xx:63 (0:APPSBLENV, "eth0addr" (text))
2.4 GHz: 38:97:A4:xx:xx:61 (0:APPSBLENV, "wifi0"    (text))
5 GHz  : 38:97:A4:xx:xx:62 (0:APPSBLENV, "wifi1"    (text))

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18543
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-22 20:58:29 +02:00
INAGAKI Hiroshi
fc3ff2af0c qualcommax: allow overriding ECC strength for qpic-snand
Make the ECC strength in the qpic-snand driver configurable via device
tree to use the device-specific ECC strength value.

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18543
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-22 20:58:29 +02:00
jonathan brophy
8da24b1109 Qualcommax: IPQ807x: Add support for TP-Link Deco X80-5G
The TP-link Deco X80-5G is a AX WIFI router with a single 1G (LAN) and 1 2.5G (WAN) port with a built in Quectel 5G modem.

Specifications:

Architecture	ARMv8-A (aarch64 Cortex A53, 4 cores)
Vendor	Qualcomm
Bootloader	U-Boot (2016)
System-On-Chip	Qualcomm IPQ8074A (Networking Pro 1210 platform)
CPU/Speed	2.2GHZ
Flash-Chip	ESMT F59D1G81MB-45TI 1G-bit NAND
Flash MB	128MB (1Gbit)
RAM-chip	2* ESMT M15T4G16256A-DEBG2G 2Gb DDR3L (32bit)
RAM MB	512MB (4Gbit)
WLan System-On-Chip (5g)	Qualcomm QCN5054
WLan Front end modules (5g)	8* Qorvo QPF4588
WLAN (5G)	A/N/AC/AX
WLAN Antenna (int)	8* (4 shared with 2.5G)
WLan System-On-Chip (2.4G)	Qualcomm QCN5024
WLan Front end modules (2.4G)	4* Skyworks SKY85340-11
WLAN (2.4G)	B/G/N/AX
WLAN Antenna (int)	4* (shared with 5g)
Eithernet-phy (1Gbit)	Qualcomm (Atheros) AR8033-AL1A
Ethernet (1Gbit)	1*
Eithernet-phy (2.5Gbit)	Qualcomm QCA8081
Ethernet (2.5Gbit)	1*
Switch	Embedded in the SOC?
Serial	1.8v 8n1 (testpoints)
Modem System-On-Chip	Qualcomm 5G RG50xQ (Snapdragon X55 platform)
5G modem capability	5000Mbps down 900Mbps up
5G modem bands	N1/N3/N5/N7/N8/N20/N28/N38/N40/N41/N77/N78/N79
4G modem capability	4.5G LTE-Advanced Pro (Cat20 down 2Gbps) (Cat18 up 200Mbps)
4G modem FDD bands	B1/B3/B5/B7/B8/B18/B19/B20/B26/B28
4G modem TDD bands	B34/B38/B39/B40/B41/B42/B43
Modem antenna (int)	8* (5G/4G use)
Modem antenna (ext)	2* SMA connectors (5G/4G use)
SIM type	1* Nano SIM
Telephony	1* POTS RJ11
(see wiki for more info:)
https://openwrt.org/inbox/toh/tp-link/x80-5g_v1

        Notes:
Installation Instructions:

Between antennas 7 and 8 on the PCB with the RGB harness there are three test pads labelled TP1 TP2 and TP3 connections are as follows:
  |TP2|-- RX
  |TP1|-- TX
  |TP3|-- GND

RX requires an external pullup to operate somewhere around 5 K ohm but your luck may vary the Uart is 1.8v

Set a static IP and set up a tftpserver and terminal.
power the router and quickly type the magic string “tpl” and press enter to break into u-boot
in the shell set the environment variables to enable tftp booting
setenv ipaddr (routerIP)
setenv serverip (server IP)
load you initramfs:
tftpboot 0x44000000 (serverIP):openwrt-qualcommax-ipq807x-tplink_x80-5g-initramfs-uImage.itb
boot your initramfs
bootm
upload your factory image to /tmp
format and install the factory image:
ubiformat /dev/mtd12 -y -f /tmp/openwrt-qualcommax-ipq807x-tplink_x80-5g-squashfs-factory.ubi

Note as this device swaps root partitions upon update your boot partition may be set as mtd13

Update script to mount factory tplink partition's for MAC recovery and device data.
Capture Labelmac from Factory_data partition.
Patch LAN from Labelmac.
Patch ART from Labelmac.
Set GPIO to make modem operational from boot.

GPIO fan tables work like the  stock device with three fan maps high active idle with a top fan speed of 6800 RPM.

High temp 70 deg speeds 6-8
Active temp 50 deg speeds 2-5
low temp 25 degree speed 0-1

Signed-off-by: jonathan brophy <professor_jonny@hotmail.com>
Link: https://github.com/openwrt/openwrt/pull/16329
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-22 13:25:40 +02:00
jonathan brophy
6180724737 Qualcommax: IPQ807x: update preinit factory partition mount script
Patch script used for mounting of factory data partitions to not assume devices names or use hardcoded identifiers.

Signed-off-by: jonathan brophy <professor_jonny@hotmail.com>
Link: https://github.com/openwrt/openwrt/pull/16329
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-22 13:25:40 +02:00