Re: [PATCH v4 1/8] of: Add NVIDIA Tegra SATA controller binding

Mikko Perttunen
2014-07-17T11:35:15Z

On 17/07/14 13:23, Hans de Goede wrote:
> On 07/17/2014 09:56 AM, Mikko Perttunen wrote:
>> Also: is there a reason to not use the devm_* variants? I note that the helper code has not been able to prevent any of the ahci_platform drivers from messing up by not calling ahci_platform_put_resources.
>
> The libahci_platform.c code / ahci_platform.c code is also used for
> devices going way back who may not yet be using the new clk framework,
> so where we need to use clk_get(dev, NULL); quoting from libahci_platform.c :
>
> for (i = 0; i < AHCI_MAX_CLKS; i++) {
> /*
> * For now we must use clk_get(dev, NULL) for the first clock,
> * because some platforms (da850, spear13xx) are not yet
> * converted to use devicetree for clocks. For new platforms
> * this is equivalent to of_clk_get(dev->of_node, 0).
> */
> if (i == 0)
> clk = clk_get(dev, NULL);
> else
> clk = of_clk_get(dev->of_node, i);
>
> if (IS_ERR(clk)) {
> rc = PTR_ERR(clk);
> if (rc == -EPROBE_DEFER)
> goto err_out;
> break;
> }
> hpriv->clks[i] = clk;
> }
>
> And there is no devm variant of that, nor is there one to get clocks by index.
> Note that we also need ahci_platform_put_resources for runtime pm support, so
> that one is going to stay around anyways and thus there is not that much value
> in fixing this.
>

Ah, and looks like devres is used to call put_resources anyway. My mistake.