aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/0621-net-phy-Also-request-modules-for-C45-IDs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0621-net-phy-Also-request-modules-for-C45-IDs.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/0621-net-phy-Also-request-modules-for-C45-IDs.patch56
1 files changed, 56 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0621-net-phy-Also-request-modules-for-C45-IDs.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0621-net-phy-Also-request-modules-for-C45-IDs.patch
new file mode 100644
index 00000000..8e416e85
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0621-net-phy-Also-request-modules-for-C45-IDs.patch
@@ -0,0 +1,56 @@
+From 928bccd4742d1d4d79af53f286296d4fe7749578 Mon Sep 17 00:00:00 2001
+From: Jose Abreu <jose.abreu@synopsys.com>
+Date: Sun, 2 Dec 2018 16:33:14 +0100
+Subject: [PATCH 0621/2940] net: phy: Also request modules for C45 IDs
+
+Logic of phy_device_create() requests PHY modules according to PHY ID
+but for C45 PHYs we use different field for the IDs.
+
+Let's also request the modules for these IDs.
+
+Changes from v1:
+- Only request C22 modules if C45 are not present (Andrew)
+
+Signed-off-by: Jose Abreu <joabreu@synopsys.com>
+Cc: Andrew Lunn <andrew@lunn.ch>
+Cc: Florian Fainelli <f.fainelli@gmail.com>
+Cc: "David S. Miller" <davem@davemloft.net>
+Cc: Joao Pinto <joao.pinto@synopsys.com>
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
+Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sudheesh Mavila <sudheesh.mavila@amd.com>
+---
+ drivers/net/phy/phy_device.c | 16 +++++++++++++++-
+ 1 file changed, 15 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
+index 733e35b7c4bb..27b357b48541 100644
+--- a/drivers/net/phy/phy_device.c
++++ b/drivers/net/phy/phy_device.c
+@@ -455,7 +455,21 @@ struct phy_device *phy_device_create(struct mii_bus *bus, int addr, int phy_id,
+ * driver will get bored and give up as soon as it finds that
+ * there's no driver _already_ loaded.
+ */
+- request_module(MDIO_MODULE_PREFIX MDIO_ID_FMT, MDIO_ID_ARGS(phy_id));
++ if (is_c45 && c45_ids) {
++ const int num_ids = ARRAY_SIZE(c45_ids->device_ids);
++ int i;
++
++ for (i = 1; i < num_ids; i++) {
++ if (!(c45_ids->devices_in_package & (1 << i)))
++ continue;
++
++ request_module(MDIO_MODULE_PREFIX MDIO_ID_FMT,
++ MDIO_ID_ARGS(c45_ids->device_ids[i]));
++ }
++ } else {
++ request_module(MDIO_MODULE_PREFIX MDIO_ID_FMT,
++ MDIO_ID_ARGS(phy_id));
++ }
+
+ device_initialize(&mdiodev->dev);
+
+--
+2.17.1
+