[PATCH] realtek: Fix kernel dependencies on CONFIG_MDIO_SMBUS

Birger Koblitz mail at birger-koblitz.de
Tue Mar 15 03:04:22 PDT 2022


Hi,

On 14.03.22 23:53, Hauke Mehrtens wrote:
> On 3/14/22 06:56, Birger Koblitz wrote:
>> Hi,
>>
>> CONFIG_SFP should only depend on CONFIG_MDIO_SMBUS on the RTL93xx platforms.
>> This is because only on those platforms there is hardware support for an SMBus
>> controller which is used for the MDIO of the SFP ports.
>> If we had known about the worning, then we would have tried to fix it by
>> making CONFIG_SFP only on the 93xx platforms dependent on CONFIG_MDIO_SMBUS.
>> How to do this is however not clear to me.
> 
> We should probably remove the dependency to CONFIG_MDIO_SMBUS from CONFIG_SFP. This is added in target/linux/realtek/patches-5.10/711-net-phy-add-an-MDIO-SMBus-library.patch
> 
> You could add the dependency to the CONFIG_I2C_RTL9300 in target/linux/realtek/patches-5.10/310-add-i2c-rtl9300-support.patch
> 
> Hauke
> 

I would propose the following patch, which compiles on the 839x and 930x platforms:

>From 7fb7bb16fdd0a66fdd8dbd7cd071420d48df230a Mon Sep 17 00:00:00 2001
From: Birger Koblitz <git at birger-koblitz.de>
Date: Tue, 15 Mar 2022 10:53:21 +0100
Subject: [PATCH] realtek: fix CONFIG_MDIO_SMBUS dependency on RTL83xx

CONFIG_SFP depends on CONFIG_MDIO_SMBUS now and this depends on
CONFIG_I2C_SMBUS.
This created the following warnings on the RTL83xx platforms:
WARNING: unmet direct dependencies detected for MDIO_SMBUS
  Depends on [n]: NETDEVICES [=y] && MDIO_DEVICE [=y] && MDIO_BUS [=y] && I2C_SMBUS [=n]
  Selected by [y]:
  - SFP [=y] && NETDEVICES [=y] && PHYLIB [=y] && I2C [=y] && PHYLINK [=y] && (HWMON [=y] || HWMON [=y]=n)

We remove the overall dependency to CONFIG_MDIO_SMBUS from CONFIG_SFP and instead add
it to CONFIG_I2C_RTL9300 since only the RTL93xx platforms make use of the SMBus capable
I2C controller.

Reported-by: Hauke Mehrtens <hauke at hauke-m.de>
Signed-off-by: Birger Koblitz <git at birger-koblitz.de>
---
 .../patches-5.10/310-add-i2c-rtl9300-support.patch     |  3 ++-
 .../711-net-phy-add-an-MDIO-SMBus-library.patch        | 10 ----------
 .../712-net-phy-sfp-add-support-for-SMBus.patch        |  8 +++++++-
 3 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/target/linux/realtek/patches-5.10/310-add-i2c-rtl9300-support.patch b/target/linux/realtek/patches-5.10/310-add-i2c-rtl9300-support.patch
index c4d23d90e1..96be87e08e 100644
--- a/target/linux/realtek/patches-5.10/310-add-i2c-rtl9300-support.patch
+++ b/target/linux/realtek/patches-5.10/310-add-i2c-rtl9300-support.patch
@@ -1,12 +1,13 @@
 --- a/drivers/i2c/busses/Kconfig
 +++ b/drivers/i2c/busses/Kconfig
-@@ -954,6 +954,16 @@ config I2C_RK3X
+@@ -954,6 +954,17 @@ config I2C_RK3X
  	  This driver can also be built as a module. If so, the module will
  	  be called i2c-rk3x.

 +config I2C_RTL9300
 +	tristate "Realtek RTL9300 I2C adapter"
 +	depends on OF
++	select MDIO_SMBUS
 +	help
 +	  Say Y here to include support for the I2C adapter in Realtek RTL9300
 +	  and RTL9310 SoCs.
diff --git a/target/linux/realtek/patches-5.10/711-net-phy-add-an-MDIO-SMBus-library.patch b/target/linux/realtek/patches-5.10/711-net-phy-add-an-MDIO-SMBus-library.patch
index 5e1053ca6c..aad70d8d6a 100644
--- a/target/linux/realtek/patches-5.10/711-net-phy-add-an-MDIO-SMBus-library.patch
+++ b/target/linux/realtek/patches-5.10/711-net-phy-add-an-MDIO-SMBus-library.patch
@@ -108,16 +108,6 @@ Signed-off-by: Antoine Tenart <antoine.tenart at bootlin.com>
 +MODULE_AUTHOR("Antoine Tenart");
 +MODULE_DESCRIPTION("MDIO SMBus bridge library");
 +MODULE_LICENSE("GPL");
---- a/drivers/net/phy/Kconfig
-+++ b/drivers/net/phy/Kconfig
-@@ -60,6 +60,7 @@ config SFP
- 	depends on I2C && PHYLINK
- 	depends on HWMON || HWMON=n
- 	select MDIO_I2C
-+	select MDIO_SMBUS
-
- comment "Switch configuration API + drivers"
-
 --- a/include/linux/mdio/mdio-i2c.h
 +++ b/include/linux/mdio/mdio-i2c.h
 @@ -12,5 +12,21 @@ struct i2c_adapter;
diff --git a/target/linux/realtek/patches-5.10/712-net-phy-sfp-add-support-for-SMBus.patch b/target/linux/realtek/patches-5.10/712-net-phy-sfp-add-support-for-SMBus.patch
index 8eef1885ab..30085a8068 100644
--- a/target/linux/realtek/patches-5.10/712-net-phy-sfp-add-support-for-SMBus.patch
+++ b/target/linux/realtek/patches-5.10/712-net-phy-sfp-add-support-for-SMBus.patch
@@ -10,10 +10,11 @@ Signed-off-by: Antoine Tenart <antoine.tenart at bootlin.com>

 --- a/drivers/net/phy/sfp.c
 +++ b/drivers/net/phy/sfp.c
-@@ -412,32 +412,72 @@ static int sfp_i2c_write(struct sfp *sfp
+@@ -412,32 +412,78 @@ static int sfp_i2c_write(struct sfp *sfp
  	return ret == ARRAY_SIZE(msgs) ? len : 0;
  }

++#ifdef CONFIG_MDIO_SMBUS
 +static int sfp_smbus_read(struct sfp *sfp, bool a2, u8 dev_addr, void *buf,
 +			  size_t len)
 +{
@@ -42,6 +43,7 @@ Signed-off-by: Antoine Tenart <antoine.tenart at bootlin.com>
 +
 +	return sfp->i2c_mii->write(sfp->i2c_mii, bus_addr, dev_addr, val);
 +}
++#endif
 +
  static int sfp_i2c_configure(struct sfp *sfp, struct i2c_adapter *i2c)
  {
@@ -69,6 +71,7 @@ Signed-off-by: Antoine Tenart <antoine.tenart at bootlin.com>
 +
 +		mii->name = "SFP I2C Bus";
 +	} else if (i2c_check_functionality(i2c, I2C_FUNC_SMBUS_BYTE_DATA)) {
++#ifdef CONFIG_MDIO_SMBUS
 +		sfp->read = sfp_smbus_read;
 +		sfp->write = sfp_smbus_write;
 +
@@ -79,6 +82,9 @@ Signed-off-by: Antoine Tenart <antoine.tenart at bootlin.com>
 -	i2c_mii->name = "SFP I2C Bus";
 -	i2c_mii->phy_mask = ~0;
 +		mii->name = "SFP SMBus";
++#else
++		return -EINVAL;
++#endif
 +	} else {
 +		return -EINVAL;
 +	}
-- 
2.25.1




More information about the openwrt-devel mailing list