Commit 9d2646ce authored by Federico Vaga's avatar Federico Vaga

sw:drv: fix bug about completion usage

The completion must be initialized everytime
Signed-off-by: Federico Vaga's avatarFederico Vaga <federico.vaga@cern.ch>
parent c5afb9ca
......@@ -688,7 +688,6 @@ int fa_probe(struct platform_device *pdev)
pdev->dev.platform_data = &fmc_adc_pdata_default;
}
init_completion(&fa->shot_done);
fa_memops_detect(fa);
fa_sg_alloc_table_init(fa);
......
......@@ -431,7 +431,7 @@ static void fa_dma_complete(void *arg,
zfad_dma_done(cset);
}
complete(&fa->shot_done);
complete(&zfad_block->shot_done);
}
......@@ -569,7 +569,7 @@ static int fa_dma_shot_wait_svec(struct fa_dev *fa,
if (fa->n_shots == 1)
return 0;
err = wait_for_completion_interruptible_timeout(&fa->shot_done,
err = wait_for_completion_interruptible_timeout(&zfad_block->shot_done,
msecs_to_jiffies(timeout_ms));
/* Check the status of our transfer */
......@@ -604,6 +604,7 @@ static int fa_dma_start_svec(struct zio_cset *cset)
err = zfad_dma_prep_slave_sg(fa->dchan, cset, &zfad_block[i]);
if (err)
goto err_prep;
init_completion(&zfad_block[i].shot_done);
dma_async_issue_pending(fa->dchan);
err = fa_dma_shot_wait_svec(fa, &zfad_block[i], 60000);
......
......@@ -348,8 +348,6 @@ struct fa_dev {
unsigned long size,
unsigned int max_segment,
gfp_t gfp_mask);
struct completion shot_done;
};
/*
......@@ -370,6 +368,7 @@ struct zfad_block {
void *dma_ctx;
unsigned int shot_n;
struct dma_slave_config sconfig;
struct completion shot_done;
};
/*
......
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