Re: OMAP4 DSS clock setup

Cousson, Benoit
2011-03-30T09:32:20Z

Hi Tomi,

On 3/30/2011 8:48 AM, Valkeinen, Tomi wrote:
> Hi Benoit, Paul,
>
> I've been discussing with Sumit and Archit to understand how the DSS
> clocks are set up on OMAP4. I think I now have some idea how things
> work, but I'm still at loss why things are the way they are.
>
> So, if I look at OMAP4 TRM, Figure 10-4 DSS Clock Tree, there are two
> clocks in PRCM block that are relevant to this discussion: DSS_L3_ICLK
> and DSS_FCLK. To my understanding DSS_L3_ICLK is not really
> controllable, but it is affected by MODULEMODE bit.
>
> Then we have two relevant clocks defined in clock44xx_data.c: dss_fck
> and dss_dss_clk. dss_fck controls the MODULEMODE bit, and dss_dss_clk is
> the TRM's DSS_FCLK.
>
> Was that correct?

Yes. For the moment, but this is not the final state.

> If so, from DSS driver's perspective, the dss_fck sounds very much like
> an interface clock (it's always needed when DSS is used) and dss_dss_clk
> sounds very much like functional clock (it's always needed, except if
> DSI PLL is used for DSS functional clock).
>
> If "dss_fck" would control DSS_FCLK and "dss_ick" would control
> MODULEMODE, they would be about the same as the clocks in OMAP2 and 3,
> and we wouldn't need any omap4 spesific trickery in the DSS driver.
> ("dss_dss_clk" wouldn't be needed).

You cannot play with iclk, because this clock is supposed to be handled
automatically by the HW. This was the case on OMAP2 & 3 as well BTW.

> Why are the clocks set up in this strange fashion?

There are a lot of historical reasons and some changes from OMAP3 to
OMAP4 that are not well handle by the current clock fmwk / hwmod fmwk.
We are still trying to mimic OMAP2&3 clock management for OMAP4, and in
fact we should do the opposite.

The issue is due to the confusion with the MODULEMODE and the real input
clock state.
The MODULEMODE is just enabling the module (using iclk, fclk, opt clock)
or whatever clk is used as input clock.
In the case of the DSS, several optional clocks can be used as fclk.
SYS_CLK, DSSCLK or the output of the DSI.
In theory the MODULEMODE should be directly handled by hwmod since it is
similar to enable / disable the module. Using a clock to manage the
MODULEMODE is a temporary hack we are still using for the moment but
that should be removed at some point.

The clock fmwk should be used only to select / enable the proper
optional clocks.

In theory the current OMAP2 and OMAP3 iclken/fclken at PRCM level should
be handled as a OMAP4 MODULEMODE and not as 2 clock nodes like it is the
case today. Then we will have a consistent module / clock management.

Hope this will help and clarify a little bit the current mess :-)

Bottom-line is that you cannot do much at your level, the whole clock +
hwmod fmwk should be improved.

Benoit