Commit 151b6a5f1d4c547c92ec67a5a6fedc16f435956e

Authored by Linus Torvalds

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

Showing 8 changed files Side-by-side Diff

... ... @@ -372,14 +372,17 @@
372 372 struct snd_info_buffer *buffer)
373 373 {
374 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 379 if (!runtime) {
377 380 snd_iprintf(buffer, "closed\n");
378   - return;
  381 + goto unlock;
379 382 }
380 383 if (runtime->status->state == SNDRV_PCM_STATE_OPEN) {
381 384 snd_iprintf(buffer, "no setup\n");
382   - return;
  385 + goto unlock;
383 386 }
384 387 snd_iprintf(buffer, "access: %s\n", snd_pcm_access_name(runtime->access));
385 388 snd_iprintf(buffer, "format: %s\n", snd_pcm_format_name(runtime->format));
386 389  
387 390  
388 391  
... ... @@ -398,20 +401,25 @@
398 401 snd_iprintf(buffer, "OSS period frames: %lu\n", (unsigned long)runtime->oss.period_frames);
399 402 }
400 403 #endif
  404 + unlock:
  405 + mutex_unlock(&substream->pcm->open_mutex);
401 406 }
402 407  
403 408 static void snd_pcm_substream_proc_sw_params_read(struct snd_info_entry *entry,
404 409 struct snd_info_buffer *buffer)
405 410 {
406 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 416 if (!runtime) {
409 417 snd_iprintf(buffer, "closed\n");
410   - return;
  418 + goto unlock;
411 419 }
412 420 if (runtime->status->state == SNDRV_PCM_STATE_OPEN) {
413 421 snd_iprintf(buffer, "no setup\n");
414   - return;
  422 + goto unlock;
415 423 }
416 424 snd_iprintf(buffer, "tstamp_mode: %s\n", snd_pcm_tstamp_mode_name(runtime->tstamp_mode));
417 425 snd_iprintf(buffer, "period_step: %u\n", runtime->period_step);
418 426  
419 427  
420 428  
421 429  
... ... @@ -421,24 +429,29 @@
421 429 snd_iprintf(buffer, "silence_threshold: %lu\n", runtime->silence_threshold);
422 430 snd_iprintf(buffer, "silence_size: %lu\n", runtime->silence_size);
423 431 snd_iprintf(buffer, "boundary: %lu\n", runtime->boundary);
  432 + unlock:
  433 + mutex_unlock(&substream->pcm->open_mutex);
424 434 }
425 435  
426 436 static void snd_pcm_substream_proc_status_read(struct snd_info_entry *entry,
427 437 struct snd_info_buffer *buffer)
428 438 {
429 439 struct snd_pcm_substream *substream = entry->private_data;
430   - struct snd_pcm_runtime *runtime = substream->runtime;
  440 + struct snd_pcm_runtime *runtime;
431 441 struct snd_pcm_status status;
432 442 int err;
  443 +
  444 + mutex_lock(&substream->pcm->open_mutex);
  445 + runtime = substream->runtime;
433 446 if (!runtime) {
434 447 snd_iprintf(buffer, "closed\n");
435   - return;
  448 + goto unlock;
436 449 }
437 450 memset(&status, 0, sizeof(status));
438 451 err = snd_pcm_status(substream, &status);
439 452 if (err < 0) {
440 453 snd_iprintf(buffer, "error %d\n", err);
441   - return;
  454 + goto unlock;
442 455 }
443 456 snd_iprintf(buffer, "state: %s\n", snd_pcm_state_name(status.state));
444 457 snd_iprintf(buffer, "owner_pid : %d\n", pid_vnr(substream->pid));
... ... @@ -452,6 +465,8 @@
452 465 snd_iprintf(buffer, "-----\n");
453 466 snd_iprintf(buffer, "hw_ptr : %ld\n", runtime->status->hw_ptr);
454 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 472 #ifdef CONFIG_SND_PCM_XRUN_DEBUG
sound/core/pcm_native.c
... ... @@ -1992,6 +1992,8 @@
1992 1992 substream->ops->close(substream);
1993 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 1997 if (substream->pcm_release) {
1996 1998 substream->pcm_release(substream);
1997 1999 substream->pcm_release = NULL;
sound/pci/hda/hda_intel.c
... ... @@ -126,6 +126,7 @@
126 126 "{Intel, ICH10},"
127 127 "{Intel, PCH},"
128 128 "{Intel, CPT},"
  129 + "{Intel, PBG},"
129 130 "{Intel, SCH},"
130 131 "{ATI, SB450},"
131 132 "{ATI, SB600},"
... ... @@ -2749,6 +2750,8 @@
2749 2750 { PCI_DEVICE(0x8086, 0x3b57), .driver_data = AZX_DRIVER_ICH },
2750 2751 /* CPT */
2751 2752 { PCI_DEVICE(0x8086, 0x1c20), .driver_data = AZX_DRIVER_PCH },
  2753 + /* PBG */
  2754 + { PCI_DEVICE(0x8086, 0x1d20), .driver_data = AZX_DRIVER_PCH },
2752 2755 /* SCH */
2753 2756 { PCI_DEVICE(0x8086, 0x811b), .driver_data = AZX_DRIVER_SCH },
2754 2757 /* ATI SB 450/600 */
sound/pci/hda/patch_conexant.c
... ... @@ -3092,6 +3092,7 @@
3092 3092 SND_PCI_QUIRK(0x1028, 0x0402, "Dell Vostro", CXT5066_DELL_VOSTO),
3093 3093 SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD),
3094 3094 SND_PCI_QUIRK(0x103c, 0x360b, "HP G60", CXT5066_HP_LAPTOP),
  3095 + SND_PCI_QUIRK(0x1179, 0xff1e, "Toshiba Satellite C650D", CXT5066_IDEAPAD),
3095 3096 SND_PCI_QUIRK(0x1179, 0xff50, "Toshiba Satellite P500-PSPGSC-01800T", CXT5066_OLPC_XO_1_5),
3096 3097 SND_PCI_QUIRK(0x1179, 0xffe0, "Toshiba Satellite Pro T130-15F", CXT5066_OLPC_XO_1_5),
3097 3098 SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400s", CXT5066_THINKPAD),
sound/pci/hda/patch_nvhdmi.c
... ... @@ -84,7 +84,7 @@
84 84 #else
85 85 /* support all rates and formats */
86 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 88 SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |\
89 89 SNDRV_PCM_RATE_192000)
90 90 #define SUPPORTED_MAXBPS 24
sound/pci/hda/patch_realtek.c
... ... @@ -14453,6 +14453,7 @@
14453 14453  
14454 14454 enum {
14455 14455 ALC269_FIXUP_SONY_VAIO,
  14456 + ALC269_FIXUP_DELL_M101Z,
14456 14457 };
14457 14458  
14458 14459 static const struct hda_verb alc269_sony_vaio_fixup_verbs[] = {
14459 14460  
... ... @@ -14464,11 +14465,20 @@
14464 14465 [ALC269_FIXUP_SONY_VAIO] = {
14465 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  
14469 14478 static struct snd_pci_quirk alc269_fixup_tbl[] = {
14470 14479 SND_PCI_QUIRK(0x104d, 0x9071, "Sony VAIO", ALC269_FIXUP_SONY_VAIO),
14471 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  
... ... @@ -579,7 +579,7 @@
579 579 rate * delay_ms / 1000)
580 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 583 __func__,
584 584 delay_ms,
585 585 rate,
sound/soc/s3c24xx/s3c-dma.c
... ... @@ -94,8 +94,7 @@
94 94  
95 95 if ((pos + len) > prtd->dma_end) {
96 96 len = prtd->dma_end - pos;
97   - pr_debug(KERN_DEBUG "%s: corrected dma len %ld\n",
98   - __func__, len);
  97 + pr_debug("%s: corrected dma len %ld\n", __func__, len);
99 98 }
100 99  
101 100 ret = s3c2410_dma_enqueue(prtd->params->channel,