Re: [PATCH v1 1/2] net: mdio: Add the reset function for IPQ MDIO driver
From: Jie Luo <hidden>
Date: 2021-08-09 13:02:38
Also in:
lkml
On 8/8/2021 11:27 PM, Andrew Lunn wrote:
quoted
+static int ipq_mdio_reset(struct mii_bus *bus) +{ + struct ipq4019_mdio_data *priv = bus->priv; + u32 val; + int ret; + + /* To indicate CMN_PLL that ethernet_ldo has been ready if platform resource 1 + * is specified in the device tree. + * */ + if (!IS_ERR(priv->eth_ldo_rdy)) { + val = readl(priv->eth_ldo_rdy); + val |= BIT(0); + writel(val, priv->eth_ldo_rdy); + fsleep(IPQ_PHY_SET_DELAY_US); + } + + /* Configure MDIO clock source frequency if clock is specified in the device tree */ + if (!IS_ERR_OR_NULL(priv->mdio_clk)) { + ret = clk_set_rate(priv->mdio_clk, IPQ_MDIO_CLK_RATE); + if (ret) + return ret; + + ret = clk_prepare_enable(priv->mdio_clk); + if (ret) + return ret; + }These !IS_ERR() are pretty ugly. Soquoted
@@ -182,14 +221,22 @@ static int ipq4019_mdio_probe(struct platform_device *pdev) return -ENOMEM; priv = bus->priv; + priv->eth_ldo_rdy = IOMEM_ERR_PTR(-EINVAL); priv->membase = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(priv->membase)) return PTR_ERR(priv->membase); + priv->mdio_clk = devm_clk_get_optional(&pdev->dev, "gcc_mdio_ahb_clk");If this returns an error, it is a real error. You should not ignore it. Fail the probe returning the error. That then means when the reset function is called priv->mdio_clk contains either a clock, or NULL, which the clk API is happy to take. No need for an if.quoted
+ + res = platform_get_resource(pdev, IORESOURCE_MEM, 1); + if (res) + priv->eth_ldo_rdy = devm_ioremap_resource(&pdev->dev, res);platform_get_resource() returns a pointer or NULL. There is no error code. Soquoted
+ if (!IS_ERR(priv->eth_ldo_rdy)) {is actually wrong, should simply becomequoted
+ if (priv->eth_ldo_rdy) {Andrew
Hi Andrew, Thanks for the kindly review and the comments, will follow it in the next patch set.