mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 10:39:04 +00:00
0d74b2a1e5
Backport driver from upcoming Linux 6.10 and put a pending fix on top to make sure the netdev trigger offloading behaves as expected. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
83 lines
2.3 KiB
Diff
83 lines
2.3 KiB
Diff
From 49e5663b505070424e18099841943f34342aa405 Mon Sep 17 00:00:00 2001
|
|
From: Linus Walleij <linus.walleij@linaro.org>
|
|
Date: Sun, 24 Sep 2023 01:09:01 +0200
|
|
Subject: [PATCH] net: phy: amd: Support the Altima AMI101L
|
|
|
|
The Altima AC101L is obviously compatible with the AMD PHY,
|
|
as seen by reading the datasheet.
|
|
|
|
Datasheet: https://docs.broadcom.com/doc/AC101L-DS05-405-RDS.pdf
|
|
|
|
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
|
---
|
|
drivers/net/phy/Kconfig | 4 ++--
|
|
drivers/net/phy/amd.c | 33 +++++++++++++++++++++++----------
|
|
2 files changed, 25 insertions(+), 12 deletions(-)
|
|
|
|
--- a/drivers/net/phy/Kconfig
|
|
+++ b/drivers/net/phy/Kconfig
|
|
@@ -74,9 +74,9 @@ config AIR_EN8811H_PHY
|
|
Currently supports the Airoha EN8811H PHY.
|
|
|
|
config AMD_PHY
|
|
- tristate "AMD PHYs"
|
|
+ tristate "AMD and Altima PHYs"
|
|
help
|
|
- Currently supports the am79c874
|
|
+ Currently supports the AMD am79c874 and Altima AC101L.
|
|
|
|
config MESON_GXL_PHY
|
|
tristate "Amlogic Meson GXL Internal PHY"
|
|
--- a/drivers/net/phy/amd.c
|
|
+++ b/drivers/net/phy/amd.c
|
|
@@ -13,6 +13,7 @@
|
|
#include <linux/mii.h>
|
|
#include <linux/phy.h>
|
|
|
|
+#define PHY_ID_AC101L 0x00225520
|
|
#define PHY_ID_AM79C874 0x0022561b
|
|
|
|
#define MII_AM79C_IR 17 /* Interrupt Status/Control Register */
|
|
@@ -87,19 +88,31 @@ static irqreturn_t am79c_handle_interrup
|
|
return IRQ_HANDLED;
|
|
}
|
|
|
|
-static struct phy_driver am79c_driver[] = { {
|
|
- .phy_id = PHY_ID_AM79C874,
|
|
- .name = "AM79C874",
|
|
- .phy_id_mask = 0xfffffff0,
|
|
- /* PHY_BASIC_FEATURES */
|
|
- .config_init = am79c_config_init,
|
|
- .config_intr = am79c_config_intr,
|
|
- .handle_interrupt = am79c_handle_interrupt,
|
|
-} };
|
|
+static struct phy_driver am79c_drivers[] = {
|
|
+ {
|
|
+ .phy_id = PHY_ID_AM79C874,
|
|
+ .name = "AM79C874",
|
|
+ .phy_id_mask = 0xfffffff0,
|
|
+ /* PHY_BASIC_FEATURES */
|
|
+ .config_init = am79c_config_init,
|
|
+ .config_intr = am79c_config_intr,
|
|
+ .handle_interrupt = am79c_handle_interrupt,
|
|
+ },
|
|
+ {
|
|
+ .phy_id = PHY_ID_AC101L,
|
|
+ .name = "AC101L",
|
|
+ .phy_id_mask = 0xfffffff0,
|
|
+ /* PHY_BASIC_FEATURES */
|
|
+ .config_init = am79c_config_init,
|
|
+ .config_intr = am79c_config_intr,
|
|
+ .handle_interrupt = am79c_handle_interrupt,
|
|
+ },
|
|
+};
|
|
|
|
-module_phy_driver(am79c_driver);
|
|
+module_phy_driver(am79c_drivers);
|
|
|
|
static struct mdio_device_id __maybe_unused amd_tbl[] = {
|
|
+ { PHY_ID_AC101L, 0xfffffff0 },
|
|
{ PHY_ID_AM79C874, 0xfffffff0 },
|
|
{ }
|
|
};
|