Commit 3d1f99de authored by Federico Vaga's avatar Federico Vaga

drv: do not auto-change calibration when changing range

Signed-off-by: Federico Vaga's avatarFederico Vaga <federico.vaga@cern.ch>
parent c209ebc8
......@@ -389,7 +389,8 @@ static void fa_apply_calib(struct fa_dev *fa)
int reg = zfad_get_chx_index(ZFA_CHx_CTL_RANGE, chan->index);
int range = fa_readl(fa, fa->fa_adc_csr_base, &zfad_regs[reg]);
zfad_set_range(fa, chan, zfad_convert_hw_range(range));
fa_adc_range_set(fa, chan, zfad_convert_hw_range(range));
fa_calib_config(fa);
}
}
......
......@@ -184,7 +184,7 @@ void zfad_init_saturation(struct fa_dev *fa)
}
/*
* zfad_set_range
* fa_adc_range_set
* @fa: the fmc-adc descriptor
* @chan: the channel to calibrate
* @usr_val: the volt range to set and calibrate
......@@ -193,8 +193,7 @@ void zfad_init_saturation(struct fa_dev *fa)
* Gain ad offsets must be corrected with offset and gain calibration value.
* An open input and test data do not need any correction.
*/
int zfad_set_range(struct fa_dev *fa, struct zio_channel *chan,
int range)
int fa_adc_range_set(struct fa_dev *fa, struct zio_channel *chan, int range)
{
int i;
......@@ -218,7 +217,6 @@ int zfad_set_range(struct fa_dev *fa, struct zio_channel *chan,
fa->range[chan->index] = range;
spin_unlock(&fa->zdev->cset->lock);
fa_calib_config(fa);
return 0;
}
......@@ -418,7 +416,9 @@ static int __fa_init(struct fa_dev *fa)
zdev->cset->chan[i].index);
fa_writel(fa, fa->fa_adc_csr_base, &zfad_regs[addr],
FA100M14B4C_RANGE_1V);
zfad_set_range(fa, &zdev->cset->chan[i], FA100M14B4C_RANGE_1V);
fa_adc_range_set(fa, &zdev->cset->chan[i],
FA100M14B4C_RANGE_1V);
fa_calib_config(fa);
}
zfad_reset_offset(fa);
......
......@@ -176,7 +176,7 @@ static int zfad_conf_set(struct device *dev, struct zio_attribute *zattr,
struct fa_dev *fa = get_zfadc(dev);
void *baseoff = fa->fa_adc_csr_base;
struct zio_channel *chan;
int i, range, reg_index;
int i, range, reg_index, err;
reg_index = zattr->id;
i = FA100M14B4C_NCHAN;
......@@ -294,13 +294,21 @@ static int zfad_conf_set(struct device *dev, struct zio_attribute *zattr,
range = zfad_convert_user_range(usr_val);
if (range < 0)
return range;
return zfad_set_range(fa, &to_zio_cset(dev)->chan[i], range);
err = fa_adc_range_set(fa, &to_zio_cset(dev)->chan[i], range);
if (err)
return err;
fa_calib_config(fa);
return 0;
case ZFA_CHx_CTL_RANGE:
range = zfad_convert_user_range(usr_val);
if (range < 0)
return range;
return zfad_set_range(fa, to_zio_chan(dev), range);
err = fa_adc_range_set(fa, &to_zio_cset(dev)->chan[i], range);
if (err)
return err;
fa_calib_config(fa);
return 0;
case ZFA_UTC_COARSE:
if (usr_val >= FA100M14B4C_UTC_CLOCK_FREQ) {
......
......@@ -618,8 +618,8 @@ extern int fa_adc_data_pattern_set(struct fa_dev *fa, uint16_t pattern,
/* Temporarily, user values are the same as hardware values */
extern int zfad_convert_user_range(uint32_t user_val);
extern int zfad_set_range(struct fa_dev *fa, struct zio_channel *chan,
int range);
extern int fa_adc_range_set(struct fa_dev *fa, struct zio_channel *chan,
int range);
extern int zfad_get_chx_index(unsigned long addr, unsigned int chan);
/* Function exported by fa-dma.c */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment