diff options
| -rw-r--r-- | sound/soc/codecs/ak4104.c | 6 | ||||
| -rw-r--r-- | sound/soc/soc-core.c | 14 |
2 files changed, 11 insertions, 9 deletions
diff --git a/sound/soc/codecs/ak4104.c b/sound/soc/codecs/ak4104.c index b9ef7e45891d..b68d99fb6af0 100644 --- a/sound/soc/codecs/ak4104.c +++ b/sound/soc/codecs/ak4104.c | |||
| @@ -90,12 +90,10 @@ static int ak4104_spi_write(struct snd_soc_codec *codec, unsigned int reg, | |||
| 90 | if (reg >= codec->reg_cache_size) | 90 | if (reg >= codec->reg_cache_size) |
| 91 | return -EINVAL; | 91 | return -EINVAL; |
| 92 | 92 | ||
| 93 | reg &= AK4104_REG_MASK; | ||
| 94 | reg |= AK4104_WRITE; | ||
| 95 | |||
| 96 | /* only write to the hardware if value has changed */ | 93 | /* only write to the hardware if value has changed */ |
| 97 | if (cache[reg] != value) { | 94 | if (cache[reg] != value) { |
| 98 | u8 tmp[2] = { reg, value }; | 95 | u8 tmp[2] = { (reg & AK4104_REG_MASK) | AK4104_WRITE, value }; |
| 96 | |||
| 99 | if (spi_write(spi, tmp, sizeof(tmp))) { | 97 | if (spi_write(spi, tmp, sizeof(tmp))) { |
| 100 | dev_err(&spi->dev, "SPI write failed\n"); | 98 | dev_err(&spi->dev, "SPI write failed\n"); |
| 101 | return -EIO; | 99 | return -EIO; |
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index a03bac943aaf..c8b0556ef431 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c | |||
| @@ -427,24 +427,24 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) | |||
| 427 | if (!runtime->hw.rates) { | 427 | if (!runtime->hw.rates) { |
| 428 | printk(KERN_ERR "asoc: %s <-> %s No matching rates\n", | 428 | printk(KERN_ERR "asoc: %s <-> %s No matching rates\n", |
| 429 | codec_dai->name, cpu_dai->name); | 429 | codec_dai->name, cpu_dai->name); |
| 430 | goto machine_err; | 430 | goto config_err; |
| 431 | } | 431 | } |
| 432 | if (!runtime->hw.formats) { | 432 | if (!runtime->hw.formats) { |
| 433 | printk(KERN_ERR "asoc: %s <-> %s No matching formats\n", | 433 | printk(KERN_ERR "asoc: %s <-> %s No matching formats\n", |
| 434 | codec_dai->name, cpu_dai->name); | 434 | codec_dai->name, cpu_dai->name); |
| 435 | goto machine_err; | 435 | goto config_err; |
| 436 | } | 436 | } |
| 437 | if (!runtime->hw.channels_min || !runtime->hw.channels_max) { | 437 | if (!runtime->hw.channels_min || !runtime->hw.channels_max) { |
| 438 | printk(KERN_ERR "asoc: %s <-> %s No matching channels\n", | 438 | printk(KERN_ERR "asoc: %s <-> %s No matching channels\n", |
| 439 | codec_dai->name, cpu_dai->name); | 439 | codec_dai->name, cpu_dai->name); |
| 440 | goto machine_err; | 440 | goto config_err; |
| 441 | } | 441 | } |
| 442 | 442 | ||
| 443 | /* Symmetry only applies if we've already got an active stream. */ | 443 | /* Symmetry only applies if we've already got an active stream. */ |
| 444 | if (cpu_dai->active || codec_dai->active) { | 444 | if (cpu_dai->active || codec_dai->active) { |
| 445 | ret = soc_pcm_apply_symmetry(substream); | 445 | ret = soc_pcm_apply_symmetry(substream); |
| 446 | if (ret != 0) | 446 | if (ret != 0) |
| 447 | goto machine_err; | 447 | goto config_err; |
| 448 | } | 448 | } |
| 449 | 449 | ||
| 450 | pr_debug("asoc: %s <-> %s info:\n", codec_dai->name, cpu_dai->name); | 450 | pr_debug("asoc: %s <-> %s info:\n", codec_dai->name, cpu_dai->name); |
| @@ -464,10 +464,14 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) | |||
| 464 | mutex_unlock(&pcm_mutex); | 464 | mutex_unlock(&pcm_mutex); |
| 465 | return 0; | 465 | return 0; |
| 466 | 466 | ||
| 467 | machine_err: | 467 | config_err: |
| 468 | if (machine->ops && machine->ops->shutdown) | 468 | if (machine->ops && machine->ops->shutdown) |
| 469 | machine->ops->shutdown(substream); | 469 | machine->ops->shutdown(substream); |
| 470 | 470 | ||
| 471 | machine_err: | ||
| 472 | if (codec_dai->ops->shutdown) | ||
| 473 | codec_dai->ops->shutdown(substream, codec_dai); | ||
| 474 | |||
| 471 | codec_dai_err: | 475 | codec_dai_err: |
| 472 | if (platform->pcm_ops->close) | 476 | if (platform->pcm_ops->close) |
| 473 | platform->pcm_ops->close(substream); | 477 | platform->pcm_ops->close(substream); |
