Messages in this thread | | | Date | Tue, 02 Dec 2014 11:47:59 +0100 | From | Matteo Facchinetti <> | Subject | Re: Disabled LocalPlus Controller (LPC) clock on MPC512x |
| |
On 26/11/2014 12:49, Alexander Popov wrote: > Hello. > Hi.
> My Freescale TWR-MPC5125 board instantly reboots if I touch > any physical address on the LocalPlus Bus (LPB) for the first time > when Linux has already booted. > > This effect is reproduced by using /dev/mem or loading a kernel module > which works with any peripherals on LPB. > > It took me some time to find out that such crash is caused by > clk_disable_unused() in drivers/clk/clk.c, which disables > LocalPlus Controller (LPC) clock if I don't touch LPB addresses in the > previous initcalls. So starting Linux with clk_ignore_unused bootparam > or inserting dummy LPB reading to some initcall is a temporary fix. > > Is it correct to gate LPC clock? For me yes, because it's physically present on SoC and could not be muxed.
> If yes, how to avoid the mentioned > crashes properly? > > There's a piece of code in arch/powerpc/platforms/512x/clock-commonclk.c > which is doubtful for me: > > /* > * pre-enable those "internal" clock items which never get > * claimed by any peripheral driver, to not have the clock > * subsystem disable them late at startup > */ > clk_prepare_enable(clks[MPC512x_CLK_DUMMY]); > clk_prepare_enable(clks[MPC512x_CLK_E300]); /* PowerPC CPU */ > clk_prepare_enable(clks[MPC512x_CLK_DDR]); /* DRAM */ > clk_prepare_enable(clks[MPC512x_CLK_MEM]); /* SRAM */ > clk_prepare_enable(clks[MPC512x_CLK_IPS]); /* SoC periph */ > clk_prepare_enable(clks[MPC512x_CLK_LPC]); /* boot media */ > > Does it mean that these clocks should be registered with > CLK_IGNORE_UNUSED flag? > Yes, in my opinion this groups of clocks may be considered as "always on", but I don't think that MPC512x_CLK_LPC is an "internal" clock and then It could be enable if really used only. In detail: - may be good to enable MPC512x_CLK_LPC only when localbus is enabled by the dts - if enabled, MPC512x_CLK_LPC have to setup with CLK_IGNORE_UNUSED flag because never get claimed by any driver.
I put in CC "Gerhard Sittig" also beacuse it might be interesting to know his point of view as the author of mpc512x common clock driver.
Regards, Matteo
> Thanks a lot. > Best regards, > Alexander > _______________________________________________ > Linuxppc-dev mailing list > Linuxppc-dev@lists.ozlabs.org > https://lists.ozlabs.org/listinfo/linuxppc-dev
| |