All of lore.kernel.org
 help / color / mirror / Atom feed
From: Josh Wu <josh.wu@atmel.com>
To: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: <jic23@cam.ac.uk>, <linux-arm-kernel@lists.infradead.org>,
	<linux-iio@vger.kernel.org>, <plagnioj@jcrosoft.com>,
	<nicolas.ferre@atmel.com>, <thomas.petazzoni@free-electrons.com>,
	<mark.rutland@arm.com>, <b.brezillon@overkiz.com>,
	Ludovic Desroches <ludovic.desroches@atmel.com>
Subject: Re: [PATCH v2 3/4] iio: at91: ADC start-up time calculation changed since at91sam9x5
Date: Thu, 22 Aug 2013 17:54:16 +0800	[thread overview]
Message-ID: <5215DFC8.8090607@atmel.com> (raw)
In-Reply-To: <20130815192711.GE12162@lukather>

Hi, Maxime

On 8/16/2013 3:27 AM, Maxime Ripard wrote:
> Hi Josh,
>
> On Sun, Aug 11, 2013 at 07:04:30PM +0800, Josh Wu wrote:
>> Since in at91sam9x5, sama5d3x chip. the start up time calucation is
>> changed.  This patch can choose different start up time calculation
>> formula for different chips.
>>
>> Signed-off-by: Josh Wu <josh.wu@atmel.com>
>> ---
>> v1 --> v2:
>>    add a new variable for different start_time calculation.
>>
>>   drivers/iio/adc/at91_adc.c |   42 +++++++++++++++++++++++++++++++++++-------
>>   1 file changed, 35 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
>> index b41eb60..9b0ffff 100644
>> --- a/drivers/iio/adc/at91_adc.c
>> +++ b/drivers/iio/adc/at91_adc.c
>> @@ -40,6 +40,7 @@
>>   	(writel_relaxed(val, st->reg_base + reg))
>>   
>>   struct at91_adc_caps {
>> +	bool	start_time_use_lookup_tab;
>>   	u32	mr_prescal_mask;
>>   	u32	mr_startup_mask;
>>   };
>> @@ -700,13 +701,39 @@ static int at91_adc_probe(struct platform_device *pdev)
>>   		goto error_disable_adc_clk;
>>   	}
>>   
>> -	/*
>> -	 * Number of ticks needed to cover the startup time of the ADC as
>> -	 * defined in the electrical characteristics of the board, divided by 8.
>> -	 * The formula thus is : Startup Time = (ticks + 1) * 8 / ADC Clock
>> -	 */
>> -	ticks = round_up((st->startup_time * adc_clk_khz /
>> -			  1000) - 1, 8) / 8;
>> +	if (!st->caps->start_time_use_lookup_tab) {
>> +		/*
>> +		 * Number of ticks needed to cover the startup time of the ADC
>> +		 * as defined in the electrical characteristics of the board,
>> +		 * divided by 8. The formula thus is :
>> +		 *   Startup Time = (ticks + 1) * 8 / ADC Clock
>> +		 */
>> +		ticks = round_up((st->startup_time * adc_clk_khz /
>> +				  1000) - 1, 8) / 8;
>> +	} else {
>> +		/*
>> +		 * For sama5d3x and at91sam9x5, the formula changes to:
>> +		 * Startup Time = <lookup_table_value> / ADC Clock
>> +		 */
>> +		const int startup_lookup[] = {
>> +			0  , 8  , 16 , 24 ,
>> +			64 , 80 , 96 , 112,
>> +			512, 576, 640, 704,
>> +			768, 832, 896, 960
>> +			};
>> +
>> +		int i, size = ARRAY_SIZE(startup_lookup);
>> +		ticks = st->startup_time * adc_clk_khz / 1000;
>> +		for (i = 0; i < size; i++)
>> +			if (ticks < startup_lookup[i])
>> +				break;
>> +
>> +		ticks = i;
>> +		if (ticks == size)
>> +			/* Reach the end of lookup table */
>> +			ticks = size - 1;
>> +	}
>> +
> Maybe just declaring two different functions here to calculate the
> number of ticks, and just holding the function pointer in your structure
> would make things more readable and future-proof?

I'll do this in next version. thanks.

>
> Maxime
>
Best Regards,
Josh Wu

WARNING: multiple messages have this Message-ID (diff)
From: josh.wu@atmel.com (Josh Wu)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 3/4] iio: at91: ADC start-up time calculation changed since at91sam9x5
Date: Thu, 22 Aug 2013 17:54:16 +0800	[thread overview]
Message-ID: <5215DFC8.8090607@atmel.com> (raw)
In-Reply-To: <20130815192711.GE12162@lukather>

Hi, Maxime

On 8/16/2013 3:27 AM, Maxime Ripard wrote:
> Hi Josh,
>
> On Sun, Aug 11, 2013 at 07:04:30PM +0800, Josh Wu wrote:
>> Since in at91sam9x5, sama5d3x chip. the start up time calucation is
>> changed.  This patch can choose different start up time calculation
>> formula for different chips.
>>
>> Signed-off-by: Josh Wu <josh.wu@atmel.com>
>> ---
>> v1 --> v2:
>>    add a new variable for different start_time calculation.
>>
>>   drivers/iio/adc/at91_adc.c |   42 +++++++++++++++++++++++++++++++++++-------
>>   1 file changed, 35 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
>> index b41eb60..9b0ffff 100644
>> --- a/drivers/iio/adc/at91_adc.c
>> +++ b/drivers/iio/adc/at91_adc.c
>> @@ -40,6 +40,7 @@
>>   	(writel_relaxed(val, st->reg_base + reg))
>>   
>>   struct at91_adc_caps {
>> +	bool	start_time_use_lookup_tab;
>>   	u32	mr_prescal_mask;
>>   	u32	mr_startup_mask;
>>   };
>> @@ -700,13 +701,39 @@ static int at91_adc_probe(struct platform_device *pdev)
>>   		goto error_disable_adc_clk;
>>   	}
>>   
>> -	/*
>> -	 * Number of ticks needed to cover the startup time of the ADC as
>> -	 * defined in the electrical characteristics of the board, divided by 8.
>> -	 * The formula thus is : Startup Time = (ticks + 1) * 8 / ADC Clock
>> -	 */
>> -	ticks = round_up((st->startup_time * adc_clk_khz /
>> -			  1000) - 1, 8) / 8;
>> +	if (!st->caps->start_time_use_lookup_tab) {
>> +		/*
>> +		 * Number of ticks needed to cover the startup time of the ADC
>> +		 * as defined in the electrical characteristics of the board,
>> +		 * divided by 8. The formula thus is :
>> +		 *   Startup Time = (ticks + 1) * 8 / ADC Clock
>> +		 */
>> +		ticks = round_up((st->startup_time * adc_clk_khz /
>> +				  1000) - 1, 8) / 8;
>> +	} else {
>> +		/*
>> +		 * For sama5d3x and at91sam9x5, the formula changes to:
>> +		 * Startup Time = <lookup_table_value> / ADC Clock
>> +		 */
>> +		const int startup_lookup[] = {
>> +			0  , 8  , 16 , 24 ,
>> +			64 , 80 , 96 , 112,
>> +			512, 576, 640, 704,
>> +			768, 832, 896, 960
>> +			};
>> +
>> +		int i, size = ARRAY_SIZE(startup_lookup);
>> +		ticks = st->startup_time * adc_clk_khz / 1000;
>> +		for (i = 0; i < size; i++)
>> +			if (ticks < startup_lookup[i])
>> +				break;
>> +
>> +		ticks = i;
>> +		if (ticks == size)
>> +			/* Reach the end of lookup table */
>> +			ticks = size - 1;
>> +	}
>> +
> Maybe just declaring two different functions here to calculate the
> number of ticks, and just holding the function pointer in your structure
> would make things more readable and future-proof?

I'll do this in next version. thanks.

>
> Maxime
>
Best Regards,
Josh Wu

  reply	other threads:[~2013-08-22  9:54 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-11 11:04 [PATCH v2 0/4] iio: at91: Add touch screen support in at91 adc Josh Wu
2013-08-11 11:04 ` Josh Wu
2013-08-11 11:04 ` [PATCH v2 1/4] iio: at91: fix adc_clk overflow Josh Wu
2013-08-11 11:04   ` Josh Wu
2013-08-11 11:04 ` [PATCH v2 2/4] iio: at91: Use different prescal, startup mask in MR for different IP Josh Wu
2013-08-11 11:04   ` Josh Wu
2013-08-15 19:20   ` Maxime Ripard
2013-08-15 19:20     ` Maxime Ripard
2013-08-22  9:51     ` Josh Wu
2013-08-22  9:51       ` Josh Wu
2013-08-22  9:53       ` Josh Wu
2013-08-22  9:53         ` Josh Wu
2013-08-23 15:46         ` Desroches, Ludovic
2013-08-23 16:59           ` Maxime Ripard
2013-08-23 16:59             ` Maxime Ripard
2013-08-26  8:32             ` Ludovic Desroches
2013-08-26  8:32               ` Ludovic Desroches
2013-08-26 10:03               ` Josh Wu
2013-08-26 10:03                 ` Josh Wu
2013-08-27  8:15                 ` Maxime Ripard
2013-08-27  8:15                   ` Maxime Ripard
2013-08-27  9:05                   ` Nicolas Ferre
2013-08-27  9:05                     ` Nicolas Ferre
2013-08-27  9:47                     ` Maxime Ripard
2013-08-27  9:47                       ` Maxime Ripard
2013-08-11 11:04 ` [PATCH v2 3/4] iio: at91: ADC start-up time calculation changed since at91sam9x5 Josh Wu
2013-08-11 11:04   ` Josh Wu
2013-08-15 19:27   ` Maxime Ripard
2013-08-15 19:27     ` Maxime Ripard
2013-08-22  9:54     ` Josh Wu [this message]
2013-08-22  9:54       ` Josh Wu
2013-08-11 11:04 ` [PATCH v2 4/4] iio: at91: introduce touch screen support in iio adc driver Josh Wu
2013-08-11 11:04   ` Josh Wu
2013-08-12 17:24   ` Dmitry Torokhov
2013-08-12 17:24     ` Dmitry Torokhov
2013-08-15 10:27     ` Jonathan Cameron
2013-08-15 10:27       ` Jonathan Cameron
2013-08-22 10:02       ` Josh Wu
2013-08-22 10:02         ` Josh Wu
2013-08-20  9:07     ` Josh Wu
2013-08-20  9:07       ` Josh Wu

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=5215DFC8.8090607@atmel.com \
    --to=josh.wu@atmel.com \
    --cc=b.brezillon@overkiz.com \
    --cc=jic23@cam.ac.uk \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=ludovic.desroches@atmel.com \
    --cc=mark.rutland@arm.com \
    --cc=maxime.ripard@free-electrons.com \
    --cc=nicolas.ferre@atmel.com \
    --cc=plagnioj@jcrosoft.com \
    --cc=thomas.petazzoni@free-electrons.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.