Message ID | 1377602932-1899-5-git-send-email-josh.wu@atmel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Josh, On Tue, Aug 27, 2013 at 07:28:50PM +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> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> Thanks for your work, Maxime
On 08/28/13 10:03, Maxime Ripard wrote: > Hi Josh, > > On Tue, Aug 27, 2013 at 07:28:50PM +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> > > Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> > Unfortunately this one has a dependency on the fix patch which is going in through my fixes branch so will have to wait until that hits my upstream. I'd like 5 and 6 to sit a while longer anyway (and 6 needs Dmitry's sign off before I take that.) Thanks for these, Jonathan
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 08/29/13 22:00, Jonathan Cameron wrote: > On 08/28/13 10:03, Maxime Ripard wrote: >> Hi Josh, >> >> On Tue, Aug 27, 2013 at 07:28:50PM +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> >> >> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> >> > Unfortunately this one has a dependency on the fix patch which is going in through my fixes branch so will have to > wait until that hits my upstream. > > I'd like 5 and 6 to sit a while longer anyway (and 6 needs Dmitry's sign off before I take that.) > Hi All, This patch no longer applies unfortunately. Josh, could you bring it up to date and repost the last 3 patches of this series? -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.21 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQIcBAEBAgAGBQJSSpbIAAoJEFSFNJnE9BaIi48QALwC0aVUQNU94RpUBRBqFVkF H8AB2pLBLYV4JlLD1kg9/ksltZh9+xegd/mM/C/lqZoHaokbSSF0bcAPSV2E3lXN MJ3sRx0ubmGAMNWOYI22pqD1BQwEWMdjmS/BaZ2FxkOdJyIV/jkR8NpA3BrvL7e2 iOv9k7nBkOI1B//0K/xr4B0MWotnbmq45KeHTR1VnItqGWHDG7gyB+sbnymyf53M XY99HUpkLggBJrbp05PYmp9RTvyV7NYlMvgMtwUWcM6VaA0YrSRR349P+UsIcmwV 60yXRDRZCM5Vu3HDAVnbGDtumGjSFYsXXVkJQoN8izCBn0ZsbdSzc4bJyGzn90WK vpt5rpd4k+ne/TTuJSiIiz8g/7aZvlWWSQ17j2Qb+IOfh2yROHuA+yyikfFV8N4e 8jkd5HSMMRoL1Bv1vsf8eOJVlIMTOkG/2Wa7rXJOiWwzmc09Fxp13SoOIOxEMqJY lCj8In1fYLryMBCjxR2C/ysnullAbTwBv9HtudPm3Lu80eR8GL7lB4VrrhJyHILP ROvJE4ETYpYQTxQZMJKgVAQBFUAhBmckdc1A/SXMcDJgZKraP9aFvJPYbFR4OlFz UfjWWS6TzHFgFe2r804DzT+A7fpdZNFrbxyM40ttg7kJ81DgT9aQncEM96dEmiWh nXz0iA/maOXKkqJluLWl =HbYR -----END PGP SIGNATURE-----
Hi, Jonathan On 10/1/2013 5:32 PM, Jonathan Cameron wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > On 08/29/13 22:00, Jonathan Cameron wrote: >> On 08/28/13 10:03, Maxime Ripard wrote: >>> Hi Josh, >>> >>> On Tue, Aug 27, 2013 at 07:28:50PM +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> >>> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> >>> >> Unfortunately this one has a dependency on the fix patch which is going in through my fixes branch so will have to >> wait until that hits my upstream. >> >> I'd like 5 and 6 to sit a while longer anyway (and 6 needs Dmitry's sign off before I take that.) >> > Hi All, > > This patch no longer applies unfortunately. Josh, could you bring > it up to date and repost the last 3 patches of this series? Sorry for the later reply since I just come back from the holiday. I will send the last 3 patches of this series (include this one) base on the mainline Linux. Thanks. Best Regards, Josh Wu > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2.0.21 (GNU/Linux) > Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ > > iQIcBAEBAgAGBQJSSpbIAAoJEFSFNJnE9BaIi48QALwC0aVUQNU94RpUBRBqFVkF > H8AB2pLBLYV4JlLD1kg9/ksltZh9+xegd/mM/C/lqZoHaokbSSF0bcAPSV2E3lXN > MJ3sRx0ubmGAMNWOYI22pqD1BQwEWMdjmS/BaZ2FxkOdJyIV/jkR8NpA3BrvL7e2 > iOv9k7nBkOI1B//0K/xr4B0MWotnbmq45KeHTR1VnItqGWHDG7gyB+sbnymyf53M > XY99HUpkLggBJrbp05PYmp9RTvyV7NYlMvgMtwUWcM6VaA0YrSRR349P+UsIcmwV > 60yXRDRZCM5Vu3HDAVnbGDtumGjSFYsXXVkJQoN8izCBn0ZsbdSzc4bJyGzn90WK > vpt5rpd4k+ne/TTuJSiIiz8g/7aZvlWWSQ17j2Qb+IOfh2yROHuA+yyikfFV8N4e > 8jkd5HSMMRoL1Bv1vsf8eOJVlIMTOkG/2Wa7rXJOiWwzmc09Fxp13SoOIOxEMqJY > lCj8In1fYLryMBCjxR2C/ysnullAbTwBv9HtudPm3Lu80eR8GL7lB4VrrhJyHILP > ROvJE4ETYpYQTxQZMJKgVAQBFUAhBmckdc1A/SXMcDJgZKraP9aFvJPYbFR4OlFz > UfjWWS6TzHFgFe2r804DzT+A7fpdZNFrbxyM40ttg7kJ81DgT9aQncEM96dEmiWh > nXz0iA/maOXKkqJluLWl > =HbYR > -----END PGP SIGNATURE-----
diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c index bccc407..f32a69d 100644 --- a/drivers/iio/adc/at91_adc.c +++ b/drivers/iio/adc/at91_adc.c @@ -40,6 +40,9 @@ (writel_relaxed(val, st->reg_base + reg)) struct at91_adc_caps { + /* startup time calculate function */ + u32 (*calc_startup_ticks)(u8 startup_time, u32 adc_clk_khz); + struct at91_adc_reg_desc registers; }; @@ -434,6 +437,45 @@ ret: return ret; } +static u32 calc_startup_ticks_9260(u8 startup_time, u32 adc_clk_khz) +{ + /* + * 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 + */ + return round_up((startup_time * adc_clk_khz / 1000) - 1, 8) / 8; +} + +static u32 calc_startup_ticks_9x5(u8 startup_time, u32 adc_clk_khz) +{ + /* + * 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); + unsigned int ticks; + + ticks = 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; + + return ticks; +} + static const struct of_device_id at91_adc_dt_ids[]; static int at91_adc_probe_dt(struct at91_adc_state *st, @@ -662,15 +704,9 @@ static int at91_adc_probe(struct platform_device *pdev) ret = -EINVAL; goto error_disable_adc_clk; } + ticks = (*st->caps->calc_startup_ticks)(st->startup_time, adc_clk_khz); /* - * 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; - /* * a minimal Sample and Hold Time is necessary for the ADC to guarantee * the best converted final value between two channels selection * The formula thus is : Sample and Hold Time = (shtim + 1) / ADCClock @@ -751,6 +787,7 @@ static int at91_adc_remove(struct platform_device *pdev) #ifdef CONFIG_OF static struct at91_adc_caps at91sam9260_caps = { + .calc_startup_ticks = calc_startup_ticks_9260, .registers = { .channel_base = AT91_ADC_CHR(0), .drdy_mask = AT91_ADC_DRDY, @@ -762,6 +799,7 @@ static struct at91_adc_caps at91sam9260_caps = { }; static struct at91_adc_caps at91sam9g45_caps = { + .calc_startup_ticks = calc_startup_ticks_9260, /* same as 9260 */ .registers = { .channel_base = AT91_ADC_CHR(0), .drdy_mask = AT91_ADC_DRDY, @@ -773,6 +811,7 @@ static struct at91_adc_caps at91sam9g45_caps = { }; static struct at91_adc_caps at91sam9x5_caps = { + .calc_startup_ticks = calc_startup_ticks_9x5, .registers = { .channel_base = AT91_ADC_CDR0_9X5, .drdy_mask = AT91_ADC_SR_DRDY_9X5,
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> --- v2 --> v3: use function pointer for the startup time calculation. drivers/iio/adc/at91_adc.c | 53 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 7 deletions(-)