MLK-14897-2: clk: imx7d: do not set the parent of IMX7D_ENET_AXI_ROOT_SRC
authorFabio Estevam <fabio.estevam@nxp.com>
Mon, 2 Oct 2017 15:24:17 +0000 (18:24 +0300)
committerNitin Garg <nitin.garg@nxp.com>
Tue, 20 Mar 2018 19:51:28 +0000 (14:51 -0500)
commit9f76a683d0d9d1f30cae3a8a0996d7250487fc00
treeb3c8d033c64847ddb9f309a4dd2d3470ae2ef4c1
parent2d6ae1e9e965ef4066f0a4c23efbc7781a39d5f1
MLK-14897-2: clk: imx7d: do not set the parent of IMX7D_ENET_AXI_ROOT_SRC

Cherry picked from upstream commit 1fd92dbaabe3 ("clk: imx7d: do not set
the parent of IMX7D_ENET_AXI_ROOT_SRC")

    Booting the kernel on a imx7s-warp leads to several warnings like these:

    [    0.000000] ------------[ cut here ]------------
    [    0.000000] WARNING: CPU: 0 PID: 0 at kernel/locking/lockdep.c:3536 lock_release+0x2f8/0x330
    [    0.000000] releasing a pinned lock

    [    0.000000] ------------[ cut here ]------------
    [    0.000000] WARNING: CPU: 0 PID: 0 at kernel/locking/lockdep.c:2722 trace_hardirqs_on_caller+0x1ac/0x1f4
    [    0.000000] DEBUG_LOCKS_WARN_ON(unlikely(early_boot_irqs_disabled))

    [    0.000000] ---[ end trace cb88537fdc8fa201 ]---
    [    0.000000] bad: scheduling from the idle thread!
    [    0.000000] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W       4.7.0-rc7-next-20160715 #404

    [    0.000000] ------------[ cut here ]------------
    [    0.000000] WARNING: CPU: 0 PID: 0 at kernel/time/sched_clock.c:179 sched_clock_register+0x44/0x1f8
    [    0.000000] Modules linked in:

    [    0.000591] ------------[ cut here ]------------
    [    0.000610] WARNING: CPU: 0 PID: 0 at kernel/time/sched_clock.c:179 sched_clock_register+0x44/0x1f8

    [    0.002084] ------------[ cut here ]------------
    [    0.002104] WARNING: CPU: 0 PID: 0 at init/main.c:576 start_kernel+0x258/0x3b0
    [    0.002114] Interrupts were enabled early

    This fix is along the same lines as 'commit 5e33ebff7edd ("clk: imx7d:
    do not set parent of ethernet time/ref clocks")' and the explanation from that
    commit is:

    "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 fc8726a2c021 ("clk: core: support clocks which requires parents
     enable (part 2)")."

    imx7s-warp does not even use the FEC interface, so we should not really
    configure the parent of IMX7D_ENET_AXI_ROOT_SRC in the common MX7 clock
    driver code.

    The dts file should use the assigned-clocks/assigned-clock-parents method,
    so simply remove the configuration of IMX7D_ENET_AXI_ROOT_SRC parent.

Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Adriana Reus <adriana.reus@nxp.com>
Reviewed-by: Robert Chiras <robert.chiras@nxp.com>
Acked-by: Fugang Duan <fugang.duan@nxp.com>
drivers/clk/imx/clk-imx7d.c