Re: [PATCH v1 2/2] phy: starfive: Add mipi dphy tx support

From: Philipp Zabel
Date: Mon Nov 27 2023 - 08:19:57 EST


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