[-,v1,1/2] V4L - vpfe capture - make clocks configurable

Message ID 871vj1iclh.fsf@deeprootsystems.com (mailing list archive)
State Superseded, archived
Headers

Commit Message

Kevin Hilman Dec. 11, 2009, 6:34 p.m. UTC
  "Karicheri, Muralidharan" <m-karicheri2@ti.com> writes:

>>> Kevin,
>>>
>>> I think I have figured it out...
>>>
>>> First issue was that I was adding my entry at the end of dm644x_clks[]
>>> array. I need to add it before the CLK(NULL, NULL, NULL)
>>>
>>> secondly, your suggestion didn't work as is. This is what I had to
>>> do to get it working...
>>>
>>> static struct clk ccdc_master_clk = {
>>> 	.name = "dm644x_ccdc",
>>> 	.parent = &vpss_master_clk,
>>> };
>>>
>>> static struct clk ccdc_slave_clk = {
>>> 	.name = "dm644x_ccdc",
>>> 	.parent = &vpss_slave_clk,
>>> };
>
> It doesn't work with out doing this. The cat /proc/davinci_clocks hangs with
> your suggestion implemented...

Can you track down the hang.  It sounds like a bug in the walking of
the clock tree for davinci_clocks.

>>
>>You should not need to add new clocks with new names.  I don't thinke
>>the name field of the struct clk is used anywhere in the matching.
>>I think it's only used in /proc/davinci_clocks
>>
>>> static struct davinci_clk dm365_clks = {
>>> ....
>>> ....
>>> CLK("dm644x_ccdc", "master", &ccdc_master_clk),
>>> CLK("dm644x_ccdc", "slave", &ccdc_slave_clk),
>>
>>Looks like the drivers name is 'dm644x_ccdc', not 'isif'.  I'm
>>guessing just this should work without having to add new clock names.
>>
> No. I have mixed up the names. ISIF is for the new ISIF driver on DM365.
> Below are for DM644x ccdc driver. With just these entries added, two
> things observed....
>
> 1) Only one clock is shown disabled (usually many are shown disabled) during bootup
> 2) cat /proc/davinci_clocks hangs.
>
> So this is the only way I got it working.

Hmm, it worked just fine for me without any of these side effects.  I
applied the simple patch below on top of current master branch.  It booted
fine showing all the unused clocks being disabled, and I was able to 
see davinci_clocks just fine:




[...]
Clocks: disable unused uart1                                                    
Clocks: disable unused uart2                                                    
Clocks: disable unused emac                                                     
Clocks: disable unused ide                                                      
Clocks: disable unused asp0                                                     
Clocks: disable unused mmcsd                                                    
Clocks: disable unused spi                                                      
Clocks: disable unused usb                                                      
Clocks: disable unused vlynq                                                    
Clocks: disable unused pwm0                                                     
Clocks: disable unused pwm1                                                     
Clocks: disable unused pwm2                                                     
Clocks: disable unused timer1    
[...]

root@DM644x:~# uname -r                                                         
2.6.32-arm-davinci-default-06873-g1a7277b-dirty                                 
root@DM644x:~# cat /debug/davinci_clocks                                        
ref_clk           users= 8      27000000 Hz                                     
  pll1            users= 8 pll 594000000 Hz                                     
    pll1_sysclk1  users= 0 pll 594000000 Hz                                     
      dsp         users= 1 psc 594000000 Hz                                     
    pll1_sysclk2  users= 2 pll 297000000 Hz                                     
      arm         users= 2 psc 297000000 Hz                                     
    pll1_sysclk3  users= 0 pll 198000000 Hz                                     
      vpss_master users= 0 psc 198000000 Hz                                     
      vpss_slave  users= 0 psc 198000000 Hz                                     
    pll1_sysclk5  users= 3 pll  99000000 Hz                                     
      emac        users= 1 psc  99000000 Hz                                     
      ide         users= 0 psc  99000000 Hz                                     
      asp0        users= 0 psc  99000000 Hz                                     
      mmcsd       users= 0 psc  99000000 Hz                                     
      spi         users= 0 psc  99000000 Hz                                     
      gpio        users= 1 psc  99000000 Hz                                     
      usb         users= 0 psc  99000000 Hz                                     
      vlynq       users= 0 psc  99000000 Hz                                     
      aemif       users= 1 psc  99000000 Hz                                     
    pll1_aux_clk  users= 3 pll  27000000 Hz                                     
      uart0       users= 1 psc  27000000 Hz                                     
      uart1       users= 0 psc  27000000 Hz                                     
      uart2       users= 0 psc  27000000 Hz                                     
      i2c         users= 1 psc  27000000 Hz                                     
      pwm0        users= 0 psc  27000000 Hz                                     
      pwm1        users= 0 psc  27000000 Hz                                     
      pwm2        users= 0 psc  27000000 Hz                                     
      timer0      users= 1 psc  27000000 Hz                                     
      timer1      users= 0 psc  27000000 Hz                                     
      timer2      users= 1 psc  27000000 Hz                                     
    pll1_sysclkbp users= 0 pll  27000000 Hz                                     
  pll2            users= 0 pll 648000000 Hz                                     
    pll2_sysclk1  users= 0 pll  54000000 Hz                                     
    pll2_sysclk2  users= 0 pll 324000000 Hz                                     
    pll2_sysclkbp users= 0 pll  13500000 Hz                                     
root@DM644x:~# 

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Comments

m-karicheri2@ti.com Dec. 11, 2009, 8:48 p.m. UTC | #1
Kevin,

That is what I had seen. I will check it again on Monday
and let you know.

Murali Karicheri
Software Design Engineer
Texas Instruments Inc.
Germantown, MD 20874
phone: 301-407-9583
email: m-karicheri2@ti.com

>-----Original Message-----
>From: Kevin Hilman [mailto:khilman@deeprootsystems.com]
>Sent: Friday, December 11, 2009 1:35 PM
>To: Karicheri, Muralidharan
>Cc: davinci-linux-open-source@linux.davincidsp.com; linux-
>media@vger.kernel.org
>Subject: Re: [PATCH - v1 1/2] V4L - vpfe capture - make clocks configurable
>
>"Karicheri, Muralidharan" <m-karicheri2@ti.com> writes:
>
>>>> Kevin,
>>>>
>>>> I think I have figured it out...
>>>>
>>>> First issue was that I was adding my entry at the end of dm644x_clks[]
>>>> array. I need to add it before the CLK(NULL, NULL, NULL)
>>>>
>>>> secondly, your suggestion didn't work as is. This is what I had to
>>>> do to get it working...
>>>>
>>>> static struct clk ccdc_master_clk = {
>>>> 	.name = "dm644x_ccdc",
>>>> 	.parent = &vpss_master_clk,
>>>> };
>>>>
>>>> static struct clk ccdc_slave_clk = {
>>>> 	.name = "dm644x_ccdc",
>>>> 	.parent = &vpss_slave_clk,
>>>> };
>>
>> It doesn't work with out doing this. The cat /proc/davinci_clocks hangs
>with
>> your suggestion implemented...
>
>Can you track down the hang.  It sounds like a bug in the walking of
>the clock tree for davinci_clocks.
>
>>>
>>>You should not need to add new clocks with new names.  I don't thinke
>>>the name field of the struct clk is used anywhere in the matching.
>>>I think it's only used in /proc/davinci_clocks
>>>
>>>> static struct davinci_clk dm365_clks = {
>>>> ....
>>>> ....
>>>> CLK("dm644x_ccdc", "master", &ccdc_master_clk),
>>>> CLK("dm644x_ccdc", "slave", &ccdc_slave_clk),
>>>
>>>Looks like the drivers name is 'dm644x_ccdc', not 'isif'.  I'm
>>>guessing just this should work without having to add new clock names.
>>>
>> No. I have mixed up the names. ISIF is for the new ISIF driver on DM365.
>> Below are for DM644x ccdc driver. With just these entries added, two
>> things observed....
>>
>> 1) Only one clock is shown disabled (usually many are shown disabled)
>during bootup
>> 2) cat /proc/davinci_clocks hangs.
>>
>> So this is the only way I got it working.
>
>Hmm, it worked just fine for me without any of these side effects.  I
>applied the simple patch below on top of current master branch.  It booted
>fine showing all the unused clocks being disabled, and I was able to
>see davinci_clocks just fine:
>
>
>diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-
>davinci/dm644x.c
>index e65e29e..e6f3570 100644
>--- a/arch/arm/mach-davinci/dm644x.c
>+++ b/arch/arm/mach-davinci/dm644x.c
>@@ -293,8 +293,8 @@ struct davinci_clk dm644x_clks[] = {
>        CLK(NULL, "dsp", &dsp_clk),
>        CLK(NULL, "arm", &arm_clk),
>        CLK(NULL, "vicp", &vicp_clk),
>-       CLK(NULL, "vpss_master", &vpss_master_clk),
>-       CLK(NULL, "vpss_slave", &vpss_slave_clk),
>+       CLK("dm644x_ccdc", "master", &vpss_master_clk),
>+       CLK("dm644x_ccdc", "slave", &vpss_slave_clk),
>        CLK(NULL, "arm", &arm_clk),
>        CLK(NULL, "uart0", &uart0_clk),
>        CLK(NULL, "uart1", &uart1_clk),
>
>
>[...]
>Clocks: disable unused uart1
>Clocks: disable unused uart2
>Clocks: disable unused emac
>Clocks: disable unused ide
>Clocks: disable unused asp0
>Clocks: disable unused mmcsd
>Clocks: disable unused spi
>Clocks: disable unused usb
>Clocks: disable unused vlynq
>Clocks: disable unused pwm0
>Clocks: disable unused pwm1
>Clocks: disable unused pwm2
>Clocks: disable unused timer1
>[...]
>
>root@DM644x:~# uname -r
>2.6.32-arm-davinci-default-06873-g1a7277b-dirty
>root@DM644x:~# cat /debug/davinci_clocks
>ref_clk           users= 8      27000000 Hz
>  pll1            users= 8 pll 594000000 Hz
>    pll1_sysclk1  users= 0 pll 594000000 Hz
>      dsp         users= 1 psc 594000000 Hz
>    pll1_sysclk2  users= 2 pll 297000000 Hz
>      arm         users= 2 psc 297000000 Hz
>    pll1_sysclk3  users= 0 pll 198000000 Hz
>      vpss_master users= 0 psc 198000000 Hz
>      vpss_slave  users= 0 psc 198000000 Hz
>    pll1_sysclk5  users= 3 pll  99000000 Hz
>      emac        users= 1 psc  99000000 Hz
>      ide         users= 0 psc  99000000 Hz
>      asp0        users= 0 psc  99000000 Hz
>      mmcsd       users= 0 psc  99000000 Hz
>      spi         users= 0 psc  99000000 Hz
>      gpio        users= 1 psc  99000000 Hz
>      usb         users= 0 psc  99000000 Hz
>      vlynq       users= 0 psc  99000000 Hz
>      aemif       users= 1 psc  99000000 Hz
>    pll1_aux_clk  users= 3 pll  27000000 Hz
>      uart0       users= 1 psc  27000000 Hz
>      uart1       users= 0 psc  27000000 Hz
>      uart2       users= 0 psc  27000000 Hz
>      i2c         users= 1 psc  27000000 Hz
>      pwm0        users= 0 psc  27000000 Hz
>      pwm1        users= 0 psc  27000000 Hz
>      pwm2        users= 0 psc  27000000 Hz
>      timer0      users= 1 psc  27000000 Hz
>      timer1      users= 0 psc  27000000 Hz
>      timer2      users= 1 psc  27000000 Hz
>    pll1_sysclkbp users= 0 pll  27000000 Hz
>  pll2            users= 0 pll 648000000 Hz
>    pll2_sysclk1  users= 0 pll  54000000 Hz
>    pll2_sysclk2  users= 0 pll 324000000 Hz
>    pll2_sysclkbp users= 0 pll  13500000 Hz
>root@DM644x:~#

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Patch

diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c
index e65e29e..e6f3570 100644
--- a/arch/arm/mach-davinci/dm644x.c
+++ b/arch/arm/mach-davinci/dm644x.c
@@ -293,8 +293,8 @@  struct davinci_clk dm644x_clks[] = {
        CLK(NULL, "dsp", &dsp_clk),
        CLK(NULL, "arm", &arm_clk),
        CLK(NULL, "vicp", &vicp_clk),
-       CLK(NULL, "vpss_master", &vpss_master_clk),
-       CLK(NULL, "vpss_slave", &vpss_slave_clk),
+       CLK("dm644x_ccdc", "master", &vpss_master_clk),
+       CLK("dm644x_ccdc", "slave", &vpss_slave_clk),
        CLK(NULL, "arm", &arm_clk),
        CLK(NULL, "uart0", &uart0_clk),
        CLK(NULL, "uart1", &uart1_clk),