Thread (7 messages) flat view 7 messages, 2 authors, 2021-08-09

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. So
quoted
@@ -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. So
quoted
+	if (!IS_ERR(priv->eth_ldo_rdy)) {
is actually wrong, should simply become
quoted
+	if (priv->eth_ldo_rdy) {
   Andrew
Hi Andrew,

Thanks for the kindly review and the comments, will follow it in the 
next patch set.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help