diff mbox series

clk: at91: fix at91sam9x5 peripheral clock number

Message ID 20190219165114.2366-1-alexandre.belloni@bootlin.com (mailing list archive)
State Accepted, archived
Headers show
Series clk: at91: fix at91sam9x5 peripheral clock number | expand

Commit Message

Alexandre Belloni Feb. 19, 2019, 4:51 p.m. UTC
nck() looks at the last id in an array and unfortunately,
at91sam9x35_periphck has a sentinel, hence the id is 0 and the calculated
number of peripheral clocks is 1 instead of a maximum of 31.

Fixes: 1eabdc2f9dd8 ("clk: at91: add at91sam9x5 PMCs driver")
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
---
 drivers/clk/at91/at91sam9x5.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Nicolas Ferre Feb. 20, 2019, 10:20 a.m. UTC | #1
On 19/02/2019 at 17:51, Alexandre Belloni wrote:
> nck() looks at the last id in an array and unfortunately,
> at91sam9x35_periphck has a sentinel, hence the id is 0 and the calculated

Well, the logic for all other SoC clk files is to not have such a 
sentinel and deal differently with this type of array: why not modify 
this file to match with others?


> number of peripheral clocks is 1 instead of a maximum of 31.
> 
> Fixes: 1eabdc2f9dd8 ("clk: at91: add at91sam9x5 PMCs driver")
> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
> ---
>   drivers/clk/at91/at91sam9x5.c | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/clk/at91/at91sam9x5.c b/drivers/clk/at91/at91sam9x5.c
> index 2fe225a697df..d37e7ed9eb90 100644
> --- a/drivers/clk/at91/at91sam9x5.c
> +++ b/drivers/clk/at91/at91sam9x5.c
> @@ -144,8 +144,7 @@ static void __init at91sam9x5_pmc_setup(struct device_node *np,
>   		return;
>   
>   	at91sam9x5_pmc = pmc_data_allocate(PMC_MAIN + 1,
> -					   nck(at91sam9x5_systemck),
> -					   nck(at91sam9x35_periphck), 0);
> +					   nck(at91sam9x5_systemck), 31, 0);

I would prefer like it's done on other SoC clk files.

>   	if (!at91sam9x5_pmc)
>   		return;
>   
>
Alexandre Belloni Feb. 20, 2019, 10:29 a.m. UTC | #2
On 20/02/2019 10:20:28+0000, Nicolas Ferre wrote:
> On 19/02/2019 at 17:51, Alexandre Belloni wrote:
> > nck() looks at the last id in an array and unfortunately,
> > at91sam9x35_periphck has a sentinel, hence the id is 0 and the calculated
> 
> Well, the logic for all other SoC clk files is to not have such a 
> sentinel and deal differently with this type of array: why not modify 
> this file to match with others?
> 
> 
> > number of peripheral clocks is 1 instead of a maximum of 31.
> > 
> > Fixes: 1eabdc2f9dd8 ("clk: at91: add at91sam9x5 PMCs driver")
> > Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
> > ---
> >   drivers/clk/at91/at91sam9x5.c | 3 +--
> >   1 file changed, 1 insertion(+), 2 deletions(-)
> > 
> > diff --git a/drivers/clk/at91/at91sam9x5.c b/drivers/clk/at91/at91sam9x5.c
> > index 2fe225a697df..d37e7ed9eb90 100644
> > --- a/drivers/clk/at91/at91sam9x5.c
> > +++ b/drivers/clk/at91/at91sam9x5.c
> > @@ -144,8 +144,7 @@ static void __init at91sam9x5_pmc_setup(struct device_node *np,
> >   		return;
> >   
> >   	at91sam9x5_pmc = pmc_data_allocate(PMC_MAIN + 1,
> > -					   nck(at91sam9x5_systemck),
> > -					   nck(at91sam9x35_periphck), 0);
> > +					   nck(at91sam9x5_systemck), 31, 0);
> 
> I would prefer like it's done on other SoC clk files.
> 

Well, that is not possible, what do you suggest?

> >   	if (!at91sam9x5_pmc)
> >   		return;
> >   
> > 
> 
> 
> -- 
> Nicolas Ferre
Nicolas Ferre Feb. 20, 2019, 10:48 a.m. UTC | #3
On 20/02/2019 at 11:29, Alexandre Belloni wrote:
> On 20/02/2019 10:20:28+0000, Nicolas Ferre wrote:
>> On 19/02/2019 at 17:51, Alexandre Belloni wrote:
>>> nck() looks at the last id in an array and unfortunately,
>>> at91sam9x35_periphck has a sentinel, hence the id is 0 and the calculated
>>
>> Well, the logic for all other SoC clk files is to not have such a
>> sentinel and deal differently with this type of array: why not modify
>> this file to match with others?
>>
>>
>>> number of peripheral clocks is 1 instead of a maximum of 31.
>>>
>>> Fixes: 1eabdc2f9dd8 ("clk: at91: add at91sam9x5 PMCs driver")
>>> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
>>> ---
>>>    drivers/clk/at91/at91sam9x5.c | 3 +--
>>>    1 file changed, 1 insertion(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/clk/at91/at91sam9x5.c b/drivers/clk/at91/at91sam9x5.c
>>> index 2fe225a697df..d37e7ed9eb90 100644
>>> --- a/drivers/clk/at91/at91sam9x5.c
>>> +++ b/drivers/clk/at91/at91sam9x5.c
>>> @@ -144,8 +144,7 @@ static void __init at91sam9x5_pmc_setup(struct device_node *np,
>>>    		return;
>>>    
>>>    	at91sam9x5_pmc = pmc_data_allocate(PMC_MAIN + 1,
>>> -					   nck(at91sam9x5_systemck),
>>> -					   nck(at91sam9x35_periphck), 0);
>>> +					   nck(at91sam9x5_systemck), 31, 0);
>>
>> I would prefer like it's done on other SoC clk files.
>>
> 
> Well, that is not possible, what do you suggest?

Okay: seen: let's keep it like this.

> 
>>>    	if (!at91sam9x5_pmc)
>>>    		return;
>>>    
>>>
>>
>>
>> -- 
>> Nicolas Ferre
>
Nicolas Ferre Feb. 20, 2019, 11:18 a.m. UTC | #4
On 19/02/2019 at 17:51, Alexandre Belloni wrote:
> nck() looks at the last id in an array and unfortunately,
> at91sam9x35_periphck has a sentinel, hence the id is 0 and the calculated
> number of peripheral clocks is 1 instead of a maximum of 31.
> 
> Fixes: 1eabdc2f9dd8 ("clk: at91: add at91sam9x5 PMCs driver")
> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>

Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Cc: <stable@vger.kernel.org> # v4.20+

It would be nice to queue it as a fix the soonest, as it impacts 5.0 but 
not 4.20 due to a switch from one DT binding to another (read: a real 
regression)... But I know it's a bit late in the cycle...

Regards,
   Nicolas

> ---
>   drivers/clk/at91/at91sam9x5.c | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/clk/at91/at91sam9x5.c b/drivers/clk/at91/at91sam9x5.c
> index 2fe225a697df..d37e7ed9eb90 100644
> --- a/drivers/clk/at91/at91sam9x5.c
> +++ b/drivers/clk/at91/at91sam9x5.c
> @@ -144,8 +144,7 @@ static void __init at91sam9x5_pmc_setup(struct device_node *np,
>   		return;
>   
>   	at91sam9x5_pmc = pmc_data_allocate(PMC_MAIN + 1,
> -					   nck(at91sam9x5_systemck),
> -					   nck(at91sam9x35_periphck), 0);
> +					   nck(at91sam9x5_systemck), 31, 0);
>   	if (!at91sam9x5_pmc)
>   		return;
>   
>
Stephen Boyd Feb. 20, 2019, 7:39 p.m. UTC | #5
Quoting Nicolas.Ferre@microchip.com (2019-02-20 03:18:40)
> On 19/02/2019 at 17:51, Alexandre Belloni wrote:
> > nck() looks at the last id in an array and unfortunately,
> > at91sam9x35_periphck has a sentinel, hence the id is 0 and the calculated
> > number of peripheral clocks is 1 instead of a maximum of 31.
> > 
> > Fixes: 1eabdc2f9dd8 ("clk: at91: add at91sam9x5 PMCs driver")
> > Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
> 
> Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
> Cc: <stable@vger.kernel.org> # v4.20+
> 
> It would be nice to queue it as a fix the soonest, as it impacts 5.0 but 
> not 4.20 due to a switch from one DT binding to another (read: a real 
> regression)... But I know it's a bit late in the cycle...
> 

Ok. Let's send it off tomorrow.
Stephen Boyd Feb. 20, 2019, 7:39 p.m. UTC | #6
Quoting Alexandre Belloni (2019-02-19 08:51:14)
> nck() looks at the last id in an array and unfortunately,
> at91sam9x35_periphck has a sentinel, hence the id is 0 and the calculated
> number of peripheral clocks is 1 instead of a maximum of 31.
> 
> Fixes: 1eabdc2f9dd8 ("clk: at91: add at91sam9x5 PMCs driver")
> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
> ---

Applied to clk-fixes
diff mbox series

Patch

diff --git a/drivers/clk/at91/at91sam9x5.c b/drivers/clk/at91/at91sam9x5.c
index 2fe225a697df..d37e7ed9eb90 100644
--- a/drivers/clk/at91/at91sam9x5.c
+++ b/drivers/clk/at91/at91sam9x5.c
@@ -144,8 +144,7 @@  static void __init at91sam9x5_pmc_setup(struct device_node *np,
 		return;
 
 	at91sam9x5_pmc = pmc_data_allocate(PMC_MAIN + 1,
-					   nck(at91sam9x5_systemck),
-					   nck(at91sam9x35_periphck), 0);
+					   nck(at91sam9x5_systemck), 31, 0);
 	if (!at91sam9x5_pmc)
 		return;