Re: [PATCH] ARM: at91/tc: fix clock source id for tc block > 1

2013-04-03 Thread Nicolas Ferre
On 04/03/2013 09:59 AM, Boris BREZILLON :
> On 03/04/2013 09:26, Nicolas Ferre wrote:
>> On 04/03/2013 06:45 AM, Jean-Christophe PLAGNIOL-VILLARD :
>>> On 18:46 Tue 02 Apr , Boris BREZILLON wrote:
 This patch fixes wrong clock request for TC block 2.
 The second block was using t0_clk, t1_clk and t2_clk clks instead of
 t3_clk, t4_clk and t5_clk clks.

>>> this is intended as we have 3 clock per device
> You're right.
>>
>> True.
>> Boris, did you hit an issue with former code that your patch is solving?
>> What is the reason for this patch?
> I should have taken a closer look at the code before sending this patch.
> I mistook clk name for conid devid association.
> 
> As I am enabling the tc block 1 clocks in the bootstrap code, I thought
> this was the reason for these clocks to be enabled after the kernel boot.
> 
> But I tried to disable these clocks in the bootstrap and this works fine.
> 
> Sorry if I bothered you.

Not bothered at all Boris! This is exactly how I like to see the
community working together.

Please feel free to send more and more patches about AT91: this is
always valuable for us.

Best regards,

 Signed-off-by: Boris BREZILLON 
 ---
   drivers/misc/atmel_tclib.c |   24 
   1 file changed, 16 insertions(+), 8 deletions(-)

 diff --git a/drivers/misc/atmel_tclib.c b/drivers/misc/atmel_tclib.c
 index c8d8e38..768a988 100644
 --- a/drivers/misc/atmel_tclib.c
 +++ b/drivers/misc/atmel_tclib.c
 @@ -142,6 +142,8 @@ static int __init tc_probe(struct
 platform_device *pdev)
   struct atmel_tc *tc;
   struct clk*clk;
   intirq;
 +charclk_id[7];
 +intclk_offset;

   if (!platform_get_resource(pdev, IORESOURCE_MEM, 0))
   return -EINVAL;
 @@ -156,25 +158,31 @@ static int __init tc_probe(struct
 platform_device *pdev)

   tc->pdev = pdev;

 -clk = clk_get(&pdev->dev, "t0_clk");
 -if (IS_ERR(clk)) {
 -kfree(tc);
 -return -EINVAL;
 -}
 -
   /* Now take SoC information if available */
   if (pdev->dev.of_node) {
   const struct of_device_id *match;
   match = of_match_node(atmel_tcb_dt_ids, pdev->dev.of_node);
   if (match)
   tc->tcb_config = match->data;
 +clk_offset = of_alias_get_id(tc->pdev->dev.of_node, "tcb");
 +} else
 +clk_offset = pdev->id;
 +clk_offset *= 3;
 +
 +snprintf(clk_id, sizeof(clk_id), "t%d_clk", clk_offset++);
 +clk = clk_get(&pdev->dev, clk_id);
 +if (IS_ERR(clk)) {
 +kfree(tc);
 +return -EINVAL;
   }

   tc->clk[0] = clk;
 -tc->clk[1] = clk_get(&pdev->dev, "t1_clk");
 +snprintf(clk_id, sizeof(clk_id), "t%d_clk", clk_offset++);
 +tc->clk[1] = clk_get(&pdev->dev, clk_id);
   if (IS_ERR(tc->clk[1]))
   tc->clk[1] = clk;
 -tc->clk[2] = clk_get(&pdev->dev, "t2_clk");
 +snprintf(clk_id, sizeof(clk_id), "t%d_clk", clk_offset++);
 +tc->clk[2] = clk_get(&pdev->dev, clk_id);
   if (IS_ERR(tc->clk[2]))
   tc->clk[2] = clk;

 -- 
 1.7.9.5


 ___
 linux-arm-kernel mailing list
 linux-arm-ker...@lists.infradead.org
 http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>>>
>>
>>
> 
> 
> 


-- 
Nicolas Ferre
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ARM: at91/tc: fix clock source id for tc block > 1

2013-04-03 Thread Boris BREZILLON

On 03/04/2013 09:26, Nicolas Ferre wrote:

On 04/03/2013 06:45 AM, Jean-Christophe PLAGNIOL-VILLARD :

On 18:46 Tue 02 Apr , Boris BREZILLON wrote:

This patch fixes wrong clock request for TC block 2.
The second block was using t0_clk, t1_clk and t2_clk clks instead of
t3_clk, t4_clk and t5_clk clks.


this is intended as we have 3 clock per device

You're right.


True.
Boris, did you hit an issue with former code that your patch is solving?
What is the reason for this patch?

I should have taken a closer look at the code before sending this patch.
I mistook clk name for conid devid association.

As I am enabling the tc block 1 clocks in the bootstrap code, I thought 
this was the reason for these clocks to be enabled after the kernel boot.


But I tried to disable these clocks in the bootstrap and this works fine.

Sorry if I bothered you.

Best Regards,

Boris


Thanks, best regards,



Signed-off-by: Boris BREZILLON 
---
  drivers/misc/atmel_tclib.c |   24 
  1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/drivers/misc/atmel_tclib.c b/drivers/misc/atmel_tclib.c
index c8d8e38..768a988 100644
--- a/drivers/misc/atmel_tclib.c
+++ b/drivers/misc/atmel_tclib.c
@@ -142,6 +142,8 @@ static int __init tc_probe(struct platform_device *pdev)
struct atmel_tc *tc;
struct clk  *clk;
int irq;
+   charclk_id[7];
+   int clk_offset;

if (!platform_get_resource(pdev, IORESOURCE_MEM, 0))
return -EINVAL;
@@ -156,25 +158,31 @@ static int __init tc_probe(struct platform_device *pdev)

tc->pdev = pdev;

-   clk = clk_get(&pdev->dev, "t0_clk");
-   if (IS_ERR(clk)) {
-   kfree(tc);
-   return -EINVAL;
-   }
-
/* Now take SoC information if available */
if (pdev->dev.of_node) {
const struct of_device_id *match;
match = of_match_node(atmel_tcb_dt_ids, pdev->dev.of_node);
if (match)
tc->tcb_config = match->data;
+   clk_offset = of_alias_get_id(tc->pdev->dev.of_node, "tcb");
+   } else
+   clk_offset = pdev->id;
+   clk_offset *= 3;
+
+   snprintf(clk_id, sizeof(clk_id), "t%d_clk", clk_offset++);
+   clk = clk_get(&pdev->dev, clk_id);
+   if (IS_ERR(clk)) {
+   kfree(tc);
+   return -EINVAL;
}

tc->clk[0] = clk;
-   tc->clk[1] = clk_get(&pdev->dev, "t1_clk");
+   snprintf(clk_id, sizeof(clk_id), "t%d_clk", clk_offset++);
+   tc->clk[1] = clk_get(&pdev->dev, clk_id);
if (IS_ERR(tc->clk[1]))
tc->clk[1] = clk;
-   tc->clk[2] = clk_get(&pdev->dev, "t2_clk");
+   snprintf(clk_id, sizeof(clk_id), "t%d_clk", clk_offset++);
+   tc->clk[2] = clk_get(&pdev->dev, clk_id);
if (IS_ERR(tc->clk[2]))
tc->clk[2] = clk;

--
1.7.9.5


___
linux-arm-kernel mailing list
linux-arm-ker...@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel







--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ARM: at91/tc: fix clock source id for tc block > 1

2013-04-03 Thread Nicolas Ferre
On 04/03/2013 06:45 AM, Jean-Christophe PLAGNIOL-VILLARD :
> On 18:46 Tue 02 Apr , Boris BREZILLON wrote:
>> This patch fixes wrong clock request for TC block 2.
>> The second block was using t0_clk, t1_clk and t2_clk clks instead of
>> t3_clk, t4_clk and t5_clk clks.
>>
> this is intended as we have 3 clock per device

True.
Boris, did you hit an issue with former code that your patch is solving?
What is the reason for this patch?

Thanks, best regards,


>> Signed-off-by: Boris BREZILLON 
>> ---
>>  drivers/misc/atmel_tclib.c |   24 
>>  1 file changed, 16 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/misc/atmel_tclib.c b/drivers/misc/atmel_tclib.c
>> index c8d8e38..768a988 100644
>> --- a/drivers/misc/atmel_tclib.c
>> +++ b/drivers/misc/atmel_tclib.c
>> @@ -142,6 +142,8 @@ static int __init tc_probe(struct platform_device *pdev)
>>  struct atmel_tc *tc;
>>  struct clk  *clk;
>>  int irq;
>> +charclk_id[7];
>> +int clk_offset;
>>  
>>  if (!platform_get_resource(pdev, IORESOURCE_MEM, 0))
>>  return -EINVAL;
>> @@ -156,25 +158,31 @@ static int __init tc_probe(struct platform_device 
>> *pdev)
>>  
>>  tc->pdev = pdev;
>>  
>> -clk = clk_get(&pdev->dev, "t0_clk");
>> -if (IS_ERR(clk)) {
>> -kfree(tc);
>> -return -EINVAL;
>> -}
>> -
>>  /* Now take SoC information if available */
>>  if (pdev->dev.of_node) {
>>  const struct of_device_id *match;
>>  match = of_match_node(atmel_tcb_dt_ids, pdev->dev.of_node);
>>  if (match)
>>  tc->tcb_config = match->data;
>> +clk_offset = of_alias_get_id(tc->pdev->dev.of_node, "tcb");
>> +} else
>> +clk_offset = pdev->id;
>> +clk_offset *= 3;
>> +
>> +snprintf(clk_id, sizeof(clk_id), "t%d_clk", clk_offset++);
>> +clk = clk_get(&pdev->dev, clk_id);
>> +if (IS_ERR(clk)) {
>> +kfree(tc);
>> +return -EINVAL;
>>  }
>>  
>>  tc->clk[0] = clk;
>> -tc->clk[1] = clk_get(&pdev->dev, "t1_clk");
>> +snprintf(clk_id, sizeof(clk_id), "t%d_clk", clk_offset++);
>> +tc->clk[1] = clk_get(&pdev->dev, clk_id);
>>  if (IS_ERR(tc->clk[1]))
>>  tc->clk[1] = clk;
>> -tc->clk[2] = clk_get(&pdev->dev, "t2_clk");
>> +snprintf(clk_id, sizeof(clk_id), "t%d_clk", clk_offset++);
>> +tc->clk[2] = clk_get(&pdev->dev, clk_id);
>>  if (IS_ERR(tc->clk[2]))
>>  tc->clk[2] = clk;
>>  
>> -- 
>> 1.7.9.5
>>
>>
>> ___
>> linux-arm-kernel mailing list
>> linux-arm-ker...@lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 


-- 
Nicolas Ferre
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ARM: at91/tc: fix clock source id for tc block > 1

2013-04-02 Thread Jean-Christophe PLAGNIOL-VILLARD
On 18:46 Tue 02 Apr , Boris BREZILLON wrote:
> This patch fixes wrong clock request for TC block 2.
> The second block was using t0_clk, t1_clk and t2_clk clks instead of
> t3_clk, t4_clk and t5_clk clks.
> 
this is intended as we have 3 clock per device

Best Regards,
J.
> 
> Signed-off-by: Boris BREZILLON 
> ---
>  drivers/misc/atmel_tclib.c |   24 
>  1 file changed, 16 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/misc/atmel_tclib.c b/drivers/misc/atmel_tclib.c
> index c8d8e38..768a988 100644
> --- a/drivers/misc/atmel_tclib.c
> +++ b/drivers/misc/atmel_tclib.c
> @@ -142,6 +142,8 @@ static int __init tc_probe(struct platform_device *pdev)
>   struct atmel_tc *tc;
>   struct clk  *clk;
>   int irq;
> + charclk_id[7];
> + int clk_offset;
>  
>   if (!platform_get_resource(pdev, IORESOURCE_MEM, 0))
>   return -EINVAL;
> @@ -156,25 +158,31 @@ static int __init tc_probe(struct platform_device *pdev)
>  
>   tc->pdev = pdev;
>  
> - clk = clk_get(&pdev->dev, "t0_clk");
> - if (IS_ERR(clk)) {
> - kfree(tc);
> - return -EINVAL;
> - }
> -
>   /* Now take SoC information if available */
>   if (pdev->dev.of_node) {
>   const struct of_device_id *match;
>   match = of_match_node(atmel_tcb_dt_ids, pdev->dev.of_node);
>   if (match)
>   tc->tcb_config = match->data;
> + clk_offset = of_alias_get_id(tc->pdev->dev.of_node, "tcb");
> + } else
> + clk_offset = pdev->id;
> + clk_offset *= 3;
> +
> + snprintf(clk_id, sizeof(clk_id), "t%d_clk", clk_offset++);
> + clk = clk_get(&pdev->dev, clk_id);
> + if (IS_ERR(clk)) {
> + kfree(tc);
> + return -EINVAL;
>   }
>  
>   tc->clk[0] = clk;
> - tc->clk[1] = clk_get(&pdev->dev, "t1_clk");
> + snprintf(clk_id, sizeof(clk_id), "t%d_clk", clk_offset++);
> + tc->clk[1] = clk_get(&pdev->dev, clk_id);
>   if (IS_ERR(tc->clk[1]))
>   tc->clk[1] = clk;
> - tc->clk[2] = clk_get(&pdev->dev, "t2_clk");
> + snprintf(clk_id, sizeof(clk_id), "t%d_clk", clk_offset++);
> + tc->clk[2] = clk_get(&pdev->dev, clk_id);
>   if (IS_ERR(tc->clk[2]))
>   tc->clk[2] = clk;
>  
> -- 
> 1.7.9.5
> 
> 
> ___
> linux-arm-kernel mailing list
> linux-arm-ker...@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] ARM: at91/tc: fix clock source id for tc block > 1

2013-04-02 Thread Boris BREZILLON
This patch fixes wrong clock request for TC block 2.
The second block was using t0_clk, t1_clk and t2_clk clks instead of
t3_clk, t4_clk and t5_clk clks.


Signed-off-by: Boris BREZILLON 
---
 drivers/misc/atmel_tclib.c |   24 
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/drivers/misc/atmel_tclib.c b/drivers/misc/atmel_tclib.c
index c8d8e38..768a988 100644
--- a/drivers/misc/atmel_tclib.c
+++ b/drivers/misc/atmel_tclib.c
@@ -142,6 +142,8 @@ static int __init tc_probe(struct platform_device *pdev)
struct atmel_tc *tc;
struct clk  *clk;
int irq;
+   charclk_id[7];
+   int clk_offset;
 
if (!platform_get_resource(pdev, IORESOURCE_MEM, 0))
return -EINVAL;
@@ -156,25 +158,31 @@ static int __init tc_probe(struct platform_device *pdev)
 
tc->pdev = pdev;
 
-   clk = clk_get(&pdev->dev, "t0_clk");
-   if (IS_ERR(clk)) {
-   kfree(tc);
-   return -EINVAL;
-   }
-
/* Now take SoC information if available */
if (pdev->dev.of_node) {
const struct of_device_id *match;
match = of_match_node(atmel_tcb_dt_ids, pdev->dev.of_node);
if (match)
tc->tcb_config = match->data;
+   clk_offset = of_alias_get_id(tc->pdev->dev.of_node, "tcb");
+   } else
+   clk_offset = pdev->id;
+   clk_offset *= 3;
+
+   snprintf(clk_id, sizeof(clk_id), "t%d_clk", clk_offset++);
+   clk = clk_get(&pdev->dev, clk_id);
+   if (IS_ERR(clk)) {
+   kfree(tc);
+   return -EINVAL;
}
 
tc->clk[0] = clk;
-   tc->clk[1] = clk_get(&pdev->dev, "t1_clk");
+   snprintf(clk_id, sizeof(clk_id), "t%d_clk", clk_offset++);
+   tc->clk[1] = clk_get(&pdev->dev, clk_id);
if (IS_ERR(tc->clk[1]))
tc->clk[1] = clk;
-   tc->clk[2] = clk_get(&pdev->dev, "t2_clk");
+   snprintf(clk_id, sizeof(clk_id), "t%d_clk", clk_offset++);
+   tc->clk[2] = clk_get(&pdev->dev, clk_id);
if (IS_ERR(tc->clk[2]))
tc->clk[2] = clk;
 
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/