Commit 95471194 authored by Federico Vaga's avatar Federico Vaga

sw: check hardware for invalid acquisiton before starting

Signed-off-by: Federico Vaga's avatarFederico Vaga <federico.vaga@cern.ch>
parent ea4ad850
......@@ -24,6 +24,7 @@ const struct zfa_field_desc zfad_regs[] = {
[ZFA_STA_FSM] = {ADC_CSR_STA_REG_OFFSET, 0x00000007, 1},
[ZFA_STA_SERDES_PLL] = {ADC_CSR_STA_REG_OFFSET, 0x00000008, 1},
[ZFA_STA_SERDES_SYNCED] = {ADC_CSR_STA_REG_OFFSET, 0x00000010, 1},
[ZFA_STA_ACQ_CFG] = {ADC_CSR_STA_REG_OFFSET, 0x00000020, 1},
[ZFA_STA_FMC_NR] = {ADC_CSR_STA_REG_OFFSET, 0x000000c0, 1},
[ZFA_STA_CALIB_BUSY] = {ADC_CSR_STA_REG_OFFSET, 0x00008000, 1},
/* Trigger */
......
......@@ -317,6 +317,11 @@ static int zfat_data_done(struct zio_cset *cset)
return 0;
}
static bool fa_adc_is_acquisition_valid(struct fa_dev *fa)
{
return fa_readl(fa, fa->fa_adc_csr_base, &zfad_regs[ZFA_STA_ACQ_CFG]);
}
/*
* zfat_arm_trigger
* @ti: trigger instance
......@@ -335,6 +340,10 @@ static int zfat_arm_trigger(struct zio_ti *ti)
int i, err = 0;
dev_dbg(fa->msgdev, "Arming trigger\n");
if (!fa_adc_is_acquisition_valid(fa)) {
dev_err(fa->msgdev, "Hardware detected invalid ADC acquistion\n");
return -EINVAL;
}
/* Update the current control: sequence, nsamples and tstamp */
interleave->current_ctrl->nsamples = ti->nsamples;
......
......@@ -91,6 +91,7 @@ enum zfadc_dregs_enum {
ZFA_STA_FSM,
ZFA_STA_SERDES_PLL,
ZFA_STA_SERDES_SYNCED,
ZFA_STA_ACQ_CFG,
ZFA_STA_FMC_NR,
ZFA_STA_CALIB_BUSY,
/* Configuration register */
......
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