]> git.karo-electronics.de Git - karo-tx-linux.git/commit
OMAPDSS: DISPC: get dss clock rate from dss driver
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Wed, 12 Dec 2012 08:37:03 +0000 (10:37 +0200)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Wed, 12 Dec 2012 11:34:13 +0000 (13:34 +0200)
commit5aaee69d7fe02d1ffb76b6a31a588efa5f2742e3
tree888cd43ba85b3baf7741f598f1ddcac30b3a2003
parentd10ecc5887a5671f2c71752b1624549a4a48b1fe
OMAPDSS: DISPC: get dss clock rate from dss driver

Dispc currently gets dispc's fck with clk_get() and uses clk_get_rate()
to get the rate for scaling calculations. This causes a problem with
common clock framework, as omapdss uses the dispc functions inside a
spinlock, and common clock framework uses a mutex in clk_get_rate().

Looking at the DSS clock tree, the above use of the dispc fck is not
quite correct. The DSS_FCLK from PRCM goes to DSS core block, which has
a mux to select the clock for DISPC from various options, so the current
use of dispc fck bypasses that. Fortunately we never change the dispc
clock mux for now.

To fix the issue with clk_get_rate(), this patch caches the dss clock
rate in dss.c when it is set. Dispc will then ask for the clock rate
from dss. While this is not very elegant, it does fix the issue, and
it's not totally wrong when considering that the dispc fck actually
comes via dss.

In the future we should probably look into common clock framework and
see if that could be used to represent the DSS clock tree properly.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/video/omap2/dss/dispc.c
drivers/video/omap2/dss/dss.c
drivers/video/omap2/dss/dss.h