Skip to content

Commit

Permalink
net: phy: smsc: use device-managed clock API
Browse files Browse the repository at this point in the history
Simplify the code by using the device-managed clock API.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/b222be68-ba7e-999d-0a07-eca0ecedf74e@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
  • Loading branch information
Heiner Kallweit authored and Jakub Kicinski committed Aug 31, 2022
1 parent 6edd302 commit 8af1a9a
Showing 1 changed file with 5 additions and 25 deletions.
30 changes: 5 additions & 25 deletions drivers/net/phy/smsc.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ static struct smsc_hw_stat smsc_hw_stats[] = {
struct smsc_phy_priv {
u16 intmask;
bool energy_enable;
struct clk *refclk;
};

static int smsc_phy_ack_interrupt(struct phy_device *phydev)
Expand Down Expand Up @@ -285,20 +284,12 @@ static void smsc_get_stats(struct phy_device *phydev,
data[i] = smsc_get_stat(phydev, i);
}

static void smsc_phy_remove(struct phy_device *phydev)
{
struct smsc_phy_priv *priv = phydev->priv;

clk_disable_unprepare(priv->refclk);
clk_put(priv->refclk);
}

static int smsc_phy_probe(struct phy_device *phydev)
{
struct device *dev = &phydev->mdio.dev;
struct device_node *of_node = dev->of_node;
struct smsc_phy_priv *priv;
int ret;
struct clk *refclk;

priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
Expand All @@ -312,22 +303,12 @@ static int smsc_phy_probe(struct phy_device *phydev)
phydev->priv = priv;

/* Make clk optional to keep DTB backward compatibility. */
priv->refclk = clk_get_optional(dev, NULL);
if (IS_ERR(priv->refclk))
return dev_err_probe(dev, PTR_ERR(priv->refclk),
refclk = devm_clk_get_optional_enabled(dev, NULL);
if (IS_ERR(refclk))
return dev_err_probe(dev, PTR_ERR(refclk),
"Failed to request clock\n");

ret = clk_prepare_enable(priv->refclk);
if (ret)
return ret;

ret = clk_set_rate(priv->refclk, 50 * 1000 * 1000);
if (ret) {
clk_disable_unprepare(priv->refclk);
return ret;
}

return 0;
return clk_set_rate(refclk, 50 * 1000 * 1000);
}

static struct phy_driver smsc_phy_driver[] = {
Expand Down Expand Up @@ -429,7 +410,6 @@ static struct phy_driver smsc_phy_driver[] = {
/* PHY_BASIC_FEATURES */

.probe = smsc_phy_probe,
.remove = smsc_phy_remove,

/* basic functions */
.read_status = lan87xx_read_status,
Expand Down

0 comments on commit 8af1a9a

Please sign in to comment.