Thread (45 messages) 45 messages, 3 authors, 2012-05-24
STALE5125d

[PATCH-V3 3/3] ARM: OMAP3+: clock33xx: Add AM33XX clock tree data

From: Hiremath, Vaibhav <hidden>
Date: 2012-05-23 15:59:06
Also in: linux-omap

On Wed, May 23, 2012 at 20:38:27, Paul Walmsley wrote:
Hi Vaibhav

On Wed, 23 May 2012, Hiremath, Vaibhav wrote:
quoted
I used your cleaned version of clocktree data, where you have removed all 
leaf-nodes and merged multiple clocks nodes into one; but it did not work. I 
attempted to review the cleanup and tried to debug, but found it bit hard to 
come back to working clocktree from stripped version. So moved back to my 
submitted clocktree and started stripping the clock leaf-nodes, same way you 
had done it. Now I reached to the stage where I have working clocktree 
without peripheral leaf-nodes and booting on BeagleBone.
Okay great, please post that to the list so we can diff it against the 
version that I did, and also so we can queue it for merging in 3.6?
Just doing final round of review and cleanup...may be by tomorrow, I should 
be able to submit it (without common-clock framework).

quoted
Just FYI (may need your help), I got into some issues (still open) during 
this cleanup -

1. In cases where we have clock selection option for node-leafs, like, 
   Timers, I removed enable_reg entry from the node, which results into a 
   kernel error message from function omap2_dflt_clk_disable()

clock: clk_disable called on independent clock %s which has no enable_reg
Shouldn't those clocks use clkops_null then?
quoted
2. clkdm_name entry: 
   The issue is, two entries available for clockdomain associated for 
   module/clock 
        - hwmod_data.main_clk and 
        - clk.clkdm_name

   They must match, right? The parent/root clocks flows from one domain to 
   another domain, so I have to keep the nodes just for sake of matching 
   clockdomain entry present in associated main_clk data.

   I am still reviewing the code from Rajendra, but one of Rajendra's patch 
   actually will help here, made it to use hwmod_data.clkdm (if available) 
   always, instead of directly using clk.clkdm.
Well because of this CLKDIV32K snafu, we'll need to keep the clock 
framework-based clockdomain control for AM33xx, at the very least for 
the CLKDIV32K clock.

I'd suggest starting with specifying a clockdomain name for each clock.  
If nothing else, this should help think through the power management 
behavior for each clock.  Then those can be easily removed later with a 
simple grep.
quoted
3. If I understand correctly, hwmod_data.main_clk is functional clock and    
   hwmod_ocp_if.clk is interface clock, right?
Basically, yes.  To be more precise, in cases where 
modules have multiple functional clocks, hwmod_data.main_clk is the 
functional clock that is needed in order for register reads and writes to 
the IP block to succeed.
I believe register read/write to IP block is depends on only interface 
Clocks? Atleast in case of OMAP3, it was like that, right??


Another issues is, 

I came across situation where, two modules fall into different clock domains but their functional clock is happened to be coming from same source/dpll-divider. So in order to satisfy clkdm match between them, I have
kept nodes without enable_regs.


quoted
   So currently, I have mentioned same entry in both the places (especially 
   for Peripherals/modules).
   I am planning to remove ocp_if/clk entry data for all modules..
Hmmm, could you explain this further?
what if, module only has interface clock? Should it be present as main_clk or ocp_if.clk or both??
Example would be, TPCC, TPTC, smartreflex, etc...

Thanks,
Vaibhav
Every ocp_if structure that you create should have an interface clock 
specified.  And almost all of your hwmods should have a main_clk 
specified.


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