immortalwrt/target/linux
Christian Marangi 9a24040d20
ipq806x: fix Linksys EAX500 family devices dead Ethernet switch
With 5.15 kernel version Linksys EAX500 family devices suffered from a
big regression where the Ethernet switch became silent and started to
malfunction.

It was discovered later that the cause was not really the kernel upgrade
itself but a hackish implementation of the hw implementation of these
special routers.

In the original Linksys source code, GPIO 63 was handled in a special way
and was reset on reboot.

Normally GPIO 63 is used for pcie2 reset but in every device we support,
pcie2 is actually never used as nothing is attached to it.

Linksys rerouted GPIO 63 to the switch reset pin and deviates from
common hw implementation.

Till now it was used an hack to handle this case... It was set pcie3 as
working (while actually nothing was connected), set it to output low
(for assert-deassert from the pcie init code) and be done with it.
The result was that the GPIO was reset for enough time in early boot and
everything worked correctly.
This hack implementation was born to fail from the very start and in
kernel 5.15 finally problem arised.

In 5.15 pcie code changed and now the GPIO reset pin is not asserted as
probe won't fail if nothing is connected to the line (the old behaviour)
This result in the switch hold the reset pin and the Ethernet switch
dead.

On top of that with 5.15 code got optimized and simply attaching the
GPIO reset to the mdio wasn't enough as the switch require at least 10ms
to be correctly reset.

So implement finally a correct solution where:
- pcie2 is correctly disabled (nothing attached, unused)
- drop the wrong output-low for pcie2 reset pin
- define GPIO 63 as switch reset
- Add the reset-gpios to the mdio0 node
- Set the reset-post-delay-us to 12ms to correctly give time the switch
  to reset

Fixes: #10983
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2023-02-17 04:27:15 +01:00
..
airoha airoha: disable swconfig 2022-11-27 13:18:29 +01:00
apm821xx treewide: replace wpad-basic-wolfssl default 2023-02-04 02:35:03 +01:00
archs38 treewide: replace wpad-basic-wolfssl default 2023-02-04 02:35:03 +01:00
armvirt
at91 treewide: strip useless default n Kconfig lines 2023-02-03 12:50:15 +01:00
ath25 treewide: replace wpad-basic-wolfssl default 2023-02-04 02:35:03 +01:00
ath79 ath79: bump SPI frequency of Senao qca955x routers 2023-02-12 18:07:31 +01:00
bcm27xx kernel: bump 5.15 to 5.15.93 2023-02-11 23:39:30 +01:00
bcm47xx bcm47xx: revert bgmac back to the old limited max frame size 2023-02-07 18:29:34 +01:00
bcm53xx bcm53xx: fix shebang in packet_steering.sh 2023-02-15 19:44:11 +01:00
bcm63xx bcm63xx: fix dts whitespace 2023-02-09 03:03:50 +01:00
bcm4908 bcm4908: refactor packet steering init 2023-02-15 19:44:11 +01:00
bmips treewide: replace wpad-basic-wolfssl default 2023-02-04 02:35:03 +01:00
gemini gemini: add generic subtarget 2022-12-23 19:44:20 +01:00
generic kernel: import accepted MediaTek Ethernet patches 2023-02-15 03:28:09 +00:00
imx cypress-nvram: consolidate NVRAM packages 2022-11-16 20:14:13 +01:00
ipq40xx treewide: replace /sys/devices/virtual/ubi by /sys/class/ubi 2023-02-15 03:27:59 +00:00
ipq806x ipq806x: fix Linksys EAX500 family devices dead Ethernet switch 2023-02-17 04:27:15 +01:00
ipq807x ipq807x: move AQR driver from built-in to kmod 2023-02-15 23:29:01 +01:00
kirkwood treewide: replace /sys/devices/virtual/ubi by /sys/class/ubi 2023-02-15 03:27:59 +00:00
lantiq lantiq: ar9/vr9: add fritz-tffs package 2023-02-08 00:19:54 +01:00
layerscape layerscape: Add CONFIG_NVMEM_LAYERSCAPE_SFP kernel configuration option 2023-01-08 18:51:27 +01:00
malta treewide: replace wpad-basic-wolfssl default 2023-02-04 02:35:03 +01:00
mediatek mediatek: mtk_thermal: replace with upstream patch 2023-02-15 03:28:09 +00:00
mpc85xx mpc85xx: p2020: kernel: enable CONFIG_BLK_DEV_NVME 2023-02-07 21:24:37 +01:00
mvebu treewide: replace /sys/devices/virtual/ubi by /sys/class/ubi 2023-02-15 03:27:59 +00:00
mxs mxs: switch default kernel to 5.15 2023-01-30 11:13:14 +01:00
octeon
octeontx octeontx: add sqaushfs and ramdisk to features 2023-01-06 19:44:35 +01:00
omap treewide: replace wpad-basic-wolfssl default 2023-02-04 02:35:03 +01:00
oxnas treewide: replace wpad-basic-wolfssl default 2023-02-04 02:35:03 +01:00
pistachio pistachio: Cleanup kernel configuration 2023-01-28 19:58:20 +01:00
qoriq qoriq: drop unused kernel config 2023-01-09 21:39:45 +02:00
ramips ramips: Switch default kernel to 5.15 2023-02-17 16:31:53 +02:00
realtek realtek: add support for APRESIA ApresiaLightGS120GT-SS 2023-02-13 12:22:17 +01:00
rockchip treewide: update NVMEM symbols 2023-01-07 01:30:31 +01:00
sunxi treewide: replace wpad-basic-wolfssl default 2023-02-04 02:35:03 +01:00
tegra treewide: replace wpad-basic-wolfssl default 2023-02-04 02:35:03 +01:00
uml treewide: replace wpad-basic-wolfssl default 2023-02-04 02:35:03 +01:00
x86 x86: add Barracuda Networks F12 interfaces 2023-02-03 14:05:37 +01:00
zynq zynq: remove kconfig for 5.10 2023-01-30 18:01:14 +08:00
Makefile