1. 15 Mar, 2012 1 commit
  2. 27 Sep, 2011 1 commit
  3. 14 Sep, 2011 1 commit
  4. 12 Sep, 2011 1 commit
    • Pierre-Louis Bossart's avatar
      ALSA: usb: refine delay information with USB frame counter · 294c4fb8
      Pierre-Louis Bossart authored
      
      
      Existing code only updates the audio delay when URBs were
      submitted/retired. This can introduce an uncertainty of 8ms
      on the number of samples played out with the default settings,
      and a lot more when URBs convey more packets to reduce the
      interrupt rate and power consumption.
      
      This patch relies on the USB frame counter to reduce the
      uncertainty to less than 2ms worst-case. The delay information
      essentially becomes independent of the URB size and number of
      packets. This should help applications like PulseAudio which
      require accurate audio timing. Clemens Ladisch reported
      a decrease of mplayer's A-V difference from nrpacks down to at
      most 1ms.
      
      Thanks to Clemens for also pointing out that the implementation
      of frame counters varies between different HCDs. Only the
      8 lowest-bits are used to estimate the delay.
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      [clemens: changed debug code]
      Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      294c4fb8
  5. 11 Mar, 2011 1 commit
  6. 23 Feb, 2011 1 commit
    • Takashi Iwai's avatar
      ALSA: usb-audio: fix oops due to cleanup race when disconnecting · 382225e6
      Takashi Iwai authored
      When a USB audio device is disconnected, snd_usb_audio_disconnect()
      kills all audio URBs.  At the same time, the application, after being
      notified of the disconnection, might close the device, in which case
      ALSA calls the .hw_free callback, which should free the URBs too.
      
      Commit de1b8b93
      
       "[ALSA] Fix hang-up at disconnection of usb-audio"
      prevented snd_usb_hw_free() from freeing the URBs to avoid a hang that
      resulted from this race, but this introduced another race because the
      URB callbacks could now be executed after snd_usb_hw_free() has
      returned, and try to access already freed data.
      
      Fix the first race by introducing a mutex to serialize the disconnect
      callback and all PCM callbacks that manage URBs (hw_free and hw_params).
      Reported-and-tested-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@intel.com>
      Cc: <stable@kernel.org>
      [CL: also serialize hw_params callback]
      Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      382225e6
  7. 01 Nov, 2010 1 commit
  8. 27 Oct, 2010 1 commit
    • Clemens Ladisch's avatar
      ALSA: usb-audio: automatically detect feedback format · 89e1e66d
      Clemens Ladisch authored
      
      
      There are two USB Audio Class specifications (v1 and v2), but neither of
      them clearly defines the feedback format for high-speed UAC v1 devices.
      Add to this whatever the Creative and M-Audio firmware writers have been
      smoking, and it becomes impossible to predict the exact feedback format
      used by a particular device.
      
      Therefore, automatically detect the feedback format by looking at the
      magnitude of the first received feedback value.
      
      Also, this allows us to get rid of some special cases for E-Mu devices.
      Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      89e1e66d
  9. 03 Sep, 2010 1 commit
    • Clemens Ladisch's avatar
      ALSA: usb-audio: fix detection of vendor-specific device protocol settings · a2acad82
      Clemens Ladisch authored
      
      
      The Audio Class v2 support code in 2.6.35 added checks for the
      bInterfaceProtocol field.  However, there are devices (usually those
      detected by vendor-specific quirks) that do not have one of the
      predefined values in this field, which made the driver reject them.
      
      To fix this regression, restore the old behaviour, i.e., assume that
      a device with an unknown bInterfaceProtocol field (other than
      UAC_VERSION_2) has more or less UAC-v1-compatible descriptors.
      
      [compile warning fixes by tiwai]
      Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
      Cc: Daniel Mack <daniel@caiaq.de>
      Cc: <stable@kernel.org>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      a2acad82
  10. 14 Aug, 2010 1 commit
    • Paul Zimmerman's avatar
      ALSA: usb: USB3 SuperSpeed sound support · 4f4e8f69
      Paul Zimmerman authored
      
      
      This is V2 of the patch, after feedback from Clemens and Daniel.
      
      This patch adds SuperSpeed support to the USB drivers under sound/. It adds
      tests for USB_SPEED_SUPER to the appropriate places that check for the USB
      speed.
      
      This patch has been tested with our SS USB3 device emulating a set of Yamaha
      speakers and a Logitech microphone, but with the descriptors modified to add
      USB3 support. It has also been tested with the real speakers and microphone,
      to make sure that USB2 devices still work.
      Signed-off-by: default avatarPaul Zimmerman <paulz@synopsys.com>
      Cc: Clemens Ladisch <clemens@ladisch.de>
      Cc: Daniel Mack <daniel@caiaq.de>
      Cc: Greg Kroah-Hartman <gregkh@suse.de>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      4f4e8f69
  11. 12 Jul, 2010 1 commit
  12. 31 May, 2010 1 commit
    • Daniel Mack's avatar
      ALSA: usb-audio: parse clock topology of UAC2 devices · 79f920fb
      Daniel Mack authored
      
      
      Audio devices which comply to the UAC2 standard can export complex clock
      topologies in its descriptors and set up links between them.
      
      The entities that are defined are
      
       - clock sources, which define the end-leafs.
       - clock selectors, which act as switch to select one out of many
         possible clocks sources.
       - clock multipliers, which have an input clock source, and act as clock
         source again. They can be used to derive one clock from another.
      
      All sample rate changes, clock validity queries and the like must go to
      clock source elements, while clock selectors and multipliers can be used
      as terminal clock source.
      
      The following patch adds a parser for these elements and functions to
      iterate over the tree and find the leaf nodes (clock sources).
      
      The samplerate set functions were moved to the new clock.c file.
      Signed-off-by: default avatarDaniel Mack <daniel@caiaq.de>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      79f920fb
  13. 27 May, 2010 1 commit
  14. 29 Mar, 2010 1 commit
  15. 12 Mar, 2010 1 commit
  16. 05 Mar, 2010 4 commits