Difference between revisions of "Detailed changes v1.0.23 v1.0.24"
From AlsaProject
Latest revision as of 02:00, 15 January 2001
[edit] Detailed changelog between 1.0.22 and 1.0.24 releases
[edit] Changelog between 1.0.23 and 1.0.24 releases
[edit] alsa-python
[edit] Core
- - Release v1.0.24
[edit] Python utilities
- - alsa-python mixer: add poll_fds property
- This patch adds poll_fds property to pyalsa alsamixer. register_poll works
- with Python's select.poll but not with main loop of GUI toolkits. This is
- already done for hcontrol by Clemens Ladisch, patch is based on his patch.
- Other patch fixes memory leak as reported by him.
[edit] pyalsa.alsamixer module
- - alsa-python mixer: add poll_fds property
- This patch adds poll_fds property to pyalsa alsamixer. register_poll works
- with Python's select.poll but not with main loop of GUI toolkits. This is
- already done for hcontrol by Clemens Ladisch, patch is based on his patch.
- Other patch fixes memory leak as reported by him.
[edit] pyalsa.alsaseq module
- - Add register_poll for alsaseq
[edit] Detailed changelog between 1.0.23 and 1.0.24 releases
[edit] Changelog between 1.0.23 and 1.0.24 releases
[edit] alsa-driver
[edit] Sound Core
- - Release v1.0.24
- - Build snd-usb-6fire only with 2.6.28 or later kernels
- for usb_poison_urb()
- - linux 2.4 compilation fixes
- - Add the check of linux/lzo.h
- - Add missing creation of include/trace/events directory
- - Add a creation of dummy trace/events/asoc.h
- - Create a dummy pcmcia/cs.h
- - configure.in: Create missing include/pcmcia
- With kernels >= 2.6.36, the include/pcmcia/cs_types.h file can not
- be created because of the missing parent directory.
- - autoconf.in: CHECK_REQUIRED_KERNEL_HEADER v2
- - configure.in: change CHECK_REQUIRED_KERNEL_HEADER
- In some distros, the include/linux/autoconf.h is empty and
- the contentens is in include/generated/autoconf.h .
- - configure.in: Fix and improve logic for detection of kernel directory
- - INSTALL: More explanations to compilation Linux kernel tree
- - INSTALL: Building from kernel tree doc fixes
- Does the following patch seem reasonable? It certainly describes the
- Requirements in a way I personally understand better? Hopefully, it's
- Accurate in any other scenarios that I'm not familiar with:-)
- Be more explicit about which versions of which components need to match when
- building the ALSA modules from a complete Linux kernel tree.
- - configure.in: CONFIG_SND_KERNELBUILD shoud not be empty
- - Fix wrong check of pm_qos_add_request() in configure script
- - More fixes for new PCMCIA stuff
- - Fixed typos in previous pm_qos_req build fixes
- - an attempt to fix compilations for new static pm_qos_request
- - Fix build with the updated usb-audio stack
- - Fix build with openSUSE Factory kernels
- A few fixes for building alsa-driver modules properly with openSUSE
- Factory kernels.
- - Use the kernel-build directory for 2.6 kernel base directory
- instead of source directory
- - Undefine ALSA-related definitions before including the new config.h
- and config1.h; a hack by including *.in file for that
- - Properly check config.h and generated/autoconf.h in configure script
- - Fix builds with the new USB stack
- - Build with the updated usb-audio driver
- A new v2 struct was introduced.
- - Add check of new usb_alloc_coherent() and pm_qos_request()
- - Limit es1968/maestro3 input support for older kernels
- The proper struct device is added input_dev since 2.6.23 kernel.
- - Add check of valid linux/usb/audio-v2.h to configure script
- - Fix regression for class1 usbaudio device support
- Backport fix from sound tree.
- - Fix build failures with older input layer
- Allow the new input stuff for es1968 and maestro3 only for newer kernels
- - Move asihpi driver to linux kernel tree
- Fix the rest build stubs.
[edit] ALSA Core
- - Fix MODULE_ALIAS_CHARDEV warnings
- - linux 2.4 compilation fixes
- - Add pm_wakeup_event() and request_any_context_irq() wrappers
- - Add cancel_delayed_work_sync() wrapper
- Just to make it working somehow...
- - Fix build error due to flush_work_sync() wrapper
- - Fix build with much older versions for flush_work_sync() wrapper
- - Add flush_work_sync() and flush_delayed_work_sync() wrappers
- ... somehow equivalent ones.
- - Add dummy wrapper for ASoC jack detection trace events
- - Regenerate ascore/sound.patch
- - Add a creation of dummy trace/events/asoc.h
- - Add vzalloc() wrapper
- - Add CONFIG_SYSFS_DEPRECATED hack for older kernels
- - Fix build errors with 2.6.37-rc1 update
- Refreshed patch, added noop_llseek compat definition for older kernels.
- - include/adriver.h: Define pr_warn to allow compilation against older kernels
- In my testing of the daily tarball, I am unable to build against 2.6.32. I
- assume that older kernels would be affected in a similar way.
- - Compilation fix for RHEL 5.6 (INIT_DELAYED_WORK)
- - Move USB wrapper to individual header
- Also add a dummy definition of missing USB_SPEED_SUPER for older kernels.
- - an attempt to fix compilations for new static pm_qos_request
- - Fix build with the updated usb-audio stack
- - Add hex_to_bin() wrapper
- - Fix build with openSUSE Factory kernels
- A few fixes for building alsa-driver modules properly with openSUSE
- Factory kernels.
- - Use the kernel-build directory for 2.6 kernel base directory
- instead of source directory
- - Undefine ALSA-related definitions before including the new config.h
- and config1.h; a hack by including *.in file for that
- - Properly check config.h and generated/autoconf.h in configure script
- - Fix builds with the new USB stack
- - Build with the updated usb-audio driver
- A new v2 struct was introduced.
- - Add check of new usb_alloc_coherent() and pm_qos_request()
- - Update usb/audio*.h compat files, too
- Copied from sound git tree for the commit
- e213e9cf707c51808e372dabd1070a61af17e77b
- - Add missing packed attribute to usb_audio_compat.h
- - Make sure to undefine CONFIG_SND_HDA_INPUT_JACK in adriver.h
- With the older kernel, autoconf.h may still keep CONFIG_SND_HDA_INPUT_JACK=y
- while the configure sets CONFIG_SND_JACK=n. We had a hack to undefine
- it forcibly, but this should have been done after the inclusion of
- autoconf.h. Otherwise it gives Oops in patch_sigmatel.c.
- Reported-and-tested-by: Robert Krakora <rob.krakora@messagenetsystems.com>
- - Fix regression for class1 usbaudio device support
- Backport fix from sound tree.
- - tree-wide: fix comment/printk typos
- "gadget", "through", "command", "maintain", "maintain", "controller", "address",
- "between", "initiali[zs]e", "instead", "function", "select", "already",
- "equal", "access", "management", "hierarchy", "registration", "interest",
- "relative", "memory", "offset", "already",
- - ALSA: support module on-demand loading for seq and timer
- If CONFIG_SND_DYNAMIC_MINORS is used, assign /dev/snd/seq and
- /dev/snd/timer the usual static minors, and export specific
- module aliases to generate udev module on-demand loading
- instructions:
- $ cat /lib/modules/2.6.33.4-smp/modules.devname
- # Device nodes to trigger on-demand module loading.
- microcode cpu/microcode c10:184
- fuse fuse c10:229
- ppp_generic ppp c108:0
- tun net/tun c10:200
- uinput uinput c10:223
- dm_mod mapper/control c10:236
- snd_timer snd/timer c116:33
- snd_seq snd/seq c116:1
- The last two lines instruct udev to create device nodes, even
- when the modules are not loaded at that time.
- As soon as userspace accesses any of these nodes, the in-kernel
- module-loader will load the module, and the device can be used.
- The header file minor calculation needed to be simplified to
- make __stringify() (supports only two indirections) in
- the MODULE_ALIAS macro work.
- This is part of systemd's effort to get rid of unconditional
- module load instructions and needless init scripts.
- - ALSA: pcm: support for period wakeup disabling
- This patch allows to disable period interrupts which are
- not needed when the application relies on a system timer
- to wake-up and refill the ring buffer. The behavior of
- the driver is left unchanged, and interrupts are only
- disabled if the application requests this configuration.
- The behavior in case of underruns is slightly different,
- instead of being detected during the period interrupts the
- underruns are detected when the application calls
- snd_pcm_update_avail, which in turns forces a refresh of the
- hw pointer and shows the buffer is empty.
- More specifically this patch makes a lot of sense when
- PulseAudio relies on timer-based scheduling to access audio
- devices such as HDAudio or Intel SST. Disabling interrupts
- removes two unwanted wake-ups due to period elapsed events
- in low-power playback modes. It also simplifies PulseAudio
- voice modules used for speech calls.
- To quote Lennart "This patch looks very interesting and
- desirable. This is something have long been waiting for."
- Support for this in hardware drivers is optional.
- - BKL: remove extraneous #include <smp_lock.h>
- The big kernel lock has been removed from all these files at some point,
- leaving only the #include.
- Remove this too as a cleanup.
- - driver core: remove CONFIG_SYSFS_DEPRECATED_V2 but keep it for block devices
- This patch removes the old CONFIG_SYSFS_DEPRECATED_V2 config option,
- but it keeps the logic around to handle block devices in the old manner
- as some people like to run new kernel versions on old (pre 2007/2008)
- distros.
- - ALSA: fix unused warnings with snd_power_get_state
- If we compile the ASoC code with PM disabled, we hit stuff like:
- sound/soc/soc-dapm.c: In function 'snd_soc_dapm_suspend_check':
- sound/soc/soc-dapm.c:440: warning: unused variable 'codec'
- So tweak the stub macro to avoid these issues.
- - llseek: automatically add .llseek fop
- All file_operations should get a .llseek operation so we can make
- nonseekable_open the default for future file operations without a
- .llseek pointer.
- The three cases that we can automatically detect are no_llseek, seq_lseek
- and default_llseek. For cases where we can we can automatically prove that
- the file offset is always ignored, we use noop_llseek, which maintains
- the current behavior of not returning an error from a seek.
- New drivers should normally not use noop_llseek but instead use no_llseek
- and call nonseekable_open at open time. Existing drivers can be converted
- to do the same when the maintainer knows for certain that no user code
- relies on calling seek on the device file.
- The generated code is often incorrectly indented and right now contains
- comments that clarify for each added line why a specific variant was
- chosen. In the version that gets submitted upstream, the comments will
- be gone and I will manually fix the indentation, because there does not
- seem to be a way to do that using coccinelle.
- Some amount of new code is currently sitting in linux-next that should get
- the same modifications, which I will do at the end of the merge window.
- Many thanks to Julia Lawall for helping me learn to write a semantic
- patch that does all this.
- ===== begin semantic patch =====
- // This adds an llseek= method to all file operations,
- // as a preparation for making no_llseek the default.
- //
- // The rules are
- // - use no_llseek explicitly if we do nonseekable_open
- // - use seq_lseek for sequential files
- // - use default_llseek if we know we access f_pos
- // - use noop_llseek if we know we don't access f_pos,
- // but we still want to allow users to call lseek
- //
- @ open1 exists @
- identifier nested_open;
- @@
- nested_open(...)
- {
- <+...
- nonseekable_open(...)
- ...+>
- }
- @ open exists@
- identifier open_f;
- identifier i, f;
- identifier open1.nested_open;
- @@
- int open_f(struct inode *i, struct file *f)
- {
- <+...
- (
- nonseekable_open(...)
- |
- nested_open(...)
- )
- ...+>
- }
- @ read disable optional_qualifier exists @
- identifier read_f;
- identifier f, p, s, off;
- type ssize_t, size_t, loff_t;
- expression E;
- identifier func;
- @@
- ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)
- {
- <+...
- (
- *off = E
- |
- *off += E
- |
- func(..., off, ...)
- |
- E = *off
- )
- ...+>
- }
- @ read_no_fpos disable optional_qualifier exists @
- identifier read_f;
- identifier f, p, s, off;
- type ssize_t, size_t, loff_t;
- @@
- ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)
- {
- ... when != off
- }
- @ write @
- identifier write_f;
- identifier f, p, s, off;
- type ssize_t, size_t, loff_t;
- expression E;
- identifier func;
- @@
- ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)
- {
- <+...
- (
- *off = E
- |
- *off += E
- |
- func(..., off, ...)
- |
- E = *off
- )
- ...+>
- }
- @ write_no_fpos @
- identifier write_f;
- identifier f, p, s, off;
- type ssize_t, size_t, loff_t;
- @@
- ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)
- {
- ... when != off
- }
- @ fops0 @
- identifier fops;
- @@
- struct file_operations fops = {
- ...
- };
- @ has_llseek depends on fops0 @
- identifier fops0.fops;
- identifier llseek_f;
- @@
- struct file_operations fops = {
- ...
- .llseek = llseek_f,
- ...
- };
- @ has_read depends on fops0 @
- identifier fops0.fops;
- identifier read_f;
- @@
- struct file_operations fops = {
- ...
- .read = read_f,
- ...
- };
- @ has_write depends on fops0 @
- identifier fops0.fops;
- identifier write_f;
- @@
- struct file_operations fops = {
- ...
- .write = write_f,
- ...
- };
- @ has_open depends on fops0 @
- identifier fops0.fops;
- identifier open_f;
- @@
- struct file_operations fops = {
- ...
- .open = open_f,
- ...
- };
- // use no_llseek if we call nonseekable_open
- ////////////////////////////////////////////
- @ nonseekable1 depends on !has_llseek && has_open @
- identifier fops0.fops;
- identifier nso ~= "nonseekable_open";
- @@
- struct file_operations fops = {
- ... .open = nso, ...
- +.llseek = no_llseek, /* nonseekable */
- };
- @ nonseekable2 depends on !has_llseek @
- identifier fops0.fops;
- identifier open.open_f;
- @@
- struct file_operations fops = {
- ... .open = open_f, ...
- +.llseek = no_llseek, /* open uses nonseekable */
- };
- // use seq_lseek for sequential files
- /////////////////////////////////////
- @ seq depends on !has_llseek @
- identifier fops0.fops;
- identifier sr ~= "seq_read";
- @@
- struct file_operations fops = {
- ... .read = sr, ...
- +.llseek = seq_lseek, /* we have seq_read */
- };
- // use default_llseek if there is a readdir
- ///////////////////////////////////////////
- @ fops1 depends on !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
- identifier fops0.fops;
- identifier readdir_e;
- @@
- // any other fop is used that changes pos
- struct file_operations fops = {
- ... .readdir = readdir_e, ...
- +.llseek = default_llseek, /* readdir is present */
- };
- // use default_llseek if at least one of read/write touches f_pos
- /////////////////////////////////////////////////////////////////
- @ fops2 depends on !fops1 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
- identifier fops0.fops;
- identifier read.read_f;
- @@
- // read fops use offset
- struct file_operations fops = {
- ... .read = read_f, ...
- +.llseek = default_llseek, /* read accesses f_pos */
- };
- @ fops3 depends on !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
- identifier fops0.fops;
- identifier write.write_f;
- @@
- // write fops use offset
- struct file_operations fops = {
- ... .write = write_f, ...
- + .llseek = default_llseek, /* write accesses f_pos */
- };
- // Use noop_llseek if neither read nor write accesses f_pos
- ///////////////////////////////////////////////////////////
- @ fops4 depends on !fops1 && !fops2 && !fops3 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
- identifier fops0.fops;
- identifier read_no_fpos.read_f;
- identifier write_no_fpos.write_f;
- @@
- // write fops use offset
- struct file_operations fops = {
- ...
- .write = write_f,
- .read = read_f,
- ...
- +.llseek = noop_llseek, /* read and write both use no f_pos */
- };
- @ depends on has_write && !has_read && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
- identifier fops0.fops;
- identifier write_no_fpos.write_f;
- @@
- struct file_operations fops = {
- ... .write = write_f, ...
- +.llseek = noop_llseek, /* write uses no f_pos */
- };
- @ depends on has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
- identifier fops0.fops;
- identifier read_no_fpos.read_f;
- @@
- struct file_operations fops = {
- ... .read = read_f, ...
- +.llseek = noop_llseek, /* read uses no f_pos */
- };
- @ depends on !has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
- identifier fops0.fops;
- @@
- struct file_operations fops = {
- ...
- +.llseek = noop_llseek, /* no read or write fn */
- };
- ===== End semantic patch =====
- - ALSA: core: Allow card id change to the same string
- When user want to change the card id to the same string
- on the card via /sys/class/sound/cardX/id, do not
- report error. Instead return with success without
- doing anything.
- - include: replace unifdef-y with header-y
- unifdef-y and header-y has same semantic.
- So there is no need to have both.
- Drop the unifdef-y variant and sort all lines again
- - ALSA: pcm: Define G723 3-bit and 5-bit formats
- This defines the 24bps and 40bps (8khz sample rate) G.723 codec
- formats. They are going to be used once I submit the driver for
- an mpeg4/g723 compression card.
- I've updated the signed value to -1 as per Takashi's comments
- since these are non-linear formats.
- - ALSA: include/sound/asound.h whitespace fixups
- This fixes some whitespace/indentation flaws I stumbled over.
[edit] SoC PXA2xx Core
[edit] Control Midlevel
- - ALSA: core, oxygen, virtuoso: add an enum control info helper
- Introduce the helper function snd_ctl_enum_info() to fill out the
- elem_info fields for an enumerated control.
- - ALSA: tlv - Define numbers in sound/tlv.h
- - ALSA: prevent heap corruption in snd_ctl_new()
- The snd_ctl_new() function in sound/core/control.c allocates space for a
- snd_kcontrol struct by performing arithmetic operations on a
- user-provided size without checking for integer overflow. If a user
- provides a large enough size, an overflow will occur, the allocated
- chunk will be too small, and a second user-influenced value will be
- written repeatedly past the bounds of this chunk. This code is
- reachable by unprivileged users who have permission to open
- a /dev/snd/controlC* device (on many distros, this is group "audio") via
- the SNDRV_CTL_IOCTL_ELEM_ADD and SNDRV_CTL_IOCTL_ELEM_REPLACE ioctls.
[edit] Jack Input Event Midlevel
- - ALSA: Add more jack button slots
- Some devices have more flexible microphone detection and can detect
- a wider range of buttons.
[edit] PCM Midlevel
- - Regenerate core/pcm_native.patch
- - Add pm_qos_remove() hack for older kernels in snd_pcm_release_substream()
- - Fixed typos in previous pm_qos_req build fixes
- - an attempt to fix compilations for new static pm_qos_request
- - core: compilation fix for new QoS API, move snd-aloop code to alsa-kernel tree
- - Add check of new usb_alloc_coherent() and pm_qos_request()
- - tree-wide: fix comment/printk typos
- "gadget", "through", "command", "maintain", "maintain", "controller", "address",
- "between", "initiali[zs]e", "instead", "function", "select", "already",
- "equal", "access", "management", "hierarchy", "registration", "interest",
- "relative", "memory", "offset", "already",
- - ALSA: pcm: remember to always call va_end() on stuff that we va_start()
- The Coverity checker spotted that we do not always remember to call
- va_end() on 'args' in failure paths in snd_pcm_hw_rule_add().
- Here's a patch to fix that up (compile tested only) - it also removes
- some annoying trailing whitespace that caught my eye while I was in the
- area..
- - ALSA: sound/core/pcm_lib.c: Remove unnecessary semicolons
- - ALSA: pcm: optimize xrun detection in no-period-wakeup mode
- Add a lightweight condition on top of the xrun checking so that we can
- avoid the division when the application is calling the update function
- often enough.
- Suggested-by: Jaroslav Kysela <perex@perex.cz>
- - ALSA: pcm: detect xruns in no-period-wakeup mode
- When period wakeups are disabled, successive calls to the pointer update
- function do not have a maximum allowed distance, so xruns cannot be
- detected with the pointer value only.
- To detect xruns, compare the actually elapsed time with the time that
- should have theoretically elapsed since the last update. When the
- hardware pointer has wrapped around due to an xrun, the actually elapsed
- time will be too big by about hw_ptr_buffer_jiffies.
- - ALSA: pcm: support for period wakeup disabling
- This patch allows to disable period interrupts which are
- not needed when the application relies on a system timer
- to wake-up and refill the ring buffer. The behavior of
- the driver is left unchanged, and interrupts are only
- disabled if the application requests this configuration.
- The behavior in case of underruns is slightly different,
- instead of being detected during the period interrupts the
- underruns are detected when the application calls
- snd_pcm_update_avail, which in turns forces a refresh of the
- hw pointer and shows the buffer is empty.
- More specifically this patch makes a lot of sense when
- PulseAudio relies on timer-based scheduling to access audio
- devices such as HDAudio or Intel SST. Disabling interrupts
- removes two unwanted wake-ups due to period elapsed events
- in low-power playback modes. It also simplifies PulseAudio
- voice modules used for speech calls.
- To quote Lennart "This patch looks very interesting and
- desirable. This is something have long been waiting for."
- Support for this in hardware drivers is optional.
- - BKL: remove extraneous #include <smp_lock.h>
- The big kernel lock has been removed from all these files at some point,
- leaving only the #include.
- Remove this too as a cleanup.
- - ALSA: pcm - Fix race with proc files
- The PCM proc files may open a race against substream close, which can
- end up with an Oops. Use the open_mutex to protect for it.
- - ALSA: pcm - Fix unbalanced pm_qos_request
- The pm_qos_request isn't freed properly when OSS PCM emulation is used
- because it skips snd_pcm_hw_free() call but directly releases the
- stream. This resulted in Oops later.
- Tested-by: Simon Kirby <sim@hostway.ca>
- - sound: Remove unnecessary casts of private_data
- - sound: Use static const char * const where possible
- - ALSA: pcm: add more format names
- There were some new formats added in commit 15c0cee6c809 "ALSA: pcm:
- Define G723 3-bit and 5-bit formats". That commit increased
- SNDRV_PCM_FORMAT_LAST as well. My concern is that there are a couple
- places which do:
- for (i = 0; i < SNDRV_PCM_FORMAT_LAST; i++) {
- if (dummy->pcm_hw.formats & (1ULL << i))
- snd_iprintf(buffer, " %s", snd_pcm_format_name(i));
- }
- I haven't tested these but it looks like if "i" were equal to
- SNDRV_PCM_FORMAT_G723_24 or higher then we might read past the end of
- the array.
- - ALSA: pcm midlevel code - add time check for double interrupt acknowledge
- The current code in pcm_lib.c do all checks using only the position
- in the ring buffer. Unfortunately, where the interrupts gets delayed or
- merged into one, we need another timing source to check when the
- buffer size boundary overlaps to avoid the wrong updating of the
- ring buffer pointers.
- This code uses jiffies to check the right time window without any
- performance impact.
- - ALSA: emu10k1 - delay the PCM interrupts (add pcm_irq_delay parameter)
- With some hardware combinations, the PCM interrupts are acknowledged
- before the period boundary from the emu10k1 chip. The midlevel PCM code
- gets confused and the playback stream is interrupted.
- It seems that the interrupt processing shift by 2 samples is enough
- to fix this issue. This default value does not harm other,
- non-affected hardware.
- More information: Kernel bugzilla bug#16300
- - pm_qos: Get rid of the allocation in pm_qos_add_request()
- All current users of pm_qos_add_request() have the ability to supply
- the memory required by the pm_qos routines, so make them do this and
- eliminate the kmalloc() with pm_qos_add_request(). This has the
- double benefit of making the call never fail and allowing it to be
- called from atomic context.
- - ALSA: pcm core - add a safe check to the silence filling function
- In situation when appl_ptr is far greater then hw_ptr, the hw_avail value
- can be greater than buffer_size. Check for this.
- - ALSA: pcm_lib: avoid timing jitter in snd_pcm_read/write()
- When using poll() to wait for the next period -- or avail_min samples --
- one gets a consistent delay for each system call that is usually just a
- little short of the selected period time. However, When using
- snd_pcm_read/write(), one gets a jittery delay that alternates between
- less than a millisecond and approximately two period times. This is
- caused by snd_pcm_lib_{read,write}1() transferring any available samples
- to the user's buffer and adjusting the application pointer prior to
- sleeping to the end of the current period. When the next period
- interrupt occurs, there is then less than avail_min samples remaining to
- be transferred in the period, so we end up sleeping until a second
- period occurs.
- This is solved by using runtime->twake as the number of samples needed
- for a wakeup in addition to selecting the proper wait queue to wake in
- snd_pcm_update_state(). This requires twake to be non-zero when used
- by snd_pcm_lib_{read,write}1() even if avail_min is zero.
- - ALSA: pcm: Define G723 3-bit and 5-bit formats
- This defines the 24bps and 40bps (8khz sample rate) G.723 codec
- formats. They are going to be used once I submit the driver for
- an mpeg4/g723 compression card.
- I've updated the signed value to -1 as per Takashi's comments
- since these are non-linear formats.
- - ALSA: pcm: fix delta calculation at boundary wraparound
- In the cleanup of the hw_ptr update functions in 2.6.33, the calculation
- of the delta value was changed to use the modulo operator to protect
- against a negative difference due to the pointer wrapping around at the
- boundary.
- However, the ptr variables are unsigned, so a negative difference would
- result in the two complement's value which has no relation to the actual
- difference relative to the boundary; the result is typically some value
- near LONG_MAX-boundary. Furthermore, even if the modulo operation would
- be done with signed types, the result of a negative dividend could be
- negative.
- The invalid delta value is then caught by the following checks, but this
- means that the pointer update is ignored.
- To fix this, use a range check as in the other pointer calculations.
- - ALSA: pcm: fix the fix of the runtime->boundary calculation
- Commit 7910b4a1db63fefc3d291853d33c34c5b6352e8e in 2.6.34 changed the
- runtime->boundary calculation to make this value a multiple of both the
- buffer_size and the period_size, because the latter is assumed by the
- runtime->hw_ptr_interrupt calculation.
- However, due to the lack of a ioctl that could read the software
- parameters before they are set, the kernel requires that alsa-lib
- calculates the boundary value, too. The changed algorithm leads to
- a different boundary value used by alsa-lib, which makes, e.g., mplayer
- fail to play a 44.1 kHz file because the silence_size parameter is now
- invalid; bug report:
- <https://bugtrack.alsa-project.org/alsa-bug/view.php?id=5015>.
- This patch reverts the change to the boundary calculation, and instead
- fixes the hw_ptr_interrupt calculation to be period-aligned regardless
- of the boundary value.
- - ALSA: pcm - Use pgprot_noncached() for MIPS non-coherent archs
- MIPS non-coherent archs need the noncached pgprot in mmap of PCM buffers.
- But, since the coherency needs to be checked dynamically via
- plat_device_is_coherent(), we need an ugly check dependent on MIPS
- in ALSA core code.
- This should be cleaned up in MIPS arch side (e.g. creating
- dma_mmap_coherent()) in near future.
- Tested-by: Wu Zhangjin <wuzhangjin@gmail.com>
- - PM QOS update
- This patch changes the string based list management to a handle base
- implementation to help with the hot path use of pm-qos, it also renames
- much of the API to use "request" as opposed to "requirement" that was
- used in the initial implementation. I did this because request more
- accurately represents what it actually does.
- Also, I added a string based ABI for users wanting to use a string
- interface. So if the user writes 0xDDDDDDDD formatted hex it will be
- accepted by the interface. (someone asked me for it and I don't think
- it hurts anything.)
- This patch updates some documentation input I got from Randy.
[edit] RawMidi Midlevel
- - ALSA: rawmidi: fix oops (use after free) when unloading a driver module
- When a driver module is unloaded and the last still open file is a raw
- MIDI device, the card and its devices will be actually freed in the
- snd_card_file_remove() call when that file is closed. Afterwards, rmidi
- and rmidi->card point into freed memory, so the module pointer is likely
- to be garbage.
- (This was introduced by commit 9a1b64caac82aa02cb74587ffc798e6f42c6170a.)
- Reported-by: Krzysztof Foltman <wdev@foltman.com>
- - ALSA: rawmidi: fix the get next midi device ioctl
- If we pass in a device which is higher than SNDRV_RAWMIDI_DEVICES then
- the "next device" should be -1. This function just returns device + 1.
- But the main thing is that "device + 1" can lead to a (harmless) integer
- overflow and that annoys static analysis tools.
- [fix the case for device == SNDRV_RAWMIDI_DEVICE by tiwai]
[edit] Timer Midlevel
- - ALSA: support module on-demand loading for seq and timer
- If CONFIG_SND_DYNAMIC_MINORS is used, assign /dev/snd/seq and
- /dev/snd/timer the usual static minors, and export specific
- module aliases to generate udev module on-demand loading
- instructions:
- $ cat /lib/modules/2.6.33.4-smp/modules.devname
- # Device nodes to trigger on-demand module loading.
- microcode cpu/microcode c10:184
- fuse fuse c10:229
- ppp_generic ppp c108:0
- tun net/tun c10:200
- uinput uinput c10:223
- dm_mod mapper/control c10:236
- snd_timer snd/timer c116:33
- snd_seq snd/seq c116:1
- The last two lines instruct udev to create device nodes, even
- when the modules are not loaded at that time.
- As soon as userspace accesses any of these nodes, the in-kernel
- module-loader will load the module, and the device can be used.
- The header file minor calculation needed to be simplified to
- make __stringify() (supports only two indirections) in
- the MODULE_ALIAS macro work.
- This is part of systemd's effort to get rid of unconditional
- module load instructions and needless init scripts.
- - ALSA: timer: automatically load the high-resolution timer
- Increase the default timer limit so that snd-hrtimer.ko can be
- automatically loaded when needed, e.g., when used as the default
- sequencer timer. This replaces the check for the obsolete
- CONFIG_SND_HPET.
- - ALSA: take tu->qlock with irqs disabled
- We should disable irqs when we take the tu->qlock because it is used in
- the irq handler. The only place that doesn't is
- snd_timer_user_ccallback(). Most of the time snd_timer_user_ccallback()
- is called with interrupts disabled but the the first ti->ccallback()
- call in snd_timer_notify1() has interrupts enabled.
- This was caught by lockdep which generates the following message:
- > =================================
- > [ INFO: inconsistent lock state ]
- > 2.6.34-rc5 #5
- > ---------------------------------
- > inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage.
- > dolphin/4003 [HC1[1]:SC0[0]:HE0:SE1] takes:
- > (&(&tu->qlock)->rlock){?.+...}, at: [<f84ec472>] snd_timer_user_tinterrupt+0x28/0x132 [snd_timer]
- > {HARDIRQ-ON-W} state was registered at:
- > [<c1048de9>] __lock_acquire+0x654/0x1482
- > [<c1049c73>] lock_acquire+0x5c/0x73
- > [<c125ac3e>] _raw_spin_lock+0x25/0x34
- > [<f84ec370>] snd_timer_user_ccallback+0x55/0x95 [snd_timer]
- > [<f84ecc4b>] snd_timer_notify1+0x53/0xca [snd_timer]
- Reported-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
[edit] /isa/Makefile
- - ALSA: ISA: Remove snd-sgalaxy
- Its hardware is handled more fully by the new azt1605/azt2316 drivers.
- - ALSA: ISA: New Aztech Sound Galaxy driver
- This is a new driver for Aztech Sound Galaxy ISA soundcards based on the
- AZT1605 and AZT2316 chipsets. It's constructed as two seperate drivers
- for either chipset generated from the same source file, with (very)
- minimal ifdeffery.
- The drivers check the SB DSP version to decide if they are being loaded
- for the right chip. AZT1605 returns 2.1 by default and AZT2316 3.1.
- This isn't full-proof as the DSP version can actually be set through
- software but it's close enough -- as far as I've been able to see, the
- DSP version can not be stored in the EEPROM and the cards will therefore
- startup with the defaults.
- This distinction could (with the same success rate) also be used to
- decide which chip we're looking at at runtime meaning a single, merged
- driver is also an option but I feel it's actually nicer this way. A
- merged driver would have to postpone translating the passed in resource
- values to the card configuration until it knew which one it was looking
- at and would need to postpone erring out on mpu_irq=10 for azt1605 and
- mpu_irq=3 for azt2316.
- The drivers have been tested on various cards. For snd-azt1605:
- FCC-ID I38-MMSN811: Aztech Sound Galaxy Nova 16 Extra
- FCC-ID I38-MMSN822: Aztech Sound Galaxy Pro 16 II
- and for snd-azt2316:
- FCC-ID I38-MMSN824: Aztech Sound Galaxy Pro 16 AB
- FCC-ID I38-MMSN826: Trust Sound Expert DeLuxe Wave 32 (05201)
- FCC-ID I38-MMSN830: Trust Sound Expert DeLuxe 16+ (05202)
- FCC-ID I38-MMSN837: Packard Bell ISA Soundcard 030069
- FCC-ID I38-MMSN846: Trust Sound Expert DeLuxe 16-3D (06300)
- FCC-ID I38-MMSN847: Trust Sound Expert DeLuxe Wave 32-3D (06301)
- FCC-ID I38-MMSN852: Aztech Sound Galaxy Waverider Pro 32-3D
- 826 and 846 were also marketed directly by Aztech and then known as:
- FCC-ID I38-MMSN826: Aztech Sound Galaxy Waverider 32+
- FCC-ID I38-MMSN846: Aztech Sound Galaxy Nova 16 Extra II-3D
- Together, these cover the AZT1605 and AT2316A, AZT2316R and AZT2316-S
- chipsets. All cards work fully -- full-duplex PCM, MIDI and FM. Full
- duplex is a little flaky on some.
- I38-MSN811 tends to not work in full-duplex but sometimes does with the
- highest success rate being achieved when you first start the capture and
- then a playback instead of the other way around (it's a CS4231-KL
- codec).
- The cards with an AD1845XP codec (my I38-MMSN826 and one of my
- I38-MMSN830s) are also somewhat duplex-challenged. Sometimes full-duplex
- works, sometimes not and this varies from try to try. This seems likely
- to be a timing problem somewhere inside wss-lib.
- I38-MMSN826 has an additional "ICS2115 WaveFront" wavetable synth
- onboard that isn't supported yet. The wavetable synths on I38-MMSN847
- and I38-MMSN852 are wired directly to the standard MPU-401 UART and the
- AUX1 input on the codec and work without problem.
- CD-ROM audio on the cards is routed to the codec "Line" input, Line-In
- to its Aux input, and FM/Wavetable to its AUX1 input. I did not rename
- the controls due to the capture source enumeration: I see that
- capture-source overrides are hardcoded in wss-lib and this is just too
- ugly to live.
- Versus the old snd-sgalaxy driver these drivers add support for the
- models without a configuration EEPROM (which are common), full-duplex,
- MPU-401 UART and OPL3. In the future they might grow support for that
- ICS2115 WaveFront synth on 826 and an hwdep interface to write to the
- EEPROM on the models that have one.
[edit] /soc/Makefile
- - ASoC: tegra: Kconfig and Makefile
- - ASoC: sst v2: Add makefiles and kconfigs changes
- This patch adds the makefile and kconfig changes for mid asoc drivers:
- platform and machine driver which are introduced in 2 preceeding patches
- - ASoC: Samsung: Rename from s3c24xx to samsung
- Finally, move the 's3c24xx' directory to 'samsung'
- - ASoC: Fix sorting of Makefile and Kconfig
- - ASoC: Add JZ4740 ASoC support
- This patch adds ASoC support for JZ4740 SoCs I2S module.
- - ASoC: ep93xx i2s audio driver
- Add ep93xx i2s audio driver
- - ASoC: kirkwood: Add i2s support
- This patch enables support for the i2s controller available on kirkwood
- platforms
- - ASoC: NUC900/audio: add nuc900 audio driver support
- Add support for NUC900 AC97
[edit] /soc/codecs/Makefile
- - ASoC: WM8991: Add initial WM8991 driver
- The WM8991 is a highly integrated ultra-low power hi-fi CODEC designed for
- handsets rich in multimedia features such as GPS, mobile TV, digital audio
- playback and gaming.
- This driver was originally written by Graeme Gregory and has been maintained
- out of tree by Mark Brown and Dimitris Papastamos.
- - ASoC: sst v2: Add sn95031 codec driver
- This patch adds the sn95031 asoc codec driver. This driver currently
- supports only playback. Capture and jack detection to be added later
- - ASoC: DMIC codec: Adding a generic DMIC codec
- This codec is to be used by the DMIC driver to
- control the DMIC codec. This driver will be used on future
- implementations of the DMIC driver to support codec specific
- features.
- At this time, the codec driver just registers the codec DAI.
- - ASoC: Add initial WM8995 driver
- The WM8995 is a digital audio hub CODEC designed for smartphones.
- The current driver supports most of the basic functionality of the
- WM8995.
- - ASoC: Add initial WM8737 driver
- The WM8737 is a low power, flexible stereo ADC designed for portable
- applications. This driver supports most of the functionality of the
- WM8737, though some features such as the ALC are not yet implemented.
- - ASoC: Move WM8994 read/write access data into separate file
- Makes the WM8994 driver file itself substantially smaller.
- - ASoC: WM8770: Initial driver
- The WM8770 is a high performance, multi-channel audio
- codec. The WM8770 is ideal for surround sound processing
- applications for home hi-fi, automotive and other audio
- visual equipment.
- - ASoC: add support for alc562[123] codecs
- This patch is adding support for alc562[123] codecs. It's based
- on the source code available in HP source code and other places.
- - ASoC: Restore MAX98088 CODEC driver
- This reverts commit f6765502f8daae3d237a394889276c8987f3e299 and adds
- the missing include file.
- - Revert "ASoC: Add max98088 CODEC driver"
- This reverts commit e65d255a5a610ce9e185e0df855250706aca7c21 since it
- does not build.
- - ASoC: Add max98088 CODEC driver
- This patch adds the MAX98088 CODEC driver.
- - ASoC: Compress WM8962 register access map
- Reduce the source code size still futher by only specifying non-zero
- rows in the WM8962 access map.
- - ASoC: WM8804: Initial driver
- The WM8804 is a high performance consumer mode S/PDIF transceiver with
- support for 1 received channel and 1 transmitted channel.
- - ASoC: WM8985: Initial driver
- The WM8985 is a low power, high quality, feature-rich stereo
- CODEC designed for portable multimedia applications that
- require low power consumption and high quality audio.
- - ASoC: Add build infrastructure for WL1273
- The Makefile and Kconfig updates for WL1273 appear to have been mising
- from the patch posted, add them.
- - ASoC: add 88pm860x codec driver
- Add 88PM860x codec driver. 88PM860x codec supports two interfaces. And it
- also supports headset/mic/hook/short detection.
- - ASoC: Add initial WM8962 CODEC driver
- The WM8962 is a low power, high performance stereo CODEC designed for
- portable digital audio applications.
- This initial driver release supports the key audio paths of the WM8962.
- Extended functionality, such as microphone detection, digital microphones
- and the advanced DSP signal enhancements provided by the device are not
- yet supported.
- - ASoC: Initial WM8741 CODEC driver
- The WM8741 is a very high performance stereo DAC designed for audio
- applications such as professional recording systems, A/V receivers and
- high specification CD, DVD and home theatre systems. The device supports
- PCM data input word lengths from 16 to 32-bits and sampling rates up to
- 192kHz. The WM8741 also supports DSD bit-stream data format, in both
- direct DSD and PCM-converted DSD modes.
- TODO: Expand wm8741_set_dai_sysclk and rate_constraint members to
- allow for all supported sample rate / Master Clock frequency combinations.
- Fully enable control of supplies.
- - ASoC: Add JZ4740 codec driver
- This patch adds support for the JZ4740 internal codec.
- - ASoC: Add driver for cs42l51
- This patch is adding a ASoC driver for the cs42l51 from Cirrus Logic.
- Master mode and spi mode are not supported.
- - ASoC: Add WM9090 amplifier driver
- The WM9090 is a high performance low power audio subsystem, including
- headphone and class D speaker drivers.
- Note that this driver is a standalone CODEC driver and so is only
- immediately suitable for use with the WM9090 as a standalone sound card
- taking line inputs, or with a DAC with no software control. The pending
- ASoC multi-CODEC support will expand the range of systems that can use
- the driver, or system-specific adaptations can be made.
[edit] /soc/pxa/Makefile
- - ASoC: add saarb machine driver for 88pm860x
- 88PM860x codec is used in Marvell saarb development board. 88PM860x codec
- is used as master mode for SSP communication. Only I2S format is supported.
- - ASoC: add tavorevb3 machine driver for 88pm860x
[edit] AC97 Codec
- - ALSA: constify functions in ac97
- - sound: don't use flush_scheduled_work()
- flush_scheduled_work() is deprecated and scheduled to be removed.
- * cancel[_delayed]_work() + flush_scheduled_work() ->
- cancel[_delayed]_work_sync().
- * wm8350, wm8753 and soc-core use custom code to cancel a delayed
- work, execute it immediately if it was pending and wait for its
- completion. This is equivalent to flush_delayed_work_sync(). Use
- it instead.
[edit] AC97 bus driver
- - sound: Fixed line limit issue in sound/ac97_bus.c
- This is a patch to the sound/ac97_bus.c file that fixes up a 80 character
- line limit issue found by the checkpatch.pl tool.
[edit] AK4113 receiver
- - sound: don't use flush_scheduled_work()
- flush_scheduled_work() is deprecated and scheduled to be removed.
- * cancel[_delayed]_work() + flush_scheduled_work() ->
- cancel[_delayed]_work_sync().
- * wm8350, wm8753 and soc-core use custom code to cancel a delayed
- work, execute it immediately if it was pending and wait for its
- completion. This is equivalent to flush_delayed_work_sync(). Use
- it instead.
[edit] AK4114 receiver
- - sound: don't use flush_scheduled_work()
- flush_scheduled_work() is deprecated and scheduled to be removed.
- * cancel[_delayed]_work() + flush_scheduled_work() ->
- cancel[_delayed]_work_sync().
- * wm8350, wm8753 and soc-core use custom code to cancel a delayed
- work, execute it immediately if it was pending and wait for its
- completion. This is equivalent to flush_delayed_work_sync(). Use
- it instead.
[edit] AK4XXX AD/DA converters
- - ALSA: i2c/other/ak4xx-adda: Fix a compile warning with CONFIG_PROCFS=n
[edit] ALS4000 driver
- - ALSA: als4000: Fix potentially invalid DMA mode setup
- My previous patch assumed that the DMA mode (represented by 3 lowest bits of
- ALS4K_GCR99_DMA_EMULATION_CTRL register) is set to the default value 0. If
- that's not the case, it might result in invalid mode to be set.
- This patch fixes this potential problem.
- - ALSA: als4000: enable burst mode
- Enable burst mode to prevent dropouts during high PCI bus usage.
- The card is useless in X without this because of dropouts when anything moves
- on the screen (at least with PCI VGA card). Enabling this is also recommended
- by the datasheet (page 48).
[edit] ALSA Minor Numbers
- - ALSA: support module on-demand loading for seq and timer
- If CONFIG_SND_DYNAMIC_MINORS is used, assign /dev/snd/seq and
- /dev/snd/timer the usual static minors, and export specific
- module aliases to generate udev module on-demand loading
- instructions:
- $ cat /lib/modules/2.6.33.4-smp/modules.devname
- # Device nodes to trigger on-demand module loading.
- microcode cpu/microcode c10:184
- fuse fuse c10:229
- ppp_generic ppp c108:0
- tun net/tun c10:200
- uinput uinput c10:223
- dm_mod mapper/control c10:236
- snd_timer snd/timer c116:33
- snd_seq snd/seq c116:1
- The last two lines instruct udev to create device nodes, even
- when the modules are not loaded at that time.
- As soon as userspace accesses any of these nodes, the in-kernel
- module-loader will load the module, and the device can be used.
- The header file minor calculation needed to be simplified to
- make __stringify() (supports only two indirections) in
- the MODULE_ALIAS macro work.
- This is part of systemd's effort to get rid of unconditional
- module load instructions and needless init scripts.
[edit] ALSA Version
- - Release v1.0.24
[edit] ALSA sequencer
- - ALSA: support module on-demand loading for seq and timer
- If CONFIG_SND_DYNAMIC_MINORS is used, assign /dev/snd/seq and
- /dev/snd/timer the usual static minors, and export specific
- module aliases to generate udev module on-demand loading
- instructions:
- $ cat /lib/modules/2.6.33.4-smp/modules.devname
- # Device nodes to trigger on-demand module loading.
- microcode cpu/microcode c10:184
- fuse fuse c10:229
- ppp_generic ppp c108:0
- tun net/tun c10:200
- uinput uinput c10:223
- dm_mod mapper/control c10:236
- snd_timer snd/timer c116:33
- snd_seq snd/seq c116:1
- The last two lines instruct udev to create device nodes, even
- when the modules are not loaded at that time.
- As soon as userspace accesses any of these nodes, the in-kernel
- module-loader will load the module, and the device can be used.
- The header file minor calculation needed to be simplified to
- make __stringify() (supports only two indirections) in
- the MODULE_ALIAS macro work.
- This is part of systemd's effort to get rid of unconditional
- module load instructions and needless init scripts.
[edit] ALSA<-OSS emulation
- - ALSA: Don't leak in sound/core/oss/pcm_oss.c::snd_pcm_hw_param_near()
- snd_pcm_hw_param_near() will leak the memory allocated to 'save' if the
- call to snd_pcm_hw_param_max() returns less than zero.
- This patch makes sure we never leak.
- - ALSA: Fix SNDCTL_DSP_RESET ioctl for OSS emulation
- In OSS emulation, SNDCTL_DSP_RESET ioctl needs the reset of the internal
- buffer state in addition to drop of the running streams. Otherwise the
- succeeding access becomes inconsistent.
- Tested-by: Amit Nagal <helloin.amit@gmail.com>
- - ALSA: OSS mixer emulation - fix locking
- Fix mutex release and cleanup some locking code.
- - sound: Remove unnecessary casts of private_data
[edit] ALSA<-OSS sequencer
- - Fix build errors with 2.6.37-rc1 update
- Refreshed patch, added noop_llseek compat definition for older kernels.
- - llseek: automatically add .llseek fop
- All file_operations should get a .llseek operation so we can make
- nonseekable_open the default for future file operations without a
- .llseek pointer.
- The three cases that we can automatically detect are no_llseek, seq_lseek
- and default_llseek. For cases where we can we can automatically prove that
- the file offset is always ignored, we use noop_llseek, which maintains
- the current behavior of not returning an error from a seek.
- New drivers should normally not use noop_llseek but instead use no_llseek
- and call nonseekable_open at open time. Existing drivers can be converted
- to do the same when the maintainer knows for certain that no user code
- relies on calling seek on the device file.
- The generated code is often incorrectly indented and right now contains
- comments that clarify for each added line why a specific variant was
- chosen. In the version that gets submitted upstream, the comments will
- be gone and I will manually fix the indentation, because there does not
- seem to be a way to do that using coccinelle.
- Some amount of new code is currently sitting in linux-next that should get
- the same modifications, which I will do at the end of the merge window.
- Many thanks to Julia Lawall for helping me learn to write a semantic
- patch that does all this.
- ===== begin semantic patch =====
- // This adds an llseek= method to all file operations,
- // as a preparation for making no_llseek the default.
- //
- // The rules are
- // - use no_llseek explicitly if we do nonseekable_open
- // - use seq_lseek for sequential files
- // - use default_llseek if we know we access f_pos
- // - use noop_llseek if we know we don't access f_pos,
- // but we still want to allow users to call lseek
- //
- @ open1 exists @
- identifier nested_open;
- @@
- nested_open(...)
- {
- <+...
- nonseekable_open(...)
- ...+>
- }
- @ open exists@
- identifier open_f;
- identifier i, f;
- identifier open1.nested_open;
- @@
- int open_f(struct inode *i, struct file *f)
- {
- <+...
- (
- nonseekable_open(...)
- |
- nested_open(...)
- )
- ...+>
- }
- @ read disable optional_qualifier exists @
- identifier read_f;
- identifier f, p, s, off;
- type ssize_t, size_t, loff_t;
- expression E;
- identifier func;
- @@
- ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)
- {
- <+...
- (
- *off = E
- |
- *off += E
- |
- func(..., off, ...)
- |
- E = *off
- )
- ...+>
- }
- @ read_no_fpos disable optional_qualifier exists @
- identifier read_f;
- identifier f, p, s, off;
- type ssize_t, size_t, loff_t;
- @@
- ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)
- {
- ... when != off
- }
- @ write @
- identifier write_f;
- identifier f, p, s, off;
- type ssize_t, size_t, loff_t;
- expression E;
- identifier func;
- @@
- ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)
- {
- <+...
- (
- *off = E
- |
- *off += E
- |
- func(..., off, ...)
- |
- E = *off
- )
- ...+>
- }
- @ write_no_fpos @
- identifier write_f;
- identifier f, p, s, off;
- type ssize_t, size_t, loff_t;
- @@
- ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)
- {
- ... when != off
- }
- @ fops0 @
- identifier fops;
- @@
- struct file_operations fops = {
- ...
- };
- @ has_llseek depends on fops0 @
- identifier fops0.fops;
- identifier llseek_f;
- @@
- struct file_operations fops = {
- ...
- .llseek = llseek_f,
- ...
- };
- @ has_read depends on fops0 @
- identifier fops0.fops;
- identifier read_f;
- @@
- struct file_operations fops = {
- ...
- .read = read_f,
- ...
- };
- @ has_write depends on fops0 @
- identifier fops0.fops;
- identifier write_f;
- @@
- struct file_operations fops = {
- ...
- .write = write_f,
- ...
- };
- @ has_open depends on fops0 @
- identifier fops0.fops;
- identifier open_f;
- @@
- struct file_operations fops = {
- ...
- .open = open_f,
- ...
- };
- // use no_llseek if we call nonseekable_open
- ////////////////////////////////////////////
- @ nonseekable1 depends on !has_llseek && has_open @
- identifier fops0.fops;
- identifier nso ~= "nonseekable_open";
- @@
- struct file_operations fops = {
- ... .open = nso, ...
- +.llseek = no_llseek, /* nonseekable */
- };
- @ nonseekable2 depends on !has_llseek @
- identifier fops0.fops;
- identifier open.open_f;
- @@
- struct file_operations fops = {
- ... .open = open_f, ...
- +.llseek = no_llseek, /* open uses nonseekable */
- };
- // use seq_lseek for sequential files
- /////////////////////////////////////
- @ seq depends on !has_llseek @
- identifier fops0.fops;
- identifier sr ~= "seq_read";
- @@
- struct file_operations fops = {
- ... .read = sr, ...
- +.llseek = seq_lseek, /* we have seq_read */
- };
- // use default_llseek if there is a readdir
- ///////////////////////////////////////////
- @ fops1 depends on !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
- identifier fops0.fops;
- identifier readdir_e;
- @@
- // any other fop is used that changes pos
- struct file_operations fops = {
- ... .readdir = readdir_e, ...
- +.llseek = default_llseek, /* readdir is present */
- };
- // use default_llseek if at least one of read/write touches f_pos
- /////////////////////////////////////////////////////////////////
- @ fops2 depends on !fops1 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
- identifier fops0.fops;
- identifier read.read_f;
- @@
- // read fops use offset
- struct file_operations fops = {
- ... .read = read_f, ...
- +.llseek = default_llseek, /* read accesses f_pos */
- };
- @ fops3 depends on !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
- identifier fops0.fops;
- identifier write.write_f;
- @@
- // write fops use offset
- struct file_operations fops = {
- ... .write = write_f, ...
- + .llseek = default_llseek, /* write accesses f_pos */
- };
- // Use noop_llseek if neither read nor write accesses f_pos
- ///////////////////////////////////////////////////////////
- @ fops4 depends on !fops1 && !fops2 && !fops3 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
- identifier fops0.fops;
- identifier read_no_fpos.read_f;
- identifier write_no_fpos.write_f;
- @@
- // write fops use offset
- struct file_operations fops = {
- ...
- .write = write_f,
- .read = read_f,
- ...
- +.llseek = noop_llseek, /* read and write both use no f_pos */
- };
- @ depends on has_write && !has_read && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
- identifier fops0.fops;
- identifier write_no_fpos.write_f;
- @@
- struct file_operations fops = {
- ... .write = write_f, ...
- +.llseek = noop_llseek, /* write uses no f_pos */
- };
- @ depends on has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
- identifier fops0.fops;
- identifier read_no_fpos.read_f;
- @@
- struct file_operations fops = {
- ... .read = read_f, ...
- +.llseek = noop_llseek, /* read uses no f_pos */
- };
- @ depends on !has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
- identifier fops0.fops;
- @@
- struct file_operations fops = {
- ...
- +.llseek = noop_llseek, /* no read or write fn */
- };
- ===== End semantic patch =====
- - ALSA: seq/oss - Fix double-free at error path of snd_seq_oss_open()
- The error handling in snd_seq_oss_open() has several bad codes that
- do dereferecing released pointers and double-free of kmalloc'ed data.
- The object dp is release in free_devinfo() that is called via
- private_free callback. The rest shouldn't touch this object any more.
- The patch changes delete_port() to call kfree() in any case, and gets
- rid of unnecessary calls of destructors in snd_seq_oss_open().
- Fixes CVE-2010-3080.
- Reported-and-tested-by: Tavis Ormandy <taviso@cmpxchg8b.com>
[edit] ARM AACI PL041 driver
- - ALSA: AACI: fix timeout duration
- Relying on the access time of peripherals is unreliable - it depends
- on the speed of the CPU and the bus. On Versatile Express, these
- timeouts were expiring, causing the driver to fail.
- Add udelay(1) to ensure that they don't expire early, and adjust
- timeouts to give a reasonable margin over the response times.
- - ALSA: AACI: fix timeout condition checking
- Ensure that a timeout coincident with the condition being waited for
- results in success rather than failure. This helps avoid timeout
- conditions being inappropriately flagged.
[edit] AZT3328 driver
- - ALSA: azt3328 - fix broken AZF_FMT_XLATE macro
- Cleanly revert to non-macro implementation of
- snd_azf3328_codec_setfmt(), to fix last-minute functionality breakage
- induced by following checkpatch.pl recommendations without giving them
- their due full share of thought ("revolting computer, ensuing PEBKAC").
- I would like to thank Jiri Slaby for his very timely (in -rc1 even)
- and unexpected (uncommon hardware) "recognition of the dangerous situation"
- due to his very commendable static parser use. :)
- Reported-by: Jiri Slaby <jslaby@suse.cz>
- - ALSA: azt3328: improve snd_azf3328_codec_setdmaa()
- - add some WARN_ONCE
- - add multi-I/O helper (and use helper struct)
- - fix off-by-1 DMA length bug
- - better variable naming
- - ALSA: azt3328: use proper private_data hookup for codec identification
- - much improved implementation due to clean codec hierarchy
- - preparation for potential per-codec spinlock change
- NOTE: additionally removes a chip->pcm[codec_type] NULL ptr check
- (due to it requiring access to external chip struct),
- however I believe this to be ok since this condition should not occur
- and most drivers don't check against that either.
- - ALSA: azt3328: use a helper variable to remove one indirection in hotpath
- - ALSA: azt3328: cosmetics: use a helper variable for codec setup
- - ALSA: azt3328: _setfmt() update
- - use a separate variable for the frequency part, don't always "or" it
- - use a "clever"(?) macro to shorten the code
- - ALSA: azt3328: cosmetics, minor updates
- - correct samples to be POSIX shell compatible
- - add logging of jiffies value in _pointer()
- - several comments
- - cleanup
- - ALSA: azt3328: period bug fix (for PA), add missing ACK on stop timer
- . Fix PulseAudio "ALSA driver bug" issue
- (if we have two alternated areas within a 64k DMA buffer, then max
- period size should obviously be 32k only).
- Back references:
- http://pulseaudio.org/wiki/AlsaIssues
- http://fedoraproject.org/wiki/Features/GlitchFreeAudio
- . In stop timer function, need to supply ACK in the timer control byte.
- . Minor log output correction
- When I did my first PA testing recently, the period size bug resulted
- in quite precisely observeable half-period-based playback distortion.
- PA-based operation is quite a bit more underrun-prone (despite its
- zero-copy optimizations etc.) than raw ALSA with this rather spartan
- sound hardware implementation on my puny Athlon.
- Note that even with this patch, azt3328 still doesn't work for both
- cases yet, PA tsched=0 and tsched
- (on tsched=0 it will playback tiny fragments of periods, leading to tiny
- stuttering sounds with some pauses in between, whereas with
- timer-scheduled operation playback works fine - minus some quite increased
- underrun trouble on PA vs. ALSA, that is).
[edit] Apple Onboard Audio driver
- - sound: don't use flush_scheduled_work()
- flush_scheduled_work() is deprecated and scheduled to be removed.
- * cancel[_delayed]_work() + flush_scheduled_work() ->
- cancel[_delayed]_work_sync().
- * wm8350, wm8753 and soc-core use custom code to cancel a delayed
- work, execute it immediately if it was pending and wait for its
- completion. This is equivalent to flush_delayed_work_sync(). Use
- it instead.
- - ALSA: aoa: Remove wrong i2c_set_clientdata in onyx_i2c_remove()
- It does not make sense to set clientdata to onyx in onyx_i2c_remove()
- as we are going to kfree onyx.
- What we really want here is i2c_set_clientdata(client, NULL);
- Since the i2c core will take care of it now, so this patch just removes it.
- - of/device: Replace struct of_device with struct platform_device
- of_device is just an alias for platform_device, so remove it entirely. Also
- replace to_of_device() with to_platform_device() and update comment blocks.
- This patch was initially generated from the following semantic patch, and then
- edited by hand to pick up the bits that coccinelle didn't catch.
- @@
- @@
- -struct of_device
- +struct platform_device
- Reviewed-by: David S. Miller <davem@davemloft.net>
- - powerpc/macio: Fix probing of macio devices by using the right of match table
- Grant patches added an of mach table to struct device_driver. However,
- while he changed the macio device code to use that, he left the match
- table pointer in struct macio_driver and didn't update drivers to use
- the "new" one, thus breaking the probing.
- This completes the change by moving all drivers to setup the "new"
- one, removing all traces of the old one, and while at it (since it
- changes the exact same locations), I also remove two other duplicates
- from struct driver which are the name and owner fields.
- - arch/powerpc: Move dma_mask from of_device into pdev_archdata
- By moving dma_mask into pdev_archdata, and adding archdata to
- struct of_device, it makes it possible to substitute of_device
- with struct platform_device, which is a stepping stone to
- removing the of_platform bus entirely.
- - of: Always use 'struct device.of_node' to get device node pointer.
- The following structure elements duplicate the information in
- 'struct device.of_node' and so are being eliminated. This patch
- makes all readers of these elements use device.of_node instead.
- (struct of_device *)->node
- (struct dev_archdata *)->prom_node (sparc)
- (struct dev_archdata *)->of_node (powerpc & microblaze)
- - powerpc/aoa: gpio-pmf.c: 3 * redundant code
[edit] Asihpi driver
- - Updated alsa-kernel asihpi sources so patches are no longer required
- - Move asihpi driver to linux kernel tree
- Fix the rest build stubs.
- - asihpi - Correctly use *hm for sizeof. Fix bad case in function name.
- - asihpi - Remove superfluous c++ only extern "C", and some unused macros.
- - asihpi - Use kmalloced buffers in asihpi_hpi_ioctl()
- hpi_{message,response}_buffer_v1 are too big to be temporary variables
- on stack. Kmalloc them to avoid stack overflow.
- - ALSA: asihpi - Fix sParse warnings.
- - ALSA: asihpi - Update copyright years.
- - ALSA: asihpi - Checkpatch fixes.
- - ALSA: asihpi - checkpatch, no parens on return value
- - ALSA: sound/pci/asihpi/hpioctl.c: Remove unnecessary casts of pci_get_drvdata
- - ALSA: asihpi - Unsafe memory management when allocating control cache
- I noticed that sound/pci/asihpi/hpicmn.c::hpi_alloc_control_cache() does
- not check the return value from kmalloc(), which may fail.
- If kmalloc() fails we'll dereference a null pointer and things will go bad
- fast.
- There are two memory allocations in that function and there's also the
- problem that the first may succeed and the second may fail and nothing is
- done about that either which will also go wrong down the line.
- - ALSA: asihpi - Return hw error directly from oustream_write.
- If hw error is ignored, status is updated with invalid info.
- - ALSA: asihpi: check return value of get_user()
- get_user() may fail, if so return -EFAULT.
- - ALSA: hpimsgx: fix wrong sizeof
- The correct size should be sizeof(gRESP_HPI_SUBSYS_FIND_ADAPTERS),
- sizeof(&gRESP_HPI_SUBSYS_FIND_ADAPTERS) is incorrect.
- - ALSA: asihpi - Avoid useless assignment of returned index values.
- - ALSA: asihpi - Avoid using c99 uintX types.
- - ALSA: asihpi - HPI version 4.04.01
- - ALSA: asihpi: fix sign bug
- bytes_per_sec is unsigned, so if snd_pcm_format_width() return error we
- would not see it.
- - ALSA: asihpi - Remove unneeded ;
- - ALSA: asihpi - Minor HPI error handling fixes
- Handle errors in tuner level caching,
- Ccorrect error code for aesebu rx status.
- - ALSA: asihpi - Change compander API and tidy
- Compander API changed to one function per parameter.
- Factor out some common code for stereo log value reading.
- Make some more entity functions static.
- - ALSA: asihpi - Add ASI5200 family
- - ALSA: asihpi - Use version string instead of printf formatting
- - ALSA: asihpi - HPI API updates
- Remove some deprecated items.
- Change compander api to one function per parameter.
- Add a version string define.
- - ALSA: asihpi - Get rid of incorrect "long" types and casts.
- These give incorrect results for index wrap on 64 bit.
- - ALSA: asihpi - Fix uninitialized variable
- Initialize prev_ctl properly before reference:
- sound/pci/asihpi/asihpi.c: In function ‘snd_card_asihpi_mixer_new’:
- sound/pci/asihpi/asihpi.c:2568:30: warning: ‘prev_ctl.dst_node_index’ may be used uninitialized in this function
- - ALSA: asihpi - Minor code cleanup
- - ALSA: asihpi - Add support for new ASI8800 family
- - ALSA: asihpi - Fix bug preventing outstream_write preload from happening
- - ALSA: asihpi - Fix imbalanced lock path in hw_message
- - ALSA: asihpi - Remove support for old ASI8800 family
- - ALSA: asihpi - Add hd radio blend functions
- Add hd radio blend functions. HPI version inc to 4.03.25.
- - ALSA: asihpi - Remove unused io map functions
- - ALSA: sound/pci/asihpi: Use kzalloc
- Use kzalloc rather than the combination of kmalloc and memset.
- The semantic patch that makes this change is as follows:
- (http://coccinelle.lip6.fr/)
- // <smpl>
- @@
- expression x,size,flags;
- statement S;
- @@
- -x = kmalloc(size,flags);
- +x = kzalloc(size,flags);
- if (x == NULL) S
- -memset(x, 0, size);
- // </smpl>
- - ALSA: asihpi: incorrect range check
- The entity_type_to_size[] array has LAST_ENTITY_TYPE (11) number of elements,
- not LAST_ENTITY_ROLE (17). This only affects the debug output.
- - ALSA: asihpi: testing the wrong variable
- There is a typo here. We want to test "*dst" not "dst".
- - ALSA: Add support of AudioScience ASI boards
- Added the support of AudioScience ASI boards.
- The driver has been tested for years on alsa-driver external tree,
- now finally got merged to the kernel.
[edit] Atmel AT73C213 DAC driver
- - ALSA: AT73C213: Rectify misleading comment.
- The Atmel SSC can divide by even numbers, not only powers of two.
- - ALSA: sound/spi: patch for the unuseful variable removal
- The '*bitclk' of structure 'snd_at73c213' seems no use,
- so I make a patch to remove the unnecessary variable.
[edit] Atmel on-chip Audio Bitstream DAC (ABDAC)
- - ALSA: fix invalid hardware.h include in ac97c for AVR32 architecture
- This patch fixes the non-compiling AC97C driver for AVR32 architecture by
- include mach/hardware.h only for AT91 architecture. The AVR32 architecture does
- not supply the hardware.h include file.
- - ALSA: atmel - Fix the return value in error path
- In the commit c0763e687d0283d0db507813ca4462aa4073c5b5
- ALSA: snd-atmel-abdac: test wrong variable
- the return value via PTR_ERR() had to be fixed as well.
- - ALSA: snd-atmel-abdac: test wrong variable
- After clk_get() pclk is checked second time instead of sample_clk check.
- - ALSA: atmel: set "channel A event" output to debug
[edit] Au12x0/Au1550 PSC ASoC
- - ASoC: Do not include soc-dapm.h
- There is no need to include soc-dapm.h since soc.h includes it.
- - ASoC: fix au1x platform
- This patch fixes up the au1x audio platform after the multi-component
- merge:
- - compile fixes and updates to get DB1200 platform audio working again,
- - removal of global variables in AC97/I2S/DMA(PCM) modules.
- The AC97 part is limited to one instance only for now due to issues
- with getting at driver data in the soc_ac97_ops.
- - ASoC: Support non-crystal master clocks for WM8731
- Instead of unconditionally enabling the crystal oscillator on the WM8731
- only enable it when explicitly selected via set_sysclk(), allowing machine
- drivers to specify that they drive a clock into MCLK alone. This avoids
- any conflicts between the oscillator and the external MCLK source and saves
- power for systems which do not need the oscillator.
- This should also deliver a small power saving on systems using the crystal
- since the oscillator will only be enabled when the ADC or DAC is active.
- - ASoC: au1x: fix section mismatch in psc-i2s.c
- Annotate platform probe callback with __devinit instead of plain __init.
- - ASoC: use resource_size for au1x
- Use the resource_size function instead of manually calculating the
- resource size.This patch can reduce the chance of introducing off-by-one
- errors.
[edit] Aztech AZT1605 (galaxy) driver
- - Add missing *.c for isa/galaxy build stub
- - Add build stub for new galaxy driver
- - ALSA: ISA: New Aztech Sound Galaxy driver
- This is a new driver for Aztech Sound Galaxy ISA soundcards based on the
- AZT1605 and AZT2316 chipsets. It's constructed as two seperate drivers
- for either chipset generated from the same source file, with (very)
- minimal ifdeffery.
- The drivers check the SB DSP version to decide if they are being loaded
- for the right chip. AZT1605 returns 2.1 by default and AZT2316 3.1.
- This isn't full-proof as the DSP version can actually be set through
- software but it's close enough -- as far as I've been able to see, the
- DSP version can not be stored in the EEPROM and the cards will therefore
- startup with the defaults.
- This distinction could (with the same success rate) also be used to
- decide which chip we're looking at at runtime meaning a single, merged
- driver is also an option but I feel it's actually nicer this way. A
- merged driver would have to postpone translating the passed in resource
- values to the card configuration until it knew which one it was looking
- at and would need to postpone erring out on mpu_irq=10 for azt1605 and
- mpu_irq=3 for azt2316.
- The drivers have been tested on various cards. For snd-azt1605:
- FCC-ID I38-MMSN811: Aztech Sound Galaxy Nova 16 Extra
- FCC-ID I38-MMSN822: Aztech Sound Galaxy Pro 16 II
- and for snd-azt2316:
- FCC-ID I38-MMSN824: Aztech Sound Galaxy Pro 16 AB
- FCC-ID I38-MMSN826: Trust Sound Expert DeLuxe Wave 32 (05201)
- FCC-ID I38-MMSN830: Trust Sound Expert DeLuxe 16+ (05202)
- FCC-ID I38-MMSN837: Packard Bell ISA Soundcard 030069
- FCC-ID I38-MMSN846: Trust Sound Expert DeLuxe 16-3D (06300)
- FCC-ID I38-MMSN847: Trust Sound Expert DeLuxe Wave 32-3D (06301)
- FCC-ID I38-MMSN852: Aztech Sound Galaxy Waverider Pro 32-3D
- 826 and 846 were also marketed directly by Aztech and then known as:
- FCC-ID I38-MMSN826: Aztech Sound Galaxy Waverider 32+
- FCC-ID I38-MMSN846: Aztech Sound Galaxy Nova 16 Extra II-3D
- Together, these cover the AZT1605 and AT2316A, AZT2316R and AZT2316-S
- chipsets. All cards work fully -- full-duplex PCM, MIDI and FM. Full
- duplex is a little flaky on some.
- I38-MSN811 tends to not work in full-duplex but sometimes does with the
- highest success rate being achieved when you first start the capture and
- then a playback instead of the other way around (it's a CS4231-KL
- codec).
- The cards with an AD1845XP codec (my I38-MMSN826 and one of my
- I38-MMSN830s) are also somewhat duplex-challenged. Sometimes full-duplex
- works, sometimes not and this varies from try to try. This seems likely
- to be a timing problem somewhere inside wss-lib.
- I38-MMSN826 has an additional "ICS2115 WaveFront" wavetable synth
- onboard that isn't supported yet. The wavetable synths on I38-MMSN847
- and I38-MMSN852 are wired directly to the standard MPU-401 UART and the
- AUX1 input on the codec and work without problem.
- CD-ROM audio on the cards is routed to the codec "Line" input, Line-In
- to its Aux input, and FM/Wavetable to its AUX1 input. I did not rename
- the controls due to the capture source enumeration: I see that
- capture-source overrides are hardcoded in wss-lib and this is just too
- ugly to live.
- Versus the old snd-sgalaxy driver these drivers add support for the
- models without a configuration EEPROM (which are common), full-duplex,
- MPU-401 UART and OPL3. In the future they might grow support for that
- ICS2115 WaveFront synth on 826 and an hwdep interface to write to the
- EEPROM on the models that have one.
[edit] BT87x driver
- - ALSA: bt87x: use enum control info helper
- Simplify the info callback by using the snd_ctl_enum_info() helper function.
[edit] CA0106 driver
- - tree-wide: fix comment/printk typos
- "gadget", "through", "command", "maintain", "maintain", "controller", "address",
- "between", "initiali[zs]e", "instead", "function", "select", "already",
- "equal", "access", "management", "hierarchy", "registration", "interest",
- "relative", "memory", "offset", "already",
- - sound, ca0106: Fix assignment to 'channel'.
- The assignment to the local variable 'channel' in
- snd_ca0106_pcm_pointer_capture() is a little crazy. Order of assignment is
- undefined. This fixes it.
- - ALSA: ca0106: Use card specific dac id for mute controls.
- - ALSA: ca0106: Allow different sound cards to use different SPI channel mappings.
- - ALSA: ca0106: Create a nice spot for mapping channels to dacs.
- This is to allow a future patch to have card specific mappings between
- dacs, which is required since the Sound Blaster 5.1vx seems to have a
- different mapping to what was previously used.
- - ALSA: ca0106: Move enabling of front dac out of hardcoded setup sequence.
- - ALSA: ca0106: Pull out dac powering routine into separate function.
- This is ground work for a future commit where cards (such as the Sound
- Blaster 5.1vx) have different mappings between dacs and channels.
- - ALSA: ca0106 - add Sound Blaster 5.1vx info.
- - ALSA: ca0106 - clean up playback pointer callback
- Clean up the playback pointer callback function a bit, and make the
- pointer check more strictly to avoid bogus pointers.
[edit] CMI8788 (Oxygen) driver
- - Adjust build stubs for oxygen driver changes
- - ALSA: Xonar, CS43xx: Don't overrun static array
- 'cs4398_regs' in 'struct xonar_cs43xx' is an array of 'u8' with a size of
- 8. So, this code in sound/pci/oxygen/xonar_cs43xx.c::dump_d1_registers()
- for (i = 2; i <= 8; ++i)
- snd_iprintf(buffer, " %02x", data->cs4398_regs[i]);
- will overrun the array when 'i == 8'.
- I guess that what's needed to fix it is the trivial patch below, but I
- must admit that I have no idea about this code, so I may very well be
- wrong. Additionally, I have no way to actually test this, so all I know is
- that the below compiles. Someone who actually knows this code should take
- a look before anything is comitted - consider the below (not much more
- than) a bug report.
- - ALSA: oxygen: Xonar DG: fix CS4245 register writes
- Accidentally exchanging register addresses and register values leads to
- many strange errors ...
- - ALSA: oxygen: fix Xonar DG input
- Apparently, this card uses the other I2S input.
- - ALSA: include delay.h for msleep in Xonar DG support
- - ALSA: oxygen: add S/PDIF source selection for Claro cards
- Add a mixer control to switch between the optical and coaxial S/PDIF
- inputs on the HT-Omega Claro and Claro halo cards.
- - ALSA: oxygen: fix CD/MIDI for X-Meridian (2G)
- Enable the X-Meridian's CD input and the X-Meridian 2G's potential
- MIDI ports.
- - ALSA: oxygen: add some card names
- Instead of the generic Oxygen, use the actual card name, if known.
- - ALSA: oxygen: do not show chip revision in card longname
- Apparently, the revision is 2 on all sold sound cards, so this
- information is not actually useful.
- - ALSA: oxygen: X-Meridian: add S/PDIF source selection
- Add a mixer control to select between the on-board and extension board
- S/PDIF inputs for the X-Meridian (2G).
- - ALSA: oxygen: add digital input validity check switch
- Add a mixer control to prevent capturing S/PDIF samples that are not
- marked as valid (non-audio or corrupted samples).
- - ALSA: core, oxygen, virtuoso: add an enum control info helper
- Introduce the helper function snd_ctl_enum_info() to fill out the
- elem_info fields for an enumerated control.
- - ALSA: virtuoso: add Xonar HDAV1.3 Slim support
- Add experimental support for the Asus Xonar HDAV1.3 Slim sound card.
- - ALSA: oxygen: add Xonar DG support
- Add experimental support for the Asus Xonar DG sound card.
- - ALSA: oxygen: add X-Meridian 2G support
- Add support for the AuzenTech X-Meridian 7.1 2G sound card.
- - ALSA: oxygen: add more PCI IDs
- Add PCI IDs for some unknown models.
- - ALSA: virtuoso: reduce MCLK in double rate modes
- For the CSxxxx and AKxxxx DAC/ADC chips, the MCLK factor in double rate
- modes (64-96 kHz) can be reduced to 128x without reducing sound quality.
- - ALSA: oxygen: simplify model-specific MCLK handling
- Replace the get_i2s_mclk callback with tables of MCLK values. This
- simplifies the MCLK-handling code in both the framework and the model-
- specific drivers.
- - ALSA: virtuoso: use headphone gain setting only on front DAC
- Do not apply the headphone gain offset to any but the front DAC. These
- DACs would not be used in headphone mode, so this saves a few register
- writes.
- - ALSA: virtuoso: handle DAC oversampling automatically
- Remove the DAC Oversampling mixer control because this setting does not
- make much sense.
- For cards with the H6 daughterboard, 128x oversampling was disabled
- anyway because these high MCLK frequency would not be compatible with
- the connector cable.
- For cards without the H6 daughterboard, 128x gives a slightly higher
- output quality; there is no reason to reduce it to 64x except for saving
- power, but then these cards have not been designed to be power efficient
- anyway (the D2's blinkenlights cannot be disabled).
- - ALSA: virtuoso: use lower master clock with H6 daughterboard
- Because of the unshielded connector cable, it is important to use as low
- a master clock frequency as possible with the H6.
- For double rate modes (64-96 kHz), the MCLK rate is unconditionally
- lowered from 512x to 256x because the higher rate would not improve
- anything.
- - ALSA: virtuoso: configure correct master clock frequency on the CS2000
- The clock output of the CS2000, which is used as master clock for the
- DACs, was using half the actual master clock frequency for some reason.
- Using the theoretically correct frequency seems also to work in practice.
- - ALSA: virtuoso: remove non-working controls on Essence ST Deluxe
- On the Xonar Essence ST Deluxe, remove all mixer controls that would
- require I2C communication with the third DAC, which does not work
- because of an addressing conflict with the CS2000 chip.
- - ALSA: virtuoso: change PCM1796 format to I2S
- Change the PCM format used for the PCM1796 from left-justified to I2S to
- ensure that the correct format is used even for the Essence ST Deluxe's
- center/LFE DAC, where I2C does not work because of an address conflict
- with the CS2000 chip.
- - ALSA: virtuoso: wait for PCM1796 clock to become stable
- The PCM1796 needs the master clock for I2C communication to work, so
- add delays after clock changes to ensure that the clock is stable when
- we try to write the DACs' registers.
- - ALSA: virtuoso: do not use fast I2C speed
- To make the I2C communication reliable when using the H6 daughterboard,
- reduce the I2C clock frequency.
- - ALSA: oxygen: fix SPI clocks slower than 6.25 MHz
- Fix wrong register bits for SPI clock cycle times longer than 160 ns,
- and adjust the polling loop timeout for these speeds.
- - ALSA: oxygen: remove oxygen_model::private_data field
- The number of DACs can now be deduced from the dac_channels_mixer field,
- so the private_data field is no longer needed.
- - ALSA: oxygen: allow different number of PCM and mixer channels
- For cards like the Xonar HDAV1.3, differentiate between the number of
- PCM channels that can be played and the number of channels whose volume
- can be adjusted.
- - ALSA: oxygen: update hardware comments
- Reformat and update the comments that describe the hardware connections
- on the various models.
- - ALSA: oxygen: show correct package ID
- Instead of the hardcoded "CMI8788", show the actual chip name.
- Note: This is neither what the chip is (it's always the same),
- nor what the chip is actually called.
- - ALSA: oxygen: allow to dump codec registers
- To help with debugging, add the registers of the model-specific
- codecs to the controller and AC97 register dump in the proc file.
- - ALSA: virtuoso: fix front panel routing for D1/DX/ST(X)
- The "Front Panel" switch on the Xonar D1/DX actually switches only the
- output direction, so mark it appropriately.
- The front panel microphone is controlled by the FMIC2MIC bit of the
- CM9780. It was unconditionally enabled on the D1/DX and never set on
- the ST(X); add a control for it. Selecting the front panel microphone
- as source does not actually disable the microphone jack, but this is
- bug-compatible with the Windows driver, and users rely on it.
- - ALSA: virtuoso: add HDMI enable switch for HDAV1.3
- The GPIO bit that enables analog output on the Xonar HDAV1.3 also
- disables the HDMI audio output, so we better add a switch for it.
- Hopefully, this is sufficient to make the HDMI output work.
- - ALSA: virtuoso: initialize unknown GPIO bits
- Initialize the configuration of some unknown GPIO output bits (that
- might not be used at all) to be the same as in the Windows driver, just
- to be sure.
- - ALSA: oxygen: add HiFier Serenade support
- Add support for the TempoTec/MediaTek HiFier Serenade sound card.
- The PCI ID was already there, but the driver handled it like the
- Fantasia model, which resulted in a dummy recording device. As
- a stereo output-only card, this model is to be handled exactly
- like the HG2PCI.
- - ALSA: oxygen: reorganize PCI IDs
- Sort the PCI IDs so that they make logical sense. Also move the card
- name comments into this list because the model symbols should be (more)
- self-explanationary.
- - ALSA: oxygen: add Kuroutoshikou CMI8787-HG2PCI support
- Add support for the Kuroutoshikou CMI8787-HG2PCI sound card.
- [replaced non-latin letters in the patch by tiwai]
- - ALSA: oxygen: support for period wakeup disabling
- Allow disabling period wakeup interrupts for all PCM streams.
- - ALSA: oxygen: merge HiFier driver into snd-oxygen
- The snd-hifier driver contains more duplicated code than model-specific
- code, so it does not make sense for it to be a separate driver.
- Handling the two-channel output restriction can be easily done in the
- generic driver.
- - ALSA: oxygen - Add a SSID for CMI8787-HG2PCI
- This board has a strange PCI SSID 13f6:ffff. Works as compabile as
- MODEL_CMEDIA_REF.
- Reported-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
- - ALSA: oxygen: add PEX8111 initialization
- Configure the PEX8111 bridge on the PCI Express cards so that the audio
- DMA controller can do proper burst reads and is less likely to lose
- data. This is usually done automatically, but is required on older
- cards where the user has not applied the PLX firmware update.
- - ALSA: oxygen: rewrite PCIe bridge initialization
- Change the PCIe/PCI bridge initialization code to configure only the
- bridge that is actually connected to the sound chip, instead of any
- bridge found in the system. The new code also makes it easier to add
- other bridges.
- - ALSA: oxygen: reduce minimum period count
- The interrupt counter is independent of the buffer counter, so there are
- no restrictions on the period size. Having fewer periods also makes
- PulseAudio happy.
- - ALSA: oxygen: fix input monitor dB scale
- The input monitor half volume bit results in a factor of 0.5, so the
- minimum scale value should be -6 dB.
- - ALSA: oxygen: fix chip ID register symbols
- Rename the symbol for the XCID pins, fix up a decimal/hex confusion for
- the CMI8787 package ID, and add the other known package IDs.
- - ALSA: virtuoso: fix Xonar STX anti-pop delay
- The anti-pop delay for the STX should be 800 ms, not 100 ms like the ST.
- - ALSA: virtuoso: add HDAV1.3 Slim PCI ID
- Add a PCI ID for the Xonar HDAV1.3 Slim. There is no actual support,
- but the presence of the ID allows the EEPROM repair code to work for
- this card.
- - ALSA: oxygen: handle CD input configuration with a flag
- There are more models without a CD input than with one, so handle this
- explicitly with a device_config flag to avoid having to define a control
- filter callback to filter it out.
- - ALSA: virtuoso: fix Xonar DS chip name
- The controller on the Xonar DS is labeled "AV66", not "AV200".
- - ALSA: oxygen: fix analog capture on Claro halo cards
- On the HT-Omega Claro halo card, the ADC data must be captured from the
- second I2S input. Using the default first input, which isn't connected
- to anything, would result in silence.
- - ALSA: virtuoso: Xonar DS: add stereo upmixing to center/LFE channels
- Add the possibility to route a mix of the two channels of stereo data to
- the center and LFE outputs. Due to a WM8766 restriction, all surround
- and back channels also get the mixed L/R signal in this case.
- - ALSA: virtuoso: automatically handle Xonar DS headphone routing
- Automatically mute the speaker outputs as long as a headphone is plugged.
- - ALSA: virtuoso: add Xonar DS headphone jack detection
- Now that the polarity of the headphone detection pin is known, replace
- the debugging message with a proper jack plug input device.
- - ALSA: virtuoso: fix Xonar DS input switches
- Use the correct number, register bits, and names for the input switches.
- - ALSA: virtuoso: fix WM8766 register writes with MSB
- The check for the volume update latch bit was accidentally in the wrong
- function, where it would prevent the MSB from being written, instead of
- correctly ignoring it for cached values.
- - ALSA: virtuoso: fix setting of Xonar DS line-in/mic-in controls
- The Line and Mic inputs cannot be used at the same time, so the driver
- has to automatically disable one of them if both are set. However, it
- forgot to notify userspace about this change, so the mixer state would
- be inconsistent. To fix this, check if the other control gets muted,
- and send a notification event in this case.
- Reported-and-tested-by: Nathan Schagen
- - ALSA: virtuoso: work around missing reset in the Xonar DS Windows driver
- For the WM8776 chip, this driver uses a different sample format and
- more features than the Windows driver. When rebooting from Linux into
- Windows, the latter driver does not reset the chip but assumes all its
- registers have their default settings, so we get garbled sound or, if
- the output happened to be muted before rebooting, no sound.
- To make that driver happy, hook our driver's cleanup function into the
- shutdown notifier and ensure that the chip gets reset.
- Reported-and-tested-by: Nathan Schagen
- - ALSA: virtuoso: fix Xonar D1/DX front panel microphone
- Commit 65c3ac885ce9852852b895a4a62212f62cb5f2e9 in 2.6.33 accidentally
- left out the initialization of the AC97 codec FMIC2MIC bit, which broke
- recording from the front panel microphone.
[edit] CMIPCI driver
- - ALSA: cmipci: use enum control info helper
- Simplify info callbacks by using the snd_ctl_enum_info() helper function.
[edit] CS46xx driver
- - ALSA: cs46xx memory management fixes for cs46xx_dsp_spos_create()
- When reading through sound/pci/cs46xx/dsp_spos.c I noticed a couple of
- things in cs46xx_dsp_spos_create().
- It seems to me that we don't always free the various memory buffers we
- allocate and we also do some work (structure member assignment) early,
- that is completely pointless if some of the memory allocations fail and
- we end up just aborting the whole thing.
- I don't have hardware to test, so the patch below is compile tested only,
- but it makes the following changes:
- - Make sure we always free all allocated memory on failures.
- - Don't do pointless work assigning to structure members before we know
- all memory allocations, that may abort progress, have completed
- successfully.
- - Remove some trailing whitespace.
- Tested-by: Ondrej Zary <linux@rainbow-software.org>
[edit] CS5535 driver
- - PCI: make pci_restore_state return void
- pci_restore_state only ever returns 0, thus there is no benefit in
- having it return any value. Also, a large majority of the callers do
- not check the return code of pci_restore_state. Make the
- pci_restore_state a void return and avoid the overhead.
[edit] Common EMU synth
- - ALSA: emux: Add trivial compat ioctl handler
- Reported-by: Carmen Cru <carmen.cru@belgacom.net>
[edit] Compatibility header files
- - Add CONFIG_SYSFS_DEPRECATED hack for older kernels
- - PCM core - fix pcm.patch (added hw_ptr_buffer_jiffies variable)
- Sync with latest alsa-kernel tree
- - an attempt to fix compilations for new static pm_qos_request
- - core: compilation fix for new QoS API, move snd-aloop code to alsa-kernel tree
- - Fix pcm.patch - change type for snd_pcm->twake variable
- - Add check of new usb_alloc_coherent() and pm_qos_request()
[edit] Conexant Riptide driver
- - ALSA: riptide - Fix detection / load of firmware files
- The detection and loading of firmeware on riptide driver has been broken
- due to rewrite of some codes, checking the presense wrongly.
- This patch fixes the logic again.
- Reference: kernel bug 16596
- https://bugzilla.kernel.org/show_bug.cgi?id=16596
- - ALSA: riptide: check kzalloc() result
- If kzalloc() fails exit with -ENOMEM.
- - ALSA: alsa: riptide: don't use own hex_to_bin() method
[edit] Creative Sound Blaster X-Fi (20K1/20K2)
- - ALSA: sound/pci/ctxfi/ctpcm.c: Remove potential for use after free
- In each function, the value apcm is stored in the private_data field of
- runtime. At the same time the function ct_atc_pcm_free_substream is stored
- in the private_free field of the same structure. ct_atc_pcm_free_substream
- dereferences and ultimately frees the value in the private_data field. But
- each function can exit in an error case with apcm having been freed, in
- which case a subsequent call to the private_free function would perform a
- dereference after free. On the other hand, if the private_free field is
- not initialized, it is NULL, and not invoked (see snd_pcm_detach_substream
- in sound/core/pcm.c). To avoid the introduction of a dangling pointer, the
- initializations of the private_data and private_free fields are moved to
- the end of the function, past any possible free of apcm. This is safe
- because the previous calls to snd_pcm_hw_constraint_integer and
- snd_pcm_hw_constraint_minmax, which take runtime as an argument, do not
- refer to either of these fields.
- In each function, there is one error case where apcm needs to be freed, and
- a call to kfree is added.
- The sematic match that finds this problem is as follows:
- (http://coccinelle.lip6.fr/)
- // <smpl>
- @@
- expression e,e1,e2,e3;
- identifier f,free1,free2;
- expression a;
- @@
- *e->f = a
- ... when != e->f = e1
- when any
- if (...) {
- ... when != free1(...,e,...)
- when != e->f = e2
- * kfree(a)
- ... when != free2(...,e,...)
- when != e->f = e3
- }
- // </smpl>
[edit] Digigram VX Pocket driver
- - Corrected pcmcia build fixes
- Fixed the wrong copies from 2.6.36.
- Add inclusion of pcmcia/cs.h in several places.
- - Create a dummy pcmcia/cs.h
- - Fix build of pcmcia drivers after 2.6.37-rc1 merge
- - Fix typos in the previous patch
- - More fixes for new PCMCIA stuff
- - Add build-fixes for 2.6.36 PCMCIA stuff
- - Fix build with 2.6.35-rc1
- - pcmcia: move driver name to struct pcmcia_driver
- Tested-by: Wolfram Sang <w.sang@pengutronix.de>
- - pcmcia: convert pcmcia_request_configuration to pcmcia_enable_device
- pcmcia_enable_device() now replaces pcmcia_request_configuration().
- Instead of config_req_t, all necessary flags are either passed as
- a parameter to pcmcia_enable_device(), or (in rare circumstances)
- set in struct pcmcia_device -> flags.
- With the last remaining user of include/pcmcia/cs.h gone, remove
- all references.
- Tested-by: Wolfram Sang <w.sang@pengutronix.de>
- - pcmcia: move config_{base,index,regs} to struct pcmcia_device
- Several drivers prefer to explicitly set config_{base,index,regs},
- formerly known as ConfigBase, ConfigIndex and Present. Instead of
- passing these values inside config_req_t, store it in struct
- pcmcia_device.
- Tested-by: Wolfram Sang <w.sang@pengutronix.de>
- - pcmcia: simplify IntType
- IntType was only set to INT_MEMORY (driver pcmciamtd) or INT_MEMORY_AND_IO
- (all other drivers). As this flags seems to relate to ioport access, make
- it conditional to the driver having requested IO port access. There are two
- drivers which do not request IO ports, but did set INT_MEMORY_AND_IO:
- ray_cs and b43. For those, we consistently only set INT_MEMORY in future.
- Tested-by: Wolfram Sang <w.sang@pengutronix.de>
- - pcmcia: do not use io_req_t when calling pcmcia_request_io()
- Instead of io_req_t, drivers are now requested to fill out
- struct pcmcia_device *p_dev->resource[0,1] for up to two ioport
- ranges. After a call to pcmcia_request_io(), the ports found there
- are reserved, after calling pcmcia_request_configuration(), they may
- be used.
- - pcmcia: do not use io_req_t after call to pcmcia_request_io()
- After pcmcia_request_io(), do not make use of the values stored in
- io_req_t, but instead use those found in struct pcmcia_device->resource[].
- - pcmcia: remove cs_types.h
- Remove cs_types.h which is no longer needed: Most definitions aren't
- used at all, a few can be made away with, and two remaining definitions
- (typedefs, unfortunatley) may be moved to more specific places.
- - pcmcia: dev_node removal (write-only drivers)
- dev_node_t was only used to transport some minor/major numbers
- from the PCMCIA device drivers to deprecated userspace helpers.
- However, only a few drivers made use of it, and the userspace
- helpers are deprecated anyways. Therefore, get rid of dev_node_t .
- As a first step, remove any usage of dev_node_t from drivers which
- only wrote to this typedef/struct, but did not make use of it.
- - pcmcia: re-work pcmcia_request_irq()
- Instead of the old pcmcia_request_irq() interface, drivers may now
- choose between:
- - calling request_irq/free_irq directly. Use the IRQ from *p_dev->irq.
- - use pcmcia_request_irq(p_dev, handler_t); the PCMCIA core will
- clean up automatically on calls to pcmcia_disable_device() or
- device ejection.
- - drivers still not capable of IRQF_SHARED (or not telling us so) may
- use the deprecated pcmcia_request_exclusive_irq() for the time
- being; they might receive a shared IRQ nonetheless.
[edit] Digigram VX core
- - Clean up build of driver/vx/*
- Removed conflicting inclusion of alsa-autoconf.h
[edit] Documentation
- - ALSA: HDA: Add a new model "asus" for Conexant 5066/205xx
- BugLink: http://bugs.launchpad.net/bugs/701271
- This new model, named "asus", is identical to the "hp_laptop" model,
- except for the location of the internal mic, which is at pin 0x1a.
- It is used for Asus K52JU and Lenovo G560.
- - ASoC: documentation updates
- This patch is only for RFC purpose of ASoC documentation updates which
- match with current ASoC codes with documents. Mostly modify features
- are modified to be sync with changes after multi-component patches.
- - ALSA: virtuoso: add Xonar HDAV1.3 Slim support
- Add experimental support for the Asus Xonar HDAV1.3 Slim sound card.
- - ALSA: oxygen: add Xonar DG support
- Add experimental support for the Asus Xonar DG sound card.
- - ALSA: oxygen: add X-Meridian 2G support
- Add support for the AuzenTech X-Meridian 7.1 2G sound card.
- - ALSA: hda - Remove dead md2 quirk code
- - ALSA: oxygen: add HiFier Serenade support
- Add support for the TempoTec/MediaTek HiFier Serenade sound card.
- The PCI ID was already there, but the driver handled it like the
- Fantasia model, which resulted in a dummy recording device. As
- a stereo output-only card, this model is to be handled exactly
- like the HG2PCI.
- - ALSA: oxygen: add Kuroutoshikou CMI8787-HG2PCI support
- Add support for the Kuroutoshikou CMI8787-HG2PCI sound card.
- [replaced non-latin letters in the patch by tiwai]
- - ALSA: oxygen: merge HiFier driver into snd-oxygen
- The snd-hifier driver contains more duplicated code than model-specific
- code, so it does not make sense for it to be a separate driver.
- Handling the two-channel output restriction can be easily done in the
- generic driver.
- - ALSA: HDA: Add position_fix=3 module option, and refactor related code
- What was previously known as via_dmapos_patch, and hard-coded to be
- used for VIA and ATI controllers, is now configurable through a module
- option. The background is that some VIA controllers seem to prefer
- via_dmapos_patch to be turned off.
- - ALSA: hda - Add a new hp-laptop model for Conexant 5066, tested on HP G60
- This new model adds the following functionality to HP G60:
- - Automute of internal speakers
- - Autoswitch of internal/external mics
- - Remove SPDIF not physically present
- BugLink: http://launchpad.net/bugs/587388
- - ALSA: ISA: Remove snd-sgalaxy
- Its hardware is handled more fully by the new azt1605/azt2316 drivers.
- - ALSA: ISA: New Aztech Sound Galaxy driver
- This is a new driver for Aztech Sound Galaxy ISA soundcards based on the
- AZT1605 and AZT2316 chipsets. It's constructed as two seperate drivers
- for either chipset generated from the same source file, with (very)
- minimal ifdeffery.
- The drivers check the SB DSP version to decide if they are being loaded
- for the right chip. AZT1605 returns 2.1 by default and AZT2316 3.1.
- This isn't full-proof as the DSP version can actually be set through
- software but it's close enough -- as far as I've been able to see, the
- DSP version can not be stored in the EEPROM and the cards will therefore
- startup with the defaults.
- This distinction could (with the same success rate) also be used to
- decide which chip we're looking at at runtime meaning a single, merged
- driver is also an option but I feel it's actually nicer this way. A
- merged driver would have to postpone translating the passed in resource
- values to the card configuration until it knew which one it was looking
- at and would need to postpone erring out on mpu_irq=10 for azt1605 and
- mpu_irq=3 for azt2316.
- The drivers have been tested on various cards. For snd-azt1605:
- FCC-ID I38-MMSN811: Aztech Sound Galaxy Nova 16 Extra
- FCC-ID I38-MMSN822: Aztech Sound Galaxy Pro 16 II
- and for snd-azt2316:
- FCC-ID I38-MMSN824: Aztech Sound Galaxy Pro 16 AB
- FCC-ID I38-MMSN826: Trust Sound Expert DeLuxe Wave 32 (05201)
- FCC-ID I38-MMSN830: Trust Sound Expert DeLuxe 16+ (05202)
- FCC-ID I38-MMSN837: Packard Bell ISA Soundcard 030069
- FCC-ID I38-MMSN846: Trust Sound Expert DeLuxe 16-3D (06300)
- FCC-ID I38-MMSN847: Trust Sound Expert DeLuxe Wave 32-3D (06301)
- FCC-ID I38-MMSN852: Aztech Sound Galaxy Waverider Pro 32-3D
- 826 and 846 were also marketed directly by Aztech and then known as:
- FCC-ID I38-MMSN826: Aztech Sound Galaxy Waverider 32+
- FCC-ID I38-MMSN846: Aztech Sound Galaxy Nova 16 Extra II-3D
- Together, these cover the AZT1605 and AT2316A, AZT2316R and AZT2316-S
- chipsets. All cards work fully -- full-duplex PCM, MIDI and FM. Full
- duplex is a little flaky on some.
- I38-MSN811 tends to not work in full-duplex but sometimes does with the
- highest success rate being achieved when you first start the capture and
- then a playback instead of the other way around (it's a CS4231-KL
- codec).
- The cards with an AD1845XP codec (my I38-MMSN826 and one of my
- I38-MMSN830s) are also somewhat duplex-challenged. Sometimes full-duplex
- works, sometimes not and this varies from try to try. This seems likely
- to be a timing problem somewhere inside wss-lib.
- I38-MMSN826 has an additional "ICS2115 WaveFront" wavetable synth
- onboard that isn't supported yet. The wavetable synths on I38-MMSN847
- and I38-MMSN852 are wired directly to the standard MPU-401 UART and the
- AUX1 input on the codec and work without problem.
- CD-ROM audio on the cards is routed to the codec "Line" input, Line-In
- to its Aux input, and FM/Wavetable to its AUX1 input. I did not rename
- the controls due to the capture source enumeration: I see that
- capture-source overrides are hardcoded in wss-lib and this is just too
- ugly to live.
- Versus the old snd-sgalaxy driver these drivers add support for the
- models without a configuration EEPROM (which are common), full-duplex,
- MPU-401 UART and OPL3. In the future they might grow support for that
- ICS2115 WaveFront synth on 826 and an hwdep interface to write to the
- EEPROM on the models that have one.
- - ALSA: hda - Update model entries in HD-Audio-Models.txt
- - ALSA: hda: document VIA models
- Add documentation about the autodetection of the VIA codec models to
- avoid the false impression that they are not supported.
- - Documentation: update broken web addresses.
- Below you will find an updated version from the original series bunching all patches into one big patch
- updating broken web addresses that are located in Documentation/*
- Some of the addresses date as far far back as 1995 etc... so searching became a bit difficult,
- the best way to deal with these is to use web.archive.org to locate these addresses that are outdated.
- Now there are also some addresses pointing to .spec files some are located, but some(after searching
- on the companies site)where still no where to be found. In this case I just changed the address
- to the company site this way the users can contact the company and they can locate them for the users.
- - ALSA: Update documents about new bits of xrun_debug proc file
- - ALSA: hda - Add missing ALC680_* definitions
- Also update the documentation.
- - sound: move driver parameters to their own files
- Move sound (OSS & ALSA) kernel parameters to their own files.
- - ALSA: hda - add ideapad model for Conexant 5051 codec
- Lenovo IdeaPad Y430 has an additional subwoofer connected at pin 0x1b,
- which isn't muted when headphone is plugged in. This adds additional
- support to the extra subwoofer via new ideapad model.
- - Documentation/: it's -> its where appropriate
- Fix obvious cases of "it's" being used when "its" was meant.
- - ALSA: Merge es1688 and es968 drivers
- The ESS ES968 chip is nothing more then a PnP companion
- for a non-PnP audio chip. It was paired with non-PnP ESS' chips:
- ES688 and ES1688. The ESS' audio chips are handled by the es1688
- driver in native mode. The PnP cards are handled by the ES968
- driver in SB compatible mode.
- Move the ES968 chip handling to the es1688 driver so the driver
- can handle both PnP and non-PnP cards. The es968 is removed.
- Also, a new PnP id is added for the card I acquired (the change
- was tested on this card).
- - ALSA: Add support of AudioScience ASI boards
- Added the support of AudioScience ASI boards.
- The driver has been tested for years on alsa-driver external tree,
- now finally got merged to the kernel.
[edit] Dreamcast AICA sound (pcm) driver
- - sound: sh: ctrl_in/outX to __raw_read/writeX conversion.
- The ctrl_xxx routines are deprecated, switch over to the __raw_xxx
- versions.
[edit] EMU10K1/EMU10K2 driver
- - ALSA: emu10k1: Fix warning: "CCR" redefined
- CCR is defined in emu10k1, but SuperH is defined too.
- If user use this driver with SuperH, it becomes a double definition.
- - emu10k1: sync with 2.6 kernel tree
- - ALSA: emu10k1 - delay the PCM interrupts (add pcm_irq_delay parameter)
- With some hardware combinations, the PCM interrupts are acknowledged
- before the period boundary from the emu10k1 chip. The midlevel PCM code
- gets confused and the playback stream is interrupted.
- It seems that the interrupt processing shift by 2 samples is enough
- to fix this issue. This default value does not harm other,
- non-affected hardware.
- More information: Kernel bugzilla bug#16300
- - ALSA: emu10k1: allow high-resolution mixer controls
- Add a module option to allow the GPR mixer controls to have the full
- resolution of the hardware, i.e., 0...2^31-1 instead of 0...100.
- Because of bugs in userspace tools like alsactl and alsamixer, this is
- not yet enabled by default.
- - Fix typos in comments
- [Ss]ytem => [Ss]ystem
- udpate => update
- paramters => parameters
- orginal => original
[edit] EMU8000 driver
- - ALSA: sb: check get_user() return value
- get_user() may fail, if so return -EFAULT.
- [Fixed one missing place by tiwai]
[edit] ENS1370/1+ driver
- - Update broken web addresses in the kernel.
- The patch below updates broken web addresses in the kernel
- Reviewed-by: Finn Thain <fthain@telegraphics.com.au>
[edit] ES1688 driver
- - ALSA: Merge es968 into es1688 driver
- - ALSA: es1688: add pedantic range checks
- Smatch complains that if (dev == SNDRV_CARDS) we're one past the end of
- the array. That's unlikely to happen in real life, I suppose.
- Also smatch complains about "strcpy(card->shortname, pcm->name);"
- The "pcm->name" buffer is 80 characters and "card->shortname" is 32
- characters. If you follow the call paths it turns out we never actually
- use more than 16 characters so it's not a problem. But anyway, let's
- make it easy for people auditing this in the future.
- - ALSA: Merge es1688 and es968 drivers
- The ESS ES968 chip is nothing more then a PnP companion
- for a non-PnP audio chip. It was paired with non-PnP ESS' chips:
- ES688 and ES1688. The ESS' audio chips are handled by the es1688
- driver in native mode. The PnP cards are handled by the ES968
- driver in SB compatible mode.
- Move the ES968 chip handling to the es1688 driver so the driver
- can handle both PnP and non-PnP cards. The es968 is removed.
- Also, a new PnP id is added for the card I acquired (the change
- was tested on this card).
- - ALSA: es1688: allocate snd_es1688 structure as a part of snd_card structure
- Allocate the snd_es1688 during the snd_card allocation.
- This allows to remove the card pointer from the snd_es1688 structure.
[edit] ES1968 driver
- - ALSA: es1968: Clear interrupts before enabling them
- Avoid spurious interrupts when initializing the device.
- - ALSA: snd-es1968: Make hardware volume buttons an input device (rev2)
- The hardware volume handling code in essence just detects key presses, and
- then does some hardcoded modification of the master volume based on which key
- is pressed.
- Clearly the right thing to do here is just report these keypresses to
- userspace and let userspace decide what to with them.
- This patch adds a Kconfig option which when enabled reports the volume
- buttons as keypresses using an input device. When enabled this option
- also gets rid of the ugly direct ac97 writes from the tasklet, the ac97lock
- and the need for using a tasklet in general.
[edit] ES968 driver
- - ALSA: Merge es968 into es1688 driver
- - ALSA: Merge es1688 and es968 drivers
- The ESS ES968 chip is nothing more then a PnP companion
- for a non-PnP audio chip. It was paired with non-PnP ESS' chips:
- ES688 and ES1688. The ESS' audio chips are handled by the es1688
- driver in native mode. The PnP cards are handled by the ES968
- driver in SB compatible mode.
- Move the ES968 chip handling to the es1688 driver so the driver
- can handle both PnP and non-PnP cards. The es968 is removed.
- Also, a new PnP id is added for the card I acquired (the change
- was tested on this card).
- - ALSA: es968: fix wrong PnP dma index
- There is only one dma for the ESS ES968 based board.
- Its index is 0 and not 1.
- This make the es968 card working.
[edit] Echoaudio driver
- - ALSA: echoaudio: check kmalloc() result
- If kmalloc() fails exit with -ENOMEM.
- Ack-by: Giuliano Pochini <pochini@shiny.it>
[edit] Emagic Audiowerk 2
- - ALSA: aw2-alsa.c: use pci_ids.h defines and fix checkpatch.pl noise
- Use the VENDOR/DEVICE ids provided in pci_ids.h instead of creating
- local ids of the same values.
- Also, fix the following checkpatch.pl warnings:
- WARNING: Use #include <linux/io.h> instead of <asm/io.h>
- WARNING: unnecessary whitespace before a quoted newline
[edit] GUS Extreme driver
- - ALSA: es1688: allocate snd_es1688 structure as a part of snd_card structure
- Allocate the snd_es1688 during the snd_card allocation.
- This allows to remove the card pointer from the snd_es1688 structure.
[edit] Generic drivers
- - Fix build of aloop with older kernels
- Added missing inclusion of <linux/math.h>
- - core: compilation fix for new QoS API, move snd-aloop code to alsa-kernel tree
- - snd-aloop: add controls for the playback stream parameters
- In some use cases, it is necessary to know the playback parameters before
- the capture stream is opened. Also, allow change the notify functionality
- for the stream parameters change using the universal control API.
- - snd-aloop: introduce "PCM Rate Shift 100000" control
- To keep synchronization with other clock sources, allow driver to shift
- the timing for +-20% using "PCM Rate Shift 100000" control. The value
- 100000 means no shift, 80000 means speed up for 20% and 120000 means
- slow down for 20%.
- - snd-aloop: Fix the garbage copy at the end of playback (draining)
- - aloop: add pcm_notify module parameter
- In some use cases, it is not good to restrict to one sample format/
- channel count/rate the both playback and capture. For grabbers or any
- other applications, it would be necessary to stop the capture stream
- when playback parameters change to allow restart capturing with
- the proper setup.
- - aloop module: separate playback and capture timers
- - the timing of playback and capture streams must be separate to ensure
- proper function
- - use snd_pcm_format_set_silence() rather than memset(0)
- - align copy transfers to frame size
- - Fix build with 2.6.35-rc1
- - ALSA: ml403-ac97cr: Use vsprintf extension %pR for struct resource
- - ALSA: snd-aloop - add pause support
- - ALSA: snd-aloop - fix locking issues (running flag updates)
- On SMP machines, the cable->running update must be atomic, otherwise
- stream is not started correctly sometimes.
- - ALSA: snd-aloop: add cable#0 and cable#1 files to proc card tree
- Show some useful runtime information using procfs.
- - ALSA: snd-aloop - fix issue in the timer start function
- In some circumstances (the rate shift value was changed), the irq_pos
- value may be higher than the fraction value in the timer start function.
- Check for it.
- Also, to avoid value overflow, decrease maximum period size.
- - ALSA: snd-aloop: Fix hw_params restrictions and checking
- This patch fixes the hw_params restrictions when first (or playback) stream
- sets the final hardware parameters. Also, fix the hw_params checking
- in the trigger callback.
- - ALSA: snd-aloop - fix "PCM Slave Active" element read value
- Simple coding fix.
- - ALSA: snd-aloop - fix capture buffer silence
- In a special case, some old samples are left in the capture ring buffer.
- Fix it.
- - ALSA: snd-aloop - fix the "PCM Playback Channels" kcontrol
- Obvious copy-and-paste error.
- - sound: Remove unnecessary casts of private_data
- - ALSA: introduce the snd-aloop module for the PCM loopback
- The snd-aloop module allows redirecting of the PCM playback in the
- kernel back to the user space using the standard ALSA PCM capture API.
- The module also allows time synchronization with another timing source
- and notifications of playback stream parameter changes.
- - Kconfig: fixo typo in "Xilinx'"
- - ALSA: Kconfig: SND_AC97_POWER_SAVE description improvement
- The description has been expanded to explain the time-out
- value provided by the power_save module parameter.
- - i8253: Convert i8253_lock to raw_spinlock
- i8253_lock needs to be a real spinlock in preempt-rt, i.e. it can
- not be converted to a sleeping lock.
- Convert it to raw_spinlock and fix up all users.
- LKML-Reference: <20100217163751.030764372@linutronix.de>
[edit] HDA Codec driver
[edit] HDA Intel driver
[edit] HDA generic driver
[edit] HDSPM driver
- - ALSA: [hdspm] Move static mapping arrays to .c
- As requested by Takashi and Jaroslav, these arrays should not be in the
- header file.
- - ALSA: hdspm - Add support for RME RayDAT and AIO
- Incorporate changes by Florian Faber into hdspm.c. Code taken from
- http://wiki.linuxproaudio.org/index.php/Driver:hdspe
- Heavily reworked to mostly comply with the coding standard (whitespace
- fixes, line width, C++ style comments)
- The code was tested and confirmed to be working on RME RayDAT.
[edit] ICE1712 driver
- - ALSA: ice1712 delta - initialize SPI clock
- The driver was using an initial value for the clock on the SPI bus
- which was read from ICE1712 EEPROM,
- ice->eeprom.data[ICE_EEP1_GPIO_STATE] & ICE1712_DELTA_AP_CCLK (0x02)
- It appears some cards have it default high, some cards
- have it default low. On my Delta 66 rev. E:
- $ cat /proc/asound/M66/ice1712 | grep 'GPIO state'
- GPIO state : 0x70 /* ICE1712_DELTA_AP_CCLK bit is zero */
- On my Audiophile 2496:
- $ cat /proc/asound/M2496/ice1712 | grep 'GPIO state'
- GPIO state : 0xfe /* ICE1712_DELTA_AP_CCLK bit is one */
- It must be raised before the first SPI write happens, or the write will
- fail, leading to:
- [ 23.248721] invalid CS8427 signature 0x0: let me try again...
- I theorize that 4eb4550ab37d351ab0973ccec921a5a2d8560ec7
- is no longer needed, it was a different way to workaround
- the problem.
- [fixed variable decleration by tiwai]
- - ALSA: ice1712 - working M-Audio Delta 66E support
- Rev. E of the M-Audio Delta 66 is partially supported (commit
- ef2cd2ccad66b4aba518eca7514eface267ee0f3), but the layout of the GPIO
- pins was still unclear. This patch adds the GPIO definitions so that
- communication to the CS8247 & 2x AK4524 works correctly.
- ALSA bug#3327 has more details; users cap & jhunt report there that the
- GPIO wiring is similar to the Digigram VX442 (chip select: pin 4 =
- CS8427, pin 5 = AK4524 #0, pin 6 = AK4524 #1). There has been a lot of
- conflicting information in the bug, but given these definitions, my
- Delta 66E works; I tested analog in&out at 44.1kHz & 96kHz, analog gain
- settings, S/PDIF clock sync, and S/PDIF in&out at 44.1kHz.
- - ALSA: ice1712: Add support for Edirol DA-2496
- This device is similar to the M-Audio Delta 1010LT in that it uses the
- AK4524VF ADC/DAC, but it does not use the CS8427 for SPDIF.
- The SPDIF appears to be set up correctly, but I am not able to test it
- as I do not have any devices that use it.
- This patch makes the ADC/DAC's and the hardware mixer visible to apps
- such as alsamixer and envy24control.
- - ALSA: ice1724 - Fix ESI Maya44 capture source control
- The capture source control of maya44 was wrongly coded with the bit
- shift instead of the bit mask. Also, the slot for line-in was
- wrongly assigned (slot 5 instead of 4).
- Reported-by: Alex Chernyshoff <alexdsp@gmail.com>
[edit] ISA
- - ALSA: ISA: Remove snd-sgalaxy
- Its hardware is handled more fully by the new azt1605/azt2316 drivers.
- - ALSA: ISA: New Aztech Sound Galaxy driver
- This is a new driver for Aztech Sound Galaxy ISA soundcards based on the
- AZT1605 and AZT2316 chipsets. It's constructed as two seperate drivers
- for either chipset generated from the same source file, with (very)
- minimal ifdeffery.
- The drivers check the SB DSP version to decide if they are being loaded
- for the right chip. AZT1605 returns 2.1 by default and AZT2316 3.1.
- This isn't full-proof as the DSP version can actually be set through
- software but it's close enough -- as far as I've been able to see, the
- DSP version can not be stored in the EEPROM and the cards will therefore
- startup with the defaults.
- This distinction could (with the same success rate) also be used to
- decide which chip we're looking at at runtime meaning a single, merged
- driver is also an option but I feel it's actually nicer this way. A
- merged driver would have to postpone translating the passed in resource
- values to the card configuration until it knew which one it was looking
- at and would need to postpone erring out on mpu_irq=10 for azt1605 and
- mpu_irq=3 for azt2316.
- The drivers have been tested on various cards. For snd-azt1605:
- FCC-ID I38-MMSN811: Aztech Sound Galaxy Nova 16 Extra
- FCC-ID I38-MMSN822: Aztech Sound Galaxy Pro 16 II
- and for snd-azt2316:
- FCC-ID I38-MMSN824: Aztech Sound Galaxy Pro 16 AB
- FCC-ID I38-MMSN826: Trust Sound Expert DeLuxe Wave 32 (05201)
- FCC-ID I38-MMSN830: Trust Sound Expert DeLuxe 16+ (05202)
- FCC-ID I38-MMSN837: Packard Bell ISA Soundcard 030069
- FCC-ID I38-MMSN846: Trust Sound Expert DeLuxe 16-3D (06300)
- FCC-ID I38-MMSN847: Trust Sound Expert DeLuxe Wave 32-3D (06301)
- FCC-ID I38-MMSN852: Aztech Sound Galaxy Waverider Pro 32-3D
- 826 and 846 were also marketed directly by Aztech and then known as:
- FCC-ID I38-MMSN826: Aztech Sound Galaxy Waverider 32+
- FCC-ID I38-MMSN846: Aztech Sound Galaxy Nova 16 Extra II-3D
- Together, these cover the AZT1605 and AT2316A, AZT2316R and AZT2316-S
- chipsets. All cards work fully -- full-duplex PCM, MIDI and FM. Full
- duplex is a little flaky on some.
- I38-MSN811 tends to not work in full-duplex but sometimes does with the
- highest success rate being achieved when you first start the capture and
- then a playback instead of the other way around (it's a CS4231-KL
- codec).
- The cards with an AD1845XP codec (my I38-MMSN826 and one of my
- I38-MMSN830s) are also somewhat duplex-challenged. Sometimes full-duplex
- works, sometimes not and this varies from try to try. This seems likely
- to be a timing problem somewhere inside wss-lib.
- I38-MMSN826 has an additional "ICS2115 WaveFront" wavetable synth
- onboard that isn't supported yet. The wavetable synths on I38-MMSN847
- and I38-MMSN852 are wired directly to the standard MPU-401 UART and the
- AUX1 input on the codec and work without problem.
- CD-ROM audio on the cards is routed to the codec "Line" input, Line-In
- to its Aux input, and FM/Wavetable to its AUX1 input. I did not rename
- the controls due to the capture source enumeration: I see that
- capture-source overrides are hardcoded in wss-lib and this is just too
- ugly to live.
- Versus the old snd-sgalaxy driver these drivers add support for the
- models without a configuration EEPROM (which are common), full-duplex,
- MPU-401 UART and OPL3. In the future they might grow support for that
- ICS2115 WaveFront synth on 826 and an hwdep interface to write to the
- EEPROM on the models that have one.
- - ALSA: Merge es1688 and es968 drivers
- The ESS ES968 chip is nothing more then a PnP companion
- for a non-PnP audio chip. It was paired with non-PnP ESS' chips:
- ES688 and ES1688. The ESS' audio chips are handled by the es1688
- driver in native mode. The PnP cards are handled by the ES968
- driver in SB compatible mode.
- Move the ES968 chip handling to the es1688 driver so the driver
- can handle both PnP and non-PnP cards. The es968 is removed.
- Also, a new PnP id is added for the card I acquired (the change
- was tested on this card).
[edit] Intel8x0 driver
- - ALSA: ac97: Apply quirk for Dell Latitude D610 binding Master and Headphone controls
- BugLink: https://launchpad.net/bugs/669279
- The original reporter states: "The Master mixer does not change the
- volume from the headphone output (which is affected by the headphone
- mixer). Instead it only seems to control the on-board speaker volume.
- This confuses PulseAudio greatly as the Master channel is merged into
- the volume mix."
- Fix this symptom by applying the hp_only quirk for the reporter's SSID.
- The fix is applicable to all stable kernels.
- Reported-and-tested-by: Ben Gamari <bgamari@gmail.com>
- - Update broken web addresses in the kernel.
- The patch below updates broken web addresses in the kernel
- Reviewed-by: Finn Thain <fthain@telegraphics.com.au>
- - ALSA: intel8x0: Mute External Amplifier by default for ThinkPad X31
- BugLink: https://bugs.launchpad.net/bugs/619439
- This ThinkPad model needs External Amplifier muted for audible playback,
- so set the inv_eapd quirk for it.
- Reported-and-tested-by: Dennis Bell <dennis.bell@parkerg.co.uk>
[edit] LX6464ES
- - ALSA: lx6464es - make 1 bit signed bitfield unsigned
- converts a 1 bit signed bitfield to an unsigned.
- Reported-by: Dr. David Alan Gilbert <linux@treblig.org>
[edit] MIPS AU1x00 driver
- - sound: Add missing spin_unlock
- Add a spin_unlock missing on the error path.
- The semantic match that finds this problem is as follows:
- (http://coccinelle.lip6.fr/)
- // <smpl>
- @@
- expression E1;
- @@
- * spin_lock(E1,...);
- <+... when != E1
- if (...) {
- ... when != E1
- * return ...;
- }
- ...+>
- * spin_unlock(E1,...);
- // </smpl>
[edit] MIXART driver
- - ALSA: sound/mixart: avoid redefining {readl,write}_{le,be} accessors
- If the platform already provides a definition for these accessors
- do not redefine them. The warning was caught on MIPS.
[edit] MSND driver
- - ALSA: msnd-classic: Fix invalid cfg parameter
- The driver doesn't probe the device properly because of left-over cfg[]
- that isn't used at all for msnd-classic device. This is only for msnd-
- pinnacle.
- - ALSA: msnd: check request_region() return value
- request_region() may fail, if so return -EBUSY.
[edit] Maestro3 driver
- - ALSA: maestro3: Clear interrupts before enabling them
- Avoid spurious interrupts when initializing the device.
- - ALSA: snd-maestro3: Make hardware volume buttons an input device (rev2)
- While working on the sound suspend / resume problems with my laptop
- I noticed that the hardware volume handling code in essence just detects
- key presses, and then does some hardcoded modification of the master volume
- based on which key is pressed.
- This made me think that clearly the right thing to do here is just report
- these keypresses to userspace and let userspace decide what to with them.
- This patch adds a Kconfig option which when enabled reports the volume
- buttons as keypresses using an input device. When enabled this option
- also gets rid of the ugly direct ac97 writes from the tasklet, the ac97lock
- and the need for using a tasklet in general.
- As an added bonus the keys now work identical to volume keys on a (usb)
- keyboard with multimedia keys, providing visual feedback of the volume
- level change, and a better range of the volume control (with a properly
- configured desktop environment).
- - ALSA: snd-meastro3: Document hardware volume control a bit
- While working on a fix for the volume being muted on the allegro in my
- Compaq EVO N600C after suspend, I've learned a few things about the hardware
- volume control worth documenting. The actual fix for the suspend / resume
- issue is in the next patch in this set.
- - ALSA: snd-meastro3: Ignore spurious HV interrupts during suspend / resume
- Ignore spurious HV interrupts during suspend / resume, this avoids
- mistaking them for a mute button press. This is not very pretty but
- it seems the only way to fix the master volume control gets muted
- after suspend issue I'm seeing. Note that the es1968 driver is doing
- exactly the same.
- - ALSA: snd-meastro3: Add amp_gpio quirk for Compaq EVO N600C
- Without this quirk sound stops working after suspend resume. With this quirk,
- one still needs to manually unmute the master volume control after a suspend /
- / resume cycle. That is fixed in another patch in this set.
- Note that this patch was submitted to the alsa bug tracker a long time ago:
- https://bugtrack.alsa-project.org/alsa-bug/view.php?id=4319
[edit] OPL3SA2 driver
- - tree-wide: fix comment/printk typos
- "gadget", "through", "command", "maintain", "maintain", "controller", "address",
- "between", "initiali[zs]e", "instead", "function", "select", "already",
- "equal", "access", "management", "hierarchy", "registration", "interest",
- "relative", "memory", "offset", "already",
[edit] OPL4
- - ALSA: opl4 - Fix a wrong argument in proc write callback
- The commit 24e4a1211f691fc671de44685430dbad757d8487
- ALSA: info - Use standard types for info callbacks
- introduced a wrong type to snd_opl4_mem_proc_write() for pos argument.
- Fixed now.
[edit] OSS device core
- - BKL: remove extraneous #include <smp_lock.h>
- The big kernel lock has been removed from all these files at some point,
- leaving only the #include.
- Remove this too as a cleanup.
- - sound: push BKL into open functions
- This moves the lock_kernel() call from soundcore_open
- to the individual OSS device drivers, where we can deal
- with it one driver at a time if needed, or just kill
- off the drivers.
- All core components in ALSA already provide
- adequate locking in their open()-functions
- and do not require the big kernel lock, so
- there is no need to add the BKL there.
- - sound: soundcore_open: Reduce the area BKL coverage
- Most of this function is protected by the sound_loader_lock.
- We can push down the BKL to this call out err = file->f_op->open(inode,file);
- In order to build the sound core without the BKL, we
- will need to push the lock_kernel() call into the ~20
- device drivers that register their file operations.
[edit] PCI drivers
- - Move asihpi driver to linux kernel tree
- Fix the rest build stubs.
- - ALSA: hdspm - Add RayDAT and AIO strings to Kconfig
- Inform users about the newly added support for RayDAT and AIO.
- - ALSA: virtuoso: add Xonar HDAV1.3 Slim support
- Add experimental support for the Asus Xonar HDAV1.3 Slim sound card.
- - ALSA: oxygen: add Xonar DG support
- Add experimental support for the Asus Xonar DG sound card.
- - ALSA: oxygen: add X-Meridian 2G support
- Add support for the AuzenTech X-Meridian 7.1 2G sound card.
- - ALSA: virtuoso: add HDMI enable switch for HDAV1.3
- The GPIO bit that enables analog output on the Xonar HDAV1.3 also
- disables the HDMI audio output, so we better add a switch for it.
- Hopefully, this is sufficient to make the HDMI output work.
- - ALSA: oxygen: add HiFier Serenade support
- Add support for the TempoTec/MediaTek HiFier Serenade sound card.
- The PCI ID was already there, but the driver handled it like the
- Fantasia model, which resulted in a dummy recording device. As
- a stereo output-only card, this model is to be handled exactly
- like the HG2PCI.
- - ALSA: oxygen: add Kuroutoshikou CMI8787-HG2PCI support
- Add support for the Kuroutoshikou CMI8787-HG2PCI sound card.
- [replaced non-latin letters in the patch by tiwai]
- - ALSA: oxygen: merge HiFier driver into snd-oxygen
- The snd-hifier driver contains more duplicated code than model-specific
- code, so it does not make sense for it to be a separate driver.
- Handling the two-channel output restriction can be easily done in the
- generic driver.
- - ALSA: virtuoso: update Kconfig text
- Update the Xonar config texts with the latest information about the
- Xonar DS, HDAV1.3 Slim, and Xense.
- - ALSA: oxygen: fix CONFIG_SND_OXYGEN_LIB dependency selection
- As the select directive does not handle indirect dependencies, select
- those explicitly in the driver sections.
- - ALSA: virtuoso: add Xonar DS headphone jack detection
- Now that the polarity of the headphone detection pin is known, replace
- the debugging message with a proper jack plug input device.
- - ALSA: snd-es1968: Make hardware volume buttons an input device (rev2)
- The hardware volume handling code in essence just detects key presses, and
- then does some hardcoded modification of the master volume based on which key
- is pressed.
- Clearly the right thing to do here is just report these keypresses to
- userspace and let userspace decide what to with them.
- This patch adds a Kconfig option which when enabled reports the volume
- buttons as keypresses using an input device. When enabled this option
- also gets rid of the ugly direct ac97 writes from the tasklet, the ac97lock
- and the need for using a tasklet in general.
- - ALSA: snd-maestro3: Make hardware volume buttons an input device (rev2)
- While working on the sound suspend / resume problems with my laptop
- I noticed that the hardware volume handling code in essence just detects
- key presses, and then does some hardcoded modification of the master volume
- based on which key is pressed.
- This made me think that clearly the right thing to do here is just report
- these keypresses to userspace and let userspace decide what to with them.
- This patch adds a Kconfig option which when enabled reports the volume
- buttons as keypresses using an input device. When enabled this option
- also gets rid of the ugly direct ac97 writes from the tasklet, the ac97lock
- and the need for using a tasklet in general.
- As an added bonus the keys now work identical to volume keys on a (usb)
- keyboard with multimedia keys, providing visual feedback of the volume
- level change, and a better range of the volume control (with a properly
- configured desktop environment).
- - ALSA: Add support of AudioScience ASI boards
- Added the support of AudioScience ASI boards.
- The driver has been tested for years on alsa-driver external tree,
- now finally got merged to the kernel.
[edit] PDAudioCF driver
- - Corrected pcmcia build fixes
- Fixed the wrong copies from 2.6.36.
- Add inclusion of pcmcia/cs.h in several places.
- - Create a dummy pcmcia/cs.h
- - Fix build of pcmcia drivers after 2.6.37-rc1 merge
- - Fix forgotten pdaudio_pcm.c for the new PCMCIA stuff
- - Fix typos in the previous patch
- - More fixes for new PCMCIA stuff
- - Add build-fixes for 2.6.36 PCMCIA stuff
- - Fix a copy&paste error in the previous commit
- - Fix build with 2.6.35-rc1
- - pcmcia: move driver name to struct pcmcia_driver
- Tested-by: Wolfram Sang <w.sang@pengutronix.de>
- - pcmcia: convert pcmcia_request_configuration to pcmcia_enable_device
- pcmcia_enable_device() now replaces pcmcia_request_configuration().
- Instead of config_req_t, all necessary flags are either passed as
- a parameter to pcmcia_enable_device(), or (in rare circumstances)
- set in struct pcmcia_device -> flags.
- With the last remaining user of include/pcmcia/cs.h gone, remove
- all references.
- Tested-by: Wolfram Sang <w.sang@pengutronix.de>
- - pcmcia: move config_{base,index,regs} to struct pcmcia_device
- Several drivers prefer to explicitly set config_{base,index,regs},
- formerly known as ConfigBase, ConfigIndex and Present. Instead of
- passing these values inside config_req_t, store it in struct
- pcmcia_device.
- Tested-by: Wolfram Sang <w.sang@pengutronix.de>
- - pcmcia: simplify IntType
- IntType was only set to INT_MEMORY (driver pcmciamtd) or INT_MEMORY_AND_IO
- (all other drivers). As this flags seems to relate to ioport access, make
- it conditional to the driver having requested IO port access. There are two
- drivers which do not request IO ports, but did set INT_MEMORY_AND_IO:
- ray_cs and b43. For those, we consistently only set INT_MEMORY in future.
- Tested-by: Wolfram Sang <w.sang@pengutronix.de>
- - pcmcia: do not use io_req_t when calling pcmcia_request_io()
- Instead of io_req_t, drivers are now requested to fill out
- struct pcmcia_device *p_dev->resource[0,1] for up to two ioport
- ranges. After a call to pcmcia_request_io(), the ports found there
- are reserved, after calling pcmcia_request_configuration(), they may
- be used.
- - pcmcia: do not use io_req_t after call to pcmcia_request_io()
- After pcmcia_request_io(), do not make use of the values stored in
- io_req_t, but instead use those found in struct pcmcia_device->resource[].
- - pcmcia: remove cs_types.h
- Remove cs_types.h which is no longer needed: Most definitions aren't
- used at all, a few can be made away with, and two remaining definitions
- (typedefs, unfortunatley) may be moved to more specific places.
- - pcmcia: dev_node removal (write-only drivers)
- dev_node_t was only used to transport some minor/major numbers
- from the PCMCIA device drivers to deprecated userspace helpers.
- However, only a few drivers made use of it, and the userspace
- helpers are deprecated anyways. Therefore, get rid of dev_node_t .
- As a first step, remove any usage of dev_node_t from drivers which
- only wrote to this typedef/struct, but did not make use of it.
- - pcmcia: re-work pcmcia_request_irq()
- Instead of the old pcmcia_request_irq() interface, drivers may now
- choose between:
- - calling request_irq/free_irq directly. Use the IRQ from *p_dev->irq.
- - use pcmcia_request_irq(p_dev, handler_t); the PCMCIA core will
- clean up automatically on calls to pcmcia_disable_device() or
- device ejection.
- - drivers still not capable of IRQF_SHARED (or not telling us so) may
- use the deprecated pcmcia_request_exclusive_irq() for the time
- being; they might receive a shared IRQ nonetheless.
- - pcmcia: pass FORCED_PULSE parameter in pcmcia_request_configuration()
- As it's only used there it makes no sense relying on pcmcia_request_irq().
[edit] PPC PMAC driver
- - ALSA: sound/ppc: Use printf extension %pR for struct resource
- Using %pR standardizes the struct resource output.
[edit] PPC PS3 driver
- - Fix spelling milisec -> ms in snd_ps3 module parameter description
- Instead of replacing 'milisec' by 'millisec', I decided to use
- the more common SI unit. Other drivers use 'milliseconds'
- or 'ms', too ('millisec' is never used).
- - sound: Remove pr_<level> uses of KERN_<level>
[edit] PPC Tumbler driver
- - ALSA: sound/ppc/powermac: remove undefined operations
- Modifying an object twice without an intervening sequence point is
- undefined.
[edit] RME HDSP driver
- - ALSA: hdsp - Add support for RPM io box
- Add support for the RME HDSP RPM IO box. Changes have been made in the identification of the IO box and the neccessary controls have been added.
- - ALSA: sound/pci/rme9652: prevent reading uninitialized stack memory
- The SNDRV_HDSP_IOCTL_GET_CONFIG_INFO and
- SNDRV_HDSP_IOCTL_GET_CONFIG_INFO ioctls in hdspm.c and hdsp.c allow
- unprivileged users to read uninitialized kernel stack memory, because
- several fields of the hdsp{m}_config_info structs declared on the stack
- are not altered or zeroed before being copied back to the user. This
- patch takes care of it.
[edit] RME9652 driver
- - ALSA: hdspm - remove unused arrays, reduce stack usage in hwdep_ioctl
- - ALSA: [hdspm] Move static mapping arrays to .c
- As requested by Takashi and Jaroslav, these arrays should not be in the
- header file.
- - ALSA: hdspm - Add support for RME RayDAT and AIO
- Incorporate changes by Florian Faber into hdspm.c. Code taken from
- http://wiki.linuxproaudio.org/index.php/Driver:hdspe
- Heavily reworked to mostly comply with the coding standard (whitespace
- fixes, line width, C++ style comments)
- The code was tested and confirmed to be working on RME RayDAT.
- - ALSA: sound/pci/rme9652: prevent reading uninitialized stack memory
- The SNDRV_HDSP_IOCTL_GET_CONFIG_INFO and
- SNDRV_HDSP_IOCTL_GET_CONFIG_INFO ioctls in hdspm.c and hdsp.c allow
- unprivileged users to read uninitialized kernel stack memory, because
- several fields of the hdsp{m}_config_info structs declared on the stack
- are not altered or zeroed before being copied back to the user. This
- patch takes care of it.
[edit] SB drivers
- - ALSA: Merge es968 into es1688 driver
- - ALSA: Merge es1688 and es968 drivers
- The ESS ES968 chip is nothing more then a PnP companion
- for a non-PnP audio chip. It was paired with non-PnP ESS' chips:
- ES688 and ES1688. The ESS' audio chips are handled by the es1688
- driver in native mode. The PnP cards are handled by the ES968
- driver in SB compatible mode.
- Move the ES968 chip handling to the es1688 driver so the driver
- can handle both PnP and non-PnP cards. The es968 is removed.
- Also, a new PnP id is added for the card I acquired (the change
- was tested on this card).
[edit] SIS7019 driver
- - sis7019: increase reset delays
- A few boards using this controller are reported to need a little extra
- time during their reset cycle.
- Reported-by: Michael Goeke <michael.goeke@icachip.de>
- - sis7019: fix capture issues with multiple periods per buffer
- When using a timing voice to clock out periods during capture, the
- driver would slowly loose synchronization and never catch up, eventually
- reaching a point where it no longer generated interrupts. To avoid
- this situation, the virtual period clocking was changed to shorten the
- next timing period when our timing voice falls too far behind the
- capture voice. In addition, the first virtual period for the timing
- voice was slightly too short, causing the timing voice to initially be
- ahead of the capture voice.
- While tracking down this problem, I noticed that the expected sample
- offset was being incorrectly initialized, causing an overrun to be
- incorrectly reported when the timing voice happened to be perfectly
- synchronized.
- Reported-by: Hans Schou <linux@schou.dk>
[edit] SPARC AMD7930 driver
- - of/device: Replace struct of_device with struct platform_device
- of_device is just an alias for platform_device, so remove it entirely. Also
- replace to_of_device() with to_platform_device() and update comment blocks.
- This patch was initially generated from the following semantic patch, and then
- edited by hand to pick up the bits that coccinelle didn't catch.
- @@
- @@
- -struct of_device
- +struct platform_device
- Reviewed-by: David S. Miller <davem@davemloft.net>
- - of/platform: remove all of_bus_type and of_platform_bus_type references
- Both of_bus_type and of_platform_bus_type are just #define aliases
- for the platform bus. This patch removes all references to them and
- switches to the of_register_platform_driver()/of_unregister_platform_driver()
- API for registering.
- Subsequent patches will convert each user of of_register_platform_driver()
- into plain platform_drivers without the of_platform_driver shim. At which
- point the of_register_platform_driver()/of_unregister_platform_driver()
- functions can be removed.
- - sparc/of: Move of_device fields into struct pdev_archdata
- This patch moves SPARC architecture specific data members out of
- struct of_device and into the pdev_archdata structure. The reason
- for this change is to unify the struct of_device definition amongst
- all the architectures. It also remvoes the .sysdata, .slot, .portid
- and .clock_freq properties because they aren't actually used by
- anything.
- A subsequent patch will replace struct of_device entirely with struct
- platform_device and the of_platform support code will share common
- routines with the platform bus (but the bus instances themselves can
- remain separate).
- This patch also adds 'struct resources *resource' and num_resources
- to match the fields defined in struct platform_device. After this
- change, 'struct platform_device' can be used as a drop-in replacement
- for 'struct of_platform'.
- This change is in preparation for merging the of_platform_bus_type
- with the platform_bus_type.
- - of: Remove duplicate fields from of_platform_driver
- .name, .match_table and .owner are duplicated in both of_platform_driver
- and device_driver. This patch is a removes the extra copies from struct
- of_platform_driver and converts all users to the device_driver members.
- This patch is a pretty mechanical change. The usage model doesn't change
- and if any drivers have been missed, or if anything has been fixed up
- incorrectly, then it will fail with a compile time error, and the fixup
- will be trivial. This patch looks big and scary because it touches so
- many files, but it should be pretty safe.
[edit] SPARC DBRI driver
- - of/platform: remove all of_bus_type and of_platform_bus_type references
- Both of_bus_type and of_platform_bus_type are just #define aliases
- for the platform bus. This patch removes all references to them and
- switches to the of_register_platform_driver()/of_unregister_platform_driver()
- API for registering.
- Subsequent patches will convert each user of of_register_platform_driver()
- into plain platform_drivers without the of_platform_driver shim. At which
- point the of_register_platform_driver()/of_unregister_platform_driver()
- functions can be removed.
- - sparc/of: Move of_device fields into struct pdev_archdata
- This patch moves SPARC architecture specific data members out of
- struct of_device and into the pdev_archdata structure. The reason
- for this change is to unify the struct of_device definition amongst
- all the architectures. It also remvoes the .sysdata, .slot, .portid
- and .clock_freq properties because they aren't actually used by
- anything.
- A subsequent patch will replace struct of_device entirely with struct
- platform_device and the of_platform support code will share common
- routines with the platform bus (but the bus instances themselves can
- remain separate).
- This patch also adds 'struct resources *resource' and num_resources
- to match the fields defined in struct platform_device. After this
- change, 'struct platform_device' can be used as a drop-in replacement
- for 'struct of_platform'.
- This change is in preparation for merging the of_platform_bus_type
- with the platform_bus_type.
[edit] SPARC cs4231 driver
- - of/platform: remove all of_bus_type and of_platform_bus_type references
- Both of_bus_type and of_platform_bus_type are just #define aliases
- for the platform bus. This patch removes all references to them and
- switches to the of_register_platform_driver()/of_unregister_platform_driver()
- API for registering.
- Subsequent patches will convert each user of of_register_platform_driver()
- into plain platform_drivers without the of_platform_driver shim. At which
- point the of_register_platform_driver()/of_unregister_platform_driver()
- functions can be removed.
- - sparc/of: Move of_device fields into struct pdev_archdata
- This patch moves SPARC architecture specific data members out of
- struct of_device and into the pdev_archdata structure. The reason
- for this change is to unify the struct of_device definition amongst
- all the architectures. It also remvoes the .sysdata, .slot, .portid
- and .clock_freq properties because they aren't actually used by
- anything.
- A subsequent patch will replace struct of_device entirely with struct
- platform_device and the of_platform support code will share common
- routines with the platform bus (but the bus instances themselves can
- remain separate).
- This patch also adds 'struct resources *resource' and num_resources
- to match the fields defined in struct platform_device. After this
- change, 'struct platform_device' can be used as a drop-in replacement
- for 'struct of_platform'.
- This change is in preparation for merging the of_platform_bus_type
- with the platform_bus_type.
- - of: Remove duplicate fields from of_platform_driver
- .name, .match_table and .owner are duplicated in both of_platform_driver
- and device_driver. This patch is a removes the extra copies from struct
- of_platform_driver and converts all users to the device_driver members.
- This patch is a pretty mechanical change. The usage model doesn't change
- and if any drivers have been missed, or if anything has been fixed up
- incorrectly, then it will fail with a compile time error, and the fixup
- will be trivial. This patch looks big and scary because it touches so
- many files, but it should be pretty safe.
- - of: Always use 'struct device.of_node' to get device node pointer.
- The following structure elements duplicate the information in
- 'struct device.of_node' and so are being eliminated. This patch
- makes all readers of these elements use device.of_node instead.
- (struct of_device *)->node
- (struct dev_archdata *)->prom_node (sparc)
- (struct dev_archdata *)->of_node (powerpc & microblaze)
[edit] SoC Audio for Freecale i.MX1x i.MX2x CPUs
[edit] SoC Audio for TXx9
[edit] SoC Audio for the Atmel AT32/AT91 System-on-Chip
[edit] SoC Audio for the Samsung S3C24XX chips
[edit] SoC Audio for the Samsung chips
[edit] SoC Blackfin
[edit] SoC Codec 88PM860x
[edit] SoC Codec AC97
[edit] SoC Codec AD1836
[edit] SoC Codec AD193X
[edit] SoC Codec AD1980
[edit] SoC Codec AD73311
[edit] SoC Codec AK4104
[edit] SoC Codec AK4535
[edit] SoC Codec AK4642
[edit] SoC Codec AK4671
[edit] SoC Codec CQ0093 Voice
[edit] SoC Codec CS4270
[edit] SoC Codec CS42L51
[edit] SoC Codec CX20442
[edit] SoC Codec DA7210
[edit] SoC Codec DIT SPDI/F
[edit] SoC Codec General Digital MICs
[edit] SoC Codec MAX98088
[edit] SoC Codec Philips UDA134x
[edit] SoC Codec Philips UDA1380
[edit] SoC Codec SSM2602
[edit] SoC Codec STAC9766
[edit] SoC Codec TI sn95031
[edit] SoC Codec TLV320AIC23
[edit] SoC Codec TLV320AIC26
[edit] SoC Codec TLV320AIC3X
[edit] SoC Codec TLV320DAC33
[edit] SoC Codec TPA6130A2
[edit] SoC Codec TWL4030
[edit] SoC Codec TWL6040
[edit] SoC Codec WL1273
[edit] SoC Codec WM2000
[edit] SoC Codec WM8350
[edit] SoC Codec WM8400
[edit] SoC Codec WM8510
[edit] SoC Codec WM8523
[edit] SoC Codec WM8580
[edit] SoC Codec WM8711
[edit] SoC Codec WM8727
[edit] SoC Codec WM8728
[edit] SoC Codec WM8731
[edit] SoC Codec WM8737
[edit] SoC Codec WM8741
[edit] SoC Codec WM8750
[edit] SoC Codec WM8753
[edit] SoC Codec WM8770
[edit] SoC Codec WM8776
[edit] SoC Codec WM8804
[edit] SoC Codec WM8900
[edit] SoC Codec WM8903
[edit] SoC Codec WM8904
[edit] SoC Codec WM8940
[edit] SoC Codec WM8955
[edit] SoC Codec WM8960
[edit] SoC Codec WM8961
[edit] SoC Codec WM8962
[edit] SoC Codec WM8971
[edit] SoC Codec WM8974
[edit] SoC Codec WM8978
[edit] SoC Codec WM8985
[edit] SoC Codec WM8988
[edit] SoC Codec WM8990
[edit] SoC Codec WM8991
[edit] SoC Codec WM8993/4
[edit] SoC Codec WM8994
[edit] SoC Codec WM8995
[edit] SoC Codec WM9081
[edit] SoC Codec WM9090
[edit] SoC Codec WM9712
[edit] SoC Codec alc5621/2/3
[edit] SoC DaVinci
[edit] SoC Dynamic Audio Power Management
[edit] SoC EP93XX
[edit] SoC FSI SH7724
[edit] SoC Freescale
[edit] SoC Ingenic JZ4740
[edit] SoC Intel Medfield MID platform
[edit] SoC Layer
[edit] SoC Marvell Kirkwood
[edit] SoC NVIDIA Tegra
[edit] SoC Nuvoton NUC900
[edit] SoC PXA2xx 88PM860x Tavor EVB3
[edit] SoC PXA2xx Aeronix Zipit Z2
[edit] SoC PXA2xx Corgi
[edit] SoC PXA2xx E740
[edit] SoC PXA2xx EM-X270
[edit] SoC PXA2xx Poodle
[edit] SoC PXA2xx Spitz
[edit] SoC PXA2xx Tosa
[edit] SoC PXA2xx saarb
[edit] SoC S6000
[edit] SoC SH7760 AC97
[edit] SoC Texas Instruments OMAP
[edit] Soc PXA2xx Imote 2
[edit] Soc PXA2xx Magician
[edit] Sound Galaxy driver
- - Add build stub for new galaxy driver
- - ALSA: ISA: Remove snd-sgalaxy
- Its hardware is handled more fully by the new azt1605/azt2316 drivers.
[edit] Trident driver
- - fix typos concerning "initiali[zs]e"
[edit] USB
- - Move USB wrapper to individual header
- Also add a dummy definition of missing USB_SPEED_SUPER for older kernels.
- - ALSA: usb/6fire - Driver for TerraTec DMX 6Fire USB
- What is working: Everything except SPDIF
- - Hardware Master volume
- - PCM 44-192kHz@24 bits, 6 channels out, 4 channels in (analog)
- - MIDI in/out
- - firmware loading after cold start
- - phono/line switching
- - ALSA: snd-usb-caiaq: Add support for Traktor Kontrol S4
- This patch adds support for the new Traktor Kontrol S4 by Native
- Instruments. It features a new audio data streaming model, MIDI
- in and out ports, a huge number of 174 dimmable LEDs, 96 buttons
- and 46 absolute encoder axis, including some rotary encoders.
- All features are supported by the driver now.
- Did some code refactoring along the way.
- - ALSA: usb-audio: parse clock topology of UAC2 devices
- Audio devices which comply to the UAC2 standard can export complex clock
- topologies in its descriptors and set up links between them.
- The entities that are defined are
- - clock sources, which define the end-leafs.
- - clock selectors, which act as switch to select one out of many
- possible clocks sources.
- - clock multipliers, which have an input clock source, and act as clock
- source again. They can be used to derive one clock from another.
- All sample rate changes, clock validity queries and the like must go to
- clock source elements, while clock selectors and multipliers can be used
- as terminal clock source.
- The following patch adds a parser for these elements and functions to
- iterate over the tree and find the leaf nodes (clock sources).
- The samplerate set functions were moved to the new clock.c file.
[edit] USB Edirol UA101 driver
- - Fix build of usb-ua101 with old kernels
- - USB: rename usb_buffer_alloc() and usb_buffer_free() users
- For more clearance what the functions actually do,
- usb_buffer_alloc() is renamed to usb_alloc_coherent()
- usb_buffer_free() is renamed to usb_free_coherent()
- They should only be used in code which really needs DMA coherency.
- All call sites have been changed accordingly, except for staging
- drivers.
[edit] USB TerraTec DMX 6Fire
- - Add build-stub for 6fire
- - ALSA: usb/6fire - Driver for TerraTec DMX 6Fire USB
- What is working: Everything except SPDIF
- - Hardware Master volume
- - PCM 44-192kHz@24 bits, 6 channels out, 4 channels in (analog)
- - MIDI in/out
- - firmware loading after cold start
- - phono/line switching
[edit] USB USX2Y
- - ALSA: snd-usb-us122l: Fix missing NULL checks
- Fix missing NULL checks in usb_stream_hwdep_poll() and usb_stream_hwdep_ioctl().
- Wake up poll waiters before returning from usb_stream_hwdep_ioctl().
- - sound: fixed typos
- - ALSA: sound/usb/usx2y: simplify conditional
- Simplify conditional: (a || (!a && b)) => (a || b)
[edit] USB caiaq
- - Fix build errors with 2.6.37-rc1 update
- Refreshed patch, added noop_llseek compat definition for older kernels.
- - ALSA: snd-usb-caiaq: Add support for Traktor Kontrol S4
- This patch adds support for the new Traktor Kontrol S4 by Native
- Instruments. It features a new audio data streaming model, MIDI
- in and out ports, a huge number of 174 dimmable LEDs, 96 buttons
- and 46 absolute encoder axis, including some rotary encoders.
- All features are supported by the driver now.
- Did some code refactoring along the way.
- - ALSA: snd-usb-caiaq: drop version number
- Let git do the job.
- - ALSA: snd-usb-caiaq: Bump version number to 1.3.21
- - ALSA: Revert "ALSA: snd-usb-caiaq: Set default input mode of A4DJ"
- Do not explicity set the default input mode. Use the hardware default
- of mode 0 ('Control vinyl'), which is now available.
- This reverts commit e3ca4c9.
- - ALSA: snd-usb-caiaq: Simplify single case to an 'if'
- After removing code, only one case remains. So use an 'if' instead.
- - ALSA: snd-usb-caiaq: Restore 'Control vinyl' input mode on A4DJ
- This feature was undocumented on early A4DJ units. It is indicated
- by lighting both the 'line' and 'phono' lamps at the same time.
- Newer units document this and the newer Windows drivers enable this
- for all units, so restore the functionality.
- This patch simplifies the code and changes the mode mapping to match
- the A8DJ, favouring simpler code and consistency over keeping the
- existing mapping.
- Both 'Control vinyl' and 'Phono' input modes enable the hardware
- preamp. The difference is the input impedance.
- This reverts commit 9a9527e.
- - ALSA: usb/caiaq: fix Traktor Kontrol X1 ABS_HAT2X axis
[edit] USB generic driver
- - linux 2.4 compilation fixes
- - Fix build errors with 2.6.37-rc1 update
- Refreshed patch, added noop_llseek compat definition for older kernels.
- - Fix builds with the new USB stack
- - Build with the updated usb-audio driver
- A new v2 struct was introduced.
- - Refresh usb/mixer.patch
- - ALSA: snd-usb-us122l: Fix MIDI output
- The US-122L always reads 9 bytes per urb unless they are set to 0xFD.
- - ALSA: usb-audio: add Edirol SD-90 PCM support
- Add support for the 24-bit audio I/Os of the Edirol SD-90 interface.
- Reported-any-tested-by: Jim Grusendorf <alsa-user@grusendorf.ca>
- - ALSA: usb-audio: use enum control info helper
- Simplify info callbacks by using the snd_ctl_enum_info() helper function.
- - ALSA: usb-audio - Support for Power/Status LED on Creative USB X-Fi S51
- This patch adds support for Power/Status LED on Creative USB X-Fi S51.
- There is just one LED on the device. The LED can either be On or it
- can be set to Blink. There doesn't seem to be a way to switch it off.
- The control message to change LED status is similar to that of
- audigy2nx except that the index is to be set to 0 and value is 1 for
- Blink and 0 for On.
- The 'Power LED' control in alsamixer when muted will cause the LED to
- Blink continuously. When unmuted the LED will stay On. The Creative
- driver under Windows sets the LED to blink whenever audio is muted.
- This LED can be treated as the CMSS LED but I figured since there is
- just one LED, it should be treated as the Power LED. Is that alright?
- I've also changed the comment "Usb X-Fi" to "Usb X-Fi S51" as there
- are other external X-Fi devices from Creative like Usb X-Fi Go and
- Xmod. The volume knob and LED support patch doesn't apply to them.
- - ALSA: usb - driver neglects kmalloc return value check and may deref NULL
- sound/usb/pcm.c::snd_usb_pcm_check_knot() fails to check the return value
- from kmalloc() and may end up dereferencing a null pointer.
- The patch below (compile tested only) should take care of that little
- problem.
- - ALSA: usb-audio: automatically detect feedback format
- There are two USB Audio Class specifications (v1 and v2), but neither of
- them clearly defines the feedback format for high-speed UAC v1 devices.
- Add to this whatever the Creative and M-Audio firmware writers have been
- smoking, and it becomes impossible to predict the exact feedback format
- used by a particular device.
- Therefore, automatically detect the feedback format by looking at the
- magnitude of the first received feedback value.
- Also, this allows us to get rid of some special cases for E-Mu devices.
- - ALSA: usb - Creative USB X-Fi volume knob support
- Adds an entry for Creative USB X-Fi to the rc_config array in
- mixer_quirks.c to allow use of volume knob on the device.
- The action of the volume knob is received by lirc when its using the
- alsa_usb driver.
- - ALSA: usb-audio: add Novation Launchpad support
- Add a quirk entry for the Novation Launchpad USB MIDI controller.
- QUIRK_MIDI_FASTLANE gets renamed to *_RAW_BYTES because this quirk type
- is now shared by different devices.
- Tested-by: Jakob Flierl <jakob.flierl@gmail.com>
- - ALSA: usb/mixer: remove bogus cast
- "uinfo->value.enumerated.item" is an unsigned int. If it's negative
- when we do the comparison:
- if ((int)uinfo->value.enumerated.item >= cval->max)
- then we would read past the end of the array on the next line.
- I also changed the strcpy() to strlcpy() out of paranoia.
- - ALSA: usb-audio - Fix an unused-variable compile warning
- Used only when CONFIG_SND_DEBUG=y
- sound/usb/mixer.c: In function 'get_min_max':
- sound/usb/mixer.c:762: warning: unused variable 'chip'
- Reported-by: Andrew Morton <akpm@linux-foundation.org>
- - ALSA: usb-audio: add more Yamaha USB MIDI devices
- Add quirks for more devices (according to driver V.3.0.4-2).
- - ALSA: usb-audio: fix Fast Track Ultra (8R) 44.1 sample rates
- The M-Audio Fast Track Ultra series devices did not play sound correctly
- at 44.1/88.2 kHz. Changing the output endpoint attribute to adaptive
- fixes this.
- - ALSA: usb-audio: add BOSS ME-25 support
- Add a quirk to make the BOSS ME-25 work.
- Many thanks to Kees van Veen.
- - ALSA: usb-audio: add Roland A-PRO support
- Add a quirk for the Roland/Cakewalk A-300PRO/A-500PRO/A-800PRO keyboards.
- - ALSA: usb-audio: add Edirol PCR-1 PCM support
- Add a quirk for the other logical device of the PCR-1 so that not only
- the MIDI interface but also the audio interface works.
- - ALSA: usb - Release capture substream URBs properly
- Due to the wrong "return" in the loop, a capture substream won't be
- released at disconnection properly if the device is capture only and has
- no playback substream. This caused Oops occasionally at the device
- reconnection.
- Reported-by: Kim Minhyoung <minhyoung.kim@lge.com>
- - ALSA: usb-audio: fix detection of vendor-specific device protocol settings
- The Audio Class v2 support code in 2.6.35 added checks for the
- bInterfaceProtocol field. However, there are devices (usually those
- detected by vendor-specific quirks) that do not have one of the
- predefined values in this field, which made the driver reject them.
- To fix this regression, restore the old behaviour, i.e., assume that
- a device with an unknown bInterfaceProtocol field (other than
- UAC_VERSION_2) has more or less UAC-v1-compatible descriptors.
- [compile warning fixes by tiwai]
- - ALSA: usb-audio: Assume first control interface is for audio
- For devices with more than one control interface, let's assume the first
- one contains the audio controls. Unfortunately, there is no field in any
- of the descriptors to tell us whether a control interface is for audio
- or MIDI controls, so a better check is not easy to implement.
- On a composite device with audio and MIDI functions, for example, the
- code currently overwrites chip->ctrl_intf, causing operations on the
- control interface to fail if they are issued after the device probe.
- - ALSA: usb: USB3 SuperSpeed sound support
- This is V2 of the patch, after feedback from Clemens and Daniel.
- This patch adds SuperSpeed support to the USB drivers under sound/. It adds
- tests for USB_SPEED_SUPER to the appropriate places that check for the USB
- speed.
- This patch has been tested with our SS USB3 device emulating a set of Yamaha
- speakers and a Logitech microphone, but with the descriptors modified to add
- USB3 support. It has also been tested with the real speakers and microphone,
- to make sure that USB2 devices still work.
- - ALSA: sound/usb/format: silence uninitialized variable warnings
- Gcc complains that ret might be used uninitialized:
- sound/usb/format.c: In function ‘snd_usb_parse_audio_format’:
- sound/usb/format.c:354: warning: ‘ret’ may be used uninitialized in this function
- sound/usb/format.c:354: note: ‘ret’ was declared here
- sound/usb/format.c:414: warning: ‘ret’ may be used uninitialized in this function
- sound/usb/format.c:414: note: ‘ret’ was declared here
- I suppose it could be uninitialized if there is ever a UAC_VERSION_3
- released. Anyway this patch is worthwhile if only to silence the gcc
- warning.
- - ALSA: usb - Correct audio problem for Hauppage HVR-850 and others rel. to urb data align
- Match usb ids in usb/quirks-table.h for some Hauppage HVR-950Q models
- and for the HVR850 model to those ids at the end of au0828-cards.c
- Thanks to nhJm449 for pointing out the problem.
- - fix comnment/printk typos concerning "empty"
- - ALSA: usb-audio: silence a superfluous warning
- It is not advisable to print a warning when a device does not support
- setting the sample rate because this is perfectly valid for devices with
- a single rate or where rates are implicitly changed by selecting another
- alternate setting.
- - ALSA: usb - Fix compile error with CONFIG_SND_DEBUG_VERBOSE=y
- Replaced the forgotten cval->mixer->ctrlif.
- - ALSA: usb-audio: simplify control interface access
- As the control interface is now carried in struct snd_usb_audio, we can
- simplify the API a little and also drop the private ctrlif field from
- struct usb_mixer_interface.
- Also remove a left-over function prototype in pcm.h.
- - ALSA: usb-audio: move and add some comments
- Also add a list of open topics.
- - ALSA: usb-midi: whitespace fixes
- - ALSA: usb-audio: unify UAC macros and struct names
- Get rid of the last occurances of _v1 suffixes, and move the version
- number right after the "uac" string. Now things are consitent again.
- Sorry for the forth and back, but it just looks much nicer this way.
- - ALSA: usb-audio: clean up includes in clock.c
- - ALSA: usb-audio - Add volume resolution quirk for some Logitech webcams
- Some programs like Skype trying to set capture volume automatically.
- Normally it will tray, carefully step by step lover or higher, set the volume.
- In real word it work not really well, because devises and vendors lie about
- real audio settings.
- For example most Logitech webcams have 6400 or 3500 steps for capture volume.
- They do not tell that actual resolution is 384. So we have only 7 or 18 real
- steps. In this patch I set real resolution only for tested devices.
- - ALSA: usb/endpoint, fix dangling pointer use
- Stanse found that in snd_usb_parse_audio_endpoints, there is a
- dangling pointer dereference. When snd_usb_parse_audio_format fails,
- fp is freed, and continue invoked. On the next loop, there is
- "fp && fp->altsetting == 1 && fp->channels == 1" test, but fp is set
- from the last iteration (but is bogus) and thus ilegally dereferenced.
- Set fp to NULL before "continue".
- - ALSA: usb-audio: fix UAC2 control value queries
- For RANGE requests, we should only query as much bytes as we're in fact
- interested in.
- For CUR requests, we shouldn't confuse the firmware with an overlong
- request but just ask for 2 bytes.
- This might need fixing in the future as it's not entirely clear when to
- dispatch 1-byte, 2-byte and 4-byte request blocks. For now, we assume
- everything is coded in 16bit - this works for all firmware
- implementations I've seen.
- Reported-by: Alex Lee <alexlee188@gmail.com>
- - ALSA: usb-audio: parse UAC2 sample rate ranges correctly
- A device may report its supported sample rates in ranges rather than in
- discrete triplets. The code used to only parse the MIN field instead of
- properly paying attention to the MAX and RES values.
- Also, handle RES values of 1 correctly and announce a continous sample
- rate range in this case.
- Reported-by: Alex Lee <alexlee188@gmail.com>
- - ALSA: usb-audio: fix control messages for USB_RECIP_INTERFACE
- Control messages directed to an interface must have the interface number
- set in the lower 8 bits of wIndex. This wasn't done correctly for some
- clock and mixer messages.
- Reported-by: Alex Lee <alexlee188@gmail.com>
- - ALSA: usb-audio: add check for faulty clock in parse_audio_format_rates_v2()
- - ALSA: usb-audio: export UAC2 clock selectors as mixer controls
- The UAC2 clock selectors are fortunately compatible with UAC1 audio
- selector units, so we can simply reuse the same approach to get all the
- linked units.
- Requests to this control need a different CS value though.
- - ALSA: usb-audio: clean up find_audio_control_unit()
- Use a struct to parse the audio units, and return usable descriptors
- for all types. There's no need to limit the result set, except for some
- kind of sanity check.
- - ALSA: usb-audio: add UAC2 sepecific Feature Unit controls
- The bits to enable them are always 0 for UAC1 devices, so no additional
- checks are required.
- - ALSA: usb-audio: unify constants from specification
- Move more definitions from private enums to appropriate header files.
- - ALSA: usb-audio: parse clock topology of UAC2 devices
- Audio devices which comply to the UAC2 standard can export complex clock
- topologies in its descriptors and set up links between them.
- The entities that are defined are
- - clock sources, which define the end-leafs.
- - clock selectors, which act as switch to select one out of many
- possible clocks sources.
- - clock multipliers, which have an input clock source, and act as clock
- source again. They can be used to derive one clock from another.
- All sample rate changes, clock validity queries and the like must go to
- clock source elements, while clock selectors and multipliers can be used
- as terminal clock source.
- The following patch adds a parser for these elements and functions to
- iterate over the tree and find the leaf nodes (clock sources).
- The samplerate set functions were moved to the new clock.c file.
- - ALSA: usb-audio: support partially write-protected UAC2 controls
- So far, UAC2 controls are marked read-only if any of the channels are
- marked read-only in the descriptors. Change this behaviour and
- - mark them writeable unless all channels are read-only
- - store the read-only mask in usb_mixer_elem_info and
- - check the mask again in set_cur_mix_value(), and bail out for
- write-protected channels.
- - ALSA: usb-audio: UAC2: clean up parsing of bmaControls
- Introduce two new static inline functions for a more readable parsing
- of UAC2 bmaControls.
- - USB: rename usb_buffer_alloc() and usb_buffer_free() users
- For more clearance what the functions actually do,
- usb_buffer_alloc() is renamed to usb_alloc_coherent()
- usb_buffer_free() is renamed to usb_free_coherent()
- They should only be used in code which really needs DMA coherency.
- All call sites have been changed accordingly, except for staging
- drivers.
- - ALSA: usb-audio: fix feature unit parser for UAC2
- Fix a small off-by-one bug which causes the feature unit to announce a
- wrong number of channels. This leads to illegal requests sent to the
- firmware eventually.
- - ALSA: usb-audio: add support for UAC2 pitch control
- This request is again handled differently in comparison to UAC1.
- - ALSA: usb-audio: parse UAC2 endpoint descriptors correctly
- UAC2 devices have their information about pitch control stored in a
- different field. Parse it, and emulate the bits for a v1 device.
- A new struct uac2_iso_endpoint_descriptor is added.
- - ALSA: usb-audio: fix return values
- -1 is not a good return value as it means -EPERM, "not permitted".
- Choose -ENOTSUPP instead, which is what the code really wants to tell
- its callers.
- - ALSA: usb-audio: parse more format descriptors with structs
- - ALSA: usb-audio: add support for Akai MPD16
- The decoding/encoding is based on own reverse-engineering. Both control and
- data ports are handled. Writing to control port supports SysEx events only,
- as this is the only type of messages that MPD16 recognizes.
- - sound: fixup for usb_buffer_alloc/free rename
- This is needed before the USB merge.
- - ALSA: sound/usb: add preliminary support for UAC2 interrupts
- For both UAC1 and UAC2, interrupt endpoint messages are now parsed with
- structs rather that with anonymous buffer array accesses.
- For UAC2, only CUR interrupt notifications are supported for now.
- snd_usb_mixer_status_complete() was renamed to
- snd_usb_mixer_interrupt().
- Fixed one indentation flaw on the way.
- - ALSA: sound/usb: fix UAC1 regression
- Commit 23caaf19b ("ALSA: usb-mixer: Add support for Audio Class v2.0")
- broke support for Class1 devices due to two faulty changes. This patch
- fixes it.
- Reported-and-Tested-by: The Source <thesourcehim@gmail.com>
[edit] Utils
- - alsa-info.sh: DMI - show also system version string
- - Alsa-info: Fix typo
- This simple typo has annoyed me for a while. Please fix it, so
- I can focus on more important issues :-)
- - Add CONFIG_LZO_COMPRESS and CONFIG_LZO_DECOMPRESS checks
- - alsa-compile.sh: added support for Debian and Ubuntu
- - alsa-compile.sh: Fix --patch option, fix gettext-devel installation for RHEL5
- - alsa-compile.sh: improved distribution name check and added RHEL support
- - alsa-compile.sh: Check if lsb package is installed for Fedora distro
- - alsa-compile.sh: Fix typo and add directory check for --url
- - alsa-compile.sh: add checks for more packages for alsa-utils and other fixes
- - alsa-compile.sh: fix make package checks
- - alsa-compile.sh: add check for make package
- - alsa-compile.sh: zypper does not return proper exitcode, too
- - mod-deps - Don't put unrelated kconfigs in config1.h.in
- - alsa-compile.sh: fix distribution name detection
[edit] VIA82xx driver
- - ALSA: via82xx: allow changing the initial DXS volume
- As per-stream volume controls, the DXS controls are not intended to
- adjust the overall sound level and so are initialized every time
- a stream is opened. However, there are special situations where one
- wants to reduce the overall volume in the digital domain, i.e., before
- the AC'97 codec's PCM volume control. To allow this, add a module
- parameter that sets the initial DXS volume.
- Tested-by: Soeren D. Schulze <soeren.d.schulze@gmx.de>
[edit] YMFPCI driver
- - ALSA: ymfpci: use enum control info helper
- Simplify the info callback by using the snd_ctl_enum_info() helper function.
[edit] au88x0 driver
- - ALSA : au88x0 - Limit number of channels to fix Oops via OSS emu
- Fix playback/capture channels patch to change supported playback
- channels of au8830 to 1,2,4 and capture channels to 1,2.
- This prevent oops when oss emulation use SNDCTL_DSP_CHANNELS to
- set 3 Channels
- - sound: fixed typos
[edit] gitcompile script
- - gitcompile: fixed typo
- - gitcompile: check for more and correct alsa-kmirror/kernel directories
- - gitcompile: Fix issue with relative ALSAKERNELDIR
- Reported-by: Stephen Warren <swarren@nvidia.com>
- - gitcompile: Add right check for whole linux 2.6 trees (ALSAKERNELDIR)
[edit] alsa-lib
[edit] Core
- - Release v1.0.24
- - configure.in: don't rely on test -a, not all shells support it
- Notably, /bin/sh in older Debian and Ubuntu is dash, which doesn't.
- - Version-check libtool correctly when doing an out-of-tree build
- libtool is only created at the end of ./configure, so it doesn't make
- sense to grep it in ./configure (the check would always fail the first
- time). However, ltmain.sh is copied into the ${srcdir} by libtoolize and
- should be safe to check at any time that configure can be run.
- - ucm: Moved ucm to src/ucm subdirectory
- - separate code to more files
- - use standard lists to represent structures
- - use alsa-lib configuration parser
- - general: recoded snd_dlobj_ functions
- - changed logic to get/put blocks
- - added mutex locking of the symbol list
- - added reference counting (do not free used dl handles)
- - Check for thread-specific locale support
[edit] Control API
- - ucm: ctlparse - always terminate cset buffer
- - control: add ASCII parsers from amixer
- - tlv: fix returned dB information for min-is-mute controls
- For TLV information that indicates that the minimum value is actually
- muted, the returned range used the wrong minimum dB value, and
- converting dB values to raw control values did not round up correctly
- near the minimum.
- - namehint: Another fix to properly evaluate hw devices
- - namehint: Fix hw device evaluation (missing last device)
- - general: recoded snd_dlobj_ functions
- - changed logic to get/put blocks
- - added mutex locking of the symbol list
- - added reference counting (do not free used dl handles)
- - namehint: Evaluate more possibilities for hw devices
- This tries to fix the issue when logical device indexes does not match the
- hardware device indexes (like hdmi -> 0:3, 1:7, 2:8, 3:9).
- - Memory leak in namehint.c
- Get_card_name() can be called more than once on the same list, so it
- must free the previous list->cardname before replacing it.
- - tlv: Remove tailing tab after snd_ctl_get_dB_range function
- Cosmetic fix.
- There was a tab instead of new line after snd_ctl_get_dB_range
- function.
- - tlv: Handle 'holes' in SND_CTL_TLVT_DB_RANGE array
- When converting from dB to raw value, and DB_RANGE is
- used with non overlapping map, dB value in between the
- sub ranges will be not found.
- For example, if the control has the following:
- 0: -10dB
- 1: -5dB
- 2: 0dB
- 3: 2dB
- 4: 4dB
- static const unsigned int nonoverlapping_tlv[] = {
- TLV_DB_RANGE_HEAD(2),
- 0, 2, TLV_DB_SCALE_ITEM(-1000, 500, 0),
- 3, 4, TLV_DB_SCALE_ITEM(200, 200, 0),
- };
- Range 1: -10 .. 0dB
- Range 2: 2 .. 4dB
- If user asks for 1dB the snd_tlv_convert_from_dB will not find
- the raw value, since the 1dB is not part of either range.
- To fix this, we will store the previous non maching range's
- maximum raw value. If the dB value is not found in the next range,
- we will check, if the requested dB value is in between the current
- and the previous range, and if it is than pick the apropriate raw
- value based on the xdir (up or down rounding).
- - tlv: Check out of range dB with SND_CTL_TLVT_DB_RANGE
- When converting from dB value to raw value, the control's
- full range was not checked in case of SND_CTL_TLVT_DB_RANGE.
- Check out of range dB values, and return apropriate raw
- value for the caller.
- - control: tlv: Check dB range only within the control's volume range
- The DB_RANGE need to be used on some HW, since the gain on
- volume control is not continuous, and has to be divided into
- several sub DB_SCALE ranges.
- ASoC has a feature to override the HW default volume range,
- and in this case when the volume range is less than the
- HW maximum we do not need to go through the whole DB_RANGE,
- but we need to stop where the kcontrol's maximum tell us.
[edit] PCM API
- - pcm: fix typo in snd_pcm_recover() error message
- - pcm_plugin: fix delay
- PulseAudio ALSA modules report errors after calling
- snd_pcm_avail_delay(), with a delay lower than the number of samples
- available.
- Correct delay using Jaroslav's recommendation:
- "the result should be 'delay(slave) + mmap_capture_avail(pcm)"
- - pcm: add MMAP_EMUL to type names
- If we try to print this then it causes a read past the end of the array
- in snd_pcm_type_name().
- - pcm_plugin: remove unused client_frames and slave_frames routines
- plug->client_frames and plug->slave_frames are not used by
- any plugin, remove dead code.
- - pcm: fix snd_pcm_avail_delay() function
- For capture stream, the delay must be obtained as last, but we need to
- update the ring buffer pointers for the avail_update call. So, rearrange
- the code a bit and add hwsync call as first.
- - support for period wakeup disabling
- Add API to disable period wakeups.
- - pcm: pass hw_params flags to slave
- Fix required before interrupt disabling routines patch can be applied.
- Without this fix, the interrupts are only disabled when directly
- accessing hw devices.
- - pcm direct plugins: change timestamping in dsnoop
- Do not use own timestamps, try to sync hw.ptr with real timestamp.
- - general: recoded snd_dlobj_ functions
- - changed logic to get/put blocks
- - added mutex locking of the symbol list
- - added reference counting (do not free used dl handles)
- - Add missing support for 3-byte formats for 16bit put conversion
- In the put conversion, the support for 3-byte formats was missing.
- This resulted in inaudible volume with rate plugin & co.
- Typos fixed by Mark Hills <mark@pogo.org.uk>
- - pcm: Fixed typo (wrong deleted line) instroduced in the minperiodsize patch
- - pcm: introduce defaults.pcm.compat to change the params choose behaviour
- Having getenv directly in the function is not a good idea. Allow
- configuration of the behaviour change in snd_pcm_param_choose() function
- using alsa.conf. Use the environment variable LIBASOUND_COMPAT only
- as fallback.
- - pcm: add defaults.pcm.minperiodtime parsing
- Some broken applications like Audacious don't set any timing parameters.
- While the alsa-lib behaviour is to select the smallest period size and
- biggest buffer size, the result is the generation of thousands
- interrupts per second.
- The default value in alsa.conf is 5000usec.
- - pcm_plug: fix comparison always true
- - pcm - ladspa: fix small memory leak in snd_pcm_ladspa_free_instances()
[edit] Sequencer API
- - seq: Fix for snd_seq_parse_address()
- snd_seq_parse_address() uses strncmp() to compare the client name
- in the string argument with the existing clients, until it finds one
- name matching the same leading characters. This may produce wrong
- results when there are two sequencer clients with similar names.
- Example: "KMidimon" : "Kmid"
[edit] Use Case Manager API
- - ucm: fix switch device & modifier when no transition is found
- Fix some logic bugs in switch device and switch modifier when
- transition sequences are not found. Also fix check for new device.
- Reported-by: w0806.kim@samsung.com
- - ucm: add snd_use_case_verb_list() inline function
- - ucm: fix handling of cset with spaces in the control name
- Always terminate the cset command based on the last space found within the
- cset command since the control name may contain spaces.
- - ucm: only select modifier when supported device is enabled
- Make sure the supported device of a modifier is enabled before
- we enable the modifier.
- - ucm: implement basic script exec functionality
- - ucm: check the correct return value for modifier
- - ucm: check for valid value list before dereference.
- - ucm: remove unused code.
- - ucm: make sure active modifier and device lists are initialised
- - ucm: remove parse_device() and call parse_compound() directly
- - ucm: modifiers names must be compound parse
- Modifier names must end in a .index to ensure we can support
- same named modifiers. However the modifier index will be for internal
- use only and the client will not use the index when setting modifier.
- The modifier selection for same name modifiers will be based upon supported
- device.
- - ucm: removed unused 'active' member in struct use_case_device
- - ucm: initial implementation for cdev/cset
- - ucm: CTL devices are only one per card (remove DEV from comments)
- - ucm: add ValueDefaults section to the master file
- - the get_value() function is recoded (tries to find the value in
- parent's list)
- - ucm: add cdev
- - ucm: fix parser for sequences and fix wrong strcmp
- The sequences are not parsed correctly. First cfg value is the command
- and second value is the command argument.
- Also, fix strcmp calls in ucm/main.c (reported by
- abraham duenas <aduejazz@gmail.com>).
- - ucm: debug parser
- - ucm: implemented card list feature
- - also added some test files to test/ucm tree
- - ucm: unify snd_use_case_geti(), add snd_use_case_card_list() template
- - ucm: cosmetic fix
- - ucm: added implementation for other ucm parts, only card name list is missing
- - ucm: Introduce "Value {}" section, more implementation work
- - new "Value {}" section is introduced for read-only values
- describing the PCM and control/mixer IDs (or any other
- things)
- - more complete implementation for API functions
- - ucm: Moved ucm to src/ucm subdirectory
- - separate code to more files
- - use standard lists to represent structures
- - use alsa-lib configuration parser
- - ucm: Recode header to be more universal
- - merge all similar functions to one - make everything
- string based
- - add possibility to create virtual cards
- - add comment pairs for the end user interface
- - ucm: core - Add initial Use Case Manager support.
- This patch adds audio Use Case management support to alsa-lib.
- UCM is designed to abstract the audio device hardware mixer controls into
- high level abstract use cases.
- The use case manager works by configuring the sound card ALSA kcontrols to
- change the hardware digital and analog audio routing to match the requested
- device use case. The use case manager kcontrol configurations are stored in
- easy to modify text files.
- UCM development has been kindly sponsored by Texas Instruments Inc,
- Wolfson Microelectronics PLC and Slimlogic Ltd.
- - ucm: header - ALSA Use Case Manager
- This patch adds the API header for alsa-lib Use Case Management support.
- This file defines the public interface exported by UCM to client
- applications.
- UCM development has been kindly sponsored by Texas Instruments Inc,
- Wolfson Microelectronics PLC and Slimlogic Ltd.
[edit] /include/Makefile.am
- - ucm: build - add build support for Use Case Manager
- Add doxygen and make support for UCM.
[edit] /src/Makefile.am
- - ucm: Moved ucm to src/ucm subdirectory
- - separate code to more files
- - use standard lists to represent structures
- - use alsa-lib configuration parser
- - ucm: build - add build support for Use Case Manager
- Add doxygen and make support for UCM.
[edit] ALSA Lisp
- - alisp - Fix a string format ambiguity
[edit] Configuration
- - aliases.conf: add aliases for CMI8788-based cards
- Add entries for all the aliases of the CMI8788 chip.
- (Not all of them are currently used by the driver.)
- - USB-Audio.conf: fix Audiophile USB card name
- The device name of the M-Audio AudioPhile USB is actually "Audiophile USB (tm)".
- Also keep the old string, just to be sure.
- - config file processing: rewrite the locking - use one recursive mutex
- Avoid configuration file processing races when multiple threads call
- the *open() functions together (for example using alsaloop with
- multiple -T jobs can reproduce this issue).
- - Fix typo for surround PCMs in src/conf/cards/Loopback.conf
- - Add Loopback.conf to define standard PCM devices for snd-aloop driver
- - HDA-Intel: do not lock IEC958 Playback switch
- As discussed with Takashi, removing the lock allows apps to mute
- the output using the mixer interface.
- Other AES controls remain locked.
- - pcm: introduce defaults.pcm.compat to change the params choose behaviour
- Having getenv directly in the function is not a good idea. Allow
- configuration of the behaviour change in snd_pcm_param_choose() function
- using alsa.conf. Use the environment variable LIBASOUND_COMPAT only
- as fallback.
- - pcm: add defaults.pcm.minperiodtime parsing
- Some broken applications like Audacious don't set any timing parameters.
- While the alsa-lib behaviour is to select the smallest period size and
- biggest buffer size, the result is the generation of thousands
- interrupts per second.
- The default value in alsa.conf is 5000usec.
- - HDA-Intel: present all 4 HDMI outputs instead of just the first one
- Commit 92608badc519a8c1f65d93743396517aaa582b53 in linux kernel added
- the possibility of 3 additional HDMI devices on indexes 7-9.
- Present all those additional devices using the "hdmi" alias as well.
- - Use thread-safe locale functions if available
- setlocale() is not thread-safe. It can actually trigger a crash if
- another thread uses locale informations at the same time in the process.
- Library code should use POSIX newlocale/duplocale/uselocale/freelocale
- instead. Those functions only change the locale data for the calling
- thread.
[edit] Documentation
- - ucm: Moved ucm to src/ucm subdirectory
- - separate code to more files
- - use standard lists to represent structures
- - use alsa-lib configuration parser
- - ucm: build - add build support for Use Case Manager
- Add doxygen and make support for UCM.
[edit] Dynamic Loader helpers
- - general: recoded snd_dlobj_ functions
- - changed logic to get/put blocks
- - added mutex locking of the symbol list
- - added reference counting (do not free used dl handles)
[edit] Kernel Headers
- - Update hdspm.h file from Adrian Knoth - final version
- This one matches the settled driver version.
- - Update hdspm.h file from Adrian Knoth
- To satisfy new hdspmixer requirements, update hdspm.h file.
- - Add hdspm.h kernel header to include/alsa/sound tree for the hdspmixer app
- - support for period wakeup disabling
- Add API to disable period wakeups.
[edit] Test/Example code
- - ucm: fix parser for sequences and fix wrong strcmp
- The sequences are not parsed correctly. First cfg value is the command
- and second value is the command argument.
- Also, fix strcmp calls in ucm/main.c (reported by
- abraham duenas <aduejazz@gmail.com>).
- - ucm: debug parser
- - ucm: implemented card list feature
- - also added some test files to test/ucm tree
- - test/latency: fix timediff calculation
[edit] alsa-utils
[edit] Core
- - Release v1.0.24
- - configure.in: Fix xmlto detection
- xmlto was never detected when alsaconf is disabled leading to a missing
- alsactl_init man page.
- - alsactl: Add a --with-udev-rules-dir configure option.
- After the previous patch to install udev rules it is impossible to do a
- non-root, custom-prefix make install. This is generally not a problem
- when building official packages but it can be a pain for developers
- and debuggers etc.
- This is essentially the same patch as was already made in PulseAudio
- in commit e8a5746f2fcae59bfd18d39b621509b3ef130453.
- - configure.in: Fix variable name
- Fix variable name for --with-asound-state-dir as currently we have
- to pass --with-ASOUND_STATE_DIR= which is wrong and inconsistent with
- the other switches.
- - alsactl: Move asound.state location to /var/lib/alsa
- .... and add configure switch for it.
- /etc might be on a read-only partition which is not suitable for dynamic
- data such as the mixer settings. Hence move the location of asound.state
- to /var/lib.
- This is based on a patch from Ubuntu/Debian which hardcoded the pah in
- /var/lib.
- - alsactl: systemd and udev hookup
- Add minimal systemd and udev support to alsactl so that mixer settings
- are restored at boot, when sound cards are plugged in and saved on
- shutdown.
- This is similar to existing udev/init script solutions in various
- distributions.
- Note that alsactl is called both synchronously from the udev rules as
- well as asynchronously at boot. This is intended, and to ensure two
- things:
- - At boot the asound.state file might not be readable, since it resides
- on a different file system. That means exclusively restoring sound card
- settings from udev rules will no suffice, since if the rule is
- executed at early boot (for example within udev settle) then the file
- will no be readable and cannot be restored.
- - We need to ensure that applications monitoring sound cards coming and
- going (such as PA) must not get these events before the mixer settings
- have been restored. That means the mixer settings must be restored
- synchronously withing the udev rules, before the events are passed on
- to the apps.
- That basically means we need to restore the settings once in udev, to
- deal with sound cards becoming available during runtime. And once in
- early boot to deal with coldplugged soundcards whose data files might
- not have been available at time of plugging. Hence we call alsactl
- twice: one from the udev rule, and once from he systemd unit file.
- - Introduce alsaloop utility
- alsaloop allows create a PCM loopback between a PCM capture device
- and a PCM playback device.
- alsaloop supports multiple soundcards, adaptive clock synchronization,
- adaptive rate resampling using the samplerate library (if available in
- the system). Also, mixer controls can be redirected from one card to
- another (for example Master and PCM).
- - alsaucm: Add Use Case Manager utility
- alsaucm is a command line tool that can be used to generate and debug UCM
- configuration files. The alsaucm utility can fully use the UCM functionality
- to query and configure all the UCM functionality in alsa-lib.
- This work was sponsored by Slimlogic Ltd, Texas Instruments Inc and Wolfson
- Microelectronics PLC.
- - Revert wrong parts of "alsactl: use snd_config_imake* functions"
- This reverts the parts of commit e509df69a5100df28921980362488f6947df0aae
- that accidentally reverted a bunch of earlier commits.
- - alsactl: use snd_config_imake* functions
- To save a call to snd_config_set_xxx, replace the calls to
- snd_config_make_xxx with snd_config_imake_xxx.
[edit] ALSA Control (alsactl)
- - alsactl: Add a --with-udev-rules-dir configure option.
- After the previous patch to install udev rules it is impossible to do a
- non-root, custom-prefix make install. This is generally not a problem
- when building official packages but it can be a pain for developers
- and debuggers etc.
- This is essentially the same patch as was already made in PulseAudio
- in commit e8a5746f2fcae59bfd18d39b621509b3ef130453.
- - alsactl: Move asound.state location to /var/lib/alsa
- .... and add configure switch for it.
- /etc might be on a read-only partition which is not suitable for dynamic
- data such as the mixer settings. Hence move the location of asound.state
- to /var/lib.
- This is based on a patch from Ubuntu/Debian which hardcoded the pah in
- /var/lib.
- - alsactl: systemd and udev hookup
- Add minimal systemd and udev support to alsactl so that mixer settings
- are restored at boot, when sound cards are plugged in and saved on
- shutdown.
- This is similar to existing udev/init script solutions in various
- distributions.
- Note that alsactl is called both synchronously from the udev rules as
- well as asynchronously at boot. This is intended, and to ensure two
- things:
- - At boot the asound.state file might not be readable, since it resides
- on a different file system. That means exclusively restoring sound card
- settings from udev rules will no suffice, since if the rule is
- executed at early boot (for example within udev settle) then the file
- will no be readable and cannot be restored.
- - We need to ensure that applications monitoring sound cards coming and
- going (such as PA) must not get these events before the mixer settings
- have been restored. That means the mixer settings must be restored
- synchronously withing the udev rules, before the events are passed on
- to the apps.
- That basically means we need to restore the settings once in udev, to
- deal with sound cards becoming available during runtime. And once in
- early boot to deal with coldplugged soundcards whose data files might
- not have been available at time of plugging. Hence we call alsactl
- twice: one from the udev rule, and once from he systemd unit file.
- - alsactl init: Initialize also "Master Front Playback Volume" & "Switch"
- - alsactl init: Handle "Capture Source" and "Mic Boost" in the default script
- - alsactl: Change handling of inactive controls
- The inactive controls are stored, but they are not restored
- when they are marked inactive in the state file or in the
- driver.
- - alsactl init: use "generic method" instead "guess method"
- - alsactl init: Use "Found hardware:" instead "Unknown hardware:"
- It seems that "Unknown hardware:" confuses users. Use "Found hardware:"
- instead.
- - Revert wrong parts of "alsactl: use snd_config_imake* functions"
- This reverts the parts of commit e509df69a5100df28921980362488f6947df0aae
- that accidentally reverted a bunch of earlier commits.
- - alsactl: change format of comment node in state file
- Make the comment node a separate node in the state file (join=0), and
- move it after the other fields of the respective control.
- - alsactl: correctly restore dB values of controls with changed range
- When the range of a control has changed between driver versions, it is a
- good idea to restore the same dB value of the control. However,
- computing the dB value by interpolating betweem the min/max dB values
- duplicates alsa-lib's TLV functions and does not even work for controls
- with a linear dB range.
- A simple conversion to dB and back can be done if we add the dB value(s)
- to the saved state.
- - alsactl: remove open-coded search
- Remove search_comment_item since it does the same as snd_config_search.
- - alsactl: move alloca out of loop
- Reserving new space from the stack in every loop iteration is not
- necessary, so move the call to snd_ctl_elem_id_alloca outside where it
- is executed only once.
- - alsactl: use snd_config_imake* functions
- To save a call to snd_config_set_xxx, replace the calls to
- snd_config_make_xxx with snd_config_imake_xxx.
[edit] Speaker Test
- - speaker-test: Don't retry after fatal errors
- Fixup commit 9b1a2566: Remove error loop
- - speaker-test: add test pattern for PCM layer debugging purposes
[edit] aconnect
- - Revert wrong parts of "alsactl: use snd_config_imake* functions"
- This reverts the parts of commit e509df69a5100df28921980362488f6947df0aae
- that accidentally reverted a bunch of earlier commits.
- - alsactl: use snd_config_imake* functions
- To save a call to snd_config_set_xxx, replace the calls to
- snd_config_make_xxx with snd_config_imake_xxx.
[edit] alsaconf
- - alsactl: Move asound.state location to /var/lib/alsa
- .... and add configure switch for it.
- /etc might be on a read-only partition which is not suitable for dynamic
- data such as the mixer settings. Hence move the location of asound.state
- to /var/lib.
- This is based on a patch from Ubuntu/Debian which hardcoded the pah in
- /var/lib.
[edit] alsaloop
- - alsaloop: rework the ctl event handling routine
- - alsaloop: Delay the restart a bit (to handle snd-aloop playback xruns better)
- - alsaloop: Fix latency print
- - alsaloop: fixes, added -W/--wake option
- - added -W/--wake option to reduce poll time
- - another try to fix the avail_min parameter for playback
- - fixed initial silence fill
- - alsaloop: add -U/--xrun to alsaloop.1 man page
- - alsaloop: added xrun profiling support (-U,--xrun), added SIGUSR1 state dump
- - alsaloop: add --pctl and --cctl options to man page
- - alsaloop: add --pctl and --cctl options
- In some cases it might be usefull to specify another CTL device names.
- Add -X/--pctl and -Y/--cctl options.
- - alsaloop: Fixes and added --workaround option
- - added workaround for alsa-lib (pthread configuration parsing issue) -
- the workaround must be activated manually using ('--workaround serialopen')
- - fixed avail_min initialization (caused high CPU usage or xruns)
- - fixed shared buffer initialization (both capture and playback buffers
- must have equal number of samples in this config)
- - alsaloop: Fix command-line parsing and pollfd initialization
- - alsaloop: Add OSS mixer redirection support
- - alsaloop: added resampling for unsupported soundcard rates
- - improve also xrun synchronization
- - alsaloop: fix resample argument parsing
- - alsaloop: fix -a option and slave mode processing
- - alsaloop: Fix thread handling
- - alsaloop: Fix loopbacks pointer initialization and allocation, fix -T option
- - Introduce alsaloop utility
- alsaloop allows create a PCM loopback between a PCM capture device
- and a PCM playback device.
- alsaloop supports multiple soundcards, adaptive clock synchronization,
- adaptive rate resampling using the samplerate library (if available in
- the system). Also, mixer controls can be redirected from one card to
- another (for example Master and PCM).
[edit] alsamixer
- - alsamixer: use cubic scale for volume bars
- Instead of mapping the raw volume values linearly to the screen, use
- a mapping where the bar height is proportional to the audible volume,
- i.e., where the amplitude is the cube of the bar height.
- - alsamixer: increase step size for big control value ranges
- For controls with a big range, stepping through all values can become
- tedious and make it impossible to adjust the volume easily. Therefore,
- ensure that all steps are big enough so that the full range has at most
- one hundred steps.
- - alsamixer: remove obsolete e-mail
- Remove the no-longer-valid e-mail address also from the man page.
- - alsamixer: remove obsolete e-mail
- Tim Janik's e-mail address is no longer valid.
[edit] alsaucm
- - alsaucm: fix command line arguments parsing
- - ucm: added listcards command
- - alsaucm: initial rewrite to use update API
- - alsaucm: Report failure to set a device due to missing verb setup
- - alsaucm: Add Use Case Manager utility
- alsaucm is a command line tool that can be used to generate and debug UCM
- configuration files. The alsaucm utility can fully use the UCM functionality
- to query and configure all the UCM functionality in alsa-lib.
- This work was sponsored by Slimlogic Ltd, Texas Instruments Inc and Wolfson
- Microelectronics PLC.
[edit] amixer
- - amixer: fix parsing of control ID name
[edit] aplay/arecord
- - aplay/arecord: term_c_lflag variable might be unitialized in some cases
- The term_c_lflag variable might be unitialized in some cases. Add extra
- check to avoid setting of wrong value.
- - aplay: fix termio settings - return back old c_flag value on exit
- - symptom - ssh client password authentication does not work with
- the modified terminal settings
- - aplay/arecord: Added hardware pause support (press SPACE or Enter)
[edit] alsa-tools
[edit] Core
- - Release v1.0.24
[edit] hdspmixer
- - hdspmixer: Don't use channelmap from hdspm.h
- The channel mapping has been moved to hdspm.c, so it's no longer
- available to userspace tools. For now, let's simply copy (duplicate) the
- data and wait for a way to query this information from the driver.
- - Add support for RME MADI, RayDAT and AIO
- Merged the work by Florian Faber that's distributed separately as
- hdspmixer64.
- Code taken from http://wiki.linuxproaudio.org/index.php/App:hdspmixer_64
- - hdspmixer: Fix buffer overflow
- A one off string buffer overflow fixed by handling it properly with
- string stream.
[edit] alsa-firmware
[edit] Core
- - Release v1.0.24
[edit] AudioScience ASIHPI Firmware
- - Updated asihpi firmware to version 4.04.01
[edit] RME HDSP Firmware
- - hdsp - Add firmware for HDSP RPM
[edit] alsa-plugins
[edit] Core
- - Release v1.0.24
[edit] Documentation
- - Fix README-jack (second channel)
- Reported-by: Raymond Yau <superquad.vortex2@gmail.com>
[edit] PulseAudio -> ALSA plugin
- - pulse: Add handle_underrun option
- Added a config option "handle_underrun" to specify whether pulse plugin
- handles the underrun reported from PA. The default value is now set to
- false, i.e. it will ignore underruns in PA (for good reasons below).
- You can take back to the old behavior by setting handle_underrun true.
- The original idea was brought by David Henningsson <diwic@ubuntu.com>,
- while this patch is simplified and makes the behavior configurable.
- The reasons for avoiding underruns (cited from David's original patch):
- Reporting underruns to ALSA seems to do more bad than good, for these reasons:
- * If pulseaudio gets an underrun, the normal way to end that underrun is to
- feed it with more buffers. This is different from the ALSA way of dealing
- with underruns, which requires hardware buffer pointers to be reset.
- * In addition, underrun signals are delivered asynchronously from pulseaudio.
- This means that there might be more buffers on the way to pulseaudio when
- the underrun is reported, making the underrun obsolete. Unfortunately,
- there is currently no known way to determine whether this is the case or
- not.
- - pulse: Fix invalid buffer pointer return value
- This patch improves recovering from underruns, and prevents hangs inside
- snd_pcm_write* and snd_pcm_read* due to snd_pcm_avail* returning too
- low values. It especially helps low latency situations.
Custom Search