Difference between revisions of "Detailed changes v1.0.24 v1.0.25"
From AlsaProject
| (One intermediate revision by one user not shown) | |||
| Line 1: | Line 1: | ||
| − | |||
{| align="right" | {| align="right" | ||
| __TOC__ | | __TOC__ | ||
|} | |} | ||
=Detailed changelog between 1.0.24 and 1.0.25 releases= | =Detailed changelog between 1.0.24 and 1.0.25 releases= | ||
| − | =Changelog between 1.0. | + | =Changelog between 1.0.24 and 1.0.25 releases= |
==alsa-driver== | ==alsa-driver== | ||
===Sound Core=== | ===Sound Core=== | ||
Latest revision as of 11:19, 25 January 2012
[edit] Detailed changelog between 1.0.24 and 1.0.25 releases
[edit] Changelog between 1.0.24 and 1.0.25 releases
[edit] alsa-driver
[edit] 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>
[edit] 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.
[edit] SoC PXA2xx Core
[edit] 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.
[edit] 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.
[edit] 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>
[edit] 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.
[edit] 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).
[edit] 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().
[edit] /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.
[edit] /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.
[edit] /soc/pxa/Makefile
- - ASoC: add iPAQ hx4700 machine driver
- AK4641 connected via I2S and I2C, jack detection via GPIO.
[edit] 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.
[edit] 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.
[edit] 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.
[edit] 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.
[edit] 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.
[edit] 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>
[edit] ALSA Version
- - Release v1.0.25
[edit] 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..
[edit] 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.
[edit] 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.
[edit] 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.
[edit] 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.
[edit] 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>
[edit] 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>
[edit] 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.
[edit] 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 ;).
[edit] 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.
[edit] 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.
[edit] 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.
[edit] 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.
[edit] 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
[edit] 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.
[edit] 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.
[edit] 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.
[edit] 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
[edit] 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
[edit] 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.
[edit] 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.
[edit] 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'
- ...
[edit] 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
[edit] 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.
[edit] 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.
[edit] 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>
[edit] 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.
[edit] 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>
[edit] 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.
[edit] 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>
[edit] 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'
- ...
[edit] HDA Codec driver
[edit] HDA Intel driver
[edit] HDA generic driver
[edit] 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>
[edit] ICE1712 driver
- - treewide: transciever/transceiver spelling fixes
- Just tyops.
[edit] 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.
[edit] 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.
[edit] 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
[edit] 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.
[edit] 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.
[edit] 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...
[edit] MIPS SGI A2 Audio System
- - ALSA: Convert mips directory to module_platform_driver
- Factor out some boilerplate code.
[edit] 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.
[edit] MSND driver
- - snd_msnd ->mode is fmode_t, not mode_t
- we put FMODE_... in there
[edit] 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.
[edit] 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.
[edit] 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.
[edit] 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)
[edit] 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.
[edit] 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 ;).
[edit] 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'
- ...
[edit] 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>
[edit] 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]
[edit] 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.
[edit] PPC Tumbler driver
- - ALSA: powermac - Correct lineout detection on PowerMac G4 DA
- Correct lineout (Pro Speaker) detection on PowerMac G4 Digital Audio (Tumbler).
[edit] 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.
[edit] 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 ]---
[edit] 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.
[edit] 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.
[edit] SGI O2 Audio
- - ALSA: Convert mips directory to module_platform_driver
- Factor out some boilerplate code.
[edit] 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>
[edit] 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.
[edit] 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>
[edit] 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.
[edit] 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.
[edit] SoC Audio for Freecale i.MX1x i.MX2x CPUs
[edit] SoC Audio for TXx9
[edit] SoC Audio for the Atmel AT32/AT91 System-on-Chip
[edit] SoC Audio for the Samsung chips
[edit] SoC Blackfin
[edit] SoC Codec 88PM860x
[edit] SoC Codec AC97
[edit] SoC Codec AD1836
[edit] SoC Codec AD1938
[edit] SoC Codec AD193X
[edit] SoC Codec AD1980
[edit] SoC Codec AD73311
[edit] SoC Codec ADAU1373
[edit] SoC Codec ADAU1701
[edit] SoC Codec ADAV80x
[edit] SoC Codec AK4104
[edit] SoC Codec AK4535
[edit] SoC Codec AK4641
[edit] SoC Codec AK4642
[edit] SoC Codec AK4671
[edit] SoC Codec CQ0093 Voice
[edit] SoC Codec CS4270
[edit] SoC Codec CS42L51
[edit] SoC Codec CS42L73
[edit] SoC Codec CX20442
[edit] SoC Codec Cirrus Logic CS4271
[edit] SoC Codec DA7210
[edit] SoC Codec DFBM-CS320 bluethooth
[edit] SoC Codec DIT SPDI/F
[edit] SoC Codec Freescale SGTL5000
[edit] SoC Codec General Digital MICs
[edit] SoC Codec Ingenic JZ4740
[edit] SoC Codec LM4857
[edit] SoC Codec MAX98088
[edit] SoC Codec MAX98095
[edit] SoC Codec MAX9850
[edit] SoC Codec MAX9877
[edit] SoC Codec Philips UDA134x
[edit] SoC Codec Philips UDA1380
[edit] SoC Codec RT5631
[edit] SoC Codec SSM2602
[edit] SoC Codec STA32X
[edit] SoC Codec STAC9766
[edit] SoC Codec SigmaDSP Firmare Loader
[edit] SoC Codec TI sn95031
[edit] SoC Codec TLV320AIC23
[edit] SoC Codec TLV320AIC26
[edit] SoC Codec TLV320AIC3X
[edit] SoC Codec TLV320DAC33
[edit] SoC Codec TPA6130A2
[edit] SoC Codec TWL4030
[edit] SoC Codec TWL6040
[edit] SoC Codec WL1273
[edit] SoC Codec WM1250-EV1
[edit] SoC Codec WM2000
[edit] SoC Codec WM5100
[edit] SoC Codec WM8350
[edit] SoC Codec WM8400
[edit] SoC Codec WM8510
[edit] SoC Codec WM8523
[edit] SoC Codec WM8580
[edit] SoC Codec WM8711
[edit] SoC Codec WM8727
[edit] SoC Codec WM8728
[edit] SoC Codec WM8731
[edit] SoC Codec WM8737
[edit] SoC Codec WM8741
[edit] SoC Codec WM8750
[edit] SoC Codec WM8753
[edit] SoC Codec WM8770
[edit] SoC Codec WM8776
[edit] SoC Codec WM8782
[edit] SoC Codec WM8804
[edit] SoC Codec WM8900
[edit] SoC Codec WM8903
[edit] SoC Codec WM8904
[edit] SoC Codec WM8915
[edit] SoC Codec WM8940
[edit] SoC Codec WM8958
[edit] SoC Codec WM8960
[edit] SoC Codec WM8961
[edit] SoC Codec WM8962
[edit] SoC Codec WM8971
[edit] SoC Codec WM8974
[edit] SoC Codec WM8978
[edit] SoC Codec WM8983
[edit] SoC Codec WM8985
[edit] SoC Codec WM8988
[edit] SoC Codec WM8990
[edit] SoC Codec WM8991
[edit] SoC Codec WM8993/4
[edit] SoC Codec WM8994
[edit] SoC Codec WM8995
[edit] SoC Codec WM8996
[edit] SoC Codec WM9081
[edit] SoC Codec WM9090
[edit] SoC Codec WM9705
[edit] SoC Codec WM9712
[edit] SoC Codec WM9713
[edit] SoC Codec ads1174/8
[edit] SoC Codec alc5621/2/3
[edit] SoC Codec alc5632
[edit] SoC Codec tlv320aic32x4
[edit] SoC DaVinci
[edit] SoC Dynamic Audio Power Management
[edit] SoC EP93XX
[edit] SoC FSI SH7724
[edit] SoC Freescale
[edit] SoC Ingenic JZ4740
[edit] SoC Intel Medfield MID platform
[edit] SoC Layer
[edit] SoC MXS
[edit] SoC Marvell Kirkwood
[edit] SoC NVIDIA Tegra
[edit] SoC Nuvoton NUC900
[edit] SoC PXA2xx 88PM860x Tavor EVB3
[edit] SoC PXA2xx Aeronix Zipit Z2
[edit] SoC PXA2xx Corgi
[edit] SoC PXA2xx E740
[edit] SoC PXA2xx E750
[edit] SoC PXA2xx E800/WM9712
[edit] SoC PXA2xx MIOA701
[edit] SoC PXA2xx Poodle
[edit] SoC PXA2xx Spitz
[edit] SoC PXA2xx Tosa
[edit] SoC PXA2xx Zylonite
[edit] SoC PXA2xx saarb
[edit] SoC S6000
[edit] SoC SH7760 AC97
[edit] SoC Texas Instruments OMAP
[edit] Soc Codec STA32X
[edit] Soc PXA2xx Imote 2
[edit] Soc PXA2xx Magician
[edit] Soc PXA2xx Raumfeld
[edit] Soc iPAQ hx4700
[edit] 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.)
[edit] 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.
[edit] 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
[edit] 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
[edit] 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.
[edit] 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.
[edit] 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.
[edit] 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
[edit] 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.)
[edit] 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.
[edit] VIA82xx driver
- - ALSA: via82xx: allow to disable the SRC
- Add the PCM rule to allow disabling the PCM playback SRC.
[edit] 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.
[edit] 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.
[edit] 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
[edit] gitcompile script
- - Update sound git tree path in gitcompile script
- Now it's without -2.6 suffix.
[edit] alsa-lib
[edit] 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
[edit] 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.
[edit] 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.
[edit] 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
[edit] 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.
[edit] 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
[edit] 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
[edit] 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.
[edit] 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.
[edit] 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
[edit] 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
[edit] Utils
- - Introduce --with-pkgconfdir, add 64-bit defaults to gitcompile
[edit] alsa-utils
[edit] 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
[edit] 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
[edit] 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"
[edit] 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
[edit] 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
[edit] 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
[edit] 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
[edit] 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>
[edit] 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>
[edit] 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.
[edit] alsa-tools
[edit] Core
- - Release v1.0.25
- - Release v1.0.24.1
[edit] Digigram Echo Mixer
- - Remove configure.in-gtk2 from Makefiles...
[edit] Envy24 Control
- - envy24control: support gtk1 only in configure.in-gtk1
[edit] RME Digi Control
- - Remove configure.in-gtk2 from Makefiles...
[edit] 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.
[edit] ac3dec (Dolby Digital Decoder)
- - More build fixes (gtk1 check removal from echomixer), cvscompile removal
[edit] as10k1 (EMU10K1+ DSP Assembler)
- - More build fixes (gtk1 check removal from echomixer), cvscompile removal
[edit] 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
[edit] 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
[edit] alsa-firmware
[edit] Core
- - Release v1.0.25
- - Release v1.0.24.1
[edit] AudioScience ASIHPI Firmware
- - Update asihpi firmware to 4.10.05
- - Update asihpi firmware to version 4.08
- - asihpi - Updated to firmware 40600
[edit] RME HDSP Firmware
- - hdsp: Add rpm_firmware.bin to EXTRA_DIST
[edit] alsa-plugins
[edit] Core
- - Release v1.0.25
- - pulse: Install a PulseAudio config snippet into alsa.conf.d
- v2: Assing priorities to the config snippets.
[edit] 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.
[edit] Documentation
- - pulse: Add fallback option
- Added "fallback" option to give the PCM / controller name as a fallback
- when connecting to PA server fails.
[edit] 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.]
[edit] 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>
[edit] alsa-python
[edit] Core
- - Release v1.0.25
[edit] Test python scripts
- - ctltest1.py: use new class member names
[edit] 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.
[edit] Detailed changelog between 1.0.17 and 1.0.25 releases
[edit] Changelog between 1.0.17 and 1.0.25 releases
[edit] alsa-oss
[edit] Core
- - Release v1.0.25
- - select: better check for null bit arrays
[edit] PCM Emulation
- - pcm: check for XRUN state for GETxSPACE and GETxPTR ioctls
Custom Search