From 03944b23b2f2da1b05e79dad3d46db3cd31fd1c6 Mon Sep 17 00:00:00 2001 From: Shengjiu Wang Date: Tue, 17 Sep 2019 13:29:17 +0800 Subject: MLK-22591: ASoC: fsl_easrc: Add RUN_STOP in stop context When record bitstream with ASRC+AK5558, there may be I/O error for the high sample rate case (352kHz/768kHz). The reason is that the context is not fully reset after conversion, the ASRC does not start to work in next conversion. In order to fully reset the context, we need to enable RUN_STOP, then clear the RUN_EN bit. Signed-off-by: Shengjiu Wang (cherry picked from commit 7b44c3c653acf078b6477fbc0393f88708ccb24c) --- sound/soc/fsl/fsl_easrc.h | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'sound/soc/fsl/fsl_easrc.h') diff --git a/sound/soc/fsl/fsl_easrc.h b/sound/soc/fsl/fsl_easrc.h index 93ee99725afb..f23374fd85ce 100644 --- a/sound/soc/fsl/fsl_easrc.h +++ b/sound/soc/fsl/fsl_easrc.h @@ -458,22 +458,22 @@ /* ASRC Interrupt Status Flags (ISF) */ #define EASRC_IRQF_RSD_SHIFT 8 #define EASRC_IRQF_RSD_WIDTH 4 -#define EASRC_IRQF_RSD_MASK ((BIT(EASRC_ISF_RSD_WIDTH) - 1) \ - << EASRC_ISF_RSD_SHIFT) -#define EASRC_IRQF_RSD(v) (((v) << EASRC_ISF_RSD_SHIFT) \ - & EASRC_ISF_RSD_MASK) +#define EASRC_IRQF_RSD_MASK ((BIT(EASRC_IRQF_RSD_WIDTH) - 1) \ + << EASRC_IRQF_RSD_SHIFT) +#define EASRC_IRQF_RSD(v) (((v) << EASRC_IRQF_RSD_SHIFT) \ + & EASRC_IRQF_RSD_MASK) #define EASRC_IRQF_OER_SHIFT 4 #define EASRC_IRQF_OER_WIDTH 4 -#define EASRC_IRQF_OER_MASK ((BIT(EASRC_ISF_OER_WIDTH) - 1) \ - << EASRC_ISF_OER_SHIFT) -#define EASRC_IRQF_OER(v) (((v) << EASRC_ISF_OER_SHIFT) \ - & EASRC_ISF_OER_MASK) +#define EASRC_IRQF_OER_MASK ((BIT(EASRC_IRQF_OER_WIDTH) - 1) \ + << EASRC_IRQF_OER_SHIFT) +#define EASRC_IRQF_OER(v) (((v) << EASRC_IRQF_OER_SHIFT) \ + & EASRC_IRQF_OER_MASK) #define EASRC_IRQF_IFO_SHIFT 0 #define EASRC_IRQF_IFO_WIDTH 4 -#define EASRC_IRQF_IFO_MASK ((BIT(EASRC_ISF_IFO_WIDTH) - 1) \ - << EASRC_ISF_IFO_SHIFT) -#define EASRC_IRQF_IFO(v) (((v) << EASRC_ISF_IFO_SHIFT) \ - & EASRC_ISF_IFO_MASK) +#define EASRC_IRQF_IFO_MASK ((BIT(EASRC_IRQF_IFO_WIDTH) - 1) \ + << EASRC_IRQF_IFO_SHIFT) +#define EASRC_IRQF_IFO(v) (((v) << EASRC_IRQF_IFO_SHIFT) \ + & EASRC_IRQF_IFO_MASK) /* ASRC Context Channel STAT */ #define EASRC_CSx_CSx_SHIFT 0 -- cgit v1.2.3