Subject: MX28: leds/pwm: Using pwm driven led as heartbeat leads to kernel warning

From: [email-masked] (Alexandre Belloni)
Date: Tue, 8 Apr 2014 11:04:43 +0200

On 08/04/2014 at 16:49:52 +0800, Shawn Guo wrote :
> On Tue, Apr 08, 2014 at 10:41:50AM +0200, Alexandre Belloni wrote:
> > On 08/04/2014 at 16:18:49 +0800, Shawn Guo wrote :
> > > On Tue, Apr 08, 2014 at 09:59:16AM +0200, Alexandre Belloni wrote:
> > > > The driver using the PWM should test the flag, have a look at:
> > > > http://lxr.free-electrons.com/source/drivers/leds/leds-pwm.c#L183
> > > 
> > > Ah, right, that' how the flag works.  Thanks, Alexandre.  I send a patch
> > > to set the flag for pwm-mxs driver shortly.
> > > 
> > 
> > Actually, I had a closer look and I believe using clk_prepare_enable()
> > in .config is wrong. Let me prepare a patch.
> 
> Yes, we can split clk_prepare_enable() into clk_prepare() and
> clk_enable(), call the former in .probe() and only the later in .config
> hook.
> 
> But it only fixes the problem partially.  If you look at Stefan's report
> closely, you can see the warning actually comes from the clk_get_rate()
> call which holds a mutex too.
> 

Right, I missed that one. I would say it is still worth doing that
change anyway as using test_bit(PWMF_ENABLED, &pwm->flags) is
unnecessary because clk_enable()/clk_disable() maintain a usage count.

-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com