Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'sound-3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
"This contains a few small ASoC fixes (wm8903, wm5102, samsung-i2s,
tegra, and soc-compress) and an endian fix for NI USB-audio devices,
update for Mark's e-mail address.

No scary changes, AFAIS."

* tag 'sound-3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
MAINTAINERS: Update e-mail address
ASoC: wm5102: Correct lookup of arizona struct in SYSCLK event
ASoC: wm8903: Fix the bypass to HP/LINEOUT when no DAC or ADC is running
ALSA: usb-audio: fix endianness bug in snd_nativeinstruments_*
ASoC: tegra: Don't claim to support PCM pause and resume
ASoC: Samsung: set drvdata before adding secondary device
ASoC: Samsung: return error if drvdata is not set
ASoC: compress: Cancel delayed power down if needed
ASoC: core: Fix to check return value of snd_soc_update_bits_locked()

+35 -40
+4 -4
MAINTAINERS
··· 6631 6631 F: fs/reiserfs/ 6632 6632 6633 6633 REGISTER MAP ABSTRACTION 6634 - M: Mark Brown <broonie@opensource.wolfsonmicro.com> 6634 + M: Mark Brown <broonie@kernel.org> 6635 6635 T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git 6636 6636 S: Supported 6637 6637 F: drivers/base/regmap/ ··· 7379 7379 7380 7380 SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC) 7381 7381 M: Liam Girdwood <lgirdwood@gmail.com> 7382 - M: Mark Brown <broonie@opensource.wolfsonmicro.com> 7382 + M: Mark Brown <broonie@kernel.org> 7383 7383 T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git 7384 7384 L: alsa-devel@alsa-project.org (moderated for non-subscribers) 7385 7385 W: http://alsa-project.org/main/index.php/ASoC ··· 7468 7468 7469 7469 SPI SUBSYSTEM 7470 7470 M: Grant Likely <grant.likely@secretlab.ca> 7471 - M: Mark Brown <broonie@opensource.wolfsonmicro.com> 7471 + M: Mark Brown <broonie@kernel.org> 7472 7472 L: spi-devel-general@lists.sourceforge.net 7473 7473 Q: http://patchwork.kernel.org/project/spi-devel-general/list/ 7474 7474 T: git git://git.secretlab.ca/git/linux-2.6.git ··· 8713 8713 8714 8714 VOLTAGE AND CURRENT REGULATOR FRAMEWORK 8715 8715 M: Liam Girdwood <lrg@ti.com> 8716 - M: Mark Brown <broonie@opensource.wolfsonmicro.com> 8716 + M: Mark Brown <broonie@kernel.org> 8717 8717 W: http://opensource.wolfsonmicro.com/node/15 8718 8718 W: http://www.slimlogic.co.uk/?p=48 8719 8719 T: git git://git.kernel.org/pub/scm/linux/kernel/git/lrg/regulator.git
+1 -1
sound/soc/codecs/wm5102.c
··· 584 584 struct snd_kcontrol *kcontrol, int event) 585 585 { 586 586 struct snd_soc_codec *codec = w->codec; 587 - struct arizona *arizona = dev_get_drvdata(codec->dev); 587 + struct arizona *arizona = dev_get_drvdata(codec->dev->parent); 588 588 struct regmap *regmap = codec->control_data; 589 589 const struct reg_default *patch = NULL; 590 590 int i, patch_size;
+2
sound/soc/codecs/wm8903.c
··· 1083 1083 { "ROP", NULL, "Right Speaker PGA" }, 1084 1084 { "RON", NULL, "Right Speaker PGA" }, 1085 1085 1086 + { "Charge Pump", NULL, "CLK_DSP" }, 1087 + 1086 1088 { "Left Headphone Output PGA", NULL, "Charge Pump" }, 1087 1089 { "Right Headphone Output PGA", NULL, "Charge Pump" }, 1088 1090 { "Left Line Output PGA", NULL, "Charge Pump" },
+12 -5
sound/soc/samsung/i2s.c
··· 972 972 static struct i2s_dai *i2s_alloc_dai(struct platform_device *pdev, bool sec) 973 973 { 974 974 struct i2s_dai *i2s; 975 + int ret; 975 976 976 977 i2s = devm_kzalloc(&pdev->dev, sizeof(struct i2s_dai), GFP_KERNEL); 977 978 if (i2s == NULL) ··· 997 996 i2s->i2s_dai_drv.capture.channels_max = 2; 998 997 i2s->i2s_dai_drv.capture.rates = SAMSUNG_I2S_RATES; 999 998 i2s->i2s_dai_drv.capture.formats = SAMSUNG_I2S_FMTS; 999 + dev_set_drvdata(&i2s->pdev->dev, i2s); 1000 1000 } else { /* Create a new platform_device for Secondary */ 1001 - i2s->pdev = platform_device_register_resndata(NULL, 1002 - "samsung-i2s-sec", -1, NULL, 0, NULL, 0); 1001 + i2s->pdev = platform_device_alloc("samsung-i2s-sec", -1); 1003 1002 if (IS_ERR(i2s->pdev)) 1004 1003 return NULL; 1005 - } 1006 1004 1007 - /* Pre-assign snd_soc_dai_set_drvdata */ 1008 - dev_set_drvdata(&i2s->pdev->dev, i2s); 1005 + platform_set_drvdata(i2s->pdev, i2s); 1006 + ret = platform_device_add(i2s->pdev); 1007 + if (ret < 0) 1008 + return NULL; 1009 + } 1009 1010 1010 1011 return i2s; 1011 1012 } ··· 1110 1107 1111 1108 if (samsung_dai_type == TYPE_SEC) { 1112 1109 sec_dai = dev_get_drvdata(&pdev->dev); 1110 + if (!sec_dai) { 1111 + dev_err(&pdev->dev, "Unable to get drvdata\n"); 1112 + return -EFAULT; 1113 + } 1113 1114 snd_soc_register_dai(&sec_dai->pdev->dev, 1114 1115 &sec_dai->i2s_dai_drv); 1115 1116 asoc_dma_platform_register(&pdev->dev);
+11 -3
sound/soc/soc-compress.c
··· 211 211 if (platform->driver->compr_ops && platform->driver->compr_ops->set_params) { 212 212 ret = platform->driver->compr_ops->set_params(cstream, params); 213 213 if (ret < 0) 214 - goto out; 214 + goto err; 215 215 } 216 216 217 217 if (rtd->dai_link->compr_ops && rtd->dai_link->compr_ops->set_params) { 218 218 ret = rtd->dai_link->compr_ops->set_params(cstream); 219 219 if (ret < 0) 220 - goto out; 220 + goto err; 221 221 } 222 222 223 223 snd_soc_dapm_stream_event(rtd, SNDRV_PCM_STREAM_PLAYBACK, 224 224 SND_SOC_DAPM_STREAM_START); 225 225 226 - out: 226 + /* cancel any delayed stream shutdown that is pending */ 227 + rtd->pop_wait = 0; 228 + mutex_unlock(&rtd->pcm_mutex); 229 + 230 + cancel_delayed_work_sync(&rtd->delayed_work); 231 + 232 + return ret; 233 + 234 + err: 227 235 mutex_unlock(&rtd->pcm_mutex); 228 236 return ret; 229 237 }
+1 -1
sound/soc/soc-core.c
··· 2963 2963 val = val << shift; 2964 2964 2965 2965 ret = snd_soc_update_bits_locked(codec, reg, val_mask, val); 2966 - if (ret != 0) 2966 + if (ret < 0) 2967 2967 return ret; 2968 2968 2969 2969 if (snd_soc_volsw_is_stereo(mc)) {
+1 -23
sound/soc/tegra/tegra_pcm.c
··· 43 43 static const struct snd_pcm_hardware tegra_pcm_hardware = { 44 44 .info = SNDRV_PCM_INFO_MMAP | 45 45 SNDRV_PCM_INFO_MMAP_VALID | 46 - SNDRV_PCM_INFO_PAUSE | 47 - SNDRV_PCM_INFO_RESUME | 48 46 SNDRV_PCM_INFO_INTERLEAVED, 49 47 .formats = SNDRV_PCM_FMTBIT_S16_LE, 50 48 .channels_min = 2, ··· 125 127 return 0; 126 128 } 127 129 128 - static int tegra_pcm_trigger(struct snd_pcm_substream *substream, int cmd) 129 - { 130 - switch (cmd) { 131 - case SNDRV_PCM_TRIGGER_START: 132 - case SNDRV_PCM_TRIGGER_RESUME: 133 - case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: 134 - return snd_dmaengine_pcm_trigger(substream, 135 - SNDRV_PCM_TRIGGER_START); 136 - 137 - case SNDRV_PCM_TRIGGER_STOP: 138 - case SNDRV_PCM_TRIGGER_SUSPEND: 139 - case SNDRV_PCM_TRIGGER_PAUSE_PUSH: 140 - return snd_dmaengine_pcm_trigger(substream, 141 - SNDRV_PCM_TRIGGER_STOP); 142 - default: 143 - return -EINVAL; 144 - } 145 - return 0; 146 - } 147 - 148 130 static int tegra_pcm_mmap(struct snd_pcm_substream *substream, 149 131 struct vm_area_struct *vma) 150 132 { ··· 142 164 .ioctl = snd_pcm_lib_ioctl, 143 165 .hw_params = tegra_pcm_hw_params, 144 166 .hw_free = tegra_pcm_hw_free, 145 - .trigger = tegra_pcm_trigger, 167 + .trigger = snd_dmaengine_pcm_trigger, 146 168 .pointer = snd_dmaengine_pcm_pointer, 147 169 .mmap = tegra_pcm_mmap, 148 170 };
+2 -2
sound/usb/mixer_quirks.c
··· 509 509 else 510 510 ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), bRequest, 511 511 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN, 512 - 0, cpu_to_le16(wIndex), 512 + 0, wIndex, 513 513 &tmp, sizeof(tmp), 1000); 514 514 up_read(&mixer->chip->shutdown_rwsem); 515 515 ··· 540 540 else 541 541 ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), bRequest, 542 542 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT, 543 - cpu_to_le16(wValue), cpu_to_le16(wIndex), 543 + wValue, wIndex, 544 544 NULL, 0, 1000); 545 545 up_read(&mixer->chip->shutdown_rwsem); 546 546
+1 -1
sound/usb/quirks.c
··· 486 486 { 487 487 int ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), 488 488 0xaf, USB_TYPE_VENDOR | USB_RECIP_DEVICE, 489 - cpu_to_le16(1), 0, NULL, 0, 1000); 489 + 1, 0, NULL, 0, 1000); 490 490 491 491 if (ret < 0) 492 492 return ret;