diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-09-17 10:53:28 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-09-17 10:53:28 -0700 | 
| commit | 151b6a5f1d4c547c92ec67a5a6fedc16f435956e (patch) | |
| tree | 5718e5d1a545b0fd11119277cc9ad6d4202cd1e7 | |
| parent | 509344b8b4d365b7ff3bce97198d83a57b7c3f31 (diff) | |
| parent | a1984f49996aa1553c7dbf5e1abb785a6d378bd4 (diff) | |
| download | olio-linux-3.10-151b6a5f1d4c547c92ec67a5a6fedc16f435956e.tar.xz olio-linux-3.10-151b6a5f1d4c547c92ec67a5a6fedc16f435956e.zip  | |
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.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 204af48c5cc..ac242a377ae 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,  						  struct snd_info_buffer *buffer)  {  	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) {  		snd_iprintf(buffer, "closed\n"); -		return; +		goto unlock;  	}  	if (runtime->status->state == SNDRV_PCM_STATE_OPEN) {  		snd_iprintf(buffer, "no setup\n"); -		return; +		goto unlock;  	}  	snd_iprintf(buffer, "access: %s\n", snd_pcm_access_name(runtime->access));  	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);  	}  #endif + unlock: +	mutex_unlock(&substream->pcm->open_mutex);  }  static void snd_pcm_substream_proc_sw_params_read(struct snd_info_entry *entry,  						  struct snd_info_buffer *buffer)  {  	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) {  		snd_iprintf(buffer, "closed\n"); -		return; +		goto unlock;  	}  	if (runtime->status->state == SNDRV_PCM_STATE_OPEN) {  		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, "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_size: %lu\n", runtime->silence_size);  	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,  					       struct snd_info_buffer *buffer)  {  	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;  	int err; + +	mutex_lock(&substream->pcm->open_mutex); +	runtime = substream->runtime;  	if (!runtime) {  		snd_iprintf(buffer, "closed\n"); -		return; +		goto unlock;  	}  	memset(&status, 0, sizeof(status));  	err = snd_pcm_status(substream, &status);  	if (err < 0) {  		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, "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, "hw_ptr      : %ld\n", runtime->status->hw_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 diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c index 134fc6c2e08..d4eb2ef8078 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)  		substream->ops->close(substream);  		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) {  		substream->pcm_release(substream);  		substream->pcm_release = NULL; diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 1053fff4bd0..34940a07905 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -126,6 +126,7 @@ MODULE_SUPPORTED_DEVICE("{{Intel, ICH6},"  			 "{Intel, ICH10},"  			 "{Intel, PCH},"  			 "{Intel, CPT}," +			 "{Intel, PBG},"  			 "{Intel, SCH},"  			 "{ATI, SB450},"  			 "{ATI, SB600}," @@ -2749,6 +2750,8 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {  	{ PCI_DEVICE(0x8086, 0x3b57), .driver_data = AZX_DRIVER_ICH },  	/* CPT */  	{ PCI_DEVICE(0x8086, 0x1c20), .driver_data = AZX_DRIVER_PCH }, +	/* PBG */ +	{ PCI_DEVICE(0x8086, 0x1d20), .driver_data = AZX_DRIVER_PCH },  	/* SCH */  	{ PCI_DEVICE(0x8086, 0x811b), .driver_data = AZX_DRIVER_SCH },  	/* ATI SB 450/600 */ diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index 71f9d6475b0..972e7c453b3 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[] = {  	SND_PCI_QUIRK(0x1028, 0x0402, "Dell Vostro", CXT5066_DELL_VOSTO),  	SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD),  	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, 0xffe0, "Toshiba Satellite Pro T130-15F", CXT5066_OLPC_XO_1_5),  	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 69b950d527c..baa108b9d6a 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[] = {  #else  /* support all rates and formats */  #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_192000)  #define SUPPORTED_MAXBPS	24 diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index bcbf9160ed8..a1312a6c8af 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)  enum {  	ALC269_FIXUP_SONY_VAIO, +	ALC269_FIXUP_DELL_M101Z,  };  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] = {  		.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[] = {  	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(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z),  	{}  }; diff --git a/sound/ppc/snd_ps3.c b/sound/ppc/snd_ps3.c index 2f12da4da56..581a670e826 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,  				  rate * delay_ms / 1000)  		* 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__,  		 delay_ms,  		 rate, diff --git a/sound/soc/s3c24xx/s3c-dma.c b/sound/soc/s3c24xx/s3c-dma.c index 1b61c23ff30..f1b1bc4bacf 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)  		if ((pos + len) > prtd->dma_end) {  			len  = prtd->dma_end - pos; -			pr_debug(KERN_DEBUG "%s: corrected dma len %ld\n", -			       __func__, len); +			pr_debug("%s: corrected dma len %ld\n", __func__, len);  		}  		ret = s3c2410_dma_enqueue(prtd->params->channel,  |