Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 20dba459 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
  ALSA: cmipci: work around invalid PCM pointer
  ASoC: Remove BROKEN from i.MX audio after dependencies merged
  ALSA: hda - Fix access-after-free in patch_realtek.c
  ALSA: hda - Sort codec entry list of Nvidia HDMI
  ALSA: hda - Add support of Nvidia GT220 HDMI
  ALSA: hda: Fix 0 dB offset for HP laptops using CX20551 (Waikiki)
  ALSA: hda - Add PCI quirk for HP dv6-1110ax.
  sound/oss/vidc.c: change the field used with DMA_ACTIVE
  ASoC: pxa-pcm-lib: initialize DMA channel to -1
  ASoC: Bail out of wm_hubs DC servo if calibration fails
  ASoC: tlv320dac33: Internal clocking changes
  ASoC: tlv320dac33: Fix DSP modes
  ASoC: SIU driver shall select FW_LOADER
parents 90fddabf 12180024
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -205,6 +205,7 @@ int __pxa2xx_pcm_open(struct snd_pcm_substream *substream)
	if (!rtd->dma_desc_array)
	if (!rtd->dma_desc_array)
		goto err1;
		goto err1;


	rtd->dma_ch = -1;
	runtime->private_data = rtd;
	runtime->private_data = rtd;
	return 0;
	return 0;


+2 −2
Original line number Original line Diff line number Diff line
@@ -363,13 +363,13 @@ static void vidc_audio_trigger(int dev, int enable_bits)
	struct audio_operations *adev = audio_devs[dev];
	struct audio_operations *adev = audio_devs[dev];


	if (enable_bits & PCM_ENABLE_OUTPUT) {
	if (enable_bits & PCM_ENABLE_OUTPUT) {
		if (!(adev->flags & DMA_ACTIVE)) {
		if (!(adev->dmap_out->flags & DMA_ACTIVE)) {
			unsigned long flags;
			unsigned long flags;


			local_irq_save(flags);
			local_irq_save(flags);


			/* prevent recusion */
			/* prevent recusion */
			adev->flags |= DMA_ACTIVE;
			adev->dmap_out->flags |= DMA_ACTIVE;


			dma_interrupt = vidc_audio_dma_interrupt;
			dma_interrupt = vidc_audio_dma_interrupt;
			vidc_sound_dma_irq(0, NULL);
			vidc_sound_dma_irq(0, NULL);
+11 −3
Original line number Original line Diff line number Diff line
@@ -941,13 +941,21 @@ static snd_pcm_uframes_t snd_cmipci_pcm_pointer(struct cmipci *cm, struct cmipci
						struct snd_pcm_substream *substream)
						struct snd_pcm_substream *substream)
{
{
	size_t ptr;
	size_t ptr;
	unsigned int reg;
	unsigned int reg, rem, tries;

	if (!rec->running)
	if (!rec->running)
		return 0;
		return 0;
#if 1 // this seems better..
#if 1 // this seems better..
	reg = rec->ch ? CM_REG_CH1_FRAME2 : CM_REG_CH0_FRAME2;
	reg = rec->ch ? CM_REG_CH1_FRAME2 : CM_REG_CH0_FRAME2;
	ptr = rec->dma_size - (snd_cmipci_read_w(cm, reg) + 1);
	for (tries = 0; tries < 3; tries++) {
	ptr >>= rec->shift;
		rem = snd_cmipci_read_w(cm, reg);
		if (rem < rec->dma_size)
			goto ok;
	} 
	printk(KERN_ERR "cmipci: invalid PCM pointer: %#x\n", rem);
	return SNDRV_PCM_POS_XRUN;
ok:
	ptr = (rec->dma_size - (rem + 1)) >> rec->shift;
#else
#else
	reg = rec->ch ? CM_REG_CH1_FRAME1 : CM_REG_CH0_FRAME1;
	reg = rec->ch ? CM_REG_CH1_FRAME1 : CM_REG_CH0_FRAME1;
	ptr = snd_cmipci_read(cm, reg) - rec->offset;
	ptr = snd_cmipci_read(cm, reg) - rec->offset;
+15 −0
Original line number Original line Diff line number Diff line
@@ -1591,6 +1591,21 @@ static int patch_cxt5047(struct hda_codec *codec)
#endif	
#endif	
	}
	}
	spec->vmaster_nid = 0x13;
	spec->vmaster_nid = 0x13;

	switch (codec->subsystem_id >> 16) {
	case 0x103c:
		/* HP laptops have really bad sound over 0 dB on NID 0x10.
		 * Fix max PCM level to 0 dB (originally it has 0x1e steps
		 * with 0 dB offset 0x17)
		 */
		snd_hda_override_amp_caps(codec, 0x10, HDA_INPUT,
					  (0x17 << AC_AMPCAP_OFFSET_SHIFT) |
					  (0x17 << AC_AMPCAP_NUM_STEPS_SHIFT) |
					  (0x05 << AC_AMPCAP_STEP_SIZE_SHIFT) |
					  (1 << AC_AMPCAP_MUTE_SHIFT));
		break;
	}

	return 0;
	return 0;
}
}


+9 −6
Original line number Original line Diff line number Diff line
@@ -538,8 +538,6 @@ static int patch_nvhdmi_2ch(struct hda_codec *codec)
 * patch entries
 * patch entries
 */
 */
static struct hda_codec_preset snd_hda_preset_nvhdmi[] = {
static struct hda_codec_preset snd_hda_preset_nvhdmi[] = {
	{ .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi_2ch },
	{ .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi_2ch },
	{ .id = 0x10de0002, .name = "MCP77/78 HDMI",
	{ .id = 0x10de0002, .name = "MCP77/78 HDMI",
	  .patch = patch_nvhdmi_8ch_7x },
	  .patch = patch_nvhdmi_8ch_7x },
	{ .id = 0x10de0003, .name = "MCP77/78 HDMI",
	{ .id = 0x10de0003, .name = "MCP77/78 HDMI",
@@ -550,12 +548,16 @@ static struct hda_codec_preset snd_hda_preset_nvhdmi[] = {
	  .patch = patch_nvhdmi_8ch_7x },
	  .patch = patch_nvhdmi_8ch_7x },
	{ .id = 0x10de0007, .name = "MCP79/7A HDMI",
	{ .id = 0x10de0007, .name = "MCP79/7A HDMI",
	  .patch = patch_nvhdmi_8ch_7x },
	  .patch = patch_nvhdmi_8ch_7x },
	{ .id = 0x10de000c, .name = "MCP89 HDMI",
	{ .id = 0x10de000a, .name = "GT220 HDMI",
	  .patch = patch_nvhdmi_8ch_89 },
	  .patch = patch_nvhdmi_8ch_89 },
	{ .id = 0x10de000b, .name = "GT21x HDMI",
	{ .id = 0x10de000b, .name = "GT21x HDMI",
	  .patch = patch_nvhdmi_8ch_89 },
	  .patch = patch_nvhdmi_8ch_89 },
	{ .id = 0x10de000c, .name = "MCP89 HDMI",
	  .patch = patch_nvhdmi_8ch_89 },
	{ .id = 0x10de000d, .name = "GT240 HDMI",
	{ .id = 0x10de000d, .name = "GT240 HDMI",
	  .patch = patch_nvhdmi_8ch_89 },
	  .patch = patch_nvhdmi_8ch_89 },
	{ .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi_2ch },
	{ .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi_2ch },
	{} /* terminator */
	{} /* terminator */
};
};


@@ -564,11 +566,12 @@ MODULE_ALIAS("snd-hda-codec-id:10de0003");
MODULE_ALIAS("snd-hda-codec-id:10de0005");
MODULE_ALIAS("snd-hda-codec-id:10de0005");
MODULE_ALIAS("snd-hda-codec-id:10de0006");
MODULE_ALIAS("snd-hda-codec-id:10de0006");
MODULE_ALIAS("snd-hda-codec-id:10de0007");
MODULE_ALIAS("snd-hda-codec-id:10de0007");
MODULE_ALIAS("snd-hda-codec-id:10de0067");
MODULE_ALIAS("snd-hda-codec-id:10de000a");
MODULE_ALIAS("snd-hda-codec-id:10de8001");
MODULE_ALIAS("snd-hda-codec-id:10de000c");
MODULE_ALIAS("snd-hda-codec-id:10de000b");
MODULE_ALIAS("snd-hda-codec-id:10de000b");
MODULE_ALIAS("snd-hda-codec-id:10de000c");
MODULE_ALIAS("snd-hda-codec-id:10de000d");
MODULE_ALIAS("snd-hda-codec-id:10de000d");
MODULE_ALIAS("snd-hda-codec-id:10de0067");
MODULE_ALIAS("snd-hda-codec-id:10de8001");


MODULE_LICENSE("GPL");
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("NVIDIA HDMI HD-audio codec");
MODULE_DESCRIPTION("NVIDIA HDMI HD-audio codec");
Loading