Thread (1 message) 1 message, 1 author, 2014-09-25

[PATCH v2] soc: qcom: do not disable the iface clock in probe

From: khilman@kernel.org (Kevin Hilman)
Date: 2014-09-25 22:59:07
Also in: linux-arm-msm, lkml

Srinivas Kandagatla [off-list ref] writes:
On 24/09/14 16:22, Kevin Hilman wrote:
quoted
Srinivas Kandagatla [off-list ref] writes:
quoted
since commit 31964ffebbb9 ("tty: serial: msm: Remove direct access to GSBI")'
serial hangs if earlyprintk are enabled.

This hang is noticed only when the GSBI driver is probed and all the
earlyprintks before gsbi probe are seen on the console.
The reason why it hangs is because GSBI driver disables hclk in its
probe function without realizing that the serial IP might be in use by
a bootconsole. As gsbi driver disables the clock in probe the
bootconsole locks up.
quoted
Turning off hclk's could be dangerous if there are system components
like earlyprintk using the hclk.
This seems rather fragile.  Isn't the right fix for these other
components to use the clk api to ensure the clock does not get enabled?
Here we are depending on the bootloader to setup the clocks.

Am not sure if we can really use clk apis at that early stage of bootstrap.
Not that early, but all that matters is that you clk_enable() sometime
before the GSBI driver calls clk_disable().

If the clocks are always enabled by the bootloader, the platforms clock
driver might check for those and ensure they are enabled, so that linux
is aware of it, and bugs like this one are avoided.

IMO, clock enable/disable shuffling in the GSBI driver to avoid UART
console problems is just papering over a bug that's waiting to pop up
elsewhere.

Kevin
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help