aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-09-17 13:53:28 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-09-17 13:53:28 -0400
commit151b6a5f1d4c547c92ec67a5a6fedc16f435956e (patch)
tree5718e5d1a545b0fd11119277cc9ad6d4202cd1e7
parent509344b8b4d365b7ff3bce97198d83a57b7c3f31 (diff)
parenta1984f49996aa1553c7dbf5e1abb785a6d378bd4 (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: ALSA: pcm - Fix race with proc files ALSA: pcm - Fix unbalanced pm_qos_request ALSA: HDA: Enable internal speaker on Dell M101z ALSA: patch_nvhdmi.c: Fix supported sample rate list. sound: Remove pr_<level> uses of KERN_<level> ALSA: hda - Add quirk for Toshiba C650D using a Conexant CX20585 ALSA: hda_intel: ALSA HD Audio patch for Intel Patsburg DeviceIDs
-rw-r--r--sound/core/pcm.c33
-rw-r--r--sound/core/pcm_native.c2
-rw-r--r--sound/pci/hda/hda_intel.c3
-rw-r--r--sound/pci/hda/patch_conexant.c1
-rw-r--r--sound/pci/hda/patch_nvhdmi.c2
-rw-r--r--sound/pci/hda/patch_realtek.c10
-rw-r--r--sound/ppc/snd_ps3.c2
-rw-r--r--sound/soc/s3c24xx/s3c-dma.c3
8 files changed, 43 insertions, 13 deletions
diff --git a/sound/core/pcm.c b/sound/core/pcm.c
index 204af48c5cc1..ac242a377aea 100644
--- a/sound/core/pcm.c
+++ b/sound/core/pcm.c
@@ -372,14 +372,17 @@ static void snd_pcm_substream_proc_hw_params_read(struct snd_info_entry *entry,
372 struct snd_info_buffer *buffer) 372 struct snd_info_buffer *buffer)
373{ 373{
374 struct snd_pcm_substream *substream = entry->private_data; 374 struct snd_pcm_substream *substream = entry->private_data;
375 struct snd_pcm_runtime *runtime = substream->runtime; 375 struct snd_pcm_runtime *runtime;
376
377 mutex_lock(&substream->pcm->open_mutex);
378 runtime = substream->runtime;
376 if (!runtime) { 379 if (!runtime) {
377 snd_iprintf(buffer, "closed\n"); 380 snd_iprintf(buffer, "closed\n");
378 return; 381 goto unlock;
379 } 382 }
380 if (runtime->status->state == SNDRV_PCM_STATE_OPEN) { 383 if (runtime->status->state == SNDRV_PCM_STATE_OPEN) {
381 snd_iprintf(buffer, "no setup\n"); 384 snd_iprintf(buffer, "no setup\n");
382 return; 385 goto unlock;
383 } 386 }
384 snd_iprintf(buffer, "access: %s\n", snd_pcm_access_name(runtime->access)); 387 snd_iprintf(buffer, "access: %s\n", snd_pcm_access_name(runtime->access));
385 snd_iprintf(buffer, "format: %s\n", snd_pcm_format_name(runtime->format)); 388 snd_iprintf(buffer, "format: %s\n", snd_pcm_format_name(runtime->format));
@@ -398,20 +401,25 @@ static void snd_pcm_substream_proc_hw_params_read(struct snd_info_entry *entry,
398 snd_iprintf(buffer, "OSS period frames: %lu\n", (unsigned long)runtime->oss.period_frames); 401 snd_iprintf(buffer, "OSS period frames: %lu\n", (unsigned long)runtime->oss.period_frames);
399 } 402 }
400#endif 403#endif
404 unlock:
405 mutex_unlock(&substream->pcm->open_mutex);
401} 406}
402 407
403static void snd_pcm_substream_proc_sw_params_read(struct snd_info_entry *entry, 408static void snd_pcm_substream_proc_sw_params_read(struct snd_info_entry *entry,
404 struct snd_info_buffer *buffer) 409 struct snd_info_buffer *buffer)
405{ 410{
406 struct snd_pcm_substream *substream = entry->private_data; 411 struct snd_pcm_substream *substream = entry->private_data;
407 struct snd_pcm_runtime *runtime = substream->runtime; 412 struct snd_pcm_runtime *runtime;
413
414 mutex_lock(&substream->pcm->open_mutex);
415 runtime = substream->runtime;
408 if (!runtime) { 416 if (!runtime) {
409 snd_iprintf(buffer, "closed\n"); 417 snd_iprintf(buffer, "closed\n");
410 return; 418 goto unlock;
411 } 419 }
412 if (runtime->status->state == SNDRV_PCM_STATE_OPEN) { 420 if (runtime->status->state == SNDRV_PCM_STATE_OPEN) {
413 snd_iprintf(buffer, "no setup\n"); 421 snd_iprintf(buffer, "no setup\n");
414 return; 422 goto unlock;
415 } 423 }
416 snd_iprintf(buffer, "tstamp_mode: %s\n", snd_pcm_tstamp_mode_name(runtime->tstamp_mode)); 424 snd_iprintf(buffer, "tstamp_mode: %s\n", snd_pcm_tstamp_mode_name(runtime->tstamp_mode));
417 snd_iprintf(buffer, "period_step: %u\n", runtime->period_step); 425 snd_iprintf(buffer, "period_step: %u\n", runtime->period_step);
@@ -421,24 +429,29 @@ static void snd_pcm_substream_proc_sw_params_read(struct snd_info_entry *entry,
421 snd_iprintf(buffer, "silence_threshold: %lu\n", runtime->silence_threshold); 429 snd_iprintf(buffer, "silence_threshold: %lu\n", runtime->silence_threshold);
422 snd_iprintf(buffer, "silence_size: %lu\n", runtime->silence_size); 430 snd_iprintf(buffer, "silence_size: %lu\n", runtime->silence_size);
423 snd_iprintf(buffer, "boundary: %lu\n", runtime->boundary); 431 snd_iprintf(buffer, "boundary: %lu\n", runtime->boundary);
432 unlock:
433 mutex_unlock(&substream->pcm->open_mutex);
424} 434}
425 435
426static void snd_pcm_substream_proc_status_read(struct snd_info_entry *entry, 436static void snd_pcm_substream_proc_status_read(struct snd_info_entry *entry,
427 struct snd_info_buffer *buffer) 437 struct snd_info_buffer *buffer)
428{ 438{
429 struct snd_pcm_substream *substream = entry->private_data; 439 struct snd_pcm_substream *substream = entry->private_data;
430 struct snd_pcm_runtime *runtime = substream->runtime; 440 struct snd_pcm_runtime *runtime;
431 struct snd_pcm_status status; 441 struct snd_pcm_status status;
432 int err; 442 int err;
443
444 mutex_lock(&substream->pcm->open_mutex);
445 runtime = substream->runtime;
433 if (!runtime) { 446 if (!runtime) {
434 snd_iprintf(buffer, "closed\n"); 447 snd_iprintf(buffer, "closed\n");
435 return; 448 goto unlock;
436 } 449 }
437 memset(&status, 0, sizeof(status)); 450 memset(&status, 0, sizeof(status));
438 err = snd_pcm_status(substream, &status); 451 err = snd_pcm_status(substream, &status);
439 if (err < 0) { 452 if (err < 0) {
440 snd_iprintf(buffer, "error %d\n", err); 453 snd_iprintf(buffer, "error %d\n", err);
441 return; 454 goto unlock;
442 } 455 }
443 snd_iprintf(buffer, "state: %s\n", snd_pcm_state_name(status.state)); 456 snd_iprintf(buffer, "state: %s\n", snd_pcm_state_name(status.state));
444 snd_iprintf(buffer, "owner_pid : %d\n", pid_vnr(substream->pid)); 457 snd_iprintf(buffer, "owner_pid : %d\n", pid_vnr(substream->pid));
@@ -452,6 +465,8 @@ static void snd_pcm_substream_proc_status_read(struct snd_info_entry *entry,
452 snd_iprintf(buffer, "-----\n"); 465 snd_iprintf(buffer, "-----\n");
453 snd_iprintf(buffer, "hw_ptr : %ld\n", runtime->status->hw_ptr); 466 snd_iprintf(buffer, "hw_ptr : %ld\n", runtime->status->hw_ptr);
454 snd_iprintf(buffer, "appl_ptr : %ld\n", runtime->control->appl_ptr); 467 snd_iprintf(buffer, "appl_ptr : %ld\n", runtime->control->appl_ptr);
468 unlock:
469 mutex_unlock(&substream->pcm->open_mutex);
455} 470}
456 471
457#ifdef CONFIG_SND_PCM_XRUN_DEBUG 472#ifdef CONFIG_SND_PCM_XRUN_DEBUG
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index 134fc6c2e08d..d4eb2ef80784 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -1992,6 +1992,8 @@ void snd_pcm_release_substream(struct snd_pcm_substream *substream)
1992 substream->ops->close(substream); 1992 substream->ops->close(substream);
1993 substream->hw_opened = 0; 1993 substream->hw_opened = 0;
1994 } 1994 }
1995 if (pm_qos_request_active(&substream->latency_pm_qos_req))
1996 pm_qos_remove_request(&substream->latency_pm_qos_req);
1995 if (substream->pcm_release) { 1997 if (substream->pcm_release) {
1996 substream->pcm_release(substream); 1998 substream->pcm_release(substream);
1997 substream->pcm_release = NULL; 1999 substream->pcm_release = NULL;
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 1053fff4bd0a..34940a079051 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -126,6 +126,7 @@ MODULE_SUPPORTED_DEVICE("{{Intel, ICH6},"
126 "{Intel, ICH10}," 126 "{Intel, ICH10},"
127 "{Intel, PCH}," 127 "{Intel, PCH},"
128 "{Intel, CPT}," 128 "{Intel, CPT},"
129 "{Intel, PBG},"
129 "{Intel, SCH}," 130 "{Intel, SCH},"
130 "{ATI, SB450}," 131 "{ATI, SB450},"
131 "{ATI, SB600}," 132 "{ATI, SB600},"
@@ -2749,6 +2750,8 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
2749 { PCI_DEVICE(0x8086, 0x3b57), .driver_data = AZX_DRIVER_ICH }, 2750 { PCI_DEVICE(0x8086, 0x3b57), .driver_data = AZX_DRIVER_ICH },
2750 /* CPT */ 2751 /* CPT */
2751 { PCI_DEVICE(0x8086, 0x1c20), .driver_data = AZX_DRIVER_PCH }, 2752 { PCI_DEVICE(0x8086, 0x1c20), .driver_data = AZX_DRIVER_PCH },
2753 /* PBG */
2754 { PCI_DEVICE(0x8086, 0x1d20), .driver_data = AZX_DRIVER_PCH },
2752 /* SCH */ 2755 /* SCH */
2753 { PCI_DEVICE(0x8086, 0x811b), .driver_data = AZX_DRIVER_SCH }, 2756 { PCI_DEVICE(0x8086, 0x811b), .driver_data = AZX_DRIVER_SCH },
2754 /* ATI SB 450/600 */ 2757 /* ATI SB 450/600 */
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
index 71f9d6475b09..972e7c453b3d 100644
--- a/sound/pci/hda/patch_conexant.c
+++ b/sound/pci/hda/patch_conexant.c
@@ -3092,6 +3092,7 @@ static struct snd_pci_quirk cxt5066_cfg_tbl[] = {
3092 SND_PCI_QUIRK(0x1028, 0x0402, "Dell Vostro", CXT5066_DELL_VOSTO), 3092 SND_PCI_QUIRK(0x1028, 0x0402, "Dell Vostro", CXT5066_DELL_VOSTO),
3093 SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD), 3093 SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD),
3094 SND_PCI_QUIRK(0x103c, 0x360b, "HP G60", CXT5066_HP_LAPTOP), 3094 SND_PCI_QUIRK(0x103c, 0x360b, "HP G60", CXT5066_HP_LAPTOP),
3095 SND_PCI_QUIRK(0x1179, 0xff1e, "Toshiba Satellite C650D", CXT5066_IDEAPAD),
3095 SND_PCI_QUIRK(0x1179, 0xff50, "Toshiba Satellite P500-PSPGSC-01800T", CXT5066_OLPC_XO_1_5), 3096 SND_PCI_QUIRK(0x1179, 0xff50, "Toshiba Satellite P500-PSPGSC-01800T", CXT5066_OLPC_XO_1_5),
3096 SND_PCI_QUIRK(0x1179, 0xffe0, "Toshiba Satellite Pro T130-15F", CXT5066_OLPC_XO_1_5), 3097 SND_PCI_QUIRK(0x1179, 0xffe0, "Toshiba Satellite Pro T130-15F", CXT5066_OLPC_XO_1_5),
3097 SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400s", CXT5066_THINKPAD), 3098 SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400s", CXT5066_THINKPAD),
diff --git a/sound/pci/hda/patch_nvhdmi.c b/sound/pci/hda/patch_nvhdmi.c
index 69b950d527c3..baa108b9d6aa 100644
--- a/sound/pci/hda/patch_nvhdmi.c
+++ b/sound/pci/hda/patch_nvhdmi.c
@@ -84,7 +84,7 @@ static struct hda_verb nvhdmi_basic_init_7x[] = {
84#else 84#else
85/* support all rates and formats */ 85/* support all rates and formats */
86#define SUPPORTED_RATES \ 86#define SUPPORTED_RATES \
87 (SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |\ 87 (SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |\
88 SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |\ 88 SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |\
89 SNDRV_PCM_RATE_192000) 89 SNDRV_PCM_RATE_192000)
90#define SUPPORTED_MAXBPS 24 90#define SUPPORTED_MAXBPS 24
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index bcbf9160ed81..a1312a6c8af2 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -14453,6 +14453,7 @@ static void alc269_auto_init(struct hda_codec *codec)
14453 14453
14454enum { 14454enum {
14455 ALC269_FIXUP_SONY_VAIO, 14455 ALC269_FIXUP_SONY_VAIO,
14456 ALC269_FIXUP_DELL_M101Z,
14456}; 14457};
14457 14458
14458static const struct hda_verb alc269_sony_vaio_fixup_verbs[] = { 14459static const struct hda_verb alc269_sony_vaio_fixup_verbs[] = {
@@ -14464,11 +14465,20 @@ static const struct alc_fixup alc269_fixups[] = {
14464 [ALC269_FIXUP_SONY_VAIO] = { 14465 [ALC269_FIXUP_SONY_VAIO] = {
14465 .verbs = alc269_sony_vaio_fixup_verbs 14466 .verbs = alc269_sony_vaio_fixup_verbs
14466 }, 14467 },
14468 [ALC269_FIXUP_DELL_M101Z] = {
14469 .verbs = (const struct hda_verb[]) {
14470 /* Enables internal speaker */
14471 {0x20, AC_VERB_SET_COEF_INDEX, 13},
14472 {0x20, AC_VERB_SET_PROC_COEF, 0x4040},
14473 {}
14474 }
14475 },
14467}; 14476};
14468 14477
14469static struct snd_pci_quirk alc269_fixup_tbl[] = { 14478static struct snd_pci_quirk alc269_fixup_tbl[] = {
14470 SND_PCI_QUIRK(0x104d, 0x9071, "Sony VAIO", ALC269_FIXUP_SONY_VAIO), 14479 SND_PCI_QUIRK(0x104d, 0x9071, "Sony VAIO", ALC269_FIXUP_SONY_VAIO),
14471 SND_PCI_QUIRK(0x104d, 0x9077, "Sony VAIO", ALC269_FIXUP_SONY_VAIO), 14480 SND_PCI_QUIRK(0x104d, 0x9077, "Sony VAIO", ALC269_FIXUP_SONY_VAIO),
14481 SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z),
14472 {} 14482 {}
14473}; 14483};
14474 14484
diff --git a/sound/ppc/snd_ps3.c b/sound/ppc/snd_ps3.c
index 2f12da4da561..581a670e8261 100644
--- a/sound/ppc/snd_ps3.c
+++ b/sound/ppc/snd_ps3.c
@@ -579,7 +579,7 @@ static int snd_ps3_delay_to_bytes(struct snd_pcm_substream *substream,
579 rate * delay_ms / 1000) 579 rate * delay_ms / 1000)
580 * substream->runtime->channels; 580 * substream->runtime->channels;
581 581
582 pr_debug(KERN_ERR "%s: time=%d rate=%d bytes=%ld, frames=%d, ret=%d\n", 582 pr_debug("%s: time=%d rate=%d bytes=%ld, frames=%d, ret=%d\n",
583 __func__, 583 __func__,
584 delay_ms, 584 delay_ms,
585 rate, 585 rate,
diff --git a/sound/soc/s3c24xx/s3c-dma.c b/sound/soc/s3c24xx/s3c-dma.c
index 1b61c23ff300..f1b1bc4bacfb 100644
--- a/sound/soc/s3c24xx/s3c-dma.c
+++ b/sound/soc/s3c24xx/s3c-dma.c
@@ -94,8 +94,7 @@ static void s3c_dma_enqueue(struct snd_pcm_substream *substream)
94 94
95 if ((pos + len) > prtd->dma_end) { 95 if ((pos + len) > prtd->dma_end) {
96 len = prtd->dma_end - pos; 96 len = prtd->dma_end - pos;
97 pr_debug(KERN_DEBUG "%s: corrected dma len %ld\n", 97 pr_debug("%s: corrected dma len %ld\n", __func__, len);
98 __func__, len);
99 } 98 }
100 99
101 ret = s3c2410_dma_enqueue(prtd->params->channel, 100 ret = s3c2410_dma_enqueue(prtd->params->channel,