Re: [PATCH v3 14/18] phy: cadence-torrent: add suspend and resume support

Thomas Richard
2024-02-16T07:36:47Z

On 2/15/24 16:46, Andy Shevchenko wrote:
>> +static int cdns_torrent_phy_suspend_noirq(struct device *dev)
>> +{
>> + struct cdns_torrent_phy *cdns_phy = dev_get_drvdata(dev);
>> + int i;
>
> Why signed?

In the for loop below, the i variable is compared to
cdns_phy->nsubnodes, which is an int.

https://elixir.bootlin.com/linux/latest/source/drivers/phy/cadence/phy-cadence-torrent.c#L360

>
>> + reset_control_assert(cdns_phy->phy_rst);
>> + reset_control_assert(cdns_phy->apb_rst);
>> + for (i = 0; i < cdns_phy->nsubnodes; i++)
>> + reset_control_assert(cdns_phy->phys[i].lnk_rst);
>> +
>> + if (cdns_phy->already_configured)
>> + cdns_phy->already_configured = 0;
>> + else
>> + clk_disable_unprepare(cdns_phy->clk);
>> +
>> + return 0;
>> +}
>> +
>> +static int cdns_torrent_phy_resume_noirq(struct device *dev)
>> +{
>> + struct cdns_torrent_phy *cdns_phy = dev_get_drvdata(dev);
>> + int node = cdns_phy->nsubnodes;
>> + int ret, i;
>
> Ditto>

Same reason

>> + ret = cdns_torrent_clk(cdns_phy);
>> + if (ret)
>> + goto clk_cleanup;
>> +
>> + /* Enable APB */
>> + reset_control_deassert(cdns_phy->apb_rst);
>> +
>> + if (cdns_phy->nsubnodes > 1) {
>> + ret = cdns_torrent_phy_configure_multilink(cdns_phy);
>> + if (ret)
>> + goto put_lnk_rst;
>> + }
>> +
>> + return 0;
>> +
>> +put_lnk_rst:
>> + for (i = 0; i < node; i++)
>> + reset_control_assert(cdns_phy->phys[i].lnk_rst);
>> + reset_control_assert(cdns_phy->apb_rst);
>> + clk_disable_unprepare(cdns_phy->clk);
>> +clk_cleanup:
>> + cdns_torrent_clk_cleanup(cdns_phy);
>> + return ret;
>> +}
>
--
Thomas Richard, Bootlin
Embedded Linux and Kernel engineering