Commit 49ad7886 authored by Federico Vaga's avatar Federico Vaga

sw:drv initialize the clock before anything else

Some registers needs the clock to be enabled before being used.
We saw this with the calibration BUSY bit.
Signed-off-by: Federico Vaga's avatarFederico Vaga <federico.vaga@cern.ch>
Signed-off-by: Tristan Gingold's avatarTristan Gingold <tristan.gingold@cern.ch>
parent eb15f5a9
...@@ -481,6 +481,16 @@ static void fa_init_timetag(struct fa_dev *fa) ...@@ -481,6 +481,16 @@ static void fa_init_timetag(struct fa_dev *fa)
(seconds >> 00) & 0xFFFFFFFF); (seconds >> 00) & 0xFFFFFFFF);
} }
static void fa_clock_enable(struct fa_dev *fa)
{
fa_writel(fa, fa->fa_adc_csr_base, &zfad_regs[ZFA_CTL_CLK_EN], 1);
}
static void fa_clock_disable(struct fa_dev *fa)
{
fa_writel(fa, fa->fa_adc_csr_base, &zfad_regs[ZFA_CTL_CLK_EN], 0);
}
/* /*
* Specific check and init * Specific check and init
*/ */
...@@ -511,8 +521,6 @@ static int __fa_init(struct fa_dev *fa) ...@@ -511,8 +521,6 @@ static int __fa_init(struct fa_dev *fa)
} }
fa_calib_config(fa); fa_calib_config(fa);
/* Enable mezzanine clock */
fa_writel(fa, fa->fa_adc_csr_base, &zfad_regs[ZFA_CTL_CLK_EN], 1);
/* Set decimation to minimum */ /* Set decimation to minimum */
fa_writel(fa, fa->fa_adc_csr_base, &zfad_regs[ZFAT_SR_UNDER], 1); fa_writel(fa, fa->fa_adc_csr_base, &zfad_regs[ZFAT_SR_UNDER], 1);
/* Set test data register */ /* Set test data register */
...@@ -715,6 +723,7 @@ int fa_probe(struct platform_device *pdev) ...@@ -715,6 +723,7 @@ int fa_probe(struct platform_device *pdev)
if (err) if (err)
goto out_dma; goto out_dma;
fa_clock_enable(fa);
err = fa_adc_wait_serdes_ready(fa, msecs_to_jiffies(10)); err = fa_adc_wait_serdes_ready(fa, msecs_to_jiffies(10));
if (err) if (err)
...@@ -748,6 +757,7 @@ out: ...@@ -748,6 +757,7 @@ out:
m->exit(fa); m->exit(fa);
iounmap(fa->fa_top_level); iounmap(fa->fa_top_level);
out_serdes: out_serdes:
fa_clock_disable(fa);
fa_dma_release_channel(fa); fa_dma_release_channel(fa);
out_dma: out_dma:
out_fmc_err: out_fmc_err:
...@@ -776,6 +786,7 @@ int fa_remove(struct platform_device *pdev) ...@@ -776,6 +786,7 @@ int fa_remove(struct platform_device *pdev)
if (m->exit) if (m->exit)
m->exit(fa); m->exit(fa);
} }
fa_clock_disable(fa);
fa_dma_release_channel(fa); fa_dma_release_channel(fa);
iounmap(fa->fa_top_level); iounmap(fa->fa_top_level);
......
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