Skip to content
Snippets Groups Projects
  1. May 29, 2018
    • Takashi Iwai's avatar
      ALSA: usb-audio: Allow non-vmalloc buffer for PCM buffers · f274baa4
      Takashi Iwai authored
      
      Currently, USB-audio driver allocates the PCM buffer via vmalloc(), as
      this serves merely as an intermediate buffer that is copied to each
      URB transfer buffer.  This works well in general on x86, but on some
      archs this may result in cache coherency issues when mmap is used.
      OTOH, it works also on such arch unless mmap is used.
      
      This patch is a step for mitigating the inconvenience; a new module
      option "use_vmalloc" is provided so that user can choose to allocate
      the DMA coherent buffer instead of the existing vmalloc buffer.
      The drawback is that it'd be the standard dma_alloc_coherent() calls
      and the system would require contiguous pages on non-x86 archs.
      
      Note that it's a global option and not dynamically switchable since
      the buffer is pre-allocated at the probe time.  In theory, it's
      possible to be switchable, but it'd be trickier and racier.
      
      As default use_vmalloc option is set to true, so that the old behavior
      is kept.  For allowing the coherent mmap on ARM or MIPS, pass
      use_vmalloc=0 option explicitly.
      
      Reported-and-tested-by: default avatarDaniel Danzberger <daniel@dd-wrt.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      f274baa4
  2. May 13, 2018
    • Ruslan Bilovol's avatar
      ALSA: usb: add UAC3 BADD profiles support · 17156f23
      Ruslan Bilovol authored
      
      Recently released USB Audio Class 3.0 specification
      contains BADD (Basic Audio Device Definition) document
      which describes pre-defined UAC3 configurations.
      
      BADD support is mandatory for UAC3 devices, it should be
      implemented as a separate USB device configuration.
      As per BADD document, class-specific descriptors
      shall not be included in the Device’s Configuration
      descriptor ("inferred"), but host can guess them
      from BADD profile number, number of endpoints and
      their max packed sizes.
      
      This patch adds support of all BADD profiles from the spec
      
      Signed-off-by: default avatarRuslan Bilovol <ruslan.bilovol@gmail.com>
      Tested-by: default avatarJorge Sanjuan <jorge.sanjuan@codethink.co.uk>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      17156f23
  3. May 02, 2018
    • Takashi Iwai's avatar
      ALSA: usb-audio: Allow to override the longname string · 07eca5fc
      Takashi Iwai authored
      
      Historically USB-audio driver sets the card's longname field with the
      details of the device and the bus information.  It's good per se, but
      not preferable when it's referred as the identifier for UCM profile.
      
      This patch adds a quirk profile_name field to override the card's
      longname string to a pre-defined one, so that one can create a unique
      and consistent ID string for the specific USB device via a quirk table
      to be used as a UCM profile name.
      
      The patch does a slight code refactoring to split out the functions to
      set shortname and longname fields as well.
      
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      07eca5fc
    • Takashi Iwai's avatar
      ALSA: usb-audio: Add keep_iface flag · 8a463225
      Takashi Iwai authored
      
      Introduce a new flag to struct snd_usb_audio for allowing the device
      to skip usb_set_interface() calls at changing or closing the stream.
      As of this patch, the flag is nowhere set, so it's just a place
      holder.  The dynamic switching will be added in the following patch.
      
      A background information for this change:
      
      Dell WD15 dock with Realtek chip gives a very long pause at each time
      the driver changes the altset, which eventually happens at every PCM
      stream open/close and parameter change.  As the long pause happens in
      each usb_set_interface() call, there is nothing we can do as long as
      it's called.  The workaround is to reduce calling it as much as
      possible, and this flag indicates that behavior.
      
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      8a463225
  4. Apr 29, 2016
    • Takashi Iwai's avatar
      ALSA: usb-audio: Limit retrying sample rate reads · 57dd5414
      Takashi Iwai authored
      
      There are many USB audio devices with buggy firmware that don't react
      with the sample rate reading properly.  This often results in the
      flood of error messages and slowing down the operation.
      
      The sample rate read back is basically only for confirming the sample
      rate setup, and it's not critically important.  As a compromise, in
      this patch, we stop the sample rate read back once when the device
      gives errors more than tolerance (twice, as of now).  This should
      improve most of error cases while we still can catch the firmware
      bugginess.
      
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      57dd5414
  5. Mar 31, 2016
  6. Mar 03, 2016
  7. Nov 16, 2015
    • Clemens Ladisch's avatar
      ALSA: usb-audio: prevent CH345 multiport output SysEx corruption · 1ca8b201
      Clemens Ladisch authored
      
      The CH345 USB MIDI chip has two output ports.  However, they are
      multiplexed through one pin, and the number of ports cannot be reduced
      even for hardware that implements only one connector, so for those
      devices, data sent to either port ends up on the same hardware output.
      This becomes a problem when both ports are used at the same time, as
      longer MIDI commands (such as SysEx messages) are likely to be
      interrupted by messages from the other port, and thus to get lost.
      
      It would not be possible for the driver to detect how many ports the
      device actually has, except that in practice, _all_ devices built with
      the CH345 have only one port.  So we can just ignore the device's
      descriptors, and hardcode one output port.
      
      Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      1ca8b201
  8. Oct 19, 2015
    • Ricard Wanderlof's avatar
      ALSA: USB-audio: Add quirk for Zoom R16/24 playback · e0570446
      Ricard Wanderlof authored
      
      The Zoom R16/24 have a nonstandard playback format where each isochronous
      packet contains a length descriptor in the first four bytes. (Curiously,
      capture data does not contain this and requires no quirk.)
      
      The quirk involves adding the extra length descriptor whenever outgoing
      isochronous packets are generated, both in pcm.c (outgoing audio) and
      endpoint.c (silent data).
      
      In order to make the quirk as unintrusive as possible, for
      pcm.c:prepare_playback_urb(), the isochronous packet descriptors are
      initially set up in the same way no matter if the quirk is enabled or not.
      Once it is time to actually copy the data into the outgoing packet buffer
      (together with the added length descriptors) the isochronous descriptors
      are adjusted in order take the increased payload length into account.
      
      For endpoint.c:prepare_silent_urb() it makes more sense to modify the
      actual function, partly because the function is less complex to start with
      and partly because it is not as time-critical as prepare_playback_urb()
      (whose bulk is run with interrupts disabled), so the (minute) additional
      time spent in the non-quirk case is motivated by the simplicity of having
      a single function for all cases.
      
      The quirk is controlled by the new tx_length_quirk member in struct
      snd_usb_substream and struct snd_usb_audio, which is conveyed to pcm.c
      and endpoint.c from quirks.c in a similar manner to the txfr_quirk member
      in the same structs.
      
      In contrast to txfr_quirk however, the quirk is enabled directly in
      quirks.c:create_standard_audio_quirk() by checking the USB ID in that
      function. Another option would be to introduce a new
      QUIRK_AUDIO_ZOOM_INTERFACE or somesuch, which would have made the quirk
      very plain to see in the quirk table, but it was felt that the additional
      code needed to implement it this way would just make the implementation
      more complex with no real gain.
      
      Tested with a Zoom R16, both by doing capture and playback separately
      using arecord and aplay (8 channel capture and 2 channel playback,
      respectively), as well as capture and playback together using Ardour, as
      well as Audacity and Qtractor together with jackd.
      
      The R24 is reportedly compatible with the R16 when used as an audio
      interface. Both devices share the same USB ID and have the same number of
      inputs (8) and outputs (2). Therefore "R16/24" is mentioned throughout the
      patch.
      
      Regression tested using an Edirol UA-5 in both class compliant (16-bit)
      and "advanced" (24 bit, forces the use of quirks) modes.
      
      Signed-off-by: default avatarRicard Wanderlof <ricardw@axis.com>
      Tested-by: default avatarPanu Matilainen <pmatilai@laiskiainen.org>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      e0570446
  9. Aug 26, 2015
    • Takashi Iwai's avatar
      ALSA: usb-audio: Replace probing flag with active refcount · a6da499b
      Takashi Iwai authored
      
      We can use active refcount for preventing autopm during probe.
      
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      a6da499b
    • Takashi Iwai's avatar
      ALSA: usb-audio: Avoid nested autoresume calls · 47ab1545
      Takashi Iwai authored
      
      After the recent fix of runtime PM for USB-audio driver, we got a
      lockdep warning like:
      
        =============================================
        [ INFO: possible recursive locking detected ]
        4.2.0-rc8+ #61 Not tainted
        ---------------------------------------------
        pulseaudio/980 is trying to acquire lock:
         (&chip->shutdown_rwsem){.+.+.+}, at: [<ffffffffa0355dac>] snd_usb_autoresume+0x1d/0x52 [snd_usb_audio]
        but task is already holding lock:
         (&chip->shutdown_rwsem){.+.+.+}, at: [<ffffffffa0355dac>] snd_usb_autoresume+0x1d/0x52 [snd_usb_audio]
      
      This comes from snd_usb_autoresume() invoking down_read() and it's
      used in a nested way.  Although it's basically safe, per se (as these
      are read locks), it's better to reduce such spurious warnings.
      
      The read lock is needed to guarantee the execution of "shutdown"
      (cleanup at disconnection) task after all concurrent tasks are
      finished.  This can be implemented in another better way.
      
      Also, the current check of chip->in_pm isn't good enough for
      protecting the racy execution of multiple auto-resumes.
      
      This patch rewrites the logic of snd_usb_autoresume() & co; namely,
      - The recursive call of autopm is avoided by the new refcount,
        chip->active.  The chip->in_pm flag is removed accordingly.
      - Instead of rwsem, another refcount, chip->usage_count, is introduced
        for tracking the period to delay the shutdown procedure.  At
        the last clear of this refcount, wake_up() to the shutdown waiter is
        called.
      - The shutdown flag is replaced with shutdown atomic count; this is
        for reducing the lock.
      - Two new helpers are introduced to simplify the management of these
        refcounts; snd_usb_lock_shutdown() increases the usage_count, checks
        the shutdown state, and does autoresume.  snd_usb_unlock_shutdown()
        does the opposite.  Most of mixer and other codes just need this,
        and simply returns an error if it receives an error from lock.
      
      Fixes: 9003ebb1 ('ALSA: usb-audio: Fix runtime PM unbalance')
      Reported-and-tested-by: default avatarAlexnader Kuleshov <kuleshovmail@gmail.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      47ab1545
  10. May 02, 2014
    • Takashi Iwai's avatar
      ALSA: usb-audio: Fix deadlocks at resuming · 1ee23fe0
      Takashi Iwai authored
      
      The recent addition of the USB audio mixer suspend/resume may lead to
      deadlocks when the driver tries to call usb_autopm_get_interface()
      recursively, since the function tries to sync with the finish of the
      other calls.  For avoiding it, introduce a flag indicating the resume
      operation and avoids the recursive usb_autopm_get_interface() calls
      during the resume.
      
      Reported-and-tested-by: default avatarBryan Quigley <gquigs@gmail.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      1ee23fe0
  11. Feb 26, 2014
    • Takashi Iwai's avatar
      ALSA: usb-audio: Use standard printk helpers · 0ba41d91
      Takashi Iwai authored
      
      Convert with dev_err() and co from snd_printk(), etc.
      As there are too deep indirections (e.g. ep->chip->dev->dev),
      a few new local macros, usb_audio_err() & co, are introduced.
      
      Also, the device numbers in some messages are dropped, as they are
      shown in the prefix automatically.
      
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      0ba41d91
  12. Sep 26, 2013
    • Alan Stern's avatar
      ALSA: improve buffer size computations for USB PCM audio · 976b6c06
      Alan Stern authored
      
      This patch changes the way URBs are allocated and their sizes are
      determined for PCM playback in the snd-usb-audio driver.  Currently
      the driver allocates too few URBs for endpoints that don't use
      implicit sync, making underruns more likely to occur.  This may be a
      holdover from before I/O delays could be measured accurately; in any
      case, it is no longer necessary.
      
      The patch allocates as many URBs as possible, subject to four
      limitations:
      
      	The total number of URBs for the endpoint is not allowed to
      	exceed MAX_URBS (which the patch increases from 8 to 12).
      
      	The total number of packets per URB is not allowed to exceed
      	MAX_PACKS (or MAX_PACKS_HS for high-speed devices), which is
      	decreased from 20 to 6.
      
      	The total duration of queued data is not allowed to exceed
      	MAX_QUEUE, which is decreased from 24 ms to 18 ms.
      
      	The total number of ALSA frames in the output queue is not
      	allowed to exceed the ALSA buffer size.
      
      The last requirement is the hardest to implement.  Currently the
      number of URBs needed to fill a buffer cannot be determined in
      advance, because a buffer contains a fixed number of frames whereas
      the number of frames in an URB varies to match shifts in the device's
      clock rate.  To solve this problem, the patch changes the logic for
      deciding how many packets an URB should contain.  Rather than using as
      many as possible without exceeding an ALSA period boundary, now the
      driver uses only as many packets as needed to transfer a predetermined
      number of frames.  As a result, unless the device's clock has an
      exceedingly variable rate, the number of URBs making up each period
      (and hence each buffer) will remain constant.
      
      The overall effect of the patch is that playback works better in
      low-latency settings.  The user can still specify values for
      frames/period and periods/buffer that exceed the capabilities of the
      hardware, of course.  But for values that are within those
      capabilities, the performance will be improved.  For example, testing
      shows that a high-speed device can handle 32 frames/period and 3
      periods/buffer at 48 KHz, whereas the current driver starts to get
      glitchy at 64 frames/period and 2 periods/buffer.
      
      A side effect of these changes is that the "nrpacks" module parameter
      is no longer used.  The patch removes it.
      
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      CC: Clemens Ladisch <clemens@ladisch.de>
      Tested-by: default avatarDaniel Mack <zonque@gmail.com>
      Tested-by: default avatarEldad Zack <eldad@fogrefinery.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      976b6c06
  13. Jun 27, 2013
    • Clemens Ladisch's avatar
      ALSA: usb-audio: add support for many Roland/Yamaha devices · aafe77cc
      Clemens Ladisch authored
      
      Add quirks to detect the various vendor-specific descriptors used by
      Roland and Yamaha in most of their recent USB audio and MIDI devices.
      
      Together with the previous patch, this should add audio/MIDI support for
      the following USB devices:
      - Edirol motion dive .tokyo performance package
      - Roland MC-808 Synthesizer
      - Roland BK-7m Synthesizer
      - Roland VIMA JM-5/8 Synthesizer
      - Roland SP-555 Sequencer
      - Roland V-Synth GT Synthesizer
      - Roland Music Atelier AT-75/100/300/350C/500/800/900/900C Organ
      - Edirol V-Mixer M-200i/300/380/400/480/R-1000
      - BOSS GT-10B Effects Processor
      - Roland Fantom G6/G7/G8 Keyboard
      - Cakewalk Sonar V-Studio 20/100/700 Audio Interface
      - Roland GW-8 Keyboard
      - Roland AX-Synth Keyboard
      - Roland JUNO-Di/STAGE/Gi Keyboard
      - Roland VB-99 Effects Processor
      - Cakewalk UM-2G MIDI Interface
      - Roland A-500S Keyboard
      - Roland SD-50 Synthesizer
      - Roland OCTAPAD SPD-30 Controller
      - Roland Lucina AX-09 Synthesizer
      - BOSS BR-800 Digital Recorder
      - Roland DUO/TRI-CAPTURE (EX) Audio Interface
      - BOSS RC-300 Loop Station
      - Roland JUPITER-50/80 Keyboard
      - Roland R-26 Recorder
      - Roland SPD-SX Controller
      - BOSS JS-10 Audio Player
      - Roland TD-11/15/30 Drum Module
      - Roland A-49/88 Keyboard
      - Roland INTEGRA-7 Synthesizer
      - Roland R-88 Recorder
      
      Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
      aafe77cc
  14. Apr 04, 2013
  15. Jan 04, 2013
  16. Dec 19, 2012
    • Damien Zammit's avatar
      ALSA: usb-audio: Support for Digidesign Mbox 2 USB sound card: · cb99864d
      Damien Zammit authored
      
      This patch is the result of a lot of trial and error, since there are no specs
      available for the device.
      
      Full duplex support is provided, i.e. playback and recording in stereo.
      The format is hardcoded at 48000Hz @ 24 bit, which is the maximum that the
      device supports.  Also, MIDI in and MIDI out both work.
      
      Users will notice that the S/PDIF light also flashes when playback or recording
      is active.  I believe this means that S/PDIF input/output is simultaneously
      activated with the analogue i/o during use.
      But this particular functionality remains untested.
      
      Note that this particular version of the patch is so far untested on the
      physical hardware because I have not compiled a full kernel with the changes.
      However, extensive testing has been done by many users of the hardware
      who believe other versions of my patch have worked since circa 2009.
      
      [Modified to make a function static by tiwai]
      
      Signed-off-by: default avatarDamien Zammit <damien@zamaudio.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      cb99864d
  17. Nov 21, 2012
  18. Oct 30, 2012
  19. Apr 13, 2012
    • Daniel Mack's avatar
      ALSA: snd-usb: implement new endpoint streaming model · 8fdff6a3
      Daniel Mack authored
      
      This patch adds a new generic streaming logic for audio over USB.
      
      It defines a model (snd_usb_endpoint) that handles everything that
      is related to an USB endpoint and its streaming. There are functions to
      activate and deactivate an endpoint (which call usb_set_interface()),
      and to start and stop its URBs. It also has function pointers to be
      called when data was received or is about to be sent, and pointer to
      a sync slave (another snd_usb_endpoint) that is informed when data has
      been received.
      
      A snd_usb_endpoint knows about its state and implements a refcounting,
      so only the first user will actually start the URBs and only the last
      one to stop it will tear them down again.
      
      With this sort of abstraction, the actual streaming is decoupled from
      the pcm handling, which makes the "implicit feedback" mechanisms easy to
      implement.
      
      In order to split changes properly, this patch only adds the new
      implementation but leaves the old one around, so the the driver doesn't
      change its behaviour. The switch to actually use the new code is
      submitted separately.
      
      Signed-off-by: default avatarDaniel Mack <zonque@gmail.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      8fdff6a3
    • Daniel Mack's avatar
      ALSA: snd-usb: add snd_usb_audio-wide mutex · 596580d0
      Daniel Mack authored
      
      This is needed for new card-wide list operations.
      
      Signed-off-by: default avatarDaniel Mack <zonque@gmail.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      596580d0
  20. Aug 26, 2011
  21. May 25, 2011
  22. Mar 11, 2011
  23. Feb 23, 2011
    • 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
  24. Oct 22, 2010
  25. May 31, 2010
    • 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
  26. May 21, 2010
  27. Mar 05, 2010
    • Daniel Mack's avatar
      ALSA: usb-audio: refactor code · e5779998
      Daniel Mack authored
      
      Clean up the usb audio driver by factoring out a lot of functions to
      separate files. Code for procfs, quirks, urbs, format parsers etc all
      got a new home now.
      
      Moved almost all special quirk handling to quirks.c and introduced new
      generic functions to handle them, so the exceptions do not pollute the
      whole driver.
      
      Renamed usbaudio.c to card.c because this is what it actually does now.
      Renamed usbmidi.c to midi.c for namespace clarity.
      Removed more things from usbaudio.h.
      
      The non-standard drivers were adopted accordingly.
      
      Signed-off-by: default avatarDaniel Mack <daniel@caiaq.de>
      Cc: Clemens Ladisch <clemens@ladisch.de>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      e5779998
    • Daniel Mack's avatar
      ALSA: usb-audio: header file cleanups · 3e1aebef
      Daniel Mack authored
      
      Rename snd-usb-lib to snd-usbmidi-lib as MIDI functions are the only
      thing it actually contains. Introduce a new header file to only declare
      these functions.
      
      Introduced usbmixer.h for all functions exported by usbmixer.c.
      
      Signed-off-by: default avatarDaniel Mack <daniel@caiaq.de>
      Cc: Clemens Ladisch <clemens@ladisch.de>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      3e1aebef
  28. Mar 01, 2010
  29. Feb 23, 2010
    • Daniel Mack's avatar
      ALSA: usbaudio: consolidate header files · de48c7bc
      Daniel Mack authored
      
      Use the definitions from linux/usb/audio.h all over the ALSA USB audio
      driver and add some missing definitions there as well.
      
      Use the endpoint attribute macros from linux/usb/ch9 and remove the own
      things from sound/usb/usbaudio.h.
      
      Now things are also nicely prefixed which makes understanding the code
      easier.
      
      Signed-off-by: default avatarDaniel Mack <daniel@caiaq.de>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      de48c7bc
    • Daniel Mack's avatar
      ALSA: usbaudio: implement basic set of class v2.0 parser · 53ee98fe
      Daniel Mack authored
      
      This adds a number of parsers for audio class v2.0. In particular, the
      following internals are different and now handled by the code:
      
      * the number of streaming interfaces is now reported by an interface
        association descriptor. The old approach using a proprietary
        descriptor is deprecated.
      
      * The number of channels per interface is now stored in the AS_GENERAL
        descriptor (used to be part of the FORMAT_TYPE descriptor).
      
      * The list of supported sample rates is no longer stored in a variable
        length appendix of the format_type descriptor but is retrieved from
        the device using a class specific GET_RANGE command.
      
      * Supported sample formats are now reported as 32bit bitmap rather than
        a fixed value. For now, this is worked around by choosing just one of
        them.
      
      * A devices needs to have at least one CLOCK_SOURCE descriptor which
        denotes a clockID that is needed im the class request command.
      
      * Many descriptors (format_type, ...) have changed their layout. Handle
        this by casting the descriptors to the appropriate structs.
      
      Signed-off-by: default avatarDaniel Mack <daniel@caiaq.de>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      53ee98fe
    • Daniel Mack's avatar
      ALSA: usbaudio: introduce new types for audio class v2 · 8fee4aff
      Daniel Mack authored
      
      This patch adds some definitions for audio class v2.
      
      Unfortunately, the UNIT types PROCESSING_UNIT and EXTENSION_UNIT have
      different numerical representations in both standards, so there is need
      for a _V1 add-on now. usbmixer.c is changed accordingly.
      
      Signed-off-by: default avatarDaniel Mack <daniel@caiaq.de>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      8fee4aff
  30. Dec 28, 2009
  31. Dec 14, 2009
  32. Nov 24, 2009
Loading