mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-01 10:45:49 +00:00
ASoC: fsl_micfil: Enable micfil error interrupt
Enable micfil error interrupt, in the error handler, FIFO state and OUT state need to be cleared. Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> Link: https://patch.msgid.link/1727424031-19551-4-git-send-email-shengjiu.wang@nxp.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
b47024dc62
commit
cc3ae21f36
@ -651,7 +651,7 @@ static int fsl_micfil_trigger(struct snd_pcm_substream *substream, int cmd,
|
||||
|
||||
/* Enable the module */
|
||||
ret = regmap_set_bits(micfil->regmap, REG_MICFIL_CTRL1,
|
||||
MICFIL_CTRL1_PDMIEN);
|
||||
MICFIL_CTRL1_PDMIEN | MICFIL_CTRL1_ERREN);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -667,7 +667,7 @@ static int fsl_micfil_trigger(struct snd_pcm_substream *substream, int cmd,
|
||||
|
||||
/* Disable the module */
|
||||
ret = regmap_clear_bits(micfil->regmap, REG_MICFIL_CTRL1,
|
||||
MICFIL_CTRL1_PDMIEN);
|
||||
MICFIL_CTRL1_PDMIEN | MICFIL_CTRL1_ERREN);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -940,6 +940,7 @@ static bool fsl_micfil_volatile_reg(struct device *dev, unsigned int reg)
|
||||
{
|
||||
switch (reg) {
|
||||
case REG_MICFIL_STAT:
|
||||
case REG_MICFIL_FIFO_STAT:
|
||||
case REG_MICFIL_DATACH0:
|
||||
case REG_MICFIL_DATACH1:
|
||||
case REG_MICFIL_DATACH2:
|
||||
@ -948,6 +949,7 @@ static bool fsl_micfil_volatile_reg(struct device *dev, unsigned int reg)
|
||||
case REG_MICFIL_DATACH5:
|
||||
case REG_MICFIL_DATACH6:
|
||||
case REG_MICFIL_DATACH7:
|
||||
case REG_MICFIL_OUT_STAT:
|
||||
case REG_MICFIL_VERID:
|
||||
case REG_MICFIL_PARAM:
|
||||
case REG_MICFIL_VAD0_STAT:
|
||||
@ -1024,6 +1026,8 @@ static irqreturn_t micfil_err_isr(int irq, void *devid)
|
||||
{
|
||||
struct fsl_micfil *micfil = (struct fsl_micfil *)devid;
|
||||
struct platform_device *pdev = micfil->pdev;
|
||||
u32 fifo_stat_reg;
|
||||
u32 out_stat_reg;
|
||||
u32 stat_reg;
|
||||
|
||||
regmap_read(micfil->regmap, REG_MICFIL_STAT, &stat_reg);
|
||||
@ -1040,6 +1044,14 @@ static irqreturn_t micfil_err_isr(int irq, void *devid)
|
||||
MICFIL_STAT_LOWFREQF, MICFIL_STAT_LOWFREQF);
|
||||
}
|
||||
|
||||
regmap_read(micfil->regmap, REG_MICFIL_FIFO_STAT, &fifo_stat_reg);
|
||||
regmap_write_bits(micfil->regmap, REG_MICFIL_FIFO_STAT,
|
||||
fifo_stat_reg, fifo_stat_reg);
|
||||
|
||||
regmap_read(micfil->regmap, REG_MICFIL_OUT_STAT, &out_stat_reg);
|
||||
regmap_write_bits(micfil->regmap, REG_MICFIL_OUT_STAT,
|
||||
out_stat_reg, out_stat_reg);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user