]> git.baikalelectronics.ru Git - kernel.git/commit
clk: imx: add gatable clock divider support
authorA.s. Dong <aisheng.dong@nxp.com>
Wed, 14 Nov 2018 13:01:35 +0000 (13:01 +0000)
committerStephen Boyd <sboyd@kernel.org>
Mon, 3 Dec 2018 19:31:23 +0000 (11:31 -0800)
commite0a9069bf3850644deeb3aa6e8d8730ef46d00fb
tree8f1960e23c97553a0d10eab2c71f533859113704
parenta9e80a095d95d1159b26f73bd6d9c2fadc7fb411
clk: imx: add gatable clock divider support

For dividers with zero indicating clock is disabled, instead of giving a
warning each time like "clkx: Zero divisor and CLK_DIVIDER_ALLOW_ZERO not
set" in exist code, we'd like to introduce enable/disable function for it.
e.g.
000b - Clock disabled
001b - Divide by 1
010b - Divide by 2
...

Set rate when the clk is disabled will cache the rate request and only
when the clk is enabled will the driver actually program the hardware to
have the requested divider value. Similarly, when the clk is disabled we'll
write a 0 there, but when the clk is enabled we'll restore whatever rate
(divider) was chosen last.

It does mean that recalc rate will be sort of odd, because when the clk is
off it will return 0, and when the clk is on it will return the right rate.
So to make things work, we'll need to return the cached rate in recalc rate
when the clk is off and read the hardware when the clk is on.

NOTE for the default off divider, the recalc rate will still return 0 as
there's still no proper preset rate. Enable such divider will give user
a reminder error message.

Cc: Stephen Boyd <sboyd@codeaurora.org>
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
[sboyd@kernel.org: Include clk.h for sparse warnings]
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/imx/Makefile
drivers/clk/imx/clk-divider-gate.c [new file with mode: 0644]
drivers/clk/imx/clk.h