Hi Philipp, Thanks for review and comment. On 2023/11/27 21:17, Philipp Zabel wrote: > 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); > ok, will 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. > ok, will fix it. >> + } >> + >> + 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. > ok, it will be tried and verified. It will be used if no problem. >> + } >> + >> + dphy->sys_rst = reset_control_get_exclusive(&pdev->dev, "dphy_sys"); > > Why not devm_reset_control_get_exclusive()? > ok, it will be tried and verified. It will be used if no problem. >> + 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. > ok, I'll follow up on this. >> + 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. > ok, will fix it. > > regards > Philipp thanks a lot. Best Regards, Shengyang