mbox series

[RFC,v2,0/6] ath79: support for TP-Link EAP2x5 1-port devices

Message ID cover.1595193767.git.sander@svanheule.net
Headers show
Series ath79: support for TP-Link EAP2x5 1-port devices | expand

Message

Sander Vanheule July 19, 2020, 9:24 p.m. UTC
This patch series seeks to add support for the following devices:
 * TP-Link EAP245 v1
 * TP-Link EAP225 v3
 * TP-Link EAP225-Outdoor v1
Currently not included:
 * TP-Link EAP225 v1/v2

Note that the patches cannot be applied straight to master, but require
(at least) the first four patches (elf splitter and tplink safeloader)
of my pull request for the EAP245 v3. (CC ynezz, rmilecki)
For these patches, see https://github.com/openwrt/openwrt/pull/3130 and
https://patchwork.ozlabs.org/project/openwrt/patch/c429526040b8753011fc905af8d32747c8da6d1b.1594471105.git.sander@svanheule.net/

The first patches of this series are (derived from) work done by
Julien Dusser and were submitted earlier in the following pull requests
(reviewed by blogic, blocktrron, CodeFetch)
 * ar71xx: add support for TP-Link EAP245 v1
   https://github.com/openwrt/openwrt/pull/599
 * ath79: extra gmac configurations from DT on qca956x
   https://github.com/openwrt/openwrt/pull/2441

Some extra work since has led to a reduced set of patches to provide support
for the EAP245 v1 on ath79. Since the other devices are so similar, they are
also included in this series. There were objections in pulling in support
earlier due to the badly configured bootloader and firmware upload protections.

The main work-around for the broken bootloader is in patch 2/6, which adds an
initialisation sequence for the SGMII SERDES. Patch 1/6 ensures the SGMII
interface is enabled when required.

A work-around for the firmware protection was found by using a debug mode that
doesn't perform firmware RSA signature checks. On earlier firmwares (EAP245 v1
and EAP225 v1/v2), a binary patch is required to prevent a crash, but more
recent firmwares (EAP225 v3, EAP225-Outdoor v1, EAP245 v3) can enable the debug
mode by using a simple command.

Questions:
 * The EAP245 v1 factory partition layout is different from, though
   compatible with, the layout provided in patch 3/6. The only difference
   this makes, is a slightly smaller firmware partition and perhaps
   the odd confused user seeking to extract the original user-config
   partition. Using only one layout does simplify the DTs, which is why
   I went with the current approach. Is this okay, or should I stay closer to
   the original layout?
 * I can probably provide working support for the EAP225 v1/v2, given
   the minimal differences between the devices. However, I do not have
   this device to test an image, nor has anyone offered to test on the
   forums. This device would have a similar flashing procedure as the
   EAP245 v1. Would you nevertheless want me to provide a patch?

Changes in v2:
 * Implemented DTS/DTSI header changes.
 * Moved LED definitions.
 * eap245-v1 ath10k MAC address now comes from flash.
 * Renamed EAP225OD to EAP225-Outdoor throughout the patches.
 * The patch providing extra #define's for QCA956X SoCs was dropped.
   Most of it has been available upstream since 2018 with kernel commit
   a95f4b1c28932ca4.
 * Put phy-mode in the correct device node (eth0, not phy4)
 * Ensure QCA956X_ETH_CFG_GE0_SGMII is set when required. Removes the need for
   the device tree extension patch.

Julien Dusser (1):
  ath79: add QCA956x SERDES init workaround

Sander Vanheule (5):
  ath79: ensure QCA956x gmac0 mux selects sgmii
  ath79: prepare for 1-port TP-Link EAP2x5 devices
  ath79: support for TP-Link EAP245 v1
  ath79: support for TP-Link EAP225-Outdoor v1
  ath79: support for TP-Link EAP225 v3

 .../dts/qca9563_tplink_eap225-outdoor-v1.dts  |  31 ++++
 .../ath79/dts/qca9563_tplink_eap225-v3.dts    |  31 ++++
 .../ath79/dts/qca9563_tplink_eap245-v1.dts    |  36 +++++
 .../dts/qca9563_tplink_eap2x5_1port.dtsi      | 139 ++++++++++++++++++
 .../net/ethernet/atheros/ag71xx/ag71xx_main.c | 116 +++++++++++++++
 .../generic/base-files/etc/board.d/02_network |   3 +
 .../etc/hotplug.d/firmware/11-ath10k-caldata  |   8 +
 target/linux/ath79/image/generic-tp-link.mk   |  37 +++++
 tools/firmware-utils/src/tplink-safeloader.c  |  85 +++++++++++
 9 files changed, 486 insertions(+)
 create mode 100644 target/linux/ath79/dts/qca9563_tplink_eap225-outdoor-v1.dts
 create mode 100644 target/linux/ath79/dts/qca9563_tplink_eap225-v3.dts
 create mode 100644 target/linux/ath79/dts/qca9563_tplink_eap245-v1.dts
 create mode 100644 target/linux/ath79/dts/qca9563_tplink_eap2x5_1port.dtsi

Comments

Adrian Schmutzler July 19, 2020, 10:07 p.m. UTC | #1
>  * I can probably provide working support for the EAP225 v1/v2, given
>    the minimal differences between the devices. However, I do not have
>    this device to test an image, nor has anyone offered to test on the
>    forums. This device would have a similar flashing procedure as the
>    EAP245 v1. Would you nevertheless want me to provide a patch?

Didn't really read that for the v1:
If it's not tested, we won't add it.
So, remove these devices for now (as you did in v2 anyway).
If this patchset is merged, you can open a PR in GitHub (or send a patch) for these devices and look for testers. Even if that one is closed later due to lack of testers, the code is at least preserved for later in case someone is looking for it.

Best

Adrian
Adrian Schmutzler July 19, 2020, 10:44 p.m. UTC | #2
Hi,

> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces@lists.openwrt.org]
> On Behalf Of Sander Vanheule
> Sent: Sonntag, 19. Juli 2020 23:24
> To: openwrt-devel@lists.openwrt.org
> Cc: Sander Vanheule <sander@svanheule.net>
> Subject: [RFC PATCH v2 0/6] ath79: support for TP-Link EAP2x5 1-port devices
> 
> This patch series seeks to add support for the following devices:
>  * TP-Link EAP245 v1
>  * TP-Link EAP225 v3
>  * TP-Link EAP225-Outdoor v1
> Currently not included:
>  * TP-Link EAP225 v1/v2

Since I lost overview in the meantime, I've pushed all relevant changes into my staging tree here:

https://git.openwrt.org/?p=openwrt/staging/adrian.git;a=shortlog;h=refs/heads/eap

This is provided just for convenience as I created it for myself anyway, it doesn't mean that I will merge it or take care.

Best

Adrian

> 
> Note that the patches cannot be applied straight to master, but require (at
> least) the first four patches (elf splitter and tplink safeloader) of my pull
> request for the EAP245 v3. (CC ynezz, rmilecki) For these patches, see
> https://github.com/openwrt/openwrt/pull/3130 and
> https://patchwork.ozlabs.org/project/openwrt/patch/c429526040b8753011f
> c905af8d32747c8da6d1b.1594471105.git.sander@svanheule.net/
> 
> The first patches of this series are (derived from) work done by Julien Dusser
> and were submitted earlier in the following pull requests (reviewed by
> blogic, blocktrron, CodeFetch)
>  * ar71xx: add support for TP-Link EAP245 v1
>    https://github.com/openwrt/openwrt/pull/599
>  * ath79: extra gmac configurations from DT on qca956x
>    https://github.com/openwrt/openwrt/pull/2441
> 
> Some extra work since has led to a reduced set of patches to provide support
> for the EAP245 v1 on ath79. Since the other devices are so similar, they are
> also included in this series. There were objections in pulling in support earlier
> due to the badly configured bootloader and firmware upload protections.
> 
> The main work-around for the broken bootloader is in patch 2/6, which adds
> an initialisation sequence for the SGMII SERDES. Patch 1/6 ensures the SGMII
> interface is enabled when required.
> 
> A work-around for the firmware protection was found by using a debug
> mode that doesn't perform firmware RSA signature checks. On earlier
> firmwares (EAP245 v1 and EAP225 v1/v2), a binary patch is required to
> prevent a crash, but more recent firmwares (EAP225 v3, EAP225-Outdoor v1,
> EAP245 v3) can enable the debug mode by using a simple command.
> 
> Questions:
>  * The EAP245 v1 factory partition layout is different from, though
>    compatible with, the layout provided in patch 3/6. The only difference
>    this makes, is a slightly smaller firmware partition and perhaps
>    the odd confused user seeking to extract the original user-config
>    partition. Using only one layout does simplify the DTs, which is why
>    I went with the current approach. Is this okay, or should I stay closer to
>    the original layout?
>  * I can probably provide working support for the EAP225 v1/v2, given
>    the minimal differences between the devices. However, I do not have
>    this device to test an image, nor has anyone offered to test on the
>    forums. This device would have a similar flashing procedure as the
>    EAP245 v1. Would you nevertheless want me to provide a patch?
> 
> Changes in v2:
>  * Implemented DTS/DTSI header changes.
>  * Moved LED definitions.
>  * eap245-v1 ath10k MAC address now comes from flash.
>  * Renamed EAP225OD to EAP225-Outdoor throughout the patches.
>  * The patch providing extra #define's for QCA956X SoCs was dropped.
>    Most of it has been available upstream since 2018 with kernel commit
>    a95f4b1c28932ca4.
>  * Put phy-mode in the correct device node (eth0, not phy4)
>  * Ensure QCA956X_ETH_CFG_GE0_SGMII is set when required. Removes
> the need for
>    the device tree extension patch.
> 
> Julien Dusser (1):
>   ath79: add QCA956x SERDES init workaround
> 
> Sander Vanheule (5):
>   ath79: ensure QCA956x gmac0 mux selects sgmii
>   ath79: prepare for 1-port TP-Link EAP2x5 devices
>   ath79: support for TP-Link EAP245 v1
>   ath79: support for TP-Link EAP225-Outdoor v1
>   ath79: support for TP-Link EAP225 v3
> 
>  .../dts/qca9563_tplink_eap225-outdoor-v1.dts  |  31 ++++
>  .../ath79/dts/qca9563_tplink_eap225-v3.dts    |  31 ++++
>  .../ath79/dts/qca9563_tplink_eap245-v1.dts    |  36 +++++
>  .../dts/qca9563_tplink_eap2x5_1port.dtsi      | 139 ++++++++++++++++++
>  .../net/ethernet/atheros/ag71xx/ag71xx_main.c | 116 +++++++++++++++
>  .../generic/base-files/etc/board.d/02_network |   3 +
>  .../etc/hotplug.d/firmware/11-ath10k-caldata  |   8 +
>  target/linux/ath79/image/generic-tp-link.mk   |  37 +++++
>  tools/firmware-utils/src/tplink-safeloader.c  |  85 +++++++++++
>  9 files changed, 486 insertions(+)
>  create mode 100644 target/linux/ath79/dts/qca9563_tplink_eap225-
> outdoor-v1.dts
>  create mode 100644 target/linux/ath79/dts/qca9563_tplink_eap225-v3.dts
>  create mode 100644 target/linux/ath79/dts/qca9563_tplink_eap245-v1.dts
>  create mode 100644
> target/linux/ath79/dts/qca9563_tplink_eap2x5_1port.dtsi
> 
> --
> 2.26.2
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel