Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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: hda - Compaq Presario CQ60 patching for Conexant
sound: usb-audio: make the MotU Fastlane work again
ALSA: Enable PCM hw_ptr_jiffies check only in xrun_debug mode
ALSA: Fix invalid jiffies check after pause

+34 -6
+5
Documentation/sound/alsa/Procfile.txt
··· 104 104 When this value is greater than 1, the driver will show the 105 105 stack trace additionally. This may help the debugging. 106 106 107 + Since 2.6.30, this option also enables the hwptr check using 108 + jiffies. This detects spontaneous invalid pointer callback 109 + values, but can be lead to too much corrections for a (mostly 110 + buggy) hardware that doesn't give smooth pointer updates. 111 + 107 112 card*/pcm*/sub*/info 108 113 The general information of this PCM sub-stream. 109 114
+8 -2
sound/core/pcm_lib.c
··· 249 249 new_hw_ptr = hw_base + pos; 250 250 } 251 251 } 252 + 253 + /* Do jiffies check only in xrun_debug mode */ 254 + if (!xrun_debug(substream)) 255 + goto no_jiffies_check; 256 + 252 257 /* Skip the jiffies check for hardwares with BATCH flag. 253 258 * Such hardware usually just increases the position at each IRQ, 254 259 * thus it can't give any strange position. ··· 341 336 hw_base = 0; 342 337 new_hw_ptr = hw_base + pos; 343 338 } 344 - if (((delta * HZ) / runtime->rate) > jdelta + HZ/100) { 339 + /* Do jiffies check only in xrun_debug mode */ 340 + if (xrun_debug(substream) && 341 + ((delta * HZ) / runtime->rate) > jdelta + HZ/100) { 345 342 hw_ptr_error(substream, 346 343 "hw_ptr skipping! " 347 344 "(pos=%ld, delta=%ld, period=%ld, jdelta=%lu/%lu)\n", ··· 1485 1478 runtime->status->hw_ptr %= runtime->buffer_size; 1486 1479 else 1487 1480 runtime->status->hw_ptr = 0; 1488 - runtime->hw_ptr_jiffies = jiffies; 1489 1481 snd_pcm_stream_unlock_irqrestore(substream, flags); 1490 1482 return 0; 1491 1483 }
+6
sound/core/pcm_native.c
··· 848 848 { 849 849 struct snd_pcm_runtime *runtime = substream->runtime; 850 850 snd_pcm_trigger_tstamp(substream); 851 + runtime->hw_ptr_jiffies = jiffies; 851 852 runtime->status->state = state; 852 853 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK && 853 854 runtime->silence_size > 0) ··· 962 961 { 963 962 if (substream->runtime->trigger_master != substream) 964 963 return 0; 964 + /* The jiffies check in snd_pcm_update_hw_ptr*() is done by 965 + * a delta betwen the current jiffies, this gives a large enough 966 + * delta, effectively to skip the check once. 967 + */ 968 + substream->runtime->hw_ptr_jiffies = jiffies - HZ * 1000; 965 969 return substream->ops->trigger(substream, 966 970 push ? SNDRV_PCM_TRIGGER_PAUSE_PUSH : 967 971 SNDRV_PCM_TRIGGER_PAUSE_RELEASE);
+1
sound/pci/hda/patch_conexant.c
··· 1848 1848 1849 1849 static struct snd_pci_quirk cxt5051_cfg_tbl[] = { 1850 1850 SND_PCI_QUIRK(0x103c, 0x30cf, "HP DV6736", CXT5051_HP_DV6736), 1851 + SND_PCI_QUIRK(0x103c, 0x360b, "Compaq Presario CQ60", CXT5051_HP), 1851 1852 SND_PCI_QUIRK(0x14f1, 0x0101, "Conexant Reference board", 1852 1853 CXT5051_LAPTOP), 1853 1854 SND_PCI_QUIRK(0x14f1, 0x5051, "HP Spartan 1.1", CXT5051_HP),
+1 -1
sound/usb/usbaudio.c
··· 3347 3347 [QUIRK_MIDI_YAMAHA] = snd_usb_create_midi_interface, 3348 3348 [QUIRK_MIDI_MIDIMAN] = snd_usb_create_midi_interface, 3349 3349 [QUIRK_MIDI_NOVATION] = snd_usb_create_midi_interface, 3350 - [QUIRK_MIDI_RAW] = snd_usb_create_midi_interface, 3350 + [QUIRK_MIDI_FASTLANE] = snd_usb_create_midi_interface, 3351 3351 [QUIRK_MIDI_EMAGIC] = snd_usb_create_midi_interface, 3352 3352 [QUIRK_MIDI_CME] = snd_usb_create_midi_interface, 3353 3353 [QUIRK_AUDIO_STANDARD_INTERFACE] = create_standard_audio_quirk,
+1 -1
sound/usb/usbaudio.h
··· 153 153 QUIRK_MIDI_YAMAHA, 154 154 QUIRK_MIDI_MIDIMAN, 155 155 QUIRK_MIDI_NOVATION, 156 - QUIRK_MIDI_RAW, 156 + QUIRK_MIDI_FASTLANE, 157 157 QUIRK_MIDI_EMAGIC, 158 158 QUIRK_MIDI_CME, 159 159 QUIRK_MIDI_US122L,
+11 -1
sound/usb/usbmidi.c
··· 1778 1778 umidi->usb_protocol_ops = &snd_usbmidi_novation_ops; 1779 1779 err = snd_usbmidi_detect_per_port_endpoints(umidi, endpoints); 1780 1780 break; 1781 - case QUIRK_MIDI_RAW: 1781 + case QUIRK_MIDI_FASTLANE: 1782 1782 umidi->usb_protocol_ops = &snd_usbmidi_raw_ops; 1783 + /* 1784 + * Interface 1 contains isochronous endpoints, but with the same 1785 + * numbers as in interface 0. Since it is interface 1 that the 1786 + * USB core has most recently seen, these descriptors are now 1787 + * associated with the endpoint numbers. This will foul up our 1788 + * attempts to submit bulk/interrupt URBs to the endpoints in 1789 + * interface 0, so we have to make sure that the USB core looks 1790 + * again at interface 0 by calling usb_set_interface() on it. 1791 + */ 1792 + usb_set_interface(umidi->chip->dev, 0, 0); 1783 1793 err = snd_usbmidi_detect_per_port_endpoints(umidi, endpoints); 1784 1794 break; 1785 1795 case QUIRK_MIDI_EMAGIC:
+1 -1
sound/usb/usbquirks.h
··· 1868 1868 .data = & (const struct snd_usb_audio_quirk[]) { 1869 1869 { 1870 1870 .ifnum = 0, 1871 - .type = QUIRK_MIDI_RAW 1871 + .type = QUIRK_MIDI_FASTLANE 1872 1872 }, 1873 1873 { 1874 1874 .ifnum = 1,