Skip to content

qualcommax: add support for ipq50xx target #17182

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 0 commits into from
Feb 6, 2025

Conversation

georgemoussalem
Copy link
Contributor

@georgemoussalem georgemoussalem commented Dec 6, 2024

Add support for the Qualcomm IPQ50xx SoC as a new sub target under the Qualcomm AX family.
Ethernet and Wifi (both 2.4 and 5Ghz) are fully functional.
In addition, introducing support for two IPQ5018-based devices: Linksys MX2000 (Atlas 6) and MX5500 (Atlas 6 Pro).

I'd like to recognize @hzyitc for his support and contribution!

@github-actions github-actions bot added kernel pull request/issue with Linux kernel related changes core packages pull request/issue for core (in-tree) packages target/qualcommax pull request/issue for qualcommax target labels Dec 6, 2024
@hnyman
Copy link
Contributor

hnyman commented Dec 6, 2024

You are changing the global sysupgrade, hidden in one device specific commit, without any explanation in the commit message.
The sysupgrade changes to base-files should be in a separate commit.

The option you are introducing there for dual-boot devices, flashing to the same partition, might be useful also for other devices/targets (if they are adapted), but I suggest that you rename it. "curr_partition" sounds more like the number of the current partition than a boolean flag. "stay_current_part" or "flash_curr_partition" or something like that might be more clear.

@georgemoussalem
Copy link
Contributor Author

georgemoussalem commented Dec 6, 2024

there's actually a PR for this: #14720
It's very handy and included it, but can take it out if that would be better..

EDIT: removed changes to the global sysupgrade file for now and will await the outcome of the above mentioned PR

@Ansuel
Copy link
Member

Ansuel commented Dec 6, 2024

@georgemoussalem thanks fort the effort but this might take a bit... The main problem is the spi driver... They messed bad with all the specific workaround for specific nand and that is not so acceptable... If we eventually chose those patch are ok I would use the 900 patch number to flag them as HACKS to handle and try to remove in every way possible.

Aside from this, please send the iwinfo patch to the mailing list or git so I can just merge them separately.

@Ansuel
Copy link
Member

Ansuel commented Dec 6, 2024

Also what is the state of wifi? Does it work or it crash as soon as a device disconnects similar to ipq60xx?

@robimarko
Copy link
Contributor

@Ansuel They are up to v14 for the QPIC SPI NAND driver:
https://patchwork.kernel.org/project/linux-arm-msm/cover/20241120091507.1404368-1-quic_mdalam@quicinc.com/

We should probably use the latest version, it works as a spi-mem driver the same way MTK has for its own SPI-NAND engine

@Ansuel
Copy link
Member

Ansuel commented Dec 6, 2024

@robimarko well aware of that and don't ask me how I know it doesn't work... the nandc support is totally missing... the upstream version also lacks all the hacks that are actually needed on devices...

@robimarko
Copy link
Contributor

It did look too easy

@Ansuel
Copy link
Member

Ansuel commented Dec 6, 2024

@robimarko they are actively working on that tho.... just gradually... they understood that it doesn't make sense to push 40 patch series

@robimarko
Copy link
Contributor

It would help for them to actually write in the cover at least that it does not work then, cause from the series it gives the impression that it just works TM

@georgemoussalem
Copy link
Contributor Author

the spi nand driver actually works really well. having said that, it does need the patch @hzyitc created, included in this PR, for BCH8 ECC support, else you'll just run into IO errors, see:

  • 0411-spi-spi-qpic-snand-support-BCH8.patch
    If you'd like me to run any specific tests, let me know. Have written and factory and sysupgrade images and booted from nana plenty of times, without any issues. The devices are now my daily driver.

to robimarko's point, I can update the patch series to V14 and will update the PR accordingly.

wifi is 'pretty stable'. I have had periods of up to two weeks (haven't tested longer) without any crash, while at other times, it crashes in a matter of hours or days. QCN6122 seems much stabler, yet I have experienced random crashes. Seems to be a firmware issue, the version referenced is most stable (2.7.0.1) so far. This is the last crash I captured which seems to be the one you (@Ansuel) are referring to upon a client disconnecting:

Tue Dec 3 09:06:02 2024 daemon.notice hostapd: phy1-ap1: AP-STA-DISCONNECTED bc:f1:xx:xx:xx:xx
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548] qcom-q6-mpd cd00000.remoteproc: fatal error received: err_smem_ver.2.1:
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548] QC Image Version : QC_IMAGE_VERSION_STRING=WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548] Image Variant : IMAGE_VARIANT_STRING=5018.wlanfw2.map_spr_spr_evalQ
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548] ar_wal_peer.c:2899 Assertion is_graceful_to_handle failed param0 :zero,param1 :zero,param2 :zero
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548] Thread ID : 0x0000003b Thread name : WLAN RT0 Process ID : 0x00000003 Process name :wlan2
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548]
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548] Registers:
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548] SP : 0x4d2bb7e8
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548] FP : 0x4d2bb900
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548] PC : 0xd025bc70
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548] SSR : 0x00000000
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548] BADVA : 0x00000000
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548] LR : 0xd00a4494
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548]
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548] StackDump
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548] from:0x4d2bb7e8
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548] to: 0x00000000:
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.060548]
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.113787] remoteproc remoteproc0: crash detected in cd00000.remoteproc: type fatal error
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.136104] remoteproc remoteproc0: handling crash #1 in cd00000.remoteproc
Tue Dec 3 09:06:03 2024 kern.err kernel: [145446.144072] remoteproc remoteproc0: recovering cd00000.remoteproc
Tue Dec 3 09:06:03 2024 kern.info kernel: [145446.159063] remoteproc remoteproc0: stopped remote processor cd00000.remoteproc
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.241894] ath11k b00a040.wifi1: failed to find peer bc:f1:xx:xx:xx:xx on vdev 0 after creation
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.241986] ath11k b00a040.wifi1: failed to find peer vdev_id 0 addr bc:f1:xx:xx:xx:xx in delete
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.249814] ath11k b00a040.wifi1: failed peer bc:f1:xx:xx:xx:xx delete vdev_id 0 fallback ret -22
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.258760] ath11k b00a040.wifi1: Failed to add peer: bc:f1:xx:xx:xx:xx for VDEV: 0
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.267560] ath11k b00a040.wifi1: Failed to add station: bc:f1:xx:xx:xx:xx for VDEV: 0
Tue Dec 3 09:06:03 2024 kern.info kernel: [145446.276226] remoteproc remoteproc0: remote processor cd00000.remoteproc is now up
Tue Dec 3 09:06:03 2024 daemon.notice hostapd: phy1-ap0: STA bc:f1:xx:xx:xx:xx IEEE 802.11: Could not add STA to kernel driver
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.292757] ath11k b00a040.wifi1: failed to update rx tid queue, tid 0 (-108)
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.292812] ath11k b00a040.wifi1: failed to update reo for rx tid 0: -108
Tue Dec 3 09:06:03 2024 kern.info kernel: [145446.298918] phy1-ap1: HW problem - can not stop rx aggregation for bc:f1:xx:xx:xx:xx tid 0
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.351610] ath11k b00a040.wifi1: failed to send WMI_PEER_DELETE cmd
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.351660] ath11k b00a040.wifi1: failed to delete peer vdev_id 1 addr bc:f1:xx:xx:xx:xx ret -108
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.357049] ath11k b00a040.wifi1: Failed to delete peer: bc:f1:xx:xx:xx:xx for VDEV: 1
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.366299] ------------[ cut here ]------------
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.373794] WARNING: CPU: 1 PID: 1391 at backports-6.11.2/net/mac80211/sta_info.c:1466 sta_set_sinfo+0xc30/0xc54 [mac80211]
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.378661] Modules linked in: pppoe ppp_async nft_fib_inet nf_flow_table_inet batman_adv(O) ath11k_ahb(O) ath11k(O) pppox ppp_generic nft_reject_ipv6 nft_reject_ipv4 nft_reject_inet nft_reject nft_redir nft_quota nft_numgen nft_nat nft_masq nft_log nft_limit nft_hash nft_flow_offload nft_fib_ipv6 nft_fib_ipv4 nft_fib nft_ct nft_chain_nat nf_tables nf_nat nf_flow_table nf_conntrack mac80211(O) cfg80211(O) slhc qrtr_smd qrtr qmi_helpers(O) nfnetlink nf_reject_ipv6 nf_reject_ipv4 nf_log_syslog nf_defrag_ipv6 nf_defrag_ipv4 mdio_netlink(O) libcrc32c hwmon crc_ccitt compat(O) sha512_generic sha512_arm64 seqiv sha3_generic jitterentropy_rng drbg michael_mic hmac geniv cmac leds_gpio xhci_plat_hcd xhci_pci xhci_hcd dwc3 dwc3_qcom qca_nss_dp(O) qca_ssdk(O) gpio_button_hotplug(O) ext4 mbcache jbd2 crc32c_generic
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.438978] CPU: 1 PID: 1391 Comm: hostapd Tainted: G O 6.6.63 #0
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.461207] Hardware name: Linksys MX2000 (DT)
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.468582] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.473011] pc : sta_set_sinfo+0xc30/0xc54 [mac80211]
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.480303] lr : sta_set_sinfo+0xc2c/0xc54 [mac80211]
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.485249] sp : ffffffc0822bb850
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.490368] x29: ffffffc0822bb850 x28: ffffff8000ea1800 x27: ffffffc0822bbdc8
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.493757] x26: 0000000000000004 x25: ffffffc078ef7000 x24: ffffffc080d2fa00
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.500962] x23: ffffff80075ecc00 x22: ffffff8000e9c900 x21: ffffff80059508c0
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.508167] x20: 0000000000000001 x19: ffffff8002be0000 x18: 00000000000004df
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.515372] x17: 662032623a34333a x16: 64373a31373a3166 x15: ffffffc080c2bdf0
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.522577] x14: 0000000000000e9d x13: 00000000000004df x12: 00000000ffffffea
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.529781] x11: ffffffc079215260 x10: ffffffc0822bb730 x9 : ffffffc0822bb750
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.536987] x8 : 0000000000000024 x7 : ffffff8002974000 x6 : 0000000000008de8
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.544191] x5 : ffffffbf9f3d9000 x4 : 0000000000000000 x3 : ffffff8000ea1800
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.551396] x2 : 0000000000000000 x1 : ffffff8000ea1800 x0 : 00000000ffffff94
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.558602] Call trace:
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.565802] sta_set_sinfo+0xc30/0xc54 [mac80211]
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.568496] sta_info_destroy_addr_bss+0x34/0x48 [mac80211]
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.573097] ieee80211_obss_color_collision_notify+0x15d4/0x1c08 [mac80211]
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.578915] cfg80211_check_station_change+0x15b8/0x2a04 [cfg80211]
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.585945] genl_family_rcv_msg_doit+0xac/0x114
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.592279] genl_rcv_msg+0x1b4/0x24c
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.596879] netlink_rcv_skb+0x60/0x130
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.600524] genl_rcv+0x38/0x50
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.604604] netlink_unicast+0x1e8/0x2d4
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.607817] netlink_sendmsg+0x19c/0x3d4
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.611722] ____sys_sendmsg+0x1cc/0x27c
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.615716] ___sys_sendmsg+0x80/0xc8
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.619708] __sys_sendmsg+0x48/0xa8
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.623355] __arm64_sys_sendmsg+0x24/0x30
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.627087] invoke_syscall.constprop.0+0x5c/0x108
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.631082] do_el0_svc+0x40/0xc8
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.635941] el0_svc+0x28/0x9c
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.639413] el0t_64_sync_handler+0x120/0x12c
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.642453] el0t_64_sync+0x178/0x17c
Tue Dec 3 09:06:03 2024 kern.warn kernel: [145446.646967] ---[ end trace 0000000000000000 ]---
Tue Dec 3 09:06:08 2024 daemon.info hostapd: phy1-ap1: STA bc:f1:xx:xx:xx:xx IEEE 802.11: deauthenticated due to local deauth request
Tue Dec 3 09:06:09 2024 kern.warn kernel: [145452.655166] ath11k_warn: 103 callbacks suppressed
Tue Dec 3 09:06:09 2024 kern.warn kernel: [145452.655195] ath11k b00a040.wifi1: failed to send WMI_PDEV_BSS_CHAN_INFO_REQUEST cmd
Tue Dec 3 09:06:09 2024 kern.warn kernel: [145452.658887] ath11k b00a040.wifi1: failed to send pdev bss chan info request
Tue Dec 3 09:06:09 2024 kern.warn kernel: [145452.667470] ath11k b00a040.wifi1: failed to send WMI_PDEV_SET_PARAM cmd
Tue Dec 3 09:06:09 2024 kern.warn kernel: [145452.673897] ath11k b00a040.wifi1: Failed to set beacon mode for VDEV: 0
Tue Dec 3 09:06:10 2024 kern.warn kernel: [145452.680779] ath11k b00a040.wifi1: failed to send WMI_BCN_TMPL_CMDID
Tue Dec 3 09:06:10 2024 kern.warn kernel: [145452.687254] ath11k b00a040.wifi1: failed to submit beacon template command: -108
Tue Dec 3 09:06:10 2024 kern.warn kernel: [145452.693559] ath11k b00a040.wifi1: failed to update bcn template: -108
Tue Dec 3 09:06:10 2024 kern.warn kernel: [145452.700909] ath11k b00a040.wifi1: failed to send WMI_VDEV_SET_PARAM_CMDID
Tue Dec 3 09:06:10 2024 kern.warn kernel: [145452.707354] ath11k b00a040.wifi1: failed to set BA BUFFER SIZE 256 for vdev: 0
Tue Dec 3 09:06:10 2024 kern.warn kernel: [145452.714218] ath11k b00a040.wifi1: failed to send WMI_VDEV_SET_PARAM_CMDID
Tue Dec 3 09:06:16 2024 kern.warn kernel: [145458.722708] ath11k_warn: 91 callbacks suppressed

@georgemoussalem
Copy link
Contributor Author

see uptime from one of my devices, with >10 clients connected:

image

@Ansuel
Copy link
Member

Ansuel commented Dec 6, 2024

@georgemoussalem and it does recover after that or you have to reboot the driver?

@georgemoussalem
Copy link
Contributor Author

@georgemoussalem and it does recover after that or you have to reboot the driver?

reboot it required

@Ansuel
Copy link
Member

Ansuel commented Dec 6, 2024

@georgemoussalem yay... aka it's still not usable.......

@Ansuel
Copy link
Member

Ansuel commented Dec 6, 2024

Well honestly effort needs to be made in finding why the firmware doesn't autorecover. Unstable wifi is acceptable IF it does autorecover... If it doesn't then it's really not usable honestly...

I would never use a device that from one day to another is not reachable anymore.

@robimarko
Copy link
Contributor

I am yet to see any ath driver with working FW recovery, I mean they all have it but once remoteproc crashes that is it

@Ansuel
Copy link
Member

Ansuel commented Dec 6, 2024

@robimarko should we catch that and reboot if the thing doesn't recover? for ipq807x i have seen it does recover most of the times

@robimarko
Copy link
Contributor

recovery on ipq807x only started working with 6.6 since now remoteproc reboot actually works (We even use coldboot calibration now), for ipq60xx its still broken.

@georgemoussalem
Copy link
Contributor Author

recovery on ipq807x only started working with 6.6 since now remoteproc reboot actually works (We even use coldboot calibration now), for ipq60xx its still broken.

interesting, is that based on an updated rproc driver for ipq807x? If so, I can have a look and try to learn how to successfully recover.

@robimarko
Copy link
Contributor

No, its the same old crap driver we have been carrying since the start.

IPQ50xx and newer stuff uses MPD while 807x/60xx dont.

@systemcrash
Copy link
Contributor

Could these devices be marked as source only? Like a "better than nothing" approach?

I saw how long some of you worked on the C7v2 DSA attempts just to come up against weird and unknown bugs. :/

@georgemoussalem georgemoussalem force-pushed the main branch 4 times, most recently from 791e8e1 to 2a7c5b3 Compare December 9, 2024 13:01
@edrikk
Copy link

edrikk commented Dec 11, 2024

Hi georgemoussalem,
I know that the hzyitc work included support for Xiomi AX3000. Can that be included in this PR as well by chance in addition to MX2000 and MX5500?

M3m3M4n pushed a commit to M3m3M4n/openwrt that referenced this pull request Feb 16, 2025
IPQ5018 uses different BDF and caldb addresses for vairous boards,
so let's support reading these addresses from the device tree.

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
M3m3M4n pushed a commit to M3m3M4n/openwrt that referenced this pull request Feb 16, 2025
Add ability to download and package ath11k firmware for QCN6122.
QCN6122 is specific/exclusive to the IPQ5018 platform and firmware
files are publishes in a subdirectory of the IPQ5018 firmware files.

While at it, add support for packaging BDFs for QCN6122 wifi and
update iwinfo to recognize QCN6122 wifi.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
M3m3M4n pushed a commit to M3m3M4n/openwrt that referenced this pull request Feb 16, 2025
Add QCN6122 platform support.

QCN6122 is a PCIe based solution that is attached to and enumerated
by the WPSS (Wireless Processor SubSystem) Q6 processor.

Though it is a PCIe device, since it is not attached to APSS processor
(Application Processor SubSystem), APSS will be unaware of such a decice
and hence it is registered to the APSS processor as a platform device(AHB).
Because of this hybrid nature, it is called as a hybrid bus device.

As such, QCN6122 is a hybrid bus type device and follows the same codepath
as for WCN6750.

This is a reversed engineered and heavily simplified version of below
downstream patch:
https://git.codelinaro.org/clo/qsdk/oss/system/feeds/wlan-open/-/ \
blob/NHSS.QSDK.12.4.5.r2/mac80211/patches/232-ath11k-qcn6122-support.patch

Co-developed-by: George Moussalem <george.moussalem@outlook.com>
Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
M3m3M4n pushed a commit to M3m3M4n/openwrt that referenced this pull request Feb 16, 2025
Add support for Linksys MX2000 (Atlas 6) and MX5500 (Atlas 6 Pro).
These devices are completely identical except for the secondary wifi
chip used for 5Ghz: QCN6102 is used on MX2000 while QCN9024 is used
on MX5500

Speficiations:
* SoC: Qualcomm IPQ5018 (64-bit dual-core ARM Cortex-A53 @ 1.0Ghz)
* Memory: Winbond W634GU6NB-11 (512 MiB DDR3-933)
* Serial Port: 3v3 TTL 115200n8
* Wi-Fi: IPQ5018 (2x2 2.4 Ghz 802.11b/g/n/ax)
* Wi-Fi: MX2000: QCN6102 (2x2:2 5 Ghz 802.11an/ac/ax)
         MX5500: QCN9024 (4x4:4 5 Ghz 802.11an/ac/ax)
* Ethernet: IPQ5018 integrated virtual switch connected to an external
            QCA8337 switch (4 Ports 10/100/1000 GBASE-T)
* Flash: Macronix MX35UF2GE4AD (256 MiB)
* LEDs: 1x multi-color PWM LED
* Buttons: 1x WPS (GPIO 27 Active Low)
           1x Reset (GPIO 28 Acive Low)

Flash instructions (in case of MX2000, else replace with MX5500 images):
1. On OEM firmware, login to the device (typically at http://192.168.1.1) and click 'CA'
in the bottom right corner -> Connectivity -> Manual Upgrade. Alternatively, browse to
http://<router IP>/fwupdate.html.
Upgrade firmware using openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin image.
Optionally install on second partition, after first boot check actual partition:
fw_printenv -n boot_part
and install firmware on second partition using command in case of 2:
mtd -r -e kernel -n write openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin kernel
and in case of 1:
mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin alt_kernel
2. Installation using serial connection from OEM firmware (default login: root, password: admin):
fw_printenv -n boot_part
In case of 2:
flash_erase /dev/mtd12 0 0
nandwrite -p /dev/mtd12 openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin
or in case of 1:
flash_erase /dev/mtd14 0 0
nandwrite -p /dev/mtd14 openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin
After first boot install firmware on second partition:
mtd -r -e kernel -n write openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin kernel
or:
mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin alt_kernel
3. Back to the OEM firmware.
Download firmware from OEM website:
MX2000: https://support.linksys.com/kb/article/585-en/
MX5500: https://support.linksys.com/kb/article/587-en/
From serial or SSH:
fw_printenv boot_part
in case of 1:
mtd -r -e alt_kernel -n write FW_MX2000_1.1.7.210469_prod.img alt_kernel
else in case of 2:
mtd -r -e kernel -n write FW_MX2000_1.1.7.210469_prod.img kernel

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
M3m3M4n pushed a commit to M3m3M4n/openwrt that referenced this pull request Feb 16, 2025
This downstream patch fixes a bug which could flood the logs with the
following message and would eventually lead to a crash.

ath11k c000000.wifi: failed to send HAL_REO_CMD_UPDATE_RX_QUEUE cmd, tid 0 (-105)

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
@danilomcloud
Copy link

someone try on Xiaomi Mi Wi-Fi6 Router AX6000?

HateTM pushed a commit to HateTM/tplink_archer-ax80-v1 that referenced this pull request Mar 31, 2025
Uses upstream DSA switch modules (rtl8365mb, rtl8366), similar to
RTL8367C and rtl8366rb swconfig drivers.

The package dependencies exclude targets built without kernel CONFIG_OF.

It also fixes the rtl8366rb LED support.

Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
HateTM pushed a commit to HateTM/tplink_archer-ax80-v1 that referenced this pull request Mar 31, 2025
The codename for IPQ50xx is Maple (abbreviated as 'MP'), so let's pass
the codename to allow the QCA-SSDK to build for the IPQ50xx SoC.

In addition, disable compiling the MP_PHY driver in favor of a native
driver being upstreamed.

Co-developed-by: Ziyang Huang <hzyitc@outlook.com>
Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
HateTM pushed a commit to HateTM/tplink_archer-ax80-v1 that referenced this pull request Mar 31, 2025
Add support for the Qualcomm IPQ50xx in the QCA NSS dataplane driver.
The QCA implementation uses depracated DMA api calls and a downstream SCM
call, so convert to proper Linux DMA and SCM api calls.
In addition, add fixed-link support to support SGMII which is used to
connect the internal IPQ50xx switch to an external switch (ex. QCA8337)

Co-developed-by: Ziyang Huang <hzyitc@outlook.com>
Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
HateTM pushed a commit to HateTM/tplink_archer-ax80-v1 that referenced this pull request Mar 31, 2025
Introduce support for the Qualcomm IPQ50xx SoC.
This series adds support for the following components:
- minimal boot support: GCC/pinctrl/watchdog/CPUFreq/SDI (upstreamed)
- USB2 (upstreamed)
- Thermal/Tsens
- PCIe gen2 1&2-lane PHY and controller
- PWM and PWM LED
- QPIC SPI NAND controller
- CMN PLL Block (provider of fixed rate clocks to GCC/ethernet/more.)
- Ethernet: IPQ5018 Internal GE PHY (1 gbps)
- Remoteproc MPD driver for IPQ5018 (2.4G) & QCN6122 (5/6G) Wifi

Co-developed-by: Ziyang Huang <hzyitc@outlook.com>
Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
HateTM pushed a commit to HateTM/tplink_archer-ax80-v1 that referenced this pull request Mar 31, 2025
Add ability to download and package ath11k firmware for IPQ5018.

As part of commit 172ccf7, the source is pointed to the new QCA repo.
Until QCA publishes updated firmware for IPQ5018 and QCN6122, we need
to download the firmware from the old QUIC repo. As such, add a new
download routine for IPQ5018/QCN6122 to fetch the firmware files from
the old repo.

While at it, add support for packaging BDFs for IPQ5018-based boards
and update iwinfo to recognize IPQ5018 wifi.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
HateTM pushed a commit to HateTM/tplink_archer-ax80-v1 that referenced this pull request Mar 31, 2025
https://lore.kernel.org/linux-wireless/TYZPR01MB55563B3A689D54D18179E5B4C9192@TYZPR01MB5556.apcprd01.prod.exchangelabs.com/

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
HateTM pushed a commit to HateTM/tplink_archer-ax80-v1 that referenced this pull request Mar 31, 2025
IPQ5018 uses different BDF and caldb addresses for vairous boards,
so let's support reading these addresses from the device tree.

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
HateTM pushed a commit to HateTM/tplink_archer-ax80-v1 that referenced this pull request Mar 31, 2025
Add ability to download and package ath11k firmware for QCN6122.
QCN6122 is specific/exclusive to the IPQ5018 platform and firmware
files are publishes in a subdirectory of the IPQ5018 firmware files.

While at it, add support for packaging BDFs for QCN6122 wifi and
update iwinfo to recognize QCN6122 wifi.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
HateTM pushed a commit to HateTM/tplink_archer-ax80-v1 that referenced this pull request Mar 31, 2025
Add QCN6122 platform support.

QCN6122 is a PCIe based solution that is attached to and enumerated
by the WPSS (Wireless Processor SubSystem) Q6 processor.

Though it is a PCIe device, since it is not attached to APSS processor
(Application Processor SubSystem), APSS will be unaware of such a decice
and hence it is registered to the APSS processor as a platform device(AHB).
Because of this hybrid nature, it is called as a hybrid bus device.

As such, QCN6122 is a hybrid bus type device and follows the same codepath
as for WCN6750.

This is a reversed engineered and heavily simplified version of below
downstream patch:
https://git.codelinaro.org/clo/qsdk/oss/system/feeds/wlan-open/-/ \
blob/NHSS.QSDK.12.4.5.r2/mac80211/patches/232-ath11k-qcn6122-support.patch

Co-developed-by: George Moussalem <george.moussalem@outlook.com>
Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
HateTM pushed a commit to HateTM/tplink_archer-ax80-v1 that referenced this pull request Mar 31, 2025
Add support for Linksys MX2000 (Atlas 6) and MX5500 (Atlas 6 Pro).
These devices are completely identical except for the secondary wifi
chip used for 5Ghz: QCN6102 is used on MX2000 while QCN9024 is used
on MX5500

Speficiations:
* SoC: Qualcomm IPQ5018 (64-bit dual-core ARM Cortex-A53 @ 1.0Ghz)
* Memory: Winbond W634GU6NB-11 (512 MiB DDR3-933)
* Serial Port: 3v3 TTL 115200n8
* Wi-Fi: IPQ5018 (2x2 2.4 Ghz 802.11b/g/n/ax)
* Wi-Fi: MX2000: QCN6102 (2x2:2 5 Ghz 802.11an/ac/ax)
         MX5500: QCN9024 (4x4:4 5 Ghz 802.11an/ac/ax)
* Ethernet: IPQ5018 integrated virtual switch connected to an external
            QCA8337 switch (4 Ports 10/100/1000 GBASE-T)
* Flash: Macronix MX35UF2GE4AD (256 MiB)
* LEDs: 1x multi-color PWM LED
* Buttons: 1x WPS (GPIO 27 Active Low)
           1x Reset (GPIO 28 Acive Low)

Flash instructions (in case of MX2000, else replace with MX5500 images):
1. On OEM firmware, login to the device (typically at http://192.168.1.1) and click 'CA'
in the bottom right corner -> Connectivity -> Manual Upgrade. Alternatively, browse to
http://<router IP>/fwupdate.html.
Upgrade firmware using openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin image.
Optionally install on second partition, after first boot check actual partition:
fw_printenv -n boot_part
and install firmware on second partition using command in case of 2:
mtd -r -e kernel -n write openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin kernel
and in case of 1:
mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin alt_kernel
2. Installation using serial connection from OEM firmware (default login: root, password: admin):
fw_printenv -n boot_part
In case of 2:
flash_erase /dev/mtd12 0 0
nandwrite -p /dev/mtd12 openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin
or in case of 1:
flash_erase /dev/mtd14 0 0
nandwrite -p /dev/mtd14 openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin
After first boot install firmware on second partition:
mtd -r -e kernel -n write openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin kernel
or:
mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin alt_kernel
3. Back to the OEM firmware.
Download firmware from OEM website:
MX2000: https://support.linksys.com/kb/article/585-en/
MX5500: https://support.linksys.com/kb/article/587-en/
From serial or SSH:
fw_printenv boot_part
in case of 1:
mtd -r -e alt_kernel -n write FW_MX2000_1.1.7.210469_prod.img alt_kernel
else in case of 2:
mtd -r -e kernel -n write FW_MX2000_1.1.7.210469_prod.img kernel

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
HateTM pushed a commit to HateTM/tplink_archer-ax80-v1 that referenced this pull request Mar 31, 2025
This downstream patch fixes a bug which could flood the logs with the
following message and would eventually lead to a crash.

ath11k c000000.wifi: failed to send HAL_REO_CMD_UPDATE_RX_QUEUE cmd, tid 0 (-105)

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
maurerr pushed a commit to maurerr/openwrt that referenced this pull request Apr 9, 2025
Uses upstream DSA switch modules (rtl8365mb, rtl8366), similar to
RTL8367C and rtl8366rb swconfig drivers.

The package dependencies exclude targets built without kernel CONFIG_OF.

It also fixes the rtl8366rb LED support.

Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
maurerr pushed a commit to maurerr/openwrt that referenced this pull request Apr 9, 2025
The codename for IPQ50xx is Maple (abbreviated as 'MP'), so let's pass
the codename to allow the QCA-SSDK to build for the IPQ50xx SoC.

In addition, disable compiling the MP_PHY driver in favor of a native
driver being upstreamed.

Co-developed-by: Ziyang Huang <hzyitc@outlook.com>
Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
maurerr pushed a commit to maurerr/openwrt that referenced this pull request Apr 9, 2025
Add support for the Qualcomm IPQ50xx in the QCA NSS dataplane driver.
The QCA implementation uses depracated DMA api calls and a downstream SCM
call, so convert to proper Linux DMA and SCM api calls.
In addition, add fixed-link support to support SGMII which is used to
connect the internal IPQ50xx switch to an external switch (ex. QCA8337)

Co-developed-by: Ziyang Huang <hzyitc@outlook.com>
Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
maurerr pushed a commit to maurerr/openwrt that referenced this pull request Apr 9, 2025
Introduce support for the Qualcomm IPQ50xx SoC.
This series adds support for the following components:
- minimal boot support: GCC/pinctrl/watchdog/CPUFreq/SDI (upstreamed)
- USB2 (upstreamed)
- Thermal/Tsens
- PCIe gen2 1&2-lane PHY and controller
- PWM and PWM LED
- QPIC SPI NAND controller
- CMN PLL Block (provider of fixed rate clocks to GCC/ethernet/more.)
- Ethernet: IPQ5018 Internal GE PHY (1 gbps)
- Remoteproc MPD driver for IPQ5018 (2.4G) & QCN6122 (5/6G) Wifi

Co-developed-by: Ziyang Huang <hzyitc@outlook.com>
Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
maurerr pushed a commit to maurerr/openwrt that referenced this pull request Apr 9, 2025
Add ability to download and package ath11k firmware for IPQ5018.

As part of commit 172ccf7, the source is pointed to the new QCA repo.
Until QCA publishes updated firmware for IPQ5018 and QCN6122, we need
to download the firmware from the old QUIC repo. As such, add a new
download routine for IPQ5018/QCN6122 to fetch the firmware files from
the old repo.

While at it, add support for packaging BDFs for IPQ5018-based boards
and update iwinfo to recognize IPQ5018 wifi.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
maurerr pushed a commit to maurerr/openwrt that referenced this pull request Apr 9, 2025
https://lore.kernel.org/linux-wireless/TYZPR01MB55563B3A689D54D18179E5B4C9192@TYZPR01MB5556.apcprd01.prod.exchangelabs.com/

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
maurerr pushed a commit to maurerr/openwrt that referenced this pull request Apr 9, 2025
IPQ5018 uses different BDF and caldb addresses for vairous boards,
so let's support reading these addresses from the device tree.

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
maurerr pushed a commit to maurerr/openwrt that referenced this pull request Apr 9, 2025
Add ability to download and package ath11k firmware for QCN6122.
QCN6122 is specific/exclusive to the IPQ5018 platform and firmware
files are publishes in a subdirectory of the IPQ5018 firmware files.

While at it, add support for packaging BDFs for QCN6122 wifi and
update iwinfo to recognize QCN6122 wifi.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
maurerr pushed a commit to maurerr/openwrt that referenced this pull request Apr 9, 2025
Add QCN6122 platform support.

QCN6122 is a PCIe based solution that is attached to and enumerated
by the WPSS (Wireless Processor SubSystem) Q6 processor.

Though it is a PCIe device, since it is not attached to APSS processor
(Application Processor SubSystem), APSS will be unaware of such a decice
and hence it is registered to the APSS processor as a platform device(AHB).
Because of this hybrid nature, it is called as a hybrid bus device.

As such, QCN6122 is a hybrid bus type device and follows the same codepath
as for WCN6750.

This is a reversed engineered and heavily simplified version of below
downstream patch:
https://git.codelinaro.org/clo/qsdk/oss/system/feeds/wlan-open/-/ \
blob/NHSS.QSDK.12.4.5.r2/mac80211/patches/232-ath11k-qcn6122-support.patch

Co-developed-by: George Moussalem <george.moussalem@outlook.com>
Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
maurerr pushed a commit to maurerr/openwrt that referenced this pull request Apr 9, 2025
Add support for Linksys MX2000 (Atlas 6) and MX5500 (Atlas 6 Pro).
These devices are completely identical except for the secondary wifi
chip used for 5Ghz: QCN6102 is used on MX2000 while QCN9024 is used
on MX5500

Speficiations:
* SoC: Qualcomm IPQ5018 (64-bit dual-core ARM Cortex-A53 @ 1.0Ghz)
* Memory: Winbond W634GU6NB-11 (512 MiB DDR3-933)
* Serial Port: 3v3 TTL 115200n8
* Wi-Fi: IPQ5018 (2x2 2.4 Ghz 802.11b/g/n/ax)
* Wi-Fi: MX2000: QCN6102 (2x2:2 5 Ghz 802.11an/ac/ax)
         MX5500: QCN9024 (4x4:4 5 Ghz 802.11an/ac/ax)
* Ethernet: IPQ5018 integrated virtual switch connected to an external
            QCA8337 switch (4 Ports 10/100/1000 GBASE-T)
* Flash: Macronix MX35UF2GE4AD (256 MiB)
* LEDs: 1x multi-color PWM LED
* Buttons: 1x WPS (GPIO 27 Active Low)
           1x Reset (GPIO 28 Acive Low)

Flash instructions (in case of MX2000, else replace with MX5500 images):
1. On OEM firmware, login to the device (typically at http://192.168.1.1) and click 'CA'
in the bottom right corner -> Connectivity -> Manual Upgrade. Alternatively, browse to
http://<router IP>/fwupdate.html.
Upgrade firmware using openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin image.
Optionally install on second partition, after first boot check actual partition:
fw_printenv -n boot_part
and install firmware on second partition using command in case of 2:
mtd -r -e kernel -n write openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin kernel
and in case of 1:
mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin alt_kernel
2. Installation using serial connection from OEM firmware (default login: root, password: admin):
fw_printenv -n boot_part
In case of 2:
flash_erase /dev/mtd12 0 0
nandwrite -p /dev/mtd12 openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin
or in case of 1:
flash_erase /dev/mtd14 0 0
nandwrite -p /dev/mtd14 openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin
After first boot install firmware on second partition:
mtd -r -e kernel -n write openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin kernel
or:
mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin alt_kernel
3. Back to the OEM firmware.
Download firmware from OEM website:
MX2000: https://support.linksys.com/kb/article/585-en/
MX5500: https://support.linksys.com/kb/article/587-en/
From serial or SSH:
fw_printenv boot_part
in case of 1:
mtd -r -e alt_kernel -n write FW_MX2000_1.1.7.210469_prod.img alt_kernel
else in case of 2:
mtd -r -e kernel -n write FW_MX2000_1.1.7.210469_prod.img kernel

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
maurerr pushed a commit to maurerr/openwrt that referenced this pull request Apr 9, 2025
This downstream patch fixes a bug which could flood the logs with the
following message and would eventually lead to a crash.

ath11k c000000.wifi: failed to send HAL_REO_CMD_UPDATE_RX_QUEUE cmd, tid 0 (-105)

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: openwrt#17182
Signed-off-by: Robert Marko <robimarko@gmail.com>
@eullerpe
Copy link

Hello friends, since the IPQ5018 SoC already has support, could you please help me port a version to my router? xiaomi AX6000, based on the Qualcomm IPQ5018 CPU. Thanks

@raenye
Copy link
Contributor

raenye commented Apr 16, 2025

could you please help me port a version to my router

The issue tracker is not the place for this kind of discussion, please take it to the OpenWrt dev forum.
Luckily for you, some progress has been made, see here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ci:target:qualcommax:ipq50xx Triggers CI build job for qualcommax/ipq50xx target core packages pull request/issue for core (in-tree) packages kernel pull request/issue with Linux kernel related changes target/qualcommax pull request/issue for qualcommax target
Projects
None yet
Development

Successfully merging this pull request may close these issues.