summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorAdrian Alonso <aalonso@freescale.com>2012-02-16 18:32:27 -0600
committerAdrian Alonso <aalonso@freescale.com>2012-02-21 16:40:50 -0600
commit7f360988d8cfced7352702384c297ae88ae56246 (patch)
treeb1082e518bac2f6335a95e45916cf9eafe8d7766 /sound
parent8a6f9cc8a563bb892027c61481b2f7806456104e (diff)
ENGR00171079-6 imx-cs42888 sabreauto esai config
* imx-cs42888 config esai for sabreauto support * Select lrclk_ratio according to mclk_freq * Set clkdiv relations * Add safer codec reset, request and free gpio Signed-off-by: Adrian Alonso <aalonso@freescale.com>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/imx/imx-cs42888.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/sound/soc/imx/imx-cs42888.c b/sound/soc/imx/imx-cs42888.c
index 26745d35b936..0a78b39839fc 100644
--- a/sound/soc/imx/imx-cs42888.c
+++ b/sound/soc/imx/imx-cs42888.c
@@ -30,6 +30,7 @@
#include <mach/hardware.h>
#include <mach/clock.h>
+#include <asm/mach-types.h>
#include "imx-esai.h"
#include "../codecs/cs42888.h"
@@ -50,9 +51,9 @@ static int imx_3stack_startup(struct snd_pcm_substream *substream)
if (!cpu_dai->active) {
hw_state.hw = 0;
if (rst_gpio) {
- gpio_direction_output(rst_gpio, 0);
+ gpio_set_value_cansleep(rst_gpio, 0);
msleep(100);
- gpio_direction_output(rst_gpio, 1);
+ gpio_set_value_cansleep(rst_gpio, 1);
} else {
gpio_direction_output(CS42888_RST, 0);
msleep(100);
@@ -84,7 +85,7 @@ static int imx_3stack_surround_hw_params(struct snd_pcm_substream *substream,
if (hw_state.hw)
return 0;
hw_state.hw = 1;
- if (cpu_is_mx53()) {
+ if (cpu_is_mx53() || machine_is_mx6q_sabreauto()) {
switch (rate) {
case 32000:
lrclk_ratio = 3;
@@ -160,7 +161,7 @@ static int imx_3stack_surround_hw_params(struct snd_pcm_substream *substream,
/* set i.MX active slot mask */
snd_soc_dai_set_tdm_slot(cpu_dai, 0x3, 0x3, 2, 32);
/* set the ESAI system clock as output */
- if (cpu_is_mx53()) {
+ if (cpu_is_mx53() || machine_is_mx6q_sabreauto()) {
snd_soc_dai_set_sysclk(cpu_dai, ESAI_CLK_EXTAL,
mclk_freq, SND_SOC_CLOCK_OUT);
} else if (cpu_is_mx6q() || cpu_is_mx6dl()) {
@@ -169,14 +170,14 @@ static int imx_3stack_surround_hw_params(struct snd_pcm_substream *substream,
}
/* set the ratio */
snd_soc_dai_set_clkdiv(cpu_dai, ESAI_TX_DIV_PSR, 1);
- if (cpu_is_mx53())
+ if (cpu_is_mx53() || machine_is_mx6q_sabreauto())
snd_soc_dai_set_clkdiv(cpu_dai, ESAI_TX_DIV_PM, 0);
else if (cpu_is_mx6q() || cpu_is_mx6dl())
snd_soc_dai_set_clkdiv(cpu_dai, ESAI_TX_DIV_PM, 2);
snd_soc_dai_set_clkdiv(cpu_dai, ESAI_TX_DIV_FP, lrclk_ratio);
snd_soc_dai_set_clkdiv(cpu_dai, ESAI_RX_DIV_PSR, 1);
- if (cpu_is_mx53())
+ if (cpu_is_mx53() || machine_is_mx6q_sabreauto())
snd_soc_dai_set_clkdiv(cpu_dai, ESAI_RX_DIV_PM, 0);
else if (cpu_is_mx6q() || cpu_is_mx6dl())
snd_soc_dai_set_clkdiv(cpu_dai, ESAI_RX_DIV_PM, 2);