diff options
| -rw-r--r-- | sound/core/pcm.c | 33 | ||||
| -rw-r--r-- | sound/core/pcm_native.c | 2 | ||||
| -rw-r--r-- | sound/pci/hda/hda_intel.c | 3 | ||||
| -rw-r--r-- | sound/pci/hda/patch_conexant.c | 1 | ||||
| -rw-r--r-- | sound/pci/hda/patch_nvhdmi.c | 2 | ||||
| -rw-r--r-- | sound/pci/hda/patch_realtek.c | 10 | ||||
| -rw-r--r-- | sound/ppc/snd_ps3.c | 2 | ||||
| -rw-r--r-- | sound/soc/s3c24xx/s3c-dma.c | 3 |
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 | ||
| 403 | static void snd_pcm_substream_proc_sw_params_read(struct snd_info_entry *entry, | 408 | static 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 | ||
| 426 | static void snd_pcm_substream_proc_status_read(struct snd_info_entry *entry, | 436 | static 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 | ||
| 14454 | enum { | 14454 | enum { |
| 14455 | ALC269_FIXUP_SONY_VAIO, | 14455 | ALC269_FIXUP_SONY_VAIO, |
| 14456 | ALC269_FIXUP_DELL_M101Z, | ||
| 14456 | }; | 14457 | }; |
| 14457 | 14458 | ||
| 14458 | static const struct hda_verb alc269_sony_vaio_fixup_verbs[] = { | 14459 | static 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 | ||
| 14469 | static struct snd_pci_quirk alc269_fixup_tbl[] = { | 14478 | static 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, |
