Commit 9b5b0c01 authored by Mark Brown's avatar Mark Brown

Merge branch 'for-2.6.30' into for-2.6.31

parents 7154b3e8 b08f7a62
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright (C) 2008 Nokia Corporation * Copyright (C) 2008 Nokia Corporation
* *
* Contact: Jarkko Nikula <jarkko.nikula@nokia.com> * Contact: Jarkko Nikula <jhnikula@gmail.com>
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
...@@ -416,6 +416,6 @@ static void __exit n810_soc_exit(void) ...@@ -416,6 +416,6 @@ static void __exit n810_soc_exit(void)
module_init(n810_soc_init); module_init(n810_soc_init);
module_exit(n810_soc_exit); module_exit(n810_soc_exit);
MODULE_AUTHOR("Jarkko Nikula <jarkko.nikula@nokia.com>"); MODULE_AUTHOR("Jarkko Nikula <jhnikula@gmail.com>");
MODULE_DESCRIPTION("ALSA SoC Nokia N810"); MODULE_DESCRIPTION("ALSA SoC Nokia N810");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
* *
* Copyright (C) 2008 Nokia Corporation * Copyright (C) 2008 Nokia Corporation
* *
* Contact: Jarkko Nikula <jarkko.nikula@nokia.com> * Contact: Jarkko Nikula <jhnikula@gmail.com>
* Peter Ujfalusi <peter.ujfalusi@nokia.com>
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
...@@ -546,6 +547,6 @@ static void __exit snd_omap_mcbsp_exit(void) ...@@ -546,6 +547,6 @@ static void __exit snd_omap_mcbsp_exit(void)
} }
module_exit(snd_omap_mcbsp_exit); module_exit(snd_omap_mcbsp_exit);
MODULE_AUTHOR("Jarkko Nikula <jarkko.nikula@nokia.com>"); MODULE_AUTHOR("Jarkko Nikula <jhnikula@gmail.com>");
MODULE_DESCRIPTION("OMAP I2S SoC Interface"); MODULE_DESCRIPTION("OMAP I2S SoC Interface");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
* *
* Copyright (C) 2008 Nokia Corporation * Copyright (C) 2008 Nokia Corporation
* *
* Contact: Jarkko Nikula <jarkko.nikula@nokia.com> * Contact: Jarkko Nikula <jhnikula@gmail.com>
* Peter Ujfalusi <peter.ujfalusi@nokia.com>
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
......
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
* *
* Copyright (C) 2008 Nokia Corporation * Copyright (C) 2008 Nokia Corporation
* *
* Contact: Jarkko Nikula <jarkko.nikula@nokia.com> * Contact: Jarkko Nikula <jhnikula@gmail.com>
* Peter Ujfalusi <peter.ujfalusi@nokia.com>
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
...@@ -367,6 +368,6 @@ static void __exit omap_soc_platform_exit(void) ...@@ -367,6 +368,6 @@ static void __exit omap_soc_platform_exit(void)
} }
module_exit(omap_soc_platform_exit); module_exit(omap_soc_platform_exit);
MODULE_AUTHOR("Jarkko Nikula <jarkko.nikula@nokia.com>"); MODULE_AUTHOR("Jarkko Nikula <jhnikula@gmail.com>");
MODULE_DESCRIPTION("OMAP PCM DMA module"); MODULE_DESCRIPTION("OMAP PCM DMA module");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
* *
* Copyright (C) 2008 Nokia Corporation * Copyright (C) 2008 Nokia Corporation
* *
* Contact: Jarkko Nikula <jarkko.nikula@nokia.com> * Contact: Jarkko Nikula <jhnikula@gmail.com>
* Peter Ujfalusi <peter.ujfalusi@nokia.com>
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
......
...@@ -280,12 +280,33 @@ static int pxa_ssp_resume(struct snd_soc_dai *cpu_dai) ...@@ -280,12 +280,33 @@ static int pxa_ssp_resume(struct snd_soc_dai *cpu_dai)
* ssp_set_clkdiv - set SSP clock divider * ssp_set_clkdiv - set SSP clock divider
* @div: serial clock rate divider * @div: serial clock rate divider
*/ */
static void ssp_set_scr(struct ssp_dev *dev, u32 div) static void ssp_set_scr(struct ssp_device *ssp, u32 div)
{ {
struct ssp_device *ssp = dev->ssp; u32 sscr0 = ssp_read_reg(ssp, SSCR0);
u32 sscr0 = ssp_read_reg(dev->ssp, SSCR0) & ~SSCR0_SCR;
if (cpu_is_pxa25x() && ssp->type == PXA25x_SSP) {
sscr0 &= ~0x0000ff00;
sscr0 |= ((div - 2)/2) << 8; /* 2..512 */
} else {
sscr0 &= ~0x000fff00;
sscr0 |= (div - 1) << 8; /* 1..4096 */
}
ssp_write_reg(ssp, SSCR0, sscr0);
}
/**
* ssp_get_clkdiv - get SSP clock divider
*/
static u32 ssp_get_scr(struct ssp_device *ssp)
{
u32 sscr0 = ssp_read_reg(ssp, SSCR0);
u32 div;
ssp_write_reg(ssp, SSCR0, (sscr0 | SSCR0_SerClkDiv(div))); if (cpu_is_pxa25x() && ssp->type == PXA25x_SSP)
div = ((sscr0 >> 8) & 0xff) * 2 + 2;
else
div = ((sscr0 >> 8) & 0xfff) + 1;
return div;
} }
/* /*
...@@ -326,7 +347,7 @@ static int pxa_ssp_set_dai_sysclk(struct snd_soc_dai *cpu_dai, ...@@ -326,7 +347,7 @@ static int pxa_ssp_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
break; break;
case PXA_SSP_CLK_AUDIO: case PXA_SSP_CLK_AUDIO:
priv->sysclk = 0; priv->sysclk = 0;
ssp_set_scr(&priv->dev, 1); ssp_set_scr(ssp, 1);
sscr0 |= SSCR0_ACS; sscr0 |= SSCR0_ACS;
break; break;
default: default:
...@@ -387,7 +408,7 @@ static int pxa_ssp_set_dai_clkdiv(struct snd_soc_dai *cpu_dai, ...@@ -387,7 +408,7 @@ static int pxa_ssp_set_dai_clkdiv(struct snd_soc_dai *cpu_dai,
ssp_write_reg(ssp, SSACD, val); ssp_write_reg(ssp, SSACD, val);
break; break;
case PXA_SSP_DIV_SCR: case PXA_SSP_DIV_SCR:
ssp_set_scr(&priv->dev, div); ssp_set_scr(ssp, div);
break; break;
default: default:
return -ENODEV; return -ENODEV;
...@@ -683,8 +704,7 @@ static int pxa_ssp_hw_params(struct snd_pcm_substream *substream, ...@@ -683,8 +704,7 @@ static int pxa_ssp_hw_params(struct snd_pcm_substream *substream,
case SND_SOC_DAIFMT_I2S: case SND_SOC_DAIFMT_I2S:
sspsp = ssp_read_reg(ssp, SSPSP); sspsp = ssp_read_reg(ssp, SSPSP);
if (((sscr0 & SSCR0_SCR) == SSCR0_SerClkDiv(4)) && if ((ssp_get_scr(ssp) == 4) && (width == 16)) {
(width == 16)) {
/* This is a special case where the bitclk is 64fs /* This is a special case where the bitclk is 64fs
* and we're not dealing with 2*32 bits of audio * and we're not dealing with 2*32 bits of audio
* samples. * samples.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment