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

Shengyang Chen shengyang.chen at starfivetech.com
Sun Dec 3 23:22:54 PST 2023


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 at starfivetech.com>
>> ---
> [...]
>> 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



More information about the linux-phy mailing list