Difference between revisions of "Detailed changes v1.0.24 v1.0.25"
From AlsaProject
m (1 revision(s)) |
Revision as of 11:14, 25 January 2012
Detailed changelog between 1.0.24 and 1.0.25 releases
Changelog between 1.0.17 and 1.0.25 releases
alsa-driver
Sound Core
- - Release v1.0.25
- - Add note that event 2.6.9+ kernels might work..
- - Add arch/$ARCH/include/generated dir check for test cases
- - Release check: Supported kernel versions update, changes for recent 3.2 kernel
- - Add a dummy linux/ratelimit.h for older kernels
- - Add the build-stub for compress-offload
- Enabled only from 3.0, to be sure.
- - More fixes for pm_qos changes in 3.2-rc1
- - remove "CONFIG_SND_HDA_INPUT_BEEP_MODE" redefined warnings
- - Fix recent PM change (pm_qos_params.h -> pm_qos.h renaming) for pcm.h
- - Drop the check of video_get_drvdata()
- It's always present in V4L2.
- Also fix the build error with tea575x.
- - Fix the presence check of linux/tracepoint.h again
- Still silly mistakes..
- - Drop V4L1 support from tea575x-tuner
- It was already broken, so safer to drop now.
- Also made patches for building with older kernels.
- - More workaround for older tracepoint
- - Don't forget to create include/trace in configure script
- include/trace is still needed for trace_define.h...
- - Don't create include/trave/events directory in configure script
- Now switched to a symlink instead.
- - Fix the link path to trace/events.h
- - Create links to the latest include/trace/events/*.h
- - Add a wrapper for linux/atomic.h
- - Add a wrapper for trace/define_trace.h
- Also get rid of the old hack for trace/events/asoc.h.
- - Add <linux/tracepoint.h> wrapper
- - Add a check of linux/i8253.h to configure script
- - Allow kernel minor version to be >= 10 in configure script
- Just to be safer...
- - Fix the detection of CONFIG_ISA_DMA_API in configure script
- A typo of version number.
- - Allow specifying integer options via configure script
- Add the feature to specify integer kconfig values from configure
- --with-card-options.
- - Fix build with 3.x kernels
- - add isight build stub
- Add support files for the new snd-isight driver.
- - Don't build snd-isight with older kernels
- - Add a check of linux/smp_lock.h
- It's deprecated.
- - Add linux/bitrev.h wrapper for older kernels
- - Enable es1968-radio only for kernels with recent v4l2 API
- - add firewire build stubs
- Add build stubs and related support for the new FireWire modules.
- - add check for vzalloc() to configure (Fedora 14 kernel issue)
- - Add a wrapper of async API for older kernels
- - Fix build with the recent ASoC updates
- - Regenerated soc-core.patch
- - Always use the dummy trace/events/asoc.h
- - um: switch to use of drivers/Kconfig
- - ALSA: add LaCie FireWire Speakers/Griffin FireWave Surround driver
- Add a driver for two playback-only FireWire devices based on the OXFW970
- chip.
- v2: better AMDTP API abstraction; fix fw_unit leak; small fixes
- v3: cache the iPCR value
- v4: FireWave constraints; fix fw_device reference counting;
- fix PCR caching; small changes and fixes
- v5: volume/mute support; fix crashing due to pcm stop races
- v6: fix build; one-channel volume for LaCie
- v7: use signed values to make volume (range checks) work; fix function
- block IDs for volume/mute; always use channel 0 for LaCie volume
- Tested-by: Jay Fenlason <fenlason@redhat.com>
ALSA Core
- - Fix bint check version check
- It seems that the bint stuff is not a part of 3.2 kernel as it's
- pulled by Linus only a few days ago, so increment version check
- to 3.3.0:
- commit 69116f279a9eaf4c540934269342d9149538fc79
- Author: Rusty Russell <rusty@rustcorp.com.au>
- Date: Fri Jan 13 09:32:17 2012 +1030
- module_param: avoid bool abuse, add bint for special cases.
- - Add a build fix for older kernels due to info() macro
- Since some old kernels define info() macro, the build gets broken.
- Simply undefine such a stupid macro.
- - Release check: Supported kernel versions update, changes for recent 3.2 kernel
- - Add module_driver() and module_usb_driver() macros and bint module param check
- - Add the build-stub for compress-offload
- Enabled only from 3.0, to be sure.
- - Add acore/ctljack.c build stub
- - Add a wrapper for module_platform_driver() for older kernels
- - Add a wrapper of to_delayed_work() for older kernels
- - RHEL 6.1 compilation fix
- RHEL 6.1 (2.6.32-132.*) kernels already have hex_to_bin() function.
- Tune check in the alsa-driver/include/adriver.h
- Tested on Scientific Linux 6.1 (RHEL 6.1 clone), kernels:
- 2.6.32-131.0.15.el6.x86_64 (original, from DVD installation)
- 2.6.32-131.17.1.el6.x86_64 (last security update)
- - Add the build of acore/memory.c with older kernel
- - Define the dumy __printf() when not defined
- - More fixes for pm_qos changes in 3.2-rc1
- - Add PMSG_IS_AUTO() check from <linux/pm.h> for older kernels
- - Fix build error due to redefinition of request_irq() for older kernels
- - Add a workaround for removal of IRQF_DISABLED
- - Add missing export of snd_hidden_ksize()
- Also fix the ifdef of krealloc() wrapper for some corner cases.
- - Add missing ksize() and krealloc() wrappers for memory debugging
- Otherwise krealloc() will spew many errors.
- - Fix tracepoint handling with SLE11-SP0 kernel
- SLE11-SP0 kernel contains half-baked tracepoint support that breaks the
- build. Put a workaround.
- - More workaround for older tracepoint
- - Fix tracepoint.h wrapper
- - Fix compile warnings with older kernels
- - Add a wrapper for trace/define_trace.h
- Also get rid of the old hack for trace/events/asoc.h.
- - Add <linux/tracepoint.h> wrapper
- - Regenerate info.patch for upstream changes in info.c
- - Fix build-errors of soc-core due to new trace points
- Ugly hacks again.
- - Fix cancel_work_sync() wrapper for older kernels
- It's hard to find the matching one...
- - Define cancel_work_sync for old 2.6.x kernels
- - Avoid patching for pci/ad1889 driver
- It's just missing pci-ids, so let's define them in pci_ids_compat.h.
- - Add PCI device ID for Creative Titanium HD to pci_ids_compat.h.
- - Fix snd_printk() helper build for older kernels without %pV support
- - Add krealloc() wrapper for 2.6 kernels
- 2.4 kernels still have no wrapper, but it's used only in soc-core...
- - Add missing PCI ID for DIGIGRAM
- - Add linux/bitrev.h wrapper for older kernels
- - Add usleep_range() wrapper for older kernels
- - add check for vzalloc() to configure (Fedora 14 kernel issue)
- - Add a wrapper of async API for older kernels
- - Fix build with the recent ASoC updates
- - Regenerated soc-core.patch
- - Always use the dummy trace/events/asoc.h
- - ALSA: Don't prompt for CONFIG_SND_COMPRESS_OFFLOAD
- CONFIG_SND_COMPRESS_OFFLOAD is an item to be selected by the dirver
- just like CONFIG_SND_PCM, and no need to prompt for explicit
- selection.
- - switch procfs to umode_t use
- both proc_dir_entry ->mode and populating functions
- - drop "select GCD" from three Kconfig files
- There is no Kconfig symbol named GCD. The three select statements for
- that symbol are nops. Drop these.
- - Merge all missing things from upstream.
- - ALSA: hda - Add missing inclusion of linux/export.h
- This is needed newly since 3.2...
- - ALSA: Introduce common helper functions for jack-detection control
- Now move the helper function for creating and reporting the jack-detection
- to the common place. The driver that needs this functionality should
- select CONFIG_SND_KCTL_JACK kconfig.
- - ALSA: export compress headers
- Export compress_offload.h and compress_params.h for userland to use
- - ALSA: core: add makefile and kconfig file for compress
- - ALSA: core: add support for compress_offload
- This patch adds core.c, the file which implements the ioctls and
- registers the devices
- - ALSA: core: add API header and driver header files
- This patch adds the header files for ioctl definitions and header file for
- driver APIs for lower level device drivers to use
- - ALSA: core: add compress parameter definations
- The patch adds the various definations used to define the encoder
- and decoder parameters
- Reviewed-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
- - ALSA: core: add support for compressed devices
- Use the minor numbers 2 and 3 for audio compressed offload devices.
- Also add support for these devices in core
- Reviewed-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
- - include: replace linux/module.h with "struct module" wherever possible
- The <linux/module.h> pretty much brings in the kitchen sink along
- with it, so it should be avoided wherever reasonably possible in
- terms of being included from other commonly used <linux/something.h>
- files, as it results in a measureable increase on compile times.
- The worst culprit was probably device.h since it is used everywhere.
- This file also had an implicit dependency/usage of mutex.h which was
- masked by module.h, and is also fixed here at the same time.
- There are over a dozen other headers that simply declare the
- struct instead of pulling in the whole file, so follow their lead
- and simply make it a few more.
- Most of the implicit dependencies on module.h being present by
- these headers pulling it in have been now weeded out, so we can
- finally make this change with hopefully minimal breakage.
- - sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed
- These aren't modules, but they do make use of these macros, so
- they will need export.h to get that definition. Previously,
- they got it via the implicit module.h inclusion.
- - sound: add moduleparam.h to users of module_param/MODULE_PARM_DESC
- These files were getting access to these two via the implicit
- presence of moduleparam.h everywhere. But that is being fixed, so
- get these guys what they need in advance.
- - treewide: use __printf not __attribute__((format(printf,...)))
- Standardize the style for compiler based printf format verification.
- Standardized the location of __printf too.
- Done via script and a little typing.
- $ grep -rPl --include=*.[ch] -w "__attribute__" * | \
- grep -vP "^(tools|scripts|include/linux/compiler-gcc.h)" | \
- xargs perl -n -i -e 'local $/; while (<>) { s/\b__attribute__\s*\(\s*\(\s*format\s*\(\s*printf\s*,\s*(.+)\s*,\s*(.+)\s*\)\s*\)\s*\)/__printf($1, $2)/g ; print; }'
- [akpm@linux-foundation.org: revert arch bits]
- - ALSA: control: add support for ENUMERATED user space controls
- Handling of user control elements was implemented for all types except
- ENUMERATED. This type will be needed for the device-specific mixers of
- upcoming FireWire drivers.
- - get rid of create_proc_entry() abuses - proc_mkdir() is there for purpose
- - ALSA: Use %pV for snd_printk()
- Clean up snd_printk() helper using the %pV prefix for recursive printks.
- This also automagically fixes an Oops with RO/NX-enabled modules.
- Tested-by: Maarten Lankhorst <m.b.lankhorst@gmail.com>
- - ALSA: core: remove unused variables.
- Drop a few variables that are never read.
- - ALSA: core - Don't use "default' for default
- The card-id parser assigns the string "default" when no appropriate word
- is found in the card name. But this string may confuse the alsa-lib, so
- better to avoid. Use "Default" now instead.
- - ALSA: Fix yet another race in disconnection
- This patch fixes a race between snd_card_file_remove() and
- snd_card_disconnect(). When the card is added to shutdown_files list
- in snd_card_disconnect(), but it's freed in snd_card_file_remove() at
- the same time, the shutdown_files list gets corrupted. The list member
- must be freed in snd_card_file_remove() as well.
- Reported-and-tested-by: Russ Dill <russ.dill@gmail.com>
- - ALSA: core: sparse cleanups
- Change the core code where sparse complains. In most cases, this means
- just adding annotations to confirm that we indeed want to do the dirty
- things we're doing.
SoC PXA2xx Core
Control Midlevel
- - Regenerated patches for new inclusions in 3.2-rc1
- - Merge all missing things from upstream.
- - ALSA: control: remove compilation warning on 32-bit
- This was introduced by 'ALSA: control: add support for ENUMERATED user
- space controls' which adds a u64 variable that gets cast to a pointer:
- sound/core/control.c: In function 'snd_ctl_elem_init_enum_names':
- sound/core/control.c:1089: warning: cast to pointer from integer of different size
- Cast to uintptr_t before casting to pointer to avoid the warning.
- [cl: replace long with uintptr_t]
- - sound: Add module.h to the previously silent sound users
- Lots of sound drivers were getting module.h via the implicit presence
- of it in <linux/device.h> but we are going to clean that up. So
- fix up those users now.
- - ALSA: control: add support for ENUMERATED user space controls
- Handling of user control elements was implemented for all types except
- ENUMERATED. This type will be needed for the device-specific mixers of
- upcoming FireWire drivers.
- - ALSA: core: release the constraint check for replace ops
- Suppose the ALSA card already has a number of MAX_USER_CONTROLS controls, and
- the user wants to replace one, it should not fail at this condition check.
- - ALSA: core: trivial code style fix
- remove trailing tab on the line.
- - ALSA: core: remove unused variables.
- Drop a few variables that are never read.
- - ALSA: Add snd_ctl_replace() to dynamically replace a control
- Add a function to dynamically replace a given control. If the
- control does not already exist, a third parameter is used to determine
- whether to actually add that control. This is useful in cases where
- downloadable firmware at runtime can add or replace existing controls.
- A separate patch needs to be made to allow ALSA Mixer to render the
- replaced controls on the fly.
- - ALSA: Add snd_ctl_activate_id()
- Added a new API function snd_ctl_activate_id() for activate / inactivate
- the control element dynamically.
- - ALSA: control: clean up snd_ctl_hole_check()
- The return value of snd_ctl_hole_check() is used only to detect whether
- to continue the loop in snd_ctl_find_hole() or not, so we can simplify
- the code by changing this return type to a boolean. Also rename this
- function to better show what it actually does.
- - ALSA: control: fix numid conflict check for new controls
- The purpose of the snd_ctl_hole_check() function is to find conflicts
- between the numerical IDs of the new control and those of any existing
- controls. However, it would fail to detect an existing control whose
- count is smaller than the new control's count and whose interval of IDs
- is entirely contained in the interval of the new control's IDs.
- To fix this, use the correct formula to detect overlapping intervals,
- which happens to simplify the condition.
- This problem was not encountered so far because ALSA does not yet allow
- drivers to allocate specific control IDs.
HWDEP Midlevel
- - ALSA: hwdep: silence integer overflow warning
- Smatch complains that if device is INT_MAX then device + 1 can
- overflow. It just means we would have an annoying loop while we
- check all the devices from -2147483648 to SNDRV_MINOR_HWDEPS.
Jack Input Event Midlevel
- - Add missing SW_LINEIN_INSERT definition to jack.c
- - ALSA: jack - Add "Line In" input jack constants
- Similar to Line Out, these constants form the base for future
- patches enabling input jack reporting for Line in jacks.
- - ALSA: fix one memory leak in sound jack
- Reviewed-by: Wu Fengguang <fengguang.wu@intel.com>
PCM Midlevel
- - More fixes for pm_qos changes in 3.2-rc1
- - Regenerated acore/pcm_native.patch for fixing fuzz
- - More fixes for kABI compatibility with older 2.6 kernels
- - sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed
- These aren't modules, but they do make use of these macros, so
- they will need export.h to get that definition. Previously,
- they got it via the implicit module.h inclusion.
- - ALSA: pcm - remove the dead code from snd_pcm_open_file()
- The rpcm_file parameter is never used in current ALSA code, so remove
- it to make it cleaner.
- - ALSA: pcm - Export snd_pcm_lib_default_mmap() helper
- Export the default mmap function, snd_pcm_lib_default_mmap().
- The upcoming non-snooping support in HD-audio driver will use this
- to override the mmap method.
- - ALSA: pcm: add snd_pcm_hw_rule_noresample()
- Add a helper function to allow drivers to disable hardware resampling
- when the application has specified the SNDRV_PCM_HW_PARAMS_NORESAMPLE
- flag.
- - ALSA: pcm - fix race condition in wait_for_avail()
- wait_for_avail() in pcm_lib.c has a race in it (observed in practice by an
- Intel validation group).
- The function is supposed to return once space in the buffer has become
- available, or if some timeout happens. The entity that creates space (irq
- handler of sound driver and some such) will do a wake up on a waitqueue
- that this function registers for.
- However there are two races in the existing code
- 1) If space became available between the caller noticing there was no
- space and this function actually sleeping, the wakeup is missed and the
- timeout condition will happen instead
- 2) If a wakeup happened but not sufficient space became available, the
- code will loop again and wait for more space. However, if the second
- wake comes in prior to hitting the schedule_timeout_interruptible(), it
- will be missed, and potentially you'll wait out until the timeout
- happens.
- The fix consists of using more careful setting of the current state (so
- that if a wakeup happens in the main loop window, the schedule_timeout()
- falls through) and by checking for available space prior to going into the
- schedule_timeout() loop, but after being on the waitqueue and having the
- state set to interruptible.
- [tiwai: the following changes have been added to Arjan's original patch:
- - merged akpm's fix for waitqueue adding order into a single patch
- - reduction of duplicated code of avail check
- ]
- - PM QoS: Minor clean-ups
- - Misc fixes to improve code readability:
- * rename struct pm_qos_request_list to struct pm_qos_request,
- * rename pm_qos_req parameter to req in internal code,
- consistenly use req in the API parameters,
- * update the in-kernel API callers to the new parameters names,
- * rename of fields names (requests, list, node, constraints)
- Reviewed-by: Kevin Hilman <khilman@ti.com>
- - PM QoS: Move and rename the implementation files
- The PM QoS implementation files are better named
- kernel/power/qos.c and include/linux/pm_qos.h.
- The PM QoS support is compiled under the CONFIG_PM option.
- Reviewed-by: Kevin Hilman <khilman@ti.com>
- - ALSA: sound/core/pcm_compat.c: adjust array index
- Convert array index from the loop bound to the loop index.
- A simplified version of the semantic patch that fixes this problem is as
- follows: (http://coccinelle.lip6.fr/)
- // <smpl>
- @@
- expression e1,e2,ar;
- @@
- for(e1 = 0; e1 < e2; e1++) { <...
- ar[
- - e2
- + e1
- ]
- ...> }
- // </smpl>
- - ALSA: Make pcm.h self-contained
- Move the macros depending on snd_mask_min() and co out of pcm.h into
- pcm_params.h. Otherwise using some params_*() macros will give comiple
- errors without inclusion of pcm_params.h.
- Also use hw_param_interval_c() and hw_param_mask_c() for const pointer.
- Reported-by: Tim Blechmann <tim@klingt.org>
- - ALSA: Make snd_pcm_debug_name usable outside pcm_lib
- Formatting a PCM name is useful for module debug too.
- Add snd_prefix when making function public.
- [minor coding-style fixes by tiwai]
- - Fix common misspellings
- Fixes generated by 'codespell' and manually reviewed.
- - ALSA: core: remove unused variables.
- Drop a few variables that are never read.
- - ALSA: PCM - Don't check DMA time-out too shortly
- When the PCM period size is set larger than 10 seconds, currently the
- PCM core may abort the operation with DMA-error due to the fixed timeout
- for 10 seconds. A similar problem is seen in the drain operation that
- has a fixed timeout of 10 seconds, too.
- This patch fixes the timeout length depending on the period size and
- rate, also including the consideration of no_period_wakeup flag.
- Reported-by: Raymond Yau <superquad.vortex2@gmail.com>
- - ALSA: sound, core, pcm_lib: fix xrun_log
- The xrun_log function was augmented with the in_interrupt parameter whereas the
- empty macro definition used when xrun logging is disabled was not.
- Add a third parameter to the empty macro definition so as to not cause compiler
- errors when xrun logging (CONFIG_SND_PCM_XRUN_DEBUG) is disabled.
- - ALSA: sound, core, pcm_lib: xrun_log: log also in_interrupt
- When debugging pcm drivers I found the "period" or "hw" prefix printed
- by either XRUN_DEBUG_PERIODUPDATE or XRUN_DEBUG_PERIODUPDATE events,
- respectively to be very useful is observing the interplay between
- interrupt-context updates and syscall-context updates.
- Similarly, when debugging overruns with XRUN_DEBUG_LOG it is useful to
- see the context of the last 10 positions.
- Add an in_interrupt member to hwptr_log_entry which stores the value of
- the in_interrupt parameter of snd_pcm_update_hw_ptr0 when the log entry
- is created. Print a "[Q]" prefix when dumping the log entries if
- in_interrupt was true.
- - ALSA: pcm: fix infinite loop in snd_pcm_update_hw_ptr0()
- When period interrupts are disabled, snd_pcm_update_hw_ptr0() compares
- the current time against the time estimated for the current hardware
- pointer to detect xruns. The somewhat fuzzy threshold in the while loop
- makes it possible that hdelta becomes negative; the comparison being
- done with unsigned types then makes the loop go through the entire 263
- negative range, and, depending on the value, never reach an unsigned
- value that is small enough to stop the loop. Doing this with interrupts
- disabled results in the machine locking up.
- To prevent this, ensure that the loop condition uses signed types for
- both operands so that the comparison is correctly done.
- Many thanks to Kelly Anderson for debugging this.
- Reported-by: Nix <nix@esperi.org.uk>
- Reported-by: "Christopher K." <c.krooss@googlemail.com>
- Reported-and-tested-by: Kelly Anderson <kelly@silka.with-linux.com>
- [cl: remove unneeded casts; use a temp variable]
- - ALSA: vmalloc buffers should use normal mmap
- It's a big no-no to use pgprot_noncached() when mmap'ing such buffers
- into userspace since they are mapped cachable in kernel space.
- This can cause all sort of interesting things ranging from to garbled
- sound to lockups on various architectures. I've observed that usb-audio
- is broken on powerpc 4xx for example because of that.
- Also remove the now unused snd_pcm_lib_mmap_noncached(). It's
- an arch business to know when to use uncached mappings, there's
- already hacks for MIPS inside snd_pcm_default_mmap() and other
- archs are supposed to use dma_mmap_coherent().
- (See my separate patch that adds dma_mmap_coherent() to powerpc)
- - ALSA: core: sparse cleanups
- Change the core code where sparse complains. In most cases, this means
- just adding annotations to confirm that we indeed want to do the dirty
- things we're doing.
RawMidi Midlevel
- - sound: fix drivers needing module.h not moduleparam.h
- The implicit presence of module.h lured several users into
- incorrectly thinking that they only needed/used modparam.h
- but once we clean up the module.h presence, these will show
- up as build failures, so fix 'em now.
- - ALSA: Use krealloc() in possible places
- - ALSA: rawmidi - Use workq for event handling
- Kill tasklet usage in rawmidi core code. Use workq for the event callback
- instead of tasklet (which is used only in core/seq/seq_midi.c).
Timer Midlevel
- - ALSA: timer - Add NULL-check for invalid slave timer
- Just to be sure.
- - ALSA: timer - Fix Oops at closing slave timer
- A slave-timer instance has no timer reference, and this results in
- NULL-dereference at stopping the timer, typically called at closing
- the device.
- Reference: https://bugzilla.kernel.org/show_bug.cgi?id=40682
- - ALSA: sound/core: merge list_del()/list_add_tail() to list_move_tail()
- Merge list_del() + list_add_tail() to list_move_tail().
/soc/Makefile
- - ASoC: mxs: add asoc configuration files
- Tested-by: Wolfram Sang <w.sang@pengutronix.de>
- - ASoC: Move register I/O code into a separate file
- For clarity and to help ongoing refactoring in this area create a new file
- to contain the physical I/O functions, separating them out from the cache
- operations.
- - ASoC: core - Separate out PCM operations into new file.
- In preparation for Dynamic PCM support (AKA DSP support).
- There will be future patches that add support to allow PCMs to be dynamically
- routed to multiple DAIs at startup and also during stream runtime. This patch
- moves the ASoC core PCM operaitions into a new file called soc-pcm.c. This will
- in simplify the ASoC core features into distinct files.
/soc/codecs/Makefile
- - ASoC: Remove WM8994 register cache
- Now that the mfd is using the register map cache there's no need for the
- CODEC driver to do any register cache management or any funny dances to
- interact with the other drivers using the device so just remove the cache
- initialisation and volatility information.
- - ASoC: Sort WM9090 in with the CODEC drivers
- The driver itself has been a regular CODEC driver for a while now.
- - ASoC: Convert WM2000 into a standard CODEC driver
- We've been able to handle external amps for a while now.
- - ASoC: Move SigmaDSP firmware loader to ASoC
- It has been pointed out previously, that the firmware subsystem is not the right
- place for the SigmaDSP firmware loader. Furthermore the SigmaDSP is currently
- only used in audio products and we are aiming for better integration into the
- ASoC framework in the future, with support for ALSA controls for firmware
- parameters and support dynamic power management as well. So the natural choice
- for the SigmaDSP firmware loader is the ASoC subsystem.
- - ASoC: Add support for CS42L73 codec
- This patch adds support for the Cirrus Logic CS42L73 low power stereo
- codec.
- - ASoC: Add new Realtek ALC5632 CODEC driver
- This driver implements basic functionality, using I²C for the control
- channel.
- - ASoC: Fix sort of jz4740 in Makefile
- - ASoC: Sort LM4857 with the CODECs in the Makefile
- Having a separate list for amps is a little confusing now the official
- driver model for them is the same as for other CODECs so let's sort them
- into the CODEC list, but only do this for those that are actual CODEC
- drivers so it's easier to remember which ones need updating.
- - ASoC: Fix typo in Kconfig symbol for tlv320aic32x4
- It is currently named "TVL" instead of "TLV".
- - ASoC: Add Kconfig and Makefile entries for rt5631 codec
- - ASoC: Add WM5100 driver
- The WM5100 is a highly integrated low power audio subsystem with advanced
- digital signal processing capabilities including effects, speech clarity
- enhancement and active noise cancellation. This initial driver provides
- support for basic audio paths, further patches will provide more
- complete functionality.
- - ASoC: Add ADAU1373 codec support
- This patch adds support for the Analog Devices ADAU1373 audio codec.
- - ASoC: Rename WM8915 to WM8996
- For marketing reasons the part will be called WM8996. In order to avoid
- user confusion rename the driver to reflect this.
- - ASoC: WM8983: Initial driver
- The WM8983 is a low power, high quality stereo CODEC
- designed for portable multimedia applications. Highly flexible
- analogue mixing functions enable new application features,
- combining hi-fi quality audio with voice communication.
- - ASoC: Add ADAV80x codec driver
- This patch adds support for the Analog Devices ADAV801 and ADAV803 audio codec.
- - ASoC: add WM8782 ADC Codec Driver
- [zonque@gmail.com: transform to new ASoC structure]
- - ASoC: add STA32X codec driver
- [zonque@gmail.com: transform to new ASoC structure]
- - ASoC: Add ADAU1701 codec driver
- This patch adds support for the Analog Devices ADAU1701 SigmaDSP.
- - ASoC: Asahi Kasei AK4641 codec driver
- A driver for the AK4641 codec used in iPAQ hx4700 and Glofiish M800
- among others.
- - ASoC: Add initial WM1250-EV1 Springbank audio I/O module driver
- The WM1250-EV1 Springbank audio I/O module for the Wolfson Glenfarclas
- reference platform provides a simple audio I/O with an independant clock
- domain, intended to simulate cellular modem and bluetooth subsystems
- within the platform.
- The card supports some limited GPIO based control but this is currently not
- implemented.
- - ASoC: Add WM8915 CODEC driver
- The WM8915 is an ultra low power mobile CODEC designed for smartphones,
- featuring a mixture of digital and analogue I/O with flexible mixing
- options and advanced low power accessory detection functionality in a
- compact package.
- - ASoC: Add max98095 CODEC driver
- This patch adds the MAX98095 CODEC driver.
- - ASoC: Factor WM8958 DSP2 handling into separate file
- DSP2 on the WM8958 has a default ROM which provides a multi-band
- compressor for enhanced performance on mobile devices but can also
- support runtime download of alternative firmware. In preparation for
- more exploiting this functionality refactor the code to split the
- handling of DSP2 into a separate file.
- - ASoC: Add MAX9850 codec driver
- This patch adds ASoC support for the MAX9850 codec with headphone
- amplifier.
- Supported features:
- - Playback
- - 16, 20 and 24 bit audio
- - 8k - 48k sample rates
- - DAPM
- - ASoC: Add driver for the dfbmcs320 bluetooth module
- This patch adds a codec driver for the dfbmcs320 bluetooth module, which is used
- on the neo1973 boards.
- The patch also modifies the neo1937_wm8753 sound board driver to use the new
- driver instead of registering the bluetooth DAI manually.
- Previously there was a name mismatch between the bluetooth DAI and the bluetooth
- DAI link and the sound card was not instantiated, with this patch the issue is
- no longer present and sound support works again.
- - ASoC: neo1973_wm8753: Move lm4857 specefic code to its own module
- This patch moves the code for the lm4857 AMP from the neo1973_wm8753 sound
- board driver to its own module.
- The lm4857 is a generic AMP IC and not specific to the neo1973.
- - ASoC: Add TI tlv320aic32x4 codec support.
- This patch adds support for tlv320aic3205 and tlv320aic3254 codecs.
- It doesn't include miniDSP support for aic3254.
- - ASoC: Add Freescale SGTL5000 codec support
- Add Freescale SGTL5000 codec support.
- Supported features:
- - line-in and mic input
- - headphone and line-out output
- - line-in bypass ADC and DAC to headphone
- - 16, 20, 24, 32 bit audio
- - 8 ~ 96k sample rates
- - ASoC: Sort ALC5623 in Kconfig and Makefile
- - ASoC: CS4271 codec support
- Added support for CS4271 codec to ASoC.
/soc/pxa/Makefile
- - ASoC: add iPAQ hx4700 machine driver
- AK4641 connected via I2S and I2C, jack detection via GPIO.
AC97 Codec
- - Regenerate ac97_codec.patch and soc-core.patch to resolve fuzz
- - ALSA: ac97: Add HP Compaq dc5100 SFF(PT003AW) to Headphone Jack Sense whitelist
- BugLink: https://bugs.launchpad.net/bugs/826081
- The original reporter needs 'Headphone Jack Sense' enabled to have
- audible audio, so add his PCI SSID to the whitelist.
- Reported-and-tested-by: Muhammad Khurram Khan
- - ALSA: azt3328: hook up new emulated AC97 on AC97 patch side
- Make newly created AC97 emulation of azt3328 known to the AC97 layer
- side.
- - relocate common functions to the top (due to definition after use)
- - rename control names
- - adjust 3D settings to the card's custom layout of this register
- - ALSA: ac97: replace open-coded, error-prone stuff with AC97 bit defines
- Use AC97 macros (sometimes already existing, or newly added)
- instead of error-prone repetition of open-coded values.
AD1816A driver
- - ALSA: mpu401: clean up interrupt specification
- The semantics of snd_mpu401_uart_new()'s interrupt parameters are
- somewhat counterintuitive: To prevent the function from allocating its
- own interrupt, either the irq number must be invalid, or the irq_flags
- parameter must be zero. At the same time, the irq parameter being
- invalid specifies that the mpu401 code has to work without an interrupt
- allocated by the caller. This implies that, if there is an interrupt
- and it is allocated by the caller, the irq parameter must be set to
- a valid-looking number which then isn't actually used.
- With the removal of IRQF_DISABLED, zero becomes a valid irq_flags value,
- which forces us to handle the parameters differently.
- This patch introduces a new flag MPU401_INFO_IRQ_HOOK for when the
- device interrupt is handled by the caller, and makes the allocation of
- the interrupt to depend only on the irq parameter. As suggested by
- Takashi, the irq_flags parameter was dropped because, when used, it had
- the constant value IRQF_DISABLED.
AD1889 driver
- - Add missing pci/ad1889.c
- Forgot to add in the previous commit...
- - Avoid patching for pci/ad1889 driver
- It's just missing pci-ids, so let's define them in pci_ids_compat.h.
- - ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/*
- The name argument of request_irq() appears in /proc/interrupts, and
- it's quite ugly when the name entry contains a space or special letters.
- In general, it's simpler and more readable when the module name appears
- there, so let's replace all entries with KBUILD_MODNAME.
- - ALSA: Use KBUILD_MODNAME for pci_driver.name entries
- The convention for pci_driver.name entry in kernel drivers seem to be
- the module name or equivalent ones. But, so far, almost all PCI sound
- drivers use more verbose name like "ABC Xyz (12)", and these are fairly
- confusing when appearing as a file name.
- This patch converts the all pci_driver.name entries in sound/pci/* to
- use KBUILD_MODNAME for more unified appearance.
ALI5451 driver
- - ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/*
- The name argument of request_irq() appears in /proc/interrupts, and
- it's quite ugly when the name entry contains a space or special letters.
- In general, it's simpler and more readable when the module name appears
- there, so let's replace all entries with KBUILD_MODNAME.
- - ALSA: Use KBUILD_MODNAME for pci_driver.name entries
- The convention for pci_driver.name entry in kernel drivers seem to be
- the module name or equivalent ones. But, so far, almost all PCI sound
- drivers use more verbose name like "ABC Xyz (12)", and these are fairly
- confusing when appearing as a file name.
- This patch converts the all pci_driver.name entries in sound/pci/* to
- use KBUILD_MODNAME for more unified appearance.
ALS100 driver
- - ALSA: mpu401: clean up interrupt specification
- The semantics of snd_mpu401_uart_new()'s interrupt parameters are
- somewhat counterintuitive: To prevent the function from allocating its
- own interrupt, either the irq number must be invalid, or the irq_flags
- parameter must be zero. At the same time, the irq parameter being
- invalid specifies that the mpu401 code has to work without an interrupt
- allocated by the caller. This implies that, if there is an interrupt
- and it is allocated by the caller, the irq parameter must be set to
- a valid-looking number which then isn't actually used.
- With the removal of IRQF_DISABLED, zero becomes a valid irq_flags value,
- which forces us to handle the parameters differently.
- This patch introduces a new flag MPU401_INFO_IRQ_HOOK for when the
- device interrupt is handled by the caller, and makes the allocation of
- the interrupt to depend only on the irq parameter. As suggested by
- Takashi, the irq_flags parameter was dropped because, when used, it had
- the constant value IRQF_DISABLED.
ALSA Minor Numbers
- - ALSA: core: add support for compressed devices
- Use the minor numbers 2 and 3 for audio compressed offload devices.
- Also add support for these devices in core
- Reviewed-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
ALSA Version
- - Release v1.0.25
ALSA sequencer
- - Regenerated patches for new inclusions in 3.2-rc1
- - ALSA: module_param: make bool parameters really bool
- module_param(bool) used to counter-intuitively take an int. In
- fddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy
- trick.
- It's time to remove the int/unsigned int option. For this version
- it'll simply give a warning, but it'll break next kernel version.
- - sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed
- These aren't modules, but they do make use of these macros, so
- they will need export.h to get that definition. Previously,
- they got it via the implicit module.h inclusion.
- - sound: fix drivers needing module.h not moduleparam.h
- The implicit presence of module.h lured several users into
- incorrectly thinking that they only needed/used modparam.h
- but once we clean up the module.h presence, these will show
- up as build failures, so fix 'em now.
- - treewide: use __printf not __attribute__((format(printf,...)))
- Standardize the style for compiler based printf format verification.
- Standardized the location of __printf too.
- Done via script and a little typing.
- $ grep -rPl --include=*.[ch] -w "__attribute__" * | \
- grep -vP "^(tools|scripts|include/linux/compiler-gcc.h)" | \
- xargs perl -n -i -e 'local $/; while (<>) { s/\b__attribute__\s*\(\s*\(\s*format\s*\(\s*printf\s*,\s*(.+)\s*,\s*(.+)\s*\)\s*\)\s*\)/__printf($1, $2)/g ; print; }'
- [akpm@linux-foundation.org: revert arch bits]
- - Fix common misspellings
- Fixes generated by 'codespell' and manually reviewed.
- - sound:core:seq:seq_ports.c Remove one to many n's in a word.
- The Patch below removes one to many "n's" in a word..
ALSA<-OSS emulation
- - ALSA: module_param: make bool parameters really bool
- module_param(bool) used to counter-intuitively take an int. In
- fddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy
- trick.
- It's time to remove the int/unsigned int option. For this version
- it'll simply give a warning, but it'll break next kernel version.
- - sound: fix drivers needing module.h not moduleparam.h
- The implicit presence of module.h lured several users into
- incorrectly thinking that they only needed/used modparam.h
- but once we clean up the module.h presence, these will show
- up as build failures, so fix 'em now.
- - ALSA: oss-mixer - use strlcpy() instead strcpy()
- This is mostly a static checker fix more than anything else. We're
- copying from a 64 char buffer into a 44 char buffer.
- The 64 character buffer is str[] in snd_mixer_oss_build_test_all().
- The call tree is:
- snd_mixer_oss_build_test_all()
- -> snd_mixer_oss_build_test()
- -> snd_mixer_oss_build_test().
- We never actually do fill str[] buffer all the way to 64 characters.
- The longest string is:
- sprintf(str, "%s Playback Switch", ptr->name);
- ptr->name is a 32 character buffer so 32 plus 16 characters for
- " Playback Switch" still puts us over the 44 limit from "id.name".
- Most likely ptr->name never gets filled to the limit, but we can't
- really change the size of that buffer so lets just use strlcpy() here
- and be safe.
- - ALSA: core: remove unused variables.
- Drop a few variables that are never read.
- - ALSA: core: sparse cleanups
- Change the core code where sparse complains. In most cases, this means
- just adding annotations to confirm that we indeed want to do the dirty
- things we're doing.
ALSA<-OSS sequencer
- - Regenerated patches for new inclusions in 3.2-rc1
- - sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed
- These aren't modules, but they do make use of these macros, so
- they will need export.h to get that definition. Previously,
- they got it via the implicit module.h inclusion.
- - sound: fix drivers needing module.h not moduleparam.h
- The implicit presence of module.h lured several users into
- incorrectly thinking that they only needed/used modparam.h
- but once we clean up the module.h presence, these will show
- up as build failures, so fix 'em now.
ARM AACI PL041 driver
- - sound: aaci: Enable module alias autogeneration for AMBA drivers
- - sound: irq: Remove IRQF_DISABLED
- Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
- We run all interrupt handlers with interrupts disabled
- and we even check and yell when an interrupt handler
- returns with interrupts enabled (see commit [b738a50a:
- genirq: Warn when handler enables interrupts]).
- So now this flag is a NOOP and can be removed.
- - ARM: amba: make probe() functions take const id tables
- Make Primecell driver probe functions take a const pointer to their
- ID tables. Drivers should never modify their ID tables in their
- probe handler.
- - ALSA: AACI: make fifo variables more explanitory
- Improve commenting and change fifo variable names to reflect their
- meanings.
- - ALSA: AACI: no need to call snd_pcm_period_elapsed() for each period
- There is no need to call snd_pcm_period_elapsed() each time a period
- elapses - we can call it after we're done once loading/unloading the
- FIFO with data. ALSA works out how many periods have elapsed by
- reading the current pointers.
- - ALSA: AACI: use snd_pcm_lib_period_bytes()
- Use the helper rather than open-coding this.
- - ALSA: AACI: clean up AACI announcement printk
- Make the AACI announcement printk say which primecell part number
- has been found. Display the revision as an unsigned decimal, and
- display only the first 8 hex digits of the base address unless it's
- larger.
- - ALSA: AACI: fix channel mask selection
- When double-rate mode was selected, we weren't setting the additional
- two channel mask bits to allow double-rate to work. Rearrange the
- hw_params code to allow the correct channel mask to be selected.
- - ALSA: AACI: fix number of channels for record
- AC'97 codecs only support two channels for recording, so we shouldn't
- advertize that there are up to six channels available. Limit the
- selection of 4 and 6 channel audio to playback only.
- As this adds additional SNDRV_PCM_STREAM_PLAYBACK conditionals, we can
- combine some resulting in the elimination of __aaci_pcm_open() entirely,
- and making the code easier to read.
- - ALSA: AACI: fix multiple IRQ claiming
- Claiming the IRQ each time a playback or capture interface is opened
- is wasteful; the second copy of the registered handler is identical to
- the first and just wastes resources. Track the number of opens and
- only register the handler when necessary.
- - ALSA: AACI: allow writes to MAINCR to take effect
- The AACI TRM requires the MAINCR enable bit to be held zero for two
- bitclk cycles plus three apb_pclk cycles. Use a delay of 1us to
- ensure this.
- Ensure that writes to MAINCR to change the addressed codec only happen
- when required, and that they take effect in a similar manner to the
- above, otherwise we seem to occasionally have stuck slot busy bits.
ARM PXA2XX driver
- - ALSA: convert sound/* to use module_platform_driver()
- This patch converts the drivers in sound/* to use the
- module_platform_driver() macro which makes the code smaller and a bit
- simpler.
- - sound: Add module.h to the previously silent sound users
- Lots of sound drivers were getting module.h via the implicit presence
- of it in <linux/device.h> but we are going to clean that up. So
- fix up those users now.
- - sound: irq: Remove IRQF_DISABLED
- Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
- We run all interrupt handlers with interrupts disabled
- and we even check and yell when an interrupt handler
- returns with interrupts enabled (see commit [b738a50a:
- genirq: Warn when handler enables interrupts]).
- So now this flag is a NOOP and can be removed.
- - ASoC: PXA: Fix oops in __pxa2xx_pcm_prepare
- pxa2xx_pcm_hw_free frees dma channel and sets prtd->dma_ch to -1,
- but does not set prtd->params to NULL, so if pxa2xx_pcm_hw_params will
- be called immediately, it leaves prtd->dma_ch initialized with -1,
- and it results in oops in __pxa2xx_pcm_prepare. This bug is triggered
- via SDL.
- This patch adds check for prtd->dma_ch to __pxa2xx_pcm_prepare and
- cleans prtd->params, so now it works properly.
ATIIXP driver
- - ALSA: atiixp - Fix wrong time-out checks during ac-link reset
- The time-out in snd_atiixp_aclink_reset() is wrongly checked, and
- it resulted in exiting from the loop at the first iteration.
- Reported-by: Amir Shamsuddin <AmirS2+alsa@gmail.com>
ATIIXP-modem driver
- - ALSA: atiixp - Fix wrong time-out checks during ac-link reset
- The time-out in snd_atiixp_aclink_reset() is wrongly checked, and
- it resulted in exiting from the loop at the first iteration.
- Reported-by: Amir Shamsuddin <AmirS2+alsa@gmail.com>
AZT2320 driver
- - ALSA: mpu401: clean up interrupt specification
- The semantics of snd_mpu401_uart_new()'s interrupt parameters are
- somewhat counterintuitive: To prevent the function from allocating its
- own interrupt, either the irq number must be invalid, or the irq_flags
- parameter must be zero. At the same time, the irq parameter being
- invalid specifies that the mpu401 code has to work without an interrupt
- allocated by the caller. This implies that, if there is an interrupt
- and it is allocated by the caller, the irq parameter must be set to
- a valid-looking number which then isn't actually used.
- With the removal of IRQF_DISABLED, zero becomes a valid irq_flags value,
- which forces us to handle the parameters differently.
- This patch introduces a new flag MPU401_INFO_IRQ_HOOK for when the
- device interrupt is handled by the caller, and makes the allocation of
- the interrupt to depend only on the irq parameter. As suggested by
- Takashi, the irq_flags parameter was dropped because, when used, it had
- the constant value IRQF_DISABLED.
AZT3328 driver
- - ALSA: azt3328 - adjust error handling code to include debugging code
- snd_azf3328_dbgcallenter is called at the very beginning of the function,
- so it could be useful to call snd_azf3328_dbgcallleave at all exit points.
- - ALSA: azt3328: add custom AC97 semi-emulation use standard ALSA AC97 layer
- Make use of the very flexible ALSA ac97 layer (hooks for custom I/O!)
- on this weird AC97 copycat hardware,
- via semi-extended I/O translation/emulation.
- Some 5kB binary/loaded size saved (well... additional huge AC97 module
- penalty not factored in, of course ;-P).
- Given that the driver previously had 20kB that's not bad,
- but the much more important thing is to have AC97 layer stress-tested
- with a thoroughly weird AC97 copycat (or, simply put, if it were not for
- this AC97 test aspect, this effort would merely have been a nut job ;).
Apple Onboard Audio driver
- - snd-aoa: remove commented out Kconfig entry
- config SND_AOA_TOPAZ has been commented out since it was added five
- years ago with commit f3d9478b ("[...] add snd-aoa"). There's no
- indication why it's commented out. It might as well be removed.
- - sound: Add module.h to the previously silent sound users
- Lots of sound drivers were getting module.h via the implicit presence
- of it in <linux/device.h> but we are going to clean that up. So
- fix up those users now.
- - ALSA: aoa: Remove obsolete cleanup for clientdata
- The i2c core will clear the clientdata pointer automatically.
- We don't have to set the `data' field to NULL in remove() or
- if probe() failed anymore.
- Also remove a unneeded NULL checking for kfree.
- Reviewed-by: Wolfram Sang <w.sang@pengutronix.de>
- - ALSA: sound/aoa/fabrics/layout.c: remove unneeded kfree
- The label outnodev is only used when kzalloc has not yet taken place or has
- failed, so there is no need for the call for kfree under this label.
- A simplified version of the semantic match that finds this problem is as
- follows: (http://coccinelle.lip6.fr/)
- // <smpl>
- @@
- identifier x;
- expression E1!=0,E2,E3,E4;
- statement S;
- iterator I;
- @@
- (
- if (...) { ... when != kfree(x)
- when != x = E3
- when != E3 = x
- * return ...;
- }
- ... when != x = E2
- when != I(...,x,...) S
- if (...) { ... when != x = E4
- kfree(x); ... return ...; }
- )
- // </smpl>
- - treewide: Convert uses of struct resource to resource_size(ptr)
- Several fixes as well where the +1 was missing.
- Done via coccinelle scripts like:
- @@
- struct resource *ptr;
- @@
- - ptr->end - ptr->start + 1
- + resource_size(ptr)
- and some grep and typing.
- Mostly uncompiled, no cross-compilers.
- - Revert wrong fixes for common misspellings
- These changes were incorrectly fixed by codespell. They were now
- manually corrected.
- - Fix common misspellings
- Fixes generated by 'codespell' and manually reviewed.
Asihpi driver
- - ALSA: asihpi - Fix potential Oops in snd_asihpi_cmode_info()
- Dan Carpenter reported that setting 0 to uinfo->value.enumerated.items
- in snd_asihpi_cmode_info() may lead to Oops. This function should
- return an error immediately in such a case instead.
- - ALSA: asihpi - Fix format validity check.
- Sharing and not reinitialising static pcm_hardware struct resulted in
- stream format validity flags being incorrectly shared between cards.
- Fix and clarify by declaring locally and initialising in the open functions.
- - ALSA: asihpi - Use valid channel count in format enumeration.
- Since introduction of mono and low latency modes, fixed channel count of 2
- is not always valid. Use reported max_channels instead.
- - ALSA: asihpi - Correct headers in cached control responses.
- Previously, only payload and size were correct, sufficient for reading,
- but other fields produced spurious debug output.
- - ALSA: asihpi - Add HPI version to module description.
- It is useful to know the HPI version without having to load the module,
- in order to determine the matching firmware version.
- - ALSA: asihpi - Distinguish four different emif init errors.
- - ALSA: asihpi - New defs and comments.
- Add new error codes, and adapter properties.
- Clean up some comments.
- - ALSA: asihpi - Add autofade query.
- - ALSA: asihpi - Simplify dsp code close.
- dsp_code struct is not created if firmware is invalid, so check
- and zero of firmware pointer is not necessary
- - ALSA: asihpi - Remove redundant struct members.
- Structs hpi_adapter and snd_card_asihpi had members that
- duplicate those in underlying hpi_adapter_obj or whose info
- can be retrieved using hpi_adapter_get_info().
- Print less info in probe function, it can be retrieved from /proc.
- Avoid name redundancy: hpi_adapter_obj.adapter_type renamed to .type
- - ALSA: asihpi - Increase debug response buffer size.
- Enables retrieving more debug info in fewer transactions.
- - ALSA: asihpi - Add new function codes.
- - ALSA: asihpi - Remove unused structs and defs
- Structs related to network flash update are not required in kernel.
- - ALSA: asihpi - Update node types.
- Add "Internal" node type.
- Remove GPI and GPO node types.
- - ALSA: asihpi - Only set sync if card supports hardware stream grouping.
- - ALSA: asihpi - Relax drained check for more reliable playback startup.
- - ALSA: asihpi - Correct stray capital letters in identifier.
- - ALSA: asihpi - Use snd_pcm_debug_name to get substream name.
- - ALSA: asihpi - Volumes and meters may have 1 or 2 channels.
- The channel count can be queried to determine which.
- - ALSA: asihpi - Low latency mode stream has fixed channel count.
- Unlike other streams which support 1..max channels,
- - ALSA: asihpi - Update copyright to 2011
- - ALSA: asihpi - Split hpi version info into separate header file.
- and update HPI version to 4.10
- - ALSA: asihpi - fix pcm dma pointer tracking
- Elapsed counter should only count data committed to snd_pcm_period_elapsed,
- rather than all data available
- - ALSA: asihp: Use kcalloc instead of kzalloc to allocate array
- The advantage of kcalloc is, that will prevent integer overflows which could
- result from the multiplication of number of elements and size and it is also
- a bit nicer to read.
- The semantic patch that makes this change is available
- in https://lkml.org/lkml/2011/11/25/107
- - ALSA: asihpi - use kzalloc()
- Use kzalloc rather than kmalloc followed by memset with 0
- This considers some simple cases that are common and easy to validate
- Note in particular that there are no ...s in the rule, so all of the
- matched code has to be contiguous
- The semantic patch that makes this output is available
- in scripts/coccinelle/api/alloc/kzalloc-simple.cocci.
- More information about semantic patching is available at
- http://coccinelle.lip6.fr/
- - ALSA: asihpi - Clarify adapter index validity check
- Avoids assigning possibly invalid address to pa, even if it
- is never dereferenced.
- Correct error response to reflect request object/function ids.
- - ALSA: asihpi - Don't leak firmware if mem alloc fails
- We leak the memory allocated to 'firmware' when we fail to
- release_firmware() after a kmalloc() failure in hpi_dsp_code_open().
- This patch should take care of the leak.
- - ALSA: asihpi - off by one in asihpi_hpi_ioctl()
- "adapter" is used as an array index in the adapters[] array so
- the off by one would make us read past the end.
- 1c073b67979 "ALSA: asihpi - Remove spurious adapter index check"
- reverted Dan Rosenberg's check that would have prevented the
- overflow here.
- - ALSA: asihpi - bug fix pa use before init.
- Fixes bug introduced by 1c073b67.
- Also declare pa local to block in which it is used.
- - ALSA: Make snd_pcm_debug_name usable outside pcm_lib
- Formatting a PCM name is useful for module debug too.
- Add snd_prefix when making function public.
- [minor coding-style fixes by tiwai]
- - ALSA: asihpi - Replace with snd_ctl_boolean_mono_info()
- - ALSA: asihpi - HPI version 4.08
- HPI Version is used to check for firmware compatibility.
- This version will accept 4.08.xx released firmware,
- and will also accept 4.09.xx beta firmware
- - ALSA: asihpi - Add volume mute controls
- Mute functionality was recently added to the DSP firmware
- - ALSA: asihpi - Control name updates
- Add names corresponding to new HPI node types.
- Shorten some names so that constructed names don't overflow the
- maximum name length.
- - ALSA: asihpi - Use size_t for sizeof result
- - ALSA: asihpi - Explicitly include mutex.h
- Because mutex is used in adapter struct defined here.
- - ALSA: asihpi - Add new node and message defines
- - ALSA: asihpi - Make local function static
- Fixes a sparse warning.
- - ALSA: asihpi - Fix minor typos and spelling
- - ALSA: asihpi - Remove unused structures, macros and functions
- - ALSA: asihpi - Remove spurious adapter index check
- Subsystem requests don't have or need a valid adapter index.
- The adapter index is already checked further on, before it is used to index
- the adapters array. (Reverts 4a122c10f)
- - ALSA: asihpi - Revise snd_pcm_debug_name, get rid of DEBUG_NAME macro
- Work towards moving the function into alsa common header.
- - ALSA: asihpi - DSP code loader API now independent of OS
- The loader API has been revised so that OS specific data is kept
- local to hpidspcd.c, and the public API is unchanged across OSes.
- - ALSA: asihpi - Remove controlex structs and associated special data transfer code
- Some cobranet control data would not fit in an original HPI message.
- Now that HPI is able to transfer larger messages, this special handling
- is no longer required.
- - ALSA: asihpi - Increase request and response buffer sizes
- Allow for up to 256 bytes of extra data on top of standard hpi
- request and response sizes.
- - ALSA: asihpi - Give more meaningful name to hpi request message type
- Having a 'request message' makes more sense than a 'message message'
- - ALSA: Remove unneeded version.h includes from sound/
- In the sound/ directory there are two files (flagged by 'make
- versioncheck'); sound/pci/asihpi/asihpi.c and
- sound/soc/codecs/wm8991.c that include linux/version.h although they
- don't need it. This patch removes the unneeded includes.
- - ALSA: asihpi: Use angle brackets for system includes
- Use the normal include style.
- - ALSA: asihpi - Use %zd for size_t argument in error message (again)
- This was reverted mistakenly in the recent update patch.
- Fixed again.
- Reported-by: Randy Dunlap <rdunlap@xenotime.net>
- - ALSA: asihpi: Minor cleanups
- Remove some unneeded defintions
- Use %pR to print resources
- Make some data const
- Consistent braces for else
- - ALSA: asihpi: Simplify driver unload cleanup
- Replacing subsys_delete_adapter with adapter_delete
- allows some special-case adapter lookup code to be removed.
- - ALSA: asihpi: Standardise substream name generation
- Define and use pcm_debug_name if CONFIG_SND_DEBUG
- - ALSA: asihpi: Remove 2 unused functions
- - ALSA: asihpi: MMAP for non-busmaster cards
- Allow older non DMA capable cards to use MMAP by
- emulating the DMA using read and write functions,
- and getting rid of copy & silence callbacks that
- were used only by older cards.
- - ALSA: asihpi: Handle playback drained status better
- Use the card drained status reporting for playback,
- but allow it to persist for a few timer cycles before
- signalling XRUN, to allow card to recover by itself.
- - ALSA: asihpi: Update debug printing
- Debug print full substream ID.
- Other minor debug print updates.
- - ALSA: snd-asihpi: Control naming
- Clock source is neither capture nor playback,
- so change 'Capture Clock' to 'Clock'.
- Add spaces to control name string for consistency,
- always 'PCM 0' , never 'PCM0'
- - ALSA: asihpi - Update verbose debug print macros
- Replace local VPRINTK1 with snd_printdd.
- Create local snd_printddd instead of VPRINTK2 for most verbose debug.
- In most cases let snd_printk supply default level for messages.
- - ALSA: asihpi - Improve non-busmaster adapter operation
- Make playback silence callback a no-op, card automatically outputs
- silence when written data runs out.
- Increasing update interval and thus minimum period avoids xrun on startup
- or because of timer jitter.
- - ALSA: asihpi - Support single-rate no-SRC cards
- Cards without settable local samplerate and without SRC
- still must have a valid samplerate.
- This fixed rate is determined by reading the current rate for the card.
- - ALSA: sound/pci/asihpi: check adapter index in hpi_ioctl
- The user-supplied index into the adapters array needs to be checked, or
- an out-of-bounds kernel pointer could be accessed and used, leading to
- potentially exploitable memory corruption.
- - ALSA: asihpi - Use %zd for size_t argument in error message
- - ALSA: asihpi - HPI v4.06
- Firmware version check depends on hpi version. Update so correct firmware
- is accepted.
- - ALSA: asihpi - Fix outstream start trigger for non-mmap adapters.
- - ALSA: asihpi - Tighten firmware version requirements.
- Difference in major.minor between driver and firmware is an error now.
- Release version mismatch give a warning.
- - ALSA: asihpi - Ensure all adapter data is cleared on device removal.
- - ALSA: asihpi - Minor define updates
- HPI version 4.05.32
- Tweak HPI error code for backward compatibility.
- Add BUILD to build-related defines.
- - ALSA: asihpi - New functions prep for interrupt driven streams.
- - ALSA: asihpi - Use consistent err return variable, change some bad variable names.
- - ALSA: asihpi - Remove unused code and data.
- - ALSA: asihpi - Clarify firmware id selection.
- - ALSA: asihpi - Allow adapters with duplicate index jumpers to be discovered.
- - ALSA: asihpi - Add volume mute control.
- - ALSA: asihpi - Add snd_card_set_dev to init.
- - ALSA: asihpi - Replace adapter list with single item in subsys response.
- - ALSA: asihpi - Cosmetic + a minor comments.
- - ALSA: asihpi - Remove int flag polling code preparing for stream interrupts.
- Interrupt flag used for message handshake will be required for
- stream interrupts, so conditionally compiled code without
- HPI6205_NO_HSR_POLL defined can never be used; removing it.
- - ALSA: asihpi - Code cleanup.
- Remove unused function.
- Simplify hpi_alloc_control_cache.
- Remove useless assignment to struct subsequently freed.
- - ALSA: asihpi - Reduce number of error codes returned to upper layers.
- Create and use HPI_ERROR_DSP_COMMUNICATION _DSP_BOOTLOAD, rather than
- backend-specific error codes (now returned as data with the error).
- - ALSA: asihpi - Remove unused subsys pointer from all HPI functions.
- asihpi.c don't link playback and capture streams, there is too much
- offset between them.
- - ALSA: asihpi - Update error codes.
- Some error codes had duplicate meanings. Just use one.
- - ALSA: asihpi - Checkpatch line lengths etc.
- - ALSA: asihpi - Add include guard.
- - ALSA: asihpi - Add adapter index to cache info for debug.
- - ALSA: asihpi - Rewrite PCM timer function. Update control names.
- Reported samples_played from card may be inaccurate, so don't use it.
- Update control names to be closer to alsa standard practice.
- Also fixed some accidentally lowercased strings.
- [Removed adriver.h inclusion for external module builds by tiwai]
- - ALSA: asihpi - Interrelated HPI tidy up.
- Remove many unused functions.
- Update some message and cache structs.
- Use pci info directly from pci_dev.
- Allow control cache elements with variable size, and handle
- large message/response from dsp.
- hpi6000 and hpi6205: fix error path when adapter bootload fails.
- hpimsgx.c get rid of code duplicated in hpicmn.c
- - ALSA: asihpi - HPI 4.05.14
- All enum values numeric for easier finding, particularly error codes.
- Remove many unused declarations.
- - ALSA: asihpi - Simplify debug logging.
- Log HPI messages and responses in consistent numeric format,
- which can be post-processed to get strings.
- - ALSA: asihpi - Poison adapter_index in message. Remove unused function.
- - ALSA: asihpi - Switch to dev_printk.
Atmel AT73C213 DAC driver
- - ALSA: atmel - update author email for ABDAC, AC97C and AT73C213
- This patch updates the email address of the sound drivers supported by me to an
- email account I will use on a more regular basis in the future.
Atmel on-chip Audio Bitstream DAC (ABDAC)
- - sound-soc: move to dma_transfer_direction
- fixup usage of dma direction by introducing dma_transfer_direction,
- this patch moves asoc drivers to use new enum
- - ALSA: atmel/ac97c: using software reset instead hardware reset if not available
- - treewide: Convert uses of struct resource to resource_size(ptr)
- Several fixes as well where the +1 was missing.
- Done via coccinelle scripts like:
- @@
- struct resource *ptr;
- @@
- - ptr->end - ptr->start + 1
- + resource_size(ptr)
- and some grep and typing.
- Mostly uncompiled, no cross-compilers.
- - ALSA: atmel - update author email for ABDAC, AC97C and AT73C213
- This patch updates the email address of the sound drivers supported by me to an
- email account I will use on a more regular basis in the future.
Au12x0/Au1550 PSC ASoC
- - Add missing soc/* stub files
- - MIPS: Alchemy: Improved DB1550 support, with audio and serial busses.
- To: linux-mips@linux-mips.org
- Patchwork: https://patchwork.linux-mips.org/patch/2868/
- - MIPS: Alchemy: Basic support for the DB1300 board.
- To: linux-mips@linux-mips.org
- Patchwork: https://patchwork.linux-mips.org/patch/2867/
- Patchwork: https://patchwork.linux-mips.org/patch/2919/
- Patchwork: https://patchwork.linux-mips.org/patch/2928/
- - ASoC: ac97c.c: use devm_ functions
- The various devm_ functions allocate memory that is released when a driver
- detaches. This patch uses devm_kzalloc, devm_request_mem_region and
- devm_ioremap for data that is allocated in the probe function of a platform
- device and is only freed in the remove function.
- - ASoC: dbdma2.c: use devm_ functions
- The various devm_ functions allocate memory that is released when a driver
- detaches. This patch uses devm_kzalloc, devm_request_mem_region and
- devm_ioremap for data that is allocated in the probe function of a platform
- device and is only freed in the remove function.
- - ASoC: dma.c: use devm_ functions
- The various devm_ functions allocate memory that is released when a driver
- detaches. This patch uses devm_kzalloc, devm_request_mem_region and
- devm_ioremap for data that is allocated in the probe function of a platform
- device and is only freed in the remove function.
- - ASoC: i2sc.c: use devm_ functions
- The various devm_ functions allocate memory that is released when a driver
- detaches. This patch uses devm_kzalloc, devm_request_mem_region and
- devm_ioremap for data that is allocated in the probe function of a platform
- device and is only freed in the remove function.
- - ASoC: psc-ac97.c: use devm_ functions
- The various devm_ functions allocate memory that is released when a driver
- detaches. This patch uses devm_kzalloc, devm_request_mem_region and
- devm_ioremap for data that is allocated in the probe function of a platform
- device and is only freed in the remove function.
- - ASoC: psc-i2s.c: use devm_ functions
- The various devm_ functions allocate memory that is released when a driver
- detaches. This patch uses devm_kzalloc, devm_request_mem_region and
- devm_ioremap for data that is allocated in the probe function of a platform
- device and is only freed in the remove function.
- - MIPS: Alchemy: Au1300 SoC support
- Add basic support for the Au1300 variant(s):
- - New GPIO/Interrupt controller
- - DBDMA ids
- - USB setup
- - MMC support
- - enable various PSC drivers
- - detection code.
- To: linux-mips@linux-mips.org
- Patchwork: https://patchwork.linux-mips.org/patch/2866/
- - ASoC: au1x: Add .owner to struct snd_soc_card
- Add missing .owner of struct snd_soc_card. This prevents the module from being
- removed from underneath its users.
- Reported-by: Lothar Waßmann <LW@KARO-electronics.de>
- - ASoC: Staticise alchemy_pcm_soc_platform
- - ASoC: Staticise au1xpsc_soc_platform
- - ASoC: Convert au1x directory to module_platform_driver
- Factor out some boilerplate code.
- - ASoC: Cleanup duplicated const
- Commit 85e7652("ASoC: Constify snd_soc_dai_ops structs") accidentally
- introduced a few duplicated consts. This patch cleans it up.
- - ASoC: Constify snd_soc_dai_ops structs
- Commit 1ee46ebd("ASoC: Make the DAI ops constant in the DAI structure")
- introduced the possibility to have constant DAI ops structures, yet this is
- barley used in both existing drivers and also new drivers being submitted,
- although none of them modifies its DAI ops structure. The later is not
- surprising since existing drivers are often used as templates for new drivers.
- So this patch just constifies all existing snd_soc_dai_ops structs to eliminate
- the issue altogether.
- The patch was generated with the following coccinelle semantic patch:
- // <smpl>
- @@
- identifier ops;
- @@
- -struct snd_soc_dai_ops ops =
- +const struct snd_soc_dai_ops ops =
- { ... };
- // </smpl>
- - MIPS: Alchemy: remove all CONFIG_SOC_AU1??? defines
- Now that no driver any longer depends on the CONFIG_SOC_AU1??? symbols,
- it's time to get rid of them: Move some of the platform devices to the
- boards which can use them, Rename a few (unused) constants in the header,
- Replace them with MIPS_ALCHEMY in the various Kconfig files. Finally
- delete them altogether from the Alchemy Kconfig file.
- To: Linux-MIPS <linux-mips@linux-mips.org>
- Patchwork: https://patchwork.linux-mips.org/patch/2707/
- - ASoC: keep pointer to resource so it can be freed
- Add a new variable for storing resources accessed subsequent to the one
- accessed using request_mem_region, so the one accessed using
- request_mem_region can be released if needed.
- The resource variable names are also changed to be more descriptive.
- This code is also missing some calls to iounmap.
- The semantic match that finds this problem is as follows:
- (http://coccinelle.lip6.fr/)
- // <smpl>
- @r@
- expression E, E1;
- identifier f;
- statement S1,S2,S3;
- @@
- if (E == NULL)
- {
- ... when != if (E == NULL || ...) S1 else S2
- when != E = E1
- *E->f
- ... when any
- return ...;
- }
- else S3
- // </smpl>
- - ASoC: Remove unreachable code in au1xac97c_drvprobe and au1xi2s_drvprobe
- - ASoC: au1x: use substream stream info directly
- PCM_TX/RX are the same as SNDRV_PCM_STREAM_PLAYBACK/CAPTURE. Use
- them directly.
- - ASoC: au1x: update db1200 machine to the new way of things
- The use of the "soc-audio" platform device is no longer en vogue,
- update the code to the newer, simpler way of doing things.
- - ASoC: au1x: remove automatic DMA device registration from PSC drivers
- The PSC audio drivers (psc-ac97/psc-i2s) register the DMA platform_device
- on their own. This is frowned upon, from now on board code must
- register a simple pcm dma platform device for each PSC with sound duties.
- - ASoC: Add a DB1x00 AC97 machine driver
- Add a machine driver suitable for the AC97 part on the DB1000/DB1500/DB1100
- boards.
- Run-tested on DB1500.
- - ASoC: Alchemy AC97C/I2SC audio support
- This patch adds ASoC support for the AC97 and I2S controllers
- on the old Au1000/Au1500/Au1100 chips,
- AC97 Tested on a Db1500. I2S untested since none of the boards
- actually have an I2S codec wired up (just test pins).
- - ASoC: Remove -codec from WM8731 driver name
Avance Logic ALS300/300+ driver
- - ALSA: Add missing module parameters for als300 and cs5530 drivers
- These drviers defined only variables but didn't declare as module
- parameters. Also fix the enable variable to bool type.
- - ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/*
- The name argument of request_irq() appears in /proc/interrupts, and
- it's quite ugly when the name entry contains a space or special letters.
- In general, it's simpler and more readable when the module name appears
- there, so let's replace all entries with KBUILD_MODNAME.
- - ALSA: Use KBUILD_MODNAME for pci_driver.name entries
- The convention for pci_driver.name entry in kernel drivers seem to be
- the module name or equivalent ones. But, so far, almost all PCI sound
- drivers use more verbose name like "ABC Xyz (12)", and these are fairly
- confusing when appearing as a file name.
- This patch converts the all pci_driver.name entries in sound/pci/* to
- use KBUILD_MODNAME for more unified appearance.
CMI8330 driver
- - ALSA: mpu401: clean up interrupt specification
- The semantics of snd_mpu401_uart_new()'s interrupt parameters are
- somewhat counterintuitive: To prevent the function from allocating its
- own interrupt, either the irq number must be invalid, or the irq_flags
- parameter must be zero. At the same time, the irq parameter being
- invalid specifies that the mpu401 code has to work without an interrupt
- allocated by the caller. This implies that, if there is an interrupt
- and it is allocated by the caller, the irq parameter must be set to
- a valid-looking number which then isn't actually used.
- With the removal of IRQF_DISABLED, zero becomes a valid irq_flags value,
- which forces us to handle the parameters differently.
- This patch introduces a new flag MPU401_INFO_IRQ_HOOK for when the
- device interrupt is handled by the caller, and makes the allocation of
- the interrupt to depend only on the irq parameter. As suggested by
- Takashi, the irq_flags parameter was dropped because, when used, it had
- the constant value IRQF_DISABLED.
CMI8788 (Oxygen) driver
- - ALSA: virtuoso: Xonar DS: fix polarity of front output
- The two DACs for the front output and the surround/center/LFE/back
- outputs are wired up out of phase, so when channels are duplicated,
- their sound can cancel out each other and result in a weaker bass
- response. To fix this, reverse the polarity of the neutron flow to
- the front output.
- Reported-any-tested-by: Daniel Hill <daniel@enemyplanet.geek.nz>
- - ALSA: virtuoso: add S/PDIF input support for all Xonars
- All Xonar cards support S/PDIF input, but the cards without optical or
- coaxial plugs have only undocumented pin connectors. Support for the
- ST/STX was already added in a previous patch; this adds support for the
- D1/DX (JP2), DG (J5), DS (J5), and HDAV Slim (J12).
- Many thanks to Zoltan Miklos for testing the DS and DX.
- - ALSA: virtuoso: fix Essence ST(X) S/PDIF input
- On the Xonar Essence ST/STX, the connector J14 has been confirmed to be
- a digital input, so enable it in the driver.
- - ALSA: virtuoso: fix silent analog output on Xonar Essence ST Deluxe
- Commit dd203fa97bd5 (ALSA: virtuoso: remove non-working controls on
- Essence ST Deluxe) made it impossible to adjust the volume after the
- driver initialized it to muted.
- Ensure that those DACs that can be accessed with I2C are initialized
- to the same volume that is the reset default of the DAC without I2C.
- - ALSA: firewire-speakers, oxygen, ua101: allow > 10 s periods
- Since commit f2b3614cefb6 (Don't check DMA time-out too shortly),
- drivers need no longer restrict their PCM period length to be shorter
- than 10 seconds.
- - ALSA: oxygen: fix output routing on Xonar DG
- This card uses separate I2S outputs for the front speakers and
- headphones, and reverses the order of the three speaker outputs.
- To work around this, add a model-specific callback to adjust the
- controller's playback routing.
CS5535 driver
- - ALSA: cs5535 - Fix an endianness conversion
- desc->size is supposed to be a le16 type. On a big endian system the
- current code will set ->size to zero. We fixed a similar bug
- on the next line but missed this one.
- - ALSA: cs5535 - Fix invalid big-endian conversions
- Fix the wrongly converted short values:
- sound/pci/cs5535audio/cs5535audio_pcm.c:152: warning: large integer implicitly truncated to unsigned type
- sound/pci/cs5535audio/cs5535audio_pcm.c:160: warning: large integer implicitly truncated to unsigned type
Compatibility header files
- - More fixes for pm_qos changes in 3.2-rc1
- - Fix recent PM change (pm_qos_params.h -> pm_qos.h renaming) for pcm.h
- - More fixes for kABI compatibility with older 2.6 kernels
Creative Sound Blaster X-Fi (20K1/20K2)
- - ALSA: ctxf: Use kcalloc instead of kzalloc to allocate array
- The advantage of kcalloc is, that will prevent integer overflows which could
- result from the multiplication of number of elements and size and it is also
- a bit nicer to read.
- The semantic patch that makes this change is available
- in https://lkml.org/lkml/2011/11/25/107
- - ALSA: ctxfi: Bump playback substreams to 256
- There are references in the code to 256 sources, so I tested it with 256 aplays,
- of which the first and last with real data and the rest playing /dev/zero .
- Also increase amount of page tables, so the default aplay size works.
- - ALSA: ctxfi: Change PLL initialization code
- This is a reworked patch from Creative to change the PLL code to address
- unreliable 44100Hz initialization.
- - ALSA: ctxfi: Implement a combined capabilities query method to replace multiple have_x query methods.
- - ALSA: ctxfi: Add support for Creative Titanium HD
- Initialise model-specific DAC and ADC parts.
- Add controls for output and mic source selection.
- Rename some mixer controls according to ControlNames.txt.
- Remove Playback switches for Line-in and IEC958-in - these
- were controlling the input mute/unmute which affected
- capture too. Use the capture switches to control the
- input mute/unmute instead - it's less confusing.
- Initialise the WM8775 to invert the left-right clock
- to swap the left and right channels of the mic and aux
- input.
- - ALSA: ctxfi - use list_move() instead of list_del()/list_add() combination
- - ALSA: ctxfi - Clear input settings before initialization
- Clear input settings before initialization.
- - ALSA: ctxfi - Fix SPDIF status retrieval
- SDPIF status retrieval always returned the default settings instead of
- the actual ones.
- - ALSA: ctxfi - Fix incorrect SPDIF status bit mask
- SPDIF status mask creation was incorrect.
- - ALSA: ctxfi - Fix microphone boost codes/comments
- microphone boost was set at +12dB, not +20dB (like in Windows driver
- and in adc_conf structure declaration), some comments added.
Digigram Lola PCI-e boards
- - Add build stubs for snd-lola driver
- - ALSA: lola - Fix for Lola280 board
- - add/fix comments and debug messages
- - fix incomplete matrix init
- - comment out creation of buggy lola_dest_gain_mixer controls
- - minor optimisations
- - ALSA: lola - Fix section mismatch
- Add missing __devinit.
- - ALSA: lola - fix lola build
- sound/pci/lola/Makefile was trying to build lola modules even
- when PCI and SND_LOLA were not enabled, causing build errors:
- ERROR: "snd_pcm_hw_constraint_step" [sound/pci/lola/snd-lola.ko] undefined!
- ERROR: "snd_pcm_period_elapsed" [sound/pci/lola/snd-lola.ko] undefined!
- ERROR: "snd_dma_alloc_pages" [sound/pci/lola/snd-lola.ko] undefined!
- ERROR: "snd_pcm_hw_constraint_integer" [sound/pci/lola/snd-lola.ko] undefined!
- ERROR: "snd_pcm_sgbuf_ops_page" [sound/pci/lola/snd-lola.ko] undefined!
- ERROR: "snd_pcm_set_ops" [sound/pci/lola/snd-lola.ko] undefined!
- ERROR: "snd_pcm_lib_free_pages" [sound/pci/lola/snd-lola.ko] undefined!
- ERROR: "snd_pcm_lib_ioctl" [sound/pci/lola/snd-lola.ko] undefined!
- ERROR: "snd_pcm_lib_malloc_pages" [sound/pci/lola/snd-lola.ko] undefined!
- ERROR: "snd_pcm_sgbuf_get_chunk_size" [sound/pci/lola/snd-lola.ko] undefined!
- ERROR: "snd_dma_free_pages" [sound/pci/lola/snd-lola.ko] undefined!
- ERROR: "snd_pcm_lib_preallocate_pages_for_all" [sound/pci/lola/snd-lola.ko] undefined!
- ERROR: "snd_pcm_new" [sound/pci/lola/snd-lola.ko] undefined!
- Fix the Makefile to build only when CONFIG_SND_LOLA is enabled.
- - ALSA: lola - Yet another linux/delay.h inclusion
- - ALSA: lola - Add missing inclusion of linux/delay.h
- - ALSA: lola - Implement polling_mode like hd-audio
- Also protect the call of lola_update_rirb() with spinlock.
- - ALSA: lola - Rename to Digital SRC Capture Switch
- Renamed to Digial SRC Capture Switch for more correct representation.
- Also fixed analog volume control on Lola161611 and lola881.
- - ALSA: lola - Add sync in loop implementation
- For assuring the synchronized state with the pause operation,
- loop over the all linked streams and waits until all get ready
- in a loop.
- - ALSA: lola - Add SRC refcounting
- Added the refcounting for the exclusive SRC control.
- Also, fixed the possible stall after PCM pause operations.
- - ALSA: lola - Allow granularity changes
- Add some sanity checks.
- Change PCM parameters appropriately per granularity.
- - ALSA: lola - Use SG-buffer
- Completely switch to SG-buffer now, as it's working stably.
- - ALSA: lola - Add Lola-specific module options
- Added granularity and sample_rate_min module options.
- The former controls the h/w access granularity. As default, it's set
- to the max value 32.
- The latter controls the minimum sample rate in Hz, as default 16000.
- - ALSA: lola - Fix PCM stalls
- - ALSA: lola - Use a single BDL
- Use a single BDL for both buffers instead of allocating for each.
- Also a few tune-up to avoid the stream stalls in the PCM code and
- the prelimianry work for SG-buffer support are added, too.
- - ALSA: lola - Suppress the debug print
- Use snd_printdd() for less important debug messages.
- - ALSA: lola - Changes in proc file
- The codec proc file becomes a read only that shows the codec widgets
- in a text form. A new proc file, codec_rw, is introduced instead for
- accessing the Lola verb directly by reading and writing to it.
- Also, regs proc file shows the contents of DSD, too.
- - ALSA: lola - Make SRC helper global
- Make lola_sample_rate_convert() global so that it can be accessed from
- other files.
- - ALSA: Add the driver for Digigram Lola PCI-e boards
- Added a new driver for supporting Digigram Lola PCI-e boards.
- Lola has a similar h/w design like HD-audio but with extended verbs.
- Thus the driver is written similarly like HD-audio driver in the bus
- part. The codec part is rather written in a fixed way specific to the
- Lola board because of the verb incompatibility.
- The driver provides basic PCM, supporting multi-streams and mixing.
Digigram VX Pocket driver
- - ALSA: pcmcia - Use pcmcia_request_irq()
- The drivers don't require the exclusive irqs. Let's fix the deprecated
- warnings.
- - pcmcia: Make struct pcmcia_device_id const, sound drivers edition
- Make declarations of struct pcmcia_device_id const.
- - ALSA: use linux/io.h to fix compile warnings
- For helping to reduce Greert's regression list...
- src/sound/drivers/mtpav.c: error: implicit declaration of function 'inb'
- src/sound/drivers/mtpav.c: error: implicit declaration of function 'outb'
- ...
Documentation
- - ALSA: compress offload API documentation
- The patch adds the documentation file explaining the API
- - ALSA: hda: remove unused quirk for inverted mute led
- Commit b99a776d0b17ae0f3a54e86009887a00ac4889d0 removed all effects of
- the STAC92HD83* model quirk "hp". However, it left the model selection
- and documentation behind, confusing users with inverted mute
- leds. Completely remove this quirk and its documentation.
- - ASoC: Remove references to corgi and spitz from machine driver document
- They're not currently actively worked on, the hardware being rather
- obsolete by now.
- - ALSA: hda - Update URLs in document
- Some stuff was moved from kernel.org to other places.
- - ALSA: hda/realtek - Remove all ALC262-quirk codes
- Now that model=ultra is supported well by the auto-parser, we can get rid
- of the whole alc262_quirks.c and its related codes.
- - ALSA: hda - fix internal mic on Dell Vostro 3500 laptop
- Fix the not working internal mic on Dell Vostro 3500 laptop by introducing the
- new model dell-vostro-3500.
- - ALSA: hda - Fix typo
- - ALSA: hda - Add documentation for codec specific mixer controls of Analog codecs
- * Channel Mode
- This is an enum control to change the surround-channel setup,
- appears only when the surround channels are available.
- It gives the number of channels to be used, "2ch", "4ch" abd "6ch".
- According to the configuration, this also controls the
- jack-retasking of multi-I/O jacks.
- * Independent HP
- When this enum control is enabled, the headphone output is routed
- from an individual stream (the third PCM such as hw:0,2) instead of
- the primary stream.
- - ALSA: hda - Allow patching with any vendor/subsystem ids
- In the ugly real world, there area really broken devices that don't set
- codec SSID correctly. In such a case, the ID can be random, thus the
- patching won't work reliably.
- For applying the patch forcibly to such a device, the driver will skip
- the vendor and/or subsystem ID checks when zero or a negative number is
- given in [codec] section.
- - ALSA: hda - Add snoop option
- Added a new option "snoop" for the traffic control of the HD-audio
- controller chip. When set to 0, the non-snooping mode is used with
- the traffic control bit is set in each stream control register.
- This may allow better operations in the low power mode, but the actual
- implementation is depending pretty much on the chipset.
- As already implemented, more or less each chipset has own snoop-control
- register bit. Now this setup refers to the snoop option, too.
- Also, a new VIA chipset may require the non-snooping mode when set so
- in BIOS. In such a case, the option value is overridden.
- As default, it's still set to snoop=1 for keeping the same behavior as
- before. In near future, it'll be set to 0 as default after checking
- it works in every system well.
- - ALSA: hda - Remove the rest of ALC662 quirks
- The rest of ALC662 quirks are only for desktops, and they should work
- with the auto-parser.
- - ALSA: hda - Remove ALC662 ASUS eeepc-ep20 model quirk
- Since the recent fixes, this device works with the auto-parser well.
- Let's kill it.
- - ALSA: hda - Rewrite Lenovo X200 quirk with pincfg-fix using auto-parser
- Introduce the pincfg table to patch_conexant.c for fixing up the extra
- pin-configuration for auto-parser. As an example, Lenovo X200 model is
- replaced with this new mechanism. (This also fixes the wrong mixer
- elements for docking-station I/O in the previous model quirk
- automagically.)
- - ALSA: hda - Remove ALC662 ASUS M51VA, G71V, H13 and G50V model quirks
- These models work now with the BIOS auto-parser, so let's drop them.
- - ALSA: hda - Rewrite ALC269 laptop-amic,dmic,&co quirks with fixups
- Similarly like ALC662 asus-mode* models, rewrite the laptop-amic and
- dmic models with the static pin-config tables.
- Now we can get rid of all alc269_quirks.c.
- - ALSA: hda - Remove all ALC861 and ALC861-VD quirks
- Let's remove the rest of ALC861 and ALC861-VD quirks.
- If any breakage is found, it can be fixed easily via the pin-config
- table update.
- - ALSA: hda - Remove ALC662 model=levono-101e model quirk
- - ALSA: hda - Remove ALC662 eeepc-p701 and ecs models
- These are confirmed to work with the auto-parser with pincfg fixups.
- - ALSA: hda - Get rid of left-over chunks by previous cleanups
- Also update the model description, too.
- - ALSA: hda - Remove ALC861 uniwill-m31, toshiba, asus and asus-laptop models
- These are confirmed to work with the auto-parser.
- - ALSA: hda - Add documentation for codec-specific mixer controls
- - ALSA: hda - Remove ALC268 model quirks
- Get rid of the rest of ALC268 model quirks. They are all confirmed to
- work with the auto-parser, too.
- - ALSA: hda - Replace ALC269 quanta and lifebook models with fixups
- Implement new fixup entries for Quanta FL1 and Fujitsu Lifebook
- specific COEF and pin configurations. Removed the model entries
- from alc269_quirks.c.
- - ALSA: hda - Remove acer, acer-aspire and acer-dmic models for ALC268
- Moved some code to alc269_quirks.c for dependency, too.
- - ALSA: hda - Remove ALC269 model=futjisu and Acer
- Both are supported by the auto-parser.
- - ALSA: hda - Remove dell, dell-zm1 and samsung-nc10 models for ALC272
- The auto-parser works for these models.
- - ALSA: hda - Remove ALC260 HP model quirks
- ALC260 HP models work with the BIOS auto-parser. Let's cut them off.
- Also move alc260_hp_master_*() to alc262_quirks.c as these are still
- referred from there.
- - ALSA: hda - Remove ALC262 HP and sony-assamd quirks
- HP and sony-assamd models work with the BIOS auto-parser nowadays,
- so let's reduce the unnecessary code.
- - ALSA: hda - Add tracepoint for unsolicited events
- - ALSA: hda - Add documentation for tracepoints
- - ALSA: hda: option to enable arbitrary buffer/period sizes
- Add new parameter to disable rounding of buffer/period sizes to
- multiples of 128 bytes. This is more efficient in terms of memory
- access but isn't required by the HDA spec and prevents users from
- specifying exact period/buffer sizes. For example for 44.1kHz, a
- period size set to 20ms will be rounded to 19.59ms.
- Tested and enabled on Intel HDA controllers. Option is disabled by
- default for other controllers.
- Tested-by: Wu Fengguang <fengguang.wu@intel.com>
- - Fix common misspellings
- Fixes generated by 'codespell' and manually reviewed.
- - ALSA: Add the driver for Digigram Lola PCI-e boards
- Added a new driver for supporting Digigram Lola PCI-e boards.
- Lola has a similar h/w design like HD-audio but with extended verbs.
- Thus the driver is written similarly like HD-audio driver in the bus
- part. The codec part is rather written in a fixed way specific to the
- Lola board because of the verb incompatibility.
- The driver provides basic PCM, supporting multi-streams and mixing.
- - ALSA: emu10k1 - Fix "Music" controls to "Synth" controls in documents
- - ALSA: hda - Fix alc662_dac_nid and change "6stack-dig" to "5stack-dig"
- alc662 series only have 3 DAC, so it can only support 5stack-dig
- instead of 6stack-dig.
- [updated HD-Audio-Models.txt as well by tiwai]
- - Documentation: fix minor typos/spelling
- Fix some minor typos:
- * informations => information
- * there own => their own
- * these => this
EMU10K1/EMU10K2 driver
- - Fixup emu10k1_main.patch
- An addition of a new card broke the patch.
- - ALSA: emu10k1 - add another Audigy 2 ZS ID
- 0x20051102 is an Audigy 2 ZS.
- - ALSA: emu10k1: allow to disable the SRC
- Add the PCM rule to allow disabling the PCM playback SRC.
- - ALSA: emu10k1: Add details for E-mu 0404 PCIe version
- This patch adds the necessary details to support the PCIe version of
- E-MU's 0404 card.
- From comparing the PCBs it seems the PCIe version just added a PCIe
- chipset and left all other components pretty much in place.
- For anyone intrigued to take a look at the PCB there are pictures I took
- at <http://babelmonkeys.de/~florob/E-MU%200404/>.
- - ALSA: emu10k1 - Add dB range to Bass and Treble for SB Live!
- As the "Wave", "Wave Surround" or "Front" Playback Volume must be
- changed to 70% (i.e. -12 dB) so that distortion won't occur when
- increase Bass and Treble from 50% to 100%, so the maximum gain in
- Bass and Treble are +12 dB.
- - ALSA: emu10k1 - Remove "Front" controls only for STAC9758/59
- Remove "Front Playback Volume" and "Front Playback Switch" from emu10k1 only
- for STAC9758/59
- Since commit 7eae36fbd5ea9db3d3fe0d671199121be782a5b3
- "Fix the confliction of 'Front' control",
- the "Front Playback Volume" control created by commit
- edf8e4565c44bffbb4d09e8984df941d0ae9e6e8
- "emu10k1: Front channels via fxbus 8 and 9"
- was removed
- "Front Playback Volume" and "Surround Playback Volume" have same dB range
- since I2S DAC of SB Live! and SB Live! Platinum does not has any hardware
- volume control.
- - ALSA: emu10k1 - Remove CLFE-related controls for SB Live! Platinum CT4760P
- SB Live! Platinum CT4760P is just a 4 channels sound card with STAC9721 and
- Philips UDA1334 DAC.
- - ALSA: emu10k1 - emu10k1_main.c remove one to many l's in the word.
- The patch below removes an extra "l" in the word.
EMU8000 driver
- - sound: add moduleparam.h to users of module_param/MODULE_PARM_DESC
- These files were getting access to these two via the implicit
- presence of moduleparam.h everywhere. But that is being fixed, so
- get these guys what they need in advance.
ENS1370/1+ driver
- - ALSA: ens1371: fix Creative Ectiva support
- To make the EV1938 chip work, add a magic bit and an extra delay.
- Tested-by: Tino Schmidt <mailtinoshomepage@gmx.net>
ES1968 driver
- - ALSA: es1968,maestro3 - Use work for hw-volume control
- Instead of tasklet, use workq for handling the hw-volume control.
- This reduces lots of spinlocks.
- - ALSA: tea575x: use better card and bus names
- Provide real card and bus_info instead of hardcoded values.
- - ALSA: tea575x: remove unused card from struct
- struct snd_card *card is present in struct snd_tea575x but never used.
- Remove it.
- - ALSA: tea575x: remove freq_fixup from struct
- freq_fixup is a constant, no need to hold it in struct snd_tea575x and set in
- each driver.
- - ALSA: es1968: convert TEA575x support to new interface
- Use common functions to access TEA575x tuner - remove original read/write
- functions and provide new pin manipulation functions instead.
- Tested with SF64-PCE2 card.
- - ALSA: es1968: add radio (tea575x tuner) support
- Add TEA5757 radio tuner support to es1968 driver. This is found at least on
- MediaForte SF64-PCE2 sound cards.
Echoaudio driver
- - atomic: use <linux/atomic.h>
- This allows us to move duplicated code in <asm/atomic.h>
- (atomic_inc_not_zero() for now) to <linux/atomic.h>
- Reviewed-by: Eric Dumazet <eric.dumazet@gmail.com>
FM801 driver
- - Fix fuzz in pci/fm801.patch
- - ALSA: fm801 - Clean up redundant reference to snd_fm801_tea575x_gpios[]
- Use macro to improve readability.
- - ALSA: fm801: Gracefully handle failure of tuner auto-detect
- Commit 9676001559fce06e37c7dc230ab275f605556176
- ("ALSA: fm801: add error handling if auto-detect fails") seems to
- break systems that were previously working without a tuner.
- As a bonus, this should fix init and cleanup for the case where the
- tuner is explicitly disabled.
- Reported-and-tested-by: Hor Jiun Shyong <jiunshyong@gmail.com>
- References: http://bugs.debian.org/641946
- - ALSA: fm801: Fix double free in case of error in tuner detection
- Commit 9676001559fce06e37c7dc230ab275f605556176
- ("ALSA: fm801: add error handling if auto-detect fails") added
- incorrect error handling.
- Once we have successfully called snd_device_new(), the cleanup
- function fm801_free() will automatically be called by snd_card_free()
- and we must *not* also call fm801_free() directly.
- Reported-by: Hor Jiun Shyong <jiunshyong@gmail.com>
- References: http://bugs.debian.org/641946
- - ALSA: fm801: add error handling if auto-detect fails
- In the original code if auto detect failed and tea575x_tuner == 4
- then we copy bogus information to chip->tea.card. I've changed the
- autodetect code to cleanup and return -ENODEV on error instead.
- - ALSA: fm801: clean-up radio-related Kconfig
- Remove TEA575X_RADIO define from fm801.c.
- Also update Kconfig help text to include all supported cards.
- - ALSA: tea575x: use better card and bus names
- Provide real card and bus_info instead of hardcoded values.
- - ALSA: tea575x: remove unused card from struct
- struct snd_card *card is present in struct snd_tea575x but never used.
- Remove it.
- - ALSA: tea575x: remove freq_fixup from struct
- freq_fixup is a constant, no need to hold it in struct snd_tea575x and set in
- each driver.
- - ALSA: fm801: implement TEA575x tuner autodetection
- Autodetect TEA575x tuner connection type during init. This allows tuner to
- work out-of-the box.
- tea575x_tuner module parameter remains functional to force tuner type.
- Tested with SF256-PCP and SF64-PCR.
- - ALSA: fm801: convert TEA575x support to new interface
- Use common functions to access TEA575x tuner - remove original read/write
- functions and provide new pin manipulation functions instead.
- Also convert the original triple implementation to a simple GPIO pin map.
- Tested with SF256-PCP and SF64-PCR (added the GPIO pin for MO/ST signal
- for them).
- SF256-PCS untested (pin for MO/ST signal is a guess).
- - ALSA: tea575x-tuner: remove dev_nr
- Remove unused dev_nr from struct tea575x_tuner.
Firewire driver
- - Fix build of isight driver with 2.6.39 or older kernel
- - Fix build of firewire drivers with 2.6.39 kernel
- - Add build stub for isight
- - add isight build stub
- Add support files for the new snd-isight driver.
- - add firewire build stubs
- Add build stubs and related support for the new FireWire modules.
- - treewide: use __printf not __attribute__((format(printf,...)))
- Standardize the style for compiler based printf format verification.
- Standardized the location of __printf too.
- Done via script and a little typing.
- $ grep -rPl --include=*.[ch] -w "__attribute__" * | \
- grep -vP "^(tools|scripts|include/linux/compiler-gcc.h)" | \
- xargs perl -n -i -e 'local $/; while (<>) { s/\b__attribute__\s*\(\s*\(\s*format\s*\(\s*printf\s*,\s*(.+)\s*,\s*(.+)\s*\)\s*\)\s*\)/__printf($1, $2)/g ; print; }'
- [akpm@linux-foundation.org: revert arch bits]
- - ALSA: firewire-speakers: fix locking
- There is a lock inversion between fwspk->mutex and pcm->open_mutex
- reported by lockdep when fwspk_hw_free is called.
- Fixed by copying the fix from the same former issue in the isight
- sound driver (commit f3f7c1837f6bcae3601fc535b339426868bf1549
- "ALSA: isight: fix locking").
- - ALSA: isight: remove superfluous field
- Remove a field that is not used at all. This remained from
- earlier tests, but the current driver has decided not to handle
- iris notifications.
- - ALSA: firewire-speakers, oxygen, ua101: allow > 10 s periods
- Since commit f2b3614cefb6 (Don't check DMA time-out too shortly),
- drivers need no longer restrict their PCM period length to be shorter
- than 10 seconds.
- - ALSA: isight: adjust for new queueing API
- Since commit 13882a82ee16 (optimize iso queueing by setting
- wake only after the last packet), drivers are required to call
- fw_iso_context_queue_flush() after queueing a batch of packets.
- The missing call would have an effect only if the controller
- queue underruns, but then the DMA would stop completely.
- - ALSA: isight: fix locking
- Lockdep complains about conflicts between isight->mutex,
- ALSA's register_mutex, mm->mmap_sem, and pcm->open_mutex.
- This can be fixed by moving the calls to isight_pcm_abort(),
- snd_card_disconnect(), and fw_iso_resources_update() out of
- isight->mutex. These functions are designed to be called
- asynchronously; the mutex needs to protect only the device
- streaming state modified by isight_start/stop_streaming().
- Reported-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
- - ALSA: isight: fix hang when unplugging a running device
- When aborting a PCM stream, the xrun is signaled only if the stream is
- running. When disconnecting a PCM stream, calling snd_card_disconnect()
- too early would change the stream into a non-running state and thus
- prevent the xrun from being noticed by user space.
- To prevent this, move the snd_card_disconnect() call after the xrun.
- - ALSA: isight: wrap up register accesses
- [cl: removed superfluous variable]
- - ALSA: isight: add AudioEnable register write
- which is needed to get the iSight to talk.
- - ALSA: isight: fix divide error when queueing packets
- Set the .header_size field when queueing packets to avoid a division by
- zero.
- - ALSA: isight: fix packet requeueing
- After handling a received packet, we want to resubmit the same packet,
- so do not increase the packet index too early.
- - ALSA: isight: fix isight_pcm_abort() crashes
- Fix crashes in isight_pcm_abort() that happen when the driver tries to
- access isight->pcm->runtime which does not exist when the device is not
- open. Introduce a new field pcm_active to track this state.
- Reported-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
- - ALSA: isight: remove experimental status
- Experiments have shown this driver to work now.
- Tested-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
- - ALSA: add Apple iSight microphone driver
- This adds an experimental driver for the front and rear microphones of
- the Apple iSight web camera.
- - firewire: optimize iso queueing by setting wake only after the last packet
- When queueing iso packets, the run time is dominated by the two
- MMIO accesses that set the DMA context's wake bit. Because most
- drivers submit packets in batches, we can save much time by
- removing all but the last wakeup.
- The internal kernel API is changed to require a call to
- fw_iso_context_queue_flush() after a batch of queued packets.
- The user space API does not change, so one call to
- FW_CDEV_IOC_QUEUE_ISO must specify multiple packets to take
- advantage of this optimization.
- In my measurements, this patch reduces the time needed to queue
- fifty skip packets from userspace to one sixth on a 2.5 GHz CPU,
- or to one third at 800 MHz.
- - firewire: octlet AT payloads can be stack-allocated
- We do not need slab allocations anymore in order to satisfy
- streaming DMA mapping constraints, thanks to commit da28947e7e36
- "firewire: ohci: avoid separate DMA mapping for small AT payloads".
- (Besides, the slab-allocated buffers that firewire-core, firewire-sbp2,
- and firedtv used to provide for 8-byte write and lock requests were
- still not fully portable since they crossed cacheline boundaries or
- shared a cacheline with unrelated CPU-accessed data. snd-firewire-lib
- got this aspect right by using an extra kmalloc/ kfree just for the
- 8-byte transaction buffer.)
- This change replaces kmalloc'ed lock transaction scratch buffers in
- firewire-core, firedtv, and snd-firewire-lib by local stack allocations.
- Perhaps the most notable result of the change is simpler locking because
- there is no need to serialize usages of preallocated per-device buffers
- anymore. Also, allocations and deallocations are simpler.
- - ALSA: firewire-speakers: fix hang when unplugging a running device
- When aborting a PCM stream, the xrun is signaled only if the stream is
- running. When disconnecting a PCM stream, calling snd_card_disconnect()
- too early would change the stream into a non-running state and thus
- prevent the xrun from being noticed by user space.
- To prevent this, move the snd_card_disconnect() call after the xrun.
- - ALSA: firewire - msleep needs delay.h
- fixes this error:
- sound/firewire/fcp.c: In function 'fcp_avc_transaction':
- sound/firewire/fcp.c:103: error: implicit declaration of function 'msleep'
- - ALSA: firewire-lib, firewire-speakers: handle packet queueing errors
- Add an AMDTP stream error state that occurs when we fail to queue
- another packet. In this case, the stream is stopped, and the error can
- be reported when the application tries to restart the PCM stream.
- - ALSA: firewire-lib: allocate DMA buffer separately
- For correct cache coherency on some architectures, DMA buffers must be
- allocated in a different cache line than data that is concurrently used
- by the CPU.
- - ALSA: firewire-lib: use no-info SYT for packets without SYT sample
- In non-blocking mode, the SYT_INTERVAL is larger than the number of
- audio frames in each packet, so there are packets that do not contain
- any frame to which the SYT could be applied. For these packets, the
- SYT must not be the timestamp of the next valid SYT frame, but the
- special no-info SYT value.
- This fixes broken playback on the FireWave at 44.1 kHz.
- - ALSA: add LaCie FireWire Speakers/Griffin FireWave Surround driver
- Add a driver for two playback-only FireWire devices based on the OXFW970
- chip.
- v2: better AMDTP API abstraction; fix fw_unit leak; small fixes
- v3: cache the iPCR value
- v4: FireWave constraints; fix fw_device reference counting;
- fix PCR caching; small changes and fixes
- v5: volume/mute support; fix crashing due to pcm stop races
- v6: fix build; one-channel volume for LaCie
- v7: use signed values to make volume (range checks) work; fix function
- block IDs for volume/mute; always use channel 0 for LaCie volume
- Tested-by: Jay Fenlason <fenlason@redhat.com>
Generic drivers
- - ALSA: module_param: make bool parameters really bool
- module_param(bool) used to counter-intuitively take an int. In
- fddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy
- trick.
- It's time to remove the int/unsigned int option. For this version
- it'll simply give a warning, but it'll break next kernel version.
- - ALSA: convert sound/* to use module_platform_driver()
- This patch converts the drivers in sound/* to use the
- module_platform_driver() macro which makes the code smaller and a bit
- simpler.
- - ALSA: aloop - Use vmalloc buffer
- snd-aloop driver is virtual and has no need for allocating contiguous
- pages. It'll be more system-friendly to use vmalloc buffers.
- Tested-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
- - sound: irq: Remove IRQF_DISABLED
- Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
- We run all interrupt handlers with interrupts disabled
- and we even check and yell when an interrupt handler
- returns with interrupts enabled (see commit [b738a50a:
- genirq: Warn when handler enables interrupts]).
- So now this flag is a NOOP and can be removed.
- - i8253: Make pcsp sound driver use the shared i8253_lock
- Link: http://lkml.kernel.org/r/20110601180610.532642190@duck.linux-mips.net
- - i8253: Create linux/i8253.h and use it in all 8253 related files
- Link: http://lkml.kernel.org/r/20110601180610.054254048@duck.linux-mips.net
- arch/arm/mach-footbridge/isa-timer.c | 2 +-
- arch/mips/cobalt/time.c | 2 +-
- arch/mips/jazz/irq.c | 2 +-
- arch/mips/kernel/i8253.c | 2 +-
- arch/mips/mti-malta/malta-time.c | 2 +-
- arch/mips/sgi-ip22/ip22-time.c | 2 +-
- arch/mips/sni/time.c | 2 +-
- arch/x86/kernel/apic/apic.c | 2 +-
- arch/x86/kernel/apm_32.c | 2 +-
- arch/x86/kernel/hpet.c | 2 +-
- arch/x86/kernel/i8253.c | 2 +-
- arch/x86/kernel/time.c | 2 +-
- drivers/block/hd.c | 2 +-
- drivers/clocksource/i8253.c | 2 +-
- drivers/input/gameport/gameport.c | 2 +-
- drivers/input/joystick/analog.c | 2 +-
- drivers/input/misc/pcspkr.c | 2 +-
- include/linux/i8253.h | 11 +++++++++++
- sound/drivers/pcsp/pcsp.h | 2 +-
- 19 files changed, 29 insertions(+), 18 deletions(-)
- - ALSA: aloop - Fix possible IRQ lock inversion
- loopback_pos_update() can be called in the timer callback, thus the lock
- held should be irq-safe. Otherwise you'll get AB/BA deadlock together
- with substream->self_group.lock.
- Reported-and-tested-by: Knut Petersen <Knut_Petersen@t-online.de>
- - ALSA: use linux/io.h to fix compile warnings
- For helping to reduce Greert's regression list...
- src/sound/drivers/mtpav.c: error: implicit declaration of function 'inb'
- src/sound/drivers/mtpav.c: error: implicit declaration of function 'outb'
- ...
HDA Codec driver
HDA Intel driver
HDA generic driver
HR timer driver
- - ALSA: hrtimer: remove superfluous tasklet invocation
- Commit bb758e9637e5ddc removed snd_hrtimer_callback() from the hardware
- interrupt handler, thus moving it into a tasklet, but did not tell the
- ALSA timer framework about this, so the timer handling would now be done
- in the ALSA timer tasklet scheduled from another tasklet.
- To fix this, add the flag to tell the ALSA timer framework that the
- timer handler is already being invoked in a tasklet.
- - ALSA: hrtimer: handle delayed timer interrupts
- If a timer interrupt was delayed too much, hrtimer_forward_now() will
- forward the timer expiry more than once. When this happens, the
- additional number of elapsed ALSA timer ticks must be passed to
- snd_timer_interrupt() to prevent the ALSA timer from falling behind.
- This mostly fixes MIDI slowdown problems on highly-loaded systems with
- badly behaved interrupt handlers.
- Reported-and-tested-by: Arthur Marsh <arthur.marsh@internode.on.net>
ICE1712 driver
- - treewide: transciever/transceiver spelling fixes
- Just tyops.
ICE1724 driver
- - ALSA: ice1724 - Support for ooAoo SQ210a
- This card shares PCI ids with Chaintec AV710. Therefore, it will not be
- detected automatically, it can only be activated by the module parameter
- model=sq210a.
- - ALSA: ice1724 - Allow card info based on model only
- When two different cards share the same PCI vendor/subvendor
- identification, allow card info based on model only.
- Do not require subvendor ID.
- - ALSA: ice1724 - Create capture pcm only for ADC-enabled configurations
- Add the capture pcm only if there is at least one ADC configured in
- the SYSCONF register.
- - ALSA: ice1724 - External clock item only for cards with SPDIF_IN
- Append the external clock item to the clock list only if
- the SPDIF_IN capability is defined in the SPDIF register.
- - ALSA: ice1724 - Check for ac97 to avoid kernel oops
- Cards with identical PCI ids but no AC97 config in EEPROM do not have
- the ac97 field initialized. We must check for this case to avoid kernel oops.
ISA DMA
- - sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed
- These aren't modules, but they do make use of these macros, so
- they will need export.h to get that definition. Previously,
- they got it via the implicit module.h inclusion.
Intel8x0 driver
- - Refresh pci/intel8x0.patch
- For changes in the upstream commit 7fb4f392bd27e5b0e2444430d241370837bcc8fa
- ALSA: intel8x0: improve virtual environment detection
- - Regenerate patches to fix fuzz for 3.2-rc1 changes
- - Fix build of intel8x0 with older kernels
- Just add a check of X86_FEATURE_HYPERVISOR (added since 2.6.29)
- - module_param: avoid bool abuse, add bint for special cases.
- For historical reasons, we allow module_param(bool) to take an int (or
- an unsigned int). That's going away.
- A few drivers really want an int: they set it to -1 and a parameter
- will set it to 0 or 1. This sucks: reading them from sysfs will give
- 'Y' for both -1 and 1, but if we change it to an int, then the users
- might be broken (if they did "param" instead of "param=1").
- Use a new 'bint' parser for them.
- (ntfs has a different problem: it needs an int for debug_msgs because
- it's also exposed via sysctl.)
- - ALSA: intel8x0: improve virtual environment detection
- Detection code improved by PCI SSID usage. VM optimization
- now enabled only for known devcices (skip host devices forwarded
- to VM by VT-d or same kind of technology).
- For debug/troubleshooting purposes optimization can be
- forced (on/off) by module parameter: "inside_vm" (boolean).
- Known devices (PCI SSID):
- 1af4:1100: Reserved for KVM devices. Note this is not yet
- implemented for KVM's ICH/AC'97 emulation.
- 1ab8:xxxx: Parallels ICH/AC'97 emulated sound.
- [ fixed a minor coding-style issue by tiwai]
- - ALSA: intel8x0: move virtual environment detection code into one place
- This is refactoring patch: preparation for add improved detection code.
- Now all detection code placed in one place.
- - ALSA: intel8x0: Improve comments for VM optimization
- The recently merged 228cf79376f1 looks a bit hackish while it is not.
- The change was quite simple. In a virtualized environment the
- patch unhacks old kludge introduced for old broken AC97 hardware.
- This patch adds proper comment to "unkludge" code.
- - ALSA: intel8x0 - Fix inclusion of kvm_para.h
- <linux/kvm_para.h> should be included instead of <asm/...>
- - ALSA: intel8x0: Improve performance in virtual environment
- v3: detection code is x86 and KVM specific, hide it under ifdef
- v2: add detection for virtual environments (KVM and Parallels)
- This patch is intended to improve performance in virtualized environments
- like Parallels Desktop or KVM/VirtualBox/QEMU (virtual ICH/AC97 audio).
- I/O access is very time-expensive operation in virtual world: VCPU
- can be rescheduled and in the worst case we get more than 10ms delay on
- each I/O access.
- In the virtual environment loop exit rule
- (old_civ == current_civ && old_picb == current_picb) is never satisfied,
- because old_picb is never the same as current_picb due to delay inspired
- by reading current_civ. As a result loop ended by timeout and we get 10x
- more I/O operations.
- Experimental data from Prallels Desktop 7, RHEL6 guest (I/O ops per
- second):
- Original code:
- In Port Counter Callback
- f014 41550 fffff00000179d00 ac97_bm_read_civ+0x000
- f018 41387 fffff0000017a580 ac97_bm_read_picb+0x000
- With patch:
- In Port Counter Callback
- f014 4090 fffff00000179d00 ac97_bm_read_civ+0x000
- f018 1964 fffff0000017a580 ac97_bm_read_picb+0x000
- - ALSA: intel8x0: Apply headphones+mute LED quirk for Dell Inspiron 9300
- BugLink: https://bugs.launchpad.net/bugs/774895
- The original reporter states that his volume keys do not change the
- desired Master and PCM mixer elements together, so apply the hp+mute led
- quirk for his PCI SSID.
- Reported-by: Jeffrey Finkelstein
Intel8x0-modem driver
- - ALSA: intel8x0m: enable AMD8111 modem
- AMD 8111 southbridges contain a controller for MC'97 modem. Enable support
- for this controller in intel8x0m driver.
- - ALSA: intel8x0m: append 'm' to "r_intel8x0"
- Appending an 'm' will distinguish it from a similar struct in intel8x0.c
- - ALSA: intel8x0m: add 'm' as "suffix" to static functions
- Adding an 'm' will distinguish them from identical names in intel8x0.c.
- - ALSA: intel8x0m: wait a bit before warm reset check
- At every resume a laptop I use prints this message (at KERN_ERR level):
- ALSA sound/pci/intel8x0m.c:904: AC'97 warm reset still in progress? [0x2]
- The thing to note here is that 0x2 corresponds to ICH_AC97COLD. Ie, what
- seems to be happening is that the register involved indicated a warm
- reset for some time (as the ICH_AC97WARM bit was set) but by the time
- the warning is printed, and that same register is checked again, that
- bit is already cleared and only the ICH_AC97COLD bit is still set.
- It turns out a warm reset needs some time to settle, but it is currently
- checked right away. The test therefore fails the first time it is done
- and schedule_timeout_uninterruptible() will be called. Once we return
- from that jiffies is already (far) past end_time on this laptop, so we
- exit the loop, print a warning, and exit the function while the warm
- reset actually succeeded.
- A way to fix this is to call usleep_range() after writing to the
- register involved. A handful of tests suggest 500 usecs is a safe value.
- (This might punish the "finish cold reset" case, but on this laptop such
- a cold reset apparently never happens, so I can't say for sure.)
- While we're at it drop the extra single tick from end_time, as it looks
- rather silly.
LX6464ES
- - ALSA: lx6464es - fix device communication via command bus
- commit 6175ddf06b6172046a329e3abfd9c901a43efd2e optimized the mem*io
- functions that have been used to send commands to the device. these
- optimizations somehow corrupted the communication with the lx6464es,
- that resulted the device to be unusable with kernels after 2.6.33.
- this patch emulates the memcpy_*_io functions via a loop to avoid these
- problems.
- LKML-Reference: <4ECB5257.4040600@ladisch.de>
- - ALSA: lx6464es - command buffer API cleanup
- the command buffer is only accessed from one file, so we can declare the
- specific functions as static in that file
- - atomic: use <linux/atomic.h>
- This allows us to move duplicated code in <asm/atomic.h>
- (atomic_inc_not_zero() for now) to <linux/atomic.h>
- Reviewed-by: Eric Dumazet <eric.dumazet@gmail.com>
- - ALSA: lx6464es - include mac address in device name
- each device has a unique mac address, which can be used to distinguish
- multiple devices in the same machine. we therefore include the full mac
- address in the device shortname and the last 6 bytes in the device id.
MIPS
- - MIPS: Alchemy: remove all CONFIG_SOC_AU1??? defines
- Now that no driver any longer depends on the CONFIG_SOC_AU1??? symbols,
- it's time to get rid of them: Move some of the platform devices to the
- boards which can use them, Rename a few (unused) constants in the header,
- Replace them with MIPS_ALCHEMY in the various Kconfig files. Finally
- delete them altogether from the Alchemy Kconfig file.
- To: Linux-MIPS <linux-mips@linux-mips.org>
- Patchwork: https://patchwork.linux-mips.org/patch/2707/
- - ALSA: deprecate MIPS AU1X00 AC97 driver
- Now that an ASoC variant is available, tell users that this
- driver is now living on borrowed time...
MIPS SGI A2 Audio System
- - ALSA: Convert mips directory to module_platform_driver
- Factor out some boilerplate code.
MPU401 UART
- - Refreshed patches
- Mainly for bool modparm changes.
- - Refresh mpu401.patch for irq_flags removal
- - ALSA: module_param: make bool parameters really bool
- module_param(bool) used to counter-intuitively take an int. In
- fddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy
- trick.
- It's time to remove the int/unsigned int option. For this version
- it'll simply give a warning, but it'll break next kernel version.
- - sound: irq: Remove IRQF_DISABLED
- Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
- We run all interrupt handlers with interrupts disabled
- and we even check and yell when an interrupt handler
- returns with interrupts enabled (see commit [b738a50a:
- genirq: Warn when handler enables interrupts]).
- So now this flag is a NOOP and can be removed.
- - ALSA: mpu401: clean up interrupt specification
- The semantics of snd_mpu401_uart_new()'s interrupt parameters are
- somewhat counterintuitive: To prevent the function from allocating its
- own interrupt, either the irq number must be invalid, or the irq_flags
- parameter must be zero. At the same time, the irq parameter being
- invalid specifies that the mpu401 code has to work without an interrupt
- allocated by the caller. This implies that, if there is an interrupt
- and it is allocated by the caller, the irq parameter must be set to
- a valid-looking number which then isn't actually used.
- With the removal of IRQF_DISABLED, zero becomes a valid irq_flags value,
- which forces us to handle the parameters differently.
- This patch introduces a new flag MPU401_INFO_IRQ_HOOK for when the
- device interrupt is handled by the caller, and makes the allocation of
- the interrupt to depend only on the irq parameter. As suggested by
- Takashi, the irq_flags parameter was dropped because, when used, it had
- the constant value IRQF_DISABLED.
MSND driver
- - snd_msnd ->mode is fmode_t, not mode_t
- we put FMODE_... in there
Maestro3 driver
- - ALSA: es1968,maestro3 - Use work for hw-volume control
- Instead of tasklet, use workq for handling the hw-volume control.
- This reduces lots of spinlocks.
Memalloc module
- - treewide: Correct spelling of successfully in comments
- - ALSA: core: sparse cleanups
- Change the core code where sparse complains. In most cases, this means
- just adding annotations to confirm that we indeed want to do the dirty
- things we're doing.
OPL3
- - ALSA: module_param: make bool parameters really bool
- module_param(bool) used to counter-intuitively take an int. In
- fddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy
- trick.
- It's time to remove the int/unsigned int option. For this version
- it'll simply give a warning, but it'll break next kernel version.
OSS device core
- - switch device_get_devnode() and ->devnode() to umode_t *
- both callers of device_get_devnode() are only interested in lower 16bits
- and nobody tries to return anything wider than 16bit anyway.
- - sound: Use sound_register_*() for additional OSS minor devices
- Since OSS driver creates the device entries for /dev/audio* and
- /dev/dspW* by itself without coping with sound_core, it leads to
- conflicts with others and let sysfs spewing warnings.
- This patch rewrites the registration part of OSS driver to use
- the standard method also for additional minor devices.
- Reported-by: Steven Rostedt <rostedt@goodmis.org> (with ktest.pl)
- Tested-by: Steven Rostedt <rostedt@goodmis.org> (with ktest.pl)
OSS firmware core
- - sound: read i_size with i_size_read()
- Convert direct read of inode->i_size to using i_size_read().
- i_size_read is guaranteed to return a valid value and
- its caller does not need to use addtional locking.
PCI drivers
- - Avoid patching for pci/ad1889 driver
- It's just missing pci-ids, so let's define them in pci_ids_compat.h.
- - ALSA: Fix dependency of CONFIG_SND_TEA575X
- CONFIG_SND_TEA575X is enabled by RADIO_SF16FMR2, but the latter one is
- no PCI device. Since tea575x-tuner itself is independent from the board
- bus type, the config should be moved out of SND_PCI dependency.
- Reported-by: Randy Dunlap <rdunlap@xenotime.net>
- - [media] radio-sf16fmr2: convert to generic TEA575x interface
- Convert radio-sf16fmr2 to use generic TEA575x implementation. Most of the
- driver code goes away as SF16-FMR2 is basically just a TEA5757 tuner
- connected to ISA bus.
- The card can optionally be equipped with PT2254A volume control (equivalent
- of TC9154AP) - the volume setting is completely reworked (with balance control
- added) and tested.
- - ALSA: fm801: clean-up radio-related Kconfig
- Remove TEA575X_RADIO define from fm801.c.
- Also update Kconfig help text to include all supported cards.
- - ALSA: Add the driver for Digigram Lola PCI-e boards
- Added a new driver for supporting Digigram Lola PCI-e boards.
- Lola has a similar h/w design like HD-audio but with extended verbs.
- Thus the driver is written similarly like HD-audio driver in the bus
- part. The codec part is rather written in a fixed way specific to the
- Lola board because of the verb incompatibility.
- The driver provides basic PCM, supporting multi-streams and mixing.
- - ALSA: es1968: add radio (tea575x tuner) support
- Add TEA5757 radio tuner support to es1968 driver. This is found at least on
- MediaForte SF64-PCE2 sound cards.
- - ALSA: azt3328: add custom AC97 semi-emulation use standard ALSA AC97 layer
- Make use of the very flexible ALSA ac97 layer (hooks for custom I/O!)
- on this weird AC97 copycat hardware,
- via semi-extended I/O translation/emulation.
- Some 5kB binary/loaded size saved (well... additional huge AC97 module
- penalty not factored in, of course ;-P).
- Given that the driver previously had 20kB that's not bad,
- but the much more important thing is to have AC97 layer stress-tested
- with a thoroughly weird AC97 copycat (or, simply put, if it were not for
- this AC97 test aspect, this effort would merely have been a nut job ;).
PDAudioCF driver
- - ALSA: pcmcia - Use pcmcia_request_irq()
- The drivers don't require the exclusive irqs. Let's fix the deprecated
- warnings.
- - pcmcia: Make struct pcmcia_device_id const, sound drivers edition
- Make declarations of struct pcmcia_device_id const.
- - ALSA: use linux/io.h to fix compile warnings
- For helping to reduce Greert's regression list...
- src/sound/drivers/mtpav.c: error: implicit declaration of function 'inb'
- src/sound/drivers/mtpav.c: error: implicit declaration of function 'outb'
- ...
PPC Keywest driver
- - ALSA: keywest: Remove obsolete cleanup for clientdata
- The i2c core will clear the clientdata pointer automatically.
- We don't have to set the `data' field to NULL in remove() or
- if probe() failed anymore.
- Reviewed-by: Wolfram Sang <w.sang@pengutronix.de>
PPC PMAC driver
- - ALSA: powermac - Allow input from microphone on Tumbler
- Allow input from microphone on remaining PowerBooks and iBooks with Tumbler.
- Tested only with PowerBook G4 Gigabit Ethernet (PowerBook3,3).
- [Fixed to use of_machine_is_compatible by tiwai]
PPC PS3 driver
- - powerpc/ps3: Fix lv1_gpu_attribute hcall
- The lv1_gpu_attribute hcall takes three, not five input
- arguments. Adjust the lv1 hcall table and all calls.
PPC Tumbler driver
- - ALSA: powermac - Correct lineout detection on PowerMac G4 DA
- Correct lineout (Pro Speaker) detection on PowerMac G4 Digital Audio (Tumbler).
RME HDSP driver
- - ALSA: hdsp - Fix potential Oops in snd_hdsp_info_pref_sync_ref()
- Dan Carpenter reported that setting 0 to uinfo->value.enumerated.items
- in snd_hdsp_info_pref_sync_ref() may lead to Oops. This function should
- return an error immediately in such a case instead.
- - ALSA: hdsp - Correct HDSP_VERSION_BIT constant, thus partly fixing RPM detection
- HDSP_VERSION_BIT has to be ORed with HDSP_S_LOAD. This fixes the detection
- of at least some RME RPM boxes.
RME9652 driver
- - ALSA: hdspm - Provide unique driver id based on card serial
- Before, /proc/asound looked like this:
- 2 [Default ]: HDSPM - RME RayDAT_f1cd85
- RME RayDAT S/N 0xf1cd85 at 0xf7300000, irq 18
- In case of a second HDSPM card, its name would be Default_1. This is
- cumbersome, because the order of the cards isn't stable across reboots.
- To help userspace tools referring to the correct card, this commit
- provides a unique id for each card:
- 2 [HDSPMxf1cd85 ]: HDSPM - RME RayDAT_f1cd85
- RME RayDAT S/N 0xf1cd85 at 0xf7300000, irq 18
- In this example, userspace (configuration files) would then use
- hw:HDSPMxf1cd85 to choose the right card.
- The serial is masked to 24bits, so this string is always shorter than
- sixteen chars.
- - ALSA: hdspm - Refactor serial number to avoid code duplication
- The serial number is used multiple times in hdspm.c. Since it belongs
- to the card, let's store it in struct hdspm and refer to it whenever
- necessary.
- - ALSA: hdspm - Fix PCI ID for PCIe RME MADI cards
- Commit c09403dcc5698abf214329fbbf3cf8dbb5558bea has introduced a
- regression: PCIe versions of RME MADI were no longer detected, because
- the MADIface ID (0xd5) was used instead of the correct 0xd2.
- This commit fixes the problem.
- - ALSA: hdspm - Enable all firmware ranges for PCI MADI/AES cards
- From the Windows INF file, we know the firmware ranges for all RME
- cards. For PCIe, a single revision ID per device (RayDAT, MADI, AIO,
- AES) is used. Contrary, the older PCI versions use ranges, that is,
- one revision ID per firmware version.
- Instead of listing all possible revisions individually, match the range.
- This commit enables all MADI and AES PCI versions ever shipped.
- - ALSA: hdspm - Fix MADI channel format in the status ioctl
- SNDRV_HDSPM_IOCTL_GET_STATUS is supposed to query the current card
- status, so we have to return what we receive on the MADI wire (RX), not
- what we transmit (TX) to others. The latter is a config item to be
- queried via SNDRV_HDSPM_IOCTL_GET_CONFIG.
- - ALSA: hdspm - cleanup __user tags in ioctl()
- This makes the code cleaner and silences a Sparse complaint:
- sound/pci/rme9652/hdspm.c:6341:23: warning: incorrect type in assignment (incompatible argument 4 (different address spaces))
- sound/pci/rme9652/hdspm.c:6341:23: expected int ( *ioctl )( ... )
- sound/pci/rme9652/hdspm.c:6341:23: got int ( static [toplevel] *<noident> )( ... )
- sound/pci/rme9652/hdspm.c:6102:44: warning: dereference of noderef expression
- sound/pci/rme9652/hdspm.c:6225:50: warning: dereference of noderef expression
- sound/pci/rme9652/hdspm.c:6264:50: warning: dereference of noderef expression
- sound/pci/rme9652/hdspm.c:6283:50: warning: dereference of noderef expression
- sound/pci/rme9652/hdspm.c:6289:59: warning: dereference of noderef expression
- - ALSA: hdspm - potential info leak in snd_hdspm_hwdep_ioctl()
- Smatch has a new check for Rosenberg type information leaks where
- structs are copied to the user with uninitialized stack data in them.
- The status struct has a hole in it, and on some paths not all the
- members were initialized.
- struct hdspm_status {
- unsigned char card_type; /* 0 1 */
- /* XXX 3 bytes hole, try to pack */
- enum hdspm_syncsource autosync_source; /* 4 4 */
- long long unsigned int card_clock; /* 8 8 */
- The hdspm_version struct had holes in it as well.
- struct hdspm_version {
- unsigned char card_type; /* 0 1 */
- char cardname[20]; /* 1 20 */
- /* XXX 3 bytes hole, try to pack */
- unsigned int serial; /* 24 4 */
- short unsigned int firmware_rev; /* 28 2 */
- /* XXX 2 bytes hole, try to pack */
- int addons; /* 32 4 */
- - ALSA: hdspm - Simplify with snd_pcm_hw_constraint_pow2()
- Refactoring the code using snd_pcm_hw_constraint_pow2() helper function.
- Tested-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
- - ALSA: hdspm - Add missing KNOT flag for AES32 rate restriction
- AES32 supports the non-standard 128kHZ, and this is enabled only when
- SNDRV_PCM_RATE_KNOT is set in hw.rates field.
- Tested-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
- - ALSA: hdspm - Correct max buffer size limit
- Some modesl can support up to 8192 frames per period.
- Tested-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
- - ALSA: hdspm - Enable 32 samples/period on RME RayDAT/AIO
- Newer RME cards like RayDAT and AIO support 32 samples per period. This
- value is encoded as {1,1,1} in the HDSP_LatencyMask bits in the control
- register.
- Since {1,1,1} is also the representation for 8192 samples/period on
- older RME cards, we have to special case 32 samples and 32768 bytes
- according to the actual card.
- - ALSA: hdspm - Introduce hdspm_get_latency() to harmonize latency calculation
- Currently, hdspm_decode_latency is called several times, violating the
- DRY principle. Given that we need to distinguish between old and new
- cards when decoding the latency bits in the control register, introduce
- hdspm_get_latency() to provide the required functionality.
- - ALSA: hdspm - Reorder period sizes according to their bit representation
- On newer RME cards like RayDAT and AIO, the 8192 samples per period size
- are no longer supported. Instead, setting all three bits of
- HDSP_LatencyMask to one ({1,1,1}) now corresponds to 32 samples per
- period.
- To make this more obvious to future developers, let's reorder the array
- according to their bit representation, starting at 64 ({0,0,0}) up to
- 4096 ({1,1,0}) and finally 32 ({1,1,1}).
- Note that this patch doesn't change semantics.
- - ALSA: hdspm - Set period_bytes_min to 32 * 4 for new RME cards
- On newer RME cards like RayDAT and AIO, the lower bound is 32 samples
- per period in contrast to 64 samples as seen on older cards.
- We hence lower period_bytes_min to 32 * 4. Four bytes per sample.
- - ALSA: hdspm - Allow for 8192 period size on RME MADI and AES cards
- Older RME cards like MADI and AES support period sizes of 8192 samples.
- The original hdspm driver already featured this value, apparently, it
- was lost during the rewrite.
- - ALSA: hdspm - Fix uninitialized compile warnings
- Put the exception checks for io_type switch() for possible mistakes in
- future. Also this shuts up annoying compile warnings.
- - ALSA: hdspm - Add firmware revision 0xcc for RME MADI
- Apparently, there are multiple old firmware revisions in the wild for
- the PCI RME MADI cards. Just add them to the list of supported devices
- and treat them like their modern counterparts.
- - ALSA: hdspm - Fix reported external sample rate on RME MADI and MADIface
- In slave mode, the card can only detect the base frequency (32..48kHz)
- on the MADI link (exception: 96k frames), so the real external sample
- rate is this base frequency multiplied by 1, 2 or 4 depending on the
- speed mode.
- This patch enables 64..192kHz sample rates in clock slave mode, which
- failed before due to an alleged sample rate mismatch between the MADI
- link (e.g., 48kHz) and the application in DS/QS mode (e.g., 96kHz,
- 192kHz).
- - ALSA: hdspm - Provide MADI speed mode selector on RME MADI and MADIface
- When running in slave mode (no clock master), there is no way to
- determine the real wirespeed on the MADI link (single/double/quad
- speed). Like physical gear, simply provide the user with a tristate
- switch to select the appropriate format.
- - ALSA: hdspm - Fix compile warnings with PPC
- The char can be unsigned on some architectures. Since the code checks
- the negative values, they should be declared as signed char explicitly.
- sound/pci/rme9652/hdspm.c:5449: warning: comparison is always false due to limited range of data type
- sound/pci/rme9652/hdspm.c:5462: warning: comparison is always false due to limited range of data type
- - ALSA: hdspm - Add firmware revision ID for RME MADI PCI version
- The PCI version of the RME HDSP MADI card uses 0xcf as revision ID. Just
- add this to the list of supported cards.
- - ALSA: hdspm - Fix jumping external wordclock frequency in AutoSync mode
- When using Word Clock on RME MADI cards, AutoSync mode was alternating
- betweeen MADI and WC due to a typo: AutoSync is indicated in the second
- status register (status2), not the first one (status).
- While the proc output was always correct, the reported WC frequency to
- ALSA was unstable as mentioned in
- http://mailman.alsa-project.org/pipermail/alsa-devel/2008-March/006723.html
- - ALSA: hdspm - Fix locking in snd_hdspm_midi_input_read
- For the MIDI part, we need to acquire (and release) the hmidi->lock,
- access to the global hdspm structure is serialized through
- hmidi->hdspm->lock instead.
- - ALSA: hdspm - Add firmware ID for older AES32 cards.
- The current AES32 firmware revision ID is 234, however, a user confirmed
- that everything works fine with the previous revision, too.
- - ALSA: hdspm - Fix midi port initialization
- Depending on the model and the presence of a TCO module, the number of
- midi ports varies. Some have 1 port (MADIface), some have 2 (default),
- with TCO, there are 3.
- Don't hardcode the number of midi ports to initialize.
- This patch also fixes a boot lockup on MADIface.
- [Coding-style fixes by tiwai]
- - ALSA: hdspm - Abort on unknown firmware revision
- Don't continue if we cannot detect the real card type, otherwise, all
- subsequent functions, especially strcpy(), would fail, leaving the whole
- driver in an unusable state.
- Without such a protection, dmesg would look like this:
- Pid: 1525, comm: modprobe Not tainted 2.6.38-rc6 #1 MSI MS-7250/MS-7250
- EIP: 0060:[<c114e700>] EFLAGS: 00010296 CPU: 1
- EIP is at strcpy+0x10/0x30
- EAX: f4d33e58 EBX: f5990800 ECX: f4d33e58 EDX: 00000000
- ESI: 00000000 EDI: f4d33e58 EBP: f5990930 ESP: f3dd3e0c
- DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
- f53d4204 00000000 f90bfc03 00000001 00000001 f3dd3e64 c10fedff f3dd3e7c
- f3d854e4 f53d4000 c10307b8 00000001 c10307b8 f5990860 c10307b8 00000001
- c10332e5 f59908bc c12f4339 f59908bc f5990860 c11ef207 f4d33e00 f53d4000
- [<f90bfc03>] ? snd_hdspm_probe+0x7e7/0x1166 [snd_hdspm]
- [<c10fedff>] ? __sysfs_add_one+0x1f/0xf0
- [<c10307b8>] ? get_parent_ip+0x8/0x20
- [<c10307b8>] ? get_parent_ip+0x8/0x20
- [<c10307b8>] ? get_parent_ip+0x8/0x20
- [<c10332e5>] ? add_preempt_count+0xa5/0xd0
- [<c12f4339>] ? _raw_spin_lock_irqsave+0x19/0x40
- [<c11ef207>] ? pm_runtime_enable+0x17/0x80
- [<c1160172>] ? local_pci_probe+0x42/0xb0
- [<c1161091>] ? pci_device_probe+0x61/0x80
- [<c11e9587>] ? driver_probe_device+0x77/0x180
- [<c11600f0>] ? pci_match_device+0xa0/0xc0
- [<c11e9709>] ? __driver_attach+0x79/0x80
- [<c11e9690>] ? __driver_attach+0x0/0x80
- [<c11e8e32>] ? bus_for_each_dev+0x52/0x80
- [<c11e9416>] ? driver_attach+0x16/0x20
- [<c11e9690>] ? __driver_attach+0x0/0x80
- [<c11e8771>] ? bus_add_driver+0xa1/0x220
- [<c1160f20>] ? pci_device_remove+0x0/0xf0
- [<c11e99a3>] ? driver_register+0x63/0x120
- [<c11612bd>] ? __pci_register_driver+0x3d/0xb0
- [<c1001132>] ? do_one_initcall+0x32/0x160
- [<f90d6000>] ? alsa_card_hdspm_init+0x0/0x14 [snd_hdspm]
- [<c10676a9>] ? sys_init_module+0x99/0x1e0
- [<c10ade3d>] ? sys_close+0x6d/0xc0
- [<c1002c90>] ? sysenter_do_call+0x12/0x26
- ---[ end trace 239f0661c558378b ]---
- - ALSA: hdspm - Add updated firmware revision for AES32
- In contrast to the PCIe version (RME AES), the PCI version (RME AES32)
- has a different firmware revision.
- This patch adds the missing PCI revision.
- - ALSA: hdspm - AES32: Use define instead of hardcoded channel count
- - ALSA: hdspm - Fix lock/sync reporting on MADI and AES32
- - ALSA: hdspm - prevent reading unitialized stack memory
- Original patch by Dan Rosenberg <drosenberg@vsecurity.com> under commit
- e68d3b316ab7b02a074edc4f770e6a746390cb7d. I'm copying his text here:
- The SNDRV_HDSPM_IOCTL_GET_CONFIG_INFO ioctl in hdspm.c allow unprivileged
- users to read uninitialized kernel stack memory, because several fields
- of the hdspm_config struct declared on the stack are not altered
- or zeroed before being copied back to the user. This patch takes care
- of it.
- - ALSA: hdspm - fix sync check on AES32
- Fredrik Lingvall <fredrik.lingvall@gmail.com> has discovered wrong
- frequency and sync detection on AES32. According to him, the provided
- patch fixes these issues.
- - ALSA: hdspm - Remove input selector on MADIface
- In contrast to the RME MADI card, coax/optical selection on the MADIface
- is done via a physical switch located at the breakout box. Obviously,
- the driver cannot switch ports in software.
- - ALSA: hdspm - Fix DS/QS output channel mappings on RME MADI/MADIface
- Caused by two typos, no output channel mappings were assigned for
- MADI/MADIface at double/quad speed.
- The channel mapping is indeed identical to the single speed mapping, the
- cards will simply use the first N channels.
- - ALSA: hdspm - Restrict channel count on RME AES/AES32
- Without calling an appropriate rule, AES/AES32 cards would announce a
- theoretical channel count of 64 (HDSPM_MAX_CHANNELS), leading to the
- already known bug:
- [37422.640481] ------------[ cut here ]------------
- [37422.640487] WARNING: at sound/pci/rme9652/hdspm.c:5449
- snd_hdspm_ioctl+0x18f/0x202 [snd_hdspm]()
- [37422.640489] Hardware name: PRIMERGY RX100 S6
- [37422.640490] BUG? (info->channel >= hdspm->max_channels_in)
- [37422.640492] Modules linked in: snd_hdspm snd_seq_midi ipmi_watchdog
- ipmi_poweroff ipmi_si ipmi_devintf ipmi_msghandler i2c_i801 e1000e
- snd_rawmidi power_meter [last unloaded: snd_hdspm]
- [37422.640501] Pid: 22231, comm: jackd Tainted: G D W
- 2.6.36-gentoo-r5 #5
- [37422.640502] Call Trace:
- [37422.640508] [<ffffffff8103db3a>] warn_slowpath_common+0x80/0x98
- [37422.640511] [<ffffffff8103dbe6>] warn_slowpath_fmt+0x41/0x43
- [37422.640514] [<ffffffff81034306>] ? get_parent_ip+0x11/0x42
- [37422.640518] [<ffffffffa0055763>] snd_hdspm_ioctl+0x18f/0x202
- [snd_hdspm]
- [37422.640522] [<ffffffff813fd626>] snd_pcm_channel_info+0x73/0x7c
- [37422.640525] [<ffffffff814001e9>] snd_pcm_common_ioctl1+0x326/0xb01
- [37422.640527] [<ffffffff81034306>] ? get_parent_ip+0x11/0x42
- [37422.640531] [<ffffffff8105be6c>] ? __srcu_read_unlock+0x3b/0x59
- [37422.640533] [<ffffffff81400bce>] snd_pcm_capture_ioctl1+0x20a/0x227
- [37422.640537] [<ffffffff811e599c>] ? file_has_perm+0x90/0x9e
- [37422.640540] [<ffffffff81400c15>] snd_pcm_capture_ioctl+0x2a/0x2e
- [37422.640543] [<ffffffff810f2c69>] do_vfs_ioctl+0x404/0x453
- [37422.640546] [<ffffffff810f2d09>] sys_ioctl+0x51/0x74
- [37422.640549] [<ffffffff81002aab>] system_call_fastpath+0x16/0x1b
- [37422.640552] ---[ end trace 0cd919cd68118082 ]---
- We already have all the right values in place, we simply have to inform
- the upper layers about this restriction.
- Note that snd_hdspm_hw_rule_rate_out_channels and
- snd_hdspm_hw_rule_rate_in_channels must not be called on AES32, because
- the channel count is always 16, no matter of the samplerate in use.
- - ALSA: hdspm - Fix buffer handling on RME MADI/MADIface/AES(32)
- Only RayDAT and AIO provide sane buffer pointers that can be used with
- HDSPM_BufferPositionMask, on all other cards, this would result in a
- wrong HW pointer leading to xruns and these messages:
- [260808.916788] BUG: pcmC0D0p:0, pos = 2976, buffer size = 1024, period size = 512
- [260808.961124] BUG: pcmC0D0c:0, pos = 4944, buffer size = 1024, period size = 512
- - ALSA: hpdsm - RME AES(32): Fix missing channel mappings
- On RME AES and AES(32), none of the required information
- (max_channels_in, max_channels_out, channel mappings, port names) was
- set, leading to the BUG below.
- This patch adds the missing bits, thus fixing the bug.
- 125.058768] ------------[ cut here ]------------
- [ 125.058773] WARNING: at sound/pci/rme9652/hdspm.c:5389
- snd_hdspm_ioctl+0x10c/0x1d8 [snd_hdspm]()
- [ 125.058775] Hardware name: PRIMERGY RX100 S6
- [ 125.058777] BUG? (info->channel >= hdspm->max_channels_out)
- [ 125.058778] Modules linked in: ipmi_watchdog ipmi_poweroff ipmi_si
- ipmi_devintf ipmi_msghandler snd_hdspm power_meter e1000e snd_rawmidi
- i2c_i801
- [ 125.058787] Pid: 3652, comm: audacity Tainted: G W
- 2.6.36-gentoo-r5 #5
- [ 125.058788] Call Trace:
- [ 125.058792] [<ffffffff8103db3a>] warn_slowpath_common+0x80/0x98
- [ 125.058796] [<ffffffff8103dbe6>] warn_slowpath_fmt+0x41/0x43
- [ 125.058800] [<ffffffffa006761a>] snd_hdspm_ioctl+0x10c/0x1d8
- [snd_hdspm]
- [ 125.058803] [<ffffffff813fd626>] snd_pcm_channel_info+0x73/0x7c
- [ 125.058806] [<ffffffff814001e9>] snd_pcm_common_ioctl1+0x326/0xb01
- [ 125.058809] [<ffffffff810c604c>] ? __do_fault+0x361/0x3a6
- [ 125.058812] [<ffffffff81400e23>] snd_pcm_playback_ioctl1+0x20a/0x227
- [ 125.058815] [<ffffffff811e599c>] ? file_has_perm+0x90/0x9e
- [ 125.058818] [<ffffffff81400e6a>] snd_pcm_playback_ioctl+0x2a/0x2e
- [ 125.058821] [<ffffffff810f2c69>] do_vfs_ioctl+0x404/0x453
- [ 125.058824] [<ffffffff810f2d09>] sys_ioctl+0x51/0x74
- [ 125.058827] [<ffffffff81002aab>] system_call_fastpath+0x16/0x1b
- [ 125.058830] ---[ end trace 5bddb08e5d4cbeb1 ]---
RTC timer driver
- - ALSA: rtctimer.c needs module.h
- rtctimer.c uses interfaces from linux/module.h, so it should
- include that file. This fixes build errors.
SB16/AWE driver
- - ALSA: sb16 - Fix build errors on MIPS and others with 13bit ioctl size
- One of ioctl definition in sound/sb16_csp.h contains the data size
- over 8kB, and this causes build errors on architectures like MIPS,
- which define _IOC_SIZEBITS=13.
- For avoiding this build errors but keeping the compatibility, manually
- expand with _IOC() instead of using _IOW() for the problematic ioctl.
SGI O2 Audio
- - ALSA: Convert mips directory to module_platform_driver
- Factor out some boilerplate code.
SIS7019 driver
- - ALSA: sis7019 - convert to dev_*() logging
- - ALSA: sis7019 - give slow codecs more time to reset
- There are some AC97 codec and board combinations that have been observed
- to take a very long time to respond after the cold reset has completed.
- In one case, more than 350 ms was required. To allow users to have sound
- on those platforms, we'll wait up to 500ms for the codec to become
- ready.
- As a board may have multiple codecs, with some faster than others to
- reset, we add a module parameter to inform the driver which codecs
- should be present.
- Reported-by: KotCzarny <tjosko@yahoo.com>
SPARC AMD7930 driver
- - dt/sound: Eliminate users of of_platform_{,un}register_driver
- Get rid of users of of_platform_driver in drivers/sound. The
- of_platform_{,un}register_driver functions are going away, so the
- users need to be converted to using the platform_bus_type directly.
SPARC DBRI driver
- - atomic: use <linux/atomic.h>
- This allows us to move duplicated code in <asm/atomic.h>
- (atomic_inc_not_zero() for now) to <linux/atomic.h>
- Reviewed-by: Eric Dumazet <eric.dumazet@gmail.com>
SPARC cs4231 driver
- - dt/sound: Eliminate users of of_platform_{,un}register_driver
- Get rid of users of of_platform_driver in drivers/sound. The
- of_platform_{,un}register_driver functions are going away, so the
- users need to be converted to using the platform_bus_type directly.
Serial BUS drivers
- - Drop the check of video_get_drvdata()
- It's always present in V4L2.
- Also fix the build error with tea575x.
- - Fix build of tea575x-tuner with 2.6.27-2.6.29 kernels
- - Drop V4L1 support from tea575x-tuner
- It was already broken, so safer to drop now.
- Also made patches for building with older kernels.
- - Fix build of tea575-tuner with older kernels
- Copy the old code into alsa-driver tree; too intrusive changes for V4L
- - ALSA: es1968: add radio (tea575x tuner) support
- Add TEA5757 radio tuner support to es1968 driver. This is found at least on
- MediaForte SF64-PCE2 sound cards.
SoC Audio for Freecale i.MX1x i.MX2x CPUs
SoC Audio for TXx9
SoC Audio for the Atmel AT32/AT91 System-on-Chip
SoC Audio for the Samsung chips
SoC Blackfin
SoC Codec 88PM860x
SoC Codec AC97
SoC Codec AD1836
SoC Codec AD1938
SoC Codec AD193X
SoC Codec AD1980
SoC Codec AD73311
SoC Codec ADAU1373
SoC Codec ADAU1701
SoC Codec ADAV80x
SoC Codec AK4104
SoC Codec AK4535
SoC Codec AK4641
SoC Codec AK4642
SoC Codec AK4671
SoC Codec CQ0093 Voice
SoC Codec CS4270
SoC Codec CS42L51
SoC Codec CS42L73
SoC Codec CX20442
SoC Codec Cirrus Logic CS4271
SoC Codec DA7210
SoC Codec DFBM-CS320 bluethooth
SoC Codec DIT SPDI/F
SoC Codec Freescale SGTL5000
SoC Codec General Digital MICs
SoC Codec Ingenic JZ4740
SoC Codec LM4857
SoC Codec MAX98088
SoC Codec MAX98095
SoC Codec MAX9850
SoC Codec MAX9877
SoC Codec Philips UDA134x
SoC Codec Philips UDA1380
SoC Codec RT5631
SoC Codec SSM2602
SoC Codec STA32X
SoC Codec STAC9766
SoC Codec SigmaDSP Firmare Loader
SoC Codec TI sn95031
SoC Codec TLV320AIC23
SoC Codec TLV320AIC26
SoC Codec TLV320AIC3X
SoC Codec TLV320DAC33
SoC Codec TPA6130A2
SoC Codec TWL4030
SoC Codec TWL6040
SoC Codec WL1273
SoC Codec WM1250-EV1
SoC Codec WM2000
SoC Codec WM5100
SoC Codec WM8350
SoC Codec WM8400
SoC Codec WM8510
SoC Codec WM8523
SoC Codec WM8580
SoC Codec WM8711
SoC Codec WM8727
SoC Codec WM8728
SoC Codec WM8731
SoC Codec WM8737
SoC Codec WM8741
SoC Codec WM8750
SoC Codec WM8753
SoC Codec WM8770
SoC Codec WM8776
SoC Codec WM8782
SoC Codec WM8804
SoC Codec WM8900
SoC Codec WM8903
SoC Codec WM8904
SoC Codec WM8915
SoC Codec WM8940
SoC Codec WM8958
SoC Codec WM8960
SoC Codec WM8961
SoC Codec WM8962
SoC Codec WM8971
SoC Codec WM8974
SoC Codec WM8978
SoC Codec WM8983
SoC Codec WM8985
SoC Codec WM8988
SoC Codec WM8990
SoC Codec WM8991
SoC Codec WM8993/4
SoC Codec WM8994
SoC Codec WM8995
SoC Codec WM8996
SoC Codec WM9081
SoC Codec WM9090
SoC Codec WM9705
SoC Codec WM9712
SoC Codec WM9713
SoC Codec ads1174/8
SoC Codec alc5621/2/3
SoC Codec alc5632
SoC Codec tlv320aic32x4
SoC DaVinci
SoC Dynamic Audio Power Management
SoC EP93XX
SoC FSI SH7724
SoC Freescale
SoC Ingenic JZ4740
SoC Intel Medfield MID platform
SoC Layer
SoC MXS
SoC Marvell Kirkwood
SoC NVIDIA Tegra
SoC Nuvoton NUC900
SoC PXA2xx 88PM860x Tavor EVB3
SoC PXA2xx Aeronix Zipit Z2
SoC PXA2xx Corgi
SoC PXA2xx E740
SoC PXA2xx E750
SoC PXA2xx E800/WM9712
SoC PXA2xx MIOA701
SoC PXA2xx Poodle
SoC PXA2xx Spitz
SoC PXA2xx Tosa
SoC PXA2xx Zylonite
SoC PXA2xx saarb
SoC S6000
SoC SH7760 AC97
SoC Texas Instruments OMAP
Soc Codec STA32X
Soc PXA2xx Imote 2
Soc PXA2xx Magician
Soc PXA2xx Raumfeld
Soc iPAQ hx4700
SoundFont
- - treewide: fix potentially dangerous trailing ';' in #defined values/expressions
- All these are instances of
- #define NAME value;
- or
- #define NAME(params_opt) value;
- These of course fail to build when used in contexts like
- if(foo $OP NAME)
- while(bar $OP NAME)
- and may silently generate the wrong code in contexts such as
- foo = NAME + 1; /* foo = value; + 1; */
- bar = NAME - 1; /* bar = value; - 1; */
- baz = NAME & quux; /* baz = value; & quux; */
- Reported on comp.lang.c,
- Message-ID: <ab0d55fe-25e5-482b-811e-c475aa6065c3@c29g2000yqd.googlegroups.com>
- Initial analysis of the dangers provided by Keith Thompson in that thread.
- There are many more instances of more complicated macros having unnecessary
- trailing semicolons, but this pile seems to be all of the cases of simple
- values suffering from the problem. (Thus things that are likely to be found
- in one of the contexts above, more complicated ones aren't.)
SuperH DAC audio driver
- - ALSA: convert sound/* to use module_platform_driver()
- This patch converts the drivers in sound/* to use the
- module_platform_driver() macro which makes the code smaller and a bit
- simpler.
TEA575x tuner
- - Drop V4L1 support from tea575x-tuner
- It was already broken, so safer to drop now.
- Also made patches for building with older kernels.
- - Fix build of tea575-tuner with older kernels
- Copy the old code into alsa-driver tree; too intrusive changes for V4L
- - [media] tea575x: remove useless input ioctls
- Remove empty and useless g_input and s_input ioctls.
- This fixes one fail of v4l2-compliance test.
- - [media] tea575x: allow multiple opens
- Change locking to allow tea575x-radio device to be opened multiple times.
- - [media] tea575x: convert to control framework
- Convert tea575x-tuner to use the new V4L2 control framework. Also add
- ext_init() callback that can be used by a card driver for additional
- initialization right before registering the video device (for SF16-FMR2).
- Also embed struct video_device to struct snd_tea575x to simplify the code.
- - ALSA: tea575x: use better card and bus names
- Provide real card and bus_info instead of hardcoded values.
- - ALSA: tea575x: remove unused card from struct
- struct snd_card *card is present in struct snd_tea575x but never used.
- Remove it.
- - ALSA: tea575x: remove freq_fixup from struct
- freq_fixup is a constant, no need to hold it in struct snd_tea575x and set in
- each driver.
- - ALSA: tea575x: unify read/write functions
- Implement generic read/write functions to access TEA575x tuners. They're now
- implemented 4 times (once in es1968 and 3 times in fm801).
- This also allows mute to work on all cards.
- Also improve tuner detection/initialization.
- - ALSA: tea575x-tuner: remove dev_nr
- Remove unused dev_nr from struct tea575x_tuner.
- - ALSA: tea575x-tuner: various improvements
- Improve tea575x-tuner with various good things from radio-maestro:
- - extend frequency range to 50-150MHz
- - fix querycap(): card name, CAP_RADIO
- - improve g_tuner(): CAP_STEREO, stereo and tuned indication
- - improve g_frequency(): tuner index checking and reading frequency from HW
- - improve s_frequency(): tuner index and type checking
USB
- - Update usb/endpoint.patch and usb/stream.patch
- For upstream commit ca7051d40da5e86e3c249b5a41ac82bb1016c044
- - ALSA: snd-usb-caiaq: Add support for Maschine
- This adds partial support for the Maschine controller by Native Instruments.
- Supported now are the 1x1 MIDI interface and the 41 buttons, 11 endless
- rotary encoders, and 16 pressure-sensitive drum pads. Still to work on are the
- dimmable LEDs and the two monochrome screens.
- - ALSA: snd-usb: move code from urb.c to endpoint.c
- No code altered at this point, simply preparing for upcoming
- refactorizations.
- - ALSA: snd-usb: re-order code
- Move code from endpoint.c into a new file called stream.c and rename
- functions so that their names actually reflect what they're doing.
- This way, endpoint.c will be available to functions that hold all the
- endpoint logic.
- - ALSA: snd-usb: re-order the Makefile
- Sort its entries in alphabetical order.
- - ALSA: 6fire: use the kernel's built-in bit reverse table
- - ALSA: 6fire - Update kernel configuration
- Kernel configuration updated:
- - experimental dependency removed
- - description updated
- - ALSA: snd-usb-caiaq: Add support for Traktor Audio 2
USB Edirol UA101 driver
- - USB: convert sound/* to use module_usb_driver()
- This converts the drivers in sound/* to use the
- module_usb_driver() macro which makes the code smaller and a bit
- simpler.
- Added bonus is that it removes some unneeded kernel log messages about
- drivers loading and/or unloading.
- - ALSA: ua101: fix crash when unplugging
- If the device is unplugged while running, it is possible for a PCM
- device to be closed after the disconnect callback has returned. This
- means that kill_stream_urb() and disable_iso_interface() would try to
- access already-invalid or freed USB data structures.
- The function free_usb_related_resources() was intended to prevent this,
- but forgot to clear the affected variables.
- Reported-and-tested-by: Olivier Courtay <olivier@courtay.org>
- - ALSA: firewire-speakers, oxygen, ua101: allow > 10 s periods
- Since commit f2b3614cefb6 (Don't check DMA time-out too shortly),
- drivers need no longer restrict their PCM period length to be shorter
- than 10 seconds.
USB TerraTec DMX 6Fire
- - USB: convert sound/* to use module_usb_driver()
- This converts the drivers in sound/* to use the
- module_usb_driver() macro which makes the code smaller and a bit
- simpler.
- Added bonus is that it removes some unneeded kernel log messages about
- drivers loading and/or unloading.
- - ALSA: 6fire: don't use custom hex_to_bin()
- - ALSA: 6fire - Fix signedness bug
- Fixed remaining issues of the signedness bug discovered by Dan Carpenter.
- A check was remaining that tests if unsigned rt->rate is >= 0.
- Changed that so that rt->rate now consistently uses ARRAY_SIZE(rates)
- as invalid rate value and not -1.
- - ALSA: 6fire: Fix double-free bug in usb6fire_fw_ezusb_upload()
- We have a double-free bug in
- sound/usb/6fire/firmware.c::usb6fire_fw_ezusb_upload().
- We already call release_firmware(fw) on line 258, so when we then do it
- again after usb6fire_fw_ezusb_write() returns <0, we have a double-free.
- Easily fixed by just removing the last call to release_firmware().
- - ALSA: 6fire: Don't leak firmware in error path
- One of the error paths in
- sound/usb/6fire/firmware.c::usb6fire_fw_ezusb_upload() neglects to free
- the memory allocated for the firmware before returning, thus leaking the
- memory.
- - ALSA: 6fire: use the kernel's built-in bit reverse table
- - ALSA: 6fire - Add support of digital-thru mixer
- Digital Thru mixer element added (device can act as converter optical<->coax)
- - ALSA: 6fire - Improve firmware loader
- Firmware loader: magical device bytes check updated (accepts all device
- versions now and accepts possibly loaded firmware, if it is knowing to
- be working)
- - ALSA: 6fire - Add support for S32_LE format
- Added support for sample format s32_le.
- - ALSA: 6fire - Fix pcm rate assignment
- Completion of signedness bug for pcm_runtime.rate: variable will never
- get assigned a negative value now.
- - ALSA: USB: 6fire: signedness bug in usb6fire_pcm_prepare()
- rt->rate is an unsigned char so it's never equal to -1. It's not a huge
- problem because the invalid rate is caught inside the call to
- usb6fire_pcm_set_rate() which returns -EINVAL. But if we fix the test
- then it prints out the correct error message so that's good.
USB USX2Y
- - Rediff the usbusx2y.c and soc-core.c patches to match recent kernel
- - ALSA: snd-usb-us122l: Delete calls to preempt_disable
- They are not needed here.
- - USB: convert sound/* to use module_usb_driver()
- This converts the drivers in sound/* to use the
- module_usb_driver() macro which makes the code smaller and a bit
- simpler.
- Added bonus is that it removes some unneeded kernel log messages about
- drivers loading and/or unloading.
- - sound: add moduleparam.h to users of module_param/MODULE_PARM_DESC
- These files were getting access to these two via the implicit
- presence of moduleparam.h everywhere. But that is being fixed, so
- get these guys what they need in advance.
USB caiaq
- - Refreshed patches
- Mainly for bool modparm changes.
- - Regenerate patches to fix fuzz for 3.2-rc1 changes
- - USB: convert sound/* to use module_usb_driver()
- This converts the drivers in sound/* to use the
- module_usb_driver() macro which makes the code smaller and a bit
- simpler.
- Added bonus is that it removes some unneeded kernel log messages about
- drivers loading and/or unloading.
- - ALSA: snd-usb-caiaq: Add support for Maschine
- This adds partial support for the Maschine controller by Native Instruments.
- Supported now are the 1x1 MIDI interface and the 41 buttons, 11 endless
- rotary encoders, and 16 pressure-sensitive drum pads. Still to work on are the
- dimmable LEDs and the two monochrome screens.
- - ALSA: snd-usb-caiaq: Fix NULL dereference in input.c
- There was a case where a newly-registered input device could be opened before
- a necessary variable in the device structure was set. When code tried to use
- the variable in the URB reply callback, it would cause an Oops.
- This fix sets the aforementioned variable before calling input_register_device.
- - ALSA: snd_usb_caiaq: track submitted output urbs
- The snd_usb_caiaq driver currently assumes that output urbs are serviced
- in time and doesn't track when and whether they are given back by the
- USB core. That usually works fine, but due to temporary limitations of
- the XHCI stack, we faced that urbs were submitted more than once with
- this approach.
- As it's no good practice to fire and forget urbs anyway, this patch
- introduces a proper bit mask to track which requests have been submitted
- and given back.
- That alone however doesn't make the driver work in case the host
- controller is broken and doesn't give back urbs at all, and the output
- stream will stop once all pre-allocated output urbs are consumed. But
- it does prevent crashes of the controller stack in such cases.
- See http://bugzilla.kernel.org/show_bug.cgi?id=40702 for more details.
- Reported-and-tested-by: Matej Laitl <matej@laitl.cz>
- - ALSA: snd-usb-caiaq: Correct offset fields of outbound iso_frame_desc
- This fixes faulty outbount packets in case the inbound packets
- received from the hardware are fragmented and contain bogus input
- iso frames. The bug has been there for ages, but for some strange
- reasons, it was only triggered by newer machines in 64bit mode.
- Reported-and-tested-by: William Light <wrl@illest.net>
- Reported-by: Pedro Ribeiro <pedrib@gmail.com>
- - ALSA: snd-usb-caiaq: Fix keymap for RigKontrol3
- Reported-by: Renato <naretobh@gmail.com>
- - ALSA: caiaq - Fix possible string-buffer overflow
- Use strlcpy() to assure not to overflow the string array sizes by
- too long USB device name string.
- Reported-by: Rafa <rafa@mwrinfosecurity.com>
- - ALSA: snd-usb-caiaq: Add support for Traktor Audio 2
USB generic driver
- - Refreshed patches
- Mainly for bool modparm changes.
- - Refreshed usb/quirks.patch to fix fuzz
- - Refresh usb/helper.patch
- For snd_usb_ctl_msg() change.
- - Update usb/endpoint.patch and usb/stream.patch
- For upstream commit ca7051d40da5e86e3c249b5a41ac82bb1016c044
- - Fix usb/quirks.patch for older kernels
- - Fix builds of usb-audio with older kernels for autopm stuff
- - Refreshed usb/card.patch
- for autosuspend support
- - ALSA: usb-audio - Avoid flood of frame-active debug messages
- With some buggy devices, the usb-audio driver may give "frame xxx active"
- kernel messages too often. Better to keep it as debug-only using
- snd_printdd(), and also add the rate-limit for avoiding floods.
- Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=738681
- - ALSA: usb-audio: fix possible hang and overflow in parse_uac2_sample_rate_range()
- A malicious USB device may feed in carefully crafted min/max/res values,
- so that the inner loop in parse_uac2_sample_rate_range() could run for
- a long time or even never terminate, e.g., given max = INT_MAX.
- Also nr_rates could be a large integer, which causes an integer overflow
- in the subsequent call to kmalloc() in parse_audio_format_rates_v2().
- Thus, kmalloc() would allocate a smaller buffer than expected, leading
- to a memory corruption.
- To exploit the two vulnerabilities, an attacker needs physical access
- to the machine to plug in a malicious USB device.
- This patch makes two changes.
- 1) The type of "rate" is changed to unsigned int, so that the loop could
- stop once "rate" is larger than INT_MAX.
- 2) Limit nr_rates to 1024.
- Suggested-by: Takashi Iwai <tiwai@suse.de>
- - ALSA: usb-audio: add Yamaha MOX6/MOX8 support
- ALSA: usb-audio: add Yamaha MOX6/MOX8 support
- - ALSA: snd-usb: added VOX ToneLab ST midi handling
- - ALSA: usb-audio - Support for Roland GAIA SH-01 Synthesizer
- Added table quirks entry for Roland GAIA SH-01 Synthesizer based upon
- Roland SH-201 table entry as template. USB MIDI and audio was tested
- with Muse and Audacity.
- - ALSA: usb-audio: Use kmemdup rather than duplicating its implementation
- Use kmemdup rather than duplicating its implementation
- The semantic patch that makes this change is available
- in scripts/coccinelle/api/memdup.cocci.
- - ALSA: snd_usb_audio: add Logitech HD Webcam c510 to quirk-384
- Logitech HD Webcam c510 provide wrong mixer resolution.
- Add it to "res = 384" quirk.
- - ALSA: usb-audio - Fix the missing volume quirks at delayed init
- In the recent usb-audio driver, the initialization of volume ranges
- may be delayed when the device doesn't respond well at the probing time.
- But the volume quirks for certain devices are applied only in
- mixer_ctl_feature_info() thus only at the very first probe and will be
- missing when the volume range is initialized later.
- This patch moves the volume quirk code to be always called from the
- volume-range extraction (get_min_max()), so that the quirks are properly
- applied in the later init time.
- Reported-and-tested-by: Alexey Fisher <bug-track@fisher-privat.net>
- - ALSA: usb-audio - Fix possible access over audio_feature_info[] array
- The audio_feature_info[] array should contain all entries for UAC2_FU_*,
- but currently a few last entries are missing. Even though, the driver
- tries to probe these entries in parse_audio_feature_unit() and may
- access the range over the array. This patch fixes the bug by limiting
- the loop size properly using ARRAY_SIZE() instead of a hard-coded
- magic number.
- Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
- - ALSA: usb-audio: increase control transfer timeout
- There are certain devices that are reportedly so slow that they need
- more than 100 ms to handle control transfers. Therefore, increase the
- timeout in mixer(_quirks).c to 1000 ms.
- The timeout parameter of snd_usb_ctl_msg() is now constant, so we can
- drop it.
- Reported-by: Felipe Balbi <balbi@ti.com>
- - ALSA: usb-audio: Check for possible chip NULL pointer before clearing probing flag
- Before clearing the probing flag in the error exit path, check that the
- chip pointer is not NULL.
- - ALSA: usb-audio - clear chip->probing on error exit
- The Terratec Aureon 5.1 USB sound card support is broken since kernel
- 2.6.39.
- 2.6.39 introduced power management support for USB sound cards that added
- a probing flag in struct snd_usb_audio.
- During the probe of the card it gives following error message :
- usb 7-2: new full speed USB device number 2 using uhci_hcd
- cannot find UAC_HEADER
- snd-usb-audio: probe of 7-2:1.3 failed with error -5
- input: USB Audio as
- /devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.3/input/input6
- generic-usb 0003:0CCD:0028.0001: input: USB HID v1.00 Device [USB Audio]
- on usb-0000:00:1d.1-2/input3
- I can not comment about that "cannot find UAC_HEADER" error, but until
- 2.6.38 the card worked anyway.
- With 2.6.39 chip->probing remains 1 on error exit, and any later ioctl
- stops in snd_usb_autoresume with -ENODEV.
- - ALSA: usb-audio: Added support for Roland UM-ONE midi-usb interface
- Roland UM-ONE midi usb interface differs from Roland UM-1.
- - ALSA: snd-usb: move code from urb.c to endpoint.c
- No code altered at this point, simply preparing for upcoming
- refactorizations.
- - ALSA: snd-usb: re-order code
- Move code from endpoint.c into a new file called stream.c and rename
- functions so that their names actually reflect what they're doing.
- This way, endpoint.c will be available to functions that hold all the
- endpoint logic.
- - ALSA: usb: refine delay information with USB frame counter
- Existing code only updates the audio delay when URBs were
- submitted/retired. This can introduce an uncertainty of 8ms
- on the number of samples played out with the default settings,
- and a lot more when URBs convey more packets to reduce the
- interrupt rate and power consumption.
- This patch relies on the USB frame counter to reduce the
- uncertainty to less than 2ms worst-case. The delay information
- essentially becomes independent of the URB size and number of
- packets. This should help applications like PulseAudio which
- require accurate audio timing. Clemens Ladisch reported
- a decrease of mplayer's A-V difference from nrpacks down to at
- most 1ms.
- Thanks to Clemens for also pointing out that the implementation
- of frame counters varies between different HCDs. Only the
- 8 lowest-bits are used to estimate the delay.
- [clemens: changed debug code]
- - ALSA: usb-audio: add Starr Labs USB MIDI support
- Add support for Starr Labs USB MIDI devices such as the Z7S, which are
- based on an FTDI serial UART chip.
- Based on a patch by Daniel Mack.
- - PM / Runtime: Add macro to test for runtime PM events
- This patch (as1482) adds a macro for testing whether or not a
- pm_message value represents an autosuspend or autoresume (i.e., a
- runtime PM) event. Encapsulating this notion seems preferable to
- open-coding the test all over the place.
- - ALSA: usb-audio - Check the dB-range validity in the later read, too
- When the initial check of dB-range failed due to the read error, try to
- check again at the later read, too. When an invalid dB range is found,
- remove TLV flags and notify the mixer info change.
- - ALSA: usb-audio - Fix missing mixer dB information
- The recent fix for testing dB range at the mixer creation time seems
- to cause regressions in some devices. In such devices, reading the dB
- info at probing time gives an error, thus both dBmin and dBmax are still
- zero, and TLV flag isn't set although the later read of dB info succeeds.
- This patch adds a workaround for such a case by assuming that the later
- read will succeed. In future, a similar test should be performed in a
- case where a wrong dB range is seen even in the later read.
- - ALSA: usb-audio - Add quirk for BOSS Micro BR-80
- - ALSA: snd-usb: Fix uninitialized variable usage
- Purely cosmetic, but fixes the following build warning.
- CC [M] sound/usb/quirks.o
- sound/usb/quirks.c: In function ‘snd_usb_apply_boot_quirk’:
- sound/usb/quirks.c:429:6: warning: ‘err’ may be used uninitialized in this function [-Wuninitialized]
- - ALSA: usb-audio - add quirk for Keith McMillen StringPort
- - ALSA: snd-usb: operate on given mixer interface only
- When creating the mixers for an USB audio device, the current code looks
- at the host interface stored in mixer->chip->ctrl_if. Change this and
- rather keep a local pointer to the interface that was given when
- snd_usb_create_mixer() was called.
- Reported-by: Nicolai Krakowiak <nicolai.krakowiak@gmail.com>
- Reported-by: Lean-Yves LENHOF <jean-yves@lenhof.eu.org>
- - ALSA: snd-usb: avoid dividing by zero on invalid input
- - ALSA: snd-usb: Accept UAC2 FORMAT_TYPE descriptors with bLength > 6
- The Focusrite Scarlett 18i6 USB has them that way, which is probably a
- bug. Anyway, the driver should simply ignore this fact.
- Reported-by: Nicolai Krakowiak <nicolai.krakowiak@gmail.com>
- - ALSA: usb-audio - Add quirk for Roland / BOSS BR-800
- Add support for Roland/BOSS BR-800 (0582:011e) to snd-usb-audio driver.
- This allows playback and recording, which has been tested and found to
- work. The third interface should be MIDI (MTC/SMPTE?) for DAW interface
- and is set as per ME-25, but this has not been tested. SDHC card access
- is already supported by usb-storage for Backup/Rhythm Editor/Wave
- Convertor mode which should not conflict with this.
- - ALSA: usb-audio - Add quirks for M-Audio Fast Track Pro and Quattro
- This patch gives M-Audio Fast Track Pro and M-Audio Quattro quirks and
- endpoints to boot and setup those devices with special options (digital
- inputs and outputs, 24 bits mode, etc...). M-Audio Audiophile quirks are
- just adapted to match the new global M-Audio parameters.
- Special configurations can be then loaded through a modprobe conf file.
- For example, to set the 24 bits mode on the Fast Track Pro add
- /etc/modprobe.d/fast_track_pro.conf :
- options snd_usb_audio vid=0x763 pid=0x2012 device_setup=0x08
- Here is a list of the possibilities in this example :
- http://files.parisson.com/debian/fast-track-pro.conf
- - ALSA: usb-audio: replace "void *" with more specific pointers
- - ALSA: usb - turn off de-emphasis in s/pdif for cm6206
- CM6206: Turn off de-emphasis channel status bit in S/PDIF output.
- - ALSA: usb-audio: more control quirks for M-Audio FastTrack devices
- Make use of the freshly introduced methods to re-use standard mixer
- handling and add some controls that are hidden but implemented in a
- standard conform way on M-Audio's FastTrack devices.
- Original-code-by: Felix Homann <linuxaudio@showlabor.de>
- - ALSA: usb-audio: add new quirk type QUIRK_AUDIO_STANDARD_MIXER
- This quirk type will let the driver assume that there is a standard
- mixer on a given interface, or that a specific mixer quirks will handle
- the device.
- - ALSA: usb-audio: export snd_usb_feature_unit_ctl
- In order to allow quirks functions to hook up to the standard feature
- unit op tables, this patch exports a pointer to the struct that is used
- internally.
- That way, all the code handling the control can be kept private, and
- external code can reference the symbol to re-use it.
- - ALSA: usb-audio: rework add_control_to_empty()
- This patch renames add_control_to_empty() to snd_usb_mixer_add_control()
- and exports it, so the quirks functions can make use of it.
- Also, as "struct mixer_build" is private to mixer.c, rewrite the
- function to take an argument of type "struct usb_mixer_interface"
- instead.
- - ALSA: usb-audio: move assignment of chip->ctrl_intf
- This is needed for upcoming changes to the quirks mechanism.
- - ALSA: usb-audio - Add support for USB X-Fi S51 Pro
- USB X-Fi S51 Pro volume and mute from the volume knob on the unit.
- Compiled and tested with 2.6.39-rc7-git12
- - ALSA: usb-audio: handle "Fast Track Ultra" with USB_DEVICE_VENDOR_SPEC()
- That way, the class compliant MIDI interface is also handled.
- Reported-and-tested-by: Grant Diffey <gdiffey@gmail.com>
- - ALSA: usb-audio: assume valid clock
- If the interface can't report a clock's validity, assume that it's
- valid.
- Reported-by: Vicente Joel <vicentejoel@gmail.com>
- - ALSA: usb-audio: add quirks for Roland GR-55
- Reported-by: Jeffrey Scott Flesher <jeffrey.scott.flesher@gmail.com>
- - ALSA: usb-audio: Add quirk for KORG PANDORA PX5D MIDI interface
- Reported-and-tested-by: Frédéric Jaume <frederic.jaume@gmail.com>
- - ALSA: usb-audio: remove invalid extra mixers for Komplete Audio 6
- This was a flaw in the reading of the spec tables - Native Instrument's
- "Komplete Audio 6" device has no such extra controls.
- This patch also fixes the device name in two comments.
- - ALSA: usb-audio: include format.h in format.c
- Just in case a prototype changes, we'll be warned. This also fixes a
- sparse warning.
- - ALSA: usb-audio: make hwc_debug a noop in case HW_CONST_DEBUG is not set
- Just defining it to nothing is dangerous as it can alter the code
- execution flow, for example when used in as only function in a
- conditional code block.
- - ALSA: usb-audio - Terratec Aureon 7.1 USB ID as C-Media cm6206 quirks
- This patch adds support for the Terratec Aureon 7.1 USB which uses a
- C-Media cm6206 and needs all the quirks already found in the past.
- - ALSA: usb-audio - Don't expose broken dB ranges
- Some crappy USB-audio devices give broken dB ranges, e.g. both min and max
- are 0dB. This confuses the volume control that prefers dB expression such
- as alsactl or PulseAudio. In such a case, it's much better not to expose
- the broken dB information.
- - ALSA: usb-audio: Add quirks for Audio Kontrol 6
- This new device by Native Instruments is also compliant to the USB
- standard v2.0, but hides this detail at when connected.
- It needs the same boot quirks than other models, and also has two
- non-class-compliant mixer controls.
- - ALSA: usb-audio: define another USB ID for a buggy USB MIDI cable
- There are many USB MIDI cables out there that have buggy
- firmware that reports it can do more than 4 bytes in a
- packet when they can only properly handle 4
- This patch adds the ID of yet another one of those cables
- - ALSA: usb-audio - Support for Boss JS-8 Jam Station
- - ALSA: usb - Remove trailing spaces from USB card name strings
- Some USB devices give trailing spaces in strings returned from
- usb_string(). This confuses the automatic card-id creation, resulting
- always in "default".
- This patch fixes the behavior by removing trailing spaces.
- - ALSA: usbaudio: implement USB autosuspend
- Devices are autosuspended if no pcm nor midi channel is open
- Mixer devices may be opened. This way they are active when
- in use to play or record sound, but can be suspended while
- users have a mixer application running.
- [Small clean-ups using static inline by tiwai]
- - ALSA: usbaudio: fix suspend/resume
- - ESHUTDOWN must be correctly handled
- - the optional interrupt endpoint's URB must be stopped and restarted
- - ALSA: usb-audio - Add "cval->res = 384" quirk for Logitech Webcam C600
- One more affected devices: Logitech Webcam C600 (046d:0808)
- Volume range before quirk is 6400, after (also real) is 16.
- - ALSA: usb-audio - Add volume range check and warn if it too big
- - ALSA: usb-audio: fix oops due to cleanup race when disconnecting
- When a USB audio device is disconnected, snd_usb_audio_disconnect()
- kills all audio URBs. At the same time, the application, after being
- notified of the disconnection, might close the device, in which case
- ALSA calls the .hw_free callback, which should free the URBs too.
- Commit de1b8b93a0ba "[ALSA] Fix hang-up at disconnection of usb-audio"
- prevented snd_usb_hw_free() from freeing the URBs to avoid a hang that
- resulted from this race, but this introduced another race because the
- URB callbacks could now be executed after snd_usb_hw_free() has
- returned, and try to access already freed data.
- Fix the first race by introducing a mutex to serialize the disconnect
- callback and all PCM callbacks that manage URBs (hw_free and hw_params).
- Reported-and-tested-by: Pierre-Louis Bossart <pierre-louis.bossart@intel.com>
- [CL: also serialize hw_params callback]
- - ALSA: usb-audio: reconstruct some dispatcher functions to use switch-case
- The number of cases has increased so use switch-case rather than
- if-statements.
- - ALSA: usb-audio: add support for Native Instruments MK2 devices
- The MK2 generation of Native Instruments' sound cards are in fact
- compliant to the USB audio standard of version 2 and other approved USB
- standards. However, they come up as vendor-specific device when first
- connected but can be told to come up with a new set of descriptors
- upon their next enumeration. The interfaces announced by the new
- descriptors will be handled by the kernel's class drivers. This is done
- by issuing a vendor specific device request and sending the device to
- reset.
- There are also some vendor-specific USB requests for some mixer elements
- that can't be exported in a standard compliant way. The driver now
- supports them with quirks handling mechanisms.
- - ALSA: usbaudio - Enable the E-MU 0204 USB
- - ALSA: usb-audio: add Cakewalk UM-1G support
- Add a quirk for the Cakewalk UM-1G USB MIDI interface in
- "advanced driver" mode. (It already works in standard mode.)
Utils
- - Copy only trace/events/asoc.h
- Otherwise other header files there break the build.
- - Create links to the latest include/trace/events/*.h
- - Fix version check in utils/mod-deps
- Forgot that this also checks $kvernum. Following the change in configure
- script, too.
- - Fix inclue/config1.h creation for integer values
- - Allow specifying integer options via configure script
- Add the feature to specify integer kconfig values from configure
- --with-card-options.
- - Fix build with 3.x kernels
- - add firewire build stubs
- Add build stubs and related support for the new FireWire modules.
VIA82xx driver
- - ALSA: via82xx: allow to disable the SRC
- Add the PCM rule to allow disabling the PCM playback SRC.
Virtual Master
- - ALSA: vmaster - Free slave-links when freeing the master element
- When freeing the vmaster master element, we should release slave-links
- properly, not only assumig that slaves will be freed soon later.
YMFPCI driver
- - ALSA: ymfpci: allow to disable the SRC
- Add the PCM rules to allow disabling the PCM playback and capture SRCs.
- - ALSA: ymfpci: fix PCM open error handling
- The installation of the minimum period size constraint in the PCM open
- callbacks was not checked for errors. Add this check, and move the call
- to the beginning of the function to avoid having to do any cleanups in
- the error case.
- - ALSA: ymfpci: add "Playback" to FM Legacy Volume control
- YDSXGR_LEGACYOUTVOL is a Playback Volume control for OPL3 FM Synth.
au88x0 driver
- - ALSA: Au88x0 - Reduce the number of playback subdevices of au8830 from 32 to 16
- - The maximum number of playback streams depend on the number of sample
- rate conveters (16) and the number of DMA channels (32).
- - ALSA: Au88x0 - Support 4 channels playback when AC97 codecs has SDAC bit
- - Check SDAC bit of AC97 codec for supporting 4 channels playback.
- - ALSA: Au88x0 - Fix channels swapping of 4 channels playback
- Fix channels swapping of 4 channels playback by
- using vortex_adbdma_stopfifo instead of vortex_adbdma_pausefifo
- for SNDRV_PCM_TRIGGER_STOP event
- - ALSA: Au88x0 - Fix IRQ fifo error and channels swap of 4 channels playback
- Fix IRQ fifo error when playing stereo by set stereo flag of fifo control.
- This also fix the swap of front and rear channels on au8830.
- - ALSA: Au88x0 - Fix Xtalk's constants
- - Fix XtalkGainsDefault, XtalkGains1Chn
- - Fix XtalkWideCoefsLeftEQ, XtalkWideCoefsRightEQ
- - Fix XtlakWideCoefsLeftXT, XtalkWideCoefsRightXT
- - ALSA: Au88x0 - Xtalk - fix write/read of eq and xt instates
- - Kill off warning: ‘inline’ is not at beginning of declaration
- Fix a bunch of
- warning: ‘inline’ is not at beginning of declaration
- messages when building a 'make allyesconfig' kernel with -Wextra.
- These warnings are trivial to kill, yet rather annoying when building with
- -Wextra.
- The more we can cut down on pointless crap like this the better (IMHO).
- A previous patch to do this for a 'allnoconfig' build has already been
- merged. This just takes the cleanup a little further.
- - ALSA - au88x0 - Add buffer bytes constraints
- This allow application such as gstreamer and wine which use
- snd_pcm_hw_params_set_buffer_time_near() won't fail any more
- since sound chips require special containt power 2 period bytes
- - ALSA: au88x0 - Use a better name for pcm devices of au88x0
- - sound: ALSA - au88x0 - add Playback Volume to 10 bands Equalizer Controls
- Add " Playback Volume" to 10 bands Equalizer Controls of au88x0 so that
- alsa-lib won't regard them as "Capture Volume".
- - ALSA: au88x0 - Modify pointer callback to give accurate playback position
gitcompile script
- - Update sound git tree path in gitcompile script
- Now it's without -2.6 suffix.
alsa-lib
Core
- - Release v1.0.25
- - Introduce --with-pkgconfdir, add 64-bit defaults to gitcompile
- - conf: Allow for a directory to be given as a config file.
- When this is done, *.conf files can be placed in that directory and they
- will be processed by as if they were included directly.
- A directory (typically /usr/share/alsa/alsa.conf.d/) has been
- added into the distribution.
- v2: Used existing conf syntax rather than processing via autotools
- v3: Split file loading into separate function and made error handling
- more consistent.
- - configure: Fail when the user attempts to compile shared and static libs
- There are some issues with libtool breaking the possibility to build both
- types of libraries in one shot. Compile libraries separately.
- - Release v1.0.24.1
Control API
- - Document strdup allocation in snd_card_get_name family
- This was spotted by Jörg Höhle on the wine-patches ML.
- - Improve snd_device_name_hint documentation
- - control: add snd_ctl_elem_add_enumerated()
- Handling of user control elements was implemented for all types except
- BYTES and ENUMERATED. Enumerated user controls will be needed for the
- device-specific mixers of upcoming FireWire drivers.
- - Add snd_{ctl|pcm}_open_fallback() functions
- This patch adds new API functions, snd_ctl_open_fallback() and
- snd_pcm_open_fallback(). These are just like snd_*_open_lconf() but
- used to open a fallback PCM/control. The difference is that it replaces
- the name string with the given original name, so that hctl and other
- upper-layers will recognize it as an alias.
- - Fix missing error code in snd_ctl_hw_open()
- - ctlparse: Respect softfloat configure option
- If we want softlfoat we can't use ceil which uses libm.
Device Name API
- - Remove docs for snd_names_list and snd_names_list_free
- No need to have misleading docs for functions that do nothing.
HWDEP API
- - alsa-lib: fixed coverity reported issues under "FORWARD_NULL" checker.
- Coverity Static Analysis helps developers find hard-to-spot,
- yet potentially crash-causing defects early in the development phase,
- reducing the cost,time, and risk of software errors.
- This patch has fix for situations where variable can be NULL
- but not been checked beforehand
Mixer API
- - Fix compile warnings
- strstr() returns a char pointer
- simple_none.c: In function ‘base_len’:
- simple_none.c:940:33: warning: ordered comparison of pointer with integer zero
- simple_none.c:941:29: warning: ordered comparison of pointer with integer zero
- - Fix alsa-lib to regard 3D control - Depth as Playback Controls
- This allow those mixer or recording application to find those controls which
- are really used for capturing.
PCM API
- - Improve hw_params documentation
- - Search-and-replace improve documentation language
- - pcm:mmap_emul: Fix sw_params and others in bypass mode
- When the slave doesn't need any mmap-emulation, the plugin shouldn't do
- anything special in sw_params and other callbacks but just pass to the
- generic helpers and update hwptr and applptr.
- - src/pcm/pcm_mmap.c: add missing free
- The mmap_channels and running_areas fields are allocated using calloc, but
- are not freed on an error path.
- - src/pcm/pcm_multi.c: add missing free
- Something that is allocated using calloc is not freed on an error path.
- - src/pcm/pcm_ladspa.c: add missing free
- Something that is allocated using calloc is not freed on some
- error paths.
- - src/pcm/pcm_rate.c: add missing free
- Something that is allocated using calloc is not freed on one
- or more error paths.
- - pcm: recalculate all rules after changing hw_params flags
- The rules engine avoids recalculating rules that do not depend on
- any changed parameter, but there is no mechanism to record changed
- flags. So when we change a flag, we have to ensure that all rules
- depending on that flag are recalculated; the only method to do this
- is to force recalculation of all rules.
- So far, there have been no kernel drivers with rules depending
- on flags, but rules to disable hardware SRCs by setting
- SND_PCM_HW_PARAMS_NORESAMPLE are being introduced now.
- - Add snd_{ctl|pcm}_open_fallback() functions
- This patch adds new API functions, snd_ctl_open_fallback() and
- snd_pcm_open_fallback(). These are just like snd_*_open_lconf() but
- used to open a fallback PCM/control. The difference is that it replaces
- the name string with the given original name, so that hctl and other
- upper-layers will recognize it as an alias.
- - alsa-lib: fixed coverity reported issues under "FORWARD_NULL" checker.
- Coverity Static Analysis helps developers find hard-to-spot,
- yet potentially crash-causing defects early in the development phase,
- reducing the cost,time, and risk of software errors.
- This patch has fix for situations where variable can be NULL
- but not been checked beforehand
Use Case Manager API
- - ucm: add another sequence 'msleep'
- Thus, we have two sleep statements:
- msleep <milliseconds>
- usleep <microseconds>
- - ucm: tivial code style fix
- - ucm: fix seg fault in execute_cset()
- When there's no space in 'cset', 'pos' gets NULL, dereferencing 'pos' gets a
- seg fault. We need to be more robust.
- - UCM: get: Implement 'exact' value retrieval
- [=]<NAME>[/[<modifier>|</device>][/<verb>]]
- - value identifier <NAME>
- - Search starts at given modifier or device if any,
- else at a verb
- - Search starts at given verb if any,
- else current verb
- - Searches modifier/device, then verb, then defaults
- - Specify a leading "=" to search only the exact
- device/modifier/verb specified, and not search
- through each object in turn.
- - Examples:
- "PlaybackPCM/Play Music"
- "CapturePCM/SPDIF"
- From ValueDefaults only:
- "=Variable"
- From current active verb:
- "=Variable//"
- From verb "Verb":
- "=Variable//Verb"
- From "Modifier" in current active verb:
- "=Variable/Modifier/"
- From "Modifier" in "Verb":
- "=Variable/Modifier/Verb"
- - UCM: snd_use_case_get: Don't segfault when no current verb
- get_value, called by snd_use_case_get, uses uc_mgr->active_verb without
- checking there is one, and hence can segfault. Fix this.
- - UCM: Allow querying of {Supported,Conflicting}Devices
- At any time, one can query:
- _supporteddevs/<modifier>|<device>/<verb>
- _conflictingdevs/<modifier>|<device>/<verb>
- If a verb is current, one can query:
- _supporteddevs/<modifier>|<device>
- _conflictingdevs/<modifier>|<device>
- Note that at most one of the supported/conflicting devs lists has
- any entries, and when neither is present, all devices are supported.
- - UCM: Disallow gets of undefined system properties
- In UCM, there are various system-defined properties whose names start
- with "_". Explicitly prevent any gets from falling back to properties
- defined in a config file if the property name starts with "_", in order
- to reserve the entire "_" namespace for system-defined properties.
- - UCM: Implement ConflictingDevices, add device list to devices
- Wherever SupportedDevice can appear, also allow ConflictingDevice. Only
- one or the other (or neither) may be specified. When neither is
- specified, allow anything. Sometimes, listing ConflictingDevices may
- result in a shorter list than explicitly listing all SupportedDevices.
- Add support for SupportedDevice and ConflictingDevice to SectionDevice.
- This allows representing devices which are mutually exclusive, e.g. due
- to a mux that switches between capturing from two different microphones,
- without the possibility of mixing.
- Enhance is_modifier_supported to allow ignoring SupportedDevice and
- ConflictingDevice. This is useful when querying values from a
- SectionModifier; there's no reason we shouldn't be able to query values
- just because the current configuration would prevent enabling that
- device. The new is_device_supported is implemented similarly.
- Enhance switch_device to remove the old device from the current device
- list before querying for the new device, and add it back immediately
- afterwards. This allows the query for the new device to ignore any
- conflicts caused solely by the old device.
- - UCM: Deprecate index on Section{Device,Modifier}
- The previous supported "legacy" syntax was:
- SectionDevice."Speaker".0 {
- SectionModifier."Capture Voice".0 {
- This change supports new syntax:
- SectionDevice."Speaker" {
- SectionModifier."Capture Voice" {
- ... but also allows the old syntax, iff the index is exactly "0". If an
- index is present, but not exactly "0", parsing will appear to succeed,
- but produce an empty device or modifier.
- When naming devices and modifiers, even if the legacy format is used,
- any index is not included in the name; i.e. both sets of syntax above
- name the device just "Speaker".
- The SupportedDevice list syntax still also accepts either "x" or "x.0",
- but internally strips ".0" from the tail of any device name. Any other
- name including "." is disallowed.
- Finally, when comparing device or modifier names, a simple exact string
- compare is now used, since no index data is ever present in device or
- modifier names.
- The one functional change introduced here is that a SupportedDevice
- entry of just "x" will now only ever match a single device. It previously
- acted as a wildcard for any device named "x.foo".
- - UCM: Fix deadlock following failed get _verb
- When querying the current verb without a verb set, snd_use_case_get bails
- out early without unlocking uc_mgr->mutex. This causes subsequent API calls
- to hang. Instead, s/return/goto __end/.
- - UCM: Fix typo in error message
- parse_name_is_safe disallows dots in the name, so not is the correct
- word to use
- - UCM: fix memory leak when executing cset commands
- fix memory leak when executing cset commands.
- snd_ctl_elem's are allocated, but never free'ed
- - UCM: Fix LGPL licence ("how to receive" part referred GPL instead LGPL)
- - UCM: Fix empty get_list - initialize returned pointer to NULL
- - UCM: comment fixes and fix myvalue initialization fix in add_values()
- - alsa-lib: ucm: allow values to be read from devices
- This allows devices value to be read using the get_value().
- Also fix a little formatting.
- - ucm: add more error messages for cdev and cset commands
- - ucm: allow bind modifier to specific instances, other fixes
- - ucm: make verb comments optional
- avoid seg fault if no comment is provided
Configuration
- - conf: Allow for a directory to be given as a config file.
- When this is done, *.conf files can be placed in that directory and they
- will be processed by as if they were included directly.
- A directory (typically /usr/share/alsa/alsa.conf.d/) has been
- added into the distribution.
- v2: Used existing conf syntax rather than processing via autotools
- v3: Split file loading into separate function and made error handling
- more consistent.
- - Define "sysdefault" PCM and control
- When "default" PCM and control definitions are overwritten by others
- like PulseAudio setup, the original system-default defition is lost.
- This is a problem when PA is temporarily (or intentionally) disabled
- and user wants to use the default dmix.
- This patch adds a new standard definition for the system-default,
- "sysdefault". This can be used for fallbacks.
- - emu10k1.conf - Fix no sound problem when using SB Live! Platinum
- Add asym to front, rear and center_lfe to prevent route change after
- removed the lock.
- After removed the lock, when application using "hw", "front", "rear",
- "surround40" and "surround51", the route of the front channel is
- changed (lost right channel or both channels) when other application
- using "front", "rear" or "center_lfe" to record
- - Specficy subdevice 0 for front/surround* of HDA-Intel.conf
- The subdevice 0 is used for multi-channel outputs.
- This fixes the detection of multi-channel devices of VIA codecs
- by PulseAudio.
- Reported-by: Raymond Yau <superquad.vortex2@gmail.com>
- - alsa-lib: fixed coverity reported issues under "FORWARD_NULL" checker.
- Coverity Static Analysis helps developers find hard-to-spot,
- yet potentially crash-causing defects early in the development phase,
- reducing the cost,time, and risk of software errors.
- This patch has fix for situations where variable can be NULL
- but not been checked beforehand
- - HDA-Intel.conf - Fix low mic volume due to pulseaudio using "front" device for playback and capture
- - EMU10K1.conf: Don't lock hook controls
- Locking the controls in hooks causes a BUSY error when multiple
- streams are opened, typically in PulseAudio. Better not to touch
- the locking in hooks in such a case.
- - Fix typo in comment in surround71.conf
- BugLink: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=591318
- Reported-by: Ariel <asdebian@dsgml.com>
- - Mark Heaphone {Center|LFE} control of emu10k1 conf as optional
- The controls referred in center_lfe definition in EMU10K1.conf should be
- marked as optional since some boards don't have these.
- - Conf: Fix channels of ICE1712 to 10/12
- The ICE1712 kernel driver accepts 10 playback channels and
- 12 recording channels only. Therefore fix this channel count
- in alsa-lib.
- BugLink: http://bugs.launchpad.net/bugs/178442
- - alsa-lib: add LaCie Firewire Speakers/Griffin FireWave Surround driver
- Add configuration files for the "default"/"front"/"surround51" devices
- of the FireWire driver.
Kernel Headers
- - control: add snd_ctl_elem_add_enumerated()
- Handling of user control elements was implemented for all types except
- BYTES and ENUMERATED. Enumerated user controls will be needed for the
- device-specific mixers of upcoming FireWire drivers.
- - asound.h: cosmetic changes for consistency with kernel asound.h
- Change some whitespace and comments to remove spurious differences
- between the alsa-lib and kernel versions of asound.h.
- - asound.h: update for latest kernel
- Refresh asound.h to be up to date with its kernel source.
- - Add RME RPM to HDSP_IO_Type.
- The hdsp.c driver supports the RME RPM devices, but we also need this
- information in alsa-lib for tools like hdsploader and hdspmixer.
Simple Abstraction Mixer Modules
- - alsa-lib: fixed coverity reported issues under "FORWARD_NULL" checker.
- Coverity Static Analysis helps developers find hard-to-spot,
- yet potentially crash-causing defects early in the development phase,
- reducing the cost,time, and risk of software errors.
- This patch has fix for situations where variable can be NULL
- but not been checked beforehand
Test/Example code
- - Fix printf for size_t
- Need to use z prefix for size_t type.
- midiloop.c: In function ‘main’:
- midiloop.c:172:2: warning: format ‘%i’ expects type ‘int’, but argument 2 has type ‘size_t’
- ....
- - test/latency: print error message when 2 periods per buffer not supported
- Print error message when playback/capture does not support 2 periods
- per buffer.
- - ucm: allow bind modifier to specific instances, other fixes
Utils
- - Introduce --with-pkgconfdir, add 64-bit defaults to gitcompile
alsa-utils
Core
- - Release v1.0.25
- - alsactl: add support for recreating enumerated user controls
- - fix use of $(SED)
- The alsactl Makefile used 'sed $(SED)' which is going to failed when SED
- is actually set. Replaced that with '$(SED)', and a few 'sed' calls in
- alsaconf Makefile as well. Added AC_PROG_SED to configure to have it
- set.
- Fixes: https://bugtrack.alsa-project.org/alsa-bug/view.php?id=5363
- Fixes: http://bugs.gentoo.org/show_bug.cgi?id=366587
- - Updated COPYING with the recent FSF address
- - Release v1.0.24.2
- - Release v1.0.24.1
ALSA Control (alsactl)
- - Alsa-utils: Fix typo causing some volumes not to be initialized
- When I was reading the source code, I stumbled over this typo causing
- Center, LFE, and Surround speakers not to be initialized.
- - alsactl: Initialize Front Speaker, etc
- Add missing initialization of surround and CLFE playback volumes and
- switches. Ditto for "Front Speaker", etc.
- - alsactl: add support for recreating enumerated user controls
- - fix use of $(SED)
- The alsactl Makefile used 'sed $(SED)' which is going to failed when SED
- is actually set. Replaced that with '$(SED)', and a few 'sed' calls in
- alsaconf Makefile as well. Added AC_PROG_SED to configure to have it
- set.
- Fixes: https://bugtrack.alsa-project.org/alsa-bug/view.php?id=5363
- Fixes: http://bugs.gentoo.org/show_bug.cgi?id=366587
- - Revert "alsactl - Display help for names command"
- This reverts commit 6d32e055d73edfe6be90135c500dcb32491cf04d.
- - alsactl init: Mute CD Playback volume by default
- The CD analog playback line is seldom used these days, as all
- modern players rip the CD and use the DAC on the sound card.
- In addition, it causes background hum on some machines.
- Therefore keep it muted by default.
- BugLink: http://bugs.launchpad.net/bugs/747184
Speaker Test
- - speaker-test.1: Clarify man page by giving examples
- BugLink: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=620513
- From the Debian bug report:
- "The speaker-test manpage could be improved somewhat by helping a
- little bit the user determine how to find out the devices he can test.
- Based on http://alsa.opensrc.org/Speaker-test I have make some changes
- to the manpage (diff attached) to describe a little bit more how
- speaker-test can be used alongside 'aplay'.
- Please consider the following patch for
- alsa-utils-1.0.23/speaker-test/speaker-test.1"
alsaconf
- - fix use of $(SED)
- The alsactl Makefile used 'sed $(SED)' which is going to failed when SED
- is actually set. Replaced that with '$(SED)', and a few 'sed' calls in
- alsaconf Makefile as well. Added AC_PROG_SED to configure to have it
- set.
- Fixes: https://bugtrack.alsa-project.org/alsa-bug/view.php?id=5363
- Fixes: http://bugs.gentoo.org/show_bug.cgi?id=366587
alsaloop
- - alsaloop: Use AM_CFLAGS in Makefile.am
- - alsaloop: another try to force correct formats for libsamplerate
- - alsaloop: libsamplerate requires specific formats, force them for slave mode
alsamixer
- - alsamixer: Fix X-win related crash for PulseAudio plugin (bad linking)
- A lot of reports that alsamixer crashes in X terminal when the PulseAudio
- CTL plugin is activated were entered to the tracking systems.
- I figured that there is a linking clash for the shutdown() function.
- The shutdown() function in glibc is socket related, but the alsamixer code
- redefines this function and appearently that under some linking
- circumstances - which PA client invokes during the runtime dynamic linking
- - the wrong function is called.
- This patch, for safety, renames the shutdown() function from alsamixer
- to app_shutdown(), but it might make sense to figure the real linking
- culprit to avoid future surprises.
- - alsamixer: Fix 64bit issues
- lrint() returns a long int.
- - alsamixer: fix build on uClibc
- exp10 is a glibc extension, which isn't supported on uClibc. Luckily,
- exp10() is trivial to compute based on exp(), so add a wrapper for
- the uClibc case.
- - alsamixer: fix display of active/inactive controls
alsaucm
- - alsaucm: Don't double-free empty lists
- When snd_use_case_get_list (and hence also snd_use_case_card_list) returns
- an empty list, alsaucm still attempts to free it. This ends up double-
- freeing the returned list, or worse, freeing an invalid pointer, depending
- on how snd_use_case_get_list gets implemented. Fix alsaucm to return early
- on empty lists to avoid this.
- - alsaucm: Add list1 command for non-tuple lists
- snd_use_case_get_list returns lists of strings that are either:
- a) A sequence of single strings
- b) A sequence of pairs of strings all flattened into a single list
- The current list command assumes layout (b) above, and hence prints
- nothing when printing a single-entry list that's actually in layout (a).
- Add a new command "list1" to dump lists in layout (a).
- - alsaucm: do not bail out in the interactive mode upon error
- - alsaucm: fix interactive mode, add batch mode
- - alsaucm: fix list command and output
- add one argument to list to avoid error message, do not list
- comments as verbs
amixer
- - alsa-utils: amixer: Fix SND_CTL_TLVT_DB_RANGE handling
- Current support for handling SND_CTL_TLVT_DB_RANGE in amixer is completely
- broken. This patch fixes it.
- Reported-by: Daniel Mack <zonque@gmail.com>
aplay/arecord
- - aplay: Fix spelling error
- BugLink: https://bugs.launchpad.net/bugs/816388
- Reported-by: Chad Dunlap <cldunlap1@gmail.com>
- - aplay: increase channel limit to 256
- aplay is limited to 32 channels, which makes it impossible to use it for
- testing devices with more channels. here we increase the limit to 256,
- which should be sufficient for a virtual device made of 4 64-channel
- soundcards.
- - aplay: Use standard endian convesions
- asm/*.h stuff shouldn't be used directly from the user-space apps.
- - aplay: Add include files for mkdir()
- - aplay: Avoid recursive signal handling
- When abort() is issued in snd_pcm_close() path, it may loop recursively
- and crash.
- - aplay: Add -i option for interactive mode
- The recent addition of pause/resume control via keyboard brought
- a problem when aplay/arecord is invoked in background. For avoiding
- regressions, it's safer to use non-interactive mode as default and
- enable the new feature via an option.
- Tested-by: Stephen Warren <swarren@nvidia.com>
aplaymidi/arecordmidi
- - aplaymidi: clarify multi-port documentation
- The man page did not document what happens when multiple ports are
- specified; this could be misinterpreted as the events being duplicated
- so that they are played on all ports simultaneously. As suggested by
- Peter Billam, clarify that these ports are only used for multi-port MIDI
- files.
alsa-tools
Core
- - Release v1.0.25
- - Release v1.0.24.1
Digigram Echo Mixer
- - Remove configure.in-gtk2 from Makefiles...
Envy24 Control
- - envy24control: support gtk1 only in configure.in-gtk1
RME Digi Control
- - Remove configure.in-gtk2 from Makefiles...
RME HDSP Loader
- - hdsploader: Fix temporary RPM constant
- RPM in HDSP_IO_Type (enum from hdsp.h) is 4, not 5.
- - hdsploader: Temporary define for RPM
- Right now (1.0.24.1), alsa-lib's hdsp.h doesn't know about the RPM. To
- avoid a strong dependency on unreleased code, temporary provide the
- define here.
- It can be dropped as soon as a new version of alsa-lib will be released,
- thus effectively making it the required minimum version for alsa-tools.
- - hdsploader: Add support for RME RPM
- Augment hdsploader to support the RME RPM devices. The firmware is
- already present in alsa-firmware, so we can directly load it.
ac3dec (Dolby Digital Decoder)
- - More build fixes (gtk1 check removal from echomixer), cvscompile removal
as10k1 (EMU10K1+ DSP Assembler)
- - More build fixes (gtk1 check removal from echomixer), cvscompile removal
hdspconf
- - hdspconf: more string constant fixes
- - hdspconf: use foreground color instead of black
- if the background color of the color scheme is black, black text is hard
- to read. using the foreground color fixes this problem
- - hdspconf: fix some string constant conversions
hdspmixer
- - hdspmixer: Fix temporary RPM constant
- RPM in hdsp.h's HDSP_IO_Type is 4, not 5. This patch isn't exactly
- necessary here, because the constant is only used internally, but to
- avoid confusion if somebody ever reads the code, let's use the correct
- value.
- Note that we'll drop it after the next alsa-lib release.
- - hdspmixer: Add support for RME RPM
- This patch adds support for the RME RPM devices. It's mostly based on
- Florian Faber's previous patch against hdspmixer 1.0.23,
- forwarded-ported to the current hdspmixer code.
- - hdspmixer: Handle preset files used in 1.0.24 and 1.0.24.1
- As an addition to the previous commit, let's also cover the 3rd case
- when a preset file was written with hdspmixer v1.0.24 or v1.0.24.1.
- In this case, no magic header will be present, but the file size would
- differ from the pre 1.0.24 format.
- - hdspmixer: Handle channel count in old (v1.0.23) preset file format
- When reading a preset file, v1.0.23 only used 26 channels instead of 64.
- Reading 64 channels from a 26 channel file won't work, hence set it
- depending on the file format version.
- - hdspmixer: Fix read/write from/to preset files on MADI-like cards
- The old hdspmixer (prior to e24e56795ea57e3dd7da45063ab71f04e231192d,
- that is pre-1.0.24) has used the hard-coded value "14" for
- reading/storing 14 ints from/to preset files, however, it's actually
- HDSP_MAX_DEST that should be used.
- HDSP_MAX_DEST was bumped from 14 to 32 to allow for MADI cards (32
- stereo pairs equal 64 output channels on MADI cards)
- - hdspmixer: Initialize headphones out in presets
- Cards like the multiface/digiface have additional headphones out. Those
- were not initialized in the presets due to wrong loop boundaries:
- maxdest represents the amount of physical stereo pairs, and chnls is
- either equal or less, so the output fader array needs more iterations
- than the playback section.
- - hdspmixer: Recall 1st preset on all cards, not just on the first
- With the new "store current settings to the virtual 9th preset" before
- switching cards code, one needs to make sure the actual mixer state is
- loaded with sane values, either from the preset file or a generic
- builtin preset.
- Calling preset_change(1) is sufficient, setting all the required data.
- However, in case of more than one RME card in the system, one needs to
- call this function for each card, otherwise, some of the cards store
- uninitialized data to the 9th preset, resulting in a weird mixer state
- afterwards.
- - hdspmixer: Save preset before switching cards
- When running with more than one card, switching cards would lose any
- changes made to the current card. To avoid this inconvenience, save the
- current settings to the virtual 9th preset and restore them when
- switching back.
- - hdspmixer: Add a 9th pseudo preset
- When switching cards, all current settings are lost. To have a place
- where to store them, let's add a virtual 9th preset which can be used as
- a temporary scratch pad.
- - hdspmixer: fix drawing problems with black background
- - use foreground color instead of black
- - HDSPMixerSelector: set colors before setting labels
- Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
- - hdspmixer: Update NEWS file.
- - hdspmixer: Save and restore level meter settings
- Each preset can have a different level meter setting (FS samples for
- OVR, release rate, minimum level and so on).
- These settings were not saved/restore to/from the on-disk file. This
- patch adds the missing functionality.
- Unfortunately, the current on-disk format is a 1:1 binary dump from
- memory without any header information. In other words, this commit will
- break backward compatibility with older hdspmixers, that is, new preset
- files cannot be read by older versions of hdspmixer. However, we can
- still read the old mix files and save them in the new format.
- I hence bumped the version, so users know to re-create their files after
- upgrading to 1.11.
- Bug discovered by Raphaël Doursenaud from ematech.fr.
- - hdspmixer: Use constant instead of hardcoded number of cards.
- Again, use MAX_CARDS instead of "3", just in case MAX_CARDS should
- change some day.
- - hdspmixer: Improve pixmaps
- - Added tick marks at 4dB intervals
- - Small fixes and cleanup to buttons
- - Better ALSA branding
- All pixmaps provided by Reuben Martin.
- - hdspmixer: Fix toggle of master mute and solo buttons
- The sensitive area for master mute and solo buttons was slightly off.
- Discovered and fixed by Reuben Martin. Thanks for the patch.
- - hdspmixer: New pixmaps
- Reuben Martin has provided me with an updated pixmap set to replace
- RME's 1998 style no longer in use by the corresponding Win32 tools.
- The Linux pixmaps are based on ardour2. Likewise hdspmixer, ardour2 is
- GPLv2.
- - hdspmixer: Show cardname in window title
- When running with more than one card, it isn't obvious which card is
- shown.
- Store the ALSA cardname in the corresponding class and show it in the
- window title upon switching cards.
- Also, don't show "(null)" but "(unsaved)" in case the user hasn't
- selected a preset file.
- - hdspmixer: [cosmetics] Break code into logic blocks
- Convert the if-then-else-if chain into standalone if-then blocks to
- improve readability. A switch-case statement would also do the trick,
- but it's less readable.
- No (intended) semantic change.
- - hdspmixer: Fix code indentation
- Only cosmetics, no changed semantics. Indent the whole function to get
- rid of a mixture of tabs and spaces.
- - hdspmixer: Provide headphones out on Multiface/Digiface
- Both, Multiface and Digiface feature a separate headphone submix, so
- reflect this additional pair of channels in the corresponding maps.
- - hdspmixer: Introduce output channel count for all cards.
- Some cards (like multiface) have more physical output ports than
- playback ports, mostly because of additional headphones out.
- For those cards, the old abstraction model of channels_input and
- channels_output doesn't fit, so let's introduce channels_output.
- Of course, channels_output is always 2*max_dest at the given speed_mode
- (SS/DS/QS), so one could extend this idea, store all destination
- settings in channels_output[3] (one for each speed mode) and rip off the
- massive code duplication for setting maxdest or max_dest respectively.
- Note that dest_map_whatever_speed_mode's array size indirectly defines
- the right value for channels_output (read: even more unwanted
- redundancy)
- - hdspmixer: Adjust playback channel count on Multiface.
- The multiface has 18/14 (SS/DS) playback channels, matching the native
- 18/14 I/O ports. Headphones don't count (only for #destinations).
- - hdspmixer: Fix preset activation segfault on AES(32)
- When selecting preset 6 or 7 on AES(32), hdspmixer has caused a segfault
- due to indirect out of bound access on the destination label array.
- The amount of destinations is the number of physical stereo
- pairs, so it's usually half the channel count, in some cases one more if
- there are additional headphone jacks.
- - hdspmixer: Replace hardcoded 3 by MAX_CARDS
- We have a define for the number of cards. Use it.
- - hdspmixer: Fix labels on H9652
- The H9652 uses the same layout as the Digiface, except Digiface features
- an additional headphones out. That's why the channel mappings are the
- same, but Digiface has mexdest=14 while H9652 has maxdest=13 (12 ADAT
- pairs, another pair for S/PDIF and headphone-L/R on Digiface)
- - hdspmixer: Lower nesting depth in label assignment
- This fix is mostly cosmetic, the long if-then-else-if-chain was rather
- confusing. To improve code readability, use simple if-then statements
- and leave the function as soon as a match is found.
- Clear code would probably use a two-dimensional map, but it seems rather
- overengineered.
- Last but not least, the non-matching case was augmented by assigning a
- generic "1", "2", "3" .. channel naming schema to prevent hdspmixer from
- crashing.
- - hdspmixer: Make static destination maps extern
- To prevent multiple inclusion, make the destmaps global and only
- reference them via extern.
- - hdspmixer: Don't use hardcoded number of cards.
- We have introduced MAX_CARDS before to make the code more safe and
- extendable, so it's just sane to use it all over the place.
- - hdspmixer: Fix compiler warnings.
- All compiler warnings were caused by a conversion from "foo" to a
- char pointer. Given that the string itself really is constant, simply
- add the keyword to make g++ happy.
- - hdspmixer: Fix metering for non-MADI cards
- Currently, hdsp and hdspm use different ioctls. Consequently, the metering
- is wrong. To avoid code duplication, use pointers to the corresponding
- struct members.
- - hdspmixer: Fix ALSA snd_ctl_open error when running with three cards.
- If three (or more) RME cards are installed in one box, hdspmixer will
- try to open a non-existing 4th card, causing an error in snd_ctl_open
- and finally terminates itself.
- cards[] is a static array, and one must not read beyond the last
- element. The solution is far from elegant, however, it's a rather
- unintrusive change.
- - hdspmixer: Bump version number to 1.10
- Florian Faber's last hdspmixer64 version was 1.9, so let's make this the
- successor (contains everything that was in 1.9 and also Fredrik's work
- on AES(32) support)
- - hdspmixer: Increase height of about window.
- The copyright list got longer, so we need more vertical space.
- - hdspmixer: Update FSF address.
- The FSF has moved, so reflect this change in the about dialogue.
- See also http://www.fsf.org/about/contact/
- - hdspmixer: Improve code coherency
- Move channelmappings into one place (channelmap.h). Also, use "aes32"
- when referring to the card itself to avoid confusion and to be coherent
- with the remaining naming scheme.
- This work has mainly been done by Fredrik Lingvall.
- - hdspmixer: Style and purity fixes for name arrays.
- Contribution by Fredrik Lingvall <fredrik.lingvall@gmail.com>
- - hdspmixer: Add RME HDSPe AES and AES32 support.
- Code provided by Fredrik Lingvall <fredrik.lingvall@gmail.com>
- It seems the PCIe (AES) and PCI (AES32) versions behave the same, so we
- can kill two birds with one stone.
- - hdspmixer: Break overlong line and don't plenken.
- Pure code beautification, just in case somebody ever needs to touch this
- again.
- - hdspmixer: Beautification; Lower nesting depth
- Exit the loop if card < 0. No need to nest the actual code in the else
- branch.
- - hdspmixer: Improve readability.
- Group the statements into logical blocks.
- - hdspmixer: retab and reindent code.
- Something seriously was wrong, probably different patches with different
- tabwidth levels. I switched to spaces to avoid ambiguity and let vim
- reindent everything.
- - hdspmixer: Fix detection for non-MADIface RME cards
- When adding RayDAT support, detection for cards like the 9652 was
- accidently lost. This patch re-adds the missing bits.
- - hdspmixer: add missing channelmap.h to Makefile.am
alsa-firmware
Core
- - Release v1.0.25
- - Release v1.0.24.1
AudioScience ASIHPI Firmware
- - Update asihpi firmware to 4.10.05
- - Update asihpi firmware to version 4.08
- - asihpi - Updated to firmware 40600
RME HDSP Firmware
- - hdsp: Add rpm_firmware.bin to EXTRA_DIST
alsa-plugins
Core
- - Release v1.0.25
- - pulse: Install a PulseAudio config snippet into alsa.conf.d
- v2: Assing priorities to the config snippets.
A52 Output plugin
- - a52: Fix build with older ffmpeg versions.
- This fixes a regression introduced in:
- 40c129a160f37fe9488b2828d6299f99c269703e
- - a52 - Fix a52 codec with recent libavcodec updates
- The recent libavcodec is changed to accept only float input, but
- the old ac3 encoder is still somehow working with a different name.
- This patch makes it working again.
Documentation
- - pulse: Add fallback option
- Added "fallback" option to give the PCM / controller name as a fallback
- when connecting to PA server fails.
Jack PCM plugin
- - jack: Fix revents for playback
- The following patch will make snd_pcm_poll_descriptors_revents()
- return the correct value when used on a jack plugin device.
- The current version returns POLLIN regardless of capture or
- playback.
- - jack: Fix hanging applications when using jack plugin
- As described in issue #2727
- https://bugtrack.alsa-project.org/alsa-bug/view.php?id=2727
- applications hang after some seconds when using the jack plugin.
- Kevin Ross <kevin@familyross.net> writes:
- The cause: The plugin creates a pipe, so that the fd's could be
- polled to indicate completion of a transfer. However, the call to
- write() blocks when playing audio, as nothing actually reads from the
- pipe, and it fills up until it blocks.
- Making the socket non-blocking fixes the problem, and testing with
- playback and capture both work properly for me now.
- [Adrian: I've also tested Kevin's patch and confirm it works.]
PulseAudio -> ALSA plugin
- - Added missing configuration files for the pulse plugin
- - Set CLOEXEC flag for pipes in PulseAudio plugins
- I have noticed that Alsa / PulseAudio are leaking a couple of pipes after a
- fork/exec, and have traced the leak to the following two plugins:
- libasound_module_ctl_pulse.so
- libasound_module_pcm_pulse.so
- This is with Fedora 15. I have attached a patch for the problem.
- - pulse: Install a PulseAudio config snippet into alsa.conf.d
- v2: Assing priorities to the config snippets.
- - pulse - Define a dummy PA_CHECK_VERSION() when not available
- An old version of PA doesn't define this macro, and gives a build error.
- - pulse - only underrun if no more data has been written
- Original patch from David Henningsson <david.henningsson@canonical.com>
- If more data has already been written after the underrun, the underrun
- will automatically end and therefore we should not report it or
- restart the stream.
- [ This patch adds a more check of underrun with a new PA function so
- that the underrun handles works more reliably. As the feature is
- supported only in a recent version of PA, the underrun handling is
- enabled as default now for the new PA, while it's still disabled for
- older PA. -- tiwai ]
- - pulse: Set PA_CONTEXT_NOAUTOSPAWN when fallback is available
- - pulse: Add fallback option
- Added "fallback" option to give the PCM / controller name as a fallback
- when connecting to PA server fails.
- - Pulse: Fix snd_pcm_avail returning 0 in some cases
- Due to a round-off error, snd_pcm_avail could in some cases
- return 0 even though more data could be written to the stream.
- Reported-by: Maarten Lankhorst <m.b.lankhorst@gmail.com>
alsa-python
Core
- - Release v1.0.25
Test python scripts
- - ctltest1.py: use new class member names
pyalsa.alsamixer module
- - alsamixer: Fix bad PyArg_ParseTuple format strings
- A number of calls to PyArg_ParseTuple use "I" for ints and "L" for
- long ints. Fix these to be "i" and "l" respectively.
Detailed changelog between 1.0.17 and 1.0.25 releases
Changelog between 1.0.17 and 1.0.25 releases
alsa-oss
Core
- - Release v1.0.25
- - select: better check for null bit arrays
PCM Emulation
- - pcm: check for XRUN state for GETxSPACE and GETxPTR ioctls

Custom Search