On Tue, Mar 28, 2017 at 01:47:04PM +0300, Daniel Baluta wrote:
On Tue, Mar 28, 2017 at 12:21 PM, Charles Keepax ckeepax@opensource.wolfsonmicro.com wrote:
On Tue, Mar 28, 2017 at 11:58:52AM +0300, Daniel Baluta wrote:
Resource managed devm_clk_get only works with platform's device dev.
I feel like this could use an explaination of why not using devm is the correct fix, rather than just using the platform device for the call. Its not obvious to me, that using the platform device would be an issue.
Hi Charles,
I see where the confusion comes from :) and I thought the explanation is obvious from the code, see inline comments.
Would an explanation like the one below, work better?
" We cannot use devm_clk_get with &codec_dev->dev device because the kernel uses pdev->dev to free the managed resources, so we will end up with a leaking codec_clk reference"
@@ -231,7 +231,7 @@ static int imx_wm8962_probe(struct platform_device *pdev) goto fail; }
pdev->dev from here:
codec_clk = devm_clk_get(&codec_dev->dev, NULL);
codec_clk = clk_get(&codec_dev->dev, NULL);
is different from &codec_dev->dev.
I get that they are different, I just don't get why changing from a devm_clk_get to a clk_get is a better fix than changing &codec->dev to &pdev->dev.
Thanks, Charles