[PATCH v4 1/8] of: Add NVIDIA Tegra SATA controller binding
From: mperttunen@nvidia.com (Mikko Perttunen)
Date: 2014-07-17 11:35:23
Also in:
linux-ide, linux-tegra, lkml
On 17/07/14 13:23, Hans de Goede wrote:
On 07/17/2014 09:56 AM, Mikko Perttunen wrote:quoted
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.