From: Lionel Xu Date: Fri, 9 Dec 2011 06:25:53 +0000 (+0800) Subject: ENGR00162729 MX6 ESAI: To reset the codec before initing a stream playbacking X-Git-Tag: v3.0.35-fsl~1796 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=63a306a4e447a85027db48dda4adfb12dc015d16;p=karo-tx-linux.git ENGR00162729 MX6 ESAI: To reset the codec before initing a stream playbacking Sometimes there is no sound after starting a stream playbacking, this problem can be resolved by resetting external codec at the beginning of startup. Signed-off-by: Lionel Xu --- diff --git a/sound/soc/codecs/cs42888.h b/sound/soc/codecs/cs42888.h index a650c9da5338..bea8beb8b70d 100644 --- a/sound/soc/codecs/cs42888.h +++ b/sound/soc/codecs/cs42888.h @@ -19,6 +19,7 @@ * the .codec_dai field of your machine driver's snd_soc_dai_link structure. */ extern struct snd_soc_dai_driver cs42888_dai; +#define CS42888_RST 235 /* * The ASoC codec device structure for the CS42888. Assign this structure diff --git a/sound/soc/imx/imx-cs42888.c b/sound/soc/imx/imx-cs42888.c index d34be0a0e8f9..4c9ca9857464 100644 --- a/sound/soc/imx/imx-cs42888.c +++ b/sound/soc/imx/imx-cs42888.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -33,7 +34,6 @@ #include "imx-esai.h" #include "../codecs/cs42888.h" - struct imx_priv_state { int hw; }; @@ -45,8 +45,13 @@ static int imx_3stack_startup(struct snd_pcm_substream *substream) { struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; - if (!cpu_dai->active) + + if (!cpu_dai->active) { hw_state.hw = 0; + gpio_direction_output(CS42888_RST, 0); + msleep(100); + gpio_direction_output(CS42888_RST, 1); + } return 0; }