ipq40xx: add support for Linksys WHW03 V2
authorVincent Tremblay <vincent@vtremblay.dev>
Fri, 23 Dec 2022 17:30:36 +0000 (12:30 -0500)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 15 Jan 2023 11:55:38 +0000 (12:55 +0100)
commit9e4ede8344d60d4837e047e9275c21fd2a8f130b
treed5c2ef9c2484bc8fc983751de326f004048385ab
parent0a15bb65105f51af1505223ace2a4dfabc2f6f0c
ipq40xx: add support for Linksys WHW03 V2

SOC:             Qualcomm IPQ4019
WiFi 1:          QCA4019 IEEE 802.11b/g/n
WiFi 2:          QCA4019 IEEE 802.11a/n/ac
WiFi 3:          QCA8888 IEEE 802.11a/n/ac
Bluetooth:       Qualcomm CSR8811 (A12U)
Zigbee:          Silicon Labs EM3581 NCP + Skyworks SE2432L
Ethernet:        Qualcomm Atheros QCA8072 (2-port)
Flash 1:         Mactronix MX30LF4G18AC-XKI
RAM (NAND):      SK hynix H5TC4G63CFR-PBA (512MB)
LED Controller:  NXP PCA9633 (I2C)
Buttons:         Single reset button (GPIO).

- The three WiFis were fully tested and are configured with the same settings as in the vendor firmware.
- The specific board files were submitted to the ATH10k mailing list but I'm still waiting for a reply. They can be removed once they are approved upstream.
- Two ethernet ports are accessible on the device. By default one is configured as WAN and the other one is LAN. They are fully working.

Bluetooth:
========
- Fully working with the following caveats:
  - RFKILL need to be enabled in the kernel.
  - An older version of bluez is needed as bccmd is needed to configure the chip.

Zigbee:
======
- The spidev device is available in the /dev directory.
- GPIOs are configured the same way as in the vendor firmware.
- Tests are on-going. I am working on getting access to the Silicon Labs stack to validate that it is fully working.

Installation:
=========
The squash-factory image can be installed via the Linksys Web UI:
1. Open "http://192.168.1.1/ca" (Change the IP with the IP of your device).
2. Login with your admin password.
3. To enter into the support mode, click on the "CA" link and the bottom of the page.
4. Open the "Connectivity" menu and upload the squash-factory image with the "Choose file" button.
5. Click start. Ignore all the prompts and warnings by click "yes" in all the popups.

The device uses a dual partition mechanism. The device automatically revert to the previous partition after 3 failed boot attempts.
If you want to force the previous firmware to load, you can turn off and then turn on the device for 2 seconds, 3 times in a row.

It can also be done via TFTP:
1. Setup a local TFTP server and configure its IP to 192.168.1.100.
2. Rename your image to "nodes_v2.img" and put it to the TFTP root of your server.
3. Connect to the device through the serial console.
4. Power on device and press enter when prompted to drop into U-Boot.
5. Flash the partition of your choice by typing "run flashimg" or "run flashimg2".
6. Once flashed, enter "reset" to reboot the device.

Reviewed-by: Robert Marko <robimarko@gmail.com>
Signed-off-by: Vincent Tremblay <vincent@vtremblay.dev>
package/boot/uboot-envtools/files/ipq40xx
package/firmware/ipq-wifi/Makefile
package/firmware/ipq-wifi/board-linksys_whw03v2.qca4019 [new file with mode: 0644]
package/firmware/ipq-wifi/board-linksys_whw03v2.qca9888 [new file with mode: 0644]
package/kernel/ath10k-ct/patches/130-ath10k-read-qcom-coexist-support-as-a-u32.patch [new file with mode: 0644]
target/linux/ipq40xx/base-files/etc/board.d/02_network
target/linux/ipq40xx/base-files/etc/init.d/bootcount
target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-whw03v2.dts [new file with mode: 0644]
target/linux/ipq40xx/image/generic.mk