Skip to content

Commit

Permalink
net: phy: realtek: add support for RTL8211C
Browse files Browse the repository at this point in the history
RTL8211C has an issue when operating in Gigabit slave mode, therefore
genphy driver can't be used. See also this U-boot change.
https://lists.denx.de/pipermail/u-boot/2016-March/249712.html

Add a PHY driver for this chip with the quirk to force Gigabit master
mode. As a note: This will make it impossible to connect two network
ports directly which both are driven by a RTl8211C.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Heiner Kallweit authored and David S. Miller committed Jul 2, 2018
1 parent 9868c0b commit cf87915
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions drivers/net/phy/realtek.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,15 @@ static int rtl8211_config_aneg(struct phy_device *phydev)
return 0;
}

static int rtl8211c_config_init(struct phy_device *phydev)
{
/* RTL8211C has an issue when operating in Gigabit slave mode */
phy_set_bits(phydev, MII_CTRL1000,
CTL1000_ENABLE_MASTER | CTL1000_AS_MASTER);

return genphy_config_init(phydev);
}

static int rtl8211f_config_init(struct phy_device *phydev)
{
int ret;
Expand Down Expand Up @@ -220,6 +229,14 @@ static struct phy_driver realtek_drvs[] = {
.write_mmd = &genphy_write_mmd_unsupported,
.suspend = rtl8211b_suspend,
.resume = rtl8211b_resume,
}, {
.phy_id = 0x001cc913,
.name = "RTL8211C Gigabit Ethernet",
.phy_id_mask = 0x001fffff,
.features = PHY_GBIT_FEATURES,
.config_init = rtl8211c_config_init,
.read_mmd = &genphy_read_mmd_unsupported,
.write_mmd = &genphy_write_mmd_unsupported,
}, {
.phy_id = 0x001cc914,
.name = "RTL8211DN Gigabit Ethernet",
Expand Down

0 comments on commit cf87915

Please sign in to comment.