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
This commit is contained in:
commit
151b6a5f1d
|
@ -372,14 +372,17 @@ static void snd_pcm_substream_proc_hw_params_read(struct snd_info_entry *entry,
|
||||||
struct snd_info_buffer *buffer)
|
struct snd_info_buffer *buffer)
|
||||||
{
|
{
|
||||||
struct snd_pcm_substream *substream = entry->private_data;
|
struct snd_pcm_substream *substream = entry->private_data;
|
||||||
struct snd_pcm_runtime *runtime = substream->runtime;
|
struct snd_pcm_runtime *runtime;
|
||||||
|
|
||||||
|
mutex_lock(&substream->pcm->open_mutex);
|
||||||
|
runtime = substream->runtime;
|
||||||
if (!runtime) {
|
if (!runtime) {
|
||||||
snd_iprintf(buffer, "closed\n");
|
snd_iprintf(buffer, "closed\n");
|
||||||
return;
|
goto unlock;
|
||||||
}
|
}
|
||||||
if (runtime->status->state == SNDRV_PCM_STATE_OPEN) {
|
if (runtime->status->state == SNDRV_PCM_STATE_OPEN) {
|
||||||
snd_iprintf(buffer, "no setup\n");
|
snd_iprintf(buffer, "no setup\n");
|
||||||
return;
|
goto unlock;
|
||||||
}
|
}
|
||||||
snd_iprintf(buffer, "access: %s\n", snd_pcm_access_name(runtime->access));
|
snd_iprintf(buffer, "access: %s\n", snd_pcm_access_name(runtime->access));
|
||||||
snd_iprintf(buffer, "format: %s\n", snd_pcm_format_name(runtime->format));
|
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,
|
||||||
snd_iprintf(buffer, "OSS period frames: %lu\n", (unsigned long)runtime->oss.period_frames);
|
snd_iprintf(buffer, "OSS period frames: %lu\n", (unsigned long)runtime->oss.period_frames);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
unlock:
|
||||||
|
mutex_unlock(&substream->pcm->open_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void snd_pcm_substream_proc_sw_params_read(struct snd_info_entry *entry,
|
static void snd_pcm_substream_proc_sw_params_read(struct snd_info_entry *entry,
|
||||||
struct snd_info_buffer *buffer)
|
struct snd_info_buffer *buffer)
|
||||||
{
|
{
|
||||||
struct snd_pcm_substream *substream = entry->private_data;
|
struct snd_pcm_substream *substream = entry->private_data;
|
||||||
struct snd_pcm_runtime *runtime = substream->runtime;
|
struct snd_pcm_runtime *runtime;
|
||||||
|
|
||||||
|
mutex_lock(&substream->pcm->open_mutex);
|
||||||
|
runtime = substream->runtime;
|
||||||
if (!runtime) {
|
if (!runtime) {
|
||||||
snd_iprintf(buffer, "closed\n");
|
snd_iprintf(buffer, "closed\n");
|
||||||
return;
|
goto unlock;
|
||||||
}
|
}
|
||||||
if (runtime->status->state == SNDRV_PCM_STATE_OPEN) {
|
if (runtime->status->state == SNDRV_PCM_STATE_OPEN) {
|
||||||
snd_iprintf(buffer, "no setup\n");
|
snd_iprintf(buffer, "no setup\n");
|
||||||
return;
|
goto unlock;
|
||||||
}
|
}
|
||||||
snd_iprintf(buffer, "tstamp_mode: %s\n", snd_pcm_tstamp_mode_name(runtime->tstamp_mode));
|
snd_iprintf(buffer, "tstamp_mode: %s\n", snd_pcm_tstamp_mode_name(runtime->tstamp_mode));
|
||||||
snd_iprintf(buffer, "period_step: %u\n", runtime->period_step);
|
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,
|
||||||
snd_iprintf(buffer, "silence_threshold: %lu\n", runtime->silence_threshold);
|
snd_iprintf(buffer, "silence_threshold: %lu\n", runtime->silence_threshold);
|
||||||
snd_iprintf(buffer, "silence_size: %lu\n", runtime->silence_size);
|
snd_iprintf(buffer, "silence_size: %lu\n", runtime->silence_size);
|
||||||
snd_iprintf(buffer, "boundary: %lu\n", runtime->boundary);
|
snd_iprintf(buffer, "boundary: %lu\n", runtime->boundary);
|
||||||
|
unlock:
|
||||||
|
mutex_unlock(&substream->pcm->open_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void snd_pcm_substream_proc_status_read(struct snd_info_entry *entry,
|
static void snd_pcm_substream_proc_status_read(struct snd_info_entry *entry,
|
||||||
struct snd_info_buffer *buffer)
|
struct snd_info_buffer *buffer)
|
||||||
{
|
{
|
||||||
struct snd_pcm_substream *substream = entry->private_data;
|
struct snd_pcm_substream *substream = entry->private_data;
|
||||||
struct snd_pcm_runtime *runtime = substream->runtime;
|
struct snd_pcm_runtime *runtime;
|
||||||
struct snd_pcm_status status;
|
struct snd_pcm_status status;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
mutex_lock(&substream->pcm->open_mutex);
|
||||||
|
runtime = substream->runtime;
|
||||||
if (!runtime) {
|
if (!runtime) {
|
||||||
snd_iprintf(buffer, "closed\n");
|
snd_iprintf(buffer, "closed\n");
|
||||||
return;
|
goto unlock;
|
||||||
}
|
}
|
||||||
memset(&status, 0, sizeof(status));
|
memset(&status, 0, sizeof(status));
|
||||||
err = snd_pcm_status(substream, &status);
|
err = snd_pcm_status(substream, &status);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
snd_iprintf(buffer, "error %d\n", err);
|
snd_iprintf(buffer, "error %d\n", err);
|
||||||
return;
|
goto unlock;
|
||||||
}
|
}
|
||||||
snd_iprintf(buffer, "state: %s\n", snd_pcm_state_name(status.state));
|
snd_iprintf(buffer, "state: %s\n", snd_pcm_state_name(status.state));
|
||||||
snd_iprintf(buffer, "owner_pid : %d\n", pid_vnr(substream->pid));
|
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,
|
||||||
snd_iprintf(buffer, "-----\n");
|
snd_iprintf(buffer, "-----\n");
|
||||||
snd_iprintf(buffer, "hw_ptr : %ld\n", runtime->status->hw_ptr);
|
snd_iprintf(buffer, "hw_ptr : %ld\n", runtime->status->hw_ptr);
|
||||||
snd_iprintf(buffer, "appl_ptr : %ld\n", runtime->control->appl_ptr);
|
snd_iprintf(buffer, "appl_ptr : %ld\n", runtime->control->appl_ptr);
|
||||||
|
unlock:
|
||||||
|
mutex_unlock(&substream->pcm->open_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SND_PCM_XRUN_DEBUG
|
#ifdef CONFIG_SND_PCM_XRUN_DEBUG
|
||||||
|
|
|
@ -1992,6 +1992,8 @@ void snd_pcm_release_substream(struct snd_pcm_substream *substream)
|
||||||
substream->ops->close(substream);
|
substream->ops->close(substream);
|
||||||
substream->hw_opened = 0;
|
substream->hw_opened = 0;
|
||||||
}
|
}
|
||||||
|
if (pm_qos_request_active(&substream->latency_pm_qos_req))
|
||||||
|
pm_qos_remove_request(&substream->latency_pm_qos_req);
|
||||||
if (substream->pcm_release) {
|
if (substream->pcm_release) {
|
||||||
substream->pcm_release(substream);
|
substream->pcm_release(substream);
|
||||||
substream->pcm_release = NULL;
|
substream->pcm_release = NULL;
|
||||||
|
|
|
@ -126,6 +126,7 @@ MODULE_SUPPORTED_DEVICE("{{Intel, ICH6},"
|
||||||
"{Intel, ICH10},"
|
"{Intel, ICH10},"
|
||||||
"{Intel, PCH},"
|
"{Intel, PCH},"
|
||||||
"{Intel, CPT},"
|
"{Intel, CPT},"
|
||||||
|
"{Intel, PBG},"
|
||||||
"{Intel, SCH},"
|
"{Intel, SCH},"
|
||||||
"{ATI, SB450},"
|
"{ATI, SB450},"
|
||||||
"{ATI, SB600},"
|
"{ATI, SB600},"
|
||||||
|
@ -2749,6 +2750,8 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
|
||||||
{ PCI_DEVICE(0x8086, 0x3b57), .driver_data = AZX_DRIVER_ICH },
|
{ PCI_DEVICE(0x8086, 0x3b57), .driver_data = AZX_DRIVER_ICH },
|
||||||
/* CPT */
|
/* CPT */
|
||||||
{ PCI_DEVICE(0x8086, 0x1c20), .driver_data = AZX_DRIVER_PCH },
|
{ PCI_DEVICE(0x8086, 0x1c20), .driver_data = AZX_DRIVER_PCH },
|
||||||
|
/* PBG */
|
||||||
|
{ PCI_DEVICE(0x8086, 0x1d20), .driver_data = AZX_DRIVER_PCH },
|
||||||
/* SCH */
|
/* SCH */
|
||||||
{ PCI_DEVICE(0x8086, 0x811b), .driver_data = AZX_DRIVER_SCH },
|
{ PCI_DEVICE(0x8086, 0x811b), .driver_data = AZX_DRIVER_SCH },
|
||||||
/* ATI SB 450/600 */
|
/* ATI SB 450/600 */
|
||||||
|
|
|
@ -3092,6 +3092,7 @@ static struct snd_pci_quirk cxt5066_cfg_tbl[] = {
|
||||||
SND_PCI_QUIRK(0x1028, 0x0402, "Dell Vostro", CXT5066_DELL_VOSTO),
|
SND_PCI_QUIRK(0x1028, 0x0402, "Dell Vostro", CXT5066_DELL_VOSTO),
|
||||||
SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD),
|
SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD),
|
||||||
SND_PCI_QUIRK(0x103c, 0x360b, "HP G60", CXT5066_HP_LAPTOP),
|
SND_PCI_QUIRK(0x103c, 0x360b, "HP G60", CXT5066_HP_LAPTOP),
|
||||||
|
SND_PCI_QUIRK(0x1179, 0xff1e, "Toshiba Satellite C650D", CXT5066_IDEAPAD),
|
||||||
SND_PCI_QUIRK(0x1179, 0xff50, "Toshiba Satellite P500-PSPGSC-01800T", CXT5066_OLPC_XO_1_5),
|
SND_PCI_QUIRK(0x1179, 0xff50, "Toshiba Satellite P500-PSPGSC-01800T", CXT5066_OLPC_XO_1_5),
|
||||||
SND_PCI_QUIRK(0x1179, 0xffe0, "Toshiba Satellite Pro T130-15F", CXT5066_OLPC_XO_1_5),
|
SND_PCI_QUIRK(0x1179, 0xffe0, "Toshiba Satellite Pro T130-15F", CXT5066_OLPC_XO_1_5),
|
||||||
SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400s", CXT5066_THINKPAD),
|
SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400s", CXT5066_THINKPAD),
|
||||||
|
|
|
@ -84,7 +84,7 @@ static struct hda_verb nvhdmi_basic_init_7x[] = {
|
||||||
#else
|
#else
|
||||||
/* support all rates and formats */
|
/* support all rates and formats */
|
||||||
#define SUPPORTED_RATES \
|
#define SUPPORTED_RATES \
|
||||||
(SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |\
|
(SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |\
|
||||||
SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |\
|
SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |\
|
||||||
SNDRV_PCM_RATE_192000)
|
SNDRV_PCM_RATE_192000)
|
||||||
#define SUPPORTED_MAXBPS 24
|
#define SUPPORTED_MAXBPS 24
|
||||||
|
|
|
@ -14453,6 +14453,7 @@ static void alc269_auto_init(struct hda_codec *codec)
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
ALC269_FIXUP_SONY_VAIO,
|
ALC269_FIXUP_SONY_VAIO,
|
||||||
|
ALC269_FIXUP_DELL_M101Z,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct hda_verb alc269_sony_vaio_fixup_verbs[] = {
|
static const struct hda_verb alc269_sony_vaio_fixup_verbs[] = {
|
||||||
|
@ -14464,11 +14465,20 @@ static const struct alc_fixup alc269_fixups[] = {
|
||||||
[ALC269_FIXUP_SONY_VAIO] = {
|
[ALC269_FIXUP_SONY_VAIO] = {
|
||||||
.verbs = alc269_sony_vaio_fixup_verbs
|
.verbs = alc269_sony_vaio_fixup_verbs
|
||||||
},
|
},
|
||||||
|
[ALC269_FIXUP_DELL_M101Z] = {
|
||||||
|
.verbs = (const struct hda_verb[]) {
|
||||||
|
/* Enables internal speaker */
|
||||||
|
{0x20, AC_VERB_SET_COEF_INDEX, 13},
|
||||||
|
{0x20, AC_VERB_SET_PROC_COEF, 0x4040},
|
||||||
|
{}
|
||||||
|
}
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct snd_pci_quirk alc269_fixup_tbl[] = {
|
static struct snd_pci_quirk alc269_fixup_tbl[] = {
|
||||||
SND_PCI_QUIRK(0x104d, 0x9071, "Sony VAIO", ALC269_FIXUP_SONY_VAIO),
|
SND_PCI_QUIRK(0x104d, 0x9071, "Sony VAIO", ALC269_FIXUP_SONY_VAIO),
|
||||||
SND_PCI_QUIRK(0x104d, 0x9077, "Sony VAIO", ALC269_FIXUP_SONY_VAIO),
|
SND_PCI_QUIRK(0x104d, 0x9077, "Sony VAIO", ALC269_FIXUP_SONY_VAIO),
|
||||||
|
SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -579,7 +579,7 @@ static int snd_ps3_delay_to_bytes(struct snd_pcm_substream *substream,
|
||||||
rate * delay_ms / 1000)
|
rate * delay_ms / 1000)
|
||||||
* substream->runtime->channels;
|
* substream->runtime->channels;
|
||||||
|
|
||||||
pr_debug(KERN_ERR "%s: time=%d rate=%d bytes=%ld, frames=%d, ret=%d\n",
|
pr_debug("%s: time=%d rate=%d bytes=%ld, frames=%d, ret=%d\n",
|
||||||
__func__,
|
__func__,
|
||||||
delay_ms,
|
delay_ms,
|
||||||
rate,
|
rate,
|
||||||
|
|
|
@ -94,8 +94,7 @@ static void s3c_dma_enqueue(struct snd_pcm_substream *substream)
|
||||||
|
|
||||||
if ((pos + len) > prtd->dma_end) {
|
if ((pos + len) > prtd->dma_end) {
|
||||||
len = prtd->dma_end - pos;
|
len = prtd->dma_end - pos;
|
||||||
pr_debug(KERN_DEBUG "%s: corrected dma len %ld\n",
|
pr_debug("%s: corrected dma len %ld\n", __func__, len);
|
||||||
__func__, len);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = s3c2410_dma_enqueue(prtd->params->channel,
|
ret = s3c2410_dma_enqueue(prtd->params->channel,
|
||||||
|
|
Loading…
Reference in New Issue