15 Feb, 2020

1 commit

  • This patch adds support for Presonus Studio 1810c, a usb interface
    that's UAC2 compliant with a few quirks and a few extra hw-specific
    controls. I've tested all 3 altsettings and the added switch
    controls and they work as expected.

    More infos on the card:
    https://www.presonus.com/products/Studio-1810c

    Note that this work is based on packet inspection with
    usbmon. I just wanted to get this card to work for using
    it on our open-source radio station:
    https://github.com/UoC-Radio

    v2 address issues reported by Takashi:
    * Properly get/set enum type controls
    * Prevent race condition on switch_get/set
    * Various control naming changes
    * Various coding style fixes

    v3 improve readability of sample rate filtering
    and some other minor changes.

    Signed-off-by: Nick Kossifidis
    Link: https://lore.kernel.org/r/5e47481a.1c69fb81.befb3.8dac@mx.google.com
    Signed-off-by: Takashi Iwai

    Nick Kossifidis
     

22 Aug, 2019

2 commits


28 Jul, 2019

1 commit

  • Add mixer quirk for the Focusrite Scarlett 6i6, 18i8, and 18i20 Gen 2
    audio interfaces. Although the interfaces are USB compliant,
    additional input/output level controls and hardware routing/mixing
    functionality are available using proprietary USB requests.

    Signed-off-by: Geoffrey D. Bennett
    Signed-off-by: Takashi Iwai

    Geoffrey D. Bennett
     

22 Apr, 2019

1 commit

  • Media Device Allocator API to allows multiple drivers share a media device.
    This API solves a very common use-case for media devices where one physical
    device (an USB stick) provides both audio and video. When such media device
    exposes a standard USB Audio class, a proprietary Video class, two or more
    independent drivers will share a single physical USB bridge. In such cases,
    it is necessary to coordinate access to the shared resource.

    Using this API, drivers can allocate a media device with the shared struct
    device as the key. Once the media device is allocated by a driver, other
    drivers can get a reference to it. The media device is released when all
    the references are released.

    Change the ALSA driver to use the Media Controller API to share media
    resources with DVB, and V4L2 drivers on a AU0828 media device.

    The Media Controller specific initialization is done after sound card is
    registered. ALSA creates Media interface and entity function graph nodes
    for Control, Mixer, PCM Playback, and PCM Capture devices.

    snd_usb_hw_params() will call Media Controller enable source handler
    interface to request the media resource. If resource request is granted,
    it will release it from snd_usb_hw_free(). If resource is busy, -EBUSY is
    returned.

    Media specific cleanup is done in usb_audio_disconnect().

    Reviewed-by: Takashi Iwai
    Signed-off-by: Shuah Khan
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Shuah Khan
     

31 Jul, 2018

1 commit

  • Thee USB Audio Class 3 (UAC3) introduces Power Domains as a new
    feature to let a host turn individual parts of an audio function
    to different power states via USB requests. This lets the device
    get to know a bit amore about what the host is up to in order to
    optimize power consumption efficiently.

    The Power Domains are optional for UAC3 configuration but all
    UAC3 devices shall include at least one BADD configuration where
    the support for Power Domains is compulsory.

    This patch adds a set of features/helpers to parse these power
    domains and change their status.

    Signed-off-by: Jorge Sanjuan
    Signed-off-by: Takashi Iwai

    Jorge Sanjuan
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

20 Feb, 2017

1 commit


01 Apr, 2016

1 commit

  • Unfortunately, this patch caused several regressions at au0828 and
    snd-usb-audio, like this one:
    https://bugzilla.kernel.org/show_bug.cgi?id=115561

    It also showed several troubles at the MC core that handles pretty
    poorly the memory protections and data lifetime management.

    So, better to revert it and fix the core before reapplying this
    change.

    This reverts commit aebb2b89bff0 ("[media] sound/usb: Use Media
    Controller API to share media resources")'

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     

04 Mar, 2016

1 commit

  • Change ALSA driver to use Media Controller API to share media resources
    with DVB and V4L2 drivers on a AU0828 media device. Media Controller
    specific initialization is done after sound card is registered. ALSA
    creates Media interface and entity function graph nodes for Control,
    Mixer, PCM Playback, and PCM Capture devices.

    snd_usb_hw_params() will call Media Controller enable source handler
    interface to request the media resource. If resource request is
    granted, it will release it from snd_usb_hw_free(). If resource is
    busy, -EBUSY is returned.

    Media specific cleanup is done in usb_audio_disconnect().

    Signed-off-by: Shuah Khan
    Acked-by: Takashi Iwai
    Signed-off-by: Mauro Carvalho Chehab

    Shuah Khan
     

20 Jan, 2015

1 commit

  • Split to each individual driver for POD, PODHD, TonePort and Variax
    with a core LINE6 helper module. The new modules follow the standard
    ALSA naming rule with snd prefix: snd-usb-pod, snd-usb-podhd,
    snd-usb-toneport and snd-usb-variax, together with the corresponding
    CONFIG_SND_USB_* Kconfig items.

    Tested-by: Chris Rorvick
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

13 Jan, 2015

1 commit


13 Nov, 2014

1 commit

  • This code contains the Scarlett mixer interface code that was originally
    written by Tobias Hoffman and Robin Gareus. Because the device doesn't
    properly implement UAC2 this code adds a mixer quirk for the device.

    Changes from the original code include removing the metering code along with
    dead code and comments. Compiler warnings were fixed. The code to initialize
    the sampling rate was causing a crash this was fixed as discussed on the
    mailing list. Error, and info messages were convered to dev_err and dev_info
    interfaces. The custom scarlett_mixer_elem_info struct was replaced with the
    more generic usb_mixer_elem_info to be able to recycle more code from mixer.c.

    This patch also makes additional modifications based on upstream comments.
    Individual control creation functions are removed and a generic
    function is no used. Macros for function calls are removed to improve
    readability. Hardcoded control initialization is removed. Save to HW
    functionality has been removed. Strings for enums are created dynamically for
    the mixer. Strings used for controls are now SNDRV_CTL_ELEM_ID_NAME_MAXLEN
    length.

    Signed-off-by: Chris J Arges
    Signed-off-by: Takashi Iwai

    Chris J Arges
     

07 Apr, 2014

1 commit

  • This patch adds initial support for the Behringer BCD2000 USB DJ controller.
    At the moment, only the MIDI part of the device is working, i.e. knobs,
    buttons and LEDs.

    I also plan to add support for the audio part, but I assume that this will
    require more effort than the rather simple MIDI interface. Progress can be
    tracked at https://github.com/anyc/snd-usb-bcd2000.

    Signed-off-by: Mario Kicherer
    Reviewed-by: Daniel Mack
    Reviewed-by: Clemens Ladisch
    Signed-off-by: Takashi Iwai

    Mario Kicherer
     

24 Jun, 2013

1 commit

  • Add driver for M2Tech hiFace USB-SPDIF interface and compatible devices.

    M2Tech hiFace and compatible devices offer a Hi-End S/PDIF Output
    Interface, see http://www.m2tech.biz/hiface.html

    The supported products are:

    * M2Tech Young
    * M2Tech hiFace
    * M2Tech North Star
    * M2Tech W4S Young
    * M2Tech Corrson
    * M2Tech AUDIA
    * M2Tech SL Audio
    * M2Tech Empirical
    * M2Tech Rockna
    * M2Tech Pathos
    * M2Tech Metronome
    * M2Tech CAD
    * M2Tech Audio Esclusive
    * M2Tech Rotel
    * M2Tech Eeaudio
    * The Chord Company CHORD
    * AVA Group A/S Vitus

    Signed-off-by: Antonio Ospite
    Signed-off-by: Takashi Iwai

    Antonio Ospite
     

14 Sep, 2011

3 commits


25 Jan, 2011

1 commit


01 Jun, 2010

1 commit

  • 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: Daniel Mack
    Signed-off-by: Takashi Iwai

    Daniel Mack
     

12 Mar, 2010

2 commits


05 Mar, 2010

3 commits

  • 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: Daniel Mack
    Cc: Clemens Ladisch
    Signed-off-by: Takashi Iwai

    Daniel Mack
     
  • 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: Daniel Mack
    Cc: Clemens Ladisch
    Signed-off-by: Takashi Iwai

    Daniel Mack
     
  • As part of the USB audio code cleanup, move the non-standard ua101
    driver out of the way.

    Signed-off-by: Daniel Mack
    Cc: Clemens Ladisch
    Signed-off-by: Takashi Iwai

    Daniel Mack
     

15 Dec, 2009

1 commit


01 Aug, 2008

1 commit


11 May, 2007

1 commit

  • Add snd-usb-caiaq driver to support caiaq usb-audio devices from
    Native Instrument:
    * Native Instruments RigKontrol2
    * Native Instruments Kore Controller
    * Native Instruments Audio Kontrol 1
    * Native Instruments Audio 8 DJ

    Signed-off-by: Daniel Mack
    Signed-off-by: Karsten Wiese
    Signed-off-by: Takashi Iwai
    Signed-off-by: Jaroslav Kysela

    Daniel Mack
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds