linux/drivers/clk/imx
A.s. Dong 4046807942 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>
2018-12-03 11:31:23 -08:00
..
clk-busy.c clk: imx: Add CLK_IS_CRITICAL flag for busy divider and busy mux 2018-04-06 11:27:24 -07:00
clk-cpu.c clk: imx: cpu clock should be always critical 2018-10-17 08:26:03 -07:00
clk-divider-gate.c clk: imx: add gatable clock divider support 2018-12-03 11:31:23 -08:00
clk-fixup-div.c clk: move the common clock's to_clk_*(_hw) macros to clk-provider.h 2016-01-29 12:59:50 -08:00
clk-fixup-mux.c clk: move the common clock's to_clk_*(_hw) macros to clk-provider.h 2016-01-29 12:59:50 -08:00
clk-gate2.c clk: imx: make clk_ops const 2017-11-01 23:25:49 -07:00
clk-gate-exclusive.c clk: move the common clock's to_clk_*(_hw) macros to clk-provider.h 2016-01-29 12:59:50 -08:00
clk-imx1.c ARM: i.MX: Remove i.MX1 non-DT support 2016-08-09 22:47:26 +08:00
clk-imx6q.c clk: imx6q: add mmdc0 ipg clock 2018-10-17 11:16:02 -07:00
clk-imx6sl.c clk: imx6sl: add mmdc ipg clocks 2018-10-17 11:15:51 -07:00
clk-imx6sll.c clk: imx6sll: add mmdc1 ipg clock 2018-10-17 11:15:44 -07:00
clk-imx6sx.c clk: imx6sx: add mmdc1 ipg clock 2018-10-17 11:15:32 -07:00
clk-imx6ul.c clk: imx6ul: add mmdc1 ipg clock 2018-10-17 11:15:20 -07:00
clk-imx7d.c clk: imx7d: remove CLK_IS_CRITICAL flag for arm_a7_root_clk 2018-10-17 08:26:04 -07:00
clk-imx21.c clk: i.MX: Remove clk.h include 2015-07-20 10:52:49 -07:00
clk-imx25.c clk: imx25: Remove osc clock from driver 2015-11-25 11:49:42 +08:00
clk-imx27.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
clk-imx31.c ARM: clk: imx31: properly init clocks for machines with DT 2016-11-01 16:44:46 +08:00
clk-imx35.c ARM: clk-imx35: annotate clk enum with number values 2016-09-14 11:28:04 -07:00
clk-imx51-imx53.c clk: imx51-imx53: Include sizes.h to silence compile errors 2018-07-06 14:08:04 -07:00
clk-pfd.c clk: i.MX: Remove clk.h include 2015-07-20 10:52:49 -07:00
clk-pllv1.c We have two changes to the core framework this time around. The first being a 2017-11-17 20:04:24 -08:00
clk-pllv2.c clk: imx: pllv2: avoid using uninitialized values 2018-03-16 15:40:41 -07:00
clk-pllv3.c clk: imx7d: Fix the DDR PLL enable bit 2017-06-06 17:42:41 -07:00
clk-vf610.c clk: imx: constify clk_div_table 2017-08-30 22:30:27 -07:00
clk.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
clk.h clk: imx: add gatable clock divider support 2018-12-03 11:31:23 -08:00
Makefile clk: imx: add gatable clock divider support 2018-12-03 11:31:23 -08:00