linux/drivers/clk/imx
Stefan Agner 5e33ebff7e clk: imx7d: do not set parent of ethernet time/ref clocks
All device trees currently in mainline specify the time clock parent
using the assigned-clocks/assigned-clock-parents method, there is no
need to statically assign the parent in the core clock driver.
Also all current boards provide an Ethernet reference clock for the
PHY externally, hence configuring the internal PHY reference clock.

Furthermore, and the actual driver of this patch, specify ethernet
related parents at that early point in boot leads to a warning:
bad: scheduling from the idle thread!

The reason for the warning is that setting the parent enables the ENET
PLL since we are using CLK_OPS_PARENT_ENABLE. Enabling the ENET PLL can
cause clk_pllv3_wait_lock to sleep. See also:
commit fc8726a2c0 ("clk: core: support clocks which requires parents
enable (part 2)").

Note that setting the ENET AXI root clock parent also requires ENET
PLL to be enabled. However, U-Boot typically leaves the ENET PLL on,
hence when the framework sets the parent of the first clock, it does
not need to wait for the PLL to come up. But because there is currently
no user of that clock, the PLL gets disabled after setting the parent.
Therefore, subsequent reparenting calls of any clock which somehow rely
on the ENET PLL, need to reenable the ENET PLL which leads to a sleep.
Removing those subsequent reparenting calls works around this issue.

Also remove comments. The code is really verbose enough.

Signed-off-by: Stefan Agner <stefan@agner.ch>
Tested-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: Michael Turquette <mturquette@baylibre.com>
Link: lkml.kernel.org/r/20160703174813.13970-1-stefan@agner.ch
2016-07-12 15:31:14 -07:00
..
Makefile clk: imx: add imx6ul clk tree support 2015-07-14 15:02:13 +08:00
clk-busy.c clk: move the common clock's to_clk_*(_hw) macros to clk-provider.h 2016-01-29 12:59:50 -08:00
clk-cpu.c clk: imx: clk-cpu: Include "clk.h" header file 2015-06-03 14:49:34 +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-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: clk-gate2: allow custom gate configuration 2016-03-31 17:01:55 +08:00
clk-imx1.c clk: i.MX: Remove clk.h include 2015-07-20 10:52:49 -07:00
clk-imx6q.c clk: imx: fix pll clock parents 2016-06-12 21:21:41 +08:00
clk-imx6sl.c clk: imx: fix pll clock parents 2016-06-12 21:21:41 +08:00
clk-imx6sx.c clk: imx: fix pll clock parents 2016-06-12 21:21:41 +08:00
clk-imx6ul.c clk: imx6ul: fix gpt2 clock names 2016-06-16 09:05:55 +08:00
clk-imx7d.c clk: imx7d: do not set parent of ethernet time/ref clocks 2016-07-12 15:31:14 -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 clk: imx27: add missing of_node_put 2015-10-21 16:16:34 -07:00
clk-imx31.c clk: imx31: add missing of_node_put 2015-10-21 16:16:34 -07:00
clk-imx35.c ARM: dts: imx35: restore existing used clock enumeration 2016-04-18 12:37:21 +08:00
clk-imx51-imx53.c clk: imx5: ipu_di_sel clocks can set parent rates 2015-12-02 21:02:33 +08:00
clk-pfd.c clk: i.MX: Remove clk.h include 2015-07-20 10:52:49 -07:00
clk-pllv1.c imx/clk-pllv1: fix wrong do_div() usage 2015-11-30 12:58:35 -08:00
clk-pllv2.c imx/clk-pllv2: fix wrong do_div() usage 2015-11-30 12:58:38 -08:00
clk-pllv3.c clk: imx: refine the powerdown bit of clk-pllv3 2016-06-16 09:05:05 +08:00
clk-vf610.c clk: imx: vf610: Disable automatic clock gating for lpuart in LPSTOP mode 2016-07-08 11:38:17 -07:00
clk.c clk: imx: add common logic to detect early UART usage 2015-09-25 21:58:41 -07:00
clk.h clk: imx: add clk api for supporting CLK_OPS_PARENT_ENABLE clocks 2016-07-01 17:43:19 -07:00