clk: lpc32xx: add a quirk for PWM and MS clock dividers
authorVladimir Zapolskiy <vz@mleia.com>
Tue, 4 Apr 2017 19:32:03 +0000 (19:32 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 12 Apr 2017 10:41:15 +0000 (12:41 +0200)
commite02a5d1d5a053374dffe9ed6300113a125121f29
treec98efa84dcd3dddfc4b5aaf8de7f94f27f383a07
parent666d5f34d8972d1d159b9f79f56620b6e817cc8a
clk: lpc32xx: add a quirk for PWM and MS clock dividers

[ Upstream commit f84d42a9cffc4ecd96f1ce3a038f841782142eb2 ]

In common clock framework CLK_DIVIDER_ONE_BASED or'ed with
CLK_DIVIDER_ALLOW_ZERO flags indicates that
1) a divider clock may be set to zero value,
2) divider's zero value is interpreted as a non-divided clock.

On the LPC32xx platform clock dividers of PWM and memory card clocks
comply with the first condition, but zero value means a gated clock,
thus it may happen that the divider value is not updated when
the clock is enabled and the clock remains gated.

The change adds one-shot quirks, which check for zero value of divider
on initialization and set it to a non-zero value, therefore in runtime
a gate clock will work as expected.

Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
Reviewed-by: Sylvain Lemieux <slemieux.tyco@gmail.com>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/clk/nxp/clk-lpc32xx.c