Skip to content

Commit b2fcb71

Browse files
committed
iio: adc: at91-sama5d2_adc: add startup and tracktim as parameter for at91_adc_setup_samp_freq()
Add startup and tracktim as parameter for at91_adc_setup_samp_freq() function. In case of temperature sensor being enabled these parameters will be configured on temperature read request to improve the accuracy of the read temperature. Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
1 parent 64476e3 commit b2fcb71

1 file changed

Lines changed: 11 additions & 7 deletions

File tree

drivers/iio/adc/at91-sama5d2_adc.c

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1435,25 +1435,27 @@ static unsigned at91_adc_startup_time(unsigned startup_time_min,
14351435
return i;
14361436
}
14371437

1438-
static void at91_adc_setup_samp_freq(struct iio_dev *indio_dev, unsigned freq)
1438+
static void at91_adc_setup_samp_freq(struct iio_dev *indio_dev, unsigned freq,
1439+
unsigned int startup_time,
1440+
unsigned int tracktim)
14391441
{
14401442
struct at91_adc_state *st = iio_priv(indio_dev);
14411443
unsigned f_per, prescal, startup, mr;
14421444

14431445
f_per = clk_get_rate(st->per_clk);
14441446
prescal = (f_per / (2 * freq)) - 1;
14451447

1446-
startup = at91_adc_startup_time(st->soc_info.startup_time,
1447-
freq / 1000);
1448+
startup = at91_adc_startup_time(startup_time, freq / 1000);
14481449

14491450
mr = at91_adc_readl(st, MR);
14501451
mr &= ~(AT91_SAMA5D2_MR_STARTUP_MASK | AT91_SAMA5D2_MR_PRESCAL_MASK);
14511452
mr |= AT91_SAMA5D2_MR_STARTUP(startup);
14521453
mr |= AT91_SAMA5D2_MR_PRESCAL(prescal);
1454+
mr |= AT91_SAMA5D2_MR_TRACKTIM(tracktim);
14531455
at91_adc_writel(st, MR, mr);
14541456

1455-
dev_dbg(&indio_dev->dev, "freq: %u, startup: %u, prescal: %u\n",
1456-
freq, startup, prescal);
1457+
dev_dbg(&indio_dev->dev, "freq: %u, startup: %u, prescal: %u, tracktim=%u\n",
1458+
freq, startup, prescal, tracktim);
14571459
st->current_sample_rate = freq;
14581460
}
14591461

@@ -1713,7 +1715,8 @@ static int at91_adc_write_raw(struct iio_dev *indio_dev,
17131715
return -EINVAL;
17141716

17151717
mutex_lock(&st->lock);
1716-
at91_adc_setup_samp_freq(indio_dev, val);
1718+
at91_adc_setup_samp_freq(indio_dev, val,
1719+
st->soc_info.startup_time, 0);
17171720
mutex_unlock(&st->lock);
17181721
return 0;
17191722
default:
@@ -1876,7 +1879,8 @@ static void at91_adc_hw_init(struct iio_dev *indio_dev)
18761879
at91_adc_writel(st, MR,
18771880
AT91_SAMA5D2_MR_TRANSFER(2) | AT91_SAMA5D2_MR_ANACH);
18781881

1879-
at91_adc_setup_samp_freq(indio_dev, st->soc_info.min_sample_rate);
1882+
at91_adc_setup_samp_freq(indio_dev, st->soc_info.min_sample_rate,
1883+
st->soc_info.startup_time, 0);
18801884

18811885
/* configure extended mode register */
18821886
at91_adc_config_emr(st, st->oversampling_ratio, 0);

0 commit comments

Comments
 (0)