diff options
Diffstat (limited to 'sound/soc/omap/omap-mcbsp.c')
-rw-r--r-- | sound/soc/omap/omap-mcbsp.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c index 9c09b94f0cf8..912614283848 100644 --- a/sound/soc/omap/omap-mcbsp.c +++ b/sound/soc/omap/omap-mcbsp.c | |||
@@ -3,7 +3,8 @@ | |||
3 | * | 3 | * |
4 | * Copyright (C) 2008 Nokia Corporation | 4 | * Copyright (C) 2008 Nokia Corporation |
5 | * | 5 | * |
6 | * Contact: Jarkko Nikula <jarkko.nikula@nokia.com> | 6 | * Contact: Jarkko Nikula <jhnikula@gmail.com> |
7 | * Peter Ujfalusi <peter.ujfalusi@nokia.com> | ||
7 | * | 8 | * |
8 | * This program is free software; you can redistribute it and/or | 9 | * This program is free software; you can redistribute it and/or |
9 | * modify it under the terms of the GNU General Public License | 10 | * modify it under the terms of the GNU General Public License |
@@ -283,7 +284,7 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream, | |||
283 | break; | 284 | break; |
284 | case SND_SOC_DAIFMT_DSP_B: | 285 | case SND_SOC_DAIFMT_DSP_B: |
285 | regs->srgr2 |= FPER(wlen * channels - 1); | 286 | regs->srgr2 |= FPER(wlen * channels - 1); |
286 | regs->srgr1 |= FWID(wlen * channels - 2); | 287 | regs->srgr1 |= FWID(0); |
287 | break; | 288 | break; |
288 | } | 289 | } |
289 | 290 | ||
@@ -302,6 +303,7 @@ static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai *cpu_dai, | |||
302 | { | 303 | { |
303 | struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data); | 304 | struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data); |
304 | struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs; | 305 | struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs; |
306 | unsigned int temp_fmt = fmt; | ||
305 | 307 | ||
306 | if (mcbsp_data->configured) | 308 | if (mcbsp_data->configured) |
307 | return 0; | 309 | return 0; |
@@ -328,6 +330,8 @@ static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai *cpu_dai, | |||
328 | /* 0-bit data delay */ | 330 | /* 0-bit data delay */ |
329 | regs->rcr2 |= RDATDLY(0); | 331 | regs->rcr2 |= RDATDLY(0); |
330 | regs->xcr2 |= XDATDLY(0); | 332 | regs->xcr2 |= XDATDLY(0); |
333 | /* Invert FS polarity configuration */ | ||
334 | temp_fmt ^= SND_SOC_DAIFMT_NB_IF; | ||
331 | break; | 335 | break; |
332 | default: | 336 | default: |
333 | /* Unsupported data format */ | 337 | /* Unsupported data format */ |
@@ -351,7 +355,7 @@ static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai *cpu_dai, | |||
351 | } | 355 | } |
352 | 356 | ||
353 | /* Set bit clock (CLKX/CLKR) and FS polarities */ | 357 | /* Set bit clock (CLKX/CLKR) and FS polarities */ |
354 | switch (fmt & SND_SOC_DAIFMT_INV_MASK) { | 358 | switch (temp_fmt & SND_SOC_DAIFMT_INV_MASK) { |
355 | case SND_SOC_DAIFMT_NB_NF: | 359 | case SND_SOC_DAIFMT_NB_NF: |
356 | /* | 360 | /* |
357 | * Normal BCLK + FS. | 361 | * Normal BCLK + FS. |
@@ -529,6 +533,6 @@ static void __exit snd_omap_mcbsp_exit(void) | |||
529 | } | 533 | } |
530 | module_exit(snd_omap_mcbsp_exit); | 534 | module_exit(snd_omap_mcbsp_exit); |
531 | 535 | ||
532 | MODULE_AUTHOR("Jarkko Nikula <jarkko.nikula@nokia.com>"); | 536 | MODULE_AUTHOR("Jarkko Nikula <jhnikula@gmail.com>"); |
533 | MODULE_DESCRIPTION("OMAP I2S SoC Interface"); | 537 | MODULE_DESCRIPTION("OMAP I2S SoC Interface"); |
534 | MODULE_LICENSE("GPL"); | 538 | MODULE_LICENSE("GPL"); |