diff mbox series

[v4,3/7] generic: Support Altima AMI101L PHY

Message ID 20231023-ixp4xx-v4-3-7d8f297bd67c@linaro.org
State Accepted
Headers show
Series Resurrect OpenWrt IXP4xx support | expand

Commit Message

Linus Walleij Oct. 23, 2023, 6:43 a.m. UTC
This is a backport of the patch to support the Altima AMI101L
PHY which is merged for the v6.7 kernel. This PHY is used in the
IXP4xx-based USRobotics USR8200.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 ....7-net-phy-amd-Support-the-Altima-AMI101L.patch | 82 ++++++++++++++++++++++
 1 file changed, 82 insertions(+)
diff mbox series

Patch

diff --git a/target/linux/generic/backport-6.1/832-v6.7-net-phy-amd-Support-the-Altima-AMI101L.patch b/target/linux/generic/backport-6.1/832-v6.7-net-phy-amd-Support-the-Altima-AMI101L.patch
new file mode 100644
index 000000000000..c2ecc5bfff8b
--- /dev/null
+++ b/target/linux/generic/backport-6.1/832-v6.7-net-phy-amd-Support-the-Altima-AMI101L.patch
@@ -0,0 +1,82 @@ 
+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
+@@ -146,9 +146,9 @@ endif # RTL8366_SMI
+ comment "MII PHY device drivers"
+ 
+ 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 },
+ 	{ }
+ };