On Fr, 2023-11-17 at 21:04 +0800, Shengyang Chen wrote: > Add mipi dphy tx support for the StarFive JH7110 SoC. > It is used to transfer DSI data. > > Signed-off-by: Shengyang Chen <shengyang.chen@xxxxxxxxxxxxxxxx> > --- [...] > diff --git a/drivers/phy/starfive/phy-jh7110-dphy-tx.c b/drivers/phy/starfive/phy-jh7110-dphy-tx.c > new file mode 100644 > index 000000000000..69aa172563e4 > --- /dev/null > +++ b/drivers/phy/starfive/phy-jh7110-dphy-tx.c > @@ -0,0 +1,542 @@ [...] > +static int stf_dphy_probe(struct platform_device *pdev) > +{ [...] > + dphy->topsys = devm_platform_ioremap_resource(pdev, 0); > + if (IS_ERR(dphy->topsys)) { > + ret = PTR_ERR(dphy->topsys); > + return ret; This could be shortened to: return PTR_ERR(dphy->topsys); > + } > + > + pm_runtime_enable(&pdev->dev); > + > + dphy->mipitx_0p9 = devm_regulator_get(&pdev->dev, "mipi_0p9"); > + if (IS_ERR(dphy->mipitx_0p9)) { > + ret = PTR_ERR(dphy->mipitx_0p9); > + return ret; Same as above. > + } > + > + dphy->txesc_clk = devm_clk_get(&pdev->dev, "dphy_txesc"); > + if (IS_ERR(dphy->txesc_clk)) { > + ret = PTR_ERR(dphy->txesc_clk); > + dev_err(&pdev->dev, "txesc_clk get error\n"); > + return ret; Consider using dev_err_probe(): return dev_err_probe(&pdev->dev, PTR_ERR(dphy->txesc_clk), "txesc_clk get error\n"); And the same for the error paths below. > + } > + > + dphy->sys_rst = reset_control_get_exclusive(&pdev->dev, "dphy_sys"); Why not devm_reset_control_get_exclusive()? > + if (IS_ERR(dphy->sys_rst)) { > + ret = PTR_ERR(dphy->sys_rst); > + dev_err(&pdev->dev, "sys_rst get error\n"); > + return ret; > + } > + > + dphy->txbytehs_rst = reset_control_get_exclusive(&pdev->dev, "dsi_txbytehs"); Same as above. > + if (IS_ERR(dphy->txbytehs_rst)) { > + dev_err(&pdev->dev, "Failed to get txbytehs_rst\n"); > + return PTR_ERR(dphy->txbytehs_rst); > + } > + > + dphy->phy = devm_phy_create(&pdev->dev, NULL, &stf_dphy_ops); > + if (IS_ERR(dphy->phy)) { > + ret = PTR_ERR(dphy->phy); > + dev_err(&pdev->dev, "Failed to create phy\n"); > + return ret; > + } > + phy_set_drvdata(dphy->phy, dphy); > + > + phy_provider = devm_of_phy_provider_register(&pdev->dev, of_phy_simple_xlate); > + if (IS_ERR(phy_provider)) { > + ret = PTR_ERR(phy_provider); > + dev_err(&pdev->dev, "Failed to create phy\n"); > + return ret; > + } > + > + return PTR_ERR_OR_ZERO(phy_provider); This can not be reached in the error case, so just: return 0; should suffice. regards Philipp