Merge branch 'for-2.6.31' into for-2.6.32
This commit is contained in:
@@ -5523,6 +5523,13 @@ M: dsaxena@plexity.net
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/char/hw_random/omap-rng.c
|
F: drivers/char/hw_random/omap-rng.c
|
||||||
|
|
||||||
|
TI TWL4030 SERIES SOC CODEC DRIVER
|
||||||
|
P: Peter Ujfalusi
|
||||||
|
M: peter.ujfalusi@nokia.com
|
||||||
|
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||||
|
S: Maintained
|
||||||
|
F: sound/soc/codecs/twl4030*
|
||||||
|
|
||||||
TIPC NETWORK LAYER
|
TIPC NETWORK LAYER
|
||||||
P: Per Liden
|
P: Per Liden
|
||||||
M: per.liden@ericsson.com
|
M: per.liden@ericsson.com
|
||||||
|
@@ -50,6 +50,7 @@ struct bf5xx_i2s_port {
|
|||||||
u16 tcr2;
|
u16 tcr2;
|
||||||
u16 rcr2;
|
u16 rcr2;
|
||||||
int counter;
|
int counter;
|
||||||
|
int configured;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct bf5xx_i2s_port bf5xx_i2s;
|
static struct bf5xx_i2s_port bf5xx_i2s;
|
||||||
@@ -168,7 +169,7 @@ static int bf5xx_i2s_hw_params(struct snd_pcm_substream *substream,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bf5xx_i2s.counter == 1) {
|
if (!bf5xx_i2s.configured) {
|
||||||
/*
|
/*
|
||||||
* TX and RX are not independent,they are enabled at the
|
* TX and RX are not independent,they are enabled at the
|
||||||
* same time, even if only one side is running. So, we
|
* same time, even if only one side is running. So, we
|
||||||
@@ -177,6 +178,7 @@ static int bf5xx_i2s_hw_params(struct snd_pcm_substream *substream,
|
|||||||
*
|
*
|
||||||
* CPU DAI:slave mode.
|
* CPU DAI:slave mode.
|
||||||
*/
|
*/
|
||||||
|
bf5xx_i2s.configured = 1;
|
||||||
ret = sport_config_rx(sport_handle, bf5xx_i2s.rcr1,
|
ret = sport_config_rx(sport_handle, bf5xx_i2s.rcr1,
|
||||||
bf5xx_i2s.rcr2, 0, 0);
|
bf5xx_i2s.rcr2, 0, 0);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
@@ -200,6 +202,9 @@ static void bf5xx_i2s_shutdown(struct snd_pcm_substream *substream,
|
|||||||
{
|
{
|
||||||
pr_debug("%s enter\n", __func__);
|
pr_debug("%s enter\n", __func__);
|
||||||
bf5xx_i2s.counter--;
|
bf5xx_i2s.counter--;
|
||||||
|
/* No active stream, SPORT is allowed to be configured again. */
|
||||||
|
if (!bf5xx_i2s.counter)
|
||||||
|
bf5xx_i2s.configured = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int bf5xx_i2s_probe(struct platform_device *pdev,
|
static int bf5xx_i2s_probe(struct platform_device *pdev,
|
||||||
@@ -244,8 +249,7 @@ static int bf5xx_i2s_suspend(struct snd_soc_dai *dai)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int bf5xx_i2s_resume(struct platform_device *pdev,
|
static int bf5xx_i2s_resume(struct snd_soc_dai *dai)
|
||||||
struct snd_soc_dai *dai)
|
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
struct sport_device *sport =
|
struct sport_device *sport =
|
||||||
|
@@ -375,10 +375,6 @@ static void ssm2602_shutdown(struct snd_pcm_substream *substream,
|
|||||||
struct snd_soc_codec *codec = socdev->card->codec;
|
struct snd_soc_codec *codec = socdev->card->codec;
|
||||||
struct ssm2602_priv *ssm2602 = codec->private_data;
|
struct ssm2602_priv *ssm2602 = codec->private_data;
|
||||||
|
|
||||||
if (ssm2602->master_substream == substream)
|
|
||||||
ssm2602->master_substream = ssm2602->slave_substream;
|
|
||||||
|
|
||||||
ssm2602->slave_substream = NULL;
|
|
||||||
/* deactivate */
|
/* deactivate */
|
||||||
if (!codec->active)
|
if (!codec->active)
|
||||||
ssm2602_write(codec, SSM2602_ACTIVE, 0);
|
ssm2602_write(codec, SSM2602_ACTIVE, 0);
|
||||||
|
@@ -1255,22 +1255,18 @@ static struct {
|
|||||||
int div;
|
int div;
|
||||||
} bclk_divs[] = {
|
} bclk_divs[] = {
|
||||||
{ 10, 0 },
|
{ 10, 0 },
|
||||||
{ 15, 1 },
|
|
||||||
{ 20, 2 },
|
{ 20, 2 },
|
||||||
{ 30, 3 },
|
{ 30, 3 },
|
||||||
{ 40, 4 },
|
{ 40, 4 },
|
||||||
{ 50, 5 },
|
{ 50, 5 },
|
||||||
{ 55, 6 },
|
|
||||||
{ 60, 7 },
|
{ 60, 7 },
|
||||||
{ 80, 8 },
|
{ 80, 8 },
|
||||||
{ 100, 9 },
|
{ 100, 9 },
|
||||||
{ 110, 10 },
|
|
||||||
{ 120, 11 },
|
{ 120, 11 },
|
||||||
{ 160, 12 },
|
{ 160, 12 },
|
||||||
{ 200, 13 },
|
{ 200, 13 },
|
||||||
{ 220, 14 },
|
{ 220, 14 },
|
||||||
{ 240, 15 },
|
{ 240, 15 },
|
||||||
{ 250, 16 },
|
|
||||||
{ 300, 17 },
|
{ 300, 17 },
|
||||||
{ 320, 18 },
|
{ 320, 18 },
|
||||||
{ 440, 19 },
|
{ 440, 19 },
|
||||||
|
@@ -186,7 +186,7 @@ static int magician_playback_hw_params(struct snd_pcm_substream *substream,
|
|||||||
|
|
||||||
/* set cpu DAI configuration */
|
/* set cpu DAI configuration */
|
||||||
ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_DSP_A |
|
ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_DSP_A |
|
||||||
SND_SOC_DAIFMT_IB_IF | SND_SOC_DAIFMT_CBS_CFS);
|
SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_CBS_CFS);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@@ -345,9 +345,11 @@ static void lm4857_write_regs(void)
|
|||||||
static int lm4857_get_reg(struct snd_kcontrol *kcontrol,
|
static int lm4857_get_reg(struct snd_kcontrol *kcontrol,
|
||||||
struct snd_ctl_elem_value *ucontrol)
|
struct snd_ctl_elem_value *ucontrol)
|
||||||
{
|
{
|
||||||
int reg = kcontrol->private_value & 0xFF;
|
struct soc_mixer_control *mc =
|
||||||
int shift = (kcontrol->private_value >> 8) & 0x0F;
|
(struct soc_mixer_control *)kcontrol->private_value;
|
||||||
int mask = (kcontrol->private_value >> 16) & 0xFF;
|
int reg = mc->reg;
|
||||||
|
int shift = mc->shift;
|
||||||
|
int mask = mc->max;
|
||||||
|
|
||||||
pr_debug("Entered %s\n", __func__);
|
pr_debug("Entered %s\n", __func__);
|
||||||
|
|
||||||
@@ -358,9 +360,11 @@ static int lm4857_get_reg(struct snd_kcontrol *kcontrol,
|
|||||||
static int lm4857_set_reg(struct snd_kcontrol *kcontrol,
|
static int lm4857_set_reg(struct snd_kcontrol *kcontrol,
|
||||||
struct snd_ctl_elem_value *ucontrol)
|
struct snd_ctl_elem_value *ucontrol)
|
||||||
{
|
{
|
||||||
int reg = kcontrol->private_value & 0xFF;
|
struct soc_mixer_control *mc =
|
||||||
int shift = (kcontrol->private_value >> 8) & 0x0F;
|
(struct soc_mixer_control *)kcontrol->private_value;
|
||||||
int mask = (kcontrol->private_value >> 16) & 0xFF;
|
int reg = mc->reg;
|
||||||
|
int shift = mc->shift;
|
||||||
|
int mask = mc->max;
|
||||||
|
|
||||||
if (((lm4857_regs[reg] >> shift) & mask) ==
|
if (((lm4857_regs[reg] >> shift) & mask) ==
|
||||||
ucontrol->value.integer.value[0])
|
ucontrol->value.integer.value[0])
|
||||||
|
@@ -1444,6 +1444,9 @@ int snd_soc_init_card(struct snd_soc_device *socdev)
|
|||||||
snprintf(codec->card->longname, sizeof(codec->card->longname),
|
snprintf(codec->card->longname, sizeof(codec->card->longname),
|
||||||
"%s (%s)", card->name, codec->name);
|
"%s (%s)", card->name, codec->name);
|
||||||
|
|
||||||
|
/* Make sure all DAPM widgets are instantiated */
|
||||||
|
snd_soc_dapm_new_widgets(codec);
|
||||||
|
|
||||||
ret = snd_card_register(codec->card);
|
ret = snd_card_register(codec->card);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
printk(KERN_ERR "asoc: failed to register soundcard for %s\n",
|
printk(KERN_ERR "asoc: failed to register soundcard for %s\n",
|
||||||
|
@@ -297,9 +297,9 @@ static int txx9aclc_pcm_new(struct snd_card *card, struct snd_soc_dai *dai,
|
|||||||
static bool filter(struct dma_chan *chan, void *param)
|
static bool filter(struct dma_chan *chan, void *param)
|
||||||
{
|
{
|
||||||
struct txx9aclc_dmadata *dmadata = param;
|
struct txx9aclc_dmadata *dmadata = param;
|
||||||
char devname[BUS_ID_SIZE + 2];
|
char devname[20 + 2]; /* FIXME: old BUS_ID_SIZE + 2 */
|
||||||
|
|
||||||
sprintf(devname, "%s.%d", dmadata->dma_res->name,
|
snprintf(devname, sizeof(devname), "%s.%d", dmadata->dma_res->name,
|
||||||
(int)dmadata->dma_res->start);
|
(int)dmadata->dma_res->start);
|
||||||
if (strcmp(dev_name(chan->device->dev), devname) == 0) {
|
if (strcmp(dev_name(chan->device->dev), devname) == 0) {
|
||||||
chan->private = &dmadata->dma_slave;
|
chan->private = &dmadata->dma_slave;
|
||||||
|
Reference in New Issue
Block a user