generic: backport Realtek PHY patches from upstream
Adds patches for the temperature sensor on RTL822x. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> (cherry picked from commit d7e82c78d7a2a84404198dab8faf8e142939eb05)
This commit is contained in:
parent
3078b4e51b
commit
7cace002ba
@ -447,9 +447,10 @@ $(eval $(call KernelPackage,phy-micrel))
|
|||||||
define KernelPackage/phy-realtek
|
define KernelPackage/phy-realtek
|
||||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||||
TITLE:=Realtek Ethernet PHY driver
|
TITLE:=Realtek Ethernet PHY driver
|
||||||
KCONFIG:=CONFIG_REALTEK_PHY
|
KCONFIG:=CONFIG_REALTEK_PHY \
|
||||||
DEPENDS:=+kmod-libphy
|
CONFIG_REALTEK_PHY_HWMON=y
|
||||||
FILES:=$(LINUX_DIR)/drivers/net/phy/realtek.ko
|
DEPENDS:=+kmod-libphy +kmod-hwmon-core
|
||||||
|
FILES:=$(LINUX_DIR)/drivers/net/phy/realtek/realtek.ko
|
||||||
AUTOLOAD:=$(call AutoLoad,18,realtek,1)
|
AUTOLOAD:=$(call AutoLoad,18,realtek,1)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
@ -0,0 +1,47 @@
|
|||||||
|
From 3d483a10327f38595f714f9f9e9dde43a622cb0f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Heiner Kallweit <hkallweit1@gmail.com>
|
||||||
|
Date: Sat, 11 Jan 2025 21:49:31 +0100
|
||||||
|
Subject: [PATCH] net: phy: realtek: add support for reading MDIO_MMD_VEND2
|
||||||
|
regs on RTL8125/RTL8126
|
||||||
|
|
||||||
|
RTL8125/RTL8126 don't support MMD access to the internal PHY, but
|
||||||
|
provide a mechanism to access at least all MDIO_MMD_VEND2 registers.
|
||||||
|
By exposing this mechanism standard MMD access functions can be used
|
||||||
|
to access the MDIO_MMD_VEND2 registers.
|
||||||
|
|
||||||
|
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
|
||||||
|
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||||
|
Link: https://patch.msgid.link/e821b302-5fe6-49ab-aabd-05da500581c0@gmail.com
|
||||||
|
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||||
|
---
|
||||||
|
drivers/net/phy/realtek.c | 12 ++++++++++--
|
||||||
|
1 file changed, 10 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/phy/realtek.c
|
||||||
|
+++ b/drivers/net/phy/realtek.c
|
||||||
|
@@ -736,7 +736,11 @@ static int rtlgen_read_mmd(struct phy_de
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
- if (devnum == MDIO_MMD_PCS && regnum == MDIO_PCS_EEE_ABLE) {
|
||||||
|
+ if (devnum == MDIO_MMD_VEND2) {
|
||||||
|
+ rtl821x_write_page(phydev, regnum >> 4);
|
||||||
|
+ ret = __phy_read(phydev, 0x10 + ((regnum & 0xf) >> 1));
|
||||||
|
+ rtl821x_write_page(phydev, 0);
|
||||||
|
+ } else if (devnum == MDIO_MMD_PCS && regnum == MDIO_PCS_EEE_ABLE) {
|
||||||
|
rtl821x_write_page(phydev, 0xa5c);
|
||||||
|
ret = __phy_read(phydev, 0x12);
|
||||||
|
rtl821x_write_page(phydev, 0);
|
||||||
|
@@ -760,7 +764,11 @@ static int rtlgen_write_mmd(struct phy_d
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
- if (devnum == MDIO_MMD_AN && regnum == MDIO_AN_EEE_ADV) {
|
||||||
|
+ if (devnum == MDIO_MMD_VEND2) {
|
||||||
|
+ rtl821x_write_page(phydev, regnum >> 4);
|
||||||
|
+ ret = __phy_write(phydev, 0x10 + ((regnum & 0xf) >> 1), val);
|
||||||
|
+ rtl821x_write_page(phydev, 0);
|
||||||
|
+ } else if (devnum == MDIO_MMD_AN && regnum == MDIO_AN_EEE_ADV) {
|
||||||
|
rtl821x_write_page(phydev, 0xa5d);
|
||||||
|
ret = __phy_write(phydev, 0x10, val);
|
||||||
|
rtl821x_write_page(phydev, 0);
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,180 @@
|
|||||||
|
From 33700ca45b7d2e1655d4cad95e25671e8a94e2f0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Heiner Kallweit <hkallweit1@gmail.com>
|
||||||
|
Date: Sat, 11 Jan 2025 21:51:24 +0100
|
||||||
|
Subject: [PATCH] net: phy: realtek: add hwmon support for temp sensor on
|
||||||
|
RTL822x
|
||||||
|
|
||||||
|
This adds hwmon support for the temperature sensor on RTL822x.
|
||||||
|
It's available on the standalone versions of the PHY's, and on
|
||||||
|
the integrated PHY's in RTL8125B/RTL8125D/RTL8126.
|
||||||
|
|
||||||
|
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
|
||||||
|
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||||
|
Link: https://patch.msgid.link/ad6bfe9f-6375-4a00-84b4-bfb38a21bd71@gmail.com
|
||||||
|
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||||
|
---
|
||||||
|
drivers/net/phy/realtek/Kconfig | 6 ++
|
||||||
|
drivers/net/phy/realtek/Makefile | 1 +
|
||||||
|
drivers/net/phy/realtek/realtek.h | 10 ++++
|
||||||
|
drivers/net/phy/realtek/realtek_hwmon.c | 79 +++++++++++++++++++++++++
|
||||||
|
drivers/net/phy/realtek/realtek_main.c | 12 ++++
|
||||||
|
5 files changed, 108 insertions(+)
|
||||||
|
create mode 100644 drivers/net/phy/realtek/realtek.h
|
||||||
|
create mode 100644 drivers/net/phy/realtek/realtek_hwmon.c
|
||||||
|
|
||||||
|
--- a/drivers/net/phy/realtek/Kconfig
|
||||||
|
+++ b/drivers/net/phy/realtek/Kconfig
|
||||||
|
@@ -3,3 +3,9 @@ config REALTEK_PHY
|
||||||
|
tristate "Realtek PHYs"
|
||||||
|
help
|
||||||
|
Currently supports RTL821x/RTL822x and fast ethernet PHYs
|
||||||
|
+
|
||||||
|
+config REALTEK_PHY_HWMON
|
||||||
|
+ def_bool REALTEK_PHY && HWMON
|
||||||
|
+ depends on !(REALTEK_PHY=y && HWMON=m)
|
||||||
|
+ help
|
||||||
|
+ Optional hwmon support for the temperature sensor
|
||||||
|
--- a/drivers/net/phy/realtek/Makefile
|
||||||
|
+++ b/drivers/net/phy/realtek/Makefile
|
||||||
|
@@ -1,3 +1,4 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
realtek-y += realtek_main.o
|
||||||
|
+realtek-$(CONFIG_REALTEK_PHY_HWMON) += realtek_hwmon.o
|
||||||
|
obj-$(CONFIG_REALTEK_PHY) += realtek.o
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/drivers/net/phy/realtek/realtek.h
|
||||||
|
@@ -0,0 +1,10 @@
|
||||||
|
+/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
+
|
||||||
|
+#ifndef REALTEK_H
|
||||||
|
+#define REALTEK_H
|
||||||
|
+
|
||||||
|
+#include <linux/phy.h>
|
||||||
|
+
|
||||||
|
+int rtl822x_hwmon_init(struct phy_device *phydev);
|
||||||
|
+
|
||||||
|
+#endif /* REALTEK_H */
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/drivers/net/phy/realtek/realtek_hwmon.c
|
||||||
|
@@ -0,0 +1,86 @@
|
||||||
|
+// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
+/*
|
||||||
|
+ * HWMON support for Realtek PHY's
|
||||||
|
+ *
|
||||||
|
+ * Author: Heiner Kallweit <hkallweit1@gmail.com>
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include <linux/hwmon.h>
|
||||||
|
+#include <linux/phy.h>
|
||||||
|
+
|
||||||
|
+#include "realtek.h"
|
||||||
|
+
|
||||||
|
+#define RTL822X_VND2_TSALRM 0xa662
|
||||||
|
+#define RTL822X_VND2_TSRR 0xbd84
|
||||||
|
+#define RTL822X_VND2_TSSR 0xb54c
|
||||||
|
+
|
||||||
|
+static umode_t rtl822x_hwmon_is_visible(const void *drvdata,
|
||||||
|
+ enum hwmon_sensor_types type,
|
||||||
|
+ u32 attr, int channel)
|
||||||
|
+{
|
||||||
|
+ return 0444;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int rtl822x_hwmon_get_temp(int raw)
|
||||||
|
+{
|
||||||
|
+ if (raw >= 512)
|
||||||
|
+ raw -= 1024;
|
||||||
|
+
|
||||||
|
+ return 1000 * raw / 2;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int rtl822x_hwmon_read(struct device *dev, enum hwmon_sensor_types type,
|
||||||
|
+ u32 attr, int channel, long *val)
|
||||||
|
+{
|
||||||
|
+ struct phy_device *phydev = dev_get_drvdata(dev);
|
||||||
|
+ int raw;
|
||||||
|
+
|
||||||
|
+ switch (attr) {
|
||||||
|
+ case hwmon_temp_input:
|
||||||
|
+ raw = phy_read_mmd(phydev, MDIO_MMD_VEND2, RTL822X_VND2_TSRR) & 0x3ff;
|
||||||
|
+ *val = rtl822x_hwmon_get_temp(raw);
|
||||||
|
+ break;
|
||||||
|
+ case hwmon_temp_max:
|
||||||
|
+ /* Chip reduces speed to 1G if threshold is exceeded */
|
||||||
|
+ raw = phy_read_mmd(phydev, MDIO_MMD_VEND2, RTL822X_VND2_TSSR) >> 6;
|
||||||
|
+ *val = rtl822x_hwmon_get_temp(raw);
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ return -EINVAL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static const struct hwmon_ops rtl822x_hwmon_ops = {
|
||||||
|
+ .is_visible = rtl822x_hwmon_is_visible,
|
||||||
|
+ .read = rtl822x_hwmon_read,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const struct hwmon_channel_info * const rtl822x_hwmon_info[] = {
|
||||||
|
+ HWMON_CHANNEL_INFO(temp, HWMON_T_INPUT | HWMON_T_MAX),
|
||||||
|
+ NULL
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const struct hwmon_chip_info rtl822x_hwmon_chip_info = {
|
||||||
|
+ .ops = &rtl822x_hwmon_ops,
|
||||||
|
+ .info = rtl822x_hwmon_info,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+int rtl822x_hwmon_init(struct phy_device *phydev)
|
||||||
|
+{
|
||||||
|
+ struct device *hwdev, *dev = &phydev->mdio.dev;
|
||||||
|
+ const char *name;
|
||||||
|
+
|
||||||
|
+ /* Ensure over-temp alarm is reset. */
|
||||||
|
+ phy_clear_bits_mmd(phydev, MDIO_MMD_VEND2, RTL822X_VND2_TSALRM, 3);
|
||||||
|
+
|
||||||
|
+ name = devm_hwmon_sanitize_name(dev, dev_name(dev));
|
||||||
|
+ if (IS_ERR(name))
|
||||||
|
+ return PTR_ERR(name);
|
||||||
|
+
|
||||||
|
+ hwdev = devm_hwmon_device_register_with_info(dev, name, phydev,
|
||||||
|
+ &rtl822x_hwmon_chip_info,
|
||||||
|
+ NULL);
|
||||||
|
+ return PTR_ERR_OR_ZERO(hwdev);
|
||||||
|
+}
|
||||||
|
--- a/drivers/net/phy/realtek/realtek_main.c
|
||||||
|
+++ b/drivers/net/phy/realtek/realtek_main.c
|
||||||
|
@@ -14,6 +14,8 @@
|
||||||
|
#include <linux/delay.h>
|
||||||
|
#include <linux/clk.h>
|
||||||
|
|
||||||
|
+#include "realtek.h"
|
||||||
|
+
|
||||||
|
#define RTL821x_PHYSR 0x11
|
||||||
|
#define RTL821x_PHYSR_DUPLEX BIT(13)
|
||||||
|
#define RTL821x_PHYSR_SPEED GENMASK(15, 14)
|
||||||
|
@@ -820,6 +822,15 @@ static int rtl822x_write_mmd(struct phy_
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static int rtl822x_probe(struct phy_device *phydev)
|
||||||
|
+{
|
||||||
|
+ if (IS_ENABLED(CONFIG_REALTEK_PHY_HWMON) &&
|
||||||
|
+ phydev->phy_id != RTL_GENERIC_PHYID)
|
||||||
|
+ return rtl822x_hwmon_init(phydev);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static int rtl822xb_config_init(struct phy_device *phydev)
|
||||||
|
{
|
||||||
|
bool has_2500, has_sgmii;
|
||||||
|
@@ -1519,6 +1530,7 @@ static struct phy_driver realtek_drvs[]
|
||||||
|
.match_phy_device = rtl_internal_nbaset_match_phy_device,
|
||||||
|
.name = "Realtek Internal NBASE-T PHY",
|
||||||
|
.flags = PHY_IS_INTERNAL,
|
||||||
|
+ .probe = rtl822x_probe,
|
||||||
|
.get_features = rtl822x_get_features,
|
||||||
|
.config_aneg = rtl822x_config_aneg,
|
||||||
|
.read_status = rtl822x_read_status,
|
@ -10,12 +10,12 @@ the PHY.
|
|||||||
Reported-by: Yevhen Kolomeiko <jarvis2709@gmail.com>
|
Reported-by: Yevhen Kolomeiko <jarvis2709@gmail.com>
|
||||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
---
|
---
|
||||||
drivers/net/phy/realtek.c | 6 ++++++
|
drivers/net/phy/realtek/realtek_main.c | 6 ++++++
|
||||||
1 file changed, 6 insertions(+)
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
--- a/drivers/net/phy/realtek.c
|
--- a/drivers/net/phy/realtek/realtek_main.c
|
||||||
+++ b/drivers/net/phy/realtek.c
|
+++ b/drivers/net/phy/realtek/realtek_main.c
|
||||||
@@ -1412,6 +1412,7 @@ static struct phy_driver realtek_drvs[]
|
@@ -1431,6 +1431,7 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
.name = "RTL8226 2.5Gbps PHY",
|
.name = "RTL8226 2.5Gbps PHY",
|
||||||
.match_phy_device = rtl8226_match_phy_device,
|
.match_phy_device = rtl8226_match_phy_device,
|
||||||
@ -23,7 +23,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
.get_features = rtl822x_get_features,
|
.get_features = rtl822x_get_features,
|
||||||
.config_aneg = rtl822x_config_aneg,
|
.config_aneg = rtl822x_config_aneg,
|
||||||
.read_status = rtl822x_read_status,
|
.read_status = rtl822x_read_status,
|
||||||
@@ -1422,6 +1423,7 @@ static struct phy_driver realtek_drvs[]
|
@@ -1441,6 +1442,7 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
.match_phy_device = rtl8221b_match_phy_device,
|
.match_phy_device = rtl8221b_match_phy_device,
|
||||||
.name = "RTL8226B_RTL8221B 2.5Gbps PHY",
|
.name = "RTL8226B_RTL8221B 2.5Gbps PHY",
|
||||||
@ -31,7 +31,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
.get_features = rtl822x_get_features,
|
.get_features = rtl822x_get_features,
|
||||||
.config_aneg = rtl822x_config_aneg,
|
.config_aneg = rtl822x_config_aneg,
|
||||||
.config_init = rtl822xb_config_init,
|
.config_init = rtl822xb_config_init,
|
||||||
@@ -1434,6 +1436,7 @@ static struct phy_driver realtek_drvs[]
|
@@ -1453,6 +1455,7 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
PHY_ID_MATCH_EXACT(0x001cc838),
|
PHY_ID_MATCH_EXACT(0x001cc838),
|
||||||
.name = "RTL8226-CG 2.5Gbps PHY",
|
.name = "RTL8226-CG 2.5Gbps PHY",
|
||||||
@ -39,7 +39,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
.get_features = rtl822x_get_features,
|
.get_features = rtl822x_get_features,
|
||||||
.config_aneg = rtl822x_config_aneg,
|
.config_aneg = rtl822x_config_aneg,
|
||||||
.read_status = rtl822x_read_status,
|
.read_status = rtl822x_read_status,
|
||||||
@@ -1444,6 +1447,7 @@ static struct phy_driver realtek_drvs[]
|
@@ -1463,6 +1466,7 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
PHY_ID_MATCH_EXACT(0x001cc848),
|
PHY_ID_MATCH_EXACT(0x001cc848),
|
||||||
.name = "RTL8226B-CG_RTL8221B-CG 2.5Gbps PHY",
|
.name = "RTL8226B-CG_RTL8221B-CG 2.5Gbps PHY",
|
||||||
@ -47,7 +47,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
.get_features = rtl822x_get_features,
|
.get_features = rtl822x_get_features,
|
||||||
.config_aneg = rtl822x_config_aneg,
|
.config_aneg = rtl822x_config_aneg,
|
||||||
.config_init = rtl822xb_config_init,
|
.config_init = rtl822xb_config_init,
|
||||||
@@ -1456,6 +1460,7 @@ static struct phy_driver realtek_drvs[]
|
@@ -1475,6 +1479,7 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
.match_phy_device = rtl8221b_vb_cg_c22_match_phy_device,
|
.match_phy_device = rtl8221b_vb_cg_c22_match_phy_device,
|
||||||
.name = "RTL8221B-VB-CG 2.5Gbps PHY (C22)",
|
.name = "RTL8221B-VB-CG 2.5Gbps PHY (C22)",
|
||||||
@ -55,7 +55,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
.get_features = rtl822x_get_features,
|
.get_features = rtl822x_get_features,
|
||||||
.config_aneg = rtl822x_config_aneg,
|
.config_aneg = rtl822x_config_aneg,
|
||||||
.config_init = rtl822xb_config_init,
|
.config_init = rtl822xb_config_init,
|
||||||
@@ -1468,6 +1473,7 @@ static struct phy_driver realtek_drvs[]
|
@@ -1487,6 +1492,7 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
.match_phy_device = rtl8221b_vb_cg_c45_match_phy_device,
|
.match_phy_device = rtl8221b_vb_cg_c45_match_phy_device,
|
||||||
.name = "RTL8221B-VB-CG 2.5Gbps PHY (C45)",
|
.name = "RTL8221B-VB-CG 2.5Gbps PHY (C45)",
|
||||||
@ -63,7 +63,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
.config_init = rtl822xb_config_init,
|
.config_init = rtl822xb_config_init,
|
||||||
.get_rate_matching = rtl822xb_get_rate_matching,
|
.get_rate_matching = rtl822xb_get_rate_matching,
|
||||||
.get_features = rtl822x_c45_get_features,
|
.get_features = rtl822x_c45_get_features,
|
||||||
@@ -1478,6 +1484,7 @@ static struct phy_driver realtek_drvs[]
|
@@ -1497,6 +1503,7 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
.match_phy_device = rtl8221b_vn_cg_c22_match_phy_device,
|
.match_phy_device = rtl8221b_vn_cg_c22_match_phy_device,
|
||||||
.name = "RTL8221B-VM-CG 2.5Gbps PHY (C22)",
|
.name = "RTL8221B-VM-CG 2.5Gbps PHY (C22)",
|
||||||
@ -71,7 +71,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
.get_features = rtl822x_get_features,
|
.get_features = rtl822x_get_features,
|
||||||
.config_aneg = rtl822x_config_aneg,
|
.config_aneg = rtl822x_config_aneg,
|
||||||
.config_init = rtl822xb_config_init,
|
.config_init = rtl822xb_config_init,
|
||||||
@@ -1490,6 +1497,7 @@ static struct phy_driver realtek_drvs[]
|
@@ -1509,6 +1516,7 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
.match_phy_device = rtl8221b_vn_cg_c45_match_phy_device,
|
.match_phy_device = rtl8221b_vn_cg_c45_match_phy_device,
|
||||||
.name = "RTL8221B-VN-CG 2.5Gbps PHY (C45)",
|
.name = "RTL8221B-VN-CG 2.5Gbps PHY (C45)",
|
||||||
|
@ -15,12 +15,12 @@ Reported-by: Yevhen Kolomeiko <jarvis2709@gmail.com>
|
|||||||
Tested-by: Yevhen Kolomeiko <jarvis2709@gmail.com>
|
Tested-by: Yevhen Kolomeiko <jarvis2709@gmail.com>
|
||||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
---
|
---
|
||||||
drivers/net/phy/realtek.c | 27 +++++++++++++++++++++++++--
|
drivers/net/phy/realtek/realtek_main.c | 27 +++++++++++++++++++++++++--
|
||||||
1 file changed, 25 insertions(+), 2 deletions(-)
|
1 file changed, 25 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
--- a/drivers/net/phy/realtek.c
|
--- a/drivers/net/phy/realtek/realtek_main.c
|
||||||
+++ b/drivers/net/phy/realtek.c
|
+++ b/drivers/net/phy/realtek/realtek_main.c
|
||||||
@@ -815,8 +815,8 @@ static int rtl822x_write_mmd(struct phy_
|
@@ -834,8 +834,8 @@ static int rtl822x_probe(struct phy_devi
|
||||||
static int rtl822xb_config_init(struct phy_device *phydev)
|
static int rtl822xb_config_init(struct phy_device *phydev)
|
||||||
{
|
{
|
||||||
bool has_2500, has_sgmii;
|
bool has_2500, has_sgmii;
|
||||||
@ -30,7 +30,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
|
|
||||||
has_2500 = test_bit(PHY_INTERFACE_MODE_2500BASEX,
|
has_2500 = test_bit(PHY_INTERFACE_MODE_2500BASEX,
|
||||||
phydev->host_interfaces) ||
|
phydev->host_interfaces) ||
|
||||||
@@ -866,7 +866,29 @@ static int rtl822xb_config_init(struct p
|
@@ -885,7 +885,29 @@ static int rtl822xb_config_init(struct p
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -13,12 +13,12 @@ rtl821x_write_page instead of 3 individually locked MDIO bus operations.
|
|||||||
|
|
||||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
---
|
---
|
||||||
drivers/net/phy/realtek.c | 8 +++++---
|
drivers/net/phy/realtek/realtek_main.c | 8 +++++---
|
||||||
1 file changed, 5 insertions(+), 3 deletions(-)
|
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
--- a/drivers/net/phy/realtek.c
|
--- a/drivers/net/phy/realtek/realtek_main.c
|
||||||
+++ b/drivers/net/phy/realtek.c
|
+++ b/drivers/net/phy/realtek/realtek_main.c
|
||||||
@@ -1093,9 +1093,11 @@ static bool rtlgen_supports_2_5gbps(stru
|
@@ -1112,9 +1112,11 @@ static bool rtlgen_supports_2_5gbps(stru
|
||||||
{
|
{
|
||||||
int val;
|
int val;
|
||||||
|
|
||||||
|
@ -8,12 +8,12 @@ just like for RTL821x 1GE PHYs.
|
|||||||
|
|
||||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
---
|
---
|
||||||
drivers/net/phy/realtek.c | 11 +++++++++++
|
drivers/net/phy/realtek/realtek_main.c | 11 +++++++++++
|
||||||
1 file changed, 11 insertions(+)
|
1 file changed, 11 insertions(+)
|
||||||
|
|
||||||
--- a/drivers/net/phy/realtek.c
|
--- a/drivers/net/phy/realtek/realtek_main.c
|
||||||
+++ b/drivers/net/phy/realtek.c
|
+++ b/drivers/net/phy/realtek/realtek_main.c
|
||||||
@@ -80,6 +80,10 @@
|
@@ -82,6 +82,10 @@
|
||||||
|
|
||||||
#define RTL822X_VND2_GANLPAR 0xa414
|
#define RTL822X_VND2_GANLPAR 0xa414
|
||||||
|
|
||||||
@ -24,11 +24,11 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
#define RTL8366RB_POWER_SAVE 0x15
|
#define RTL8366RB_POWER_SAVE 0x15
|
||||||
#define RTL8366RB_POWER_SAVE_ON BIT(12)
|
#define RTL8366RB_POWER_SAVE_ON BIT(12)
|
||||||
|
|
||||||
@@ -1189,6 +1193,25 @@ static int rtl8251b_c45_match_phy_device
|
@@ -1208,6 +1212,25 @@ static int rtl8251b_c45_match_phy_device
|
||||||
return rtlgen_is_c45_match(phydev, RTL_8251B, true);
|
return rtlgen_is_c45_match(phydev, RTL_8251B, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
+static int rtl822x_probe(struct phy_device *phydev)
|
+static int rtl822x_aldps_probe(struct phy_device *phydev)
|
||||||
+{
|
+{
|
||||||
+ struct device *dev = &phydev->mdio.dev;
|
+ struct device *dev = &phydev->mdio.dev;
|
||||||
+ int val;
|
+ int val;
|
||||||
@ -50,51 +50,51 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
static int rtlgen_resume(struct phy_device *phydev)
|
static int rtlgen_resume(struct phy_device *phydev)
|
||||||
{
|
{
|
||||||
int ret = genphy_resume(phydev);
|
int ret = genphy_resume(phydev);
|
||||||
@@ -1460,6 +1483,7 @@ static struct phy_driver realtek_drvs[]
|
@@ -1479,6 +1502,7 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
PHY_ID_MATCH_EXACT(0x001cc838),
|
PHY_ID_MATCH_EXACT(0x001cc838),
|
||||||
.name = "RTL8226-CG 2.5Gbps PHY",
|
.name = "RTL8226-CG 2.5Gbps PHY",
|
||||||
+ .probe = rtl822x_probe,
|
+ .probe = rtl822x_aldps_probe,
|
||||||
.soft_reset = genphy_soft_reset,
|
.soft_reset = genphy_soft_reset,
|
||||||
.get_features = rtl822x_get_features,
|
.get_features = rtl822x_get_features,
|
||||||
.config_aneg = rtl822x_config_aneg,
|
.config_aneg = rtl822x_config_aneg,
|
||||||
@@ -1471,6 +1495,7 @@ static struct phy_driver realtek_drvs[]
|
@@ -1490,6 +1514,7 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
PHY_ID_MATCH_EXACT(0x001cc848),
|
PHY_ID_MATCH_EXACT(0x001cc848),
|
||||||
.name = "RTL8226B-CG_RTL8221B-CG 2.5Gbps PHY",
|
.name = "RTL8226B-CG_RTL8221B-CG 2.5Gbps PHY",
|
||||||
+ .probe = rtl822x_probe,
|
+ .probe = rtl822x_aldps_probe,
|
||||||
.soft_reset = genphy_soft_reset,
|
.soft_reset = genphy_soft_reset,
|
||||||
.get_features = rtl822x_get_features,
|
.get_features = rtl822x_get_features,
|
||||||
.config_aneg = rtl822x_config_aneg,
|
.config_aneg = rtl822x_config_aneg,
|
||||||
@@ -1484,6 +1509,7 @@ static struct phy_driver realtek_drvs[]
|
@@ -1503,6 +1528,7 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
.match_phy_device = rtl8221b_vb_cg_c22_match_phy_device,
|
.match_phy_device = rtl8221b_vb_cg_c22_match_phy_device,
|
||||||
.name = "RTL8221B-VB-CG 2.5Gbps PHY (C22)",
|
.name = "RTL8221B-VB-CG 2.5Gbps PHY (C22)",
|
||||||
+ .probe = rtl822x_probe,
|
+ .probe = rtl822x_aldps_probe,
|
||||||
.soft_reset = genphy_soft_reset,
|
.soft_reset = genphy_soft_reset,
|
||||||
.get_features = rtl822x_get_features,
|
.get_features = rtl822x_get_features,
|
||||||
.config_aneg = rtl822x_config_aneg,
|
.config_aneg = rtl822x_config_aneg,
|
||||||
@@ -1497,6 +1523,7 @@ static struct phy_driver realtek_drvs[]
|
@@ -1516,6 +1542,7 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
.match_phy_device = rtl8221b_vb_cg_c45_match_phy_device,
|
.match_phy_device = rtl8221b_vb_cg_c45_match_phy_device,
|
||||||
.name = "RTL8221B-VB-CG 2.5Gbps PHY (C45)",
|
.name = "RTL8221B-VB-CG 2.5Gbps PHY (C45)",
|
||||||
+ .probe = rtl822x_probe,
|
+ .probe = rtl822x_aldps_probe,
|
||||||
.soft_reset = genphy_soft_reset,
|
.soft_reset = genphy_soft_reset,
|
||||||
.config_init = rtl822xb_config_init,
|
.config_init = rtl822xb_config_init,
|
||||||
.get_rate_matching = rtl822xb_get_rate_matching,
|
.get_rate_matching = rtl822xb_get_rate_matching,
|
||||||
@@ -1508,6 +1535,7 @@ static struct phy_driver realtek_drvs[]
|
@@ -1527,6 +1554,7 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
.match_phy_device = rtl8221b_vn_cg_c22_match_phy_device,
|
.match_phy_device = rtl8221b_vn_cg_c22_match_phy_device,
|
||||||
.name = "RTL8221B-VM-CG 2.5Gbps PHY (C22)",
|
.name = "RTL8221B-VM-CG 2.5Gbps PHY (C22)",
|
||||||
+ .probe = rtl822x_probe,
|
+ .probe = rtl822x_aldps_probe,
|
||||||
.soft_reset = genphy_soft_reset,
|
.soft_reset = genphy_soft_reset,
|
||||||
.get_features = rtl822x_get_features,
|
.get_features = rtl822x_get_features,
|
||||||
.config_aneg = rtl822x_config_aneg,
|
.config_aneg = rtl822x_config_aneg,
|
||||||
@@ -1521,6 +1549,7 @@ static struct phy_driver realtek_drvs[]
|
@@ -1540,6 +1568,7 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
.match_phy_device = rtl8221b_vn_cg_c45_match_phy_device,
|
.match_phy_device = rtl8221b_vn_cg_c45_match_phy_device,
|
||||||
.name = "RTL8221B-VN-CG 2.5Gbps PHY (C45)",
|
.name = "RTL8221B-VN-CG 2.5Gbps PHY (C45)",
|
||||||
+ .probe = rtl822x_probe,
|
+ .probe = rtl822x_aldps_probe,
|
||||||
.soft_reset = genphy_soft_reset,
|
.soft_reset = genphy_soft_reset,
|
||||||
.config_init = rtl822xb_config_init,
|
.config_init = rtl822xb_config_init,
|
||||||
.get_rate_matching = rtl822xb_get_rate_matching,
|
.get_rate_matching = rtl822xb_get_rate_matching,
|
||||||
|
@ -12,9 +12,9 @@ over the implemented MMDs.
|
|||||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
[forward-port by @namiltd]
|
[forward-port by @namiltd]
|
||||||
Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
|
Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
|
||||||
--- a/drivers/net/phy/realtek.c
|
--- a/drivers/net/phy/realtek/realtek_main.c
|
||||||
+++ b/drivers/net/phy/realtek.c
|
+++ b/drivers/net/phy/realtek/realtek_main.c
|
||||||
@@ -1139,10 +1139,32 @@ static int rtl8226_match_phy_device(stru
|
@@ -1158,10 +1158,32 @@ static int rtl8226_match_phy_device(stru
|
||||||
static int rtlgen_is_c45_match(struct phy_device *phydev, unsigned int id,
|
static int rtlgen_is_c45_match(struct phy_device *phydev, unsigned int id,
|
||||||
bool is_c45)
|
bool is_c45)
|
||||||
{
|
{
|
||||||
|
@ -7,12 +7,12 @@ This commit introduces interrupt support for RTL8221B.
|
|||||||
|
|
||||||
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
|
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
|
||||||
---
|
---
|
||||||
drivers/net/phy/realtek.c | 47 +++++++++++++++++++++++++++++++++++++++
|
drivers/net/phy/realtek/realtek_main.c | 47 +++++++++++++++++++++++++++++++++++++++
|
||||||
1 file changed, 47 insertions(+)
|
1 file changed, 47 insertions(+)
|
||||||
|
|
||||||
--- a/drivers/net/phy/realtek.c
|
--- a/drivers/net/phy/realtek/realtek_main.c
|
||||||
+++ b/drivers/net/phy/realtek.c
|
+++ b/drivers/net/phy/realtek/realtek_main.c
|
||||||
@@ -1369,6 +1369,51 @@ static irqreturn_t rtl9000a_handle_inter
|
@@ -1388,6 +1388,51 @@ static irqreturn_t rtl9000a_handle_inter
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,39 +64,39 @@ Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
|
|||||||
static struct phy_driver realtek_drvs[] = {
|
static struct phy_driver realtek_drvs[] = {
|
||||||
{
|
{
|
||||||
PHY_ID_MATCH_EXACT(0x00008201),
|
PHY_ID_MATCH_EXACT(0x00008201),
|
||||||
@@ -1531,6 +1576,8 @@ static struct phy_driver realtek_drvs[]
|
@@ -1550,6 +1595,8 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
.match_phy_device = rtl8221b_vb_cg_c22_match_phy_device,
|
.match_phy_device = rtl8221b_vb_cg_c22_match_phy_device,
|
||||||
.name = "RTL8221B-VB-CG 2.5Gbps PHY (C22)",
|
.name = "RTL8221B-VB-CG 2.5Gbps PHY (C22)",
|
||||||
+ .config_intr = rtl8221b_config_intr,
|
+ .config_intr = rtl8221b_config_intr,
|
||||||
+ .handle_interrupt = rtl8221b_handle_interrupt,
|
+ .handle_interrupt = rtl8221b_handle_interrupt,
|
||||||
.probe = rtl822x_probe,
|
.probe = rtl822x_aldps_probe,
|
||||||
.soft_reset = genphy_soft_reset,
|
.soft_reset = genphy_soft_reset,
|
||||||
.get_features = rtl822x_get_features,
|
.get_features = rtl822x_get_features,
|
||||||
@@ -1545,6 +1592,8 @@ static struct phy_driver realtek_drvs[]
|
@@ -1564,6 +1611,8 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
.match_phy_device = rtl8221b_vb_cg_c45_match_phy_device,
|
.match_phy_device = rtl8221b_vb_cg_c45_match_phy_device,
|
||||||
.name = "RTL8221B-VB-CG 2.5Gbps PHY (C45)",
|
.name = "RTL8221B-VB-CG 2.5Gbps PHY (C45)",
|
||||||
+ .config_intr = rtl8221b_config_intr,
|
+ .config_intr = rtl8221b_config_intr,
|
||||||
+ .handle_interrupt = rtl8221b_handle_interrupt,
|
+ .handle_interrupt = rtl8221b_handle_interrupt,
|
||||||
.probe = rtl822x_probe,
|
.probe = rtl822x_aldps_probe,
|
||||||
.soft_reset = genphy_soft_reset,
|
.soft_reset = genphy_soft_reset,
|
||||||
.config_init = rtl822xb_config_init,
|
.config_init = rtl822xb_config_init,
|
||||||
@@ -1557,6 +1606,8 @@ static struct phy_driver realtek_drvs[]
|
@@ -1576,6 +1625,8 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
.match_phy_device = rtl8221b_vn_cg_c22_match_phy_device,
|
.match_phy_device = rtl8221b_vn_cg_c22_match_phy_device,
|
||||||
.name = "RTL8221B-VM-CG 2.5Gbps PHY (C22)",
|
.name = "RTL8221B-VM-CG 2.5Gbps PHY (C22)",
|
||||||
+ .config_intr = rtl8221b_config_intr,
|
+ .config_intr = rtl8221b_config_intr,
|
||||||
+ .handle_interrupt = rtl8221b_handle_interrupt,
|
+ .handle_interrupt = rtl8221b_handle_interrupt,
|
||||||
.probe = rtl822x_probe,
|
.probe = rtl822x_aldps_probe,
|
||||||
.soft_reset = genphy_soft_reset,
|
.soft_reset = genphy_soft_reset,
|
||||||
.get_features = rtl822x_get_features,
|
.get_features = rtl822x_get_features,
|
||||||
@@ -1571,6 +1622,8 @@ static struct phy_driver realtek_drvs[]
|
@@ -1590,6 +1641,8 @@ static struct phy_driver realtek_drvs[]
|
||||||
}, {
|
}, {
|
||||||
.match_phy_device = rtl8221b_vn_cg_c45_match_phy_device,
|
.match_phy_device = rtl8221b_vn_cg_c45_match_phy_device,
|
||||||
.name = "RTL8221B-VN-CG 2.5Gbps PHY (C45)",
|
.name = "RTL8221B-VN-CG 2.5Gbps PHY (C45)",
|
||||||
+ .config_intr = rtl8221b_config_intr,
|
+ .config_intr = rtl8221b_config_intr,
|
||||||
+ .handle_interrupt = rtl8221b_handle_interrupt,
|
+ .handle_interrupt = rtl8221b_handle_interrupt,
|
||||||
.probe = rtl822x_probe,
|
.probe = rtl822x_aldps_probe,
|
||||||
.soft_reset = genphy_soft_reset,
|
.soft_reset = genphy_soft_reset,
|
||||||
.config_init = rtl822xb_config_init,
|
.config_init = rtl822xb_config_init,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/phy/Kconfig
|
--- a/drivers/net/phy/Kconfig
|
||||||
+++ b/drivers/net/phy/Kconfig
|
+++ b/drivers/net/phy/Kconfig
|
||||||
@@ -419,6 +419,12 @@ config ROCKCHIP_PHY
|
@@ -416,6 +416,12 @@ config ROCKCHIP_PHY
|
||||||
help
|
help
|
||||||
Currently supports the integrated Ethernet PHY.
|
Currently supports the integrated Ethernet PHY.
|
||||||
|
|
||||||
@ -16,7 +16,7 @@
|
|||||||
--- a/drivers/net/phy/Makefile
|
--- a/drivers/net/phy/Makefile
|
||||||
+++ b/drivers/net/phy/Makefile
|
+++ b/drivers/net/phy/Makefile
|
||||||
@@ -102,6 +102,7 @@ obj-$(CONFIG_QSEMI_PHY) += qsemi.o
|
@@ -102,6 +102,7 @@ obj-$(CONFIG_QSEMI_PHY) += qsemi.o
|
||||||
obj-$(CONFIG_REALTEK_PHY) += realtek.o
|
obj-$(CONFIG_REALTEK_PHY) += realtek/
|
||||||
obj-$(CONFIG_RENESAS_PHY) += uPD60620.o
|
obj-$(CONFIG_RENESAS_PHY) += uPD60620.o
|
||||||
obj-$(CONFIG_ROCKCHIP_PHY) += rockchip.o
|
obj-$(CONFIG_ROCKCHIP_PHY) += rockchip.o
|
||||||
+obj-$(CONFIG_RTL8367S_GSW) += rtk/
|
+obj-$(CONFIG_RTL8367S_GSW) += rtk/
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
--- a/drivers/net/phy/Kconfig
|
--- a/drivers/net/phy/Kconfig
|
||||||
+++ b/drivers/net/phy/Kconfig
|
+++ b/drivers/net/phy/Kconfig
|
||||||
@@ -399,6 +399,8 @@ config REALTEK_PHY
|
@@ -396,6 +396,8 @@ config QSEMI_PHY
|
||||||
help
|
|
||||||
Supports the Realtek 821x PHY.
|
source "drivers/net/phy/realtek/Kconfig"
|
||||||
|
|
||||||
+source "drivers/net/phy/rtl8261n/Kconfig"
|
+source "drivers/net/phy/rtl8261n/Kconfig"
|
||||||
+
|
+
|
||||||
@ -14,7 +14,7 @@
|
|||||||
@@ -100,6 +100,7 @@ obj-$(CONFIG_NXP_TJA11XX_PHY) += nxp-tja
|
@@ -100,6 +100,7 @@ obj-$(CONFIG_NXP_TJA11XX_PHY) += nxp-tja
|
||||||
obj-y += qcom/
|
obj-y += qcom/
|
||||||
obj-$(CONFIG_QSEMI_PHY) += qsemi.o
|
obj-$(CONFIG_QSEMI_PHY) += qsemi.o
|
||||||
obj-$(CONFIG_REALTEK_PHY) += realtek.o
|
obj-$(CONFIG_REALTEK_PHY) += realtek/
|
||||||
+obj-y += rtl8261n/
|
+obj-y += rtl8261n/
|
||||||
obj-$(CONFIG_RENESAS_PHY) += uPD60620.o
|
obj-$(CONFIG_RENESAS_PHY) += uPD60620.o
|
||||||
obj-$(CONFIG_ROCKCHIP_PHY) += rockchip.o
|
obj-$(CONFIG_ROCKCHIP_PHY) += rockchip.o
|
||||||
|
@ -14,9 +14,9 @@ Submitted-by: Birger Koblitz <mail@birger-koblitz.de>
|
|||||||
|
|
||||||
--- a/drivers/net/phy/Kconfig
|
--- a/drivers/net/phy/Kconfig
|
||||||
+++ b/drivers/net/phy/Kconfig
|
+++ b/drivers/net/phy/Kconfig
|
||||||
@@ -410,6 +410,12 @@ config REALTEK_PHY
|
@@ -407,6 +407,12 @@ config QSEMI_PHY
|
||||||
help
|
|
||||||
Supports the Realtek 821x PHY.
|
source "drivers/net/phy/realtek/Kconfig"
|
||||||
|
|
||||||
+config REALTEK_SOC_PHY
|
+config REALTEK_SOC_PHY
|
||||||
+ tristate "Realtek SoC PHYs"
|
+ tristate "Realtek SoC PHYs"
|
||||||
@ -32,7 +32,7 @@ Submitted-by: Birger Koblitz <mail@birger-koblitz.de>
|
|||||||
@@ -100,6 +100,7 @@ obj-$(CONFIG_NXP_TJA11XX_PHY) += nxp-tja
|
@@ -100,6 +100,7 @@ obj-$(CONFIG_NXP_TJA11XX_PHY) += nxp-tja
|
||||||
obj-y += qcom/
|
obj-y += qcom/
|
||||||
obj-$(CONFIG_QSEMI_PHY) += qsemi.o
|
obj-$(CONFIG_QSEMI_PHY) += qsemi.o
|
||||||
obj-$(CONFIG_REALTEK_PHY) += realtek.o
|
obj-$(CONFIG_REALTEK_PHY) += realtek/
|
||||||
+obj-$(CONFIG_REALTEK_SOC_PHY) += rtl83xx-phy.o
|
+obj-$(CONFIG_REALTEK_SOC_PHY) += rtl83xx-phy.o
|
||||||
obj-$(CONFIG_RENESAS_PHY) += uPD60620.o
|
obj-$(CONFIG_RENESAS_PHY) += uPD60620.o
|
||||||
obj-$(CONFIG_ROCKCHIP_PHY) += rockchip.o
|
obj-$(CONFIG_ROCKCHIP_PHY) += rockchip.o
|
||||||
|
Loading…
x
Reference in New Issue
Block a user