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.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
"Just a handful of regression and small fixes in ASoC, HD-audio and
USB-audio drivers.

- Sigmetal HD-audio codec regression fixes
- A copule of XRUN indication fixes for usb-audio devices
- ASoC: ep93xx build fix, sgtl5000 fix for probe order changes,
max98088 register access fix, etc"

* tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: hiface: return correct XRUN indication
ASoC: tegra: correct playback_dma_data setup
ASoC: core: double free in snd_soc_add_platform()
ALSA: usb-audio: 6fire: return correct XRUN indication
ASoC: ep93xx: fix build of ep93xx-ac97.c
ALSA: hda - Remove NO_PRESENCE bit override for Dell 1420n Laptop
ALSA: hda - Fix EAPD GPIO control for Sigmatel codecs
ASoC: atmel-ssc: remove clk_disable_unprepare call from critical section
ASoC: sgtl5000: defer the probe if clock is not found
ASoC: max98088 - fix element type of the register cache.

+29 -22
+8 -3
drivers/misc/atmel-ssc.c
··· 66 66 67 67 void ssc_free(struct ssc_device *ssc) 68 68 { 69 + bool disable_clk = true; 70 + 69 71 spin_lock(&user_lock); 70 - if (ssc->user) { 72 + if (ssc->user) 71 73 ssc->user--; 72 - clk_disable_unprepare(ssc->clk); 73 - } else { 74 + else { 75 + disable_clk = false; 74 76 dev_dbg(&ssc->pdev->dev, "device already free\n"); 75 77 } 76 78 spin_unlock(&user_lock); 79 + 80 + if (disable_clk) 81 + clk_disable_unprepare(ssc->clk); 77 82 } 78 83 EXPORT_SYMBOL(ssc_free); 79 84
+7 -6
sound/pci/hda/patch_sigmatel.c
··· 417 417 val &= ~spec->eapd_mask; 418 418 else 419 419 val |= spec->eapd_mask; 420 - if (spec->gpio_data != val) 420 + if (spec->gpio_data != val) { 421 + spec->gpio_data = val; 421 422 stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, 422 423 val); 424 + } 423 425 } 424 426 } 425 427 ··· 3233 3231 /* configure the analog microphone on some laptops */ 3234 3232 { 0x0c, 0x90a79130 }, 3235 3233 /* correct the front output jack as a hp out */ 3236 - { 0x0f, 0x0227011f }, 3234 + { 0x0f, 0x0221101f }, 3237 3235 /* correct the front input jack as a mic */ 3238 3236 { 0x0e, 0x02a79130 }, 3239 3237 {} ··· 3614 3612 static int stac_init(struct hda_codec *codec) 3615 3613 { 3616 3614 struct sigmatel_spec *spec = codec->spec; 3617 - unsigned int gpio; 3618 3615 int i; 3619 3616 3620 3617 /* override some hints */ 3621 3618 stac_store_hints(codec); 3622 3619 3623 3620 /* set up GPIO */ 3624 - gpio = spec->gpio_data; 3625 3621 /* turn on EAPD statically when spec->eapd_switch isn't set. 3626 3622 * otherwise, unsol event will turn it on/off dynamically 3627 3623 */ 3628 3624 if (!spec->eapd_switch) 3629 - gpio |= spec->eapd_mask; 3630 - stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, gpio); 3625 + spec->gpio_data |= spec->eapd_mask; 3626 + stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, spec->gpio_data); 3631 3627 3632 3628 snd_hda_gen_init(codec); 3633 3629 ··· 3915 3915 { 3916 3916 struct sigmatel_spec *spec = codec->spec; 3917 3917 3918 + spec->gpio_mask |= spec->eapd_mask; 3918 3919 if (spec->gpio_led) { 3919 3920 if (!spec->vref_mute_led_nid) { 3920 3921 spec->gpio_mask |= spec->gpio_led;
+2 -2
sound/soc/cirrus/ep93xx-ac97.c
··· 102 102 103 103 static struct ep93xx_dma_data ep93xx_ac97_pcm_out = { 104 104 .name = "ac97-pcm-out", 105 - .dma_port = EP93XX_DMA_AAC1, 105 + .port = EP93XX_DMA_AAC1, 106 106 .direction = DMA_MEM_TO_DEV, 107 107 }; 108 108 109 109 static struct ep93xx_dma_data ep93xx_ac97_pcm_in = { 110 110 .name = "ac97-pcm-in", 111 - .dma_port = EP93XX_DMA_AAC1, 111 + .port = EP93XX_DMA_AAC1, 112 112 .direction = DMA_DEV_TO_MEM, 113 113 }; 114 114
+1 -1
sound/soc/codecs/max98088.c
··· 1612 1612 1613 1613 static void max98088_sync_cache(struct snd_soc_codec *codec) 1614 1614 { 1615 - u16 *reg_cache = codec->reg_cache; 1615 + u8 *reg_cache = codec->reg_cache; 1616 1616 int i; 1617 1617 1618 1618 if (!codec->cache_sync)
+3
sound/soc/codecs/sgtl5000.c
··· 1527 1527 if (IS_ERR(sgtl5000->mclk)) { 1528 1528 ret = PTR_ERR(sgtl5000->mclk); 1529 1529 dev_err(&client->dev, "Failed to get mclock: %d\n", ret); 1530 + /* Defer the probe to see if the clk will be provided later */ 1531 + if (ret == -ENOENT) 1532 + return -EPROBE_DEFER; 1530 1533 return ret; 1531 1534 } 1532 1535
+1 -3
sound/soc/soc-core.c
··· 3908 3908 { 3909 3909 /* create platform component name */ 3910 3910 platform->name = fmt_single_name(dev, &platform->id); 3911 - if (platform->name == NULL) { 3912 - kfree(platform); 3911 + if (platform->name == NULL) 3913 3912 return -ENOMEM; 3914 - } 3915 3913 3916 3914 platform->dev = dev; 3917 3915 platform->driver = platform_drv;
+3 -3
sound/soc/tegra/tegra20_ac97.c
··· 389 389 ac97->capture_dma_data.slave_id = of_dma[1]; 390 390 391 391 ac97->playback_dma_data.addr = mem->start + TEGRA20_AC97_FIFO_TX1; 392 - ac97->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; 393 - ac97->capture_dma_data.maxburst = 4; 394 - ac97->capture_dma_data.slave_id = of_dma[0]; 392 + ac97->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; 393 + ac97->playback_dma_data.maxburst = 4; 394 + ac97->playback_dma_data.slave_id = of_dma[1]; 395 395 396 396 ret = tegra_asoc_utils_init(&ac97->util_data, &pdev->dev); 397 397 if (ret)
+2 -2
sound/soc/tegra/tegra20_spdif.c
··· 323 323 } 324 324 325 325 spdif->playback_dma_data.addr = mem->start + TEGRA20_SPDIF_DATA_OUT; 326 - spdif->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; 327 - spdif->capture_dma_data.maxburst = 4; 326 + spdif->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; 327 + spdif->playback_dma_data.maxburst = 4; 328 328 spdif->playback_dma_data.slave_id = dmareq->start; 329 329 330 330 pm_runtime_enable(&pdev->dev);
+1 -1
sound/usb/6fire/pcm.c
··· 543 543 snd_pcm_uframes_t ret; 544 544 545 545 if (rt->panic || !sub) 546 - return SNDRV_PCM_STATE_XRUN; 546 + return SNDRV_PCM_POS_XRUN; 547 547 548 548 spin_lock_irqsave(&sub->lock, flags); 549 549 ret = sub->dma_off;
+1 -1
sound/usb/hiface/pcm.c
··· 503 503 snd_pcm_uframes_t dma_offset; 504 504 505 505 if (rt->panic || !sub) 506 - return SNDRV_PCM_STATE_XRUN; 506 + return SNDRV_PCM_POS_XRUN; 507 507 508 508 spin_lock_irqsave(&sub->lock, flags); 509 509 dma_offset = sub->dma_off;