Difference between revisions of "Detailed changes v1.0.24 v1.0.25"

From AlsaProject
Jump to: navigation, search
 
m (1 revision(s))

Revision as of 10:14, 25 January 2012

Contents

Detailed changelog between 1.0.24 and 1.0.25 releases

Changelog between 1.0.17 and 1.0.25 releases

alsa-driver

Sound Core

- Release v1.0.25
- Add note that event 2.6.9+ kernels might work..
- Add arch/$ARCH/include/generated dir check for test cases
- Release check: Supported kernel versions update, changes for recent 3.2 kernel
- Add a dummy linux/ratelimit.h for older kernels
- Add the build-stub for compress-offload
Enabled only from 3.0, to be sure.
- More fixes for pm_qos changes in 3.2-rc1
- remove "CONFIG_SND_HDA_INPUT_BEEP_MODE" redefined warnings
- Fix recent PM change (pm_qos_params.h -> pm_qos.h renaming) for pcm.h
- Drop the check of video_get_drvdata()
It's always present in V4L2.
Also fix the build error with tea575x.
- Fix the presence check of linux/tracepoint.h again
Still silly mistakes..
- Drop V4L1 support from tea575x-tuner
It was already broken, so safer to drop now.
Also made patches for building with older kernels.
- More workaround for older tracepoint
- Don't forget to create include/trace in configure script
include/trace is still needed for trace_define.h...
- Don't create include/trave/events directory in configure script
Now switched to a symlink instead.
- Fix the link path to trace/events.h
- Create links to the latest include/trace/events/*.h
- Add a wrapper for linux/atomic.h
- Add a wrapper for trace/define_trace.h
Also get rid of the old hack for trace/events/asoc.h.
- Add <linux/tracepoint.h> wrapper
- Add a check of linux/i8253.h to configure script
- Allow kernel minor version to be >= 10 in configure script
Just to be safer...
- Fix the detection of CONFIG_ISA_DMA_API in configure script
A typo of version number.
- Allow specifying integer options via configure script
Add the feature to specify integer kconfig values from configure
--with-card-options.
- Fix build with 3.x kernels
- add isight build stub
Add support files for the new snd-isight driver.
- Don't build snd-isight with older kernels
- Add a check of linux/smp_lock.h
It's deprecated.
- Add linux/bitrev.h wrapper for older kernels
- Enable es1968-radio only for kernels with recent v4l2 API
- add firewire build stubs
Add build stubs and related support for the new FireWire modules.
- add check for vzalloc() to configure (Fedora 14 kernel issue)
- Add a wrapper of async API for older kernels
- Fix build with the recent ASoC updates
- Regenerated soc-core.patch
- Always use the dummy trace/events/asoc.h
- um: switch to use of drivers/Kconfig
- ALSA: add LaCie FireWire Speakers/Griffin FireWave Surround driver
Add a driver for two playback-only FireWire devices based on the OXFW970
chip.
v2: better AMDTP API abstraction; fix fw_unit leak; small fixes
v3: cache the iPCR value
v4: FireWave constraints; fix fw_device reference counting;
fix PCR caching; small changes and fixes
v5: volume/mute support; fix crashing due to pcm stop races
v6: fix build; one-channel volume for LaCie
v7: use signed values to make volume (range checks) work; fix function
block IDs for volume/mute; always use channel 0 for LaCie volume
Tested-by: Jay Fenlason <fenlason@redhat.com>

ALSA Core

- Fix bint check version check
It seems that the bint stuff is not a part of 3.2 kernel as it's
pulled by Linus only a few days ago, so increment version check
to 3.3.0:
commit 69116f279a9eaf4c540934269342d9149538fc79
Author: Rusty Russell <rusty@rustcorp.com.au>
Date: Fri Jan 13 09:32:17 2012 +1030
module_param: avoid bool abuse, add bint for special cases.
- Add a build fix for older kernels due to info() macro
Since some old kernels define info() macro, the build gets broken.
Simply undefine such a stupid macro.
- Release check: Supported kernel versions update, changes for recent 3.2 kernel
- Add module_driver() and module_usb_driver() macros and bint module param check
- Add the build-stub for compress-offload
Enabled only from 3.0, to be sure.
- Add acore/ctljack.c build stub
- Add a wrapper for module_platform_driver() for older kernels
- Add a wrapper of to_delayed_work() for older kernels
- RHEL 6.1 compilation fix
RHEL 6.1 (2.6.32-132.*) kernels already have hex_to_bin() function.
Tune check in the alsa-driver/include/adriver.h
Tested on Scientific Linux 6.1 (RHEL 6.1 clone), kernels:
2.6.32-131.0.15.el6.x86_64 (original, from DVD installation)
2.6.32-131.17.1.el6.x86_64 (last security update)
- Add the build of acore/memory.c with older kernel
- Define the dumy __printf() when not defined
- More fixes for pm_qos changes in 3.2-rc1
- Add PMSG_IS_AUTO() check from <linux/pm.h> for older kernels
- Fix build error due to redefinition of request_irq() for older kernels
- Add a workaround for removal of IRQF_DISABLED
- Add missing export of snd_hidden_ksize()
Also fix the ifdef of krealloc() wrapper for some corner cases.
- Add missing ksize() and krealloc() wrappers for memory debugging
Otherwise krealloc() will spew many errors.
- Fix tracepoint handling with SLE11-SP0 kernel
SLE11-SP0 kernel contains half-baked tracepoint support that breaks the
build. Put a workaround.
- More workaround for older tracepoint
- Fix tracepoint.h wrapper
- Fix compile warnings with older kernels
- Add a wrapper for trace/define_trace.h
Also get rid of the old hack for trace/events/asoc.h.
- Add <linux/tracepoint.h> wrapper
- Regenerate info.patch for upstream changes in info.c
- Fix build-errors of soc-core due to new trace points
Ugly hacks again.
- Fix cancel_work_sync() wrapper for older kernels
It's hard to find the matching one...
- Define cancel_work_sync for old 2.6.x kernels
- Avoid patching for pci/ad1889 driver
It's just missing pci-ids, so let's define them in pci_ids_compat.h.
- Add PCI device ID for Creative Titanium HD to pci_ids_compat.h.
- Fix snd_printk() helper build for older kernels without %pV support
- Add krealloc() wrapper for 2.6 kernels
2.4 kernels still have no wrapper, but it's used only in soc-core...
- Add missing PCI ID for DIGIGRAM
- Add linux/bitrev.h wrapper for older kernels
- Add usleep_range() wrapper for older kernels
- add check for vzalloc() to configure (Fedora 14 kernel issue)
- Add a wrapper of async API for older kernels
- Fix build with the recent ASoC updates
- Regenerated soc-core.patch
- Always use the dummy trace/events/asoc.h
- ALSA: Don't prompt for CONFIG_SND_COMPRESS_OFFLOAD
CONFIG_SND_COMPRESS_OFFLOAD is an item to be selected by the dirver
just like CONFIG_SND_PCM, and no need to prompt for explicit
selection.
- switch procfs to umode_t use
both proc_dir_entry ->mode and populating functions
- drop "select GCD" from three Kconfig files
There is no Kconfig symbol named GCD. The three select statements for
that symbol are nops. Drop these.
- Merge all missing things from upstream.
- ALSA: hda - Add missing inclusion of linux/export.h
This is needed newly since 3.2...
- ALSA: Introduce common helper functions for jack-detection control
Now move the helper function for creating and reporting the jack-detection
to the common place. The driver that needs this functionality should
select CONFIG_SND_KCTL_JACK kconfig.
- ALSA: export compress headers
Export compress_offload.h and compress_params.h for userland to use
- ALSA: core: add makefile and kconfig file for compress
- ALSA: core: add support for compress_offload
This patch adds core.c, the file which implements the ioctls and
registers the devices
- ALSA: core: add API header and driver header files
This patch adds the header files for ioctl definitions and header file for
driver APIs for lower level device drivers to use
- ALSA: core: add compress parameter definations
The patch adds the various definations used to define the encoder
and decoder parameters
Reviewed-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
- ALSA: core: add support for compressed devices
Use the minor numbers 2 and 3 for audio compressed offload devices.
Also add support for these devices in core
Reviewed-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
- include: replace linux/module.h with "struct module" wherever possible
The <linux/module.h> pretty much brings in the kitchen sink along
with it, so it should be avoided wherever reasonably possible in
terms of being included from other commonly used <linux/something.h>
files, as it results in a measureable increase on compile times.
The worst culprit was probably device.h since it is used everywhere.
This file also had an implicit dependency/usage of mutex.h which was
masked by module.h, and is also fixed here at the same time.
There are over a dozen other headers that simply declare the
struct instead of pulling in the whole file, so follow their lead
and simply make it a few more.
Most of the implicit dependencies on module.h being present by
these headers pulling it in have been now weeded out, so we can
finally make this change with hopefully minimal breakage.
- sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed
These aren't modules, but they do make use of these macros, so
they will need export.h to get that definition. Previously,
they got it via the implicit module.h inclusion.
- sound: add moduleparam.h to users of module_param/MODULE_PARM_DESC
These files were getting access to these two via the implicit
presence of moduleparam.h everywhere. But that is being fixed, so
get these guys what they need in advance.
- treewide: use __printf not __attribute__((format(printf,...)))
Standardize the style for compiler based printf format verification.
Standardized the location of __printf too.
Done via script and a little typing.
$ grep -rPl --include=*.[ch] -w "__attribute__" * | \
grep -vP "^(tools|scripts|include/linux/compiler-gcc.h)" | \
xargs perl -n -i -e 'local $/; while (<>) { s/\b__attribute__\s*\(\s*\(\s*format\s*\(\s*printf\s*,\s*(.+)\s*,\s*(.+)\s*\)\s*\)\s*\)/__printf($1, $2)/g ; print; }'
[akpm@linux-foundation.org: revert arch bits]
- ALSA: control: add support for ENUMERATED user space controls
Handling of user control elements was implemented for all types except
ENUMERATED. This type will be needed for the device-specific mixers of
upcoming FireWire drivers.
- get rid of create_proc_entry() abuses - proc_mkdir() is there for purpose
- ALSA: Use %pV for snd_printk()
Clean up snd_printk() helper using the %pV prefix for recursive printks.
This also automagically fixes an Oops with RO/NX-enabled modules.
Tested-by: Maarten Lankhorst <m.b.lankhorst@gmail.com>
- ALSA: core: remove unused variables.
Drop a few variables that are never read.
- ALSA: core - Don't use "default' for default
The card-id parser assigns the string "default" when no appropriate word
is found in the card name. But this string may confuse the alsa-lib, so
better to avoid. Use "Default" now instead.
- ALSA: Fix yet another race in disconnection
This patch fixes a race between snd_card_file_remove() and
snd_card_disconnect(). When the card is added to shutdown_files list
in snd_card_disconnect(), but it's freed in snd_card_file_remove() at
the same time, the shutdown_files list gets corrupted. The list member
must be freed in snd_card_file_remove() as well.
Reported-and-tested-by: Russ Dill <russ.dill@gmail.com>
- ALSA: core: sparse cleanups
Change the core code where sparse complains. In most cases, this means
just adding annotations to confirm that we indeed want to do the dirty
things we're doing.

SoC PXA2xx Core

see Detailed SoC changes v1.0.24 v1.0.25

Control Midlevel

- Regenerated patches for new inclusions in 3.2-rc1
- Merge all missing things from upstream.
- ALSA: control: remove compilation warning on 32-bit
This was introduced by 'ALSA: control: add support for ENUMERATED user
space controls' which adds a u64 variable that gets cast to a pointer:
sound/core/control.c: In function 'snd_ctl_elem_init_enum_names':
sound/core/control.c:1089: warning: cast to pointer from integer of different size
Cast to uintptr_t before casting to pointer to avoid the warning.
[cl: replace long with uintptr_t]
- sound: Add module.h to the previously silent sound users
Lots of sound drivers were getting module.h via the implicit presence
of it in <linux/device.h> but we are going to clean that up. So
fix up those users now.
- ALSA: control: add support for ENUMERATED user space controls
Handling of user control elements was implemented for all types except
ENUMERATED. This type will be needed for the device-specific mixers of
upcoming FireWire drivers.
- ALSA: core: release the constraint check for replace ops
Suppose the ALSA card already has a number of MAX_USER_CONTROLS controls, and
the user wants to replace one, it should not fail at this condition check.
- ALSA: core: trivial code style fix
remove trailing tab on the line.
- ALSA: core: remove unused variables.
Drop a few variables that are never read.
- ALSA: Add snd_ctl_replace() to dynamically replace a control
Add a function to dynamically replace a given control. If the
control does not already exist, a third parameter is used to determine
whether to actually add that control. This is useful in cases where
downloadable firmware at runtime can add or replace existing controls.
A separate patch needs to be made to allow ALSA Mixer to render the
replaced controls on the fly.
- ALSA: Add snd_ctl_activate_id()
Added a new API function snd_ctl_activate_id() for activate / inactivate
the control element dynamically.
- ALSA: control: clean up snd_ctl_hole_check()
The return value of snd_ctl_hole_check() is used only to detect whether
to continue the loop in snd_ctl_find_hole() or not, so we can simplify
the code by changing this return type to a boolean. Also rename this
function to better show what it actually does.
- ALSA: control: fix numid conflict check for new controls
The purpose of the snd_ctl_hole_check() function is to find conflicts
between the numerical IDs of the new control and those of any existing
controls. However, it would fail to detect an existing control whose
count is smaller than the new control's count and whose interval of IDs
is entirely contained in the interval of the new control's IDs.
To fix this, use the correct formula to detect overlapping intervals,
which happens to simplify the condition.
This problem was not encountered so far because ALSA does not yet allow
drivers to allocate specific control IDs.

HWDEP Midlevel

- ALSA: hwdep: silence integer overflow warning
Smatch complains that if device is INT_MAX then device + 1 can
overflow. It just means we would have an annoying loop while we
check all the devices from -2147483648 to SNDRV_MINOR_HWDEPS.

Jack Input Event Midlevel

- Add missing SW_LINEIN_INSERT definition to jack.c
- ALSA: jack - Add "Line In" input jack constants
Similar to Line Out, these constants form the base for future
patches enabling input jack reporting for Line in jacks.
- ALSA: fix one memory leak in sound jack
Reviewed-by: Wu Fengguang <fengguang.wu@intel.com>

PCM Midlevel

- More fixes for pm_qos changes in 3.2-rc1
- Regenerated acore/pcm_native.patch for fixing fuzz
- More fixes for kABI compatibility with older 2.6 kernels
- sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed
These aren't modules, but they do make use of these macros, so
they will need export.h to get that definition. Previously,
they got it via the implicit module.h inclusion.
- ALSA: pcm - remove the dead code from snd_pcm_open_file()
The rpcm_file parameter is never used in current ALSA code, so remove
it to make it cleaner.
- ALSA: pcm - Export snd_pcm_lib_default_mmap() helper
Export the default mmap function, snd_pcm_lib_default_mmap().
The upcoming non-snooping support in HD-audio driver will use this
to override the mmap method.
- ALSA: pcm: add snd_pcm_hw_rule_noresample()
Add a helper function to allow drivers to disable hardware resampling
when the application has specified the SNDRV_PCM_HW_PARAMS_NORESAMPLE
flag.
- ALSA: pcm - fix race condition in wait_for_avail()
wait_for_avail() in pcm_lib.c has a race in it (observed in practice by an
Intel validation group).
The function is supposed to return once space in the buffer has become
available, or if some timeout happens. The entity that creates space (irq
handler of sound driver and some such) will do a wake up on a waitqueue
that this function registers for.
However there are two races in the existing code
1) If space became available between the caller noticing there was no
space and this function actually sleeping, the wakeup is missed and the
timeout condition will happen instead
2) If a wakeup happened but not sufficient space became available, the
code will loop again and wait for more space. However, if the second
wake comes in prior to hitting the schedule_timeout_interruptible(), it
will be missed, and potentially you'll wait out until the timeout
happens.
The fix consists of using more careful setting of the current state (so
that if a wakeup happens in the main loop window, the schedule_timeout()
falls through) and by checking for available space prior to going into the
schedule_timeout() loop, but after being on the waitqueue and having the
state set to interruptible.
[tiwai: the following changes have been added to Arjan's original patch:
- merged akpm's fix for waitqueue adding order into a single patch
- reduction of duplicated code of avail check
]
- PM QoS: Minor clean-ups
- Misc fixes to improve code readability:
* rename struct pm_qos_request_list to struct pm_qos_request,
* rename pm_qos_req parameter to req in internal code,
consistenly use req in the API parameters,
* update the in-kernel API callers to the new parameters names,
* rename of fields names (requests, list, node, constraints)
Reviewed-by: Kevin Hilman <khilman@ti.com>
- PM QoS: Move and rename the implementation files
The PM QoS implementation files are better named
kernel/power/qos.c and include/linux/pm_qos.h.
The PM QoS support is compiled under the CONFIG_PM option.
Reviewed-by: Kevin Hilman <khilman@ti.com>
- ALSA: sound/core/pcm_compat.c: adjust array index
Convert array index from the loop bound to the loop index.
A simplified version of the semantic patch that fixes this problem is as
follows: (http://coccinelle.lip6.fr/)
// <smpl>
@@
expression e1,e2,ar;
@@
for(e1 = 0; e1 < e2; e1++) { <...
ar[
- e2
+ e1
]
...> }
// </smpl>
- ALSA: Make pcm.h self-contained
Move the macros depending on snd_mask_min() and co out of pcm.h into
pcm_params.h. Otherwise using some params_*() macros will give comiple
errors without inclusion of pcm_params.h.
Also use hw_param_interval_c() and hw_param_mask_c() for const pointer.
Reported-by: Tim Blechmann <tim@klingt.org>
- ALSA: Make snd_pcm_debug_name usable outside pcm_lib
Formatting a PCM name is useful for module debug too.
Add snd_prefix when making function public.
[minor coding-style fixes by tiwai]
- Fix common misspellings
Fixes generated by 'codespell' and manually reviewed.
- ALSA: core: remove unused variables.
Drop a few variables that are never read.
- ALSA: PCM - Don't check DMA time-out too shortly
When the PCM period size is set larger than 10 seconds, currently the
PCM core may abort the operation with DMA-error due to the fixed timeout
for 10 seconds. A similar problem is seen in the drain operation that
has a fixed timeout of 10 seconds, too.
This patch fixes the timeout length depending on the period size and
rate, also including the consideration of no_period_wakeup flag.
Reported-by: Raymond Yau <superquad.vortex2@gmail.com>
- ALSA: sound, core, pcm_lib: fix xrun_log
The xrun_log function was augmented with the in_interrupt parameter whereas the
empty macro definition used when xrun logging is disabled was not.
Add a third parameter to the empty macro definition so as to not cause compiler
errors when xrun logging (CONFIG_SND_PCM_XRUN_DEBUG) is disabled.
- ALSA: sound, core, pcm_lib: xrun_log: log also in_interrupt
When debugging pcm drivers I found the "period" or "hw" prefix printed
by either XRUN_DEBUG_PERIODUPDATE or XRUN_DEBUG_PERIODUPDATE events,
respectively to be very useful is observing the interplay between
interrupt-context updates and syscall-context updates.
Similarly, when debugging overruns with XRUN_DEBUG_LOG it is useful to
see the context of the last 10 positions.
Add an in_interrupt member to hwptr_log_entry which stores the value of
the in_interrupt parameter of snd_pcm_update_hw_ptr0 when the log entry
is created. Print a "[Q]" prefix when dumping the log entries if
in_interrupt was true.
- ALSA: pcm: fix infinite loop in snd_pcm_update_hw_ptr0()
When period interrupts are disabled, snd_pcm_update_hw_ptr0() compares
the current time against the time estimated for the current hardware
pointer to detect xruns. The somewhat fuzzy threshold in the while loop
makes it possible that hdelta becomes negative; the comparison being
done with unsigned types then makes the loop go through the entire 263
negative range, and, depending on the value, never reach an unsigned
value that is small enough to stop the loop. Doing this with interrupts
disabled results in the machine locking up.
To prevent this, ensure that the loop condition uses signed types for
both operands so that the comparison is correctly done.
Many thanks to Kelly Anderson for debugging this.
Reported-by: Nix <nix@esperi.org.uk>
Reported-by: "Christopher K." <c.krooss@googlemail.com>
Reported-and-tested-by: Kelly Anderson <kelly@silka.with-linux.com>
[cl: remove unneeded casts; use a temp variable]
- ALSA: vmalloc buffers should use normal mmap
It's a big no-no to use pgprot_noncached() when mmap'ing such buffers
into userspace since they are mapped cachable in kernel space.
This can cause all sort of interesting things ranging from to garbled
sound to lockups on various architectures. I've observed that usb-audio
is broken on powerpc 4xx for example because of that.
Also remove the now unused snd_pcm_lib_mmap_noncached(). It's
an arch business to know when to use uncached mappings, there's
already hacks for MIPS inside snd_pcm_default_mmap() and other
archs are supposed to use dma_mmap_coherent().
(See my separate patch that adds dma_mmap_coherent() to powerpc)
- ALSA: core: sparse cleanups
Change the core code where sparse complains. In most cases, this means
just adding annotations to confirm that we indeed want to do the dirty
things we're doing.

RawMidi Midlevel

- sound: fix drivers needing module.h not moduleparam.h
The implicit presence of module.h lured several users into
incorrectly thinking that they only needed/used modparam.h
but once we clean up the module.h presence, these will show
up as build failures, so fix 'em now.
- ALSA: Use krealloc() in possible places
- ALSA: rawmidi - Use workq for event handling
Kill tasklet usage in rawmidi core code. Use workq for the event callback
instead of tasklet (which is used only in core/seq/seq_midi.c).

Timer Midlevel

- ALSA: timer - Add NULL-check for invalid slave timer
Just to be sure.
- ALSA: timer - Fix Oops at closing slave timer
A slave-timer instance has no timer reference, and this results in
NULL-dereference at stopping the timer, typically called at closing
the device.
Reference: https://bugzilla.kernel.org/show_bug.cgi?id=40682
- ALSA: sound/core: merge list_del()/list_add_tail() to list_move_tail()
Merge list_del() + list_add_tail() to list_move_tail().

/soc/Makefile

- ASoC: mxs: add asoc configuration files
Tested-by: Wolfram Sang <w.sang@pengutronix.de>
- ASoC: Move register I/O code into a separate file
For clarity and to help ongoing refactoring in this area create a new file
to contain the physical I/O functions, separating them out from the cache
operations.
- ASoC: core - Separate out PCM operations into new file.
In preparation for Dynamic PCM support (AKA DSP support).
There will be future patches that add support to allow PCMs to be dynamically
routed to multiple DAIs at startup and also during stream runtime. This patch
moves the ASoC core PCM operaitions into a new file called soc-pcm.c. This will
in simplify the ASoC core features into distinct files.

/soc/codecs/Makefile

- ASoC: Remove WM8994 register cache
Now that the mfd is using the register map cache there's no need for the
CODEC driver to do any register cache management or any funny dances to
interact with the other drivers using the device so just remove the cache
initialisation and volatility information.
- ASoC: Sort WM9090 in with the CODEC drivers
The driver itself has been a regular CODEC driver for a while now.
- ASoC: Convert WM2000 into a standard CODEC driver
We've been able to handle external amps for a while now.
- ASoC: Move SigmaDSP firmware loader to ASoC
It has been pointed out previously, that the firmware subsystem is not the right
place for the SigmaDSP firmware loader. Furthermore the SigmaDSP is currently
only used in audio products and we are aiming for better integration into the
ASoC framework in the future, with support for ALSA controls for firmware
parameters and support dynamic power management as well. So the natural choice
for the SigmaDSP firmware loader is the ASoC subsystem.
- ASoC: Add support for CS42L73 codec
This patch adds support for the Cirrus Logic CS42L73 low power stereo
codec.
- ASoC: Add new Realtek ALC5632 CODEC driver
This driver implements basic functionality, using I²C for the control
channel.
- ASoC: Fix sort of jz4740 in Makefile
- ASoC: Sort LM4857 with the CODECs in the Makefile
Having a separate list for amps is a little confusing now the official
driver model for them is the same as for other CODECs so let's sort them
into the CODEC list, but only do this for those that are actual CODEC
drivers so it's easier to remember which ones need updating.
- ASoC: Fix typo in Kconfig symbol for tlv320aic32x4
It is currently named "TVL" instead of "TLV".
- ASoC: Add Kconfig and Makefile entries for rt5631 codec
- ASoC: Add WM5100 driver
The WM5100 is a highly integrated low power audio subsystem with advanced
digital signal processing capabilities including effects, speech clarity
enhancement and active noise cancellation. This initial driver provides
support for basic audio paths, further patches will provide more
complete functionality.
- ASoC: Add ADAU1373 codec support
This patch adds support for the Analog Devices ADAU1373 audio codec.
- ASoC: Rename WM8915 to WM8996
For marketing reasons the part will be called WM8996. In order to avoid
user confusion rename the driver to reflect this.
- ASoC: WM8983: Initial driver
The WM8983 is a low power, high quality stereo CODEC
designed for portable multimedia applications. Highly flexible
analogue mixing functions enable new application features,
combining hi-fi quality audio with voice communication.
- ASoC: Add ADAV80x codec driver
This patch adds support for the Analog Devices ADAV801 and ADAV803 audio codec.
- ASoC: add WM8782 ADC Codec Driver
[zonque@gmail.com: transform to new ASoC structure]
- ASoC: add STA32X codec driver
[zonque@gmail.com: transform to new ASoC structure]
- ASoC: Add ADAU1701 codec driver
This patch adds support for the Analog Devices ADAU1701 SigmaDSP.
- ASoC: Asahi Kasei AK4641 codec driver
A driver for the AK4641 codec used in iPAQ hx4700 and Glofiish M800
among others.
- ASoC: Add initial WM1250-EV1 Springbank audio I/O module driver
The WM1250-EV1 Springbank audio I/O module for the Wolfson Glenfarclas
reference platform provides a simple audio I/O with an independant clock
domain, intended to simulate cellular modem and bluetooth subsystems
within the platform.
The card supports some limited GPIO based control but this is currently not
implemented.
- ASoC: Add WM8915 CODEC driver
The WM8915 is an ultra low power mobile CODEC designed for smartphones,
featuring a mixture of digital and analogue I/O with flexible mixing
options and advanced low power accessory detection functionality in a
compact package.
- ASoC: Add max98095 CODEC driver
This patch adds the MAX98095 CODEC driver.
- ASoC: Factor WM8958 DSP2 handling into separate file
DSP2 on the WM8958 has a default ROM which provides a multi-band
compressor for enhanced performance on mobile devices but can also
support runtime download of alternative firmware. In preparation for
more exploiting this functionality refactor the code to split the
handling of DSP2 into a separate file.
- ASoC: Add MAX9850 codec driver
This patch adds ASoC support for the MAX9850 codec with headphone
amplifier.
Supported features:
- Playback
- 16, 20 and 24 bit audio
- 8k - 48k sample rates
- DAPM
- ASoC: Add driver for the dfbmcs320 bluetooth module
This patch adds a codec driver for the dfbmcs320 bluetooth module, which is used
on the neo1973 boards.
The patch also modifies the neo1937_wm8753 sound board driver to use the new
driver instead of registering the bluetooth DAI manually.
Previously there was a name mismatch between the bluetooth DAI and the bluetooth
DAI link and the sound card was not instantiated, with this patch the issue is
no longer present and sound support works again.
- ASoC: neo1973_wm8753: Move lm4857 specefic code to its own module
This patch moves the code for the lm4857 AMP from the neo1973_wm8753 sound
board driver to its own module.
The lm4857 is a generic AMP IC and not specific to the neo1973.
- ASoC: Add TI tlv320aic32x4 codec support.
This patch adds support for tlv320aic3205 and tlv320aic3254 codecs.
It doesn't include miniDSP support for aic3254.
- ASoC: Add Freescale SGTL5000 codec support
Add Freescale SGTL5000 codec support.
Supported features:
- line-in and mic input
- headphone and line-out output
- line-in bypass ADC and DAC to headphone
- 16, 20, 24, 32 bit audio
- 8 ~ 96k sample rates
- ASoC: Sort ALC5623 in Kconfig and Makefile
- ASoC: CS4271 codec support
Added support for CS4271 codec to ASoC.

/soc/pxa/Makefile

- ASoC: add iPAQ hx4700 machine driver
AK4641 connected via I2S and I2C, jack detection via GPIO.

AC97 Codec

- Regenerate ac97_codec.patch and soc-core.patch to resolve fuzz
- ALSA: ac97: Add HP Compaq dc5100 SFF(PT003AW) to Headphone Jack Sense whitelist
BugLink: https://bugs.launchpad.net/bugs/826081
The original reporter needs 'Headphone Jack Sense' enabled to have
audible audio, so add his PCI SSID to the whitelist.
Reported-and-tested-by: Muhammad Khurram Khan
- ALSA: azt3328: hook up new emulated AC97 on AC97 patch side
Make newly created AC97 emulation of azt3328 known to the AC97 layer
side.
- relocate common functions to the top (due to definition after use)
- rename control names
- adjust 3D settings to the card's custom layout of this register
- ALSA: ac97: replace open-coded, error-prone stuff with AC97 bit defines
Use AC97 macros (sometimes already existing, or newly added)
instead of error-prone repetition of open-coded values.

AD1816A driver

- ALSA: mpu401: clean up interrupt specification
The semantics of snd_mpu401_uart_new()'s interrupt parameters are
somewhat counterintuitive: To prevent the function from allocating its
own interrupt, either the irq number must be invalid, or the irq_flags
parameter must be zero. At the same time, the irq parameter being
invalid specifies that the mpu401 code has to work without an interrupt
allocated by the caller. This implies that, if there is an interrupt
and it is allocated by the caller, the irq parameter must be set to
a valid-looking number which then isn't actually used.
With the removal of IRQF_DISABLED, zero becomes a valid irq_flags value,
which forces us to handle the parameters differently.
This patch introduces a new flag MPU401_INFO_IRQ_HOOK for when the
device interrupt is handled by the caller, and makes the allocation of
the interrupt to depend only on the irq parameter. As suggested by
Takashi, the irq_flags parameter was dropped because, when used, it had
the constant value IRQF_DISABLED.

AD1889 driver

- Add missing pci/ad1889.c
Forgot to add in the previous commit...
- Avoid patching for pci/ad1889 driver
It's just missing pci-ids, so let's define them in pci_ids_compat.h.
- ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/*
The name argument of request_irq() appears in /proc/interrupts, and
it's quite ugly when the name entry contains a space or special letters.
In general, it's simpler and more readable when the module name appears
there, so let's replace all entries with KBUILD_MODNAME.
- ALSA: Use KBUILD_MODNAME for pci_driver.name entries
The convention for pci_driver.name entry in kernel drivers seem to be
the module name or equivalent ones. But, so far, almost all PCI sound
drivers use more verbose name like "ABC Xyz (12)", and these are fairly
confusing when appearing as a file name.
This patch converts the all pci_driver.name entries in sound/pci/* to
use KBUILD_MODNAME for more unified appearance.

ALI5451 driver

- ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/*
The name argument of request_irq() appears in /proc/interrupts, and
it's quite ugly when the name entry contains a space or special letters.
In general, it's simpler and more readable when the module name appears
there, so let's replace all entries with KBUILD_MODNAME.
- ALSA: Use KBUILD_MODNAME for pci_driver.name entries
The convention for pci_driver.name entry in kernel drivers seem to be
the module name or equivalent ones. But, so far, almost all PCI sound
drivers use more verbose name like "ABC Xyz (12)", and these are fairly
confusing when appearing as a file name.
This patch converts the all pci_driver.name entries in sound/pci/* to
use KBUILD_MODNAME for more unified appearance.

ALS100 driver

- ALSA: mpu401: clean up interrupt specification
The semantics of snd_mpu401_uart_new()'s interrupt parameters are
somewhat counterintuitive: To prevent the function from allocating its
own interrupt, either the irq number must be invalid, or the irq_flags
parameter must be zero. At the same time, the irq parameter being
invalid specifies that the mpu401 code has to work without an interrupt
allocated by the caller. This implies that, if there is an interrupt
and it is allocated by the caller, the irq parameter must be set to
a valid-looking number which then isn't actually used.
With the removal of IRQF_DISABLED, zero becomes a valid irq_flags value,
which forces us to handle the parameters differently.
This patch introduces a new flag MPU401_INFO_IRQ_HOOK for when the
device interrupt is handled by the caller, and makes the allocation of
the interrupt to depend only on the irq parameter. As suggested by
Takashi, the irq_flags parameter was dropped because, when used, it had
the constant value IRQF_DISABLED.

ALSA Minor Numbers

- ALSA: core: add support for compressed devices
Use the minor numbers 2 and 3 for audio compressed offload devices.
Also add support for these devices in core
Reviewed-by: Mark Brown <broonie@opensource.wolfsonmicro.com>

ALSA Version

- Release v1.0.25

ALSA sequencer

- Regenerated patches for new inclusions in 3.2-rc1
- ALSA: module_param: make bool parameters really bool
module_param(bool) used to counter-intuitively take an int. In
fddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy
trick.
It's time to remove the int/unsigned int option. For this version
it'll simply give a warning, but it'll break next kernel version.
- sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed
These aren't modules, but they do make use of these macros, so
they will need export.h to get that definition. Previously,
they got it via the implicit module.h inclusion.
- sound: fix drivers needing module.h not moduleparam.h
The implicit presence of module.h lured several users into
incorrectly thinking that they only needed/used modparam.h
but once we clean up the module.h presence, these will show
up as build failures, so fix 'em now.
- treewide: use __printf not __attribute__((format(printf,...)))
Standardize the style for compiler based printf format verification.
Standardized the location of __printf too.
Done via script and a little typing.
$ grep -rPl --include=*.[ch] -w "__attribute__" * | \
grep -vP "^(tools|scripts|include/linux/compiler-gcc.h)" | \
xargs perl -n -i -e 'local $/; while (<>) { s/\b__attribute__\s*\(\s*\(\s*format\s*\(\s*printf\s*,\s*(.+)\s*,\s*(.+)\s*\)\s*\)\s*\)/__printf($1, $2)/g ; print; }'
[akpm@linux-foundation.org: revert arch bits]
- Fix common misspellings
Fixes generated by 'codespell' and manually reviewed.
- sound:core:seq:seq_ports.c Remove one to many n's in a word.
The Patch below removes one to many "n's" in a word..

ALSA<-OSS emulation

- ALSA: module_param: make bool parameters really bool
module_param(bool) used to counter-intuitively take an int. In
fddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy
trick.
It's time to remove the int/unsigned int option. For this version
it'll simply give a warning, but it'll break next kernel version.
- sound: fix drivers needing module.h not moduleparam.h
The implicit presence of module.h lured several users into
incorrectly thinking that they only needed/used modparam.h
but once we clean up the module.h presence, these will show
up as build failures, so fix 'em now.
- ALSA: oss-mixer - use strlcpy() instead strcpy()
This is mostly a static checker fix more than anything else. We're
copying from a 64 char buffer into a 44 char buffer.
The 64 character buffer is str[] in snd_mixer_oss_build_test_all().
The call tree is:
snd_mixer_oss_build_test_all()
-> snd_mixer_oss_build_test()
-> snd_mixer_oss_build_test().
We never actually do fill str[] buffer all the way to 64 characters.
The longest string is:
sprintf(str, "%s Playback Switch", ptr->name);
ptr->name is a 32 character buffer so 32 plus 16 characters for
" Playback Switch" still puts us over the 44 limit from "id.name".
Most likely ptr->name never gets filled to the limit, but we can't
really change the size of that buffer so lets just use strlcpy() here
and be safe.
- ALSA: core: remove unused variables.
Drop a few variables that are never read.
- ALSA: core: sparse cleanups
Change the core code where sparse complains. In most cases, this means
just adding annotations to confirm that we indeed want to do the dirty
things we're doing.

ALSA<-OSS sequencer

- Regenerated patches for new inclusions in 3.2-rc1
- sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed
These aren't modules, but they do make use of these macros, so
they will need export.h to get that definition. Previously,
they got it via the implicit module.h inclusion.
- sound: fix drivers needing module.h not moduleparam.h
The implicit presence of module.h lured several users into
incorrectly thinking that they only needed/used modparam.h
but once we clean up the module.h presence, these will show
up as build failures, so fix 'em now.

ARM AACI PL041 driver

- sound: aaci: Enable module alias autogeneration for AMBA drivers
- sound: irq: Remove IRQF_DISABLED
Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
We run all interrupt handlers with interrupts disabled
and we even check and yell when an interrupt handler
returns with interrupts enabled (see commit [b738a50a:
genirq: Warn when handler enables interrupts]).
So now this flag is a NOOP and can be removed.
- ARM: amba: make probe() functions take const id tables
Make Primecell driver probe functions take a const pointer to their
ID tables. Drivers should never modify their ID tables in their
probe handler.
- ALSA: AACI: make fifo variables more explanitory
Improve commenting and change fifo variable names to reflect their
meanings.
- ALSA: AACI: no need to call snd_pcm_period_elapsed() for each period
There is no need to call snd_pcm_period_elapsed() each time a period
elapses - we can call it after we're done once loading/unloading the
FIFO with data. ALSA works out how many periods have elapsed by
reading the current pointers.
- ALSA: AACI: use snd_pcm_lib_period_bytes()
Use the helper rather than open-coding this.
- ALSA: AACI: clean up AACI announcement printk
Make the AACI announcement printk say which primecell part number
has been found. Display the revision as an unsigned decimal, and
display only the first 8 hex digits of the base address unless it's
larger.
- ALSA: AACI: fix channel mask selection
When double-rate mode was selected, we weren't setting the additional
two channel mask bits to allow double-rate to work. Rearrange the
hw_params code to allow the correct channel mask to be selected.
- ALSA: AACI: fix number of channels for record
AC'97 codecs only support two channels for recording, so we shouldn't
advertize that there are up to six channels available. Limit the
selection of 4 and 6 channel audio to playback only.
As this adds additional SNDRV_PCM_STREAM_PLAYBACK conditionals, we can
combine some resulting in the elimination of __aaci_pcm_open() entirely,
and making the code easier to read.
- ALSA: AACI: fix multiple IRQ claiming
Claiming the IRQ each time a playback or capture interface is opened
is wasteful; the second copy of the registered handler is identical to
the first and just wastes resources. Track the number of opens and
only register the handler when necessary.
- ALSA: AACI: allow writes to MAINCR to take effect
The AACI TRM requires the MAINCR enable bit to be held zero for two
bitclk cycles plus three apb_pclk cycles. Use a delay of 1us to
ensure this.
Ensure that writes to MAINCR to change the addressed codec only happen
when required, and that they take effect in a similar manner to the
above, otherwise we seem to occasionally have stuck slot busy bits.

ARM PXA2XX driver

- ALSA: convert sound/* to use module_platform_driver()
This patch converts the drivers in sound/* to use the
module_platform_driver() macro which makes the code smaller and a bit
simpler.
- sound: Add module.h to the previously silent sound users
Lots of sound drivers were getting module.h via the implicit presence
of it in <linux/device.h> but we are going to clean that up. So
fix up those users now.
- sound: irq: Remove IRQF_DISABLED
Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
We run all interrupt handlers with interrupts disabled
and we even check and yell when an interrupt handler
returns with interrupts enabled (see commit [b738a50a:
genirq: Warn when handler enables interrupts]).
So now this flag is a NOOP and can be removed.
- ASoC: PXA: Fix oops in __pxa2xx_pcm_prepare
pxa2xx_pcm_hw_free frees dma channel and sets prtd->dma_ch to -1,
but does not set prtd->params to NULL, so if pxa2xx_pcm_hw_params will
be called immediately, it leaves prtd->dma_ch initialized with -1,
and it results in oops in __pxa2xx_pcm_prepare. This bug is triggered
via SDL.
This patch adds check for prtd->dma_ch to __pxa2xx_pcm_prepare and
cleans prtd->params, so now it works properly.

ATIIXP driver

- ALSA: atiixp - Fix wrong time-out checks during ac-link reset
The time-out in snd_atiixp_aclink_reset() is wrongly checked, and
it resulted in exiting from the loop at the first iteration.
Reported-by: Amir Shamsuddin <AmirS2+alsa@gmail.com>

ATIIXP-modem driver

- ALSA: atiixp - Fix wrong time-out checks during ac-link reset
The time-out in snd_atiixp_aclink_reset() is wrongly checked, and
it resulted in exiting from the loop at the first iteration.
Reported-by: Amir Shamsuddin <AmirS2+alsa@gmail.com>

AZT2320 driver

- ALSA: mpu401: clean up interrupt specification
The semantics of snd_mpu401_uart_new()'s interrupt parameters are
somewhat counterintuitive: To prevent the function from allocating its
own interrupt, either the irq number must be invalid, or the irq_flags
parameter must be zero. At the same time, the irq parameter being
invalid specifies that the mpu401 code has to work without an interrupt
allocated by the caller. This implies that, if there is an interrupt
and it is allocated by the caller, the irq parameter must be set to
a valid-looking number which then isn't actually used.
With the removal of IRQF_DISABLED, zero becomes a valid irq_flags value,
which forces us to handle the parameters differently.
This patch introduces a new flag MPU401_INFO_IRQ_HOOK for when the
device interrupt is handled by the caller, and makes the allocation of
the interrupt to depend only on the irq parameter. As suggested by
Takashi, the irq_flags parameter was dropped because, when used, it had
the constant value IRQF_DISABLED.

AZT3328 driver

- ALSA: azt3328 - adjust error handling code to include debugging code
snd_azf3328_dbgcallenter is called at the very beginning of the function,
so it could be useful to call snd_azf3328_dbgcallleave at all exit points.
- ALSA: azt3328: add custom AC97 semi-emulation use standard ALSA AC97 layer
Make use of the very flexible ALSA ac97 layer (hooks for custom I/O!)
on this weird AC97 copycat hardware,
via semi-extended I/O translation/emulation.
Some 5kB binary/loaded size saved (well... additional huge AC97 module
penalty not factored in, of course ;-P).
Given that the driver previously had 20kB that's not bad,
but the much more important thing is to have AC97 layer stress-tested
with a thoroughly weird AC97 copycat (or, simply put, if it were not for
this AC97 test aspect, this effort would merely have been a nut job ;).

Apple Onboard Audio driver

- snd-aoa: remove commented out Kconfig entry
config SND_AOA_TOPAZ has been commented out since it was added five
years ago with commit f3d9478b ("[...] add snd-aoa"). There's no
indication why it's commented out. It might as well be removed.
- sound: Add module.h to the previously silent sound users
Lots of sound drivers were getting module.h via the implicit presence
of it in <linux/device.h> but we are going to clean that up. So
fix up those users now.
- ALSA: aoa: Remove obsolete cleanup for clientdata
The i2c core will clear the clientdata pointer automatically.
We don't have to set the `data' field to NULL in remove() or
if probe() failed anymore.
Also remove a unneeded NULL checking for kfree.
Reviewed-by: Wolfram Sang <w.sang@pengutronix.de>
- ALSA: sound/aoa/fabrics/layout.c: remove unneeded kfree
The label outnodev is only used when kzalloc has not yet taken place or has
failed, so there is no need for the call for kfree under this label.
A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)
// <smpl>
@@
identifier x;
expression E1!=0,E2,E3,E4;
statement S;
iterator I;
@@
(
if (...) { ... when != kfree(x)
when != x = E3
when != E3 = x
* return ...;
}
... when != x = E2
when != I(...,x,...) S
if (...) { ... when != x = E4
kfree(x); ... return ...; }
)
// </smpl>
- treewide: Convert uses of struct resource to resource_size(ptr)
Several fixes as well where the +1 was missing.
Done via coccinelle scripts like:
@@
struct resource *ptr;
@@
- ptr->end - ptr->start + 1
+ resource_size(ptr)
and some grep and typing.
Mostly uncompiled, no cross-compilers.
- Revert wrong fixes for common misspellings
These changes were incorrectly fixed by codespell. They were now
manually corrected.
- Fix common misspellings
Fixes generated by 'codespell' and manually reviewed.

Asihpi driver

- ALSA: asihpi - Fix potential Oops in snd_asihpi_cmode_info()
Dan Carpenter reported that setting 0 to uinfo->value.enumerated.items
in snd_asihpi_cmode_info() may lead to Oops. This function should
return an error immediately in such a case instead.
- ALSA: asihpi - Fix format validity check.
Sharing and not reinitialising static pcm_hardware struct resulted in
stream format validity flags being incorrectly shared between cards.
Fix and clarify by declaring locally and initialising in the open functions.
- ALSA: asihpi - Use valid channel count in format enumeration.
Since introduction of mono and low latency modes, fixed channel count of 2
is not always valid. Use reported max_channels instead.
- ALSA: asihpi - Correct headers in cached control responses.
Previously, only payload and size were correct, sufficient for reading,
but other fields produced spurious debug output.
- ALSA: asihpi - Add HPI version to module description.
It is useful to know the HPI version without having to load the module,
in order to determine the matching firmware version.
- ALSA: asihpi - Distinguish four different emif init errors.
- ALSA: asihpi - New defs and comments.
Add new error codes, and adapter properties.
Clean up some comments.
- ALSA: asihpi - Add autofade query.
- ALSA: asihpi - Simplify dsp code close.
dsp_code struct is not created if firmware is invalid, so check
and zero of firmware pointer is not necessary
- ALSA: asihpi - Remove redundant struct members.
Structs hpi_adapter and snd_card_asihpi had members that
duplicate those in underlying hpi_adapter_obj or whose info
can be retrieved using hpi_adapter_get_info().
Print less info in probe function, it can be retrieved from /proc.
Avoid name redundancy: hpi_adapter_obj.adapter_type renamed to .type
- ALSA: asihpi - Increase debug response buffer size.
Enables retrieving more debug info in fewer transactions.
- ALSA: asihpi - Add new function codes.
- ALSA: asihpi - Remove unused structs and defs
Structs related to network flash update are not required in kernel.
- ALSA: asihpi - Update node types.
Add "Internal" node type.
Remove GPI and GPO node types.
- ALSA: asihpi - Only set sync if card supports hardware stream grouping.
- ALSA: asihpi - Relax drained check for more reliable playback startup.
- ALSA: asihpi - Correct stray capital letters in identifier.
- ALSA: asihpi - Use snd_pcm_debug_name to get substream name.
- ALSA: asihpi - Volumes and meters may have 1 or 2 channels.
The channel count can be queried to determine which.
- ALSA: asihpi - Low latency mode stream has fixed channel count.
Unlike other streams which support 1..max channels,
- ALSA: asihpi - Update copyright to 2011
- ALSA: asihpi - Split hpi version info into separate header file.
and update HPI version to 4.10
- ALSA: asihpi - fix pcm dma pointer tracking
Elapsed counter should only count data committed to snd_pcm_period_elapsed,
rather than all data available
- ALSA: asihp: Use kcalloc instead of kzalloc to allocate array
The advantage of kcalloc is, that will prevent integer overflows which could
result from the multiplication of number of elements and size and it is also
a bit nicer to read.
The semantic patch that makes this change is available
in https://lkml.org/lkml/2011/11/25/107
- ALSA: asihpi - use kzalloc()
Use kzalloc rather than kmalloc followed by memset with 0
This considers some simple cases that are common and easy to validate
Note in particular that there are no ...s in the rule, so all of the
matched code has to be contiguous
The semantic patch that makes this output is available
in scripts/coccinelle/api/alloc/kzalloc-simple.cocci.
More information about semantic patching is available at
http://coccinelle.lip6.fr/
- ALSA: asihpi - Clarify adapter index validity check
Avoids assigning possibly invalid address to pa, even if it
is never dereferenced.
Correct error response to reflect request object/function ids.
- ALSA: asihpi - Don't leak firmware if mem alloc fails
We leak the memory allocated to 'firmware' when we fail to
release_firmware() after a kmalloc() failure in hpi_dsp_code_open().
This patch should take care of the leak.
- ALSA: asihpi - off by one in asihpi_hpi_ioctl()
"adapter" is used as an array index in the adapters[] array so
the off by one would make us read past the end.
1c073b67979 "ALSA: asihpi - Remove spurious adapter index check"
reverted Dan Rosenberg's check that would have prevented the
overflow here.
- ALSA: asihpi - bug fix pa use before init.
Fixes bug introduced by 1c073b67.
Also declare pa local to block in which it is used.
- ALSA: Make snd_pcm_debug_name usable outside pcm_lib
Formatting a PCM name is useful for module debug too.
Add snd_prefix when making function public.
[minor coding-style fixes by tiwai]
- ALSA: asihpi - Replace with snd_ctl_boolean_mono_info()
- ALSA: asihpi - HPI version 4.08
HPI Version is used to check for firmware compatibility.
This version will accept 4.08.xx released firmware,
and will also accept 4.09.xx beta firmware
- ALSA: asihpi - Add volume mute controls
Mute functionality was recently added to the DSP firmware
- ALSA: asihpi - Control name updates
Add names corresponding to new HPI node types.
Shorten some names so that constructed names don't overflow the
maximum name length.
- ALSA: asihpi - Use size_t for sizeof result
- ALSA: asihpi - Explicitly include mutex.h
Because mutex is used in adapter struct defined here.
- ALSA: asihpi - Add new node and message defines
- ALSA: asihpi - Make local function static
Fixes a sparse warning.
- ALSA: asihpi - Fix minor typos and spelling
- ALSA: asihpi - Remove unused structures, macros and functions
- ALSA: asihpi - Remove spurious adapter index check
Subsystem requests don't have or need a valid adapter index.
The adapter index is already checked further on, before it is used to index
the adapters array. (Reverts 4a122c10f)
- ALSA: asihpi - Revise snd_pcm_debug_name, get rid of DEBUG_NAME macro
Work towards moving the function into alsa common header.
- ALSA: asihpi - DSP code loader API now independent of OS
The loader API has been revised so that OS specific data is kept
local to hpidspcd.c, and the public API is unchanged across OSes.
- ALSA: asihpi - Remove controlex structs and associated special data transfer code
Some cobranet control data would not fit in an original HPI message.
Now that HPI is able to transfer larger messages, this special handling
is no longer required.
- ALSA: asihpi - Increase request and response buffer sizes
Allow for up to 256 bytes of extra data on top of standard hpi
request and response sizes.
- ALSA: asihpi - Give more meaningful name to hpi request message type
Having a 'request message' makes more sense than a 'message message'
- ALSA: Remove unneeded version.h includes from sound/
In the sound/ directory there are two files (flagged by 'make
versioncheck'); sound/pci/asihpi/asihpi.c and
sound/soc/codecs/wm8991.c that include linux/version.h although they
don't need it. This patch removes the unneeded includes.
- ALSA: asihpi: Use angle brackets for system includes
Use the normal include style.
- ALSA: asihpi - Use %zd for size_t argument in error message (again)
This was reverted mistakenly in the recent update patch.
Fixed again.
Reported-by: Randy Dunlap <rdunlap@xenotime.net>
- ALSA: asihpi: Minor cleanups
Remove some unneeded defintions
Use %pR to print resources
Make some data const
Consistent braces for else
- ALSA: asihpi: Simplify driver unload cleanup
Replacing subsys_delete_adapter with adapter_delete
allows some special-case adapter lookup code to be removed.
- ALSA: asihpi: Standardise substream name generation
Define and use pcm_debug_name if CONFIG_SND_DEBUG
- ALSA: asihpi: Remove 2 unused functions
- ALSA: asihpi: MMAP for non-busmaster cards
Allow older non DMA capable cards to use MMAP by
emulating the DMA using read and write functions,
and getting rid of copy & silence callbacks that
were used only by older cards.
- ALSA: asihpi: Handle playback drained status better
Use the card drained status reporting for playback,
but allow it to persist for a few timer cycles before
signalling XRUN, to allow card to recover by itself.
- ALSA: asihpi: Update debug printing
Debug print full substream ID.
Other minor debug print updates.
- ALSA: snd-asihpi: Control naming
Clock source is neither capture nor playback,
so change 'Capture Clock' to 'Clock'.
Add spaces to control name string for consistency,
always 'PCM 0' , never 'PCM0'
- ALSA: asihpi - Update verbose debug print macros
Replace local VPRINTK1 with snd_printdd.
Create local snd_printddd instead of VPRINTK2 for most verbose debug.
In most cases let snd_printk supply default level for messages.
- ALSA: asihpi - Improve non-busmaster adapter operation
Make playback silence callback a no-op, card automatically outputs
silence when written data runs out.
Increasing update interval and thus minimum period avoids xrun on startup
or because of timer jitter.
- ALSA: asihpi - Support single-rate no-SRC cards
Cards without settable local samplerate and without SRC
still must have a valid samplerate.
This fixed rate is determined by reading the current rate for the card.
- ALSA: sound/pci/asihpi: check adapter index in hpi_ioctl
The user-supplied index into the adapters array needs to be checked, or
an out-of-bounds kernel pointer could be accessed and used, leading to
potentially exploitable memory corruption.
- ALSA: asihpi - Use %zd for size_t argument in error message
- ALSA: asihpi - HPI v4.06
Firmware version check depends on hpi version. Update so correct firmware
is accepted.
- ALSA: asihpi - Fix outstream start trigger for non-mmap adapters.
- ALSA: asihpi - Tighten firmware version requirements.
Difference in major.minor between driver and firmware is an error now.
Release version mismatch give a warning.
- ALSA: asihpi - Ensure all adapter data is cleared on device removal.
- ALSA: asihpi - Minor define updates
HPI version 4.05.32
Tweak HPI error code for backward compatibility.
Add BUILD to build-related defines.
- ALSA: asihpi - New functions prep for interrupt driven streams.
- ALSA: asihpi - Use consistent err return variable, change some bad variable names.
- ALSA: asihpi - Remove unused code and data.
- ALSA: asihpi - Clarify firmware id selection.
- ALSA: asihpi - Allow adapters with duplicate index jumpers to be discovered.
- ALSA: asihpi - Add volume mute control.
- ALSA: asihpi - Add snd_card_set_dev to init.
- ALSA: asihpi - Replace adapter list with single item in subsys response.
- ALSA: asihpi - Cosmetic + a minor comments.
- ALSA: asihpi - Remove int flag polling code preparing for stream interrupts.
Interrupt flag used for message handshake will be required for
stream interrupts, so conditionally compiled code without
HPI6205_NO_HSR_POLL defined can never be used; removing it.
- ALSA: asihpi - Code cleanup.
Remove unused function.
Simplify hpi_alloc_control_cache.
Remove useless assignment to struct subsequently freed.
- ALSA: asihpi - Reduce number of error codes returned to upper layers.
Create and use HPI_ERROR_DSP_COMMUNICATION _DSP_BOOTLOAD, rather than
backend-specific error codes (now returned as data with the error).
- ALSA: asihpi - Remove unused subsys pointer from all HPI functions.
asihpi.c don't link playback and capture streams, there is too much
offset between them.
- ALSA: asihpi - Update error codes.
Some error codes had duplicate meanings. Just use one.
- ALSA: asihpi - Checkpatch line lengths etc.
- ALSA: asihpi - Add include guard.
- ALSA: asihpi - Add adapter index to cache info for debug.
- ALSA: asihpi - Rewrite PCM timer function. Update control names.
Reported samples_played from card may be inaccurate, so don't use it.
Update control names to be closer to alsa standard practice.
Also fixed some accidentally lowercased strings.
[Removed adriver.h inclusion for external module builds by tiwai]
- ALSA: asihpi - Interrelated HPI tidy up.
Remove many unused functions.
Update some message and cache structs.
Use pci info directly from pci_dev.
Allow control cache elements with variable size, and handle
large message/response from dsp.
hpi6000 and hpi6205: fix error path when adapter bootload fails.
hpimsgx.c get rid of code duplicated in hpicmn.c
- ALSA: asihpi - HPI 4.05.14
All enum values numeric for easier finding, particularly error codes.
Remove many unused declarations.
- ALSA: asihpi - Simplify debug logging.
Log HPI messages and responses in consistent numeric format,
which can be post-processed to get strings.
- ALSA: asihpi - Poison adapter_index in message. Remove unused function.
- ALSA: asihpi - Switch to dev_printk.

Atmel AT73C213 DAC driver

- ALSA: atmel - update author email for ABDAC, AC97C and AT73C213
This patch updates the email address of the sound drivers supported by me to an
email account I will use on a more regular basis in the future.

Atmel on-chip Audio Bitstream DAC (ABDAC)

- sound-soc: move to dma_transfer_direction
fixup usage of dma direction by introducing dma_transfer_direction,
this patch moves asoc drivers to use new enum
- ALSA: atmel/ac97c: using software reset instead hardware reset if not available
- treewide: Convert uses of struct resource to resource_size(ptr)
Several fixes as well where the +1 was missing.
Done via coccinelle scripts like:
@@
struct resource *ptr;
@@
- ptr->end - ptr->start + 1
+ resource_size(ptr)
and some grep and typing.
Mostly uncompiled, no cross-compilers.
- ALSA: atmel - update author email for ABDAC, AC97C and AT73C213
This patch updates the email address of the sound drivers supported by me to an
email account I will use on a more regular basis in the future.

Au12x0/Au1550 PSC ASoC

- Add missing soc/* stub files
- MIPS: Alchemy: Improved DB1550 support, with audio and serial busses.
To: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/2868/
- MIPS: Alchemy: Basic support for the DB1300 board.
To: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/2867/
Patchwork: https://patchwork.linux-mips.org/patch/2919/
Patchwork: https://patchwork.linux-mips.org/patch/2928/
- ASoC: ac97c.c: use devm_ functions
The various devm_ functions allocate memory that is released when a driver
detaches. This patch uses devm_kzalloc, devm_request_mem_region and
devm_ioremap for data that is allocated in the probe function of a platform
device and is only freed in the remove function.
- ASoC: dbdma2.c: use devm_ functions
The various devm_ functions allocate memory that is released when a driver
detaches. This patch uses devm_kzalloc, devm_request_mem_region and
devm_ioremap for data that is allocated in the probe function of a platform
device and is only freed in the remove function.
- ASoC: dma.c: use devm_ functions
The various devm_ functions allocate memory that is released when a driver
detaches. This patch uses devm_kzalloc, devm_request_mem_region and
devm_ioremap for data that is allocated in the probe function of a platform
device and is only freed in the remove function.
- ASoC: i2sc.c: use devm_ functions
The various devm_ functions allocate memory that is released when a driver
detaches. This patch uses devm_kzalloc, devm_request_mem_region and
devm_ioremap for data that is allocated in the probe function of a platform
device and is only freed in the remove function.
- ASoC: psc-ac97.c: use devm_ functions
The various devm_ functions allocate memory that is released when a driver
detaches. This patch uses devm_kzalloc, devm_request_mem_region and
devm_ioremap for data that is allocated in the probe function of a platform
device and is only freed in the remove function.
- ASoC: psc-i2s.c: use devm_ functions
The various devm_ functions allocate memory that is released when a driver
detaches. This patch uses devm_kzalloc, devm_request_mem_region and
devm_ioremap for data that is allocated in the probe function of a platform
device and is only freed in the remove function.
- MIPS: Alchemy: Au1300 SoC support
Add basic support for the Au1300 variant(s):
- New GPIO/Interrupt controller
- DBDMA ids
- USB setup
- MMC support
- enable various PSC drivers
- detection code.
To: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/2866/
- ASoC: au1x: Add .owner to struct snd_soc_card
Add missing .owner of struct snd_soc_card. This prevents the module from being
removed from underneath its users.
Reported-by: Lothar Waßmann <LW@KARO-electronics.de>
- ASoC: Staticise alchemy_pcm_soc_platform
- ASoC: Staticise au1xpsc_soc_platform
- ASoC: Convert au1x directory to module_platform_driver
Factor out some boilerplate code.
- ASoC: Cleanup duplicated const
Commit 85e7652("ASoC: Constify snd_soc_dai_ops structs") accidentally
introduced a few duplicated consts. This patch cleans it up.
- ASoC: Constify snd_soc_dai_ops structs
Commit 1ee46ebd("ASoC: Make the DAI ops constant in the DAI structure")
introduced the possibility to have constant DAI ops structures, yet this is
barley used in both existing drivers and also new drivers being submitted,
although none of them modifies its DAI ops structure. The later is not
surprising since existing drivers are often used as templates for new drivers.
So this patch just constifies all existing snd_soc_dai_ops structs to eliminate
the issue altogether.
The patch was generated with the following coccinelle semantic patch:
// <smpl>
@@
identifier ops;
@@
-struct snd_soc_dai_ops ops =
+const struct snd_soc_dai_ops ops =
{ ... };
// </smpl>
- MIPS: Alchemy: remove all CONFIG_SOC_AU1??? defines
Now that no driver any longer depends on the CONFIG_SOC_AU1??? symbols,
it's time to get rid of them: Move some of the platform devices to the
boards which can use them, Rename a few (unused) constants in the header,
Replace them with MIPS_ALCHEMY in the various Kconfig files. Finally
delete them altogether from the Alchemy Kconfig file.
To: Linux-MIPS <linux-mips@linux-mips.org>
Patchwork: https://patchwork.linux-mips.org/patch/2707/
- ASoC: keep pointer to resource so it can be freed
Add a new variable for storing resources accessed subsequent to the one
accessed using request_mem_region, so the one accessed using
request_mem_region can be released if needed.
The resource variable names are also changed to be more descriptive.
This code is also missing some calls to iounmap.
The semantic match that finds this problem is as follows:
(http://coccinelle.lip6.fr/)
// <smpl>
@r@
expression E, E1;
identifier f;
statement S1,S2,S3;
@@
if (E == NULL)
{
... when != if (E == NULL || ...) S1 else S2
when != E = E1
*E->f
... when any
return ...;
}
else S3
// </smpl>
- ASoC: Remove unreachable code in au1xac97c_drvprobe and au1xi2s_drvprobe
- ASoC: au1x: use substream stream info directly
PCM_TX/RX are the same as SNDRV_PCM_STREAM_PLAYBACK/CAPTURE. Use
them directly.
- ASoC: au1x: update db1200 machine to the new way of things
The use of the "soc-audio" platform device is no longer en vogue,
update the code to the newer, simpler way of doing things.
- ASoC: au1x: remove automatic DMA device registration from PSC drivers
The PSC audio drivers (psc-ac97/psc-i2s) register the DMA platform_device
on their own. This is frowned upon, from now on board code must
register a simple pcm dma platform device for each PSC with sound duties.
- ASoC: Add a DB1x00 AC97 machine driver
Add a machine driver suitable for the AC97 part on the DB1000/DB1500/DB1100
boards.
Run-tested on DB1500.
- ASoC: Alchemy AC97C/I2SC audio support
This patch adds ASoC support for the AC97 and I2S controllers
on the old Au1000/Au1500/Au1100 chips,
AC97 Tested on a Db1500. I2S untested since none of the boards
actually have an I2S codec wired up (just test pins).
- ASoC: Remove -codec from WM8731 driver name

Avance Logic ALS300/300+ driver

- ALSA: Add missing module parameters for als300 and cs5530 drivers
These drviers defined only variables but didn't declare as module
parameters. Also fix the enable variable to bool type.
- ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/*
The name argument of request_irq() appears in /proc/interrupts, and
it's quite ugly when the name entry contains a space or special letters.
In general, it's simpler and more readable when the module name appears
there, so let's replace all entries with KBUILD_MODNAME.
- ALSA: Use KBUILD_MODNAME for pci_driver.name entries
The convention for pci_driver.name entry in kernel drivers seem to be
the module name or equivalent ones. But, so far, almost all PCI sound
drivers use more verbose name like "ABC Xyz (12)", and these are fairly
confusing when appearing as a file name.
This patch converts the all pci_driver.name entries in sound/pci/* to
use KBUILD_MODNAME for more unified appearance.

CMI8330 driver

- ALSA: mpu401: clean up interrupt specification
The semantics of snd_mpu401_uart_new()'s interrupt parameters are
somewhat counterintuitive: To prevent the function from allocating its
own interrupt, either the irq number must be invalid, or the irq_flags
parameter must be zero. At the same time, the irq parameter being
invalid specifies that the mpu401 code has to work without an interrupt
allocated by the caller. This implies that, if there is an interrupt
and it is allocated by the caller, the irq parameter must be set to
a valid-looking number which then isn't actually used.
With the removal of IRQF_DISABLED, zero becomes a valid irq_flags value,
which forces us to handle the parameters differently.
This patch introduces a new flag MPU401_INFO_IRQ_HOOK for when the
device interrupt is handled by the caller, and makes the allocation of
the interrupt to depend only on the irq parameter. As suggested by
Takashi, the irq_flags parameter was dropped because, when used, it had
the constant value IRQF_DISABLED.

CMI8788 (Oxygen) driver

- ALSA: virtuoso: Xonar DS: fix polarity of front output
The two DACs for the front output and the surround/center/LFE/back
outputs are wired up out of phase, so when channels are duplicated,
their sound can cancel out each other and result in a weaker bass
response. To fix this, reverse the polarity of the neutron flow to
the front output.
Reported-any-tested-by: Daniel Hill <daniel@enemyplanet.geek.nz>
- ALSA: virtuoso: add S/PDIF input support for all Xonars
All Xonar cards support S/PDIF input, but the cards without optical or
coaxial plugs have only undocumented pin connectors. Support for the
ST/STX was already added in a previous patch; this adds support for the
D1/DX (JP2), DG (J5), DS (J5), and HDAV Slim (J12).
Many thanks to Zoltan Miklos for testing the DS and DX.
- ALSA: virtuoso: fix Essence ST(X) S/PDIF input
On the Xonar Essence ST/STX, the connector J14 has been confirmed to be
a digital input, so enable it in the driver.
- ALSA: virtuoso: fix silent analog output on Xonar Essence ST Deluxe
Commit dd203fa97bd5 (ALSA: virtuoso: remove non-working controls on
Essence ST Deluxe) made it impossible to adjust the volume after the
driver initialized it to muted.
Ensure that those DACs that can be accessed with I2C are initialized
to the same volume that is the reset default of the DAC without I2C.
- ALSA: firewire-speakers, oxygen, ua101: allow > 10 s periods
Since commit f2b3614cefb6 (Don't check DMA time-out too shortly),
drivers need no longer restrict their PCM period length to be shorter
than 10 seconds.
- ALSA: oxygen: fix output routing on Xonar DG
This card uses separate I2S outputs for the front speakers and
headphones, and reverses the order of the three speaker outputs.
To work around this, add a model-specific callback to adjust the
controller's playback routing.

CS5535 driver

- ALSA: cs5535 - Fix an endianness conversion
desc->size is supposed to be a le16 type. On a big endian system the
current code will set ->size to zero. We fixed a similar bug
on the next line but missed this one.
- ALSA: cs5535 - Fix invalid big-endian conversions
Fix the wrongly converted short values:
sound/pci/cs5535audio/cs5535audio_pcm.c:152: warning: large integer implicitly truncated to unsigned type
sound/pci/cs5535audio/cs5535audio_pcm.c:160: warning: large integer implicitly truncated to unsigned type

Compatibility header files

- More fixes for pm_qos changes in 3.2-rc1
- Fix recent PM change (pm_qos_params.h -> pm_qos.h renaming) for pcm.h
- More fixes for kABI compatibility with older 2.6 kernels

Creative Sound Blaster X-Fi (20K1/20K2)

- ALSA: ctxf: Use kcalloc instead of kzalloc to allocate array
The advantage of kcalloc is, that will prevent integer overflows which could
result from the multiplication of number of elements and size and it is also
a bit nicer to read.
The semantic patch that makes this change is available
in https://lkml.org/lkml/2011/11/25/107
- ALSA: ctxfi: Bump playback substreams to 256
There are references in the code to 256 sources, so I tested it with 256 aplays,
of which the first and last with real data and the rest playing /dev/zero .
Also increase amount of page tables, so the default aplay size works.
- ALSA: ctxfi: Change PLL initialization code
This is a reworked patch from Creative to change the PLL code to address
unreliable 44100Hz initialization.
- ALSA: ctxfi: Implement a combined capabilities query method to replace multiple have_x query methods.
- ALSA: ctxfi: Add support for Creative Titanium HD
Initialise model-specific DAC and ADC parts.
Add controls for output and mic source selection.
Rename some mixer controls according to ControlNames.txt.
Remove Playback switches for Line-in and IEC958-in - these
were controlling the input mute/unmute which affected
capture too. Use the capture switches to control the
input mute/unmute instead - it's less confusing.
Initialise the WM8775 to invert the left-right clock
to swap the left and right channels of the mic and aux
input.
- ALSA: ctxfi - use list_move() instead of list_del()/list_add() combination
- ALSA: ctxfi - Clear input settings before initialization
Clear input settings before initialization.
- ALSA: ctxfi - Fix SPDIF status retrieval
SDPIF status retrieval always returned the default settings instead of
the actual ones.
- ALSA: ctxfi - Fix incorrect SPDIF status bit mask
SPDIF status mask creation was incorrect.
- ALSA: ctxfi - Fix microphone boost codes/comments
microphone boost was set at +12dB, not +20dB (like in Windows driver
and in adc_conf structure declaration), some comments added.

Digigram Lola PCI-e boards

- Add build stubs for snd-lola driver
- ALSA: lola - Fix for Lola280 board
- add/fix comments and debug messages
- fix incomplete matrix init
- comment out creation of buggy lola_dest_gain_mixer controls
- minor optimisations
- ALSA: lola - Fix section mismatch
Add missing __devinit.
- ALSA: lola - fix lola build
sound/pci/lola/Makefile was trying to build lola modules even
when PCI and SND_LOLA were not enabled, causing build errors:
ERROR: "snd_pcm_hw_constraint_step" [sound/pci/lola/snd-lola.ko] undefined!
ERROR: "snd_pcm_period_elapsed" [sound/pci/lola/snd-lola.ko] undefined!
ERROR: "snd_dma_alloc_pages" [sound/pci/lola/snd-lola.ko] undefined!
ERROR: "snd_pcm_hw_constraint_integer" [sound/pci/lola/snd-lola.ko] undefined!
ERROR: "snd_pcm_sgbuf_ops_page" [sound/pci/lola/snd-lola.ko] undefined!
ERROR: "snd_pcm_set_ops" [sound/pci/lola/snd-lola.ko] undefined!
ERROR: "snd_pcm_lib_free_pages" [sound/pci/lola/snd-lola.ko] undefined!
ERROR: "snd_pcm_lib_ioctl" [sound/pci/lola/snd-lola.ko] undefined!
ERROR: "snd_pcm_lib_malloc_pages" [sound/pci/lola/snd-lola.ko] undefined!
ERROR: "snd_pcm_sgbuf_get_chunk_size" [sound/pci/lola/snd-lola.ko] undefined!
ERROR: "snd_dma_free_pages" [sound/pci/lola/snd-lola.ko] undefined!
ERROR: "snd_pcm_lib_preallocate_pages_for_all" [sound/pci/lola/snd-lola.ko] undefined!
ERROR: "snd_pcm_new" [sound/pci/lola/snd-lola.ko] undefined!
Fix the Makefile to build only when CONFIG_SND_LOLA is enabled.
- ALSA: lola - Yet another linux/delay.h inclusion
- ALSA: lola - Add missing inclusion of linux/delay.h
- ALSA: lola - Implement polling_mode like hd-audio
Also protect the call of lola_update_rirb() with spinlock.
- ALSA: lola - Rename to Digital SRC Capture Switch
Renamed to Digial SRC Capture Switch for more correct representation.
Also fixed analog volume control on Lola161611 and lola881.
- ALSA: lola - Add sync in loop implementation
For assuring the synchronized state with the pause operation,
loop over the all linked streams and waits until all get ready
in a loop.
- ALSA: lola - Add SRC refcounting
Added the refcounting for the exclusive SRC control.
Also, fixed the possible stall after PCM pause operations.
- ALSA: lola - Allow granularity changes
Add some sanity checks.
Change PCM parameters appropriately per granularity.
- ALSA: lola - Use SG-buffer
Completely switch to SG-buffer now, as it's working stably.
- ALSA: lola - Add Lola-specific module options
Added granularity and sample_rate_min module options.
The former controls the h/w access granularity. As default, it's set
to the max value 32.
The latter controls the minimum sample rate in Hz, as default 16000.
- ALSA: lola - Fix PCM stalls
- ALSA: lola - Use a single BDL
Use a single BDL for both buffers instead of allocating for each.
Also a few tune-up to avoid the stream stalls in the PCM code and
the prelimianry work for SG-buffer support are added, too.
- ALSA: lola - Suppress the debug print
Use snd_printdd() for less important debug messages.
- ALSA: lola - Changes in proc file
The codec proc file becomes a read only that shows the codec widgets
in a text form. A new proc file, codec_rw, is introduced instead for
accessing the Lola verb directly by reading and writing to it.
Also, regs proc file shows the contents of DSD, too.
- ALSA: lola - Make SRC helper global
Make lola_sample_rate_convert() global so that it can be accessed from
other files.
- ALSA: Add the driver for Digigram Lola PCI-e boards
Added a new driver for supporting Digigram Lola PCI-e boards.
Lola has a similar h/w design like HD-audio but with extended verbs.
Thus the driver is written similarly like HD-audio driver in the bus
part. The codec part is rather written in a fixed way specific to the
Lola board because of the verb incompatibility.
The driver provides basic PCM, supporting multi-streams and mixing.

Digigram VX Pocket driver

- ALSA: pcmcia - Use pcmcia_request_irq()
The drivers don't require the exclusive irqs. Let's fix the deprecated
warnings.
- pcmcia: Make struct pcmcia_device_id const, sound drivers edition
Make declarations of struct pcmcia_device_id const.
- ALSA: use linux/io.h to fix compile warnings
For helping to reduce Greert's regression list...
src/sound/drivers/mtpav.c: error: implicit declaration of function 'inb'
src/sound/drivers/mtpav.c: error: implicit declaration of function 'outb'
...

Documentation

- ALSA: compress offload API documentation
The patch adds the documentation file explaining the API
- ALSA: hda: remove unused quirk for inverted mute led
Commit b99a776d0b17ae0f3a54e86009887a00ac4889d0 removed all effects of
the STAC92HD83* model quirk "hp". However, it left the model selection
and documentation behind, confusing users with inverted mute
leds. Completely remove this quirk and its documentation.
- ASoC: Remove references to corgi and spitz from machine driver document
They're not currently actively worked on, the hardware being rather
obsolete by now.
- ALSA: hda - Update URLs in document
Some stuff was moved from kernel.org to other places.
- ALSA: hda/realtek - Remove all ALC262-quirk codes
Now that model=ultra is supported well by the auto-parser, we can get rid
of the whole alc262_quirks.c and its related codes.
- ALSA: hda - fix internal mic on Dell Vostro 3500 laptop
Fix the not working internal mic on Dell Vostro 3500 laptop by introducing the
new model dell-vostro-3500.
- ALSA: hda - Fix typo
- ALSA: hda - Add documentation for codec specific mixer controls of Analog codecs
* Channel Mode
This is an enum control to change the surround-channel setup,
appears only when the surround channels are available.
It gives the number of channels to be used, "2ch", "4ch" abd "6ch".
According to the configuration, this also controls the
jack-retasking of multi-I/O jacks.
* Independent HP
When this enum control is enabled, the headphone output is routed
from an individual stream (the third PCM such as hw:0,2) instead of
the primary stream.
- ALSA: hda - Allow patching with any vendor/subsystem ids
In the ugly real world, there area really broken devices that don't set
codec SSID correctly. In such a case, the ID can be random, thus the
patching won't work reliably.
For applying the patch forcibly to such a device, the driver will skip
the vendor and/or subsystem ID checks when zero or a negative number is
given in [codec] section.
- ALSA: hda - Add snoop option
Added a new option "snoop" for the traffic control of the HD-audio
controller chip. When set to 0, the non-snooping mode is used with
the traffic control bit is set in each stream control register.
This may allow better operations in the low power mode, but the actual
implementation is depending pretty much on the chipset.
As already implemented, more or less each chipset has own snoop-control
register bit. Now this setup refers to the snoop option, too.
Also, a new VIA chipset may require the non-snooping mode when set so
in BIOS. In such a case, the option value is overridden.
As default, it's still set to snoop=1 for keeping the same behavior as
before. In near future, it'll be set to 0 as default after checking
it works in every system well.
- ALSA: hda - Remove the rest of ALC662 quirks
The rest of ALC662 quirks are only for desktops, and they should work
with the auto-parser.
- ALSA: hda - Remove ALC662 ASUS eeepc-ep20 model quirk
Since the recent fixes, this device works with the auto-parser well.
Let's kill it.
- ALSA: hda - Rewrite Lenovo X200 quirk with pincfg-fix using auto-parser
Introduce the pincfg table to patch_conexant.c for fixing up the extra
pin-configuration for auto-parser. As an example, Lenovo X200 model is
replaced with this new mechanism. (This also fixes the wrong mixer
elements for docking-station I/O in the previous model quirk
automagically.)
- ALSA: hda - Remove ALC662 ASUS M51VA, G71V, H13 and G50V model quirks
These models work now with the BIOS auto-parser, so let's drop them.
- ALSA: hda - Rewrite ALC269 laptop-amic,dmic,&co quirks with fixups
Similarly like ALC662 asus-mode* models, rewrite the laptop-amic and
dmic models with the static pin-config tables.
Now we can get rid of all alc269_quirks.c.
- ALSA: hda - Remove all ALC861 and ALC861-VD quirks
Let's remove the rest of ALC861 and ALC861-VD quirks.
If any breakage is found, it can be fixed easily via the pin-config
table update.
- ALSA: hda - Remove ALC662 model=levono-101e model quirk
- ALSA: hda - Remove ALC662 eeepc-p701 and ecs models
These are confirmed to work with the auto-parser with pincfg fixups.
- ALSA: hda - Get rid of left-over chunks by previous cleanups
Also update the model description, too.
- ALSA: hda - Remove ALC861 uniwill-m31, toshiba, asus and asus-laptop models
These are confirmed to work with the auto-parser.
- ALSA: hda - Add documentation for codec-specific mixer controls
- ALSA: hda - Remove ALC268 model quirks
Get rid of the rest of ALC268 model quirks. They are all confirmed to
work with the auto-parser, too.
- ALSA: hda - Replace ALC269 quanta and lifebook models with fixups
Implement new fixup entries for Quanta FL1 and Fujitsu Lifebook
specific COEF and pin configurations. Removed the model entries
from alc269_quirks.c.
- ALSA: hda - Remove acer, acer-aspire and acer-dmic models for ALC268
Moved some code to alc269_quirks.c for dependency, too.
- ALSA: hda - Remove ALC269 model=futjisu and Acer
Both are supported by the auto-parser.
- ALSA: hda - Remove dell, dell-zm1 and samsung-nc10 models for ALC272
The auto-parser works for these models.
- ALSA: hda - Remove ALC260 HP model quirks
ALC260 HP models work with the BIOS auto-parser. Let's cut them off.
Also move alc260_hp_master_*() to alc262_quirks.c as these are still
referred from there.
- ALSA: hda - Remove ALC262 HP and sony-assamd quirks
HP and sony-assamd models work with the BIOS auto-parser nowadays,
so let's reduce the unnecessary code.
- ALSA: hda - Add tracepoint for unsolicited events
- ALSA: hda - Add documentation for tracepoints
- ALSA: hda: option to enable arbitrary buffer/period sizes
Add new parameter to disable rounding of buffer/period sizes to
multiples of 128 bytes. This is more efficient in terms of memory
access but isn't required by the HDA spec and prevents users from
specifying exact period/buffer sizes. For example for 44.1kHz, a
period size set to 20ms will be rounded to 19.59ms.
Tested and enabled on Intel HDA controllers. Option is disabled by
default for other controllers.
Tested-by: Wu Fengguang <fengguang.wu@intel.com>
- Fix common misspellings
Fixes generated by 'codespell' and manually reviewed.
- ALSA: Add the driver for Digigram Lola PCI-e boards
Added a new driver for supporting Digigram Lola PCI-e boards.
Lola has a similar h/w design like HD-audio but with extended verbs.
Thus the driver is written similarly like HD-audio driver in the bus
part. The codec part is rather written in a fixed way specific to the
Lola board because of the verb incompatibility.
The driver provides basic PCM, supporting multi-streams and mixing.
- ALSA: emu10k1 - Fix "Music" controls to "Synth" controls in documents
- ALSA: hda - Fix alc662_dac_nid and change "6stack-dig" to "5stack-dig"
alc662 series only have 3 DAC, so it can only support 5stack-dig
instead of 6stack-dig.
[updated HD-Audio-Models.txt as well by tiwai]
- Documentation: fix minor typos/spelling
Fix some minor typos:
* informations => information
* there own => their own
* these => this

EMU10K1/EMU10K2 driver

- Fixup emu10k1_main.patch
An addition of a new card broke the patch.
- ALSA: emu10k1 - add another Audigy 2 ZS ID
0x20051102 is an Audigy 2 ZS.
- ALSA: emu10k1: allow to disable the SRC
Add the PCM rule to allow disabling the PCM playback SRC.
- ALSA: emu10k1: Add details for E-mu 0404 PCIe version
This patch adds the necessary details to support the PCIe version of
E-MU's 0404 card.
From comparing the PCBs it seems the PCIe version just added a PCIe
chipset and left all other components pretty much in place.
For anyone intrigued to take a look at the PCB there are pictures I took
at <http://babelmonkeys.de/~florob/E-MU%200404/>.
- ALSA: emu10k1 - Add dB range to Bass and Treble for SB Live!
As the "Wave", "Wave Surround" or "Front" Playback Volume must be
changed to 70% (i.e. -12 dB) so that distortion won't occur when
increase Bass and Treble from 50% to 100%, so the maximum gain in
Bass and Treble are +12 dB.
- ALSA: emu10k1 - Remove "Front" controls only for STAC9758/59
Remove "Front Playback Volume" and "Front Playback Switch" from emu10k1 only
for STAC9758/59
Since commit 7eae36fbd5ea9db3d3fe0d671199121be782a5b3
"Fix the confliction of 'Front' control",
the "Front Playback Volume" control created by commit
edf8e4565c44bffbb4d09e8984df941d0ae9e6e8
"emu10k1: Front channels via fxbus 8 and 9"
was removed
"Front Playback Volume" and "Surround Playback Volume" have same dB range
since I2S DAC of SB Live! and SB Live! Platinum does not has any hardware
volume control.
- ALSA: emu10k1 - Remove CLFE-related controls for SB Live! Platinum CT4760P
SB Live! Platinum CT4760P is just a 4 channels sound card with STAC9721 and
Philips UDA1334 DAC.
- ALSA: emu10k1 - emu10k1_main.c remove one to many l's in the word.
The patch below removes an extra "l" in the word.

EMU8000 driver

- sound: add moduleparam.h to users of module_param/MODULE_PARM_DESC
These files were getting access to these two via the implicit
presence of moduleparam.h everywhere. But that is being fixed, so
get these guys what they need in advance.

ENS1370/1+ driver

- ALSA: ens1371: fix Creative Ectiva support
To make the EV1938 chip work, add a magic bit and an extra delay.
Tested-by: Tino Schmidt <mailtinoshomepage@gmx.net>

ES1968 driver

- ALSA: es1968,maestro3 - Use work for hw-volume control
Instead of tasklet, use workq for handling the hw-volume control.
This reduces lots of spinlocks.
- ALSA: tea575x: use better card and bus names
Provide real card and bus_info instead of hardcoded values.
- ALSA: tea575x: remove unused card from struct
struct snd_card *card is present in struct snd_tea575x but never used.
Remove it.
- ALSA: tea575x: remove freq_fixup from struct
freq_fixup is a constant, no need to hold it in struct snd_tea575x and set in
each driver.
- ALSA: es1968: convert TEA575x support to new interface
Use common functions to access TEA575x tuner - remove original read/write
functions and provide new pin manipulation functions instead.
Tested with SF64-PCE2 card.
- ALSA: es1968: add radio (tea575x tuner) support
Add TEA5757 radio tuner support to es1968 driver. This is found at least on
MediaForte SF64-PCE2 sound cards.

Echoaudio driver

- atomic: use <linux/atomic.h>
This allows us to move duplicated code in <asm/atomic.h>
(atomic_inc_not_zero() for now) to <linux/atomic.h>
Reviewed-by: Eric Dumazet <eric.dumazet@gmail.com>

FM801 driver

- Fix fuzz in pci/fm801.patch
- ALSA: fm801 - Clean up redundant reference to snd_fm801_tea575x_gpios[]
Use macro to improve readability.
- ALSA: fm801: Gracefully handle failure of tuner auto-detect
Commit 9676001559fce06e37c7dc230ab275f605556176
("ALSA: fm801: add error handling if auto-detect fails") seems to
break systems that were previously working without a tuner.
As a bonus, this should fix init and cleanup for the case where the
tuner is explicitly disabled.
Reported-and-tested-by: Hor Jiun Shyong <jiunshyong@gmail.com>
References: http://bugs.debian.org/641946
- ALSA: fm801: Fix double free in case of error in tuner detection
Commit 9676001559fce06e37c7dc230ab275f605556176
("ALSA: fm801: add error handling if auto-detect fails") added
incorrect error handling.
Once we have successfully called snd_device_new(), the cleanup
function fm801_free() will automatically be called by snd_card_free()
and we must *not* also call fm801_free() directly.
Reported-by: Hor Jiun Shyong <jiunshyong@gmail.com>
References: http://bugs.debian.org/641946
- ALSA: fm801: add error handling if auto-detect fails
In the original code if auto detect failed and tea575x_tuner == 4
then we copy bogus information to chip->tea.card. I've changed the
autodetect code to cleanup and return -ENODEV on error instead.
- ALSA: fm801: clean-up radio-related Kconfig
Remove TEA575X_RADIO define from fm801.c.
Also update Kconfig help text to include all supported cards.
- ALSA: tea575x: use better card and bus names
Provide real card and bus_info instead of hardcoded values.
- ALSA: tea575x: remove unused card from struct
struct snd_card *card is present in struct snd_tea575x but never used.
Remove it.
- ALSA: tea575x: remove freq_fixup from struct
freq_fixup is a constant, no need to hold it in struct snd_tea575x and set in
each driver.
- ALSA: fm801: implement TEA575x tuner autodetection
Autodetect TEA575x tuner connection type during init. This allows tuner to
work out-of-the box.
tea575x_tuner module parameter remains functional to force tuner type.
Tested with SF256-PCP and SF64-PCR.
- ALSA: fm801: convert TEA575x support to new interface
Use common functions to access TEA575x tuner - remove original read/write
functions and provide new pin manipulation functions instead.
Also convert the original triple implementation to a simple GPIO pin map.
Tested with SF256-PCP and SF64-PCR (added the GPIO pin for MO/ST signal
for them).
SF256-PCS untested (pin for MO/ST signal is a guess).
- ALSA: tea575x-tuner: remove dev_nr
Remove unused dev_nr from struct tea575x_tuner.

Firewire driver

- Fix build of isight driver with 2.6.39 or older kernel
- Fix build of firewire drivers with 2.6.39 kernel
- Add build stub for isight
- add isight build stub
Add support files for the new snd-isight driver.
- add firewire build stubs
Add build stubs and related support for the new FireWire modules.
- treewide: use __printf not __attribute__((format(printf,...)))
Standardize the style for compiler based printf format verification.
Standardized the location of __printf too.
Done via script and a little typing.
$ grep -rPl --include=*.[ch] -w "__attribute__" * | \
grep -vP "^(tools|scripts|include/linux/compiler-gcc.h)" | \
xargs perl -n -i -e 'local $/; while (<>) { s/\b__attribute__\s*\(\s*\(\s*format\s*\(\s*printf\s*,\s*(.+)\s*,\s*(.+)\s*\)\s*\)\s*\)/__printf($1, $2)/g ; print; }'
[akpm@linux-foundation.org: revert arch bits]
- ALSA: firewire-speakers: fix locking
There is a lock inversion between fwspk->mutex and pcm->open_mutex
reported by lockdep when fwspk_hw_free is called.
Fixed by copying the fix from the same former issue in the isight
sound driver (commit f3f7c1837f6bcae3601fc535b339426868bf1549
"ALSA: isight: fix locking").
- ALSA: isight: remove superfluous field
Remove a field that is not used at all. This remained from
earlier tests, but the current driver has decided not to handle
iris notifications.
- ALSA: firewire-speakers, oxygen, ua101: allow > 10 s periods
Since commit f2b3614cefb6 (Don't check DMA time-out too shortly),
drivers need no longer restrict their PCM period length to be shorter
than 10 seconds.
- ALSA: isight: adjust for new queueing API
Since commit 13882a82ee16 (optimize iso queueing by setting
wake only after the last packet), drivers are required to call
fw_iso_context_queue_flush() after queueing a batch of packets.
The missing call would have an effect only if the controller
queue underruns, but then the DMA would stop completely.
- ALSA: isight: fix locking
Lockdep complains about conflicts between isight->mutex,
ALSA's register_mutex, mm->mmap_sem, and pcm->open_mutex.
This can be fixed by moving the calls to isight_pcm_abort(),
snd_card_disconnect(), and fw_iso_resources_update() out of
isight->mutex. These functions are designed to be called
asynchronously; the mutex needs to protect only the device
streaming state modified by isight_start/stop_streaming().
Reported-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
- ALSA: isight: fix hang when unplugging a running device
When aborting a PCM stream, the xrun is signaled only if the stream is
running. When disconnecting a PCM stream, calling snd_card_disconnect()
too early would change the stream into a non-running state and thus
prevent the xrun from being noticed by user space.
To prevent this, move the snd_card_disconnect() call after the xrun.
- ALSA: isight: wrap up register accesses
[cl: removed superfluous variable]
- ALSA: isight: add AudioEnable register write
which is needed to get the iSight to talk.
- ALSA: isight: fix divide error when queueing packets
Set the .header_size field when queueing packets to avoid a division by
zero.
- ALSA: isight: fix packet requeueing
After handling a received packet, we want to resubmit the same packet,
so do not increase the packet index too early.
- ALSA: isight: fix isight_pcm_abort() crashes
Fix crashes in isight_pcm_abort() that happen when the driver tries to
access isight->pcm->runtime which does not exist when the device is not
open. Introduce a new field pcm_active to track this state.
Reported-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
- ALSA: isight: remove experimental status
Experiments have shown this driver to work now.
Tested-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
- ALSA: add Apple iSight microphone driver
This adds an experimental driver for the front and rear microphones of
the Apple iSight web camera.
- firewire: optimize iso queueing by setting wake only after the last packet
When queueing iso packets, the run time is dominated by the two
MMIO accesses that set the DMA context's wake bit. Because most
drivers submit packets in batches, we can save much time by
removing all but the last wakeup.
The internal kernel API is changed to require a call to
fw_iso_context_queue_flush() after a batch of queued packets.
The user space API does not change, so one call to
FW_CDEV_IOC_QUEUE_ISO must specify multiple packets to take
advantage of this optimization.
In my measurements, this patch reduces the time needed to queue
fifty skip packets from userspace to one sixth on a 2.5 GHz CPU,
or to one third at 800 MHz.
- firewire: octlet AT payloads can be stack-allocated
We do not need slab allocations anymore in order to satisfy
streaming DMA mapping constraints, thanks to commit da28947e7e36
"firewire: ohci: avoid separate DMA mapping for small AT payloads".
(Besides, the slab-allocated buffers that firewire-core, firewire-sbp2,
and firedtv used to provide for 8-byte write and lock requests were
still not fully portable since they crossed cacheline boundaries or
shared a cacheline with unrelated CPU-accessed data. snd-firewire-lib
got this aspect right by using an extra kmalloc/ kfree just for the
8-byte transaction buffer.)
This change replaces kmalloc'ed lock transaction scratch buffers in
firewire-core, firedtv, and snd-firewire-lib by local stack allocations.
Perhaps the most notable result of the change is simpler locking because
there is no need to serialize usages of preallocated per-device buffers
anymore. Also, allocations and deallocations are simpler.
- ALSA: firewire-speakers: fix hang when unplugging a running device
When aborting a PCM stream, the xrun is signaled only if the stream is
running. When disconnecting a PCM stream, calling snd_card_disconnect()
too early would change the stream into a non-running state and thus
prevent the xrun from being noticed by user space.
To prevent this, move the snd_card_disconnect() call after the xrun.
- ALSA: firewire - msleep needs delay.h
fixes this error:
sound/firewire/fcp.c: In function 'fcp_avc_transaction':
sound/firewire/fcp.c:103: error: implicit declaration of function 'msleep'
- ALSA: firewire-lib, firewire-speakers: handle packet queueing errors
Add an AMDTP stream error state that occurs when we fail to queue
another packet. In this case, the stream is stopped, and the error can
be reported when the application tries to restart the PCM stream.
- ALSA: firewire-lib: allocate DMA buffer separately
For correct cache coherency on some architectures, DMA buffers must be
allocated in a different cache line than data that is concurrently used
by the CPU.
- ALSA: firewire-lib: use no-info SYT for packets without SYT sample
In non-blocking mode, the SYT_INTERVAL is larger than the number of
audio frames in each packet, so there are packets that do not contain
any frame to which the SYT could be applied. For these packets, the
SYT must not be the timestamp of the next valid SYT frame, but the
special no-info SYT value.
This fixes broken playback on the FireWave at 44.1 kHz.
- ALSA: add LaCie FireWire Speakers/Griffin FireWave Surround driver
Add a driver for two playback-only FireWire devices based on the OXFW970
chip.
v2: better AMDTP API abstraction; fix fw_unit leak; small fixes
v3: cache the iPCR value
v4: FireWave constraints; fix fw_device reference counting;
fix PCR caching; small changes and fixes
v5: volume/mute support; fix crashing due to pcm stop races
v6: fix build; one-channel volume for LaCie
v7: use signed values to make volume (range checks) work; fix function
block IDs for volume/mute; always use channel 0 for LaCie volume
Tested-by: Jay Fenlason <fenlason@redhat.com>

Generic drivers

- ALSA: module_param: make bool parameters really bool
module_param(bool) used to counter-intuitively take an int. In
fddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy
trick.
It's time to remove the int/unsigned int option. For this version
it'll simply give a warning, but it'll break next kernel version.
- ALSA: convert sound/* to use module_platform_driver()
This patch converts the drivers in sound/* to use the
module_platform_driver() macro which makes the code smaller and a bit
simpler.
- ALSA: aloop - Use vmalloc buffer
snd-aloop driver is virtual and has no need for allocating contiguous
pages. It'll be more system-friendly to use vmalloc buffers.
Tested-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
- sound: irq: Remove IRQF_DISABLED
Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
We run all interrupt handlers with interrupts disabled
and we even check and yell when an interrupt handler
returns with interrupts enabled (see commit [b738a50a:
genirq: Warn when handler enables interrupts]).
So now this flag is a NOOP and can be removed.
- i8253: Make pcsp sound driver use the shared i8253_lock
Link: http://lkml.kernel.org/r/20110601180610.532642190@duck.linux-mips.net
- i8253: Create linux/i8253.h and use it in all 8253 related files
Link: http://lkml.kernel.org/r/20110601180610.054254048@duck.linux-mips.net
arch/arm/mach-footbridge/isa-timer.c | 2 +-
arch/mips/cobalt/time.c | 2 +-
arch/mips/jazz/irq.c | 2 +-
arch/mips/kernel/i8253.c | 2 +-
arch/mips/mti-malta/malta-time.c | 2 +-
arch/mips/sgi-ip22/ip22-time.c | 2 +-
arch/mips/sni/time.c | 2 +-
arch/x86/kernel/apic/apic.c | 2 +-
arch/x86/kernel/apm_32.c | 2 +-
arch/x86/kernel/hpet.c | 2 +-
arch/x86/kernel/i8253.c | 2 +-
arch/x86/kernel/time.c | 2 +-
drivers/block/hd.c | 2 +-
drivers/clocksource/i8253.c | 2 +-
drivers/input/gameport/gameport.c | 2 +-
drivers/input/joystick/analog.c | 2 +-
drivers/input/misc/pcspkr.c | 2 +-
include/linux/i8253.h | 11 +++++++++++
sound/drivers/pcsp/pcsp.h | 2 +-
19 files changed, 29 insertions(+), 18 deletions(-)
- ALSA: aloop - Fix possible IRQ lock inversion
loopback_pos_update() can be called in the timer callback, thus the lock
held should be irq-safe. Otherwise you'll get AB/BA deadlock together
with substream->self_group.lock.
Reported-and-tested-by: Knut Petersen <Knut_Petersen@t-online.de>
- ALSA: use linux/io.h to fix compile warnings
For helping to reduce Greert's regression list...
src/sound/drivers/mtpav.c: error: implicit declaration of function 'inb'
src/sound/drivers/mtpav.c: error: implicit declaration of function 'outb'
...

HDA Codec driver

see Detailed HDA changes v1.0.24 v1.0.25

HDA Intel driver

see Detailed HDA changes v1.0.24 v1.0.25

HDA generic driver

see Detailed HDA changes v1.0.24 v1.0.25

HR timer driver

- ALSA: hrtimer: remove superfluous tasklet invocation
Commit bb758e9637e5ddc removed snd_hrtimer_callback() from the hardware
interrupt handler, thus moving it into a tasklet, but did not tell the
ALSA timer framework about this, so the timer handling would now be done
in the ALSA timer tasklet scheduled from another tasklet.
To fix this, add the flag to tell the ALSA timer framework that the
timer handler is already being invoked in a tasklet.
- ALSA: hrtimer: handle delayed timer interrupts
If a timer interrupt was delayed too much, hrtimer_forward_now() will
forward the timer expiry more than once. When this happens, the
additional number of elapsed ALSA timer ticks must be passed to
snd_timer_interrupt() to prevent the ALSA timer from falling behind.
This mostly fixes MIDI slowdown problems on highly-loaded systems with
badly behaved interrupt handlers.
Reported-and-tested-by: Arthur Marsh <arthur.marsh@internode.on.net>

ICE1712 driver

- treewide: transciever/transceiver spelling fixes
Just tyops.

ICE1724 driver

- ALSA: ice1724 - Support for ooAoo SQ210a
This card shares PCI ids with Chaintec AV710. Therefore, it will not be
detected automatically, it can only be activated by the module parameter
model=sq210a.
- ALSA: ice1724 - Allow card info based on model only
When two different cards share the same PCI vendor/subvendor
identification, allow card info based on model only.
Do not require subvendor ID.
- ALSA: ice1724 - Create capture pcm only for ADC-enabled configurations
Add the capture pcm only if there is at least one ADC configured in
the SYSCONF register.
- ALSA: ice1724 - External clock item only for cards with SPDIF_IN
Append the external clock item to the clock list only if
the SPDIF_IN capability is defined in the SPDIF register.
- ALSA: ice1724 - Check for ac97 to avoid kernel oops
Cards with identical PCI ids but no AC97 config in EEPROM do not have
the ac97 field initialized. We must check for this case to avoid kernel oops.

ISA DMA

- sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed
These aren't modules, but they do make use of these macros, so
they will need export.h to get that definition. Previously,
they got it via the implicit module.h inclusion.

Intel8x0 driver

- Refresh pci/intel8x0.patch
For changes in the upstream commit 7fb4f392bd27e5b0e2444430d241370837bcc8fa
ALSA: intel8x0: improve virtual environment detection
- Regenerate patches to fix fuzz for 3.2-rc1 changes
- Fix build of intel8x0 with older kernels
Just add a check of X86_FEATURE_HYPERVISOR (added since 2.6.29)
- module_param: avoid bool abuse, add bint for special cases.
For historical reasons, we allow module_param(bool) to take an int (or
an unsigned int). That's going away.
A few drivers really want an int: they set it to -1 and a parameter
will set it to 0 or 1. This sucks: reading them from sysfs will give
'Y' for both -1 and 1, but if we change it to an int, then the users
might be broken (if they did "param" instead of "param=1").
Use a new 'bint' parser for them.
(ntfs has a different problem: it needs an int for debug_msgs because
it's also exposed via sysctl.)
- ALSA: intel8x0: improve virtual environment detection
Detection code improved by PCI SSID usage. VM optimization
now enabled only for known devcices (skip host devices forwarded
to VM by VT-d or same kind of technology).
For debug/troubleshooting purposes optimization can be
forced (on/off) by module parameter: "inside_vm" (boolean).
Known devices (PCI SSID):
1af4:1100: Reserved for KVM devices. Note this is not yet
implemented for KVM's ICH/AC'97 emulation.
1ab8:xxxx: Parallels ICH/AC'97 emulated sound.
[ fixed a minor coding-style issue by tiwai]
- ALSA: intel8x0: move virtual environment detection code into one place
This is refactoring patch: preparation for add improved detection code.
Now all detection code placed in one place.
- ALSA: intel8x0: Improve comments for VM optimization
The recently merged 228cf79376f1 looks a bit hackish while it is not.
The change was quite simple. In a virtualized environment the
patch unhacks old kludge introduced for old broken AC97 hardware.
This patch adds proper comment to "unkludge" code.
- ALSA: intel8x0 - Fix inclusion of kvm_para.h
<linux/kvm_para.h> should be included instead of <asm/...>
- ALSA: intel8x0: Improve performance in virtual environment
v3: detection code is x86 and KVM specific, hide it under ifdef
v2: add detection for virtual environments (KVM and Parallels)
This patch is intended to improve performance in virtualized environments
like Parallels Desktop or KVM/VirtualBox/QEMU (virtual ICH/AC97 audio).
I/O access is very time-expensive operation in virtual world: VCPU
can be rescheduled and in the worst case we get more than 10ms delay on
each I/O access.
In the virtual environment loop exit rule
(old_civ == current_civ && old_picb == current_picb) is never satisfied,
because old_picb is never the same as current_picb due to delay inspired
by reading current_civ. As a result loop ended by timeout and we get 10x
more I/O operations.
Experimental data from Prallels Desktop 7, RHEL6 guest (I/O ops per
second):
Original code:
In Port Counter Callback
f014 41550 fffff00000179d00 ac97_bm_read_civ+0x000
f018 41387 fffff0000017a580 ac97_bm_read_picb+0x000
With patch:
In Port Counter Callback
f014 4090 fffff00000179d00 ac97_bm_read_civ+0x000
f018 1964 fffff0000017a580 ac97_bm_read_picb+0x000
- ALSA: intel8x0: Apply headphones+mute LED quirk for Dell Inspiron 9300
BugLink: https://bugs.launchpad.net/bugs/774895
The original reporter states that his volume keys do not change the
desired Master and PCM mixer elements together, so apply the hp+mute led
quirk for his PCI SSID.
Reported-by: Jeffrey Finkelstein

Intel8x0-modem driver

- ALSA: intel8x0m: enable AMD8111 modem
AMD 8111 southbridges contain a controller for MC'97 modem. Enable support
for this controller in intel8x0m driver.
- ALSA: intel8x0m: append 'm' to "r_intel8x0"
Appending an 'm' will distinguish it from a similar struct in intel8x0.c
- ALSA: intel8x0m: add 'm' as "suffix" to static functions
Adding an 'm' will distinguish them from identical names in intel8x0.c.
- ALSA: intel8x0m: wait a bit before warm reset check
At every resume a laptop I use prints this message (at KERN_ERR level):
ALSA sound/pci/intel8x0m.c:904: AC'97 warm reset still in progress? [0x2]
The thing to note here is that 0x2 corresponds to ICH_AC97COLD. Ie, what
seems to be happening is that the register involved indicated a warm
reset for some time (as the ICH_AC97WARM bit was set) but by the time
the warning is printed, and that same register is checked again, that
bit is already cleared and only the ICH_AC97COLD bit is still set.
It turns out a warm reset needs some time to settle, but it is currently
checked right away. The test therefore fails the first time it is done
and schedule_timeout_uninterruptible() will be called. Once we return
from that jiffies is already (far) past end_time on this laptop, so we
exit the loop, print a warning, and exit the function while the warm
reset actually succeeded.
A way to fix this is to call usleep_range() after writing to the
register involved. A handful of tests suggest 500 usecs is a safe value.
(This might punish the "finish cold reset" case, but on this laptop such
a cold reset apparently never happens, so I can't say for sure.)
While we're at it drop the extra single tick from end_time, as it looks
rather silly.

LX6464ES

- ALSA: lx6464es - fix device communication via command bus
commit 6175ddf06b6172046a329e3abfd9c901a43efd2e optimized the mem*io
functions that have been used to send commands to the device. these
optimizations somehow corrupted the communication with the lx6464es,
that resulted the device to be unusable with kernels after 2.6.33.
this patch emulates the memcpy_*_io functions via a loop to avoid these
problems.
LKML-Reference: <4ECB5257.4040600@ladisch.de>
- ALSA: lx6464es - command buffer API cleanup
the command buffer is only accessed from one file, so we can declare the
specific functions as static in that file
- atomic: use <linux/atomic.h>
This allows us to move duplicated code in <asm/atomic.h>
(atomic_inc_not_zero() for now) to <linux/atomic.h>
Reviewed-by: Eric Dumazet <eric.dumazet@gmail.com>
- ALSA: lx6464es - include mac address in device name
each device has a unique mac address, which can be used to distinguish
multiple devices in the same machine. we therefore include the full mac
address in the device shortname and the last 6 bytes in the device id.

MIPS

- MIPS: Alchemy: remove all CONFIG_SOC_AU1??? defines
Now that no driver any longer depends on the CONFIG_SOC_AU1??? symbols,
it's time to get rid of them: Move some of the platform devices to the
boards which can use them, Rename a few (unused) constants in the header,
Replace them with MIPS_ALCHEMY in the various Kconfig files. Finally
delete them altogether from the Alchemy Kconfig file.
To: Linux-MIPS <linux-mips@linux-mips.org>
Patchwork: https://patchwork.linux-mips.org/patch/2707/
- ALSA: deprecate MIPS AU1X00 AC97 driver
Now that an ASoC variant is available, tell users that this
driver is now living on borrowed time...

MIPS SGI A2 Audio System

- ALSA: Convert mips directory to module_platform_driver
Factor out some boilerplate code.

MPU401 UART

- Refreshed patches
Mainly for bool modparm changes.
- Refresh mpu401.patch for irq_flags removal
- ALSA: module_param: make bool parameters really bool
module_param(bool) used to counter-intuitively take an int. In
fddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy
trick.
It's time to remove the int/unsigned int option. For this version
it'll simply give a warning, but it'll break next kernel version.
- sound: irq: Remove IRQF_DISABLED
Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
We run all interrupt handlers with interrupts disabled
and we even check and yell when an interrupt handler
returns with interrupts enabled (see commit [b738a50a:
genirq: Warn when handler enables interrupts]).
So now this flag is a NOOP and can be removed.
- ALSA: mpu401: clean up interrupt specification
The semantics of snd_mpu401_uart_new()'s interrupt parameters are
somewhat counterintuitive: To prevent the function from allocating its
own interrupt, either the irq number must be invalid, or the irq_flags
parameter must be zero. At the same time, the irq parameter being
invalid specifies that the mpu401 code has to work without an interrupt
allocated by the caller. This implies that, if there is an interrupt
and it is allocated by the caller, the irq parameter must be set to
a valid-looking number which then isn't actually used.
With the removal of IRQF_DISABLED, zero becomes a valid irq_flags value,
which forces us to handle the parameters differently.
This patch introduces a new flag MPU401_INFO_IRQ_HOOK for when the
device interrupt is handled by the caller, and makes the allocation of
the interrupt to depend only on the irq parameter. As suggested by
Takashi, the irq_flags parameter was dropped because, when used, it had
the constant value IRQF_DISABLED.

MSND driver

- snd_msnd ->mode is fmode_t, not mode_t
we put FMODE_... in there

Maestro3 driver

- ALSA: es1968,maestro3 - Use work for hw-volume control
Instead of tasklet, use workq for handling the hw-volume control.
This reduces lots of spinlocks.

Memalloc module

- treewide: Correct spelling of successfully in comments
- ALSA: core: sparse cleanups
Change the core code where sparse complains. In most cases, this means
just adding annotations to confirm that we indeed want to do the dirty
things we're doing.

OPL3

- ALSA: module_param: make bool parameters really bool
module_param(bool) used to counter-intuitively take an int. In
fddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy
trick.
It's time to remove the int/unsigned int option. For this version
it'll simply give a warning, but it'll break next kernel version.

OSS device core

- switch device_get_devnode() and ->devnode() to umode_t *
both callers of device_get_devnode() are only interested in lower 16bits
and nobody tries to return anything wider than 16bit anyway.
- sound: Use sound_register_*() for additional OSS minor devices
Since OSS driver creates the device entries for /dev/audio* and
/dev/dspW* by itself without coping with sound_core, it leads to
conflicts with others and let sysfs spewing warnings.
This patch rewrites the registration part of OSS driver to use
the standard method also for additional minor devices.
Reported-by: Steven Rostedt <rostedt@goodmis.org> (with ktest.pl)
Tested-by: Steven Rostedt <rostedt@goodmis.org> (with ktest.pl)

OSS firmware core

- sound: read i_size with i_size_read()
Convert direct read of inode->i_size to using i_size_read().
i_size_read is guaranteed to return a valid value and
its caller does not need to use addtional locking.

PCI drivers

- Avoid patching for pci/ad1889 driver
It's just missing pci-ids, so let's define them in pci_ids_compat.h.
- ALSA: Fix dependency of CONFIG_SND_TEA575X
CONFIG_SND_TEA575X is enabled by RADIO_SF16FMR2, but the latter one is
no PCI device. Since tea575x-tuner itself is independent from the board
bus type, the config should be moved out of SND_PCI dependency.
Reported-by: Randy Dunlap <rdunlap@xenotime.net>
- [media] radio-sf16fmr2: convert to generic TEA575x interface
Convert radio-sf16fmr2 to use generic TEA575x implementation. Most of the
driver code goes away as SF16-FMR2 is basically just a TEA5757 tuner
connected to ISA bus.
The card can optionally be equipped with PT2254A volume control (equivalent
of TC9154AP) - the volume setting is completely reworked (with balance control
added) and tested.
- ALSA: fm801: clean-up radio-related Kconfig
Remove TEA575X_RADIO define from fm801.c.
Also update Kconfig help text to include all supported cards.
- ALSA: Add the driver for Digigram Lola PCI-e boards
Added a new driver for supporting Digigram Lola PCI-e boards.
Lola has a similar h/w design like HD-audio but with extended verbs.
Thus the driver is written similarly like HD-audio driver in the bus
part. The codec part is rather written in a fixed way specific to the
Lola board because of the verb incompatibility.
The driver provides basic PCM, supporting multi-streams and mixing.
- ALSA: es1968: add radio (tea575x tuner) support
Add TEA5757 radio tuner support to es1968 driver. This is found at least on
MediaForte SF64-PCE2 sound cards.
- ALSA: azt3328: add custom AC97 semi-emulation use standard ALSA AC97 layer
Make use of the very flexible ALSA ac97 layer (hooks for custom I/O!)
on this weird AC97 copycat hardware,
via semi-extended I/O translation/emulation.
Some 5kB binary/loaded size saved (well... additional huge AC97 module
penalty not factored in, of course ;-P).
Given that the driver previously had 20kB that's not bad,
but the much more important thing is to have AC97 layer stress-tested
with a thoroughly weird AC97 copycat (or, simply put, if it were not for
this AC97 test aspect, this effort would merely have been a nut job ;).

PDAudioCF driver

- ALSA: pcmcia - Use pcmcia_request_irq()
The drivers don't require the exclusive irqs. Let's fix the deprecated
warnings.
- pcmcia: Make struct pcmcia_device_id const, sound drivers edition
Make declarations of struct pcmcia_device_id const.
- ALSA: use linux/io.h to fix compile warnings
For helping to reduce Greert's regression list...
src/sound/drivers/mtpav.c: error: implicit declaration of function 'inb'
src/sound/drivers/mtpav.c: error: implicit declaration of function 'outb'
...

PPC Keywest driver

- ALSA: keywest: Remove obsolete cleanup for clientdata
The i2c core will clear the clientdata pointer automatically.
We don't have to set the `data' field to NULL in remove() or
if probe() failed anymore.
Reviewed-by: Wolfram Sang <w.sang@pengutronix.de>

PPC PMAC driver

- ALSA: powermac - Allow input from microphone on Tumbler
Allow input from microphone on remaining PowerBooks and iBooks with Tumbler.
Tested only with PowerBook G4 Gigabit Ethernet (PowerBook3,3).
[Fixed to use of_machine_is_compatible by tiwai]

PPC PS3 driver

- powerpc/ps3: Fix lv1_gpu_attribute hcall
The lv1_gpu_attribute hcall takes three, not five input
arguments. Adjust the lv1 hcall table and all calls.

PPC Tumbler driver

- ALSA: powermac - Correct lineout detection on PowerMac G4 DA
Correct lineout (Pro Speaker) detection on PowerMac G4 Digital Audio (Tumbler).

RME HDSP driver

- ALSA: hdsp - Fix potential Oops in snd_hdsp_info_pref_sync_ref()
Dan Carpenter reported that setting 0 to uinfo->value.enumerated.items
in snd_hdsp_info_pref_sync_ref() may lead to Oops. This function should
return an error immediately in such a case instead.
- ALSA: hdsp - Correct HDSP_VERSION_BIT constant, thus partly fixing RPM detection
HDSP_VERSION_BIT has to be ORed with HDSP_S_LOAD. This fixes the detection
of at least some RME RPM boxes.

RME9652 driver

- ALSA: hdspm - Provide unique driver id based on card serial
Before, /proc/asound looked like this:
2 [Default ]: HDSPM - RME RayDAT_f1cd85
RME RayDAT S/N 0xf1cd85 at 0xf7300000, irq 18
In case of a second HDSPM card, its name would be Default_1. This is
cumbersome, because the order of the cards isn't stable across reboots.
To help userspace tools referring to the correct card, this commit
provides a unique id for each card:
2 [HDSPMxf1cd85 ]: HDSPM - RME RayDAT_f1cd85
RME RayDAT S/N 0xf1cd85 at 0xf7300000, irq 18
In this example, userspace (configuration files) would then use
hw:HDSPMxf1cd85 to choose the right card.
The serial is masked to 24bits, so this string is always shorter than
sixteen chars.
- ALSA: hdspm - Refactor serial number to avoid code duplication
The serial number is used multiple times in hdspm.c. Since it belongs
to the card, let's store it in struct hdspm and refer to it whenever
necessary.
- ALSA: hdspm - Fix PCI ID for PCIe RME MADI cards
Commit c09403dcc5698abf214329fbbf3cf8dbb5558bea has introduced a
regression: PCIe versions of RME MADI were no longer detected, because
the MADIface ID (0xd5) was used instead of the correct 0xd2.
This commit fixes the problem.
- ALSA: hdspm - Enable all firmware ranges for PCI MADI/AES cards
From the Windows INF file, we know the firmware ranges for all RME
cards. For PCIe, a single revision ID per device (RayDAT, MADI, AIO,
AES) is used. Contrary, the older PCI versions use ranges, that is,
one revision ID per firmware version.
Instead of listing all possible revisions individually, match the range.
This commit enables all MADI and AES PCI versions ever shipped.
- ALSA: hdspm - Fix MADI channel format in the status ioctl
SNDRV_HDSPM_IOCTL_GET_STATUS is supposed to query the current card
status, so we have to return what we receive on the MADI wire (RX), not
what we transmit (TX) to others. The latter is a config item to be
queried via SNDRV_HDSPM_IOCTL_GET_CONFIG.
- ALSA: hdspm - cleanup __user tags in ioctl()
This makes the code cleaner and silences a Sparse complaint:
sound/pci/rme9652/hdspm.c:6341:23: warning: incorrect type in assignment (incompatible argument 4 (different address spaces))
sound/pci/rme9652/hdspm.c:6341:23: expected int ( *ioctl )( ... )
sound/pci/rme9652/hdspm.c:6341:23: got int ( static [toplevel] *<noident> )( ... )
sound/pci/rme9652/hdspm.c:6102:44: warning: dereference of noderef expression
sound/pci/rme9652/hdspm.c:6225:50: warning: dereference of noderef expression
sound/pci/rme9652/hdspm.c:6264:50: warning: dereference of noderef expression
sound/pci/rme9652/hdspm.c:6283:50: warning: dereference of noderef expression
sound/pci/rme9652/hdspm.c:6289:59: warning: dereference of noderef expression
- ALSA: hdspm - potential info leak in snd_hdspm_hwdep_ioctl()
Smatch has a new check for Rosenberg type information leaks where
structs are copied to the user with uninitialized stack data in them.
The status struct has a hole in it, and on some paths not all the
members were initialized.
struct hdspm_status {
unsigned char card_type; /* 0 1 */
/* XXX 3 bytes hole, try to pack */
enum hdspm_syncsource autosync_source; /* 4 4 */
long long unsigned int card_clock; /* 8 8 */
The hdspm_version struct had holes in it as well.
struct hdspm_version {
unsigned char card_type; /* 0 1 */
char cardname[20]; /* 1 20 */
/* XXX 3 bytes hole, try to pack */
unsigned int serial; /* 24 4 */
short unsigned int firmware_rev; /* 28 2 */
/* XXX 2 bytes hole, try to pack */
int addons; /* 32 4 */
- ALSA: hdspm - Simplify with snd_pcm_hw_constraint_pow2()
Refactoring the code using snd_pcm_hw_constraint_pow2() helper function.
Tested-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
- ALSA: hdspm - Add missing KNOT flag for AES32 rate restriction
AES32 supports the non-standard 128kHZ, and this is enabled only when
SNDRV_PCM_RATE_KNOT is set in hw.rates field.
Tested-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
- ALSA: hdspm - Correct max buffer size limit
Some modesl can support up to 8192 frames per period.
Tested-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
- ALSA: hdspm - Enable 32 samples/period on RME RayDAT/AIO
Newer RME cards like RayDAT and AIO support 32 samples per period. This
value is encoded as {1,1,1} in the HDSP_LatencyMask bits in the control
register.
Since {1,1,1} is also the representation for 8192 samples/period on
older RME cards, we have to special case 32 samples and 32768 bytes
according to the actual card.
- ALSA: hdspm - Introduce hdspm_get_latency() to harmonize latency calculation
Currently, hdspm_decode_latency is called several times, violating the
DRY principle. Given that we need to distinguish between old and new
cards when decoding the latency bits in the control register, introduce
hdspm_get_latency() to provide the required functionality.
- ALSA: hdspm - Reorder period sizes according to their bit representation
On newer RME cards like RayDAT and AIO, the 8192 samples per period size
are no longer supported. Instead, setting all three bits of
HDSP_LatencyMask to one ({1,1,1}) now corresponds to 32 samples per
period.
To make this more obvious to future developers, let's reorder the array
according to their bit representation, starting at 64 ({0,0,0}) up to
4096 ({1,1,0}) and finally 32 ({1,1,1}).
Note that this patch doesn't change semantics.
- ALSA: hdspm - Set period_bytes_min to 32 * 4 for new RME cards
On newer RME cards like RayDAT and AIO, the lower bound is 32 samples
per period in contrast to 64 samples as seen on older cards.
We hence lower period_bytes_min to 32 * 4. Four bytes per sample.
- ALSA: hdspm - Allow for 8192 period size on RME MADI and AES cards
Older RME cards like MADI and AES support period sizes of 8192 samples.
The original hdspm driver already featured this value, apparently, it
was lost during the rewrite.
- ALSA: hdspm - Fix uninitialized compile warnings
Put the exception checks for io_type switch() for possible mistakes in
future. Also this shuts up annoying compile warnings.
- ALSA: hdspm - Add firmware revision 0xcc for RME MADI
Apparently, there are multiple old firmware revisions in the wild for
the PCI RME MADI cards. Just add them to the list of supported devices
and treat them like their modern counterparts.
- ALSA: hdspm - Fix reported external sample rate on RME MADI and MADIface
In slave mode, the card can only detect the base frequency (32..48kHz)
on the MADI link (exception: 96k frames), so the real external sample
rate is this base frequency multiplied by 1, 2 or 4 depending on the
speed mode.
This patch enables 64..192kHz sample rates in clock slave mode, which
failed before due to an alleged sample rate mismatch between the MADI
link (e.g., 48kHz) and the application in DS/QS mode (e.g., 96kHz,
192kHz).
- ALSA: hdspm - Provide MADI speed mode selector on RME MADI and MADIface
When running in slave mode (no clock master), there is no way to
determine the real wirespeed on the MADI link (single/double/quad
speed). Like physical gear, simply provide the user with a tristate
switch to select the appropriate format.
- ALSA: hdspm - Fix compile warnings with PPC
The char can be unsigned on some architectures. Since the code checks
the negative values, they should be declared as signed char explicitly.
sound/pci/rme9652/hdspm.c:5449: warning: comparison is always false due to limited range of data type
sound/pci/rme9652/hdspm.c:5462: warning: comparison is always false due to limited range of data type
- ALSA: hdspm - Add firmware revision ID for RME MADI PCI version
The PCI version of the RME HDSP MADI card uses 0xcf as revision ID. Just
add this to the list of supported cards.
- ALSA: hdspm - Fix jumping external wordclock frequency in AutoSync mode
When using Word Clock on RME MADI cards, AutoSync mode was alternating
betweeen MADI and WC due to a typo: AutoSync is indicated in the second
status register (status2), not the first one (status).
While the proc output was always correct, the reported WC frequency to
ALSA was unstable as mentioned in
http://mailman.alsa-project.org/pipermail/alsa-devel/2008-March/006723.html
- ALSA: hdspm - Fix locking in snd_hdspm_midi_input_read
For the MIDI part, we need to acquire (and release) the hmidi->lock,
access to the global hdspm structure is serialized through
hmidi->hdspm->lock instead.
- ALSA: hdspm - Add firmware ID for older AES32 cards.
The current AES32 firmware revision ID is 234, however, a user confirmed
that everything works fine with the previous revision, too.
- ALSA: hdspm - Fix midi port initialization
Depending on the model and the presence of a TCO module, the number of
midi ports varies. Some have 1 port (MADIface), some have 2 (default),
with TCO, there are 3.
Don't hardcode the number of midi ports to initialize.
This patch also fixes a boot lockup on MADIface.
[Coding-style fixes by tiwai]
- ALSA: hdspm - Abort on unknown firmware revision
Don't continue if we cannot detect the real card type, otherwise, all
subsequent functions, especially strcpy(), would fail, leaving the whole
driver in an unusable state.
Without such a protection, dmesg would look like this:
Pid: 1525, comm: modprobe Not tainted 2.6.38-rc6 #1 MSI MS-7250/MS-7250
EIP: 0060:[<c114e700>] EFLAGS: 00010296 CPU: 1
EIP is at strcpy+0x10/0x30
EAX: f4d33e58 EBX: f5990800 ECX: f4d33e58 EDX: 00000000
ESI: 00000000 EDI: f4d33e58 EBP: f5990930 ESP: f3dd3e0c
DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
f53d4204 00000000 f90bfc03 00000001 00000001 f3dd3e64 c10fedff f3dd3e7c
f3d854e4 f53d4000 c10307b8 00000001 c10307b8 f5990860 c10307b8 00000001
c10332e5 f59908bc c12f4339 f59908bc f5990860 c11ef207 f4d33e00 f53d4000
[<f90bfc03>] ? snd_hdspm_probe+0x7e7/0x1166 [snd_hdspm]
[<c10fedff>] ? __sysfs_add_one+0x1f/0xf0
[<c10307b8>] ? get_parent_ip+0x8/0x20
[<c10307b8>] ? get_parent_ip+0x8/0x20
[<c10307b8>] ? get_parent_ip+0x8/0x20
[<c10332e5>] ? add_preempt_count+0xa5/0xd0
[<c12f4339>] ? _raw_spin_lock_irqsave+0x19/0x40
[<c11ef207>] ? pm_runtime_enable+0x17/0x80
[<c1160172>] ? local_pci_probe+0x42/0xb0
[<c1161091>] ? pci_device_probe+0x61/0x80
[<c11e9587>] ? driver_probe_device+0x77/0x180
[<c11600f0>] ? pci_match_device+0xa0/0xc0
[<c11e9709>] ? __driver_attach+0x79/0x80
[<c11e9690>] ? __driver_attach+0x0/0x80
[<c11e8e32>] ? bus_for_each_dev+0x52/0x80
[<c11e9416>] ? driver_attach+0x16/0x20
[<c11e9690>] ? __driver_attach+0x0/0x80
[<c11e8771>] ? bus_add_driver+0xa1/0x220
[<c1160f20>] ? pci_device_remove+0x0/0xf0
[<c11e99a3>] ? driver_register+0x63/0x120
[<c11612bd>] ? __pci_register_driver+0x3d/0xb0
[<c1001132>] ? do_one_initcall+0x32/0x160
[<f90d6000>] ? alsa_card_hdspm_init+0x0/0x14 [snd_hdspm]
[<c10676a9>] ? sys_init_module+0x99/0x1e0
[<c10ade3d>] ? sys_close+0x6d/0xc0
[<c1002c90>] ? sysenter_do_call+0x12/0x26
---[ end trace 239f0661c558378b ]---
- ALSA: hdspm - Add updated firmware revision for AES32
In contrast to the PCIe version (RME AES), the PCI version (RME AES32)
has a different firmware revision.
This patch adds the missing PCI revision.
- ALSA: hdspm - AES32: Use define instead of hardcoded channel count
- ALSA: hdspm - Fix lock/sync reporting on MADI and AES32
- ALSA: hdspm - prevent reading unitialized stack memory
Original patch by Dan Rosenberg <drosenberg@vsecurity.com> under commit
e68d3b316ab7b02a074edc4f770e6a746390cb7d. I'm copying his text here:
The SNDRV_HDSPM_IOCTL_GET_CONFIG_INFO ioctl in hdspm.c allow unprivileged
users to read uninitialized kernel stack memory, because several fields
of the hdspm_config struct declared on the stack are not altered
or zeroed before being copied back to the user. This patch takes care
of it.
- ALSA: hdspm - fix sync check on AES32
Fredrik Lingvall <fredrik.lingvall@gmail.com> has discovered wrong
frequency and sync detection on AES32. According to him, the provided
patch fixes these issues.
- ALSA: hdspm - Remove input selector on MADIface
In contrast to the RME MADI card, coax/optical selection on the MADIface
is done via a physical switch located at the breakout box. Obviously,
the driver cannot switch ports in software.
- ALSA: hdspm - Fix DS/QS output channel mappings on RME MADI/MADIface
Caused by two typos, no output channel mappings were assigned for
MADI/MADIface at double/quad speed.
The channel mapping is indeed identical to the single speed mapping, the
cards will simply use the first N channels.
- ALSA: hdspm - Restrict channel count on RME AES/AES32
Without calling an appropriate rule, AES/AES32 cards would announce a
theoretical channel count of 64 (HDSPM_MAX_CHANNELS), leading to the
already known bug:
[37422.640481] ------------[ cut here ]------------
[37422.640487] WARNING: at sound/pci/rme9652/hdspm.c:5449
snd_hdspm_ioctl+0x18f/0x202 [snd_hdspm]()
[37422.640489] Hardware name: PRIMERGY RX100 S6
[37422.640490] BUG? (info->channel >= hdspm->max_channels_in)
[37422.640492] Modules linked in: snd_hdspm snd_seq_midi ipmi_watchdog
ipmi_poweroff ipmi_si ipmi_devintf ipmi_msghandler i2c_i801 e1000e
snd_rawmidi power_meter [last unloaded: snd_hdspm]
[37422.640501] Pid: 22231, comm: jackd Tainted: G D W
2.6.36-gentoo-r5 #5
[37422.640502] Call Trace:
[37422.640508] [<ffffffff8103db3a>] warn_slowpath_common+0x80/0x98
[37422.640511] [<ffffffff8103dbe6>] warn_slowpath_fmt+0x41/0x43
[37422.640514] [<ffffffff81034306>] ? get_parent_ip+0x11/0x42
[37422.640518] [<ffffffffa0055763>] snd_hdspm_ioctl+0x18f/0x202
[snd_hdspm]
[37422.640522] [<ffffffff813fd626>] snd_pcm_channel_info+0x73/0x7c
[37422.640525] [<ffffffff814001e9>] snd_pcm_common_ioctl1+0x326/0xb01
[37422.640527] [<ffffffff81034306>] ? get_parent_ip+0x11/0x42
[37422.640531] [<ffffffff8105be6c>] ? __srcu_read_unlock+0x3b/0x59
[37422.640533] [<ffffffff81400bce>] snd_pcm_capture_ioctl1+0x20a/0x227
[37422.640537] [<ffffffff811e599c>] ? file_has_perm+0x90/0x9e
[37422.640540] [<ffffffff81400c15>] snd_pcm_capture_ioctl+0x2a/0x2e
[37422.640543] [<ffffffff810f2c69>] do_vfs_ioctl+0x404/0x453
[37422.640546] [<ffffffff810f2d09>] sys_ioctl+0x51/0x74
[37422.640549] [<ffffffff81002aab>] system_call_fastpath+0x16/0x1b
[37422.640552] ---[ end trace 0cd919cd68118082 ]---
We already have all the right values in place, we simply have to inform
the upper layers about this restriction.
Note that snd_hdspm_hw_rule_rate_out_channels and
snd_hdspm_hw_rule_rate_in_channels must not be called on AES32, because
the channel count is always 16, no matter of the samplerate in use.
- ALSA: hdspm - Fix buffer handling on RME MADI/MADIface/AES(32)
Only RayDAT and AIO provide sane buffer pointers that can be used with
HDSPM_BufferPositionMask, on all other cards, this would result in a
wrong HW pointer leading to xruns and these messages:
[260808.916788] BUG: pcmC0D0p:0, pos = 2976, buffer size = 1024, period size = 512
[260808.961124] BUG: pcmC0D0c:0, pos = 4944, buffer size = 1024, period size = 512
- ALSA: hpdsm - RME AES(32): Fix missing channel mappings
On RME AES and AES(32), none of the required information
(max_channels_in, max_channels_out, channel mappings, port names) was
set, leading to the BUG below.
This patch adds the missing bits, thus fixing the bug.
125.058768] ------------[ cut here ]------------
[ 125.058773] WARNING: at sound/pci/rme9652/hdspm.c:5389
snd_hdspm_ioctl+0x10c/0x1d8 [snd_hdspm]()
[ 125.058775] Hardware name: PRIMERGY RX100 S6
[ 125.058777] BUG? (info->channel >= hdspm->max_channels_out)
[ 125.058778] Modules linked in: ipmi_watchdog ipmi_poweroff ipmi_si
ipmi_devintf ipmi_msghandler snd_hdspm power_meter e1000e snd_rawmidi
i2c_i801
[ 125.058787] Pid: 3652, comm: audacity Tainted: G W
2.6.36-gentoo-r5 #5
[ 125.058788] Call Trace:
[ 125.058792] [<ffffffff8103db3a>] warn_slowpath_common+0x80/0x98
[ 125.058796] [<ffffffff8103dbe6>] warn_slowpath_fmt+0x41/0x43
[ 125.058800] [<ffffffffa006761a>] snd_hdspm_ioctl+0x10c/0x1d8
[snd_hdspm]
[ 125.058803] [<ffffffff813fd626>] snd_pcm_channel_info+0x73/0x7c
[ 125.058806] [<ffffffff814001e9>] snd_pcm_common_ioctl1+0x326/0xb01
[ 125.058809] [<ffffffff810c604c>] ? __do_fault+0x361/0x3a6
[ 125.058812] [<ffffffff81400e23>] snd_pcm_playback_ioctl1+0x20a/0x227
[ 125.058815] [<ffffffff811e599c>] ? file_has_perm+0x90/0x9e
[ 125.058818] [<ffffffff81400e6a>] snd_pcm_playback_ioctl+0x2a/0x2e
[ 125.058821] [<ffffffff810f2c69>] do_vfs_ioctl+0x404/0x453
[ 125.058824] [<ffffffff810f2d09>] sys_ioctl+0x51/0x74
[ 125.058827] [<ffffffff81002aab>] system_call_fastpath+0x16/0x1b
[ 125.058830] ---[ end trace 5bddb08e5d4cbeb1 ]---

RTC timer driver

- ALSA: rtctimer.c needs module.h
rtctimer.c uses interfaces from linux/module.h, so it should
include that file. This fixes build errors.

SB16/AWE driver

- ALSA: sb16 - Fix build errors on MIPS and others with 13bit ioctl size
One of ioctl definition in sound/sb16_csp.h contains the data size
over 8kB, and this causes build errors on architectures like MIPS,
which define _IOC_SIZEBITS=13.
For avoiding this build errors but keeping the compatibility, manually
expand with _IOC() instead of using _IOW() for the problematic ioctl.

SGI O2 Audio

- ALSA: Convert mips directory to module_platform_driver
Factor out some boilerplate code.

SIS7019 driver

- ALSA: sis7019 - convert to dev_*() logging
- ALSA: sis7019 - give slow codecs more time to reset
There are some AC97 codec and board combinations that have been observed
to take a very long time to respond after the cold reset has completed.
In one case, more than 350 ms was required. To allow users to have sound
on those platforms, we'll wait up to 500ms for the codec to become
ready.
As a board may have multiple codecs, with some faster than others to
reset, we add a module parameter to inform the driver which codecs
should be present.
Reported-by: KotCzarny <tjosko@yahoo.com>

SPARC AMD7930 driver

- dt/sound: Eliminate users of of_platform_{,un}register_driver
Get rid of users of of_platform_driver in drivers/sound. The
of_platform_{,un}register_driver functions are going away, so the
users need to be converted to using the platform_bus_type directly.

SPARC DBRI driver

- atomic: use <linux/atomic.h>
This allows us to move duplicated code in <asm/atomic.h>
(atomic_inc_not_zero() for now) to <linux/atomic.h>
Reviewed-by: Eric Dumazet <eric.dumazet@gmail.com>

SPARC cs4231 driver

- dt/sound: Eliminate users of of_platform_{,un}register_driver
Get rid of users of of_platform_driver in drivers/sound. The
of_platform_{,un}register_driver functions are going away, so the
users need to be converted to using the platform_bus_type directly.

Serial BUS drivers

- Drop the check of video_get_drvdata()
It's always present in V4L2.
Also fix the build error with tea575x.
- Fix build of tea575x-tuner with 2.6.27-2.6.29 kernels
- Drop V4L1 support from tea575x-tuner
It was already broken, so safer to drop now.
Also made patches for building with older kernels.
- Fix build of tea575-tuner with older kernels
Copy the old code into alsa-driver tree; too intrusive changes for V4L
- ALSA: es1968: add radio (tea575x tuner) support
Add TEA5757 radio tuner support to es1968 driver. This is found at least on
MediaForte SF64-PCE2 sound cards.

SoC Audio for Freecale i.MX1x i.MX2x CPUs

see Detailed SoC changes v1.0.24 v1.0.25

SoC Audio for TXx9

see Detailed SoC changes v1.0.24 v1.0.25

SoC Audio for the Atmel AT32/AT91 System-on-Chip

see Detailed SoC changes v1.0.24 v1.0.25

SoC Audio for the Samsung chips

see Detailed SoC changes v1.0.24 v1.0.25

SoC Blackfin

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec 88PM860x

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec AC97

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec AD1836

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec AD1938

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec AD193X

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec AD1980

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec AD73311

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec ADAU1373

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec ADAU1701

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec ADAV80x

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec AK4104

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec AK4535

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec AK4641

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec AK4642

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec AK4671

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec CQ0093 Voice

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec CS4270

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec CS42L51

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec CS42L73

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec CX20442

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec Cirrus Logic CS4271

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec DA7210

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec DFBM-CS320 bluethooth

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec DIT SPDI/F

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec Freescale SGTL5000

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec General Digital MICs

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec Ingenic JZ4740

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec LM4857

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec MAX98088

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec MAX98095

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec MAX9850

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec MAX9877

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec Philips UDA134x

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec Philips UDA1380

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec RT5631

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec SSM2602

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec STA32X

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec STAC9766

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec SigmaDSP Firmare Loader

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec TI sn95031

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec TLV320AIC23

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec TLV320AIC26

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec TLV320AIC3X

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec TLV320DAC33

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec TPA6130A2

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec TWL4030

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec TWL6040

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WL1273

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM1250-EV1

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM2000

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM5100

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8350

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8400

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8510

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8523

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8580

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8711

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8727

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8728

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8731

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8737

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8741

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8750

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8753

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8770

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8776

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8782

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8804

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8900

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8903

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8904

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8915

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8940

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8958

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8960

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8961

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8962

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8971

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8974

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8978

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8983

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8985

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8988

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8990

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8991

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8993/4

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8994

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8995

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM8996

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM9081

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM9090

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM9705

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM9712

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec WM9713

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec ads1174/8

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec alc5621/2/3

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec alc5632

see Detailed SoC changes v1.0.24 v1.0.25

SoC Codec tlv320aic32x4

see Detailed SoC changes v1.0.24 v1.0.25

SoC DaVinci

see Detailed SoC changes v1.0.24 v1.0.25

SoC Dynamic Audio Power Management

see Detailed SoC changes v1.0.24 v1.0.25

SoC EP93XX

see Detailed SoC changes v1.0.24 v1.0.25

SoC FSI SH7724

see Detailed SoC changes v1.0.24 v1.0.25

SoC Freescale

see Detailed SoC changes v1.0.24 v1.0.25

SoC Ingenic JZ4740

see Detailed SoC changes v1.0.24 v1.0.25

SoC Intel Medfield MID platform

see Detailed SoC changes v1.0.24 v1.0.25

SoC Layer

see Detailed SoC changes v1.0.24 v1.0.25

SoC MXS

see Detailed SoC changes v1.0.24 v1.0.25

SoC Marvell Kirkwood

see Detailed SoC changes v1.0.24 v1.0.25

SoC NVIDIA Tegra

see Detailed SoC changes v1.0.24 v1.0.25

SoC Nuvoton NUC900

see Detailed SoC changes v1.0.24 v1.0.25

SoC PXA2xx 88PM860x Tavor EVB3

see Detailed SoC changes v1.0.24 v1.0.25

SoC PXA2xx Aeronix Zipit Z2

see Detailed SoC changes v1.0.24 v1.0.25

SoC PXA2xx Corgi

see Detailed SoC changes v1.0.24 v1.0.25

SoC PXA2xx E740

see Detailed SoC changes v1.0.24 v1.0.25

SoC PXA2xx E750

see Detailed SoC changes v1.0.24 v1.0.25

SoC PXA2xx E800/WM9712

see Detailed SoC changes v1.0.24 v1.0.25

SoC PXA2xx MIOA701

see Detailed SoC changes v1.0.24 v1.0.25

SoC PXA2xx Poodle

see Detailed SoC changes v1.0.24 v1.0.25

SoC PXA2xx Spitz

see Detailed SoC changes v1.0.24 v1.0.25

SoC PXA2xx Tosa

see Detailed SoC changes v1.0.24 v1.0.25

SoC PXA2xx Zylonite

see Detailed SoC changes v1.0.24 v1.0.25

SoC PXA2xx saarb

see Detailed SoC changes v1.0.24 v1.0.25

SoC S6000

see Detailed SoC changes v1.0.24 v1.0.25

SoC SH7760 AC97

see Detailed SoC changes v1.0.24 v1.0.25

SoC Texas Instruments OMAP

see Detailed SoC changes v1.0.24 v1.0.25

Soc Codec STA32X

see Detailed SoC changes v1.0.24 v1.0.25

Soc PXA2xx Imote 2

see Detailed SoC changes v1.0.24 v1.0.25

Soc PXA2xx Magician

see Detailed SoC changes v1.0.24 v1.0.25

Soc PXA2xx Raumfeld

see Detailed SoC changes v1.0.24 v1.0.25

Soc iPAQ hx4700

see Detailed SoC changes v1.0.24 v1.0.25

SoundFont

- treewide: fix potentially dangerous trailing ';' in #defined values/expressions
All these are instances of
#define NAME value;
or
#define NAME(params_opt) value;
These of course fail to build when used in contexts like
if(foo $OP NAME)
while(bar $OP NAME)
and may silently generate the wrong code in contexts such as
foo = NAME + 1; /* foo = value; + 1; */
bar = NAME - 1; /* bar = value; - 1; */
baz = NAME & quux; /* baz = value; & quux; */
Reported on comp.lang.c,
Message-ID: <ab0d55fe-25e5-482b-811e-c475aa6065c3@c29g2000yqd.googlegroups.com>
Initial analysis of the dangers provided by Keith Thompson in that thread.
There are many more instances of more complicated macros having unnecessary
trailing semicolons, but this pile seems to be all of the cases of simple
values suffering from the problem. (Thus things that are likely to be found
in one of the contexts above, more complicated ones aren't.)

SuperH DAC audio driver

- ALSA: convert sound/* to use module_platform_driver()
This patch converts the drivers in sound/* to use the
module_platform_driver() macro which makes the code smaller and a bit
simpler.

TEA575x tuner

- Drop V4L1 support from tea575x-tuner
It was already broken, so safer to drop now.
Also made patches for building with older kernels.
- Fix build of tea575-tuner with older kernels
Copy the old code into alsa-driver tree; too intrusive changes for V4L
- [media] tea575x: remove useless input ioctls
Remove empty and useless g_input and s_input ioctls.
This fixes one fail of v4l2-compliance test.
- [media] tea575x: allow multiple opens
Change locking to allow tea575x-radio device to be opened multiple times.
- [media] tea575x: convert to control framework
Convert tea575x-tuner to use the new V4L2 control framework. Also add
ext_init() callback that can be used by a card driver for additional
initialization right before registering the video device (for SF16-FMR2).
Also embed struct video_device to struct snd_tea575x to simplify the code.
- ALSA: tea575x: use better card and bus names
Provide real card and bus_info instead of hardcoded values.
- ALSA: tea575x: remove unused card from struct
struct snd_card *card is present in struct snd_tea575x but never used.
Remove it.
- ALSA: tea575x: remove freq_fixup from struct
freq_fixup is a constant, no need to hold it in struct snd_tea575x and set in
each driver.
- ALSA: tea575x: unify read/write functions
Implement generic read/write functions to access TEA575x tuners. They're now
implemented 4 times (once in es1968 and 3 times in fm801).
This also allows mute to work on all cards.
Also improve tuner detection/initialization.
- ALSA: tea575x-tuner: remove dev_nr
Remove unused dev_nr from struct tea575x_tuner.
- ALSA: tea575x-tuner: various improvements
Improve tea575x-tuner with various good things from radio-maestro:
- extend frequency range to 50-150MHz
- fix querycap(): card name, CAP_RADIO
- improve g_tuner(): CAP_STEREO, stereo and tuned indication
- improve g_frequency(): tuner index checking and reading frequency from HW
- improve s_frequency(): tuner index and type checking

USB

- Update usb/endpoint.patch and usb/stream.patch
For upstream commit ca7051d40da5e86e3c249b5a41ac82bb1016c044
- ALSA: snd-usb-caiaq: Add support for Maschine
This adds partial support for the Maschine controller by Native Instruments.
Supported now are the 1x1 MIDI interface and the 41 buttons, 11 endless
rotary encoders, and 16 pressure-sensitive drum pads. Still to work on are the
dimmable LEDs and the two monochrome screens.
- ALSA: snd-usb: move code from urb.c to endpoint.c
No code altered at this point, simply preparing for upcoming
refactorizations.
- ALSA: snd-usb: re-order code
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.
- ALSA: snd-usb: re-order the Makefile
Sort its entries in alphabetical order.
- ALSA: 6fire: use the kernel's built-in bit reverse table
- ALSA: 6fire - Update kernel configuration
Kernel configuration updated:
- experimental dependency removed
- description updated
- ALSA: snd-usb-caiaq: Add support for Traktor Audio 2

USB Edirol UA101 driver

- USB: convert sound/* to use module_usb_driver()
This converts the drivers in sound/* to use the
module_usb_driver() macro which makes the code smaller and a bit
simpler.
Added bonus is that it removes some unneeded kernel log messages about
drivers loading and/or unloading.
- ALSA: ua101: fix crash when unplugging
If the device is unplugged while running, it is possible for a PCM
device to be closed after the disconnect callback has returned. This
means that kill_stream_urb() and disable_iso_interface() would try to
access already-invalid or freed USB data structures.
The function free_usb_related_resources() was intended to prevent this,
but forgot to clear the affected variables.
Reported-and-tested-by: Olivier Courtay <olivier@courtay.org>
- ALSA: firewire-speakers, oxygen, ua101: allow > 10 s periods
Since commit f2b3614cefb6 (Don't check DMA time-out too shortly),
drivers need no longer restrict their PCM period length to be shorter
than 10 seconds.

USB TerraTec DMX 6Fire

- USB: convert sound/* to use module_usb_driver()
This converts the drivers in sound/* to use the
module_usb_driver() macro which makes the code smaller and a bit
simpler.
Added bonus is that it removes some unneeded kernel log messages about
drivers loading and/or unloading.
- ALSA: 6fire: don't use custom hex_to_bin()
- ALSA: 6fire - Fix signedness bug
Fixed remaining issues of the signedness bug discovered by Dan Carpenter.
A check was remaining that tests if unsigned rt->rate is >= 0.
Changed that so that rt->rate now consistently uses ARRAY_SIZE(rates)
as invalid rate value and not -1.
- ALSA: 6fire: Fix double-free bug in usb6fire_fw_ezusb_upload()
We have a double-free bug in
sound/usb/6fire/firmware.c::usb6fire_fw_ezusb_upload().
We already call release_firmware(fw) on line 258, so when we then do it
again after usb6fire_fw_ezusb_write() returns <0, we have a double-free.
Easily fixed by just removing the last call to release_firmware().
- ALSA: 6fire: Don't leak firmware in error path
One of the error paths in
sound/usb/6fire/firmware.c::usb6fire_fw_ezusb_upload() neglects to free
the memory allocated for the firmware before returning, thus leaking the
memory.
- ALSA: 6fire: use the kernel's built-in bit reverse table
- ALSA: 6fire - Add support of digital-thru mixer
Digital Thru mixer element added (device can act as converter optical<->coax)
- ALSA: 6fire - Improve firmware loader
Firmware loader: magical device bytes check updated (accepts all device
versions now and accepts possibly loaded firmware, if it is knowing to
be working)
- ALSA: 6fire - Add support for S32_LE format
Added support for sample format s32_le.
- ALSA: 6fire - Fix pcm rate assignment
Completion of signedness bug for pcm_runtime.rate: variable will never
get assigned a negative value now.
- ALSA: USB: 6fire: signedness bug in usb6fire_pcm_prepare()
rt->rate is an unsigned char so it's never equal to -1. It's not a huge
problem because the invalid rate is caught inside the call to
usb6fire_pcm_set_rate() which returns -EINVAL. But if we fix the test
then it prints out the correct error message so that's good.

USB USX2Y

- Rediff the usbusx2y.c and soc-core.c patches to match recent kernel
- ALSA: snd-usb-us122l: Delete calls to preempt_disable
They are not needed here.
- USB: convert sound/* to use module_usb_driver()
This converts the drivers in sound/* to use the
module_usb_driver() macro which makes the code smaller and a bit
simpler.
Added bonus is that it removes some unneeded kernel log messages about
drivers loading and/or unloading.
- sound: add moduleparam.h to users of module_param/MODULE_PARM_DESC
These files were getting access to these two via the implicit
presence of moduleparam.h everywhere. But that is being fixed, so
get these guys what they need in advance.

USB caiaq

- Refreshed patches
Mainly for bool modparm changes.
- Regenerate patches to fix fuzz for 3.2-rc1 changes
- USB: convert sound/* to use module_usb_driver()
This converts the drivers in sound/* to use the
module_usb_driver() macro which makes the code smaller and a bit
simpler.
Added bonus is that it removes some unneeded kernel log messages about
drivers loading and/or unloading.
- ALSA: snd-usb-caiaq: Add support for Maschine
This adds partial support for the Maschine controller by Native Instruments.
Supported now are the 1x1 MIDI interface and the 41 buttons, 11 endless
rotary encoders, and 16 pressure-sensitive drum pads. Still to work on are the
dimmable LEDs and the two monochrome screens.
- ALSA: snd-usb-caiaq: Fix NULL dereference in input.c
There was a case where a newly-registered input device could be opened before
a necessary variable in the device structure was set. When code tried to use
the variable in the URB reply callback, it would cause an Oops.
This fix sets the aforementioned variable before calling input_register_device.
- ALSA: snd_usb_caiaq: track submitted output urbs
The snd_usb_caiaq driver currently assumes that output urbs are serviced
in time and doesn't track when and whether they are given back by the
USB core. That usually works fine, but due to temporary limitations of
the XHCI stack, we faced that urbs were submitted more than once with
this approach.
As it's no good practice to fire and forget urbs anyway, this patch
introduces a proper bit mask to track which requests have been submitted
and given back.
That alone however doesn't make the driver work in case the host
controller is broken and doesn't give back urbs at all, and the output
stream will stop once all pre-allocated output urbs are consumed. But
it does prevent crashes of the controller stack in such cases.
See http://bugzilla.kernel.org/show_bug.cgi?id=40702 for more details.
Reported-and-tested-by: Matej Laitl <matej@laitl.cz>
- ALSA: snd-usb-caiaq: Correct offset fields of outbound iso_frame_desc
This fixes faulty outbount packets in case the inbound packets
received from the hardware are fragmented and contain bogus input
iso frames. The bug has been there for ages, but for some strange
reasons, it was only triggered by newer machines in 64bit mode.
Reported-and-tested-by: William Light <wrl@illest.net>
Reported-by: Pedro Ribeiro <pedrib@gmail.com>
- ALSA: snd-usb-caiaq: Fix keymap for RigKontrol3
Reported-by: Renato <naretobh@gmail.com>
- ALSA: caiaq - Fix possible string-buffer overflow
Use strlcpy() to assure not to overflow the string array sizes by
too long USB device name string.
Reported-by: Rafa <rafa@mwrinfosecurity.com>
- ALSA: snd-usb-caiaq: Add support for Traktor Audio 2

USB generic driver

- Refreshed patches
Mainly for bool modparm changes.
- Refreshed usb/quirks.patch to fix fuzz
- Refresh usb/helper.patch
For snd_usb_ctl_msg() change.
- Update usb/endpoint.patch and usb/stream.patch
For upstream commit ca7051d40da5e86e3c249b5a41ac82bb1016c044
- Fix usb/quirks.patch for older kernels
- Fix builds of usb-audio with older kernels for autopm stuff
- Refreshed usb/card.patch
for autosuspend support
- ALSA: usb-audio - Avoid flood of frame-active debug messages
With some buggy devices, the usb-audio driver may give "frame xxx active"
kernel messages too often. Better to keep it as debug-only using
snd_printdd(), and also add the rate-limit for avoiding floods.
Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=738681
- ALSA: usb-audio: fix possible hang and overflow in parse_uac2_sample_rate_range()
A malicious USB device may feed in carefully crafted min/max/res values,
so that the inner loop in parse_uac2_sample_rate_range() could run for
a long time or even never terminate, e.g., given max = INT_MAX.
Also nr_rates could be a large integer, which causes an integer overflow
in the subsequent call to kmalloc() in parse_audio_format_rates_v2().
Thus, kmalloc() would allocate a smaller buffer than expected, leading
to a memory corruption.
To exploit the two vulnerabilities, an attacker needs physical access
to the machine to plug in a malicious USB device.
This patch makes two changes.
1) The type of "rate" is changed to unsigned int, so that the loop could
stop once "rate" is larger than INT_MAX.
2) Limit nr_rates to 1024.
Suggested-by: Takashi Iwai <tiwai@suse.de>
- ALSA: usb-audio: add Yamaha MOX6/MOX8 support
ALSA: usb-audio: add Yamaha MOX6/MOX8 support
- ALSA: snd-usb: added VOX ToneLab ST midi handling
- ALSA: usb-audio - Support for Roland GAIA SH-01 Synthesizer
Added table quirks entry for Roland GAIA SH-01 Synthesizer based upon
Roland SH-201 table entry as template. USB MIDI and audio was tested
with Muse and Audacity.
- ALSA: usb-audio: Use kmemdup rather than duplicating its implementation
Use kmemdup rather than duplicating its implementation
The semantic patch that makes this change is available
in scripts/coccinelle/api/memdup.cocci.
- ALSA: snd_usb_audio: add Logitech HD Webcam c510 to quirk-384
Logitech HD Webcam c510 provide wrong mixer resolution.
Add it to "res = 384" quirk.
- ALSA: usb-audio - Fix the missing volume quirks at delayed init
In the recent usb-audio driver, the initialization of volume ranges
may be delayed when the device doesn't respond well at the probing time.
But the volume quirks for certain devices are applied only in
mixer_ctl_feature_info() thus only at the very first probe and will be
missing when the volume range is initialized later.
This patch moves the volume quirk code to be always called from the
volume-range extraction (get_min_max()), so that the quirks are properly
applied in the later init time.
Reported-and-tested-by: Alexey Fisher <bug-track@fisher-privat.net>
- ALSA: usb-audio - Fix possible access over audio_feature_info[] array
The audio_feature_info[] array should contain all entries for UAC2_FU_*,
but currently a few last entries are missing. Even though, the driver
tries to probe these entries in parse_audio_feature_unit() and may
access the range over the array. This patch fixes the bug by limiting
the loop size properly using ARRAY_SIZE() instead of a hard-coded
magic number.
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
- ALSA: usb-audio: increase control transfer timeout
There are certain devices that are reportedly so slow that they need
more than 100 ms to handle control transfers. Therefore, increase the
timeout in mixer(_quirks).c to 1000 ms.
The timeout parameter of snd_usb_ctl_msg() is now constant, so we can
drop it.
Reported-by: Felipe Balbi <balbi@ti.com>
- ALSA: usb-audio: Check for possible chip NULL pointer before clearing probing flag
Before clearing the probing flag in the error exit path, check that the
chip pointer is not NULL.
- ALSA: usb-audio - clear chip->probing on error exit
The Terratec Aureon 5.1 USB sound card support is broken since kernel
2.6.39.
2.6.39 introduced power management support for USB sound cards that added
a probing flag in struct snd_usb_audio.
During the probe of the card it gives following error message :
usb 7-2: new full speed USB device number 2 using uhci_hcd
cannot find UAC_HEADER
snd-usb-audio: probe of 7-2:1.3 failed with error -5
input: USB Audio as
/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.3/input/input6
generic-usb 0003:0CCD:0028.0001: input: USB HID v1.00 Device [USB Audio]
on usb-0000:00:1d.1-2/input3
I can not comment about that "cannot find UAC_HEADER" error, but until
2.6.38 the card worked anyway.
With 2.6.39 chip->probing remains 1 on error exit, and any later ioctl
stops in snd_usb_autoresume with -ENODEV.
- ALSA: usb-audio: Added support for Roland UM-ONE midi-usb interface
Roland UM-ONE midi usb interface differs from Roland UM-1.
- ALSA: snd-usb: move code from urb.c to endpoint.c
No code altered at this point, simply preparing for upcoming
refactorizations.
- ALSA: snd-usb: re-order code
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.
- ALSA: usb: refine delay information with USB frame counter
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.
[clemens: changed debug code]
- ALSA: usb-audio: add Starr Labs USB MIDI support
Add support for Starr Labs USB MIDI devices such as the Z7S, which are
based on an FTDI serial UART chip.
Based on a patch by Daniel Mack.
- PM / Runtime: Add macro to test for runtime PM events
This patch (as1482) adds a macro for testing whether or not a
pm_message value represents an autosuspend or autoresume (i.e., a
runtime PM) event. Encapsulating this notion seems preferable to
open-coding the test all over the place.
- ALSA: usb-audio - Check the dB-range validity in the later read, too
When the initial check of dB-range failed due to the read error, try to
check again at the later read, too. When an invalid dB range is found,
remove TLV flags and notify the mixer info change.
- ALSA: usb-audio - Fix missing mixer dB information
The recent fix for testing dB range at the mixer creation time seems
to cause regressions in some devices. In such devices, reading the dB
info at probing time gives an error, thus both dBmin and dBmax are still
zero, and TLV flag isn't set although the later read of dB info succeeds.
This patch adds a workaround for such a case by assuming that the later
read will succeed. In future, a similar test should be performed in a
case where a wrong dB range is seen even in the later read.
- ALSA: usb-audio - Add quirk for BOSS Micro BR-80
- ALSA: snd-usb: Fix uninitialized variable usage
Purely cosmetic, but fixes the following build warning.
CC [M] sound/usb/quirks.o
sound/usb/quirks.c: In function ‘snd_usb_apply_boot_quirk’:
sound/usb/quirks.c:429:6: warning: ‘err’ may be used uninitialized in this function [-Wuninitialized]
- ALSA: usb-audio - add quirk for Keith McMillen StringPort
- ALSA: snd-usb: operate on given mixer interface only
When creating the mixers for an USB audio device, the current code looks
at the host interface stored in mixer->chip->ctrl_if. Change this and
rather keep a local pointer to the interface that was given when
snd_usb_create_mixer() was called.
Reported-by: Nicolai Krakowiak <nicolai.krakowiak@gmail.com>
Reported-by: Lean-Yves LENHOF <jean-yves@lenhof.eu.org>
- ALSA: snd-usb: avoid dividing by zero on invalid input
- ALSA: snd-usb: Accept UAC2 FORMAT_TYPE descriptors with bLength > 6
The Focusrite Scarlett 18i6 USB has them that way, which is probably a
bug. Anyway, the driver should simply ignore this fact.
Reported-by: Nicolai Krakowiak <nicolai.krakowiak@gmail.com>
- ALSA: usb-audio - Add quirk for Roland / BOSS BR-800
Add support for Roland/BOSS BR-800 (0582:011e) to snd-usb-audio driver.
This allows playback and recording, which has been tested and found to
work. The third interface should be MIDI (MTC/SMPTE?) for DAW interface
and is set as per ME-25, but this has not been tested. SDHC card access
is already supported by usb-storage for Backup/Rhythm Editor/Wave
Convertor mode which should not conflict with this.
- ALSA: usb-audio - Add quirks for M-Audio Fast Track Pro and Quattro
This patch gives M-Audio Fast Track Pro and M-Audio Quattro quirks and
endpoints to boot and setup those devices with special options (digital
inputs and outputs, 24 bits mode, etc...). M-Audio Audiophile quirks are
just adapted to match the new global M-Audio parameters.
Special configurations can be then loaded through a modprobe conf file.
For example, to set the 24 bits mode on the Fast Track Pro add
/etc/modprobe.d/fast_track_pro.conf :
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=0x08
Here is a list of the possibilities in this example :
http://files.parisson.com/debian/fast-track-pro.conf
- ALSA: usb-audio: replace "void *" with more specific pointers
- ALSA: usb - turn off de-emphasis in s/pdif for cm6206
CM6206: Turn off de-emphasis channel status bit in S/PDIF output.
- ALSA: usb-audio: more control quirks for M-Audio FastTrack devices
Make use of the freshly introduced methods to re-use standard mixer
handling and add some controls that are hidden but implemented in a
standard conform way on M-Audio's FastTrack devices.
Original-code-by: Felix Homann <linuxaudio@showlabor.de>
- ALSA: usb-audio: add new quirk type QUIRK_AUDIO_STANDARD_MIXER
This quirk type will let the driver assume that there is a standard
mixer on a given interface, or that a specific mixer quirks will handle
the device.
- ALSA: usb-audio: export snd_usb_feature_unit_ctl
In order to allow quirks functions to hook up to the standard feature
unit op tables, this patch exports a pointer to the struct that is used
internally.
That way, all the code handling the control can be kept private, and
external code can reference the symbol to re-use it.
- ALSA: usb-audio: rework add_control_to_empty()
This patch renames add_control_to_empty() to snd_usb_mixer_add_control()
and exports it, so the quirks functions can make use of it.
Also, as "struct mixer_build" is private to mixer.c, rewrite the
function to take an argument of type "struct usb_mixer_interface"
instead.
- ALSA: usb-audio: move assignment of chip->ctrl_intf
This is needed for upcoming changes to the quirks mechanism.
- ALSA: usb-audio - Add support for USB X-Fi S51 Pro
USB X-Fi S51 Pro volume and mute from the volume knob on the unit.
Compiled and tested with 2.6.39-rc7-git12
- ALSA: usb-audio: handle "Fast Track Ultra" with USB_DEVICE_VENDOR_SPEC()
That way, the class compliant MIDI interface is also handled.
Reported-and-tested-by: Grant Diffey <gdiffey@gmail.com>
- ALSA: usb-audio: assume valid clock
If the interface can't report a clock's validity, assume that it's
valid.
Reported-by: Vicente Joel <vicentejoel@gmail.com>
- ALSA: usb-audio: add quirks for Roland GR-55
Reported-by: Jeffrey Scott Flesher <jeffrey.scott.flesher@gmail.com>
- ALSA: usb-audio: Add quirk for KORG PANDORA PX5D MIDI interface
Reported-and-tested-by: Frédéric Jaume <frederic.jaume@gmail.com>
- ALSA: usb-audio: remove invalid extra mixers for Komplete Audio 6
This was a flaw in the reading of the spec tables - Native Instrument's
"Komplete Audio 6" device has no such extra controls.
This patch also fixes the device name in two comments.
- ALSA: usb-audio: include format.h in format.c
Just in case a prototype changes, we'll be warned. This also fixes a
sparse warning.
- ALSA: usb-audio: make hwc_debug a noop in case HW_CONST_DEBUG is not set
Just defining it to nothing is dangerous as it can alter the code
execution flow, for example when used in as only function in a
conditional code block.
- ALSA: usb-audio - Terratec Aureon 7.1 USB ID as C-Media cm6206 quirks
This patch adds support for the Terratec Aureon 7.1 USB which uses a
C-Media cm6206 and needs all the quirks already found in the past.
- ALSA: usb-audio - Don't expose broken dB ranges
Some crappy USB-audio devices give broken dB ranges, e.g. both min and max
are 0dB. This confuses the volume control that prefers dB expression such
as alsactl or PulseAudio. In such a case, it's much better not to expose
the broken dB information.
- ALSA: usb-audio: Add quirks for Audio Kontrol 6
This new device by Native Instruments is also compliant to the USB
standard v2.0, but hides this detail at when connected.
It needs the same boot quirks than other models, and also has two
non-class-compliant mixer controls.
- ALSA: usb-audio: define another USB ID for a buggy USB MIDI cable
There are many USB MIDI cables out there that have buggy
firmware that reports it can do more than 4 bytes in a
packet when they can only properly handle 4
This patch adds the ID of yet another one of those cables
- ALSA: usb-audio - Support for Boss JS-8 Jam Station
- ALSA: usb - Remove trailing spaces from USB card name strings
Some USB devices give trailing spaces in strings returned from
usb_string(). This confuses the automatic card-id creation, resulting
always in "default".
This patch fixes the behavior by removing trailing spaces.
- ALSA: usbaudio: implement USB autosuspend
Devices are autosuspended if no pcm nor midi channel is open
Mixer devices may be opened. This way they are active when
in use to play or record sound, but can be suspended while
users have a mixer application running.
[Small clean-ups using static inline by tiwai]
- ALSA: usbaudio: fix suspend/resume
- ESHUTDOWN must be correctly handled
- the optional interrupt endpoint's URB must be stopped and restarted
- ALSA: usb-audio - Add "cval->res = 384" quirk for Logitech Webcam C600
One more affected devices: Logitech Webcam C600 (046d:0808)
Volume range before quirk is 6400, after (also real) is 16.
- ALSA: usb-audio - Add volume range check and warn if it too big
- ALSA: usb-audio: fix oops due to cleanup race when disconnecting
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 de1b8b93a0ba "[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: Pierre-Louis Bossart <pierre-louis.bossart@intel.com>
[CL: also serialize hw_params callback]
- ALSA: usb-audio: reconstruct some dispatcher functions to use switch-case
The number of cases has increased so use switch-case rather than
if-statements.
- ALSA: usb-audio: add support for Native Instruments MK2 devices
The MK2 generation of Native Instruments' sound cards are in fact
compliant to the USB audio standard of version 2 and other approved USB
standards. However, they come up as vendor-specific device when first
connected but can be told to come up with a new set of descriptors
upon their next enumeration. The interfaces announced by the new
descriptors will be handled by the kernel's class drivers. This is done
by issuing a vendor specific device request and sending the device to
reset.
There are also some vendor-specific USB requests for some mixer elements
that can't be exported in a standard compliant way. The driver now
supports them with quirks handling mechanisms.
- ALSA: usbaudio - Enable the E-MU 0204 USB
- ALSA: usb-audio: add Cakewalk UM-1G support
Add a quirk for the Cakewalk UM-1G USB MIDI interface in
"advanced driver" mode. (It already works in standard mode.)

Utils

- Copy only trace/events/asoc.h
Otherwise other header files there break the build.
- Create links to the latest include/trace/events/*.h
- Fix version check in utils/mod-deps
Forgot that this also checks $kvernum. Following the change in configure
script, too.
- Fix inclue/config1.h creation for integer values
- Allow specifying integer options via configure script
Add the feature to specify integer kconfig values from configure
--with-card-options.
- Fix build with 3.x kernels
- add firewire build stubs
Add build stubs and related support for the new FireWire modules.

VIA82xx driver

- ALSA: via82xx: allow to disable the SRC
Add the PCM rule to allow disabling the PCM playback SRC.

Virtual Master

- ALSA: vmaster - Free slave-links when freeing the master element
When freeing the vmaster master element, we should release slave-links
properly, not only assumig that slaves will be freed soon later.

YMFPCI driver

- ALSA: ymfpci: allow to disable the SRC
Add the PCM rules to allow disabling the PCM playback and capture SRCs.
- ALSA: ymfpci: fix PCM open error handling
The installation of the minimum period size constraint in the PCM open
callbacks was not checked for errors. Add this check, and move the call
to the beginning of the function to avoid having to do any cleanups in
the error case.
- ALSA: ymfpci: add "Playback" to FM Legacy Volume control
YDSXGR_LEGACYOUTVOL is a Playback Volume control for OPL3 FM Synth.

au88x0 driver

- ALSA: Au88x0 - Reduce the number of playback subdevices of au8830 from 32 to 16
- The maximum number of playback streams depend on the number of sample
rate conveters (16) and the number of DMA channels (32).
- ALSA: Au88x0 - Support 4 channels playback when AC97 codecs has SDAC bit
- Check SDAC bit of AC97 codec for supporting 4 channels playback.
- ALSA: Au88x0 - Fix channels swapping of 4 channels playback
Fix channels swapping of 4 channels playback by
using vortex_adbdma_stopfifo instead of vortex_adbdma_pausefifo
for SNDRV_PCM_TRIGGER_STOP event
- ALSA: Au88x0 - Fix IRQ fifo error and channels swap of 4 channels playback
Fix IRQ fifo error when playing stereo by set stereo flag of fifo control.
This also fix the swap of front and rear channels on au8830.
- ALSA: Au88x0 - Fix Xtalk's constants
- Fix XtalkGainsDefault, XtalkGains1Chn
- Fix XtalkWideCoefsLeftEQ, XtalkWideCoefsRightEQ
- Fix XtlakWideCoefsLeftXT, XtalkWideCoefsRightXT
- ALSA: Au88x0 - Xtalk - fix write/read of eq and xt instates
- Kill off warning: ‘inline’ is not at beginning of declaration
Fix a bunch of
warning: ‘inline’ is not at beginning of declaration
messages when building a 'make allyesconfig' kernel with -Wextra.
These warnings are trivial to kill, yet rather annoying when building with
-Wextra.
The more we can cut down on pointless crap like this the better (IMHO).
A previous patch to do this for a 'allnoconfig' build has already been
merged. This just takes the cleanup a little further.
- ALSA - au88x0 - Add buffer bytes constraints
This allow application such as gstreamer and wine which use
snd_pcm_hw_params_set_buffer_time_near() won't fail any more
since sound chips require special containt power 2 period bytes
- ALSA: au88x0 - Use a better name for pcm devices of au88x0
- sound: ALSA - au88x0 - add Playback Volume to 10 bands Equalizer Controls
Add " Playback Volume" to 10 bands Equalizer Controls of au88x0 so that
alsa-lib won't regard them as "Capture Volume".
- ALSA: au88x0 - Modify pointer callback to give accurate playback position

gitcompile script

- Update sound git tree path in gitcompile script
Now it's without -2.6 suffix.

alsa-lib

Core

- Release v1.0.25
- Introduce --with-pkgconfdir, add 64-bit defaults to gitcompile
- conf: Allow for a directory to be given as a config file.
When this is done, *.conf files can be placed in that directory and they
will be processed by as if they were included directly.
A directory (typically /usr/share/alsa/alsa.conf.d/) has been
added into the distribution.
v2: Used existing conf syntax rather than processing via autotools
v3: Split file loading into separate function and made error handling
more consistent.
- configure: Fail when the user attempts to compile shared and static libs
There are some issues with libtool breaking the possibility to build both
types of libraries in one shot. Compile libraries separately.
- Release v1.0.24.1

Control API

- Document strdup allocation in snd_card_get_name family
This was spotted by Jörg Höhle on the wine-patches ML.
- Improve snd_device_name_hint documentation
- control: add snd_ctl_elem_add_enumerated()
Handling of user control elements was implemented for all types except
BYTES and ENUMERATED. Enumerated user controls will be needed for the
device-specific mixers of upcoming FireWire drivers.
- Add snd_{ctl|pcm}_open_fallback() functions
This patch adds new API functions, snd_ctl_open_fallback() and
snd_pcm_open_fallback(). These are just like snd_*_open_lconf() but
used to open a fallback PCM/control. The difference is that it replaces
the name string with the given original name, so that hctl and other
upper-layers will recognize it as an alias.
- Fix missing error code in snd_ctl_hw_open()
- ctlparse: Respect softfloat configure option
If we want softlfoat we can't use ceil which uses libm.

Device Name API

- Remove docs for snd_names_list and snd_names_list_free
No need to have misleading docs for functions that do nothing.

HWDEP API

- alsa-lib: fixed coverity reported issues under "FORWARD_NULL" checker.
Coverity Static Analysis helps developers find hard-to-spot,
yet potentially crash-causing defects early in the development phase,
reducing the cost,time, and risk of software errors.
This patch has fix for situations where variable can be NULL
but not been checked beforehand

Mixer API

- Fix compile warnings
strstr() returns a char pointer
simple_none.c: In function ‘base_len’:
simple_none.c:940:33: warning: ordered comparison of pointer with integer zero
simple_none.c:941:29: warning: ordered comparison of pointer with integer zero
- Fix alsa-lib to regard 3D control - Depth as Playback Controls
This allow those mixer or recording application to find those controls which
are really used for capturing.

PCM API

- Improve hw_params documentation
- Search-and-replace improve documentation language
- pcm:mmap_emul: Fix sw_params and others in bypass mode
When the slave doesn't need any mmap-emulation, the plugin shouldn't do
anything special in sw_params and other callbacks but just pass to the
generic helpers and update hwptr and applptr.
- src/pcm/pcm_mmap.c: add missing free
The mmap_channels and running_areas fields are allocated using calloc, but
are not freed on an error path.
- src/pcm/pcm_multi.c: add missing free
Something that is allocated using calloc is not freed on an error path.
- src/pcm/pcm_ladspa.c: add missing free
Something that is allocated using calloc is not freed on some
error paths.
- src/pcm/pcm_rate.c: add missing free
Something that is allocated using calloc is not freed on one
or more error paths.
- pcm: recalculate all rules after changing hw_params flags
The rules engine avoids recalculating rules that do not depend on
any changed parameter, but there is no mechanism to record changed
flags. So when we change a flag, we have to ensure that all rules
depending on that flag are recalculated; the only method to do this
is to force recalculation of all rules.
So far, there have been no kernel drivers with rules depending
on flags, but rules to disable hardware SRCs by setting
SND_PCM_HW_PARAMS_NORESAMPLE are being introduced now.
- Add snd_{ctl|pcm}_open_fallback() functions
This patch adds new API functions, snd_ctl_open_fallback() and
snd_pcm_open_fallback(). These are just like snd_*_open_lconf() but
used to open a fallback PCM/control. The difference is that it replaces
the name string with the given original name, so that hctl and other
upper-layers will recognize it as an alias.
- alsa-lib: fixed coverity reported issues under "FORWARD_NULL" checker.
Coverity Static Analysis helps developers find hard-to-spot,
yet potentially crash-causing defects early in the development phase,
reducing the cost,time, and risk of software errors.
This patch has fix for situations where variable can be NULL
but not been checked beforehand

Use Case Manager API

- ucm: add another sequence 'msleep'
Thus, we have two sleep statements:
msleep <milliseconds>
usleep <microseconds>
- ucm: tivial code style fix
- ucm: fix seg fault in execute_cset()
When there's no space in 'cset', 'pos' gets NULL, dereferencing 'pos' gets a
seg fault. We need to be more robust.
- UCM: get: Implement 'exact' value retrieval
[=]<NAME>[/[<modifier>|</device>][/<verb>]]
- value identifier <NAME>
- Search starts at given modifier or device if any,
else at a verb
- Search starts at given verb if any,
else current verb
- Searches modifier/device, then verb, then defaults
- Specify a leading "=" to search only the exact
device/modifier/verb specified, and not search
through each object in turn.
- Examples:
"PlaybackPCM/Play Music"
"CapturePCM/SPDIF"
From ValueDefaults only:
"=Variable"
From current active verb:
"=Variable//"
From verb "Verb":
"=Variable//Verb"
From "Modifier" in current active verb:
"=Variable/Modifier/"
From "Modifier" in "Verb":
"=Variable/Modifier/Verb"
- UCM: snd_use_case_get: Don't segfault when no current verb
get_value, called by snd_use_case_get, uses uc_mgr->active_verb without
checking there is one, and hence can segfault. Fix this.
- UCM: Allow querying of {Supported,Conflicting}Devices
At any time, one can query:
_supporteddevs/<modifier>|<device>/<verb>
_conflictingdevs/<modifier>|<device>/<verb>
If a verb is current, one can query:
_supporteddevs/<modifier>|<device>
_conflictingdevs/<modifier>|<device>
Note that at most one of the supported/conflicting devs lists has
any entries, and when neither is present, all devices are supported.
- UCM: Disallow gets of undefined system properties
In UCM, there are various system-defined properties whose names start
with "_". Explicitly prevent any gets from falling back to properties
defined in a config file if the property name starts with "_", in order
to reserve the entire "_" namespace for system-defined properties.
- UCM: Implement ConflictingDevices, add device list to devices
Wherever SupportedDevice can appear, also allow ConflictingDevice. Only
one or the other (or neither) may be specified. When neither is
specified, allow anything. Sometimes, listing ConflictingDevices may
result in a shorter list than explicitly listing all SupportedDevices.
Add support for SupportedDevice and ConflictingDevice to SectionDevice.
This allows representing devices which are mutually exclusive, e.g. due
to a mux that switches between capturing from two different microphones,
without the possibility of mixing.
Enhance is_modifier_supported to allow ignoring SupportedDevice and
ConflictingDevice. This is useful when querying values from a
SectionModifier; there's no reason we shouldn't be able to query values
just because the current configuration would prevent enabling that
device. The new is_device_supported is implemented similarly.
Enhance switch_device to remove the old device from the current device
list before querying for the new device, and add it back immediately
afterwards. This allows the query for the new device to ignore any
conflicts caused solely by the old device.
- UCM: Deprecate index on Section{Device,Modifier}
The previous supported "legacy" syntax was:
SectionDevice."Speaker".0 {
SectionModifier."Capture Voice".0 {
This change supports new syntax:
SectionDevice."Speaker" {
SectionModifier."Capture Voice" {
... but also allows the old syntax, iff the index is exactly "0". If an
index is present, but not exactly "0", parsing will appear to succeed,
but produce an empty device or modifier.
When naming devices and modifiers, even if the legacy format is used,
any index is not included in the name; i.e. both sets of syntax above
name the device just "Speaker".
The SupportedDevice list syntax still also accepts either "x" or "x.0",
but internally strips ".0" from the tail of any device name. Any other
name including "." is disallowed.
Finally, when comparing device or modifier names, a simple exact string
compare is now used, since no index data is ever present in device or
modifier names.
The one functional change introduced here is that a SupportedDevice
entry of just "x" will now only ever match a single device. It previously
acted as a wildcard for any device named "x.foo".
- UCM: Fix deadlock following failed get _verb
When querying the current verb without a verb set, snd_use_case_get bails
out early without unlocking uc_mgr->mutex. This causes subsequent API calls
to hang. Instead, s/return/goto __end/.
- UCM: Fix typo in error message
parse_name_is_safe disallows dots in the name, so not is the correct
word to use
- UCM: fix memory leak when executing cset commands
fix memory leak when executing cset commands.
snd_ctl_elem's are allocated, but never free'ed
- UCM: Fix LGPL licence ("how to receive" part referred GPL instead LGPL)
- UCM: Fix empty get_list - initialize returned pointer to NULL
- UCM: comment fixes and fix myvalue initialization fix in add_values()
- alsa-lib: ucm: allow values to be read from devices
This allows devices value to be read using the get_value().
Also fix a little formatting.
- ucm: add more error messages for cdev and cset commands
- ucm: allow bind modifier to specific instances, other fixes
- ucm: make verb comments optional
avoid seg fault if no comment is provided

Configuration

- conf: Allow for a directory to be given as a config file.
When this is done, *.conf files can be placed in that directory and they
will be processed by as if they were included directly.
A directory (typically /usr/share/alsa/alsa.conf.d/) has been
added into the distribution.
v2: Used existing conf syntax rather than processing via autotools
v3: Split file loading into separate function and made error handling
more consistent.
- Define "sysdefault" PCM and control
When "default" PCM and control definitions are overwritten by others
like PulseAudio setup, the original system-default defition is lost.
This is a problem when PA is temporarily (or intentionally) disabled
and user wants to use the default dmix.
This patch adds a new standard definition for the system-default,
"sysdefault". This can be used for fallbacks.
- emu10k1.conf - Fix no sound problem when using SB Live! Platinum
Add asym to front, rear and center_lfe to prevent route change after
removed the lock.
After removed the lock, when application using "hw", "front", "rear",
"surround40" and "surround51", the route of the front channel is
changed (lost right channel or both channels) when other application
using "front", "rear" or "center_lfe" to record
- Specficy subdevice 0 for front/surround* of HDA-Intel.conf
The subdevice 0 is used for multi-channel outputs.
This fixes the detection of multi-channel devices of VIA codecs
by PulseAudio.
Reported-by: Raymond Yau <superquad.vortex2@gmail.com>
- alsa-lib: fixed coverity reported issues under "FORWARD_NULL" checker.
Coverity Static Analysis helps developers find hard-to-spot,
yet potentially crash-causing defects early in the development phase,
reducing the cost,time, and risk of software errors.
This patch has fix for situations where variable can be NULL
but not been checked beforehand
- HDA-Intel.conf - Fix low mic volume due to pulseaudio using "front" device for playback and capture
- EMU10K1.conf: Don't lock hook controls
Locking the controls in hooks causes a BUSY error when multiple
streams are opened, typically in PulseAudio. Better not to touch
the locking in hooks in such a case.
- Fix typo in comment in surround71.conf
BugLink: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=591318
Reported-by: Ariel <asdebian@dsgml.com>
- Mark Heaphone {Center|LFE} control of emu10k1 conf as optional
The controls referred in center_lfe definition in EMU10K1.conf should be
marked as optional since some boards don't have these.
- Conf: Fix channels of ICE1712 to 10/12
The ICE1712 kernel driver accepts 10 playback channels and
12 recording channels only. Therefore fix this channel count
in alsa-lib.
BugLink: http://bugs.launchpad.net/bugs/178442
- alsa-lib: add LaCie Firewire Speakers/Griffin FireWave Surround driver
Add configuration files for the "default"/"front"/"surround51" devices
of the FireWire driver.

Kernel Headers

- control: add snd_ctl_elem_add_enumerated()
Handling of user control elements was implemented for all types except
BYTES and ENUMERATED. Enumerated user controls will be needed for the
device-specific mixers of upcoming FireWire drivers.
- asound.h: cosmetic changes for consistency with kernel asound.h
Change some whitespace and comments to remove spurious differences
between the alsa-lib and kernel versions of asound.h.
- asound.h: update for latest kernel
Refresh asound.h to be up to date with its kernel source.
- Add RME RPM to HDSP_IO_Type.
The hdsp.c driver supports the RME RPM devices, but we also need this
information in alsa-lib for tools like hdsploader and hdspmixer.

Simple Abstraction Mixer Modules

- alsa-lib: fixed coverity reported issues under "FORWARD_NULL" checker.
Coverity Static Analysis helps developers find hard-to-spot,
yet potentially crash-causing defects early in the development phase,
reducing the cost,time, and risk of software errors.
This patch has fix for situations where variable can be NULL
but not been checked beforehand

Test/Example code

- Fix printf for size_t
Need to use z prefix for size_t type.
midiloop.c: In function ‘main’:
midiloop.c:172:2: warning: format ‘%i’ expects type ‘int’, but argument 2 has type ‘size_t’
....
- test/latency: print error message when 2 periods per buffer not supported
Print error message when playback/capture does not support 2 periods
per buffer.
- ucm: allow bind modifier to specific instances, other fixes

Utils

- Introduce --with-pkgconfdir, add 64-bit defaults to gitcompile

alsa-utils

Core

- Release v1.0.25
- alsactl: add support for recreating enumerated user controls
- fix use of $(SED)
The alsactl Makefile used 'sed $(SED)' which is going to failed when SED
is actually set. Replaced that with '$(SED)', and a few 'sed' calls in
alsaconf Makefile as well. Added AC_PROG_SED to configure to have it
set.
Fixes: https://bugtrack.alsa-project.org/alsa-bug/view.php?id=5363
Fixes: http://bugs.gentoo.org/show_bug.cgi?id=366587
- Updated COPYING with the recent FSF address
- Release v1.0.24.2
- Release v1.0.24.1

ALSA Control (alsactl)

- Alsa-utils: Fix typo causing some volumes not to be initialized
When I was reading the source code, I stumbled over this typo causing
Center, LFE, and Surround speakers not to be initialized.
- alsactl: Initialize Front Speaker, etc
Add missing initialization of surround and CLFE playback volumes and
switches. Ditto for "Front Speaker", etc.
- alsactl: add support for recreating enumerated user controls
- fix use of $(SED)
The alsactl Makefile used 'sed $(SED)' which is going to failed when SED
is actually set. Replaced that with '$(SED)', and a few 'sed' calls in
alsaconf Makefile as well. Added AC_PROG_SED to configure to have it
set.
Fixes: https://bugtrack.alsa-project.org/alsa-bug/view.php?id=5363
Fixes: http://bugs.gentoo.org/show_bug.cgi?id=366587
- Revert "alsactl - Display help for names command"
This reverts commit 6d32e055d73edfe6be90135c500dcb32491cf04d.
- alsactl init: Mute CD Playback volume by default
The CD analog playback line is seldom used these days, as all
modern players rip the CD and use the DAC on the sound card.
In addition, it causes background hum on some machines.
Therefore keep it muted by default.
BugLink: http://bugs.launchpad.net/bugs/747184

Speaker Test

- speaker-test.1: Clarify man page by giving examples
BugLink: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=620513
From the Debian bug report:
"The speaker-test manpage could be improved somewhat by helping a
little bit the user determine how to find out the devices he can test.
Based on http://alsa.opensrc.org/Speaker-test I have make some changes
to the manpage (diff attached) to describe a little bit more how
speaker-test can be used alongside 'aplay'.
Please consider the following patch for
alsa-utils-1.0.23/speaker-test/speaker-test.1"

alsaconf

- fix use of $(SED)
The alsactl Makefile used 'sed $(SED)' which is going to failed when SED
is actually set. Replaced that with '$(SED)', and a few 'sed' calls in
alsaconf Makefile as well. Added AC_PROG_SED to configure to have it
set.
Fixes: https://bugtrack.alsa-project.org/alsa-bug/view.php?id=5363
Fixes: http://bugs.gentoo.org/show_bug.cgi?id=366587

alsaloop

- alsaloop: Use AM_CFLAGS in Makefile.am
- alsaloop: another try to force correct formats for libsamplerate
- alsaloop: libsamplerate requires specific formats, force them for slave mode

alsamixer

- alsamixer: Fix X-win related crash for PulseAudio plugin (bad linking)
A lot of reports that alsamixer crashes in X terminal when the PulseAudio
CTL plugin is activated were entered to the tracking systems.
I figured that there is a linking clash for the shutdown() function.
The shutdown() function in glibc is socket related, but the alsamixer code
redefines this function and appearently that under some linking
circumstances - which PA client invokes during the runtime dynamic linking
- the wrong function is called.
This patch, for safety, renames the shutdown() function from alsamixer
to app_shutdown(), but it might make sense to figure the real linking
culprit to avoid future surprises.
- alsamixer: Fix 64bit issues
lrint() returns a long int.
- alsamixer: fix build on uClibc
exp10 is a glibc extension, which isn't supported on uClibc. Luckily,
exp10() is trivial to compute based on exp(), so add a wrapper for
the uClibc case.
- alsamixer: fix display of active/inactive controls

alsaucm

- alsaucm: Don't double-free empty lists
When snd_use_case_get_list (and hence also snd_use_case_card_list) returns
an empty list, alsaucm still attempts to free it. This ends up double-
freeing the returned list, or worse, freeing an invalid pointer, depending
on how snd_use_case_get_list gets implemented. Fix alsaucm to return early
on empty lists to avoid this.
- alsaucm: Add list1 command for non-tuple lists
snd_use_case_get_list returns lists of strings that are either:
a) A sequence of single strings
b) A sequence of pairs of strings all flattened into a single list
The current list command assumes layout (b) above, and hence prints
nothing when printing a single-entry list that's actually in layout (a).
Add a new command "list1" to dump lists in layout (a).
- alsaucm: do not bail out in the interactive mode upon error
- alsaucm: fix interactive mode, add batch mode
- alsaucm: fix list command and output
add one argument to list to avoid error message, do not list
comments as verbs

amixer

- alsa-utils: amixer: Fix SND_CTL_TLVT_DB_RANGE handling
Current support for handling SND_CTL_TLVT_DB_RANGE in amixer is completely
broken. This patch fixes it.
Reported-by: Daniel Mack <zonque@gmail.com>

aplay/arecord

- aplay: Fix spelling error
BugLink: https://bugs.launchpad.net/bugs/816388
Reported-by: Chad Dunlap <cldunlap1@gmail.com>
- aplay: increase channel limit to 256
aplay is limited to 32 channels, which makes it impossible to use it for
testing devices with more channels. here we increase the limit to 256,
which should be sufficient for a virtual device made of 4 64-channel
soundcards.
- aplay: Use standard endian convesions
asm/*.h stuff shouldn't be used directly from the user-space apps.
- aplay: Add include files for mkdir()
- aplay: Avoid recursive signal handling
When abort() is issued in snd_pcm_close() path, it may loop recursively
and crash.
- aplay: Add -i option for interactive mode
The recent addition of pause/resume control via keyboard brought
a problem when aplay/arecord is invoked in background. For avoiding
regressions, it's safer to use non-interactive mode as default and
enable the new feature via an option.
Tested-by: Stephen Warren <swarren@nvidia.com>

aplaymidi/arecordmidi

- aplaymidi: clarify multi-port documentation
The man page did not document what happens when multiple ports are
specified; this could be misinterpreted as the events being duplicated
so that they are played on all ports simultaneously. As suggested by
Peter Billam, clarify that these ports are only used for multi-port MIDI
files.

alsa-tools

Core

- Release v1.0.25
- Release v1.0.24.1

Digigram Echo Mixer

- Remove configure.in-gtk2 from Makefiles...

Envy24 Control

- envy24control: support gtk1 only in configure.in-gtk1

RME Digi Control

- Remove configure.in-gtk2 from Makefiles...

RME HDSP Loader

- hdsploader: Fix temporary RPM constant
RPM in HDSP_IO_Type (enum from hdsp.h) is 4, not 5.
- hdsploader: Temporary define for RPM
Right now (1.0.24.1), alsa-lib's hdsp.h doesn't know about the RPM. To
avoid a strong dependency on unreleased code, temporary provide the
define here.
It can be dropped as soon as a new version of alsa-lib will be released,
thus effectively making it the required minimum version for alsa-tools.
- hdsploader: Add support for RME RPM
Augment hdsploader to support the RME RPM devices. The firmware is
already present in alsa-firmware, so we can directly load it.

ac3dec (Dolby Digital Decoder)

- More build fixes (gtk1 check removal from echomixer), cvscompile removal

as10k1 (EMU10K1+ DSP Assembler)

- More build fixes (gtk1 check removal from echomixer), cvscompile removal

hdspconf

- hdspconf: more string constant fixes
- hdspconf: use foreground color instead of black
if the background color of the color scheme is black, black text is hard
to read. using the foreground color fixes this problem
- hdspconf: fix some string constant conversions

hdspmixer

- hdspmixer: Fix temporary RPM constant
RPM in hdsp.h's HDSP_IO_Type is 4, not 5. This patch isn't exactly
necessary here, because the constant is only used internally, but to
avoid confusion if somebody ever reads the code, let's use the correct
value.
Note that we'll drop it after the next alsa-lib release.
- hdspmixer: Add support for RME RPM
This patch adds support for the RME RPM devices. It's mostly based on
Florian Faber's previous patch against hdspmixer 1.0.23,
forwarded-ported to the current hdspmixer code.
- hdspmixer: Handle preset files used in 1.0.24 and 1.0.24.1
As an addition to the previous commit, let's also cover the 3rd case
when a preset file was written with hdspmixer v1.0.24 or v1.0.24.1.
In this case, no magic header will be present, but the file size would
differ from the pre 1.0.24 format.
- hdspmixer: Handle channel count in old (v1.0.23) preset file format
When reading a preset file, v1.0.23 only used 26 channels instead of 64.
Reading 64 channels from a 26 channel file won't work, hence set it
depending on the file format version.
- hdspmixer: Fix read/write from/to preset files on MADI-like cards
The old hdspmixer (prior to e24e56795ea57e3dd7da45063ab71f04e231192d,
that is pre-1.0.24) has used the hard-coded value "14" for
reading/storing 14 ints from/to preset files, however, it's actually
HDSP_MAX_DEST that should be used.
HDSP_MAX_DEST was bumped from 14 to 32 to allow for MADI cards (32
stereo pairs equal 64 output channels on MADI cards)
- hdspmixer: Initialize headphones out in presets
Cards like the multiface/digiface have additional headphones out. Those
were not initialized in the presets due to wrong loop boundaries:
maxdest represents the amount of physical stereo pairs, and chnls is
either equal or less, so the output fader array needs more iterations
than the playback section.
- hdspmixer: Recall 1st preset on all cards, not just on the first
With the new "store current settings to the virtual 9th preset" before
switching cards code, one needs to make sure the actual mixer state is
loaded with sane values, either from the preset file or a generic
builtin preset.
Calling preset_change(1) is sufficient, setting all the required data.
However, in case of more than one RME card in the system, one needs to
call this function for each card, otherwise, some of the cards store
uninitialized data to the 9th preset, resulting in a weird mixer state
afterwards.
- hdspmixer: Save preset before switching cards
When running with more than one card, switching cards would lose any
changes made to the current card. To avoid this inconvenience, save the
current settings to the virtual 9th preset and restore them when
switching back.
- hdspmixer: Add a 9th pseudo preset
When switching cards, all current settings are lost. To have a place
where to store them, let's add a virtual 9th preset which can be used as
a temporary scratch pad.
- hdspmixer: fix drawing problems with black background
- use foreground color instead of black
- HDSPMixerSelector: set colors before setting labels
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
- hdspmixer: Update NEWS file.
- hdspmixer: Save and restore level meter settings
Each preset can have a different level meter setting (FS samples for
OVR, release rate, minimum level and so on).
These settings were not saved/restore to/from the on-disk file. This
patch adds the missing functionality.
Unfortunately, the current on-disk format is a 1:1 binary dump from
memory without any header information. In other words, this commit will
break backward compatibility with older hdspmixers, that is, new preset
files cannot be read by older versions of hdspmixer. However, we can
still read the old mix files and save them in the new format.
I hence bumped the version, so users know to re-create their files after
upgrading to 1.11.
Bug discovered by Raphaël Doursenaud from ematech.fr.
- hdspmixer: Use constant instead of hardcoded number of cards.
Again, use MAX_CARDS instead of "3", just in case MAX_CARDS should
change some day.
- hdspmixer: Improve pixmaps
- Added tick marks at 4dB intervals
- Small fixes and cleanup to buttons
- Better ALSA branding
All pixmaps provided by Reuben Martin.
- hdspmixer: Fix toggle of master mute and solo buttons
The sensitive area for master mute and solo buttons was slightly off.
Discovered and fixed by Reuben Martin. Thanks for the patch.
- hdspmixer: New pixmaps
Reuben Martin has provided me with an updated pixmap set to replace
RME's 1998 style no longer in use by the corresponding Win32 tools.
The Linux pixmaps are based on ardour2. Likewise hdspmixer, ardour2 is
GPLv2.
- hdspmixer: Show cardname in window title
When running with more than one card, it isn't obvious which card is
shown.
Store the ALSA cardname in the corresponding class and show it in the
window title upon switching cards.
Also, don't show "(null)" but "(unsaved)" in case the user hasn't
selected a preset file.
- hdspmixer: [cosmetics] Break code into logic blocks
Convert the if-then-else-if chain into standalone if-then blocks to
improve readability. A switch-case statement would also do the trick,
but it's less readable.
No (intended) semantic change.
- hdspmixer: Fix code indentation
Only cosmetics, no changed semantics. Indent the whole function to get
rid of a mixture of tabs and spaces.
- hdspmixer: Provide headphones out on Multiface/Digiface
Both, Multiface and Digiface feature a separate headphone submix, so
reflect this additional pair of channels in the corresponding maps.
- hdspmixer: Introduce output channel count for all cards.
Some cards (like multiface) have more physical output ports than
playback ports, mostly because of additional headphones out.
For those cards, the old abstraction model of channels_input and
channels_output doesn't fit, so let's introduce channels_output.
Of course, channels_output is always 2*max_dest at the given speed_mode
(SS/DS/QS), so one could extend this idea, store all destination
settings in channels_output[3] (one for each speed mode) and rip off the
massive code duplication for setting maxdest or max_dest respectively.
Note that dest_map_whatever_speed_mode's array size indirectly defines
the right value for channels_output (read: even more unwanted
redundancy)
- hdspmixer: Adjust playback channel count on Multiface.
The multiface has 18/14 (SS/DS) playback channels, matching the native
18/14 I/O ports. Headphones don't count (only for #destinations).
- hdspmixer: Fix preset activation segfault on AES(32)
When selecting preset 6 or 7 on AES(32), hdspmixer has caused a segfault
due to indirect out of bound access on the destination label array.
The amount of destinations is the number of physical stereo
pairs, so it's usually half the channel count, in some cases one more if
there are additional headphone jacks.
- hdspmixer: Replace hardcoded 3 by MAX_CARDS
We have a define for the number of cards. Use it.
- hdspmixer: Fix labels on H9652
The H9652 uses the same layout as the Digiface, except Digiface features
an additional headphones out. That's why the channel mappings are the
same, but Digiface has mexdest=14 while H9652 has maxdest=13 (12 ADAT
pairs, another pair for S/PDIF and headphone-L/R on Digiface)
- hdspmixer: Lower nesting depth in label assignment
This fix is mostly cosmetic, the long if-then-else-if-chain was rather
confusing. To improve code readability, use simple if-then statements
and leave the function as soon as a match is found.
Clear code would probably use a two-dimensional map, but it seems rather
overengineered.
Last but not least, the non-matching case was augmented by assigning a
generic "1", "2", "3" .. channel naming schema to prevent hdspmixer from
crashing.
- hdspmixer: Make static destination maps extern
To prevent multiple inclusion, make the destmaps global and only
reference them via extern.
- hdspmixer: Don't use hardcoded number of cards.
We have introduced MAX_CARDS before to make the code more safe and
extendable, so it's just sane to use it all over the place.
- hdspmixer: Fix compiler warnings.
All compiler warnings were caused by a conversion from "foo" to a
char pointer. Given that the string itself really is constant, simply
add the keyword to make g++ happy.
- hdspmixer: Fix metering for non-MADI cards
Currently, hdsp and hdspm use different ioctls. Consequently, the metering
is wrong. To avoid code duplication, use pointers to the corresponding
struct members.
- hdspmixer: Fix ALSA snd_ctl_open error when running with three cards.
If three (or more) RME cards are installed in one box, hdspmixer will
try to open a non-existing 4th card, causing an error in snd_ctl_open
and finally terminates itself.
cards[] is a static array, and one must not read beyond the last
element. The solution is far from elegant, however, it's a rather
unintrusive change.
- hdspmixer: Bump version number to 1.10
Florian Faber's last hdspmixer64 version was 1.9, so let's make this the
successor (contains everything that was in 1.9 and also Fredrik's work
on AES(32) support)
- hdspmixer: Increase height of about window.
The copyright list got longer, so we need more vertical space.
- hdspmixer: Update FSF address.
The FSF has moved, so reflect this change in the about dialogue.
See also http://www.fsf.org/about/contact/
- hdspmixer: Improve code coherency
Move channelmappings into one place (channelmap.h). Also, use "aes32"
when referring to the card itself to avoid confusion and to be coherent
with the remaining naming scheme.
This work has mainly been done by Fredrik Lingvall.
- hdspmixer: Style and purity fixes for name arrays.
Contribution by Fredrik Lingvall <fredrik.lingvall@gmail.com>
- hdspmixer: Add RME HDSPe AES and AES32 support.
Code provided by Fredrik Lingvall <fredrik.lingvall@gmail.com>
It seems the PCIe (AES) and PCI (AES32) versions behave the same, so we
can kill two birds with one stone.
- hdspmixer: Break overlong line and don't plenken.
Pure code beautification, just in case somebody ever needs to touch this
again.
- hdspmixer: Beautification; Lower nesting depth
Exit the loop if card < 0. No need to nest the actual code in the else
branch.
- hdspmixer: Improve readability.
Group the statements into logical blocks.
- hdspmixer: retab and reindent code.
Something seriously was wrong, probably different patches with different
tabwidth levels. I switched to spaces to avoid ambiguity and let vim
reindent everything.
- hdspmixer: Fix detection for non-MADIface RME cards
When adding RayDAT support, detection for cards like the 9652 was
accidently lost. This patch re-adds the missing bits.
- hdspmixer: add missing channelmap.h to Makefile.am

alsa-firmware

Core

- Release v1.0.25
- Release v1.0.24.1

AudioScience ASIHPI Firmware

- Update asihpi firmware to 4.10.05
- Update asihpi firmware to version 4.08
- asihpi - Updated to firmware 40600

RME HDSP Firmware

- hdsp: Add rpm_firmware.bin to EXTRA_DIST

alsa-plugins

Core

- Release v1.0.25
- pulse: Install a PulseAudio config snippet into alsa.conf.d
v2: Assing priorities to the config snippets.

A52 Output plugin

- a52: Fix build with older ffmpeg versions.
This fixes a regression introduced in:
40c129a160f37fe9488b2828d6299f99c269703e
- a52 - Fix a52 codec with recent libavcodec updates
The recent libavcodec is changed to accept only float input, but
the old ac3 encoder is still somehow working with a different name.
This patch makes it working again.

Documentation

- pulse: Add fallback option
Added "fallback" option to give the PCM / controller name as a fallback
when connecting to PA server fails.

Jack PCM plugin

- jack: Fix revents for playback
The following patch will make snd_pcm_poll_descriptors_revents()
return the correct value when used on a jack plugin device.
The current version returns POLLIN regardless of capture or
playback.
- jack: Fix hanging applications when using jack plugin
As described in issue #2727
https://bugtrack.alsa-project.org/alsa-bug/view.php?id=2727
applications hang after some seconds when using the jack plugin.
Kevin Ross <kevin@familyross.net> writes:
The cause: The plugin creates a pipe, so that the fd's could be
polled to indicate completion of a transfer. However, the call to
write() blocks when playing audio, as nothing actually reads from the
pipe, and it fills up until it blocks.
Making the socket non-blocking fixes the problem, and testing with
playback and capture both work properly for me now.
[Adrian: I've also tested Kevin's patch and confirm it works.]

PulseAudio -> ALSA plugin

- Added missing configuration files for the pulse plugin
- Set CLOEXEC flag for pipes in PulseAudio plugins
I have noticed that Alsa / PulseAudio are leaking a couple of pipes after a
fork/exec, and have traced the leak to the following two plugins:
libasound_module_ctl_pulse.so
libasound_module_pcm_pulse.so
This is with Fedora 15. I have attached a patch for the problem.
- pulse: Install a PulseAudio config snippet into alsa.conf.d
v2: Assing priorities to the config snippets.
- pulse - Define a dummy PA_CHECK_VERSION() when not available
An old version of PA doesn't define this macro, and gives a build error.
- pulse - only underrun if no more data has been written
Original patch from David Henningsson <david.henningsson@canonical.com>
If more data has already been written after the underrun, the underrun
will automatically end and therefore we should not report it or
restart the stream.
[ This patch adds a more check of underrun with a new PA function so
that the underrun handles works more reliably. As the feature is
supported only in a recent version of PA, the underrun handling is
enabled as default now for the new PA, while it's still disabled for
older PA. -- tiwai ]
- pulse: Set PA_CONTEXT_NOAUTOSPAWN when fallback is available
- pulse: Add fallback option
Added "fallback" option to give the PCM / controller name as a fallback
when connecting to PA server fails.
- Pulse: Fix snd_pcm_avail returning 0 in some cases
Due to a round-off error, snd_pcm_avail could in some cases
return 0 even though more data could be written to the stream.
Reported-by: Maarten Lankhorst <m.b.lankhorst@gmail.com>

alsa-python

Core

- Release v1.0.25

Test python scripts

- ctltest1.py: use new class member names

pyalsa.alsamixer module

- alsamixer: Fix bad PyArg_ParseTuple format strings
A number of calls to PyArg_ParseTuple use "I" for ints and "L" for
long ints. Fix these to be "i" and "l" respectively.

Detailed changelog between 1.0.17 and 1.0.25 releases

Changelog between 1.0.17 and 1.0.25 releases

alsa-oss

Core

- Release v1.0.25
- select: better check for null bit arrays

PCM Emulation

- pcm: check for XRUN state for GETxSPACE and GETxPTR ioctls
Custom Search
Personal tools
Namespaces

Variants
Actions
Navigation
wiki
Toolbox