Commit 4abb96c7 authored by Federico Vaga's avatar Federico Vaga

lib: add flag to remove zero-offset

When the ZERO flag is set, the function will remove any zero-offset applied.
This is used to reset the auto-clear status
Signed-off-by: Federico Vaga's avatarFederico Vaga <federico.vaga@cern.ch>
parent 4b79f254
......@@ -295,9 +295,13 @@ enum adc_offset_auto_clear_flags {
ADC_OFFSET_AC_F_SOFTWARE=0x00000004, /**< use software mechanism,
it implies manual
configuration */
ADC_OFFSET_AC_F_ZERO=0x00000008, /**< it sets the zero-offset to zero;
which means that it removes any
previously set zero-offset. */
__ADC_OFFSET_AC_F_MASK=(ADC_OFFSET_AC_F_MANUAL |
ADC_OFFSET_AC_F_RESTORE |
ADC_OFFSET_AC_F_SOFTWARE), /**< used internally */
ADC_OFFSET_AC_F_SOFTWARE |
ADC_OFFSET_AC_F_ZERO), /**< used internally */
};
/**
......
......@@ -988,6 +988,14 @@ static int adc_100m14b4cha_offset_auto_clear(struct adc_dev *dev,
int err, err_rst;
uint32_t range;
if (flags & ADC_OFFSET_AC_F_ZERO) {
offset = 0;
return adc_100m14b4cha_config_chn(dev, chan,
__ADC_CONF_CHN_OFFSET_ZERO,
(uint32_t *)&offset,
ADC_CONF_SET);
}
flags |= ADC_OFFSET_AC_F_SOFTWARE;
err = __cfg_offac_save(dev, chan, &tmpcfg, flags);
......
......@@ -707,6 +707,9 @@ static int adc_acq_offset_auto_clear(struct adc_dev *adc,
case 'a':
flags |= ADC_OFFSET_AC_F_RESTORE;
break;
case 'z':
flags |= ADC_OFFSET_AC_F_ZERO;
break;
default:
fprintf(stderr,
"%s: invalid offset auto-clear mode '%c' (valid modes: {a: automatic, m: manual})",
......
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