linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: jic23@kernel.org (Jonathan Cameron)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/5] iio: at91: ADC start-up time calculation changed since at91sam9x5
Date: Sat, 20 Jul 2013 10:39:17 +0100	[thread overview]
Message-ID: <51EA5AC5.30400@kernel.org> (raw)
In-Reply-To: <1373789069-11604-4-git-send-email-josh.wu@atmel.com>

On 07/14/2013 09:04 AM, Josh Wu wrote:
> Since in at91sam9x5, sama5d3x chip. the start up time calucation is changed.
> And these two chips also have TSMR, so we check whether ADC has TSMR, then
> choose different start up time calculation formula.
If this doesn't have anything directly to do with the TSMR and this is just
coincidence, then do this separately with it's own flag as it will be
easier to maintain in the long run.

Jonathan
> 
> Signed-off-by: Josh Wu <josh.wu@atmel.com>
> ---
>  drivers/iio/adc/at91_adc.c |   40 +++++++++++++++++++++++++++++++++-------
>  1 file changed, 33 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
> index 14e99ba..e93a075 100644
> --- a/drivers/iio/adc/at91_adc.c
> +++ b/drivers/iio/adc/at91_adc.c
> @@ -733,13 +733,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.has_tsmr) {
> +		/*
> +		 * 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;
> +	}
> +
>  	/*
>  	 * a minimal Sample and Hold Time is necessary for the ADC to guarantee
>  	 * the best converted final value between two channels selection
> 

  reply	other threads:[~2013-07-20  9:39 UTC|newest]

Thread overview: 40+ 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 ` [PATCH 1/5] iio: at91: use adc_clk_khz to make the calculation not easy to large than u32 Josh Wu
2013-07-15 12:52   ` Maxime Ripard
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-15 12:58   ` Maxime Ripard
2013-07-16  8:35     ` Josh Wu
2013-07-16  8:46       ` Nicolas Ferre
2013-07-16 11:20         ` Maxime Ripard
2013-07-16 11:30         ` Thomas Petazzoni
2013-07-16 19:03           ` Jonathan Cameron
2013-07-16 19:17             ` Thomas Petazzoni
2013-07-17  8:23               ` Nicolas Ferre
2013-07-17  8:12     ` Nicolas Ferre
2013-07-17  9:07       ` Josh Wu
2013-07-17 15:40       ` Maxime Ripard
2013-07-17  7:58   ` Nicolas Ferre
2013-07-17 10:09     ` Josh Wu
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-20  9:39   ` Jonathan Cameron [this message]
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-15 13:06   ` Maxime Ripard
2013-07-16  7:55     ` Josh Wu
2013-07-16 10:30       ` Maxime Ripard
2013-07-16 11:16         ` Lars-Peter Clausen
2013-07-25  7:29           ` Josh Wu
2013-07-25 12:01   ` boris brezillon
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-15 13:15   ` Maxime Ripard
2013-07-16  9:09     ` Josh Wu
2013-07-16 11:43       ` Maxime Ripard
2013-07-20  9:57   ` Jonathan Cameron
2013-07-22 13:17   ` Mark Rutland
2013-07-25  7:56     ` Josh Wu
2013-07-25 16:45       ` Mark Rutland
2013-08-06 10:24         ` Josh Wu
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=51EA5AC5.30400@kernel.org \
    --to=jic23@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).