aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.osdl.org>2007-01-09 12:40:34 -0500
committerLinus Torvalds <torvalds@woody.osdl.org>2007-01-09 12:40:34 -0500
commit656829e2d052b1da4a72aa2ac39ad733a78530ce (patch)
treedd94ceb1177bc56302dbf21b94def49a92b26c20
parent76a2f047880c2c7779f8950c50ee8f3855a5e6df (diff)
parenta037b0a43f6abafc4f725f7c7f46d577d1c44c96 (diff)
Merge branch 'linus' of master.kernel.org:/pub/scm/linux/kernel/git/perex/alsa
* 'linus' of master.kernel.org:/pub/scm/linux/kernel/git/perex/alsa: [ALSA] version 1.0.14rc1 [ALSA] usbaudio - Fix kobject_add() error at reconnection [ALSA] usb: usbmixer error path fix [ALSA] _snd_cmipci_uswitch_put doesn't set zero flags [ALSA] hda-codec - Fix NULL dereference in generic hda code [ALSA] hda_intel: ALSA HD Audio patch for Intel ICH9 [ALSA] usb-audio: work around wrong frequency in CM6501 descriptors [ALSA] Fix potential NULL pointer dereference in echoaudio midi [ALSA] Audio: Add nvidia HD Audio controllers of MCP67 support to hda_intel.c
-rw-r--r--include/sound/version.h2
-rw-r--r--sound/pci/cmipci.c3
-rw-r--r--sound/pci/echoaudio/midi.c6
-rw-r--r--sound/pci/hda/hda_generic.c5
-rw-r--r--sound/pci/hda/hda_intel.c14
-rw-r--r--sound/usb/usbaudio.c10
-rw-r--r--sound/usb/usbmixer.c2
7 files changed, 30 insertions, 12 deletions
diff --git a/include/sound/version.h b/include/sound/version.h
index 2949b9b991b5..20f7babad514 100644
--- a/include/sound/version.h
+++ b/include/sound/version.h
@@ -1,3 +1,3 @@
1/* include/version.h. Generated by alsa/ksync script. */ 1/* include/version.h. Generated by alsa/ksync script. */
2#define CONFIG_SND_VERSION "1.0.14rc1" 2#define CONFIG_SND_VERSION "1.0.14rc1"
3#define CONFIG_SND_DATE " (Wed Dec 20 08:11:48 2006 UTC)" 3#define CONFIG_SND_DATE " (Tue Jan 09 09:56:17 2007 UTC)"
diff --git a/sound/pci/cmipci.c b/sound/pci/cmipci.c
index 71c58df4af28..70face7e1048 100644
--- a/sound/pci/cmipci.c
+++ b/sound/pci/cmipci.c
@@ -2198,7 +2198,8 @@ static int _snd_cmipci_uswitch_put(struct snd_kcontrol *kcontrol,
2198 val = inb(cm->iobase + args->reg); 2198 val = inb(cm->iobase + args->reg);
2199 else 2199 else
2200 val = snd_cmipci_read(cm, args->reg); 2200 val = snd_cmipci_read(cm, args->reg);
2201 change = (val & args->mask) != (ucontrol->value.integer.value[0] ? args->mask : 0); 2201 change = (val & args->mask) != (ucontrol->value.integer.value[0] ?
2202 args->mask_on : (args->mask & ~args->mask_on));
2202 if (change) { 2203 if (change) {
2203 val &= ~args->mask; 2204 val &= ~args->mask;
2204 if (ucontrol->value.integer.value[0]) 2205 if (ucontrol->value.integer.value[0])
diff --git a/sound/pci/echoaudio/midi.c b/sound/pci/echoaudio/midi.c
index e31f0f11e3a8..91f5bff66d3f 100644
--- a/sound/pci/echoaudio/midi.c
+++ b/sound/pci/echoaudio/midi.c
@@ -213,7 +213,7 @@ static void snd_echo_midi_output_write(unsigned long data)
213 sent = bytes = 0; 213 sent = bytes = 0;
214 spin_lock_irqsave(&chip->lock, flags); 214 spin_lock_irqsave(&chip->lock, flags);
215 chip->midi_full = 0; 215 chip->midi_full = 0;
216 if (chip->midi_out && !snd_rawmidi_transmit_empty(chip->midi_out)) { 216 if (!snd_rawmidi_transmit_empty(chip->midi_out)) {
217 bytes = snd_rawmidi_transmit_peek(chip->midi_out, buf, 217 bytes = snd_rawmidi_transmit_peek(chip->midi_out, buf,
218 MIDI_OUT_BUFFER_SIZE - 1); 218 MIDI_OUT_BUFFER_SIZE - 1);
219 DE_MID(("Try to send %d bytes...\n", bytes)); 219 DE_MID(("Try to send %d bytes...\n", bytes));
@@ -264,9 +264,11 @@ static void snd_echo_midi_output_trigger(struct snd_rawmidi_substream *substream
264 } 264 }
265 } else { 265 } else {
266 if (chip->tinuse) { 266 if (chip->tinuse) {
267 del_timer(&chip->timer);
268 chip->tinuse = 0; 267 chip->tinuse = 0;
268 spin_unlock_irq(&chip->lock);
269 del_timer_sync(&chip->timer);
269 DE_MID(("Timer removed\n")); 270 DE_MID(("Timer removed\n"));
271 return;
270 } 272 }
271 } 273 }
272 spin_unlock_irq(&chip->lock); 274 spin_unlock_irq(&chip->lock);
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c
index 97e9af130b71..1589d2f2917f 100644
--- a/sound/pci/hda/hda_generic.c
+++ b/sound/pci/hda/hda_generic.c
@@ -485,8 +485,9 @@ static const char *get_input_type(struct hda_gnode *node, unsigned int *pinctl)
485 return "Front Aux"; 485 return "Front Aux";
486 return "Aux"; 486 return "Aux";
487 case AC_JACK_MIC_IN: 487 case AC_JACK_MIC_IN:
488 if (node->pin_caps & 488 if (pinctl &&
489 (AC_PINCAP_VREF_80 << AC_PINCAP_VREF_SHIFT)) 489 (node->pin_caps &
490 (AC_PINCAP_VREF_80 << AC_PINCAP_VREF_SHIFT)))
490 *pinctl |= AC_PINCTL_VREF_80; 491 *pinctl |= AC_PINCTL_VREF_80;
491 if ((location & 0x0f) == AC_JACK_LOC_FRONT) 492 if ((location & 0x0f) == AC_JACK_LOC_FRONT)
492 return "Front Mic"; 493 return "Front Mic";
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 9fd34f85cad5..1a7e82104bb9 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -83,6 +83,7 @@ MODULE_SUPPORTED_DEVICE("{{Intel, ICH6},"
83 "{Intel, ICH7}," 83 "{Intel, ICH7},"
84 "{Intel, ESB2}," 84 "{Intel, ESB2},"
85 "{Intel, ICH8}," 85 "{Intel, ICH8},"
86 "{Intel, ICH9},"
86 "{ATI, SB450}," 87 "{ATI, SB450},"
87 "{ATI, SB600}," 88 "{ATI, SB600},"
88 "{ATI, RS600}," 89 "{ATI, RS600},"
@@ -1711,6 +1712,8 @@ static struct pci_device_id azx_ids[] = {
1711 { 0x8086, 0x27d8, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH7 */ 1712 { 0x8086, 0x27d8, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH7 */
1712 { 0x8086, 0x269a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ESB2 */ 1713 { 0x8086, 0x269a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ESB2 */
1713 { 0x8086, 0x284b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH8 */ 1714 { 0x8086, 0x284b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH8 */
1715 { 0x8086, 0x293e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH9 */
1716 { 0x8086, 0x293f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH9 */
1714 { 0x1002, 0x437b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATI }, /* ATI SB450 */ 1717 { 0x1002, 0x437b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATI }, /* ATI SB450 */
1715 { 0x1002, 0x4383, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATI }, /* ATI SB600 */ 1718 { 0x1002, 0x4383, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATI }, /* ATI SB600 */
1716 { 0x1002, 0x793b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATIHDMI }, /* ATI RS600 HDMI */ 1719 { 0x1002, 0x793b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATIHDMI }, /* ATI RS600 HDMI */
@@ -1718,9 +1721,14 @@ static struct pci_device_id azx_ids[] = {
1718 { 0x1106, 0x3288, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_VIA }, /* VIA VT8251/VT8237A */ 1721 { 0x1106, 0x3288, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_VIA }, /* VIA VT8251/VT8237A */
1719 { 0x1039, 0x7502, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_SIS }, /* SIS966 */ 1722 { 0x1039, 0x7502, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_SIS }, /* SIS966 */
1720 { 0x10b9, 0x5461, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ULI }, /* ULI M5461 */ 1723 { 0x10b9, 0x5461, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ULI }, /* ULI M5461 */
1721 { 0x10de, 0x026c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA 026c */ 1724 { 0x10de, 0x026c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP51 */
1722 { 0x10de, 0x0371, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA 0371 */ 1725 { 0x10de, 0x0371, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP55 */
1723 { 0x10de, 0x03f0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA 03f0 */ 1726 { 0x10de, 0x03e4, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP61 */
1727 { 0x10de, 0x03f0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP61 */
1728 { 0x10de, 0x044a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP65 */
1729 { 0x10de, 0x044b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP65 */
1730 { 0x10de, 0x055c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP67 */
1731 { 0x10de, 0x055d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP67 */
1724 { 0, } 1732 { 0, }
1725}; 1733};
1726MODULE_DEVICE_TABLE(pci, azx_ids); 1734MODULE_DEVICE_TABLE(pci, azx_ids);
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c
index 3d7f36fb4cf0..19bdcc74c96c 100644
--- a/sound/usb/usbaudio.c
+++ b/sound/usb/usbaudio.c
@@ -2471,7 +2471,13 @@ static int parse_audio_format_rates(struct snd_usb_audio *chip, struct audioform
2471 fp->nr_rates = nr_rates; 2471 fp->nr_rates = nr_rates;
2472 fp->rate_min = fp->rate_max = combine_triple(&fmt[8]); 2472 fp->rate_min = fp->rate_max = combine_triple(&fmt[8]);
2473 for (r = 0, idx = offset + 1; r < nr_rates; r++, idx += 3) { 2473 for (r = 0, idx = offset + 1; r < nr_rates; r++, idx += 3) {
2474 unsigned int rate = fp->rate_table[r] = combine_triple(&fmt[idx]); 2474 unsigned int rate = combine_triple(&fmt[idx]);
2475 /* C-Media CM6501 mislabels its 96 kHz altsetting */
2476 if (rate == 48000 && nr_rates == 1 &&
2477 chip->usb_id == USB_ID(0x0d8c, 0x0201) &&
2478 fp->altsetting == 5 && fp->maxpacksize == 392)
2479 rate = 96000;
2480 fp->rate_table[r] = rate;
2475 if (rate < fp->rate_min) 2481 if (rate < fp->rate_min)
2476 fp->rate_min = rate; 2482 fp->rate_min = rate;
2477 else if (rate > fp->rate_max) 2483 else if (rate > fp->rate_max)
@@ -3280,6 +3286,7 @@ static void snd_usb_audio_create_proc(struct snd_usb_audio *chip)
3280 3286
3281static int snd_usb_audio_free(struct snd_usb_audio *chip) 3287static int snd_usb_audio_free(struct snd_usb_audio *chip)
3282{ 3288{
3289 usb_chip[chip->index] = NULL;
3283 kfree(chip); 3290 kfree(chip);
3284 return 0; 3291 return 0;
3285} 3292}
@@ -3541,7 +3548,6 @@ static void snd_usb_audio_disconnect(struct usb_device *dev, void *ptr)
3541 list_for_each(p, &chip->mixer_list) { 3548 list_for_each(p, &chip->mixer_list) {
3542 snd_usb_mixer_disconnect(p); 3549 snd_usb_mixer_disconnect(p);
3543 } 3550 }
3544 usb_chip[chip->index] = NULL;
3545 mutex_unlock(&register_mutex); 3551 mutex_unlock(&register_mutex);
3546 snd_card_free_when_closed(card); 3552 snd_card_free_when_closed(card);
3547 } else { 3553 } else {
diff --git a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c
index e74eb1bc8d87..7b3bf3545a3b 100644
--- a/sound/usb/usbmixer.c
+++ b/sound/usb/usbmixer.c
@@ -1526,7 +1526,7 @@ static int parse_audio_selector_unit(struct mixer_build *state, int unitid, unsi
1526 namelist[i] = kmalloc(MAX_ITEM_NAME_LEN, GFP_KERNEL); 1526 namelist[i] = kmalloc(MAX_ITEM_NAME_LEN, GFP_KERNEL);
1527 if (! namelist[i]) { 1527 if (! namelist[i]) {
1528 snd_printk(KERN_ERR "cannot malloc\n"); 1528 snd_printk(KERN_ERR "cannot malloc\n");
1529 while (--i > 0) 1529 while (i--)
1530 kfree(namelist[i]); 1530 kfree(namelist[i]);
1531 kfree(namelist); 1531 kfree(namelist);
1532 kfree(cval); 1532 kfree(cval);