diff mbox

[1/2] tty: amba-pl011: add support for clock frequency setting via dt

Message ID 1467965467-28180-1-git-send-email-jorge.ramirez-ortiz@linaro.org (mailing list archive)
State New, archived
Headers show

Commit Message

Jorge Ramirez-Ortiz July 8, 2016, 8:11 a.m. UTC
Allow to specify the clock frequency for any given port via the
assigned-clock-rates device tree property.

Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
Tested-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
---
 drivers/tty/serial/amba-pl011.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Michael Turquette July 8, 2016, 5:14 p.m. UTC | #1
Quoting Jorge Ramirez-Ortiz (2016-07-08 01:11:06)
> Allow to specify the clock frequency for any given port via the
> assigned-clock-rates device tree property.
> 
> Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> Tested-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> ---
>  drivers/tty/serial/amba-pl011.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
> index 1b7331e..51867ab 100644
> --- a/drivers/tty/serial/amba-pl011.c
> +++ b/drivers/tty/serial/amba-pl011.c
> @@ -55,6 +55,7 @@
>  #include <linux/types.h>
>  #include <linux/of.h>
>  #include <linux/of_device.h>
> +#include <linux/clk/clk-conf.h>
>  #include <linux/pinctrl/consumer.h>
>  #include <linux/sizes.h>
>  #include <linux/io.h>
> @@ -2472,6 +2473,10 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
>         if (IS_ERR(uap->clk))
>                 return PTR_ERR(uap->clk);
>  
> +       ret = of_clk_set_defaults(dev->dev.of_node, false);

Change looks good to me, but with one question: should this change be
put into more generic code instead of in this specific driver? For
instance, we call of_clk_set_defaults from the following files:

drivers/base/platform.c
drivers/i2c/i2c-core.c
drivers/spi/spi.c

And Stephen posted a patch to do this for devices on the AMBA bus:

https://patchwork.kernel.org/patch/6501691/

Does Stephen's patch mean that you do not need patch #1? Stephen, any
update on what happened to this patch?

Thanks,
Mike

> +       if (ret < 0)
> +               return ret;
> +
>         uap->reg_offset = vendor->reg_offset;
>         uap->vendor = vendor;
>         uap->fifosize = vendor->get_fifosize(dev);
> -- 
> 2.7.4
>
Jorge Ramirez-Ortiz July 8, 2016, 9:39 p.m. UTC | #2
On 07/08/2016 07:14 PM, Michael Turquette wrote:
> Quoting Jorge Ramirez-Ortiz (2016-07-08 01:11:06)
>> Allow to specify the clock frequency for any given port via the
>> assigned-clock-rates device tree property.
>>
>> Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
>> Tested-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
>> ---
>>   drivers/tty/serial/amba-pl011.c | 5 +++++
>>   1 file changed, 5 insertions(+)
>>
>> diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
>> index 1b7331e..51867ab 100644
>> --- a/drivers/tty/serial/amba-pl011.c
>> +++ b/drivers/tty/serial/amba-pl011.c
>> @@ -55,6 +55,7 @@
>>   #include <linux/types.h>
>>   #include <linux/of.h>
>>   #include <linux/of_device.h>
>> +#include <linux/clk/clk-conf.h>
>>   #include <linux/pinctrl/consumer.h>
>>   #include <linux/sizes.h>
>>   #include <linux/io.h>
>> @@ -2472,6 +2473,10 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
>>          if (IS_ERR(uap->clk))
>>                  return PTR_ERR(uap->clk);
>>   
>> +       ret = of_clk_set_defaults(dev->dev.of_node, false);
> Change looks good to me, but with one question: should this change be
> put into more generic code instead of in this specific driver? For
> instance, we call of_clk_set_defaults from the following files:
>
> drivers/base/platform.c
> drivers/i2c/i2c-core.c
> drivers/spi/spi.c
>
> And Stephen posted a patch to do this for devices on the AMBA bus:
>
> https://patchwork.kernel.org/patch/6501691/
>
> Does Stephen's patch mean that you do not need patch #1?

I did a quick test (replaced my changes with the patch above) and the 
console broke and the BT stack couldn't communicate to the device over 
the uart...I guess something else needs doing on top of Stephen's change.
Michael Turquette July 9, 2016, 12:23 a.m. UTC | #3
Quoting Jorge Ramirez (2016-07-08 14:39:50)
> On 07/08/2016 07:14 PM, Michael Turquette wrote:
> > Quoting Jorge Ramirez-Ortiz (2016-07-08 01:11:06)
> >> Allow to specify the clock frequency for any given port via the
> >> assigned-clock-rates device tree property.
> >>
> >> Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> >> Tested-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> >> ---
> >>   drivers/tty/serial/amba-pl011.c | 5 +++++
> >>   1 file changed, 5 insertions(+)
> >>
> >> diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
> >> index 1b7331e..51867ab 100644
> >> --- a/drivers/tty/serial/amba-pl011.c
> >> +++ b/drivers/tty/serial/amba-pl011.c
> >> @@ -55,6 +55,7 @@
> >>   #include <linux/types.h>
> >>   #include <linux/of.h>
> >>   #include <linux/of_device.h>
> >> +#include <linux/clk/clk-conf.h>
> >>   #include <linux/pinctrl/consumer.h>
> >>   #include <linux/sizes.h>
> >>   #include <linux/io.h>
> >> @@ -2472,6 +2473,10 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
> >>          if (IS_ERR(uap->clk))
> >>                  return PTR_ERR(uap->clk);
> >>   
> >> +       ret = of_clk_set_defaults(dev->dev.of_node, false);
> > Change looks good to me, but with one question: should this change be
> > put into more generic code instead of in this specific driver? For
> > instance, we call of_clk_set_defaults from the following files:
> >
> > drivers/base/platform.c
> > drivers/i2c/i2c-core.c
> > drivers/spi/spi.c
> >
> > And Stephen posted a patch to do this for devices on the AMBA bus:
> >
> > https://patchwork.kernel.org/patch/6501691/
> >
> > Does Stephen's patch mean that you do not need patch #1?
> 
> I did a quick test (replaced my changes with the patch above) and the 
> console broke and the BT stack couldn't communicate to the device over 
> the uart...I guess something else needs doing on top of Stephen's change.
> 

Let's give Stephen a chance to respond. If he doesn't soon then I'm OK
to merge your two patches.

Regards,
Mike
Stephen Boyd July 9, 2016, 12:43 a.m. UTC | #4
On 07/08/2016 05:23 PM, Michael Turquette wrote:
> Quoting Jorge Ramirez (2016-07-08 14:39:50)
>> On 07/08/2016 07:14 PM, Michael Turquette wrote:
>>> Quoting Jorge Ramirez-Ortiz (2016-07-08 01:11:06)
>>>> Allow to specify the clock frequency for any given port via the
>>>> assigned-clock-rates device tree property.
>>>>
>>>> Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
>>>> Tested-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
>>>> ---
>>>>   drivers/tty/serial/amba-pl011.c | 5 +++++
>>>>   1 file changed, 5 insertions(+)
>>>>
>>>> diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
>>>> index 1b7331e..51867ab 100644
>>>> --- a/drivers/tty/serial/amba-pl011.c
>>>> +++ b/drivers/tty/serial/amba-pl011.c
>>>> @@ -55,6 +55,7 @@
>>>>   #include <linux/types.h>
>>>>   #include <linux/of.h>
>>>>   #include <linux/of_device.h>
>>>> +#include <linux/clk/clk-conf.h>
>>>>   #include <linux/pinctrl/consumer.h>
>>>>   #include <linux/sizes.h>
>>>>   #include <linux/io.h>
>>>> @@ -2472,6 +2473,10 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
>>>>          if (IS_ERR(uap->clk))
>>>>                  return PTR_ERR(uap->clk);
>>>>   
>>>> +       ret = of_clk_set_defaults(dev->dev.of_node, false);
>>> Change looks good to me, but with one question: should this change be
>>> put into more generic code instead of in this specific driver? For
>>> instance, we call of_clk_set_defaults from the following files:
>>>
>>> drivers/base/platform.c
>>> drivers/i2c/i2c-core.c
>>> drivers/spi/spi.c
>>>
>>> And Stephen posted a patch to do this for devices on the AMBA bus:
>>>
>>> https://patchwork.kernel.org/patch/6501691/
>>>
>>> Does Stephen's patch mean that you do not need patch #1?
>> I did a quick test (replaced my changes with the patch above) and the 
>> console broke and the BT stack couldn't communicate to the device over 
>> the uart...I guess something else needs doing on top of Stephen's change.
>>
> Let's give Stephen a chance to respond. If he doesn't soon then I'm OK
> to merge your two patches.
>


Yeah we need to restart that patch. It's been in my "pending" list for a
year now it seems.

Curious why it broke things, perhaps device probe is failing when it
didn't fail before?
Jorge Ramirez-Ortiz July 9, 2016, 6:42 a.m. UTC | #5
On 07/09/2016 02:43 AM, Stephen Boyd wrote:
> On 07/08/2016 05:23 PM, Michael Turquette wrote:
>> Quoting Jorge Ramirez (2016-07-08 14:39:50)
>>> On 07/08/2016 07:14 PM, Michael Turquette wrote:
>>>> Quoting Jorge Ramirez-Ortiz (2016-07-08 01:11:06)
>>>>> Allow to specify the clock frequency for any given port via the
>>>>> assigned-clock-rates device tree property.
>>>>>
>>>>> Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
>>>>> Tested-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
>>>>> ---
>>>>>    drivers/tty/serial/amba-pl011.c | 5 +++++
>>>>>    1 file changed, 5 insertions(+)
>>>>>
>>>>> diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
>>>>> index 1b7331e..51867ab 100644
>>>>> --- a/drivers/tty/serial/amba-pl011.c
>>>>> +++ b/drivers/tty/serial/amba-pl011.c
>>>>> @@ -55,6 +55,7 @@
>>>>>    #include <linux/types.h>
>>>>>    #include <linux/of.h>
>>>>>    #include <linux/of_device.h>
>>>>> +#include <linux/clk/clk-conf.h>
>>>>>    #include <linux/pinctrl/consumer.h>
>>>>>    #include <linux/sizes.h>
>>>>>    #include <linux/io.h>
>>>>> @@ -2472,6 +2473,10 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
>>>>>           if (IS_ERR(uap->clk))
>>>>>                   return PTR_ERR(uap->clk);
>>>>>    
>>>>> +       ret = of_clk_set_defaults(dev->dev.of_node, false);
>>>> Change looks good to me, but with one question: should this change be
>>>> put into more generic code instead of in this specific driver? For
>>>> instance, we call of_clk_set_defaults from the following files:
>>>>
>>>> drivers/base/platform.c
>>>> drivers/i2c/i2c-core.c
>>>> drivers/spi/spi.c
>>>>
>>>> And Stephen posted a patch to do this for devices on the AMBA bus:
>>>>
>>>> https://patchwork.kernel.org/patch/6501691/
>>>>
>>>> Does Stephen's patch mean that you do not need patch #1?
>>> I did a quick test (replaced my changes with the patch above) and the
>>> console broke and the BT stack couldn't communicate to the device over
>>> the uart...I guess something else needs doing on top of Stephen's change.
>>>
>> Let's give Stephen a chance to respond. If he doesn't soon then I'm OK
>> to merge your two patches.
>>
>
> Yeah we need to restart that patch. It's been in my "pending" list for a
> year now it seems.
>
> Curious why it broke things, perhaps device probe is failing when it
> didn't fail before?
>

um, I retested again this morning and it is all good - I was also a bit 
surprised when things failed yesterday  (it seems one of the wires on my 
board was loose, sorry).

So AFAIC your patch addresses the issue in a much generic (better) way 
and there are no regressions on a HiKey board running a 4.4 kernel.
Stephen Boyd July 11, 2016, 9:03 p.m. UTC | #6
On 07/10, Jorge Ramirez Ortiz wrote:
> On 9 July 2016 at 08:42, Jorge Ramirez <jorge.ramirez-ortiz@linaro.org>
> > um, I retested again this morning and it is all good - I was also a bit
> > surprised when things failed yesterday  (it seems one of the wires on my
> > board was loose, sorry).
> >
> > So AFAIC your patch addresses the issue in a much generic (better) way and
> > there are no regressions on a HiKey board running a 4.4 kernel.
> >
> >
> >
> 
> Stephen, will you post your patch again? how do we progress the change set
> (ie your patch & the hikey device tree change)?

Yes I'll post it again today and put it in Russell's patch
tracker soon after that. I assume there isn't any concern with
the patch and it works for you so it would be good to have your
Tested-by too.
diff mbox

Patch

diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
index 1b7331e..51867ab 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
@@ -55,6 +55,7 @@ 
 #include <linux/types.h>
 #include <linux/of.h>
 #include <linux/of_device.h>
+#include <linux/clk/clk-conf.h>
 #include <linux/pinctrl/consumer.h>
 #include <linux/sizes.h>
 #include <linux/io.h>
@@ -2472,6 +2473,10 @@  static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
 	if (IS_ERR(uap->clk))
 		return PTR_ERR(uap->clk);
 
+	ret = of_clk_set_defaults(dev->dev.of_node, false);
+	if (ret < 0)
+		return ret;
+
 	uap->reg_offset = vendor->reg_offset;
 	uap->vendor = vendor;
 	uap->fifosize = vendor->get_fifosize(dev);