linux/drivers/clk/imx
Lucas Stach 3cc48976e9 clk: imx6q: handle ENET PLL bypass
The ENET PLL is different from the other i.MX6 PLLs, as it has
multiple outputs with different post-dividers, which are all
bypassed if the single bypass bit is activated. The hardware setup
looks something like this:
                                _
refclk-o---PLL---o----DIV1-----| \
       |         |             |M |----OUT1
       o-----------------------|_/
       |         |              _
       |         o----DIV2-----| \
       |         |             |M |----OUT2
       o-----------------------|_/
       |         |              _
       |         `----DIV3-----| \
       |                       |M |----OUT3
       `-----------------------|_/

The bypass bit not only bypasses the PLL, but also the attached
post-dividers. This would be reasonbly straight forward to model
with a single output, or with different bypass bits for each output,
but sadly the HW guys decided that it would be good to actuate all
3 muxes with a single bit.

So the need to have the PLL bypassed for one of the outputs always
affects 2 other (in our model) independent branches of the clock
tree.

This means the decision to bypass this PLL is a system wide design
choice and should not be changed on-the-fly, so we can treat any
bapass configuration as static. As such we can just register the
post-dividiers with a ratio that reflects the bypass status, which
allows us to bypass the PLL without breaking our abstraction model
and with it DT stability.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
2018-12-10 11:39:16 -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-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-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-gate2.c clk: imx: make clk_ops const 2017-11-01 23:25:49 -07: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: handle ENET PLL bypass 2018-12-10 11:39:16 -08: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: imx7d: remove clks_init_on array 2018-10-16 15:27:08 -07:00
Makefile clk: imx: add clock driver for imx6sll 2018-04-06 11:27:27 -07:00