diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-02-28 20:47:09 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-02-28 20:47:09 -0500 |
| commit | c4319c7db8c3805e4811eaceeee6c2fa51411bd4 (patch) | |
| tree | d47c9a0e422695fba3120af9fa3310e811bba723 | |
| parent | fbd71844852c9458bf73c7cbdae7189c2d4b377c (diff) | |
| parent | 11be6a269d2ad3e94c0597f21786092b8340a822 (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
eukrea-tlv320: fix platform_name
ASoC: correct pxa AC97 DAI names
ALSA: hda - Add support for new IDT 92HD98 and 92HD99 codecs
ALSA: HDA: Add ideapad quirk for two Dell machines
ALSA: HDA: Add a new Conexant codec 506e (20590)
ALSA: usb-audio: fix oops due to cleanup race when disconnecting
ASoC: Hook wm_hubs micbiases up to CLK_SYS
ASoC: Correct definition of WM8903_VMID_RES_5K
ASoC: Fix WM8958 default microphone detection argument ordering
ALSA: HDA: Fix mic initialization in VIA auto parser
ALSA: fix one memory leak in sound jack
| -rw-r--r-- | sound/core/jack.c | 1 | ||||
| -rw-r--r-- | sound/pci/hda/patch_conexant.c | 5 | ||||
| -rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 15 | ||||
| -rw-r--r-- | sound/pci/hda/patch_via.c | 2 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8903.h | 2 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8994.c | 5 | ||||
| -rw-r--r-- | sound/soc/codecs/wm_hubs.c | 3 | ||||
| -rw-r--r-- | sound/soc/imx/eukrea-tlv320.c | 2 | ||||
| -rw-r--r-- | sound/soc/pxa/e740_wm9705.c | 4 | ||||
| -rw-r--r-- | sound/soc/pxa/e750_wm9705.c | 4 | ||||
| -rw-r--r-- | sound/soc/pxa/e800_wm9712.c | 4 | ||||
| -rw-r--r-- | sound/soc/pxa/em-x270.c | 4 | ||||
| -rw-r--r-- | sound/soc/pxa/mioa701_wm9713.c | 4 | ||||
| -rw-r--r-- | sound/soc/pxa/palm27x.c | 4 | ||||
| -rw-r--r-- | sound/soc/pxa/tosa.c | 4 | ||||
| -rw-r--r-- | sound/soc/pxa/zylonite.c | 4 | ||||
| -rw-r--r-- | sound/usb/card.c | 4 | ||||
| -rw-r--r-- | sound/usb/pcm.c | 7 | ||||
| -rw-r--r-- | sound/usb/usbaudio.h | 1 |
19 files changed, 52 insertions, 27 deletions
diff --git a/sound/core/jack.c b/sound/core/jack.c index 4902ae568730..53b53e97c896 100644 --- a/sound/core/jack.c +++ b/sound/core/jack.c | |||
| @@ -141,6 +141,7 @@ int snd_jack_new(struct snd_card *card, const char *id, int type, | |||
| 141 | 141 | ||
| 142 | fail_input: | 142 | fail_input: |
| 143 | input_free_device(jack->input_dev); | 143 | input_free_device(jack->input_dev); |
| 144 | kfree(jack->id); | ||
| 144 | kfree(jack); | 145 | kfree(jack); |
| 145 | return err; | 146 | return err; |
| 146 | } | 147 | } |
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index dd7c5c12225d..4d5004e693f0 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c | |||
| @@ -3114,6 +3114,8 @@ static struct snd_pci_quirk cxt5066_cfg_tbl[] = { | |||
| 3114 | SND_PCI_QUIRK(0x1028, 0x0401, "Dell Vostro 1014", CXT5066_DELL_VOSTRO), | 3114 | SND_PCI_QUIRK(0x1028, 0x0401, "Dell Vostro 1014", CXT5066_DELL_VOSTRO), |
| 3115 | SND_PCI_QUIRK(0x1028, 0x0402, "Dell Vostro", CXT5066_DELL_VOSTRO), | 3115 | SND_PCI_QUIRK(0x1028, 0x0402, "Dell Vostro", CXT5066_DELL_VOSTRO), |
| 3116 | SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD), | 3116 | SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD), |
| 3117 | SND_PCI_QUIRK(0x1028, 0x050f, "Dell Inspiron", CXT5066_IDEAPAD), | ||
| 3118 | SND_PCI_QUIRK(0x1028, 0x0510, "Dell Vostro", CXT5066_IDEAPAD), | ||
| 3117 | SND_PCI_QUIRK(0x103c, 0x360b, "HP G60", CXT5066_HP_LAPTOP), | 3119 | SND_PCI_QUIRK(0x103c, 0x360b, "HP G60", CXT5066_HP_LAPTOP), |
| 3118 | SND_PCI_QUIRK(0x1043, 0x13f3, "Asus A52J", CXT5066_ASUS), | 3120 | SND_PCI_QUIRK(0x1043, 0x13f3, "Asus A52J", CXT5066_ASUS), |
| 3119 | SND_PCI_QUIRK(0x1043, 0x1643, "Asus K52JU", CXT5066_ASUS), | 3121 | SND_PCI_QUIRK(0x1043, 0x1643, "Asus K52JU", CXT5066_ASUS), |
| @@ -3937,6 +3939,8 @@ static struct hda_codec_preset snd_hda_preset_conexant[] = { | |||
| 3937 | .patch = patch_cxt5066 }, | 3939 | .patch = patch_cxt5066 }, |
| 3938 | { .id = 0x14f15069, .name = "CX20585", | 3940 | { .id = 0x14f15069, .name = "CX20585", |
| 3939 | .patch = patch_cxt5066 }, | 3941 | .patch = patch_cxt5066 }, |
| 3942 | { .id = 0x14f1506e, .name = "CX20590", | ||
| 3943 | .patch = patch_cxt5066 }, | ||
| 3940 | { .id = 0x14f15097, .name = "CX20631", | 3944 | { .id = 0x14f15097, .name = "CX20631", |
| 3941 | .patch = patch_conexant_auto }, | 3945 | .patch = patch_conexant_auto }, |
| 3942 | { .id = 0x14f15098, .name = "CX20632", | 3946 | { .id = 0x14f15098, .name = "CX20632", |
| @@ -3963,6 +3967,7 @@ MODULE_ALIAS("snd-hda-codec-id:14f15066"); | |||
| 3963 | MODULE_ALIAS("snd-hda-codec-id:14f15067"); | 3967 | MODULE_ALIAS("snd-hda-codec-id:14f15067"); |
| 3964 | MODULE_ALIAS("snd-hda-codec-id:14f15068"); | 3968 | MODULE_ALIAS("snd-hda-codec-id:14f15068"); |
| 3965 | MODULE_ALIAS("snd-hda-codec-id:14f15069"); | 3969 | MODULE_ALIAS("snd-hda-codec-id:14f15069"); |
| 3970 | MODULE_ALIAS("snd-hda-codec-id:14f1506e"); | ||
| 3966 | MODULE_ALIAS("snd-hda-codec-id:14f15097"); | 3971 | MODULE_ALIAS("snd-hda-codec-id:14f15097"); |
| 3967 | MODULE_ALIAS("snd-hda-codec-id:14f15098"); | 3972 | MODULE_ALIAS("snd-hda-codec-id:14f15098"); |
| 3968 | MODULE_ALIAS("snd-hda-codec-id:14f150a1"); | 3973 | MODULE_ALIAS("snd-hda-codec-id:14f150a1"); |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 9ea48b425d0b..bd7b123f6440 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
| @@ -586,7 +586,12 @@ static hda_nid_t stac92hd83xxx_pin_nids[10] = { | |||
| 586 | 0x0f, 0x10, 0x11, 0x1f, 0x20, | 586 | 0x0f, 0x10, 0x11, 0x1f, 0x20, |
| 587 | }; | 587 | }; |
| 588 | 588 | ||
| 589 | static hda_nid_t stac92hd88xxx_pin_nids[10] = { | 589 | static hda_nid_t stac92hd87xxx_pin_nids[6] = { |
| 590 | 0x0a, 0x0b, 0x0c, 0x0d, | ||
| 591 | 0x0f, 0x11, | ||
| 592 | }; | ||
| 593 | |||
| 594 | static hda_nid_t stac92hd88xxx_pin_nids[8] = { | ||
| 590 | 0x0a, 0x0b, 0x0c, 0x0d, | 595 | 0x0a, 0x0b, 0x0c, 0x0d, |
| 591 | 0x0f, 0x11, 0x1f, 0x20, | 596 | 0x0f, 0x11, 0x1f, 0x20, |
| 592 | }; | 597 | }; |
| @@ -5430,12 +5435,13 @@ again: | |||
| 5430 | switch (codec->vendor_id) { | 5435 | switch (codec->vendor_id) { |
| 5431 | case 0x111d76d1: | 5436 | case 0x111d76d1: |
| 5432 | case 0x111d76d9: | 5437 | case 0x111d76d9: |
| 5438 | case 0x111d76e5: | ||
| 5433 | spec->dmic_nids = stac92hd87b_dmic_nids; | 5439 | spec->dmic_nids = stac92hd87b_dmic_nids; |
| 5434 | spec->num_dmics = stac92xx_connected_ports(codec, | 5440 | spec->num_dmics = stac92xx_connected_ports(codec, |
| 5435 | stac92hd87b_dmic_nids, | 5441 | stac92hd87b_dmic_nids, |
| 5436 | STAC92HD87B_NUM_DMICS); | 5442 | STAC92HD87B_NUM_DMICS); |
| 5437 | spec->num_pins = ARRAY_SIZE(stac92hd88xxx_pin_nids); | 5443 | spec->num_pins = ARRAY_SIZE(stac92hd87xxx_pin_nids); |
| 5438 | spec->pin_nids = stac92hd88xxx_pin_nids; | 5444 | spec->pin_nids = stac92hd87xxx_pin_nids; |
| 5439 | spec->mono_nid = 0; | 5445 | spec->mono_nid = 0; |
| 5440 | spec->num_pwrs = 0; | 5446 | spec->num_pwrs = 0; |
| 5441 | break; | 5447 | break; |
| @@ -5443,6 +5449,7 @@ again: | |||
| 5443 | case 0x111d7667: | 5449 | case 0x111d7667: |
| 5444 | case 0x111d7668: | 5450 | case 0x111d7668: |
| 5445 | case 0x111d7669: | 5451 | case 0x111d7669: |
| 5452 | case 0x111d76e3: | ||
| 5446 | spec->num_dmics = stac92xx_connected_ports(codec, | 5453 | spec->num_dmics = stac92xx_connected_ports(codec, |
| 5447 | stac92hd88xxx_dmic_nids, | 5454 | stac92hd88xxx_dmic_nids, |
| 5448 | STAC92HD88XXX_NUM_DMICS); | 5455 | STAC92HD88XXX_NUM_DMICS); |
| @@ -6387,6 +6394,8 @@ static struct hda_codec_preset snd_hda_preset_sigmatel[] = { | |||
| 6387 | { .id = 0x111d76cd, .name = "92HD89F2", .patch = patch_stac92hd73xx }, | 6394 | { .id = 0x111d76cd, .name = "92HD89F2", .patch = patch_stac92hd73xx }, |
| 6388 | { .id = 0x111d76ce, .name = "92HD89F1", .patch = patch_stac92hd73xx }, | 6395 | { .id = 0x111d76ce, .name = "92HD89F1", .patch = patch_stac92hd73xx }, |
| 6389 | { .id = 0x111d76e0, .name = "92HD91BXX", .patch = patch_stac92hd83xxx}, | 6396 | { .id = 0x111d76e0, .name = "92HD91BXX", .patch = patch_stac92hd83xxx}, |
| 6397 | { .id = 0x111d76e3, .name = "92HD98BXX", .patch = patch_stac92hd83xxx}, | ||
| 6398 | { .id = 0x111d76e5, .name = "92HD99BXX", .patch = patch_stac92hd83xxx}, | ||
| 6390 | { .id = 0x111d76e7, .name = "92HD90BXX", .patch = patch_stac92hd83xxx}, | 6399 | { .id = 0x111d76e7, .name = "92HD90BXX", .patch = patch_stac92hd83xxx}, |
| 6391 | {} /* terminator */ | 6400 | {} /* terminator */ |
| 6392 | }; | 6401 | }; |
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c index a76c3260d941..63b0054200a8 100644 --- a/sound/pci/hda/patch_via.c +++ b/sound/pci/hda/patch_via.c | |||
| @@ -567,7 +567,7 @@ static void via_auto_init_analog_input(struct hda_codec *codec) | |||
| 567 | hda_nid_t nid = cfg->inputs[i].pin; | 567 | hda_nid_t nid = cfg->inputs[i].pin; |
| 568 | if (spec->smart51_enabled && is_smart51_pins(spec, nid)) | 568 | if (spec->smart51_enabled && is_smart51_pins(spec, nid)) |
| 569 | ctl = PIN_OUT; | 569 | ctl = PIN_OUT; |
| 570 | else if (i == AUTO_PIN_MIC) | 570 | else if (cfg->inputs[i].type == AUTO_PIN_MIC) |
| 571 | ctl = PIN_VREF50; | 571 | ctl = PIN_VREF50; |
| 572 | else | 572 | else |
| 573 | ctl = PIN_IN; | 573 | ctl = PIN_IN; |
diff --git a/sound/soc/codecs/wm8903.h b/sound/soc/codecs/wm8903.h index e8490f3edd03..e3ec2433b215 100644 --- a/sound/soc/codecs/wm8903.h +++ b/sound/soc/codecs/wm8903.h | |||
| @@ -165,7 +165,7 @@ extern int wm8903_mic_detect(struct snd_soc_codec *codec, | |||
| 165 | 165 | ||
| 166 | #define WM8903_VMID_RES_50K 2 | 166 | #define WM8903_VMID_RES_50K 2 |
| 167 | #define WM8903_VMID_RES_250K 3 | 167 | #define WM8903_VMID_RES_250K 3 |
| 168 | #define WM8903_VMID_RES_5K 4 | 168 | #define WM8903_VMID_RES_5K 6 |
| 169 | 169 | ||
| 170 | /* | 170 | /* |
| 171 | * R8 (0x08) - Analogue DAC 0 | 171 | * R8 (0x08) - Analogue DAC 0 |
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index a60b5dbf0154..ebaee5ca7434 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c | |||
| @@ -3000,11 +3000,10 @@ static void wm8958_default_micdet(u16 status, void *data) | |||
| 3000 | report |= SND_JACK_BTN_5; | 3000 | report |= SND_JACK_BTN_5; |
| 3001 | 3001 | ||
| 3002 | done: | 3002 | done: |
| 3003 | snd_soc_jack_report(wm8994->micdet[0].jack, | 3003 | snd_soc_jack_report(wm8994->micdet[0].jack, report, |
| 3004 | SND_JACK_BTN_0 | SND_JACK_BTN_1 | SND_JACK_BTN_2 | | 3004 | SND_JACK_BTN_0 | SND_JACK_BTN_1 | SND_JACK_BTN_2 | |
| 3005 | SND_JACK_BTN_3 | SND_JACK_BTN_4 | SND_JACK_BTN_5 | | 3005 | SND_JACK_BTN_3 | SND_JACK_BTN_4 | SND_JACK_BTN_5 | |
| 3006 | SND_JACK_MICROPHONE | SND_JACK_VIDEOOUT, | 3006 | SND_JACK_MICROPHONE | SND_JACK_VIDEOOUT); |
| 3007 | report); | ||
| 3008 | } | 3007 | } |
| 3009 | 3008 | ||
| 3010 | /** | 3009 | /** |
diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c index 613df5db0b32..516892706063 100644 --- a/sound/soc/codecs/wm_hubs.c +++ b/sound/soc/codecs/wm_hubs.c | |||
| @@ -674,6 +674,9 @@ SND_SOC_DAPM_OUTPUT("LINEOUT2N"), | |||
| 674 | }; | 674 | }; |
| 675 | 675 | ||
| 676 | static const struct snd_soc_dapm_route analogue_routes[] = { | 676 | static const struct snd_soc_dapm_route analogue_routes[] = { |
| 677 | { "MICBIAS1", NULL, "CLK_SYS" }, | ||
| 678 | { "MICBIAS2", NULL, "CLK_SYS" }, | ||
| 679 | |||
| 677 | { "IN1L PGA", "IN1LP Switch", "IN1LP" }, | 680 | { "IN1L PGA", "IN1LP Switch", "IN1LP" }, |
| 678 | { "IN1L PGA", "IN1LN Switch", "IN1LN" }, | 681 | { "IN1L PGA", "IN1LN Switch", "IN1LN" }, |
| 679 | 682 | ||
diff --git a/sound/soc/imx/eukrea-tlv320.c b/sound/soc/imx/eukrea-tlv320.c index e20c9e1457c0..1e9bccae4e80 100644 --- a/sound/soc/imx/eukrea-tlv320.c +++ b/sound/soc/imx/eukrea-tlv320.c | |||
| @@ -79,7 +79,7 @@ static struct snd_soc_dai_link eukrea_tlv320_dai = { | |||
| 79 | .name = "tlv320aic23", | 79 | .name = "tlv320aic23", |
| 80 | .stream_name = "TLV320AIC23", | 80 | .stream_name = "TLV320AIC23", |
| 81 | .codec_dai_name = "tlv320aic23-hifi", | 81 | .codec_dai_name = "tlv320aic23-hifi", |
| 82 | .platform_name = "imx-pcm-audio.0", | 82 | .platform_name = "imx-fiq-pcm-audio.0", |
| 83 | .codec_name = "tlv320aic23-codec.0-001a", | 83 | .codec_name = "tlv320aic23-codec.0-001a", |
| 84 | .cpu_dai_name = "imx-ssi.0", | 84 | .cpu_dai_name = "imx-ssi.0", |
| 85 | .ops = &eukrea_tlv320_snd_ops, | 85 | .ops = &eukrea_tlv320_snd_ops, |
diff --git a/sound/soc/pxa/e740_wm9705.c b/sound/soc/pxa/e740_wm9705.c index 28333e7d9c50..dc65650a6fa1 100644 --- a/sound/soc/pxa/e740_wm9705.c +++ b/sound/soc/pxa/e740_wm9705.c | |||
| @@ -117,7 +117,7 @@ static struct snd_soc_dai_link e740_dai[] = { | |||
| 117 | { | 117 | { |
| 118 | .name = "AC97", | 118 | .name = "AC97", |
| 119 | .stream_name = "AC97 HiFi", | 119 | .stream_name = "AC97 HiFi", |
| 120 | .cpu_dai_name = "pxa-ac97.0", | 120 | .cpu_dai_name = "pxa2xx-ac97", |
| 121 | .codec_dai_name = "wm9705-hifi", | 121 | .codec_dai_name = "wm9705-hifi", |
| 122 | .platform_name = "pxa-pcm-audio", | 122 | .platform_name = "pxa-pcm-audio", |
| 123 | .codec_name = "wm9705-codec", | 123 | .codec_name = "wm9705-codec", |
| @@ -126,7 +126,7 @@ static struct snd_soc_dai_link e740_dai[] = { | |||
| 126 | { | 126 | { |
| 127 | .name = "AC97 Aux", | 127 | .name = "AC97 Aux", |
| 128 | .stream_name = "AC97 Aux", | 128 | .stream_name = "AC97 Aux", |
| 129 | .cpu_dai_name = "pxa-ac97.1", | 129 | .cpu_dai_name = "pxa2xx-ac97-aux", |
| 130 | .codec_dai_name = "wm9705-aux", | 130 | .codec_dai_name = "wm9705-aux", |
| 131 | .platform_name = "pxa-pcm-audio", | 131 | .platform_name = "pxa-pcm-audio", |
| 132 | .codec_name = "wm9705-codec", | 132 | .codec_name = "wm9705-codec", |
diff --git a/sound/soc/pxa/e750_wm9705.c b/sound/soc/pxa/e750_wm9705.c index 01bf31675c55..51897fcd911b 100644 --- a/sound/soc/pxa/e750_wm9705.c +++ b/sound/soc/pxa/e750_wm9705.c | |||
| @@ -99,7 +99,7 @@ static struct snd_soc_dai_link e750_dai[] = { | |||
| 99 | { | 99 | { |
| 100 | .name = "AC97", | 100 | .name = "AC97", |
| 101 | .stream_name = "AC97 HiFi", | 101 | .stream_name = "AC97 HiFi", |
| 102 | .cpu_dai_name = "pxa-ac97.0", | 102 | .cpu_dai_name = "pxa2xx-ac97", |
| 103 | .codec_dai_name = "wm9705-hifi", | 103 | .codec_dai_name = "wm9705-hifi", |
| 104 | .platform_name = "pxa-pcm-audio", | 104 | .platform_name = "pxa-pcm-audio", |
| 105 | .codec_name = "wm9705-codec", | 105 | .codec_name = "wm9705-codec", |
| @@ -109,7 +109,7 @@ static struct snd_soc_dai_link e750_dai[] = { | |||
| 109 | { | 109 | { |
| 110 | .name = "AC97 Aux", | 110 | .name = "AC97 Aux", |
| 111 | .stream_name = "AC97 Aux", | 111 | .stream_name = "AC97 Aux", |
| 112 | .cpu_dai_name = "pxa-ac97.1", | 112 | .cpu_dai_name = "pxa2xx-ac97-aux", |
| 113 | .codec_dai_name ="wm9705-aux", | 113 | .codec_dai_name ="wm9705-aux", |
| 114 | .platform_name = "pxa-pcm-audio", | 114 | .platform_name = "pxa-pcm-audio", |
| 115 | .codec_name = "wm9705-codec", | 115 | .codec_name = "wm9705-codec", |
diff --git a/sound/soc/pxa/e800_wm9712.c b/sound/soc/pxa/e800_wm9712.c index c6a37c6ef23b..053ed208e59f 100644 --- a/sound/soc/pxa/e800_wm9712.c +++ b/sound/soc/pxa/e800_wm9712.c | |||
| @@ -89,7 +89,7 @@ static struct snd_soc_dai_link e800_dai[] = { | |||
| 89 | { | 89 | { |
| 90 | .name = "AC97", | 90 | .name = "AC97", |
| 91 | .stream_name = "AC97 HiFi", | 91 | .stream_name = "AC97 HiFi", |
| 92 | .cpu_dai_name = "pxa-ac97.0", | 92 | .cpu_dai_name = "pxa2xx-ac97", |
| 93 | .codec_dai_name = "wm9712-hifi", | 93 | .codec_dai_name = "wm9712-hifi", |
| 94 | .platform_name = "pxa-pcm-audio", | 94 | .platform_name = "pxa-pcm-audio", |
| 95 | .codec_name = "wm9712-codec", | 95 | .codec_name = "wm9712-codec", |
| @@ -98,7 +98,7 @@ static struct snd_soc_dai_link e800_dai[] = { | |||
| 98 | { | 98 | { |
| 99 | .name = "AC97 Aux", | 99 | .name = "AC97 Aux", |
| 100 | .stream_name = "AC97 Aux", | 100 | .stream_name = "AC97 Aux", |
| 101 | .cpu_dai_name = "pxa-ac97.1", | 101 | .cpu_dai_name = "pxa2xx-ac97-aux", |
| 102 | .codec_dai_name ="wm9712-aux", | 102 | .codec_dai_name ="wm9712-aux", |
| 103 | .platform_name = "pxa-pcm-audio", | 103 | .platform_name = "pxa-pcm-audio", |
| 104 | .codec_name = "wm9712-codec", | 104 | .codec_name = "wm9712-codec", |
diff --git a/sound/soc/pxa/em-x270.c b/sound/soc/pxa/em-x270.c index fc22e6eefc98..b13a4252812d 100644 --- a/sound/soc/pxa/em-x270.c +++ b/sound/soc/pxa/em-x270.c | |||
| @@ -37,7 +37,7 @@ static struct snd_soc_dai_link em_x270_dai[] = { | |||
| 37 | { | 37 | { |
| 38 | .name = "AC97", | 38 | .name = "AC97", |
| 39 | .stream_name = "AC97 HiFi", | 39 | .stream_name = "AC97 HiFi", |
| 40 | .cpu_dai_name = "pxa-ac97.0", | 40 | .cpu_dai_name = "pxa2xx-ac97", |
| 41 | .codec_dai_name = "wm9712-hifi", | 41 | .codec_dai_name = "wm9712-hifi", |
| 42 | .platform_name = "pxa-pcm-audio", | 42 | .platform_name = "pxa-pcm-audio", |
| 43 | .codec_name = "wm9712-codec", | 43 | .codec_name = "wm9712-codec", |
| @@ -45,7 +45,7 @@ static struct snd_soc_dai_link em_x270_dai[] = { | |||
| 45 | { | 45 | { |
| 46 | .name = "AC97 Aux", | 46 | .name = "AC97 Aux", |
| 47 | .stream_name = "AC97 Aux", | 47 | .stream_name = "AC97 Aux", |
| 48 | .cpu_dai_name = "pxa-ac97.1", | 48 | .cpu_dai_name = "pxa2xx-ac97-aux", |
| 49 | .codec_dai_name ="wm9712-aux", | 49 | .codec_dai_name ="wm9712-aux", |
| 50 | .platform_name = "pxa-pcm-audio", | 50 | .platform_name = "pxa-pcm-audio", |
| 51 | .codec_name = "wm9712-codec", | 51 | .codec_name = "wm9712-codec", |
diff --git a/sound/soc/pxa/mioa701_wm9713.c b/sound/soc/pxa/mioa701_wm9713.c index 0d70fc8c12bd..38ca6759907e 100644 --- a/sound/soc/pxa/mioa701_wm9713.c +++ b/sound/soc/pxa/mioa701_wm9713.c | |||
| @@ -162,7 +162,7 @@ static struct snd_soc_dai_link mioa701_dai[] = { | |||
| 162 | { | 162 | { |
| 163 | .name = "AC97", | 163 | .name = "AC97", |
| 164 | .stream_name = "AC97 HiFi", | 164 | .stream_name = "AC97 HiFi", |
| 165 | .cpu_dai_name = "pxa-ac97.0", | 165 | .cpu_dai_name = "pxa2xx-ac97", |
| 166 | .codec_dai_name = "wm9713-hifi", | 166 | .codec_dai_name = "wm9713-hifi", |
| 167 | .codec_name = "wm9713-codec", | 167 | .codec_name = "wm9713-codec", |
| 168 | .init = mioa701_wm9713_init, | 168 | .init = mioa701_wm9713_init, |
| @@ -172,7 +172,7 @@ static struct snd_soc_dai_link mioa701_dai[] = { | |||
| 172 | { | 172 | { |
| 173 | .name = "AC97 Aux", | 173 | .name = "AC97 Aux", |
| 174 | .stream_name = "AC97 Aux", | 174 | .stream_name = "AC97 Aux", |
| 175 | .cpu_dai_name = "pxa-ac97.1", | 175 | .cpu_dai_name = "pxa2xx-ac97-aux", |
| 176 | .codec_dai_name ="wm9713-aux", | 176 | .codec_dai_name ="wm9713-aux", |
| 177 | .codec_name = "wm9713-codec", | 177 | .codec_name = "wm9713-codec", |
| 178 | .platform_name = "pxa-pcm-audio", | 178 | .platform_name = "pxa-pcm-audio", |
diff --git a/sound/soc/pxa/palm27x.c b/sound/soc/pxa/palm27x.c index 857db96d4a4f..504e4004f004 100644 --- a/sound/soc/pxa/palm27x.c +++ b/sound/soc/pxa/palm27x.c | |||
| @@ -132,7 +132,7 @@ static struct snd_soc_dai_link palm27x_dai[] = { | |||
| 132 | { | 132 | { |
| 133 | .name = "AC97 HiFi", | 133 | .name = "AC97 HiFi", |
| 134 | .stream_name = "AC97 HiFi", | 134 | .stream_name = "AC97 HiFi", |
| 135 | .cpu_dai_name = "pxa-ac97.0", | 135 | .cpu_dai_name = "pxa2xx-ac97", |
| 136 | .codec_dai_name = "wm9712-hifi", | 136 | .codec_dai_name = "wm9712-hifi", |
| 137 | .codec_name = "wm9712-codec", | 137 | .codec_name = "wm9712-codec", |
| 138 | .platform_name = "pxa-pcm-audio", | 138 | .platform_name = "pxa-pcm-audio", |
| @@ -141,7 +141,7 @@ static struct snd_soc_dai_link palm27x_dai[] = { | |||
| 141 | { | 141 | { |
| 142 | .name = "AC97 Aux", | 142 | .name = "AC97 Aux", |
| 143 | .stream_name = "AC97 Aux", | 143 | .stream_name = "AC97 Aux", |
| 144 | .cpu_dai_name = "pxa-ac97.1", | 144 | .cpu_dai_name = "pxa2xx-ac97-aux", |
| 145 | .codec_dai_name = "wm9712-aux", | 145 | .codec_dai_name = "wm9712-aux", |
| 146 | .codec_name = "wm9712-codec", | 146 | .codec_name = "wm9712-codec", |
| 147 | .platform_name = "pxa-pcm-audio", | 147 | .platform_name = "pxa-pcm-audio", |
diff --git a/sound/soc/pxa/tosa.c b/sound/soc/pxa/tosa.c index f75804ef0897..4b6e5d608b42 100644 --- a/sound/soc/pxa/tosa.c +++ b/sound/soc/pxa/tosa.c | |||
| @@ -219,7 +219,7 @@ static struct snd_soc_dai_link tosa_dai[] = { | |||
| 219 | { | 219 | { |
| 220 | .name = "AC97", | 220 | .name = "AC97", |
| 221 | .stream_name = "AC97 HiFi", | 221 | .stream_name = "AC97 HiFi", |
| 222 | .cpu_dai_name = "pxa-ac97.0", | 222 | .cpu_dai_name = "pxa2xx-ac97", |
| 223 | .codec_dai_name = "wm9712-hifi", | 223 | .codec_dai_name = "wm9712-hifi", |
| 224 | .platform_name = "pxa-pcm-audio", | 224 | .platform_name = "pxa-pcm-audio", |
| 225 | .codec_name = "wm9712-codec", | 225 | .codec_name = "wm9712-codec", |
| @@ -229,7 +229,7 @@ static struct snd_soc_dai_link tosa_dai[] = { | |||
| 229 | { | 229 | { |
| 230 | .name = "AC97 Aux", | 230 | .name = "AC97 Aux", |
| 231 | .stream_name = "AC97 Aux", | 231 | .stream_name = "AC97 Aux", |
| 232 | .cpu_dai_name = "pxa-ac97.1", | 232 | .cpu_dai_name = "pxa2xx-ac97-aux", |
| 233 | .codec_dai_name = "wm9712-aux", | 233 | .codec_dai_name = "wm9712-aux", |
| 234 | .platform_name = "pxa-pcm-audio", | 234 | .platform_name = "pxa-pcm-audio", |
| 235 | .codec_name = "wm9712-codec", | 235 | .codec_name = "wm9712-codec", |
diff --git a/sound/soc/pxa/zylonite.c b/sound/soc/pxa/zylonite.c index b222a7d72027..25bba108fea3 100644 --- a/sound/soc/pxa/zylonite.c +++ b/sound/soc/pxa/zylonite.c | |||
| @@ -166,7 +166,7 @@ static struct snd_soc_dai_link zylonite_dai[] = { | |||
| 166 | .stream_name = "AC97 HiFi", | 166 | .stream_name = "AC97 HiFi", |
| 167 | .codec_name = "wm9713-codec", | 167 | .codec_name = "wm9713-codec", |
| 168 | .platform_name = "pxa-pcm-audio", | 168 | .platform_name = "pxa-pcm-audio", |
| 169 | .cpu_dai_name = "pxa-ac97.0", | 169 | .cpu_dai_name = "pxa2xx-ac97", |
| 170 | .codec_name = "wm9713-hifi", | 170 | .codec_name = "wm9713-hifi", |
| 171 | .init = zylonite_wm9713_init, | 171 | .init = zylonite_wm9713_init, |
| 172 | }, | 172 | }, |
| @@ -175,7 +175,7 @@ static struct snd_soc_dai_link zylonite_dai[] = { | |||
| 175 | .stream_name = "AC97 Aux", | 175 | .stream_name = "AC97 Aux", |
| 176 | .codec_name = "wm9713-codec", | 176 | .codec_name = "wm9713-codec", |
| 177 | .platform_name = "pxa-pcm-audio", | 177 | .platform_name = "pxa-pcm-audio", |
| 178 | .cpu_dai_name = "pxa-ac97.1", | 178 | .cpu_dai_name = "pxa2xx-ac97-aux", |
| 179 | .codec_name = "wm9713-aux", | 179 | .codec_name = "wm9713-aux", |
| 180 | }, | 180 | }, |
| 181 | { | 181 | { |
diff --git a/sound/usb/card.c b/sound/usb/card.c index 800f7cb4f251..c0f8270bc199 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c | |||
| @@ -323,6 +323,7 @@ static int snd_usb_audio_create(struct usb_device *dev, int idx, | |||
| 323 | return -ENOMEM; | 323 | return -ENOMEM; |
| 324 | } | 324 | } |
| 325 | 325 | ||
| 326 | mutex_init(&chip->shutdown_mutex); | ||
| 326 | chip->index = idx; | 327 | chip->index = idx; |
| 327 | chip->dev = dev; | 328 | chip->dev = dev; |
| 328 | chip->card = card; | 329 | chip->card = card; |
| @@ -531,6 +532,7 @@ static void snd_usb_audio_disconnect(struct usb_device *dev, void *ptr) | |||
| 531 | chip = ptr; | 532 | chip = ptr; |
| 532 | card = chip->card; | 533 | card = chip->card; |
| 533 | mutex_lock(®ister_mutex); | 534 | mutex_lock(®ister_mutex); |
| 535 | mutex_lock(&chip->shutdown_mutex); | ||
| 534 | chip->shutdown = 1; | 536 | chip->shutdown = 1; |
| 535 | chip->num_interfaces--; | 537 | chip->num_interfaces--; |
| 536 | if (chip->num_interfaces <= 0) { | 538 | if (chip->num_interfaces <= 0) { |
| @@ -548,9 +550,11 @@ static void snd_usb_audio_disconnect(struct usb_device *dev, void *ptr) | |||
| 548 | snd_usb_mixer_disconnect(p); | 550 | snd_usb_mixer_disconnect(p); |
| 549 | } | 551 | } |
| 550 | usb_chip[chip->index] = NULL; | 552 | usb_chip[chip->index] = NULL; |
| 553 | mutex_unlock(&chip->shutdown_mutex); | ||
| 551 | mutex_unlock(®ister_mutex); | 554 | mutex_unlock(®ister_mutex); |
| 552 | snd_card_free_when_closed(card); | 555 | snd_card_free_when_closed(card); |
| 553 | } else { | 556 | } else { |
| 557 | mutex_unlock(&chip->shutdown_mutex); | ||
| 554 | mutex_unlock(®ister_mutex); | 558 | mutex_unlock(®ister_mutex); |
| 555 | } | 559 | } |
| 556 | } | 560 | } |
diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index 4132522ac90f..e3f680526cb5 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c | |||
| @@ -361,6 +361,7 @@ static int snd_usb_hw_params(struct snd_pcm_substream *substream, | |||
| 361 | } | 361 | } |
| 362 | 362 | ||
| 363 | if (changed) { | 363 | if (changed) { |
| 364 | mutex_lock(&subs->stream->chip->shutdown_mutex); | ||
| 364 | /* format changed */ | 365 | /* format changed */ |
| 365 | snd_usb_release_substream_urbs(subs, 0); | 366 | snd_usb_release_substream_urbs(subs, 0); |
| 366 | /* influenced: period_bytes, channels, rate, format, */ | 367 | /* influenced: period_bytes, channels, rate, format, */ |
| @@ -368,6 +369,7 @@ static int snd_usb_hw_params(struct snd_pcm_substream *substream, | |||
| 368 | params_rate(hw_params), | 369 | params_rate(hw_params), |
| 369 | snd_pcm_format_physical_width(params_format(hw_params)) * | 370 | snd_pcm_format_physical_width(params_format(hw_params)) * |
| 370 | params_channels(hw_params)); | 371 | params_channels(hw_params)); |
| 372 | mutex_unlock(&subs->stream->chip->shutdown_mutex); | ||
| 371 | } | 373 | } |
| 372 | 374 | ||
| 373 | return ret; | 375 | return ret; |
| @@ -385,8 +387,9 @@ static int snd_usb_hw_free(struct snd_pcm_substream *substream) | |||
| 385 | subs->cur_audiofmt = NULL; | 387 | subs->cur_audiofmt = NULL; |
| 386 | subs->cur_rate = 0; | 388 | subs->cur_rate = 0; |
| 387 | subs->period_bytes = 0; | 389 | subs->period_bytes = 0; |
| 388 | if (!subs->stream->chip->shutdown) | 390 | mutex_lock(&subs->stream->chip->shutdown_mutex); |
| 389 | snd_usb_release_substream_urbs(subs, 0); | 391 | snd_usb_release_substream_urbs(subs, 0); |
| 392 | mutex_unlock(&subs->stream->chip->shutdown_mutex); | ||
| 390 | return snd_pcm_lib_free_vmalloc_buffer(substream); | 393 | return snd_pcm_lib_free_vmalloc_buffer(substream); |
| 391 | } | 394 | } |
| 392 | 395 | ||
diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h index db3eb21627ee..6e66fffe87f5 100644 --- a/sound/usb/usbaudio.h +++ b/sound/usb/usbaudio.h | |||
| @@ -36,6 +36,7 @@ struct snd_usb_audio { | |||
| 36 | struct snd_card *card; | 36 | struct snd_card *card; |
| 37 | u32 usb_id; | 37 | u32 usb_id; |
| 38 | int shutdown; | 38 | int shutdown; |
| 39 | struct mutex shutdown_mutex; | ||
| 39 | unsigned int txfr_quirk:1; /* Subframe boundaries on transfers */ | 40 | unsigned int txfr_quirk:1; /* Subframe boundaries on transfers */ |
| 40 | int num_interfaces; | 41 | int num_interfaces; |
| 41 | int num_suspended_intf; | 42 | int num_suspended_intf; |
