Re: [PATCH 2/4] i2c: designware-platdrv: fix unbalanced clk enable and prepare

From: Jarkko Nikula
Date: Thu Apr 21 2016 - 03:40:08 EST


On 04/21/2016 05:40 AM, Jisheng Zhang wrote:
Dear Jarkko, Andy,

On Wed, 20 Apr 2016 17:16:00 +0300 Andy Shevchenko wrote:

On Wed, 2016-04-20 at 15:55 +0300, Jarkko Nikula wrote:
I see Andy's 1cb715ca4694 ("i2c-designware: move to managed functions
(devm_*)") removed it but at quick look drivers/clk/clk-devres.c:
devm_clk_release() calls only clk_put and I don't see disable is done
down the path.

The following is a mistake of the mentioned patch.
- clk_disable_unprepare(dev->clk);

I did at the same mistake in dw_dmac driver which had been fixed later
in the commit 8be4f523b480 ("dmaengine: dw: fix regression in dw_probe()
function").


As Andy pointed out, managed devm_clk_get can only automatically put clk
but doesn't unprepare and disable the clk

Ok, then it makes sense to move this fix first in the series and queue for stable v4.5+. Then another from you, Andy or me for kernels before b33af11de236 ("i2c: designware: Do not require clock when SSCN and FFCN are provided") that introduced the i2c_dw_plat_prepare_clk().

--
Jarkko