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-1810cNote 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-Radiov2 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 fixesv3 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
22 Aug, 2019
2 commits
-
Pull USB validation patches. It's based on the latest 5.3 development
branch, so we shall catch up the whole things.Signed-off-by: Takashi Iwai
-
Introduce a new helper to validate each audio descriptor unit before
and check the unit before actually accessing it. This should harden
against the OOB access cases with malformed descriptors that have been
recently frequently reported by fuzzers.The existing descriptor checks are still kept although they become
superfluous after this patch. They'll be cleaned up eventually
later.Signed-off-by: Takashi Iwai
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
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
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
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
20 Feb, 2017
1 commit
-
Add mixer quirk for Tascam US-16x08 usb interface.
Even that this is an usb compliant device,
the input channels and DSP functions (EQ/Compressor) aren't accessible
by default.Signed-off-by: Detlef Urban
Signed-off-by: Takashi Iwai
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=115561It 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
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
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
13 Jan, 2015
1 commit
-
Promote line6 driver from staging to sound/usb/line6 directory, and
maintain through sound subsystem tree.This commit just moves the code and adapts Makefile / Kconfig.
The further renames and misc cleanups will follow.Signed-off-by: Takashi Iwai
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
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
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.htmlThe 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 VitusSigned-off-by: Antonio Ospite
Signed-off-by: Takashi Iwai
14 Sep, 2011
3 commits
-
No code altered at this point, simply preparing for upcoming
refactorizations.Signed-off-by: Daniel Mack
Acked-by: Clemens Ladisch
Signed-off-by: Takashi Iwai -
Move code from endpoint.c into a new file called stream.c and rename
functions so that their names actually reflect what they're doing.This way, endpoint.c will be available to functions that hold all the
endpoint logic.Signed-off-by: Daniel Mack
Acked-by: Clemens Ladisch
Signed-off-by: Takashi Iwai -
Sort its entries in alphabetical order.
Signed-off-by: Daniel Mack
Acked-by: Clemens Ladisch
Signed-off-by: Takashi Iwai
25 Jan, 2011
1 commit
-
What is working: Everything except SPDIF
- Hardware Master volume
- PCM 44-192kHz@24 bits, 6 channels out, 4 channels in (analog)
- MIDI in/out
- firmware loading after cold start
- phono/line switchingSigned-off-by: Torsten Schenk
Signed-off-by: Takashi Iwai
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
12 Mar, 2010
2 commits
-
For clearer namespace, also rename usbmixer_maps.c -> mixer_maps.c
Signed-off-by: Daniel Mack
Cc: Clemens Ladisch
Signed-off-by: Takashi Iwai -
Move all non-standard mixer controls and vendor-specific extensions to a
separate file. Some structs need to be exported now.Signed-off-by: Daniel Mack
Cc: Clemens Ladisch
Signed-off-by: Takashi Iwai
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 -
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 -
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
15 Dec, 2009
1 commit
-
Add experimental support for the Edirol UA-101 audio/MIDI interface.
Signed-off-by: Clemens Ladisch
Signed-off-by: Takashi Iwai
01 Aug, 2008
1 commit
-
Added a new US122L usb-audio driver. This driver works together with a
dedicated alsa-lib plugin.Signed-off-by: Takashi Iwai
Signed-off-by: Jaroslav Kysela
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 DJSigned-off-by: Daniel Mack
Signed-off-by: Karsten Wiese
Signed-off-by: Takashi Iwai
Signed-off-by: Jaroslav Kysela
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!