All of lore.kernel.org
 help / color / mirror / Atom feed
From: boris brezillon <b.brezillon@overkiz.com>
To: boris brezillon <b.brezillon@overkiz.com>
Cc: Josh Wu <josh.wu@atmel.com>,
	linux-iio@vger.kernel.org, nicolas.ferre@atmel.com,
	jic23@cam.ac.uk, maxime.ripard@free-electrons.com,
	plagnioj@jcrosoft.com, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 4/5] iio: at91: add an optional dt property for for adc clock hz.
Date: Thu, 25 Jul 2013 14:11:38 +0200	[thread overview]
Message-ID: <51F115FA.1040801@overkiz.com> (raw)
In-Reply-To: <51F11395.9040406@overkiz.com>

On 25/07/2013 14:01, boris brezillon wrote:
> Hi Josh,
>
> On 14/07/2013 10:04, Josh Wu wrote:
>> Signed-off-by: Josh Wu <josh.wu@atmel.com>
>> ---
>>   Documentation/devicetree/bindings/arm/atmel-adc.txt |    2 ++
>>   drivers/iio/adc/at91_adc.c                          |    8 +++++++-
>>   2 files changed, 9 insertions(+), 1 deletion(-)
>>
>> diff --git a/Documentation/devicetree/bindings/arm/atmel-adc.txt
>> b/Documentation/devicetree/bindings/arm/atmel-adc.txt
>> index 16769d9..0db2945 100644
>> --- a/Documentation/devicetree/bindings/arm/atmel-adc.txt
>> +++ b/Documentation/devicetree/bindings/arm/atmel-adc.txt
>> @@ -27,6 +27,8 @@ Optional properties:
>>                  resolution will be used.
>>     - atmel,adc-sleep-mode: Boolean to enable sleep mode when no
>> conversion
>>     - atmel,adc-sample-hold-time: Sample and Hold Time in microseconds
>> +  - atmel,adc-clock-rate: ADC clock rate. If not specified, use the
>> default
>> +              adc_op_clk.
>>
>>   Optional trigger Nodes:
>>     - Required properties:
>> diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
>> index e93a075..8f1386f 100644
>> --- a/drivers/iio/adc/at91_adc.c
>> +++ b/drivers/iio/adc/at91_adc.c
>> @@ -47,6 +47,7 @@ struct at91_adc_caps {
>>
>>   struct at91_adc_state {
>>       struct clk        *adc_clk;
>> +    u32            adc_clk_rate;
>>       u16            *buffer;
>>       unsigned long        channels_mask;
>>       struct clk        *clk;
>> @@ -448,6 +449,10 @@ static int at91_adc_probe_dt(struct
>> at91_adc_state *st,
>>       if (!node)
>>           return -EINVAL;
>>
>> +    prop = 0;
>> +    of_property_read_u32(node, "atmel,adc-clock-rate", &prop);
>> +    st->adc_clk_rate = prop;
>> +
>>       st->use_external = of_property_read_bool(node,
>> "atmel,adc-use-external-triggers");
>>
>>       if (of_property_read_u32(node, "atmel,adc-channels-used", &prop)) {
>> @@ -723,7 +728,8 @@ static int at91_adc_probe(struct platform_device
>> *pdev)
>>        * specified by the electrical characteristics of the board.
>>        */
>>       mstrclk = clk_get_rate(st->clk);
>> -    adc_clk = clk_get_rate(st->adc_clk);
>> +    adc_clk = st->adc_clk_rate ?
>> +        st->adc_clk_rate : clk_get_rate(st->adc_clk);
>>       adc_clk_khz = adc_clk / 1000;
>>       prsc = (mstrclk / (2 * adc_clk)) - 1;
>>
>>
>
> As said by Maxime and Lars-Peter, I think this should be handled by a
> proper clock implementation (adc_clock ?) using common clock framework.
>
> IMO the fake adc_op_clk should not exist. Instead the adc clock binding
> should define properties describing the adc clock characteristics (see
> pll implementation in at91 common clk series).
> These characteristics can be found in 'ADC characteristics' chapter in
> atmel's datasheets.
>
> The adc clock binding would look like this (based on sama5 datasheet):
>
> adc_clk {
>      compatible = "sama5d3-adc-clk";
>      output = <1000000 20000000>; /* output clock frequency range */
> };

or more like this:

adc_clk {
	compatible = "xxx-adc-clk";
	#clock-cells = <0>;
	clocks = <&mck>;
	output = <1000000 20000000>; /* output clock frequency range */
};
>
> It is up to the clk user (adc driver) to choose the appropriate
> frequency to use (maximum rate ?) and configure it with clk_set_rate
> function.
> The adc clk implem will take care of PRESCAL field config in ADC_MR
> according to parent rate (mck rate) and requested rate. It will also
> check if the requested rate is in the output clk range.
>
> These are just thought, feel free to comment it.
>
> Best Regards,
>
> Boris
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: b.brezillon@overkiz.com (boris brezillon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4/5] iio: at91: add an optional dt property for for adc clock hz.
Date: Thu, 25 Jul 2013 14:11:38 +0200	[thread overview]
Message-ID: <51F115FA.1040801@overkiz.com> (raw)
In-Reply-To: <51F11395.9040406@overkiz.com>

On 25/07/2013 14:01, boris brezillon wrote:
> Hi Josh,
>
> On 14/07/2013 10:04, Josh Wu wrote:
>> Signed-off-by: Josh Wu <josh.wu@atmel.com>
>> ---
>>   Documentation/devicetree/bindings/arm/atmel-adc.txt |    2 ++
>>   drivers/iio/adc/at91_adc.c                          |    8 +++++++-
>>   2 files changed, 9 insertions(+), 1 deletion(-)
>>
>> diff --git a/Documentation/devicetree/bindings/arm/atmel-adc.txt
>> b/Documentation/devicetree/bindings/arm/atmel-adc.txt
>> index 16769d9..0db2945 100644
>> --- a/Documentation/devicetree/bindings/arm/atmel-adc.txt
>> +++ b/Documentation/devicetree/bindings/arm/atmel-adc.txt
>> @@ -27,6 +27,8 @@ Optional properties:
>>                  resolution will be used.
>>     - atmel,adc-sleep-mode: Boolean to enable sleep mode when no
>> conversion
>>     - atmel,adc-sample-hold-time: Sample and Hold Time in microseconds
>> +  - atmel,adc-clock-rate: ADC clock rate. If not specified, use the
>> default
>> +              adc_op_clk.
>>
>>   Optional trigger Nodes:
>>     - Required properties:
>> diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
>> index e93a075..8f1386f 100644
>> --- a/drivers/iio/adc/at91_adc.c
>> +++ b/drivers/iio/adc/at91_adc.c
>> @@ -47,6 +47,7 @@ struct at91_adc_caps {
>>
>>   struct at91_adc_state {
>>       struct clk        *adc_clk;
>> +    u32            adc_clk_rate;
>>       u16            *buffer;
>>       unsigned long        channels_mask;
>>       struct clk        *clk;
>> @@ -448,6 +449,10 @@ static int at91_adc_probe_dt(struct
>> at91_adc_state *st,
>>       if (!node)
>>           return -EINVAL;
>>
>> +    prop = 0;
>> +    of_property_read_u32(node, "atmel,adc-clock-rate", &prop);
>> +    st->adc_clk_rate = prop;
>> +
>>       st->use_external = of_property_read_bool(node,
>> "atmel,adc-use-external-triggers");
>>
>>       if (of_property_read_u32(node, "atmel,adc-channels-used", &prop)) {
>> @@ -723,7 +728,8 @@ static int at91_adc_probe(struct platform_device
>> *pdev)
>>        * specified by the electrical characteristics of the board.
>>        */
>>       mstrclk = clk_get_rate(st->clk);
>> -    adc_clk = clk_get_rate(st->adc_clk);
>> +    adc_clk = st->adc_clk_rate ?
>> +        st->adc_clk_rate : clk_get_rate(st->adc_clk);
>>       adc_clk_khz = adc_clk / 1000;
>>       prsc = (mstrclk / (2 * adc_clk)) - 1;
>>
>>
>
> As said by Maxime and Lars-Peter, I think this should be handled by a
> proper clock implementation (adc_clock ?) using common clock framework.
>
> IMO the fake adc_op_clk should not exist. Instead the adc clock binding
> should define properties describing the adc clock characteristics (see
> pll implementation in at91 common clk series).
> These characteristics can be found in 'ADC characteristics' chapter in
> atmel's datasheets.
>
> The adc clock binding would look like this (based on sama5 datasheet):
>
> adc_clk {
>      compatible = "sama5d3-adc-clk";
>      output = <1000000 20000000>; /* output clock frequency range */
> };

or more like this:

adc_clk {
	compatible = "xxx-adc-clk";
	#clock-cells = <0>;
	clocks = <&mck>;
	output = <1000000 20000000>; /* output clock frequency range */
};
>
> It is up to the clk user (adc driver) to choose the appropriate
> frequency to use (maximum rate ?) and configure it with clk_set_rate
> function.
> The adc clk implem will take care of PRESCAL field config in ADC_MR
> according to parent rate (mck rate) and requested rate. It will also
> check if the requested rate is in the output clk range.
>
> These are just thought, feel free to comment it.
>
> Best Regards,
>
> Boris
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2013-07-25 12:11 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-14  8:04 [PATCH 0/5] iio: at91: Add touch screen support in at91 adc Josh Wu
2013-07-14  8:04 ` Josh Wu
2013-07-14  8:04 ` [PATCH 1/5] iio: at91: use adc_clk_khz to make the calculation not easy to large than u32 Josh Wu
2013-07-14  8:04   ` Josh Wu
2013-07-15 12:52   ` Maxime Ripard
2013-07-15 12:52     ` Maxime Ripard
2013-07-16  7:54     ` Josh Wu
2013-07-16  7:54       ` Josh Wu
2013-07-14  8:04 ` [PATCH 2/5] iio: at91: Use different prescal, startup mask in MR for different IP Josh Wu
2013-07-14  8:04   ` Josh Wu
2013-07-15 12:58   ` Maxime Ripard
2013-07-15 12:58     ` Maxime Ripard
2013-07-16  8:35     ` Josh Wu
2013-07-16  8:35       ` Josh Wu
2013-07-16  8:46       ` Nicolas Ferre
2013-07-16  8:46         ` Nicolas Ferre
2013-07-16 11:20         ` Maxime Ripard
2013-07-16 11:20           ` Maxime Ripard
2013-07-16 11:30         ` Thomas Petazzoni
2013-07-16 11:30           ` Thomas Petazzoni
2013-07-16 11:30           ` Thomas Petazzoni
2013-07-16 19:03           ` Jonathan Cameron
2013-07-16 19:03             ` Jonathan Cameron
2013-07-16 19:03             ` Jonathan Cameron
2013-07-16 19:17             ` Thomas Petazzoni
2013-07-16 19:17               ` Thomas Petazzoni
2013-07-16 19:17               ` Thomas Petazzoni
2013-07-17  8:23               ` Nicolas Ferre
2013-07-17  8:23                 ` Nicolas Ferre
2013-07-17  8:23                 ` Nicolas Ferre
2013-07-17  8:12     ` Nicolas Ferre
2013-07-17  8:12       ` Nicolas Ferre
2013-07-17  9:07       ` Josh Wu
2013-07-17  9:07         ` Josh Wu
2013-07-17 15:40       ` Maxime Ripard
2013-07-17 15:40         ` Maxime Ripard
2013-07-17  7:58   ` Nicolas Ferre
2013-07-17  7:58     ` Nicolas Ferre
2013-07-17 10:09     ` Josh Wu
2013-07-17 10:09       ` Josh Wu
2013-07-20  9:35       ` Jonathan Cameron
2013-07-20  9:35         ` Jonathan Cameron
2013-07-14  8:04 ` [PATCH 3/5] iio: at91: ADC start-up time calculation changed since at91sam9x5 Josh Wu
2013-07-14  8:04   ` Josh Wu
2013-07-20  9:39   ` Jonathan Cameron
2013-07-20  9:39     ` Jonathan Cameron
2013-07-25  7:35     ` Josh Wu
2013-07-25  7:35       ` Josh Wu
2013-07-14  8:04 ` [PATCH 4/5] iio: at91: add an optional dt property for for adc clock hz Josh Wu
2013-07-14  8:04   ` Josh Wu
2013-07-15 13:06   ` Maxime Ripard
2013-07-15 13:06     ` Maxime Ripard
2013-07-16  7:55     ` Josh Wu
2013-07-16  7:55       ` Josh Wu
2013-07-16 10:30       ` Maxime Ripard
2013-07-16 10:30         ` Maxime Ripard
2013-07-16 11:16         ` Lars-Peter Clausen
2013-07-16 11:16           ` Lars-Peter Clausen
2013-07-25  7:29           ` Josh Wu
2013-07-25  7:29             ` Josh Wu
2013-07-25 12:01   ` boris brezillon
2013-07-25 12:01     ` boris brezillon
2013-07-25 12:11     ` boris brezillon [this message]
2013-07-25 12:11       ` boris brezillon
2013-07-14  8:04 ` [PATCH 5/5] iio: at91: introduce touch screen support in iio adc driver Josh Wu
2013-07-14  8:04   ` Josh Wu
2013-07-15 13:15   ` Maxime Ripard
2013-07-15 13:15     ` Maxime Ripard
2013-07-16  9:09     ` Josh Wu
2013-07-16  9:09       ` Josh Wu
2013-07-16 11:43       ` Maxime Ripard
2013-07-16 11:43         ` Maxime Ripard
     [not found]   ` <1373789069-11604-6-git-send-email-josh.wu-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>
2013-07-20  9:57     ` Jonathan Cameron
2013-07-20  9:57       ` Jonathan Cameron
2013-07-20  9:57       ` Jonathan Cameron
2013-07-22 13:17   ` Mark Rutland
2013-07-22 13:17     ` Mark Rutland
2013-07-25  7:56     ` Josh Wu
2013-07-25  7:56       ` Josh Wu
2013-07-25 16:45       ` Mark Rutland
2013-07-25 16:45         ` Mark Rutland
2013-08-06 10:24         ` Josh Wu
2013-08-06 10:24           ` Josh Wu
2013-08-08 13:40           ` Mark Rutland
2013-08-08 13:40             ` Mark Rutland

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51F115FA.1040801@overkiz.com \
    --to=b.brezillon@overkiz.com \
    --cc=jic23@cam.ac.uk \
    --cc=josh.wu@atmel.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=maxime.ripard@free-electrons.com \
    --cc=nicolas.ferre@atmel.com \
    --cc=plagnioj@jcrosoft.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.