Changes v1.0.21 v1.0.22

From AlsaProject
Jump to: navigation, search

Contents

Changelog between 1.0.21 and 1.0.22 releases

alsa-driver

Sound Core

Release v1.0.22
Set build restrict for ua101
add compilation stub for ua101.c
Add a workaround for bitrev8() in i2c/cs8427.c
Add workaround for dmi functions
Grammatical corrections in INSTALL and utils/setup-alsa-kernel script
Allow patching include/sound header files
Kconfig: Remove useless and sometimes wrong comments
sound: Kconfig typo fix

ALSA Core

Add wrappers for some new macros in linux/kernel.h
Add a dummy wrapper for pci_clear_master()
Add workaround for dmi functions
add struct pid wrappers
Add true and false definitions for older kernels
Add wrappers for work_pending() and delayed_work_pending()
Fix 64bit issue in snd_compat_print_hex_dump_bytes()
Add strict_strtoull() wrapper
Add snd_card_new() for ABI compatibility
Add sound/core patch for ABI compatibility
Add snd_verbose_printk and snd_verbose_printd
ALSA: sscape - Remove sscap_ioctl.h from include/sound/Kbuild
ALSA: Add const prefix to proc helper functions
ALSA: Remove unneeded ifdef from sound/core.h
ALSA: Remove struct snd_monitor_file from public sound/core.h

SoC PXA2xx Core

ALSA: ARM: add Raumfeld audio support
ASoC: finally enable support for eXeda and CM-X300
ASoC: pxa-ssp increase max_channels to 8
ASoC: Fix dependency of CONFIG_SND_PXA2XX_SOC_IMOTE2
trivial: remove unnecessary semicolons

Control Midlevel

Refresh patches to remove fuzz
ALSA: remove unnecessary null check
control: use reference-counted pid
control: remove snd_konctrol_volatile::owner_pid field

PCM Midlevel

Refresh patches to remove fuzz
Refresh pcm_native.patch for changes of DMA handling
Refresh vm_ops related patches
Refresh pcm_natvie.patch
ALSA: pcm - fix page conversion on non-coherent PPC arch
ALSA: pcm - fix page conversion on non-coherent MIPS arch
ALSA: pcm - define snd_pcm_default_page_ops()
ALSA: pcm - Use dma_mmap_coherent() if available
sound: pcm: record a substream's owner process
control: use reference-counted pid
ALSA: sound: Move dereference after NULL test and drop unnecessary NULL tests
const: mark struct vm_struct_operations
ALSA: pcm - Simplify snd_pcm_drain() implementation
ALSA: Re-export snd_pcm_format_name() function

RawMidi Midlevel

Add O_DSYNC definition in rawmidi.c
vfs: Implement proper O_SYNC semantics
sound: rawmidi: record a substream's owner process
control: use reference-counted pid
sound: rawmidi: fix opened substreams count
sound: rawmidi: fix MIDI device O_APPEND error handling
sound: rawmidi: fix checking of O_APPEND when opening MIDI device
sound: rawmidi: fix double init when opening MIDI device with O_APPEND

/arm/Makefile

ALSA: Remove old DMA-mmap code from arm/devdma.c

/include/Makefile

Add a dummy modules_install target to include/Makefile
Allow patching include/sound header files

/isa/Makefile

Remove obsoleted dt019x build stub
ALSA: dt019x: merge into the als100 driver

/soc/Makefile

ASoC: Add bit clock rate calculator utility functions

/soc/codecs/Makefile

ASoC: ADS117x ADC driver
ASoC: Add support for the WM8727 DAC.
ASoC: Codec driver for Texas Instruments tlv320dac33 codec
ASoC: TPA6130A2 amplifier driver
ASoC: AK4671: add ak4671 codec driver
ASoC: Add WM8711 CODEC driver

/soc/pxa/Makefile

ALSA: ARM: add Raumfeld audio support

AC97 Codec

ALSA: ac97_codec - increase timeout for analog sections to 5 second
comment typo fix: sybsystem -> subsystem

AK4113 receiver

Add a build-stub for i2c/other/ak4113.c
ALSA: ak4113 support

AK4114 receiver

ALSA: ak4114 - fix errors in output selector bits

AK4XXX AD/DA converters

ALSA: ak4620 support, codec regs listed in proc

ALI5451 driver

ALSA: sound: Move dereference after NULL test and drop unnecessary NULL tests

ALS100 driver

ALSA: dt019x: merge into the als100 driver

ALSA Version

ALSA: Release v1.0.21

ALSA<-OSS emulation

[ALSA] rename "PC Speaker" controls to "Speaker"
ALSA: rename "PC Speaker" and "PC Beep" controls to "Beep"
ALSA: Add const prefix to proc helper functions
ALSA: allocation may fail in snd_pcm_oss_change_params()

ARM AACI PL041 driver

ALSA: aaci - Clean up duplicate code
ALSA: Remove old DMA-mmap code from arm/devdma.c
ALSA: AACI: fix recording bug
ALSA: AACI: fix AC97 multiple-open bug
ALSA: AACI cleanup
ALSA: aaci: ARM1176 aaci-pl041 AC97 register read timeout

ARM DMA routines

ALSA: Remove old DMA-mmap code from arm/devdma.c

ARM PXA2XX driver

[ARM] pxa: update pxa2xx-ac97.c to use 'struct dev_pm_ops'
ASoC: fix pxa2xx-ac97.c breakage

Apple Onboard Audio driver

ALSA: Don't assume i2c device probing always succeeds

Asihpi driver

asihpi: fix compilation of hpios_linux_kernel.c

Au12x0/Au1550 PSC ASoC

ASoC: au1x: dbdma2: plug memleak in pcm device creation error path
ASoC: au1x: dbdma2: fix oops on soc device removal.
ASoC: au1x: convert to platform drivers.
ASoC: au1x: psc-ac97: reorganize timeouts
ASoC: au1x: psc-ac97: verify correct codec register was read
ASoC: au1x: PSC-AC97 bugfixes

BT87x driver

ALSA: bt87x - Add a whitelist for Pinnacle PCTV (11bd:0012)

CA0106 driver

tree-wide: fix assorted typos all over the place
ALSA: Cleanup redundant tests on unsigned

CMI8330 driver

ALSA: rename "PC Speaker" and "PC Beep" controls to "Beep"

CMI8788 (Oxygen) driver

oxygen: add more build stubs
sound: oxygen: add high-pass filter control
sound: oxygen: add digital filter control
sound: virtuoso: add PCM1796 oversampling control
sound: oxygen: allow custom MCLK rates
sound: virtuoso: add headphone impedance control
sound: oxygen: cache codec registers
sound: virtuoso: fix Xonar Essence ST support
sound: oxygen: fix input monitor control names
sound: oxygen: more hardware documentation
sound: oxygen: add stereo upmixing to center/LFE channels
sound: oxygen: better defaults for upmixing control
sound: virtuoso: split virtuoso.c
sound: oxygen: fix for PI7C9X110 compatibility
sound: oxygen: do not try to restore nonexistent EEPROM
sound: oxygen: work around MCE when changing volume
sound: oxygen: handle cards with missing EEPROM
sound: oxygen: fix MCLK rate for 192 kHz playback

CS4231 driver

ALSA: cs4236: update control names

CS4236+ driver

tree-wide: fix assorted typos all over the place
ALSA: cs4236: add dB scale for all volume controls
ALSA: cs4236: update control names
ALSA: cs4236: detect chip in one pass

CS46xx driver

ALSA: cs46xx - Fix minimum period size

Common EMU synth

tree-wide: fix typos "couter" -> "counter"

Compatibility header files

Fix mkae rules to creating include/sound header files
Add include/sound/pcm.h patch
Add sound/core patch for ABI compatibility
Allow patching include/sound header files

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

ALSA: Cleanup redundant tests on unsigned
ALSA: ctxfi: Swapped SURROUND-SIDE mute

DT019x driver

Remove obsoleted dt019x build stub
ALSA: dt019x: merge into the als100 driver

Digigram VX Pocket driver

pcmcia: rework the irq_req_t typedef
pcmcia: remove deprecated handle_to_dev() macro
ALSA: pcmcia: use dynamic debug infrastructure, deprecate CS_CHECK (sound)

Documentation

sound: add Edirol UA-101 support
ALSA: document: Add direct git link to grub hda-analyzer
ALSA: hda - iMac 9,1 sound patch.
ALSA: hda - Fix mute-LED sync on HP laptops with IDT92HD83xxx codecs
ALSA: hda - Add description of beep_mode in ALSA-Configuration.txt
[ALSA] rename "PC Speaker" controls to "Speaker"
ALSA: rename "PC Speaker" and "PC Beep" controls to "Beep"
ALSA: snd-pcsp: add nopcm mode
ALSA: dummy - Fix descriptions of pcm_substreams parameter
ALSA: sscape: force AD1848 codec mode on old Soundscape
ALSA: sscape: convert to firmware loader framework
ALSA: hda - Fix mute sound with STAC9227/9228 codecs
ALSA: hda - Analog Devices AD1984A add HP Touchsmart model
trivial: fix typos "man[ae]g?ment" -> "management"
ALSA: dummy - Fake buffer allocations
ALSA: hda/realtek: Added support for CLEVO M540R subsystem, 6 channel + digital
ALSA: dummy - Add more description
ALSA: hda - Add support of Alienware M17x laptop

Dreamcast AICA sound (pcm) driver

ALSA: snd-aica: declare MODULE_FIRMWARE

ES18xx driver

ALSA: es18xx: code improvements
ALSA: es18xx: remove snd_audiodrive structure
ALSA: es18xx: remove snd_card pointer from snd_es18xx structure

Echoaudio driver

ALSA: echoaudio - Re-enable the line-out control for the Mia card

Edirol UA-101 driver

add compilation stub for ua101.c
sound: add Edirol UA-101 support

FM801 driver

sound: snd-fm801: autodetect SF64-PCR (tuner-only) card

GUS Library

ALSA: sound/isa/gus: Correct code taking the size of a pointer

Generic drivers

ALSA: rename "PC Speaker" and "PC Beep" controls to "Beep"
ALSA: snd-pcsp: add nopcm mode
ALSA: dummy - Fix descriptions of pcm_substreams parameter
ALSA: sound: Move dereference after NULL test and drop unnecessary NULL tests
ALSA: pcsp - Fix nforce workaround
ALSA: dummy - Increase MAX_PCM_SUBSTREAMS to 128
ALSA: dummy - Add debug proc file
ALSA: dummy - Fake buffer allocations
ALSA: dummy - Fix the timer calculation in systimer mode
ALSA: dummy - Better jiffies handling
ALSA: dummy - Support high-res timer mode

HDA Codec driver

Add workaround for dmi functions
ALSA: hda - simplify usage of HDA_SUBDEV_AMP_FLAG
ALSA: hda - introduce HDA_SUBDEV_AMP_FLAG (ControlAmp in proc)
ALSA: hda - add more NID->Control mapping
ALSA: hda: Fix max PCM level to 0 dB for AD1981_HP
ALSA: hda: Use ALC260_WILL quirk for another Acer model (0x1025007f)
ALSA: hda - Overwrite pin config on intel DG45ID board.
intelhdmi - dont power off HDA link
ALSA: intelhdmi - add channel mapping for typical configurations
ALSA: intelhdmi - channel mapping applies to Pin
ALSA: intelhdmi - accept DisplayPort pin
ALSA: hda - show HBR(High Bit Rate) pin cap in procfs
ALSA: hda - Fix LED GPIO setup for HP laptops with IDT codecs
ALSA: hda/realtek: quirk for D945GCLF2 mainboard
ALSA: hda - Generalize EAPD inversion check in patch_analog.c
tree-wide: fix typos "selct" + "slect" -> "select"
ALSA: hda - Exclude unusable ADCs for ALC88x
ALSA: hda - Add missing Line-Out and PCM switches as slave
ALSA: hda - iMac 9,1 sound patch.
ALSA: hda - Fix memory leaks in the previous patch
ALSA: hda - Add ALC661/259, ALC892/888VD support
ALSA: hda - Add a pin-fix for FSC Amilo Pi1505
ALSA: hda - Fix Cxt5047 test mode
ALSA: hda - Don't trigger pin-sense for STAC/IDT codecs
ALSA: hda: Fix max PCM level to 0 dB for Fujitsu-Siemens laptops using CX20549 (Venice)
ALSA: hda - Make Dell Vostro 1015n mic and speaker switching work
sound: Revert "ALSA: hda - Change quirk for Acer Aspire 5930G"
ALSA: hda - 4930g mute lfe and side when pluging in headphones
ALSA: hda - Change quirk for Acer Aspire 5930G
ALSA: hda - Fix mute-LED sync on HP laptops with IDT92HD83xxx codecs
ALSA: hda - Fix detection of dual headphones
ALSA: hda - Replace the rest of jack-detections with snd_hda_jack_detect()
ALSA: hda - show EPSS capability in proc
ALSA: intelhdmi - sticky channel count
ALSA: intelhdmi - sticky stream id and format
ALSA: intelhdmi - sticky infoframe
ALSA: intelhdmi - separate out infoframe checksum routine
ALSA: intelhdmi - probe for monitor/eld presence at module init time
ALSA: hda - introduce snd_hda_jack_detect() and snd_hda_pin_sense()
ALSA: intelhdmi - export monitor-presence and ELD-valid status
ALSA: intelhdmi - fix channel mapping slot mask
ALSA: intelhdmi - fix audio infoframe fill size
ALSA: hda - Disable default quirk for Sony VAIO with ALC262 codec
ALSA: hda - Fix build errors with CONFIG_SND_HDA_INPUT_BEEP=n
ALSA: hda - Update / add kerneldoc comments to exported functions
ALSA: hda - Fix quirk for VAIO type G
ALSA: hda - Get rid of magic digits for subdev hack
ALSA: hda - Dell Studio 1557 hd-audio quirk
sound: sound/pci/hda/patch_via.c: work around gcc-4.0.2 ICE
ALSA: hda - Add another Nvidia HDMI codec id (10de:0005)
ALSA: hda - add beep_mode module parameter
ALSA: hda - proc - add support for dynamic controls to mixer<->NID mapping
ALSA: hda - proc - introduce Control: lines to show mixer<->NID assignment
ALSA: hda - move snd_hda_pcm_type_name from hda_codec.h to hda_local.h
ALSA: hda: Use model=mb5 for MacBookPro 5,2
ALSA: hda - Add power on/off counter
ALSA: hda - Add missing export for snd_hda_bus_reboot_notify
ALSA: hda - Add reboot notifier to each codec
ALSA: hda - possible read past array alc88[02]_parse_auto_config()
ALSA: hda - Avoid quirk for HP dc5750
ALSA: hda - proc - show which I/O NID is associated to PCM device
ALSA: hda - Tweak OLPC XO-1.5 microphone bias
ALSA: hda: Use model=auto quirk for Sony VAIO VGN-FW170J using ALC262
ALSA: hda - Reset pins of IDT/STAC codecs at free
ALSA: hda, move hp_bseries_system
ALSA: hda - Add OLPC XO-1.5 PCI ID
ALSA: hda - Enable GPIO control for mute LED on HP systems
ALSA: hda - Add a proper ifdef to a debug code
ALSA: VIA HDA: Add support for VT1818S.
ALSA: hda - remove static intelhdmi configurations
ALSA: hda - auto parse intelhdmi cvt/pin configurations
ALSA: hda - get intelhdmi max channels from widget caps
ALSA: hda - vectorize intelhdmi
ALSA: hda - reorder intelhdmi prepare/cleanup callbacks
ALSA: hda - use pcm prepare/cleanup callbacks for intelhdmi
ALSA: hda - remove intelhdmi dependency on multiout
ALSA: hda - convert intelhdmi global references to local parameters
ALSA: hda - allow up to 4 HDMI devices
ALSA: hda - vectorize get_empty_pcm_device()
ALSA: hda - select IbexPeak handler for Calpella
ALSA: hda - Don't check invalid HP pin
ALSA: hda: Use quirk mask for Dell Inspiron Mini9/Vostro A90 using ALC268
hda_intel: Digital PC Beep - change behaviour for input layer
ALSA: hda - Fix capture source checks for ALC662/663 codecs
ALSA: HDA VIA: Remove 48k sample rate limit for S/PDIF
sound: use semicolons to end statements
ALSA: HDA VIA: Only cosmetic changes
ALSA: HDA VIA: comments: update copyright, changeset, etc.
ALSA: HDA VIA: Change PW4 connect select default to to MW0.
ALSA: HDA VIA: rename vt1708_control_templates[].
ALSA: HDA VIA: Add VT1812 support.
ALSA: HDA VIA: Add VT2002P support.
ALSA: HDA VIA: Add VT1716S support.
ALSA: HDA VIA: Add VT1828S and VT2020 support.
ALSA: HDA VIA: Add VT1718S support.
ALSA: HDA VIA: Move backdoor verbs to vt17xx_volume_init_verb
ALSA: HDA VIA: Replace MIC_BOOST_VOLUME.
ALSA: HDA VIA: Modify vt1709_auto_create_multi_out_ctls.
ALSA: HDA VIA: Modify vt1708_auto_create_multi_out_ctls.
ALSA: HDA VIA: Replace via_playback_pcm_prepare/cleanup
ALSA: HDA VIA: Modify vt1708_set_pinconfig_connect function.
ALSA: HDA VIA: Add Jack detect feature for VT1708.
ALSA: HDA VIA: Refresh front playback mute in via_hp_automute.
ALSA: HDA VIA: Add VIA_JACK_EVENT process in via_unsol_event.
ALSA: HDA VIA: When changing input source, update power state.
ALSA: HDA VIA: Add smart5.1 function.
ALSA: HDA VIA: Rewrite via_independent_hp_put
ALSA: HDA VIA: Change VT1708S & VT1702 hp mode controls
ALSA: HDA VIA: Remove unused argument of via_new_analog_input
ALSA: HDA VIA: Add low current mode for power saving.
sound: ALSA HDA VIA: Add VIA_CTL_WIDGET_ANALOG_MUTE control type
ALSA: HDA VIA: Limit VT1702 AA-Path max volume
ALSA: HDA VIA: Add VT1708B-CE codec support.
ALSA: HDA VIA: Change get_codec_type argument to hda_codec type
ALSA: HDA VIA: Remove unused IS_VT17xx_VENDORID macro
ALSA: hda - Clean up name string creation in patch_realtek.c
ALSA: hda - Allow all formats as default for Nvidia HDMI
ALSA: hda - Fix volume-knob setup for Dell laptops with STAC9228
ALSA: hda - Fix mute sound with STAC9227/9228 codecs
ALSA: hda - Fix overflow of spec->init_verbs in patch_realtek.c
ALSA: hda - Add full rates/formats support for Nvidia HDMI
ALSA: hda - Fix yet another auto-mic bug in ALC268
ALSA: hda - Don't pick up invalid HP pins in alc_subsystem_id()
ALSA: hda - Add a workaround for ASUS A7K
ALSA: hda - Fix invalid initializations for ALC861 auto mode
ALSA: hda - Fix / improve ALC66x parser
ALSA: hda - Fix digita/analog mic auto-switching with IDT codecs
ALSA: hda - Added quirk to enable sound on Toshiba NB200
ALSA: hda - Resurrect input-source mixer of ALC268 model=acer
ALSA: hda - Analog Devices AD1984A add HP Touchsmart model
ALSA: hda - CD-audio sound for hda-intel conexant benq laptop
ALSA: hda - Fix MSI GX620 mixer
ALSA: hda - Fix Dell S14 pin setup
ALSA: hda - Fix IDT92HD83* codec setup
ALSA: hda - Add support for HP dv6
ALSA: hda - Fix HP/line-out initialization with IDT/STAC codecs
ALSA: hda - Set default GPIO for IDT92HD71bxx
ALSA: hda - Set default GPIO for STAC/IDT codecs
ALSA: hda - Add missing model=auto entry for ALC269
ALSA: hda - Use auto model for HP laptops with ALC268 codec
ALSA: hda/realtek: Added support for CLEVO M540R subsystem, 6 channel + digital
ALSA: hda - Add support of Alienware M17x laptop
ALSA: hda - Remove dead codes from patch_sigmatel.c
ALSA: hda - Fix input source selection of IDT92HD73xx
ALSA: hda - Fix obsolete CONFIG_SND_DEBUG_DETECT
ALSA: hda - Unmute docking line-out as default with AD1984A codec
ALSA: hda - Add another entry for Nvidia HDMI device
ALSA: hda - Add missing GPIO initialization for AD1984A laptop model
ALSA: hda - Add support of docking auto-mute/mic for AD1984A laptop model
ALSA: hda - Fix ALC268/ALC269 headphone pint routing
ALSA: hda - Create "Digital Mic Capture Volume" correctly for IDT codecs
ALSA: hda - Fix MacBookPro 3,1/4,1 quirk with ALC889A
ALSA: hda - Add missing mux check for VT1708

HDA Intel driver

ALSA: hda - Add PCI IDs for Nvidia G2xx-series
intelhdmi - dont power off HDA link
ALSA: hda - Terradici HDA controllers does not support 64-bit mode
ALSA: hda - Add position_fix quirk for HP dv3
ALSA: hda - Add a position_fix quirk for MSI Wind U115
ALSA: hda - add beep_mode module parameter
ALSA: hda - Add reboot notifier to each codec
ALSA: hda - Don't initialize CORB/RIRB for single_cmd mode
ALSA: hda - Switch to polling mode before disabling MSI
ALSA: hda_intel: Add the Linux device ID for NVIDIA HDA controller
ALSA: hda - Enable MSI as default
ALSA: hda - Add HP Pavilion dv4t-1300 to MSI whitelist

HDA generic driver

Fix a typo in ilog2() hack in pci/hda/hda_proc.c
Add ilog2() wrapper to pci/hda/hda_proc.c
hda - fix hda_beep.patch according latest alsa-kernel tree
Revert "Revert "hda_intel: Fix hda_beep.patch according latest alsa-kernel changes""
Revert "hda_intel: Fix hda_beep.patch according latest alsa-kernel changes"
hda_intel: Fix hda_beep.patch according latest alsa-kernel changes
Fix a typo in hda_intel.patch
Make MSI white/black-list for HD-audio
ALSA: hda - simplify usage of HDA_SUBDEV_AMP_FLAG
ALSA: hda - introduce HDA_SUBDEV_AMP_FLAG (ControlAmp in proc)
ALSA: hda - add more NID->Control mapping
ALSA: intelhdmi - accept DisplayPort pin
ALSA: hda - show HBR(High Bit Rate) pin cap in procfs
ALSA: hda - Fix input and jack Kconfig depenencies
ALSA: hda - show EPSS capability in proc
ALSA: hda - introduce snd_hda_jack_detect() and snd_hda_pin_sense()
ALSA: intelhdmi - export monitor-presence and ELD-valid status
ALSA: hda - Fix build errors with CONFIG_SND_HDA_INPUT_BEEP=n
ALSA: hda - Fix beep_mode option value
ALSA: hda - Get rid of magic digits for subdev hack
ALSA: hda - add beep_mode module parameter
ALSA: hda - proc - add support for dynamic controls to mixer<->NID mapping
ALSA: hda - proc - introduce Control: lines to show mixer<->NID assignment
ALSA: hda - move snd_hda_pcm_type_name from hda_codec.h to hda_local.h
ALSA: hda - Don't access invalid substream in proc file
ALSA: hda - Fix build error without CONFIG_SND_HDA_HWDEP=y
ALSA: hda - Add power on/off counter
ALSA: hda - proc - show which I/O NID is associated to PCM device
[ALSA] hda: beep - add missing cancel_delayed_work
ALSA: hda - vectorize intelhdmi
[ALSA] hda_intel: Digital PC Beep - delay input device unregistration
hda_intel: Digital PC Beep - change behaviour for input layer

HR timer driver

Refresh patches to remove fuzz
ALSA: hrtimer - Fix lock-up

I2C cs8427

Add a workaround for bitrev8() in i2c/cs8427.c
ALSA: ice1712: Use bitrev8

ICE1712 driver

Add a build stub for pci/ice1712/quartet.c
ALSA: ice1724 - aureon - modify WM8770 Master & DAC volume
tree-wide: fix a very frequent spelling mistake
ALSA: ice1724 - make some bitfields unsigned
ALSA: ice1724 - Fix section mismatch in prodigy_hd2_resume()
ALSA: ice1724 - Patch for suspend/resume for ESI Juli@
ALSA: ice1724 - Infrasonic Quartet support
ALSA: ice1724 - Support for multiple external clock types
ALSA: ice1724 - adding GPIO routines for mask and direction
ALSA: ak4620 support, codec regs listed in proc
ALSA: ICE1712/24 - Change the Multi Track Peak control (level meters) from MIXER to PCM type

ICE1724 driver

ALSA: ice1724 - Infrasonic Quartet support
ALSA: ice1724 - Support for multiple external clock types
ALSA: ice1724 - pro-rate-locking makes sense only for internal clock mode
ALSA: ice1724 - adding GPIO routines for mask and direction
ALSA: ice1724 - Make call to set hw params succeed on ESI Juli@
ALSA: ice1724: Fix surround on Chaintech AV-710
ALSA: ice1724: increase SPDIF and independent stereo buffer sizes
ALSA: ICE1712/24 - Change the Multi Track Peak control (level meters) from MIXER to PCM type

ISA

ALSA: dt019x: merge into the als100 driver
ALSA: sscape: convert to firmware loader framework
ALSA: sscape: add supoort for SPEA Media FX/Reveal SC-600

ISA DMA

ALSA: snd_dma_pointer workaround for chipsets with buggy DMA

Intel8x0 driver

ALSA: intel8x0: Mute External Amplifier by default for Gateway 4525GZ
ALSA: intel8x0: Mute External Amplifier by default for another Sony model
ALSA: intel8x0 - Mute External Amplifier by default for Sony VAIO VGN-B1VP
ALSA: intel8x0 - Mute External Amplifier by default for Sony VAIO VGN-T350P

LX6464ES

ALSA: lx6464es - remove unused struct member
ALSA: lx6464es - cleanup of rmh message bus function

MIPS SGI A2 Audio System

ALSA: Fix invalid __exit in sound/mips/*.c

Memalloc module

Refresh patches to remove fuzz

OPL3

ALSA: opl3: circular locking in the snd_opl3_note_on() and snd_opl3_note_off()

OSS device core

Driver-Core: extend devnode callbacks to provide permissions

Opti9xx drivers

ALSA: opti93x: use dB scale for mixer controls
ALSA: opti93x: move controls definitions to opti93x driver
tree-wide: fix assorted typos all over the place
ALSA: opti93x: fix irq releasing if the irq cannot be allocated
ALSA: opti93x: set MC indirect registers base from PnP data
ALSA: opti9xx: remove snd_opti9xx fields
ALSA: opti-miro: add PnP detection
ALSA: opti-miro: separate comon probing code
ALSA: opti-miro: fix OOPS if hardware is not detected
ALSA: opti-miro: expose ACI mixer to outside drivers
ALSA: opti-miro: make miro.h header available outside the alsa directory
ALSA: opti-miro: remove snd_card pointer from snd_miro structure
ALSA: opti-miro: Fix missing semicolon
ALSA: opti-miro: use variables directly in the probe function

PARISC Harmony driver

ALSA: sound/parisc: Move dereference after NULL test

PCI drivers

ALSA: ice1712: Use bitrev8
ALSA: SND_CS5535AUDIO: Remove the X86 platform dependency

PDAudioCF driver

pcmcia: rework the irq_req_t typedef
pcmcia: remove deprecated handle_to_dev() macro
ALSA: pcmcia: use dynamic debug infrastructure, deprecate CS_CHECK (sound)

PPC

powerpc: Minor cleanup to sound/ppc/Kconfig

PPC AWACS driver

[ALSA] rename "PC Speaker" controls to "Speaker"

PPC Burgundy driver

[ALSA] rename "PC Speaker" controls to "Speaker"

PPC Keywest driver

sound: Make keywest_driver static
ALSA: Don't assume i2c device probing always succeeds

SB drivers

ALSA: sb_mixer: convert pointer tables to mixer control tables

SGI O2 Audio

ALSA: Fix invalid __exit in sound/mips/*.c

SH platform core

ALSA: sh: add SuperH DAC audio driver for ALSA V4

Serial BUS drivers

ALSA: ak4113 support

SoC Audio for Freecale i.MX1x i.MX2x CPUs

ASoC: Wrong variable returned on error
ASoC: Remove absent SYNC and TDM DAI format options from i.MX SSI

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

ASoC: at91sam9g20ek_2mmc board uses same audio connexion as at91sam9g20ek
ASoC: Add source argument to PLL configuration
[ARM] 5596/1: at91sam9g20-ek: Register WM8731 in board file

SoC Audio for the Samsung S3C24XX chips

ASoC: Added the CPU driver for PCM controllers
ASoC: Rename 's3c24xx-pcm' driver to 's3c-dma'
ASoC: Rename s3c24xx_pcm prefix to s3c_dma
ASoC: Fixed arguments passed to SMDK64xx set_pll
ASoC: S3C64XX I2S: Enable audio-bus clock
ARM: S3C: Add info for supporting circular DMA buffers
ASoC: Minor SMDK64xx WM8580 cleanups
ASoC: S3C: Remove <plat/audio.h>
ASoC: Fix snd_soc_dai_set_pll() calls in neo1973_*.c
ASoC: Support WM8580 based audio subsystem on SMDK64xx machines
ASoC: Return correct codec clock in s3c64xx-i2s
ASoC: Add S3C64xx IIS CDCLK source selection
ASoC: S3C I2S LRCLK polarity option.
ASoC: S3C lrsync function made to work with IRQs disabled.
ARM: S3C24XX: Add platform device for AC97 controller

SoC Blackfin

ASoC: Blackfin I2S: use dai state rather than local counter
ASoC: use set_channel_map api to reorder channels for AD1938 and AD1836
ASoC: fix kconfig order of Blackfin drivers
ASoC: Blackfin: fix inverted handling of SPORT0 on PORT F/G
ASoC: Blackfin I2S: fix resuming when device hasn't been used
ASoC: Blackfin I2S: add lost platform_device parameter to resume function
ASoC: fix typos in Blackfin headers
ASoC: bf5xx-sport: the irq save/restore funcs take an unsigned long
ASoC: Blackfin AC97: add a few missing multichannel define handling
ASoC: new board driver to connect bfin-5xx with ad1836 codec

SoC Codec AC97

ASoC: Factor out snd_soc_init_card()

SoC Codec AD1836

ASoC: Remove redundant snd_soc_dapm_new_widgets() calls
ASoC: Remove dead code and labels
ASoC: Factor out snd_soc_init_card()
ASoC: some minor changes for AD1836 and AD1938 codec drivers
ASoC: remove unused #include <linux/version.h>

SoC Codec AD1938

ASoC: Remove redundant snd_soc_dapm_new_widgets() calls
ASoC: Remove dead code and labels
ASoC: Factor out snd_soc_init_card()
ASoC: some minor changes for AD1836 and AD1938 codec drivers
ASoC: remove unused #include <linux/version.h>

SoC Codec AK4535

ASoC: Remove redundant snd_soc_dapm_new_widgets() calls

SoC Codec AK4671

ASoC: Remove redundant snd_soc_dapm_new_widgets() calls
ASoC: AK4671: add ak4671 codec driver

SoC Codec CS4270

ASoC: CS4270: export de-emphasis filter as ALSA control
ASoC: Remove snd_soc_suspend_device()

SoC Codec CX20442

ASoC: Remove dead code and labels

SoC Codec TLV320AIC23

ASoC: AIC23: Fixing infinite loop in resume path
ASoC: tlv320aic23 fix rate selection

SoC Codec TLV320DAC33

ASoC: tlv320dac33: Change RT wq to singlethread wq
ASoC: tlv320dac33: typo fix in the header
ASoC: Codec driver for Texas Instruments tlv320dac33 codec

SoC Codec TPA6130A2

ASoC: TPA6130A2: Make tpa6130a2_power as static
ASoC: Minor fixups to tpa6130a2 driver
ASoC: TPA6130A2 amplifier driver

SoC Codec TWL4030

ASoC: TWL4030: Do not modify the APLL_CTL register
ASoC: TWL4030: Make sure, that the codec is powered on startup
ASoC: TWL4030: Add APLL supply for the capture path
ASoC: TWL4030: Change APLL powering sequence
ASoC: TWL4030: Vibra motor stop fix when it is driven with audio
ASoC: TWL4030: Change codec_muted to apll_enabled
ASoC: TWL4030: Remove bypass tracking
ASoC: TWL4030: Driver registration via twl4030_codec MFD
ASoC: TWL4030: use the twl4030-codec.h for register descriptions
ASoC: TWL4030: Only update the needed bits in *set_dai_sysclk

SoC Codec WM8350

ASoC: Remove snd_soc_suspend_device()
ASoC: WM8350 capture PGA mutes are inverted
ASoC: Fix WM835x Out4 capture enumeration

SoC Codec WM8400

ASoC: Remove dead code and labels
ASoC: Remove snd_soc_suspend_device()

SoC Codec WM8580

ASoC: Debugged improper setting of PLL fields in WM8580 driver

SoC Codec WM8711

ASoC: Fix build errors of wm8711.c with SPI
ASoC: Add TLV information to WM8711
ASoC: WM8711 minor cleanups
ASoC: Add SPI support to WM8711
ASoC: Factor out WM8711 cache I/O
ASoC: Update WM8711 to driver model registration method
ASoC: Add WM8711 CODEC driver

SoC Codec WM8727

ASoC: Staticise wm8727 driver structure
ASoC: Add support for the WM8727 DAC.

SoC Codec WM8731

ASoC: Add regulator support for WM8731

SoC Codec WM8753

ASoC: wm8753: fix mapping when MONOMIX is set to Stereo

SoC Codec WM8940

ASoC: wm8940: Fix check on error code form snd_soc_codec_set_cache_io

SoC Codec WM8974

ASoC: Clean up WM8974 PLL configuration
ASoC: remove unused #include <linux/version.h>

SoC Codec WM8993/4

tree-wide: fix assorted typos all over the place
ASoC: Rename controls with a / in wm_hubs
ASoC: Factor out analogue platform data from WM8993
ASoC: Fully specify DC servo bits to update in wm_hubs

SoC Codec WM9081

trivial: remove unnecessary semicolons

SoC Codec WM9705

ASoC: Revert missing reset_err in wm97*.c

SoC Codec WM9712

ASoC: Revert missing reset_err in wm97*.c

SoC Codec WM9713

ASoC: Revert missing reset_err in wm97*.c

SoC Codec ads1174/8

ASoC: Update ads117x to current APIs
ASoC: ADS117x ADC driver

SoC DaVinci

ASoC: DaVinci: use edma_pause, edma_resume
ASoC: DaVinci: pcm, fix underrun by using sram
ASoC: DaVinci: pcm, rename variables in prep for ping/pong
ASoC: DaVinci: i2s, reduce underruns by combining into 1 element
ASoC: DaVinci: remove requirement that dma_params is 1st in structure
ASoC: DaVinci: McASP FIFO related updates
ASoC: Davinci: Add audio codec support for DM365 EVM
ASoC: DaVinci: Correct McASP FIFO initialization
ASoC: Davinci: Fix race with cpu_dai->dma_data
ASoC: DaVinci: Fix divide by zero error during 1st execution
ASoC: DaVinci: Fixes to McASP configuration
davinci: EDMA: multiple CCs, channel mapping and API changes
ASoC: davinci: i2c device creation moved into board files

SoC Dynamic Audio Power Management

ASoC: Fix suspend with active audio streams
ASoC: Serialize access to dapm_power_widgets()
ASoC: Add virtual enumeration support for DAPM muxes
ASoC: Push DAPM enumeration register change test out
ASoC: Simplify code for DAPM widget updates
ASoC: Allow per-route connectedness checks for supplies
ASoC: Fix SND_SOC_DAPM_LINE handling
ASoC: Fix display of stream name in DAPM debugfs

SoC Freescale

ASoC: mpc5200: remove duplicate identical IRQ handler
sound: ASoC/mpc5200: fix enable/disable of AC97 slots
sound: ASoC/mpc5200: add to_psc_dma_stream() helper
sound: ASoC/mpc5200: Improve printk debug output for trigger
sound: ASoC/mpc5200: get rid of the appl_ptr tracking nonsense
sound: ASoC/mpc5200: Track DMA position by period number instead of bytes
ASoC: Clean up error handling in MPC5200 DMA setup

SoC Layer

Add the build stub for soc/soc-utils.c
ASoC: Add BCLK calculation utility for TDM mode too
ASoC: ADS117x ADC driver
ASoC: Add jack_status_check callback function for GPIO jacks
ASoC: move setting ac97 platformdata earlier than ac97 read/write
ASoC: Add bit clock rate calculator utility functions
ASoC: Factor out snd_soc_init_card()
ASoC: Move sysfs and debugfs functions to head of soc-core.c
ASoC: Add support for the WM8727 DAC.
ASoC: refactor snd_soc_update_bits()
ASoC: remove io_mutex
ASoC: TWL4030: Driver registration via twl4030_codec MFD
ASoC: Move dereference after NULL test
ASoC: Fix possible codec_dai->ops NULL pointer problems
ASoC: Codec driver for Texas Instruments tlv320dac33 codec
ASoC: Remove snd_soc_suspend_device()
ASoC: Add SPI support to WM8711
ASoC: TPA6130A2 amplifier driver
ASoC: Improve the debugfs hierarchy
ASoC: add support for multiple cards/codecs in debugfs
ASoC: Add PDM DAI format definition
ASoC: Convert soc-cache to use C99 style initialisers for the table
ASoC: Provide API for reordering channels
ASoC: AK4671: add ak4671 codec driver
ASoC: Factor out I2C 8 bit address 8 bit data I/O
ASoC: Add source argument to PLL configuration
ASoC: Add WM8711 CODEC driver
ASoC: Remove unuused hw_read_t

SoC S6000

ASoC: Use DMA_BIT_MASK(32) instead of deprecated DMA_32BIT_MASK

SoC SH7760 AC97

ASoC: sh: fsi: Add runtime PM support
ASoC: sh: FSI: Add capture support
ASoC: sh: FSI: Remove DMA support

SoC Texas Instruments OMAP

ASoC: Fix build of OMAP sound drivers
ASoC: Adding OMAP3517 / AM3517 EVM support in ASOC
omap: headers: Move remaining headers from include/mach to include/plat
ASoC: Add support for IGEP v2
ASoC: OMAP: enable Overo driver for CM-T35
ASoC: OMAP3 Pandora: update for TWL4030 codec changes
ASoC: Modifying the license string GPLv2 for OMAP3 EVM
ASoC: omap-mcbsp - add support for upto 16 channels.
ASoC: Pandora: Pass SRG input clock frequency to the OMAP McBSP DAI
ASoC: Modifying Kconfig/Makefile for AM3517 EVM
ASoC: OMAP3EVM: Use the twl4030_setup_data for headset pop-removal
ASoC: OMAP: Don't try to set unsupported OMAP_DMA_DATA_BURST_16 on OMAP1
ASoC: Amstrad Delta minor cleanups
ASoC: Amstrad Delta: add info about the line discipline requirement to Kconfig help text
ASoC: OMAP: Add functionality to set CLKR and FSR sources in McBSP DAI

Soc PXA2xx Raumfeld

ASoC: pxa/raumfeld: adopt new snd_soc_dai_set_pll() API
ALSA: ARM: add Raumfeld audio support

Sound Scape driver

ALSA: sscape: coding style fixes
ALSA: sscape - Remove invalid __devinitdata to module parameters
ALSA: sscape: force AD1848 codec mode on old Soundscape
ALSA: sscape: remove MIDI instances counting with limit ULONG_MAX
ALSA: sscape: convert to firmware loader framework
ALSA: sscape: add supoort for SPEA Media FX/Reveal SC-600

SuperH DAC audio driver

ALSA: sh: add SuperH DAC audio driver for ALSA V4

TEA575x tuner

ALSA: tea575x-tuner: fix mute

USB

sound: add Edirol UA-101 support

USB USX2Y

usb: fix compilation issues against latest alsa-kernel tree
Fix a missing patch chunk in usx2yhwdeppcm.patch
Refresh vm_ops related patches
ALSA: snd-usb-us122l: add product IDs of US-122MKII and US-144MKII
sound: usxxx: cleanup chip field
sound: usb: make the USB MIDI module more independent
ALSA: snd-usb-us122l: corrent error number for not probing US-144 on ehci-hcd
ALSA: snd-usb-us122l: add support for US-144
const: mark struct vm_struct_operations

USB caiaq

ALSA: snd-usb-caiaq: Bump version number to 1.3.20
ALSA: snd-usb-caiaq: Lock on stream start/unpause
ALSA: snd-usb-caiaq: Missing lock around use of buffer positions

USB generic driver

usb: fix compilation issues against latest alsa-kernel tree
Add hweight16() wrapper for usb/usbmidi.c
sound: add Edirol UA-101 support
ALSA: usb - Fix mixer map for Hercules Gamesurround Muse Pocket LT
ALSA: sound: usbmidi: Use hweight16
sound: usb-audio: add Roland UA-1G support
ALSA: usb - Quirk to disable master volume control in PCM2702
sound: usb: make the USB MIDI module more independent
ALSA: usb-audio: fix combine_word problem
sound: usb-audio: allow switching altsetting on Roland USB MIDI devices
ALSA: usb - Use strlcat() correctly
ALSA: Re-export snd_pcm_format_name() function

Utils

Add a workaround for bitrev8() in i2c/cs8427.c
Grammatical corrections in INSTALL and utils/setup-alsa-kernel script

VIA82xx driver

sound: via82xx: deactivate DXS controls of inactive streams
sound: via82xx: move DXS volume controls to PCM interface

WSS library

ALSA: opti93x: move controls definitions to opti93x driver
ALSA: cs4236: update control names
ALSA: cs4236: detect chip in one pass
ALSA: wss: reuse CS4231 controls for AD1848
ALSA: wss: convert CS4231 mixer to dB scale

alsa-lib

Core

Release v1.0.22
configure.in: fix --without-softfloat
Define _GNU_SOURCE so that <fcntl.h> gives O_CLOEXEC
Open device nodes with close-on-exec flag
configure.in: Add m4 check for new AM_SILENT_RULES
cvscompile: Remove in favour of gitcompile.
Release v1.0.21a

Control API

Remove redefinition of _GNU_SOURCE and __USE_GNU
Remove old commented-out FD_CLOEXEC code
namehint: list card independent devices only once
namehint: Allow snd_device_name_hint to search for CTL devices.
namehint: add missing list->card initialization
Fix corruption after snd_device_name_hint()
hcontrol: fix compare_default function to handle also id.device and id.subdevice
control: Remove unused variable.

HWDEP API

Remove old commented-out FD_CLOEXEC code

Mixer API

mixer: fix enum check
simple_none.c uses HAVE_SOFT_FLOAT it has to include config.h
Fix CHECK_ENUM() in simple.c
mixer: Add Speaker and Beep names to the weight list

PCM API

Update pcm doc strings
Remove old commented-out FD_CLOEXEC code
pcm_rate_linear: Annotate unused function parameter to avoid compiler warnings.
dmix - Fix snd_pcm_info()
pcm_hw: Always use delay ioctl in snd_pcm_delay()
PCM - Change the hw_params determination order

RawMidi API

Remove old commented-out FD_CLOEXEC code

Sequencer API

Remove old commented-out FD_CLOEXEC code

Timer API

Remove redefinition of _GNU_SOURCE and __USE_GNU
Remove old commented-out FD_CLOEXEC code
Defined symbols exposing the hrtimer to applications.

ALSA Lisp

alisp: Comment out an unused function to avoid compiler warnings.

Configuration

Change dmix.conf to accept user configuration from defaults.dmix.<driver_id>.xxx
Revert "Fix driver conf parsing in snd_config_hook_load_for_all_cards()"

Dynamic Loader helpers

Remove redefinition of _GNU_SOURCE and __USE_GNU
Cache libasound.so access in snd_dlopen

Kernel Headers

Defined symbols exposing the hrtimer to applications.

alsa-utils

Core

Release v1.0.22

ALSA Control (alsactl)

alsactl: fix error path code in init_parse.c
alsactl: init - default - initialize also "Digital Input Source"
alsactl init: Add CTL{do_search} and CTL{do_count} parsers
alsactl init: use empty GOTOs in init/default file to increase readability
alsactl: introduce CTL{write} to match directly written CTL values
alsactl - Initialize Speaker volume to 0dB when Master is present
alsactl init: Fix typo "(" -> "{" in Headphone default rule

Speaker Test

speaker-test: not all sample formats are supported - show only supported ones
speaker-test: add -d (--debug) option to show PCM parameters

aplay/arecord

arecord: fix wrong chunk_size initialization when verbose and mmap flags are set
aplay - Show available formats

alsa-tools

Core

Release v1.0.22

Envy24 Control

envy24control: Changing the Multi Track Peak control from MIXER to PCM type

alsa-plugins

Core

Release v1.0.22

A52 Output plugin

a52 - set channel layout with recent libavcodec
a52 - fix 5.1 channel order with recent libavcodec

Automatic upmix / downmix plugins

upmix - Add 7.1 support

alsa-python

Core

Release v1.0.22

pyalsa.alsahcontrol module

hcontrol: fix a typo
hcontrol: allow constructing Elem with numid
hcontrol: add poll_fds property
hcontrol: fix memory leak
hcontrol: fix variable type

Detailed changelog between 1.0.21 and 1.0.22 releases

alsa-driver

Sound Core

- Release v1.0.22
- Set build restrict for ua101
It requires new stuff in 2.6.32.
- add compilation stub for ua101.c
- Add a workaround for bitrev8() in i2c/cs8427.c
- Add workaround for dmi functions
Add a wrapper file for linux/dmi.h for older kernels.
Also, more workarounds for dmi_find_device() in pci/hda/patch_sigmatel.c.
- Grammatical corrections in INSTALL and utils/setup-alsa-kernel script
- Allow patching include/sound header files
Copy or apply a patch to each header file in alsa-kernel instead of
symliking to the directory. This will make it possible to give a
better binary compatibility for older kernels.
- Kconfig: Remove useless and sometimes wrong comments
Additionally, some excessive newlines removed.
- sound: Kconfig typo fix
Fix a typo in the help text in sound/Kconfig.

ALSA Core

- Add wrappers for some new macros in linux/kernel.h
- Add a dummy wrapper for pci_clear_master()
- Add workaround for dmi functions
Add a wrapper file for linux/dmi.h for older kernels.
Also, more workarounds for dmi_find_device() in pci/hda/patch_sigmatel.c.
- add struct pid wrappers
Add compatibilty wrappers for struct pid functions for older kernels.
- Add true and false definitions for older kernels
- Add wrappers for work_pending() and delayed_work_pending()
- Fix 64bit issue in snd_compat_print_hex_dump_bytes()
Add missing cast in snd_compat_print_hex_dump_bytes() for 64bit archs.
- Add strict_strtoull() wrapper
- Add snd_card_new() for ABI compatibility
Just for other drivers.
- Add sound/core patch for ABI compatibility
Try to keep the field assignment of struct snd_core to be compatible.
Also, move some stuff to here from adriver.h.
- Add snd_verbose_printk and snd_verbose_printd
Added snd_verbose_printk() and snd_verbose_printd() just for keeping
ABI compatibility in some level.
- ALSA: sscape - Remove sscap_ioctl.h from include/sound/Kbuild
- ALSA: Add const prefix to proc helper functions
Add appropriate const prefix to char * arguments in proc helper functions.
Also fixed the caller side to be proper const pointers.
- ALSA: Remove unneeded ifdef from sound/core.h
Remove the old hack that was needed for building alsa-driver modules
externally for old kernels.
- ALSA: Remove struct snd_monitor_file from public sound/core.h
The struct snd_monitor_file is used locally only in sound/core/init.c,
thus it should be moved there from the public sound/core.h.

SoC PXA2xx Core

- ALSA: ARM: add Raumfeld audio support
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: finally enable support for eXeda and CM-X300
CC: Mark Brown <broonie@opensource.wolfsonmicro.com>
CC: alsa-devel@alsa-project.org
- ASoC: pxa-ssp increase max_channels to 8
When running in TDM mode there can be more than 2 channels used. Datasheet has
figures for upto 8 channels so increase max_channels on all SSP interfaces to
this figure.
- ASoC: Fix dependency of CONFIG_SND_PXA2XX_SOC_IMOTE2
wm8940 requires I2C.
- trivial: remove unnecessary semicolons

Control Midlevel

- Refresh patches to remove fuzz
- ALSA: remove unnecessary null check
This function is only called from snd_ctl_ioctl() and the file parameter
can never be null so there is no need to check it here.
We dereference file at the start of the function:
struct snd_card *card = file->card;
and it confuses static checkers to dereference a pointer before
checking it.
- control: use reference-counted pid
Instead of storing the PID number, take a reference to the task's pid
structure. This protects against duplicates due to PID overflows, and
using pid_vnr() ensures that the PID returned by snd_ctl_elem_info() is
correct as seen from the current namespace.
- control: remove snd_konctrol_volatile::owner_pid field
We do not need to save the ID of the process that locked a control
because that information is already available in the owner's file data.

PCM Midlevel

- Refresh patches to remove fuzz
- Refresh pcm_native.patch for changes of DMA handling
- Refresh vm_ops related patches
The patches got broken due to the upstream changes of vm_ops to the
const pointer. Refreshed now.
- Refresh pcm_natvie.patch
- ALSA: pcm - fix page conversion on non-coherent PPC arch
The non-cohernet PPC arch doesn't give the correct address by a simple
virt_to_page() for pages allocated via dma_alloc_coherent().
This patch adds a hack to fix the conversion similarly like MIPS.
Note that this doesn't fix perfectly: the pages should be marked with
proper pgprot value. This will be done in a future implementation like
the conversion to dma_mmap_coherent().
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
- ALSA: pcm - fix page conversion on non-coherent MIPS arch
The non-coherent MIPS arch doesn't give the correct address by a simple
virt_to_page() for pages allocated via dma_alloc_coherent().
Original patch by Wu Zhangjin <wuzj@lemote.com>.
[Ralf mentioned: "The origins of this patch go back far further.
The oldest patch I could find which is a superset of this was written
by Atsushi Nemoto and various incarnations of it have been sumitted
to and reject by me a number of times through the years."]
A proper check of the buffer allocation type was added to avoid the
wrong conversion.
Note that this doesn't fix perfectly: the pages should be marked with
proper pgprot value. This will be done in a future implementation like
the conversion to dma_mmap_coherent().
Acked-by: Ralf Baechle <ralf@linux-mips.org>
- ALSA: pcm - define snd_pcm_default_page_ops()
Add a helper (inline) function as the default page ops. Any hacks wrt
the page address conversion will be applied in this function.
- ALSA: pcm - Use dma_mmap_coherent() if available
Use dma_mmap_coherent() for mmapping the buffers allocated via
dma_alloc_coherent() if available. Currently, only ARM has this function,
so we do temporarily have an ifdef pcm_native.c. This should be handled
better globally in future.
- sound: pcm: record a substream's owner process
Record the pid of the task that opened a PCM substream. For sound
cards with hardware mixing, this allows determining which process
is associated with a specific substream's volume control.
- control: use reference-counted pid
Instead of storing the PID number, take a reference to the task's pid
structure. This protects against duplicates due to PID overflows, and
using pid_vnr() ensures that the PID returned by snd_ctl_elem_info() is
correct as seen from the current namespace.
- ALSA: sound: Move dereference after NULL test and drop unnecessary NULL tests
In pcm.c, if the NULL test on pcm is needed, then the dereference should be
after the NULL test.
In dummy.c and ali5451.c, the context of the calls to
snd_card_dummy_new_mixer and snd_ali_free_voice show that dummy and pvoice,
respectively cannot be NULL.
A simplified version of the semantic match that detects this problem is as
follows (http://coccinelle.lip6.fr/):
// <smpl>
@match exists@
expression x, E;
identifier fld;
@@
* x->fld
... when != \(x = E\|&x\)
* x == NULL
// </smpl>
- const: mark struct vm_struct_operations
* mark struct vm_area_struct::vm_ops as const
* mark vm_ops in AGP code
But leave TTM code alone, something is fishy there with global vm_ops
being used.
- ALSA: pcm - Simplify snd_pcm_drain() implementation
Simplify snd_pcm_drain() implementation and avoid unneeded array-
allocation for waitqueues. Instead, one waitqueue is used for the
first draining stream, and wait until all streams finished.
- ALSA: Re-export snd_pcm_format_name() function
Re-export snd_pcm_format_name() function to be used outside the PCM core.
As a first example, usbaudio is changed to use it now again.

RawMidi Midlevel

- Add O_DSYNC definition in rawmidi.c
Now O_DSYNC is used instead of O_SYNC in rawmidi.c.
- vfs: Implement proper O_SYNC semantics
While Linux provided an O_SYNC flag basically since day 1, it took until
Linux 2.4.0-test12pre2 to actually get it implemented for filesystems,
since that day we had generic_osync_around with only minor changes and the
great "For now, when the user asks for O_SYNC, we'll actually give
O_DSYNC" comment. This patch intends to actually give us real O_SYNC
semantics in addition to the O_DSYNC semantics. After Jan's O_SYNC
patches which are required before this patch it's actually surprisingly
simple, we just need to figure out when to set the datasync flag to
vfs_fsync_range and when not.
This patch renames the existing O_SYNC flag to O_DSYNC while keeping it's
numerical value to keep binary compatibility, and adds a new real O_SYNC
flag. To guarantee backwards compatiblity it is defined as expanding to
both the O_DSYNC and the new additional binary flag (__O_SYNC) to make
sure we are backwards-compatible when compiled against the new headers.
This also means that all places that don't care about the differences can
just check O_DSYNC and get the right behaviour for O_SYNC, too - only
places that actuall care need to check __O_SYNC in addition. Drivers and
network filesystems have been updated in a fail safe way to always do the
full sync magic if O_DSYNC is set. The few places setting O_SYNC for
lower layers are kept that way for now to stay failsafe.
We enforce that O_DSYNC is set when __O_SYNC is set early in the open path
to make sure we always get these sane options.
Note that parisc really screwed up their headers as they already define a
O_DSYNC that has always been a no-op. We try to repair it by using it for
the new O_DSYNC and redefinining O_SYNC to send both the traditional
O_SYNC numerical value _and_ the O_DSYNC one.
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Grant Grundler <grundler@parisc-linux.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Andreas Dilger <adilger@sun.com>
Acked-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Acked-by: Kyle McMartin <kyle@mcmartin.ca>
Acked-by: Ulrich Drepper <drepper@redhat.com>
- sound: rawmidi: record a substream's owner process
Record the pid of the task that opened a RawMIDI substream.
- control: use reference-counted pid
Instead of storing the PID number, take a reference to the task's pid
structure. This protects against duplicates due to PID overflows, and
using pid_vnr() ensures that the PID returned by snd_ctl_elem_info() is
correct as seen from the current namespace.
- sound: rawmidi: fix opened substreams count
The substream_opened field is to count the number of opened substreams,
not the number of times that any substreams have been opened.
Furthermore, all substreams being opened does not imply that the next
open would fail, due to the possibility of O_APPEND. With this wrong
check, opening a substream multiple times would succeed only if the
device had more unopened substreams.
- sound: rawmidi: fix MIDI device O_APPEND error handling
Commit 9a1b64caac82aa02cb74587ffc798e6f42c6170a in 2.6.30 broke the
error handling code in rawmidi_open_priv().
If only the output substream of a RawMIDI device has been opened and
if this device is then opened with O_RDWR | O_APPEND and if the
initialization of the input substream fails (either because of low
memory or because the device driver's open callback fails), then the
runtime structure of the already open output substream will be freed
and all following writes through the first handle will cause
snd_rawmidi_write() to use the NULL runtime pointer.
Cc: <stable@kernel.org>
- sound: rawmidi: fix checking of O_APPEND when opening MIDI device
Commit 9a1b64caac82aa02cb74587ffc798e6f42c6170a in 2.6.30 dropped the
check that a substream must already have been opened with O_APPEND to be
able to open it a second time.
This would make it possible for a substream to be switched to append
mode, which would mean that non-atomic writes would fail unexpectedly.
Cc: <stable@kernel.org>
- sound: rawmidi: fix double init when opening MIDI device with O_APPEND
Commit 9a1b64caac82aa02cb74587ffc798e6f42c6170a in 2.6.30 moved the
substream initialization code to where it would be executed every time
the substream is opened.
This had the consequence that any further opening would drop and leak
the data in the existing buffer, and that the device driver's open
callback would be called multiple times, unexpectedly.
Cc: <stable@kernel.org>

/arm/Makefile

- ALSA: Remove old DMA-mmap code from arm/devdma.c
The call of dma_mmap_coherent() is done in the PCM core now.

/include/Makefile

- Add a dummy modules_install target to include/Makefile
- Allow patching include/sound header files
Copy or apply a patch to each header file in alsa-kernel instead of
symliking to the directory. This will make it possible to give a
better binary compatibility for older kernels.

/isa/Makefile

- Remove obsoleted dt019x build stub
- ALSA: dt019x: merge into the als100 driver
The als100 driver is so similar to the dt019x/als007 driver
that one driver's source can be used for both drivers with
only few changes. Merge the dt019x driver into the als100.

/soc/Makefile

- ASoC: Add bit clock rate calculator utility functions
Many devices need to calculate the bit clock rate desired to
work out the clock configuration required for the device.
Provide utility functions to do this using both hw_params
structures and raw numbers.
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>

/soc/codecs/Makefile

- ASoC: ADS117x ADC driver
This patch adds support for the TI ADS117x family of multichannel ADCs
and was sponsored by Shotspotter Inc.
- ASoC: Add support for the WM8727 DAC.
Add support for the Wolfson Microelectronics WM8727 DAC, this is a simple
non-configurable DAC.
- ASoC: Codec driver for Texas Instruments tlv320dac33 codec
Driver for Texas Instruments TLV320DAC33 (SLAS546) low power stereo
audio DAC.
TLV320DAC33 is a stereo audio codec with integrated 24KB FIFO for low
power audio playback.
The digital interface can use I2S, DSP (A or B), Right and Left
justified formats.
DAC33 has stereo analog input, which can be bypassed to the analog
outputs.
Regarding to the internal 24KB FIFO the driver implements 'FIFO bypass'
mode (default) and nSample mode (FIFO is in use).
a) In 'FIFO bypass' mode the internal FIFO is not in use, the codec is
working synchronously as a normal codec (it needs constant stream of
data on the digital interface).
b) The nSample mode implementation uses one interrupt line from DAC33 to
the host:
Alarm threshold is set to 10ms of audio data (limit by the driver
implementation).
DAC33 will signal an interrupt, when the FIFO level goes under the
Alarm threshold.
The host will write to nSample register a value (number of stereo
samples), to tell DAC33 how many samples it should read in a burst from
the host. When the DAC33 received the number of samples, it disables the
clocks on the I2S bus. When the FIFO use again goes under the Alarm
threshold, DAC33 signals the host with an interrupt, and the process is
repeated.
- ASoC: TPA6130A2 amplifier driver
Driver for Texas Instruments TPA6130A2 stereo headphone
amplifier.
The driver provides playback gain control and also pre-defined
DAPM_HP widgets and DAPM routings for power management.
The DAPM_HP widget names are:
"TPA6130A2 Headphone Left"
"TPA6130A2 Headphone Right"
From soc machine drivers to use with the tpa6130a2 amplifier,
the tpa6130a2_add_controls has to be called, which adds the alsa
controls and the DAPM routing needed for the tpa6130a2.
After that the machine driver can connect the codec's output
with 'TPA6130A2 Left' and 'TPA6130A2 Right':
{"TPA6130A2 Left", NULL, "CODEC LEFT OUT"},
{"TPA6130A2 Right", NULL, "CODEC RIGHT OUT"},
Internally the left and right channels are powered separately.
When none of the channels are needed the amplifier is powered
down:
hard power: valid GPIO number is passed within platform data
soft power: Using the software shutdown of the amplifier
- ASoC: AK4671: add ak4671 codec driver
The AK4671 is a stereo CODEC with a built-in Microphone-Amplifier,
Receiver-Amplifier and Headphone-Amplifier.
The datasheet for the ak4671 can find at the following url:
http://www.asahi-kasei.co.jp/akm/en/product/ak4671/ak4671_f01e.pdf
- ASoC: Add WM8711 CODEC driver
The WM8711 or WM8711L (WM8711/L) is a low power stereo DAC with an
integrated headphone driver. The WM8711/L is designed specifically for
portable MP3 audio and speech players. The WM8711/L is also ideal for
MD, CD machines and DAT players.

/soc/pxa/Makefile

- ALSA: ARM: add Raumfeld audio support
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>

AC97 Codec

- ALSA: ac97_codec - increase timeout for analog sections to 5 second
I have a Soundblaster 16PCI. For many years, alsa has had a bug where
not all of the card's controls are detected (many alsa versions,
many kernel versions). In particular, Master Playback Volume is
usually not detected, and so I get no sound or extremely faint sound.
The problem has always been inconsistent: sometimes all of the controls
are detected correctly, and sometimes a partial set is detected. It works
correctly about 10% of the time.
Finally, I got around to tracking down the problem. When the driver
fails, it prints the kernel message "AC'97 0 analog subsections not
ready". This message is generated from the function snd_ac97_mixer()
in ac97_codec.c. The message indicates that the card failed to come
back after reset within the time limit. The time limit is
120 milliseconds.
I tried increasing the time limit to 1 second, and found that this
made the driver work about 70% of the time. I tried increasing it
to 5 seconds, and it now seems to work 100% of the time.
I expect that this change would be completely harmless for
existing cards that work, and would only introduce additional
delay for cards that do not work.
ALSA bug#4032.
- comment typo fix: sybsystem -> subsystem

AK4113 receiver

- Add a build-stub for i2c/other/ak4113.c
- ALSA: ak4113 support
* complete support for ak4113
* based on code for ak4114 and ak4117

AK4114 receiver

- ALSA: ak4114 - fix errors in output selector bits
* the previous version had a typo - values of AK4114_OPS10-12 were
identical with AK4114_OPS00-02
* Since no cards actually use this feature, the bug was not identified earlier

AK4XXX AD/DA converters

- ALSA: ak4620 support, codec regs listed in proc
* complete support for ak4620
* codec regs listed in proc for all codecs/chips
* adding total regs for each codec
* fixing nb. of steps in input attenuation controls

ALI5451 driver

- ALSA: sound: Move dereference after NULL test and drop unnecessary NULL tests
In pcm.c, if the NULL test on pcm is needed, then the dereference should be
after the NULL test.
In dummy.c and ali5451.c, the context of the calls to
snd_card_dummy_new_mixer and snd_ali_free_voice show that dummy and pvoice,
respectively cannot be NULL.
A simplified version of the semantic match that detects this problem is as
follows (http://coccinelle.lip6.fr/):
// <smpl>
@match exists@
expression x, E;
identifier fld;
@@
* x->fld
... when != \(x = E\|&x\)
* x == NULL
// </smpl>

ALS100 driver

- ALSA: dt019x: merge into the als100 driver
The als100 driver is so similar to the dt019x/als007 driver
that one driver's source can be used for both drivers with
only few changes. Merge the dt019x driver into the als100.

ALSA Version

- ALSA: Release v1.0.21

ALSA<-OSS emulation

- [ALSA] rename "PC Speaker" controls to "Speaker"
To unify control names, rename "PC Speaker" to "Speaker" for PPC ALSA drivers.
- ALSA: rename "PC Speaker" and "PC Beep" controls to "Beep"
To avoid confusion in control names for the standard analog PC Beep generator
using a small Internal PC Speaker, rename all related "PC Speaker" and "PC
Beep" controls to "Beep" only. This name is more universal and can be also
used on more platforms without confusion.
Introduce also "Internal Speaker" in ControlNames.txt for systems with
full-featured build-in internal speaker.
- ALSA: Add const prefix to proc helper functions
Add appropriate const prefix to char * arguments in proc helper functions.
Also fixed the caller side to be proper const pointers.
- ALSA: allocation may fail in snd_pcm_oss_change_params()
Allocation may fail, show if it did.
[Additional fix for invalid runtime->oss.prepare flag set by tiwai]

ARM AACI PL041 driver

- ALSA: aaci - Clean up duplicate code
Now snd_ac97_pcm_open() is called with the exactly same arguments
for both playback and capture directions. Remove the unneeded check.
- ALSA: Remove old DMA-mmap code from arm/devdma.c
The call of dma_mmap_coherent() is done in the PCM core now.
- ALSA: AACI: fix recording bug
pcm->r[1].slots is the double rate slot information, not the
capture information. For capture, 'pcm' will already be the
capture ac97 pcm structure.
Cc: <stable@kernel.org>
- ALSA: AACI: fix AC97 multiple-open bug
Cc: <stable@kernel.org>
- ALSA: AACI cleanup
Fix the buffer size calculation to use the size which ALSA is expecting.
- ALSA: aaci: ARM1176 aaci-pl041 AC97 register read timeout
After a reboot on an ARM1176 which amounts to a softreset, it has been
noted that the ALSA driver does not get registered and the probe fails
with the error "aaci-pl041 fpga:04: ac97 read back fail". In the process
of reading from a register the SL1TxBusy bit is set indicating that the
transceiver is busy and remains so until the default timeout occurs.
Set the Power down register 0x26 to an arbitrary value as specified in
the PL041 manual (page: 3-18) so that AACISL1TX/AACISL2TX registers take
their default state.

ARM DMA routines

- ALSA: Remove old DMA-mmap code from arm/devdma.c
The call of dma_mmap_coherent() is done in the PCM core now.

ARM PXA2XX driver

- [ARM] pxa: update pxa2xx-ac97.c to use 'struct dev_pm_ops'
- ASoC: fix pxa2xx-ac97.c breakage
Today's linux-next fails to build with
sound/arm/pxa2xx-ac97.c: In function 'pxa2xx_ac97_probe':
sound/arm/pxa2xx-ac97.c:211: error: 'pxa2xx_audio_ops_t' has no member named 'codec_data'
make[2]: *** [sound/arm/pxa2xx-ac97.o] Error 1
It looks like commit e2365bf313fb21b49b1e4c911033389564428d03 has
introduced this; patch below.

Apple Onboard Audio driver

- ALSA: Don't assume i2c device probing always succeeds
The client->driver pointer can be NULL when i2c-device probing fails
in i2c_new_device(). This patch adds the NULL checks for client->driver
and return the error instead of blind assumption of driver availability.
Reported-by: Tim Shepard <shep@alum.mit.edu>
Cc: Jean Delvare <khali@linux-fr.org>
Cc: Johannes Berg <johannes@sipsolutions.net>

Asihpi driver

- asihpi: fix compilation of hpios_linux_kernel.c
sched.h is no longer included by interrupt.h.

Au12x0/Au1550 PSC ASoC

- ASoC: au1x: dbdma2: plug memleak in pcm device creation error path
free the allocated pcm platform device in the error path.
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: au1x: dbdma2: fix oops on soc device removal.
platform_device_unregister() frees resources for us, no need to
do it explicitly. Fixes an oops when machine code removes the
soc-audio device.
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: au1x: convert to platform drivers.
Convert psc-ac97,i2s to platform drivers similar to the davinci ones.
- ASoC: au1x: psc-ac97: reorganize timeouts
Codec read/write functions: wait 21us between the pokings of hardware.
Add timeouts to unbounded loops waiting for bits to change.
- ASoC: au1x: psc-ac97: verify correct codec register was read
Verify that the correct register has been received from the codec.
- ASoC: au1x: PSC-AC97 bugfixes
This patch fixes the following bugs:
- only reprogram bitdepth if it has changed since last call to hw_params.
- add locking inside ac97_read/write functions:
When reprogramming sample depth, the ac97 unit has to be disabled,
which should not be done in the middle of codec register accesses.
- retry timed-out codec register accesses.
- wait for status bits to set/clear when starting/stopping various
functional blocks; very important after reenabling AC97 unit else
sound may be distorted (e.g. high-pitch noise in 1kHz sine wave).
- clear fifos before/after starting/stopping RX/TX.
- longer timeouts waiting for PSC/AC97 ready after cold reset
with certain codecs this can take ridiculous amounts of time.
Run-tested on various Au1200 platforms with various codecs.

BT87x driver

- ALSA: bt87x - Add a whitelist for Pinnacle PCTV (11bd:0012)

CA0106 driver

- tree-wide: fix assorted typos all over the place
That is "success", "unknown", "through", "performance", "[re|un]mapping"
, "access", "default", "reasonable", "[con]currently", "temperature"
, "channel", "[un]used", "application", "example","hierarchy", "therefore"
, "[over|under]flow", "contiguous", "threshold", "enough" and others.
- ALSA: Cleanup redundant tests on unsigned
The variables are unsigned so the test `>= 0' is always true,
the `< 0' test always fails. In these cases the other part of
the test catches wrapped values.
In dac_audio_write() there does not occur a test for wrapped
values, but the test appears redundant.

CMI8330 driver

- ALSA: rename "PC Speaker" and "PC Beep" controls to "Beep"
To avoid confusion in control names for the standard analog PC Beep generator
using a small Internal PC Speaker, rename all related "PC Speaker" and "PC
Beep" controls to "Beep" only. This name is more universal and can be also
used on more platforms without confusion.
Introduce also "Internal Speaker" in ControlNames.txt for systems with
full-featured build-in internal speaker.

CMI8788 (Oxygen) driver

- oxygen: add more build stubs
- sound: oxygen: add high-pass filter control
Add a control that allows disabling the high-pass filter of the WM8785 ADC.
- sound: oxygen: add digital filter control
Add a control to select between sharp and slow roll-of filter responses
of the DACs.
- sound: virtuoso: add PCM1796 oversampling control
Add a control to increase the oversampling factor to 128x on cards with
PCM1796 or PCM1792A DACs.
- sound: oxygen: allow custom MCLK rates
Add a callback that allows model drivers to modify the default I2S MCLK
rate.
- sound: virtuoso: add headphone impedance control
Add a mixer control to adjust the headphone amplifier output for
headphones with different impedances.
- sound: oxygen: cache codec registers
Keep a cache of codec registers to avoid unnecessary writes.
- sound: virtuoso: fix Xonar Essence ST support
The Essence ST uses the CS2000 chip to generate the DAC master clock, so
we better initialize and program it appropriately.
- sound: oxygen: fix input monitor control names
Insert "Playback" into the input monitor control names to prevent
alsa-lib from treating these controls as global controls.
- sound: oxygen: more hardware documentation
Add some comments describing the hardware pin routing.
- sound: oxygen: 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. This is implemented only for models where
the DACs support this, i.e., for the Xonar D1 and DX.
- sound: oxygen: better defaults for upmixing control
On card models with two-channel outputs, the base driver can
automatically disable the upmixing control so that the model
drivers do not need to do this.
- sound: virtuoso: split virtuoso.c
The virtuoso.c file has become rather big. This patch splits it up so
that only code for very similar card models is in one file.
- sound: oxygen: fix for PI7C9X110 compatibility
If the card is used with a Pericom PI7C9X110 PCI-E/PCI bridge,
reconfigure the latter's PCI buffering to fix an unknown problem.
- sound: oxygen: do not try to restore nonexistent EEPROM
On cards where the EEPROM was deliberately omitted, we do not need to
try to restore the EEPROM's contents.
- sound: oxygen: work around MCE when changing volume
When the volume is changed continuously (e.g., when the user drags a
volume slider with the mouse), the driver does lots of I2C writes.
Apparently, the sound chip can get confused when we poll the I2C status
register too much, and fails to complete a read from it. On the PCI-E
models, the PCI-E/PCI bridge gets upset by this and generates a machine
check exception.
To avoid this, this patch replaces the polling with an unconditional
wait that is guaranteed to be long enough.
Tested-by: Johann Messner <johann.messner at jku.at>
Cc: <stable@kernel.org>
- sound: oxygen: handle cards with missing EEPROM
The card model detection code introduced in 2.6.30 that tries to work
around partially broken EEPROM contents by reading the EEPROM directly
does not handle cards where the EEPROM has been omitted. In this case,
we have to use the default ID to allow the driver to load.
Reported-and-tested-by: Ozan Çağlayan <ozan@pardus.org.tr>
Cc: <stable@kernel.org>
- sound: oxygen: fix MCLK rate for 192 kHz playback
Do not forget to program the MCLK ratio for the I2S output.
Otherwise, the master clock frequency can be too high for
the DACs at sample frequencies above 96 kHz.
Cc: <stable@kernel.org>

CS4231 driver

- ALSA: cs4236: update control names
Update control names to be more closer to their meaning.
Change the "Mono" name to the "Beep" as this line is usually
used to forward the PC beeper signal to sound card's output.
Update names for both cs423x and wss.
Clean up cs4235 controls according to the cs4235 doc. Rename
some of the cs4235 controls to be consistent with the cs4236's
ones.
Also, delete one misnamed cs4231 register define.

CS4236+ driver

- tree-wide: fix assorted typos all over the place
That is "success", "unknown", "through", "performance", "[re|un]mapping"
, "access", "default", "reasonable", "[con]currently", "temperature"
, "channel", "[un]used", "application", "example","hierarchy", "therefore"
, "[over|under]flow", "contiguous", "threshold", "enough" and others.
- ALSA: cs4236: add dB scale for all volume controls
Use db scale for all volume controls according to Crystal's datasheets.
- ALSA: cs4236: update control names
Update control names to be more closer to their meaning.
Change the "Mono" name to the "Beep" as this line is usually
used to forward the PC beeper signal to sound card's output.
Update names for both cs423x and wss.
Clean up cs4235 controls according to the cs4235 doc. Rename
some of the cs4235 controls to be consistent with the cs4236's
ones.
Also, delete one misnamed cs4231 register define.
- ALSA: cs4236: detect chip in one pass
The cs4236 was two step detection with call to the snd_wss_free()
between two steps. The snd_wss_free() did not free a sound device
created in the snd_wss_create(). This caused an OOPS during module
removal as the same sound device was released twice. The same OOPS
happened if the cs4236 module loading failed.
Fix this by adapting the snd_cs4236_create() to correctly work with
chips less capable then cs4236. The snd_cs4236_create() behaves the
same as the snd_wss_create() if the chip is less capable than the cs4236.

CS46xx driver

- ALSA: cs46xx - Fix minimum period size
Fix minimum period size for cs46xx cards. This fixes a problem in the
case where neither a period size nor a buffer size is passed to ALSA;
this is the case in Audacious, OpenAL, and others.
Cc: <stable@kernel.org>

Common EMU synth

- tree-wide: fix typos "couter" -> "counter"
This patch was generated by
git grep -E -i -l 'couter' | xargs -r perl -p -i -e 's/couter/counter/'

Compatibility header files

- Fix mkae rules to creating include/sound header files
- Add include/sound/pcm.h patch
Reassign the struct pcm and co fields to the compatible positions
with older kernels.
- Add sound/core patch for ABI compatibility
Try to keep the field assignment of struct snd_core to be compatible.
Also, move some stuff to here from adriver.h.
- Allow patching include/sound header files
Copy or apply a patch to each header file in alsa-kernel instead of
symliking to the directory. This will make it possible to give a
better binary compatibility for older kernels.

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

- ALSA: Cleanup redundant tests on unsigned
The variables are unsigned so the test `>= 0' is always true,
the `< 0' test always fails. In these cases the other part of
the test catches wrapped values.
In dac_audio_write() there does not occur a test for wrapped
values, but the test appears redundant.
- ALSA: ctxfi: Swapped SURROUND-SIDE mute
On Soundblaster X-FI Titenium with emu20k2 the SIDE and SURROUND mute
functions are swapped.
It was checked with 'speaker-test -c 8 -s 3' and (un)mute surround or
'speaker-test -c 8 -s 7' and (un)mute side. The volume seems not
to be affected and works as expected.

DT019x driver

- Remove obsoleted dt019x build stub
- ALSA: dt019x: merge into the als100 driver
The als100 driver is so similar to the dt019x/als007 driver
that one driver's source can be used for both drivers with
only few changes. Merge the dt019x driver into the als100.

Digigram VX Pocket driver

- pcmcia: rework the irq_req_t typedef
Most of the irq_req_t typedef'd struct can be re-worked quite
easily:
(1) IRQInfo2 was unused in any case, so drop it.
(2) IRQInfo1 was used write-only, so drop it.
(3) Instance (private data to be passed to the IRQ handler):
Most PCMCIA drivers using pcmcia_request_irq() to actually
register an IRQ handler set the "dev_id" to the same pointer
as the "priv" pointer in struct pcmcia_device. Modify the two
exceptions (ipwireless, ibmtr_cs) to also work this waym and
set the IRQ handler's "dev_id" to p_dev->priv unconditionally.
(4) Handler is to be of type irq_handler_t.
(5) Handler != NULL already tells whether an IRQ handler is present.
Therefore, we do not need the IRQ_HANDLER_PRESENT flag in
irq_req_t.Attributes.
CC: netdev@vger.kernel.org
CC: linux-bluetooth@vger.kernel.org
CC: linux-ide@vger.kernel.org
CC: linux-wireless@vger.kernel.org
CC: linux-scsi@vger.kernel.org
CC: alsa-devel@alsa-project.org
CC: Jaroslav Kysela <perex@perex.cz>
CC: Jiri Kosina <jkosina@suse.cz>
CC: Karsten Keil <isdn@linux-pingi.de>
for the Bluetooth parts: Acked-by: Marcel Holtmann <marcel@holtmann.org>
- pcmcia: remove deprecated handle_to_dev() macro
Update remaining users and remove deprecated handle_to_dev() macro
CC: Harald Welte <laforge@gnumonks.org>
CC: netdev@vger.kernel.org
CC: linux-wireless@vger.kernel.org
CC: linux-serial@vger.kernel.org
- ALSA: pcmcia: use dynamic debug infrastructure, deprecate CS_CHECK (sound)
Convert PCMCIA drivers to use the dynamic debug infrastructure, instead of
requiring manual settings of PCMCIA_DEBUG.
Also, remove all usages of the CS_CHECK macro and replace them with proper
Linux style calling and return value checking. The extra error reporting may
be dropped, as the PCMCIA core already complains about any (non-driver-author)
errors.

Documentation

- sound: add Edirol UA-101 support
Add experimental support for the Edirol UA-101 audio/MIDI interface.
- ALSA: document: Add direct git link to grub hda-analyzer
Just to save some time, add direct git link to grub hda-analyzer
- ALSA: hda - iMac 9,1 sound patch.
This is an updated patch for the Apple iMac 9,1 model to add sound.
Original patch posted here:
http://article.gmane.org/gmane.linux.alsa.devel/61361/match=
I have been using this patch for a while now
and have to say it works vary well, except for a few minor
things:
With the iMac 24-inch 3.06GHz Intel Core 2 Duo
everything seems to be working as it should,
although I have not looked into the microphone
(never really use one, nor have any apps to test,
my guess is it doesn't work, or I never figured out how
to get it to work).
With the iMac 24-inch 2.66GHz Intel Core 2 Duo
everything is the same as with the above machine
except I'm hearing a light scratchy/distortion noise
come out of the speakers when using headphones(above machine
does not do this).
Other than that the sound level is great(especially with good Dj headphones).
Tested-by: Justin P. Mattock <justinmattock@gmail.com>
- ALSA: hda - Fix mute-LED sync on HP laptops with IDT92HD83xxx codecs
The mute-LED isn't synchronized with the actual mute state on some
HP laptops with IDT 92HD83xxx codecs. A similar hack using
check_power_status callback is added for this codec, too.
- ALSA: hda - Add description of beep_mode in ALSA-Configuration.txt
- [ALSA] rename "PC Speaker" controls to "Speaker"
To unify control names, rename "PC Speaker" to "Speaker" for PPC ALSA drivers.
- ALSA: rename "PC Speaker" and "PC Beep" controls to "Beep"
To avoid confusion in control names for the standard analog PC Beep generator
using a small Internal PC Speaker, rename all related "PC Speaker" and "PC
Beep" controls to "Beep" only. This name is more universal and can be also
used on more platforms without confusion.
Introduce also "Internal Speaker" in ControlNames.txt for systems with
full-featured build-in internal speaker.
- ALSA: snd-pcsp: add nopcm mode
Currently, if the high-res timers are unavailable, snd-pcsp does not
initialize. People who choose it over pcspkr, loose their console beeps
in that case and get annoyed.
With this patch, the console beeps remain regardless of the high-res
timers. Additionally, the "nopcm" modparam is added to forcibly
disable the PCM capabilities of the driver.
- ALSA: dummy - Fix descriptions of pcm_substreams parameter
Now up to 128 substreams are supported.
Reported-by: Adrian Bridgett <adrian@smop.co.uk>
- ALSA: sscape: force AD1848 codec mode on old Soundscape
Old Soundscape cards (pre PnP) work only with AD1848 codecs.
If the CS4231 codec is installed it must be used in AD1848
compatible mode.
Also, add gameport support and remove an unused mpu field.
- ALSA: sscape: convert to firmware loader framework
The conversion solves the problem that firmware size was set to 64KB
while non PnP cards have 128KB firmware files.
An additional firmware initialization code has been moved from the OSS
driver.
- ALSA: hda - Fix mute sound with STAC9227/9228 codecs
On FSC laptops, the sound gets muted gradually when the volume is chnaged.
This is due to the wrong volume-knob widget setup. The delta bit (bit 7)
shouldn't be set for these devices.
This patch adds a new quirk to set the value 0x7f to the widget 0x24
instead of 0xff.
Reference: Novell bnc#546006
http://bugzilla.novell.com/show_bug.cgi?id=546006
- ALSA: hda - Analog Devices AD1984A add HP Touchsmart model
Reference: ALSA bug #0004614
https://bugtrack.alsa-project.org/alsa-bug/view.php?id=4614
port-A (0x11) - front hp-out
port-D (0x12) - rear line out
port-E (0x1c) - front mic-in
port-F (0x16) - Internal speakers
digital-mic (0x17) - Internal mic
init verbs, mixers, jack sensing and PCI_QUIRK to support this hardware
- trivial: fix typos "man[ae]g?ment" -> "management"
- ALSA: dummy - Fake buffer allocations
Instead of allocating the real buffers, use a fake buffer and ignore
read/write in the dummy driver so that we can save the resources.
For mmap, a single page (unique to the direction, though) is reused
to all buffers.
When the app requires to read/write the real buffers, pass fake_buffer=0
module option at loading time. This will get back to the old behavior.
- ALSA: hda/realtek: Added support for CLEVO M540R subsystem, 6 channel + digital
The model clevo-m540r was created with 6-channel and digital support. All
functions verified except spdif. Tested with a VIT D2000 laptop which has:
[lspci extract]
Audio device [0403]: Intel Corporation 82801H (ICH8 Family) HD Audio
Controller [8086:284b] (rev 03)
Subsystem: CLEVO/KAPOK Computer Device [1558:5409]
[/proc/asound/card0/codec\#0 header]
Codec: Realtek ALC883
Address: 0
Function Id: 0x1
Vendor Id: 0x10ec0883
Subsystem Id: 0x15585409
Revision Id: 0x100002
[Added a comment about HP mute and the model description by tiwai]
- ALSA: dummy - Add more description
- ALSA: hda - Add support of Alienware M17x laptop
Added the quirk for Alienware M17x with IDT 92HD73* codec chip.
It has two HP and one line-out jack, one mic jack, a built-in
speaker and a built-in mic.

Dreamcast AICA sound (pcm) driver

- ALSA: snd-aica: declare MODULE_FIRMWARE

ES18xx driver

- ALSA: es18xx: code improvements
1. Set the third argument of the snd_device_new to not NULL, so there is
no warning about bug during chip detection. The third argument is not
used in this driver. It was changed in my previous patch.
2. Remove the fm_port and mpu_port fields from the snd_es18xx structure.
They can be converted to function arguments.
3. Remove the dmaN_size fields from the snd_es18xx structure. These
values are used only in pointer functions and can be easily calculated.
4. Remove the ctrl_lock spinlock which is used only in one read function
which is called once during chip initialization. There are many
writes to the same register and they are not protected on purpose
(see the comment ina the snd_es18xx_config_write()).
5. Use the first part of the text5Sources string table as the text4Soruces
table (they are the same).
6. Merge the same cases for the ES1887 and ES1888 when setting chip's caps.
7. Move the snd_es18xx_reset() to __devinit section.
- ALSA: es18xx: remove snd_audiodrive structure
Remove intermediate snd_audiodrive structure between
snd_card structure and snd_es18xx. This reduces size of
source code and binary driver.
- ALSA: es18xx: remove snd_card pointer from snd_es18xx structure
The snd_card pointer is redundant and code can be easily
changed to work without it.

Echoaudio driver

- ALSA: echoaudio - Re-enable the line-out control for the Mia card
Mia has an undocumented line-out control, and it has to be exposed.

Edirol UA-101 driver

- add compilation stub for ua101.c
- sound: add Edirol UA-101 support
Add experimental support for the Edirol UA-101 audio/MIDI interface.

FM801 driver

- sound: snd-fm801: autodetect SF64-PCR (tuner-only) card
When primary AC97 is not found, don't fail with tons of AC97 errors.
Assume that the card is SF64-PCR (tuner-only).
This makes the SF64-PCR radio card work "out of the box".
Also fixes a bug that can cause an oops here:
        if (tea575x_tuner > 0 && (tea575x_tuner & 0x000f) < 4) {
when tea575x_tuner == 16, it passes this check and causes problems
a couple lines below:
        chip->tea.ops = &snd_fm801_tea_ops[(tea575x_tuner & 0x000f) - 1];
Tested with SF64-PCR, but I don't have any of those sound or sound+radio cards
to test if I didn't break anything.

GUS Library

- ALSA: sound/isa/gus: Correct code taking the size of a pointer
sizeof(share_id) is just the size of the pointer. On the other hand,
block->share_id is an array, so its size seems more appropriate.
A simplified version of the semantic patch that finds this problem is as
follows: (http://coccinelle.lip6.fr/)
// <smpl>
@@
expression *x;
expression f;
type T;
@@
*f(...,(T)x,...)
// </smpl>

Generic drivers

- ALSA: rename "PC Speaker" and "PC Beep" controls to "Beep"
To avoid confusion in control names for the standard analog PC Beep generator
using a small Internal PC Speaker, rename all related "PC Speaker" and "PC
Beep" controls to "Beep" only. This name is more universal and can be also
used on more platforms without confusion.
Introduce also "Internal Speaker" in ControlNames.txt for systems with
full-featured build-in internal speaker.
- ALSA: snd-pcsp: add nopcm mode
Currently, if the high-res timers are unavailable, snd-pcsp does not
initialize. People who choose it over pcspkr, loose their console beeps
in that case and get annoyed.
With this patch, the console beeps remain regardless of the high-res
timers. Additionally, the "nopcm" modparam is added to forcibly
disable the PCM capabilities of the driver.
- ALSA: dummy - Fix descriptions of pcm_substreams parameter
Now up to 128 substreams are supported.
Reported-by: Adrian Bridgett <adrian@smop.co.uk>
- ALSA: sound: Move dereference after NULL test and drop unnecessary NULL tests
In pcm.c, if the NULL test on pcm is needed, then the dereference should be
after the NULL test.
In dummy.c and ali5451.c, the context of the calls to
snd_card_dummy_new_mixer and snd_ali_free_voice show that dummy and pvoice,
respectively cannot be NULL.
A simplified version of the semantic match that detects this problem is as
follows (http://coccinelle.lip6.fr/):
// <smpl>
@match exists@
expression x, E;
identifier fld;
@@
* x->fld
... when != \(x = E\|&x\)
* x == NULL
// </smpl>
- ALSA: pcsp - Fix nforce workaround
The attached patch fixes the problems introduced in this commit:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=eea0579fc85e64e9f05361d5aacf496fe7a151aa
- Fix nForce workaround by honouring the pointer_update var
- Revert "ns" to u64, as per the hrtimer API
- Revert to the zero-delay timer startup, since I can't reproduce any
problem with it (please, give me the hint!)
- ALSA: dummy - Increase MAX_PCM_SUBSTREAMS to 128
Increase the limit of PCM substreams to 128. The default value is
unchanged; only the max accept value is increased.
- ALSA: dummy - Add debug proc file
Added the debug proc file to see or change the snd_pcm_hardware fields
to emulate. The parameters can be changed by writing to a proc file like:
# echo periods_min 4 > /proc/asound/card1/dummy_pcm
- ALSA: dummy - Fake buffer allocations
Instead of allocating the real buffers, use a fake buffer and ignore
read/write in the dummy driver so that we can save the resources.
For mmap, a single page (unique to the direction, though) is reused
to all buffers.
When the app requires to read/write the real buffers, pass fake_buffer=0
module option at loading time. This will get back to the old behavior.
- ALSA: dummy - Fix the timer calculation in systimer mode
Fix the expire-time calculation in the systimer mode when the buffer
size isn't aligned to the period size.
- ALSA: dummy - Better jiffies handling
In the system-timer mode, snd-dummy driver issues each tick to update
the position. This is highly inefficient and even inaccurate if the
timer can't be triggered at each tick.
Now rewritten to wake up only at the period boundary. The position
is calculated from the current jiffies.
- ALSA: dummy - Support high-res timer mode
Allow snd-dummy driver to use high-res timer as its timing source
instead of the system timer. The new module option "hrtimer" is added
to turn on/off the high-res timer support. It can be switched even
dynamically via sysfs.

HDA Codec driver

- Add workaround for dmi functions
Add a wrapper file for linux/dmi.h for older kernels.
Also, more workarounds for dmi_find_device() in pci/hda/patch_sigmatel.c.
- ALSA: hda - simplify usage of HDA_SUBDEV_AMP_FLAG
The HDA_SUBDEV_NID_FLAG is duplicate for amplifier control elements. Move
get_amp_nid_() call to the snd_hda_ctl_add() function.
- ALSA: hda - introduce HDA_SUBDEV_AMP_FLAG (ControlAmp in proc)
The purpose of this changeset is to show information about amplifier
setting in the codec proc file. Something like:
Control: name="Front Playback Volume", index=0, device=0
ControlAmp: chs=3, dir=Out, idx=0, ofs=0
Control: name="Front Playback Switch", index=0, device=0
ControlAmp: chs=3, dir=In, idx=2, ofs=0
- ALSA: hda - add more NID->Control mapping
This set of changes add missing NID values to some static control
elemenents. Also, it handles all "Capture Source" or "Input Source"
controls.
- ALSA: hda: Fix max PCM level to 0 dB for AD1981_HP
BugLink: https://bugs.launchpad.net/bugs/461062
The original reporter states that PCM maxes at +12 dB and results in
very bad distortion. Cap PCM at 0 dB to resolve this symptom.
- ALSA: hda: Use ALC260_WILL quirk for another Acer model (0x1025007f)
BugLink: https://bugs.launchpad.net/bugs/418627
The original reporter states that this quirk is necessary to obtain
reasonable gain for playback. Without it, sound is inaudible. Tested
with playback (spkr and hp) and capture.
- ALSA: hda - Overwrite pin config on intel DG45ID board.
The pin config provided by BIOS have some problems:
0x0221401f: [Jack] HP Out at Ext Front <-- other association and sequence
0x02a19020: [Jack] Mic at Ext Front <-- other association
0x01113014: [Jack] Speaker at Ext Rear <-- line out (not speaker)
0x01114010: [Jack] Speaker at Ext Rear <-- line out
0x01a19030: [Jack] Mic at Ext Rear <-- other association
0x01111012: [Jack] Speaker at Ext Rear <-- line out
0x01116011: [Jack] Speaker at Ext Rear <-- line out
0x40f000f0: [N/A] Other at Ext N/A
0x40f000f0: [N/A] Other at Ext N/A
0x40f000f0: [N/A] Other at Ext N/A
0x40f000f0: [N/A] Other at Ext N/A
0x40f000f0: [N/A] Other at Ext N/A
0x01451140: [Jack] SPDIF Out at Ext Rear
0x40f000f0: [N/A] Other at Ext N/A
just overwrite it.
- intelhdmi - dont power off HDA link
For codecs without EPSS support (G45/IbexPeak), the hotplug event will
be lost if the HDA is powered off during the time. After that the pin
presence detection verb returns inaccurate info.
So always power-on HDA link for !EPSS codecs.
KarL offers the fact and Takashi recommends to flag hda_bus. Thanks!
- ALSA: intelhdmi - add channel mapping for typical configurations
IbexPeak is the first Intel HDMI audio codec to support channel mapping.
Currently the outstanding problem is, the HDMI channel order do not
agree with that of ALSA. This patch presents workaround for some
typical use cases. It gives priority to the typical ALSA surround
configurations, and defines channel mapping for them.
We may need better kernel+userspace interactive channel mapping scheme.
For example, in current scheme if user plays with the surround50 device,
the kernel is unaware of this and will still select the surround41
channel allocation and channel mapping..
Thanks to Marcin for offering good tips!
- ALSA: intelhdmi - channel mapping applies to Pin
HDA036-A specifies that the Audio Sample Packet (ASP) Channel Mapping
verbs apply to Digital Display Pin Complex instead of Converter.
With this fix, channel mapping is working as expected for IbexPeak.
Thanks to Marcin for pointing this out!
- ALSA: intelhdmi - accept DisplayPort pin
HDA036 spec states:
DP (Display Port) indicates whether the Pin Complex Widget supports
connection to a Display Port sink. Supported if set to 1. Note that
it is possible for the pin widget to support more than one digital
display connection type, e.g. HDMI and DP bit are both set to 1.
Also export the DP pin cap in procfs.
- ALSA: hda - show HBR(High Bit Rate) pin cap in procfs
Note that the HBR capability only applies to HDMI pin.
- ALSA: hda - Fix LED GPIO setup for HP laptops with IDT codecs
This patch fixes an error in processing of the HP BIOS configuration to enable
GPIO based mute LED indicator control. That error causes driver to enable
such control on all HP systems with the 92HD75 IDT codecs and results in
unnecessary toggling of the GPIO on mute control manipulation.
It also adds support of the future HP BIOS configuration extension for the
named control. New configuration string has a format HP_Mute_LED_P_G
where P can be 0 or 1 and defines mute LED GPIO control state (low/high)
that corresponds to the NOT muted state of the master volume
and G is the index of the GPIO to use (0..9)
Lastly, it adds more systems to the support of the audio implementation
as found on HP B-series systems
- ALSA: hda/realtek: quirk for D945GCLF2 mainboard
Quirk for the ALC662 found on the Intel D945GCLF2 (and possibly other)
mainboards.
- ALSA: hda - Generalize EAPD inversion check in patch_analog.c
Add a flag to spec field so that the EAPD inversion can be checked
outside the relevant control callbacks.
- tree-wide: fix typos "selct" + "slect" -> "select"
This patch was generated by
git grep -E -i -l 's(le|el)ct' | xargs -r perl -p -i -e 's/([Ss])(le|el)ct/$1elect/
with only skipping net/netfilter/xt_SECMARK.c and
include/linux/netfilter/xt_SECMARK.h which have a struct member called
selctx.
- ALSA: hda - Exclude unusable ADCs for ALC88x
On Realtek codecs, a digital mic pin is connected often only to a single
ADC. But the parser tries to set up all ADCs no matter whether the
digital mic is available, and results in non-selectable input source.
This patch adds a check of input-source availability of each ADC, and
excludes ones that don't support all input sources.
Reference: Novell bnc#561235
http://bugzilla.novell.com/show_bug.cgi?id=561235
- ALSA: hda - Add missing Line-Out and PCM switches as slave
Realtek codecs may have "PCM" and "Line-Out" playback switches, and
they can be slaves for vmaster.
- ALSA: hda - iMac 9,1 sound patch.
This is an updated patch for the Apple iMac 9,1 model to add sound.
Original patch posted here:
http://article.gmane.org/gmane.linux.alsa.devel/61361/match=
I have been using this patch for a while now
and have to say it works vary well, except for a few minor
things:
With the iMac 24-inch 3.06GHz Intel Core 2 Duo
everything seems to be working as it should,
although I have not looked into the microphone
(never really use one, nor have any apps to test,
my guess is it doesn't work, or I never figured out how
to get it to work).
With the iMac 24-inch 2.66GHz Intel Core 2 Duo
everything is the same as with the above machine
except I'm hearing a light scratchy/distortion noise
come out of the speakers when using headphones(above machine
does not do this).
Other than that the sound level is great(especially with good Dj headphones).
Tested-by: Justin P. Mattock <justinmattock@gmail.com>
- ALSA: hda - Fix memory leaks in the previous patch
The previous hack for replacing the codec name give memory leaks at
error paths. This patch fixes them.
- ALSA: hda - Add ALC661/259, ALC892/888VD support
Fixed List:
1. Add alc_read_coef_idx function
2. Add ALC661 ALC259
3. Add ALC892 ALC888VD
- ALSA: hda - Add a pin-fix for FSC Amilo Pi1505
FSC Amilo Pi 1505 has a buggy BIOS and doesn't set up the HP and
speaker pins properly. Add the pinfix entry for that.
Reference: Novell bnc#557403
https://bugzilla.novell.com/show_bug.cgi?id=557403
- ALSA: hda - Fix Cxt5047 test mode
The NID 0x1a of Conexant 5047 chip is a mic boost volume only with
the output amp unlike 5045 chip.
- ALSA: hda - Don't trigger pin-sense for STAC/IDT codecs
STAC/IDT codecs seem to behave weird when SET_PIN_SENSE verb is issued
before reading the jack-detection although the TRIG_REQ pin capability
is given by the hardware.
Since snd_hda_jack_detect() issues the SET_PIN_SENSE verb simply judging
from the pincap, we have to revert the change in the commit
d56757abc11a21996d9839c0d4e3b2c3666cd318
ALSA: hda - Replace the rest of jack-detections with snd_hda_jack_detect()
to plain GET_PIN_SENSE verb without triggering.
Reported-by: Jiri Slaby <jirislaby@gmail.com>
- ALSA: hda: Fix max PCM level to 0 dB for Fujitsu-Siemens laptops using CX20549 (Venice)
BugLink: https://bugtrack.alsa-project.org/alsa-bug/view.php?id=4792
Cristian reported that these models have really bad sound above 6 dB
and proposed the original patch. I've updated the comment to reflect
this change.
Reported-by: Cristian Klein
- ALSA: hda - Make Dell Vostro 1015n mic and speaker switching work
Dell Vostro 1015n uses Conexant CX20583-10Z (0x14f1:5067). Patch is
based on "olpc-xo-1_5" branch. Dell uses digital mic.
- sound: Revert "ALSA: hda - Change quirk for Acer Aspire 5930G"
This reverts commit f2624791a0c2a2d7664b12d75ca327917141fd3b.
Łukasz Wojniłowicz reported that the change causes both internal and
external mics not working any more. The headphone jacking issue was
fixed by his previous patch, it's better to revert to acer-aspire-4930g
model.
Reported-by: Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
- ALSA: hda - 4930g mute lfe and side when pluging in headphones
Fixes first issue from comment 0021423 in bug 0004317 for Acer Aspire 5930g
- ALSA: hda - Change quirk for Acer Aspire 5930G
Change the quirk for Acer Aspire 5930G from model=acer-aspire-4930g to
model=acer-aspre-6530g. The tuba bass gets muted along with the other
built-in speakers upon headphones insertion, the internal mic works
perfectly etc.
Reported-by: Claudio Viano <claudio.viano@gmail.com>
- ALSA: hda - Fix mute-LED sync on HP laptops with IDT92HD83xxx codecs
The mute-LED isn't synchronized with the actual mute state on some
HP laptops with IDT 92HD83xxx codecs. A similar hack using
check_power_status callback is added for this codec, too.
- ALSA: hda - Fix detection of dual headphones
The dual-headphone mode with STAC/IDT codecs is useful only for machines
that have two (or more) built-in headphones.
But, some HP laptops give multiple headphone pin configs, one for the
built-in and another for the separate (likely a docking station) one.
This results in a missing speaker volume control.
This patch adds more check for the dual-headphone mode to avoid this
problem.
- ALSA: hda - Replace the rest of jack-detections with snd_hda_jack_detect()
- ALSA: hda - show EPSS capability in proc
- ALSA: intelhdmi - sticky channel count
Don't change channel count if not necessary.
- ALSA: intelhdmi - sticky stream id and format
We tracked down the first-0.5s-hdmi-audio-samples-lost problem to the
AC_VERB_SET_CHANNEL_STREAMID command. It is suspected that many HDMI
sinks need some time to adapt to the new state.
The workaround is to avoid changing stream id/format whenever possible.
Proposed by David.
- ALSA: intelhdmi - sticky infoframe
Remember the active infoframe, so as to avoid stop/restart infoframe
transmission when switching between audio clips of the same format.
Proposed by Shang and David.
CC: Shane W <shane-alsa@csy.ca>
CC: David Härdeman <david@hardeman.nu>
- ALSA: intelhdmi - separate out infoframe checksum routine
And make it right when called for more than one times.
- ALSA: intelhdmi - probe for monitor/eld presence at module init time
This avoids lost of presence info on module reloading.
The presence info used to be only updated at the (rare) hotplug events.
Proposed by David, thanks!
CC: David Härdeman <david@hardeman.nu>
- ALSA: hda - introduce snd_hda_jack_detect() and snd_hda_pin_sense()
This helps merge duplicate code.
v2: add snd_hda_jack_detect() and comments recommended by Takashi.
- ALSA: intelhdmi - export monitor-presence and ELD-valid status
- ALSA: intelhdmi - fix channel mapping slot mask
- ALSA: intelhdmi - fix audio infoframe fill size
Reported-by: David Härdeman <david@hardeman.nu>
- ALSA: hda - Disable default quirk for Sony VAIO with ALC262 codec
The ALC262 has a quirk entry matching with all Sony Vaio laptops
to use model=sony-assamd as default. But, model=auto works much better
for new models in the recent driver versions, thus it's safer to disable
that default quirk entry.
- ALSA: hda - Fix build errors with CONFIG_SND_HDA_INPUT_BEEP=n
Disable beep-related codes when CONFIG_SND_HDA_INPUT_BEEP isn't set.
- ALSA: hda - Update / add kerneldoc comments to exported functions
- ALSA: hda - Fix quirk for VAIO type G
Vaio type G laptop doesn't work with the current quirk setup.
After some tests, it turned out that it should be model=auto as default.
Reported-by: Mattia Dongili <malattia@linux.it>
- ALSA: hda - Get rid of magic digits for subdev hack
Define a proper const for a magic 31bit flag for subdev / NID setup
with a brief comment.
- ALSA: hda - Dell Studio 1557 hd-audio quirk
Add the Dell Studio 15 (model 1557, Core i7) laptop to the hd-audio
quirk list, enabling audio.
Cc: <stable@kernel.org>
- sound: sound/pci/hda/patch_via.c: work around gcc-4.0.2 ICE
sound/pci/hda/patch_via.c: In function 'via_hp_bind_automute':
sound/pci/hda/patch_via.c:2074: internal compiler error: in do_SUBST, at combine.c:462
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
[added a comment by tiwai]
- ALSA: hda - Add another Nvidia HDMI codec id (10de:0005)
Found on Nvidia 9800M GTS.
Reported-by: Chris Balcum <sherl0k@gmail.com>
- ALSA: hda - add beep_mode module parameter
The beep_mode parameter for snd-hda-intel module allows to choose among
different digital beep device registation to the input layer.
0 = do not register to the input layer
1 = register to the input layer all time
2 = use "Beep Switch" control exported to user space mixer applications
Also, introduce CONFIG_SND_HDA_INPUT_BEEP_MODE for default value.
- ALSA: hda - proc - add support for dynamic controls to mixer<->NID mapping
This patch adds support for dynamically created controls to proc codec file
(Control: lines).
- ALSA: hda - proc - introduce Control: lines to show mixer<->NID assignment
This is an initial patch to show universal control<->NID assigment in
proc codec file. The change helps to debug codec related problems.
- ALSA: hda - move snd_hda_pcm_type_name from hda_codec.h to hda_local.h
The snd_hda_pcm_type_name array is local only.
- ALSA: hda: Use model=mb5 for MacBookPro 5,2
BugLink: https://bugs.launchpad.net/bugs/462098
Until we can look closer at the verbs, let's use ALC885_MB5 for
codec SSID 0x106b4600 to enable playback and capture for MacBookPro
5,2s.
- ALSA: hda - Add power on/off counter
Added the power on/off counter and expose via sysfs files.
The sysfs files, power_on_acct and power_off_acct, are created under
each codec hwdep sysfs directory (e.g. /sys/class/sound/hwC0D0).
The files show the msec length of the codec power-on and power-off,
respectively.
- ALSA: hda - Add missing export for snd_hda_bus_reboot_notify
... forgot to add for modules.
- ALSA: hda - Add reboot notifier to each codec
Add reboot notifier to each codec so that it can do some workarounds
needed for reboot.
So far, patch_sigmatel.c calls its shutup routine for avoiding noises
at reboot on some HP machines.
References: Novell bnc#544779
http://bugzilla.novell.com/show_bug.cgi?id=544779
- ALSA: hda - possible read past array alc88[02]_parse_auto_config()
The test of index `i' is after the read - too late - and
unsafe: if snd_hda_get_connections() fails in the last
iteration a read beyond the array is possible.
- ALSA: hda - Avoid quirk for HP dc5750
The present quirk for HP dc5750 seems broken and maps the pins wrongly.
Since the auto-parser works well for this device, set the default entry
to use model=auto.
Reference: Novell bnc#552154
https://bugzilla.novell.com/show_bug.cgi?id=552154
- ALSA: hda - proc - show which I/O NID is associated to PCM device
Output something like:
Node 0x02 [Audio Output] wcaps 0x11: Stereo
Device: name="ALC888 Analog", type="Audio", device=0, substream=0
Converter: stream=0, channel=0
...
- ALSA: hda - Tweak OLPC XO-1.5 microphone bias
Our contacts at Conexant suggested that we reduce the external
microphone bias to 50% in order to center the input signal with
the DC input range of the codec. This is because the microphone
port is DC coupled for potential use with sensors.
- ALSA: hda: Use model=auto quirk for Sony VAIO VGN-FW170J using ALC262
BugLink: https://bugs.launchpad.net/bugs/478309
The internal microphone on this VAIO model does not work unless the
"auto" quirk is used.
- ALSA: hda - Reset pins of IDT/STAC codecs at free
Some laptops cause annoying clicks or noises at shutdown/reboot since
the speaker pin is set still high. Apply the same procedure used for
the suspend to avoid such clicks/noises for freeing the codec, too.
- ALSA: hda, move hp_bseries_system
Function hp_bseries_system() is always used, outside of
CONFIG_ boundaries/controls, so move it.
sound/pci/hda/patch_sigmatel.c:5458: error: implicit declaration of function 'hp_bseries_system'
- ALSA: hda - Add OLPC XO-1.5 PCI ID
The XO-1.5 laptop now has a unique subvendor/subproduct ID, which can
be used to automatically select the correct CXT5066 configuration.
- ALSA: hda - Enable GPIO control for mute LED on HP systems
This patch enables GPIO to control mute LED indicator on the HP systems
with the special string in BIOS and applies it with the correct polarity on
HP B-series systems.
It also restores configuration of the pin intended as the second Headphone
on HP B-series systems but configured as something else in the BIOS to
pass MS DTM.
- ALSA: hda - Add a proper ifdef to a debug code
Added a proper ifdef CONFIG_SND_DEBUG_VERBOSE to avoid a compile warning:
sound/pci/hda/patch_intelhdmi.c:406: warning: ‘hdmi_get_channel_count’ defined but not used
- ALSA: VIA HDA: Add support for VT1818S.
Add support for VT1818S codec, which is similiar with VT1708S.
- ALSA: hda - remove static intelhdmi configurations
- ALSA: hda - auto parse intelhdmi cvt/pin configurations
- ALSA: hda - get intelhdmi max channels from widget caps
- ALSA: hda - vectorize intelhdmi
The Intel IbexPeak HDMI codec supports 2 converters and 3 pins,
which requires converting the cvt_nid/pin_nid to arrays.
The active pin number (the one connected with a live HDMI monitor/sink)
will be dynamically identified on hotplug events.
It exports two HDMI devices, so that user space can choose the A/V pipe
for sending the audio samples.
It's still undefined behavior when there are two active monitors
connected and routed to the same audio converter.
- ALSA: hda - reorder intelhdmi prepare/cleanup callbacks
No behavior change.
- ALSA: hda - use pcm prepare/cleanup callbacks for intelhdmi
Remove pcm callbacks open/close in favor of the prepare/cleanup.
- ALSA: hda - remove intelhdmi dependency on multiout
We'll be managing multiple HDMI audio sources/sinks on our own.
So remove multiout dependency from intelhdmi.
- ALSA: hda - convert intelhdmi global references to local parameters
No behavior change.
- ALSA: hda - allow up to 4 HDMI devices
The new Intel HDMI codec supports 2 independant HDMI/DisplayPort pipes.
We'll be exporting them as 2 pcm devices. So bump up the allowed number
of HDMI devices.
- ALSA: hda - vectorize get_empty_pcm_device()
This unifies the code and data structure,
and makes it easy to add more HDMI devices.
- ALSA: hda - select IbexPeak handler for Calpella
An earlier patch merely adds id for 0x80862804.
It has 2/3 cvt/pin nodes and shall be tied to the IbexPeak handler.
- ALSA: hda - Don't check invalid HP pin
alc_automute_pin() might be called even if any HP pin is defined, and
it will result in verbs with NID=0.
This patch adds a check for the validity of HP widget before issuing
any verbs.
- ALSA: hda: Use quirk mask for Dell Inspiron Mini9/Vostro A90 using ALC268
BugLink: https://bugs.launchpad.net/bugs/368629
We should use a quirk mask for these Dell Inspiron Mini9s and Vostro
A90s, as the model=dell quirk appears to enable audio on them.
- hda_intel: Digital PC Beep - change behaviour for input layer
Original implementation was keeping registered input device for SND_BEEP
and SND_TONE events all time. This patch changes this behaviour:
If digital PC Beep is turned off using universal control switch,
the input device is unregistered.
Explanation: The kd_mksound() send SND_BEEP and SND_TONE only to last
registered device acceping those events. It means that the HDA Intel
audio driver blocks also the internal PC Speaker device (pcspkr.c
driver) even if the HDA Beep is muted. The user can easy disable
all beeps using 'setterm -blength 0' or 'xset b off' command.
- ALSA: hda - Fix capture source checks for ALC662/663 codecs
The ALC662/663 parser calls wrongly alc880_auto_create_input_ctls()
to check the capture source selections. This should be alc882, instead.
Reference: Novell bnc#546918
http://bugzilla.novell.com/show_bug.cgi?id=546918
- ALSA: HDA VIA: Remove 48k sample rate limit for S/PDIF
48 kHz limit is for slightly better stability, and sample rates other
than 48k (like 96k/192k) are for better sound quality.
We choose better quality, so remove the 48k limit.
- sound: use semicolons to end statements
Fixes:
sound/pci/hda/patch_via.c: In function 'patch_vt1718S':
sound/pci/hda/patch_via.c:4951: error: expected expression before 'return'
sound/pci/hda/patch_via.c: In function 'patch_vt1716S':
sound/pci/hda/patch_via.c:5441: error: expected expression before 'return'
sound/pci/hda/patch_via.c: In function 'patch_vt2002P':
sound/pci/hda/patch_via.c:5794: error: expected expression before 'return'
sound/pci/hda/patch_via.c: In function 'patch_vt1812':
sound/pci/hda/patch_via.c:6148: error: expected expression before 'return'
- ALSA: HDA VIA: Only cosmetic changes
- ALSA: HDA VIA: comments: update copyright, changeset, etc.
- ALSA: HDA VIA: Change PW4 connect select default to to MW0.
According to customer request, hp should be default to redirected mode,
i.e. PW4 connect select default to to MW0.
- ALSA: HDA VIA: rename vt1708_control_templates[].
To via_control_templates[].
- ALSA: HDA VIA: Add VT1812 support.
- ALSA: HDA VIA: Add VT2002P support.
- ALSA: HDA VIA: Add VT1716S support.
- ALSA: HDA VIA: Add VT1828S and VT2020 support.
- ALSA: HDA VIA: Add VT1718S support.
- ALSA: HDA VIA: Move backdoor verbs to vt17xx_volume_init_verb
As init verbs, vt17xx_volume_init_verb is a better place to hold them.
- ALSA: HDA VIA: Replace MIC_BOOST_VOLUME.
With snd_hda_override_amp_caps.
- ALSA: HDA VIA: Modify vt1709_auto_create_multi_out_ctls.
Rewrite nid_vol/mute assignment for clearity, and check line connection
before adding control for it.
- ALSA: HDA VIA: Modify vt1708_auto_create_multi_out_ctls.
Rewrite nid_vol/mute assignment for clearity, and check line connection
before adding control for it.
- ALSA: HDA VIA: Replace via_playback_pcm_prepare/cleanup
Replaced with via_playback_multi_pcm_prepare/cleanup to support
multi-stream operations
- ALSA: HDA VIA: Modify vt1708_set_pinconfig_connect function.
like seqassoc 0xff, seqassoc 0xf0 of vt1708 should override Port
Connectivity field into 'AC_JACK_PORT_COMPLEX'
- ALSA: HDA VIA: Add Jack detect feature for VT1708.
VT1708 does not support unsolicited response, but we need hp detect to
automute speaker. Implemented in workqueue.
- ALSA: HDA VIA: Refresh front playback mute in via_hp_automute.
- ALSA: HDA VIA: Add VIA_JACK_EVENT process in via_unsol_event.
- ALSA: HDA VIA: When changing input source, update power state.
- ALSA: HDA VIA: Add smart5.1 function.
Smart 5.1 is for 3-jacks model, to reuse input pins as outputs.
While off, they act as "line out" / "line in" / "mic in".
While on, they acts as "line out" / "back left/right" / "center/lfe".
- ALSA: HDA VIA: Rewrite via_independent_hp_put
Use hp_independent_mode_index to store hp index, and simplify function
via_independent_hp_put with it.
- ALSA: HDA VIA: Change VT1708S & VT1702 hp mode controls
For VT1708S and VT1702, deactivate "Headphone Playback Volume" and
"Headphone Playback Mute" control if "Independent HP" mode is OFF.
and rename VT1702 "Independent HP" text.
- ALSA: HDA VIA: Remove unused argument of via_new_analog_input
- ALSA: HDA VIA: Add low current mode for power saving.
For VT1708B, VT1708S and VT1702, enter low current mode if no analog
stream is opened and all aa path mute.
- sound: ALSA HDA VIA: Add VIA_CTL_WIDGET_ANALOG_MUTE control type
Enter low power state if AA-Path volume is muted.
- ALSA: HDA VIA: Limit VT1702 AA-Path max volume
according to customer request, VT1702 AA-Path max volume (12 dB) is too
high, so limit to 0 dB.
- ALSA: HDA VIA: Add VT1708B-CE codec support.
- ALSA: HDA VIA: Change get_codec_type argument to hda_codec type
- ALSA: HDA VIA: Remove unused IS_VT17xx_VENDORID macro
IS_VT17*_VENDORID macros are used nowhere, so clean them up.
- ALSA: hda - Clean up name string creation in patch_realtek.c
Use a common helper to create playback controls.
This gives less chance of typos.
- ALSA: hda - Allow all formats as default for Nvidia HDMI
In the commit f0613d5752d8f7d1d02e6d40947f38877fdf9c90
ALSA: hda - Add full rates/formats support for Nvidia HDMI
the flag LIMITIED_RATE_FMT_SUPPORT was set as default, as I forgot
to clear before commit.
Let's enable all formats/rates as default.
- ALSA: hda - Fix volume-knob setup for Dell laptops with STAC9228
The volume-knob widget needs to be set with 0x7f instead of 0xff
for Dell laptops with STAC9228 codec, too, like the previous commit.
Reference: Novell bnc#545013
http://bugzilla.novell.com/show_bug.cgi?id=545013
- ALSA: hda - Fix mute sound with STAC9227/9228 codecs
On FSC laptops, the sound gets muted gradually when the volume is chnaged.
This is due to the wrong volume-knob widget setup. The delta bit (bit 7)
shouldn't be set for these devices.
This patch adds a new quirk to set the value 0x7f to the widget 0x24
instead of 0xff.
Reference: Novell bnc#546006
http://bugzilla.novell.com/show_bug.cgi?id=546006
- ALSA: hda - Fix overflow of spec->init_verbs in patch_realtek.c
ALC861-VD lenovo model causes overflow of spec->init_verbs entries due to
the recent changes. Simply increase the array size to avoid the overflow.
Reported-by: Luca Tettamanti <kronos.it@gmail.com>
- ALSA: hda - Add full rates/formats support for Nvidia HDMI
Allow Nvidia HDMI to support more possible sample rates and formats.
At best, the really supported rates and formats should be determined
together with the negotiation with the HDMI receiver, but it's currently
not implemented yet (Nvidia stuff seems incompatible with HDMI 1.3
standard in this regard). As a compromise, we enable all bits, assuming
that all recent devices do support such rates/formats.
Tested-by: Alan Alan <alanwww1@gmail.com>
- ALSA: hda - Fix yet another auto-mic bug in ALC268
Since patch_alc268() doesn't call set_capture_mixer() (due to its h/w
design different from other siblings), it needs to call fixup_automic_adc()
explicitly to set up the auto-mic routing. Otherwise the indices for
int/ext mics aren't set properly.
Reference: Novell bnc#544899
http://bugzilla.novell.com/show_bug.cgi?id=544899
- ALSA: hda - Don't pick up invalid HP pins in alc_subsystem_id()
alc_subsystem_id() tries to pick up a headphone pin if not configured,
but this caused side-effects as the problem in commit
15870f05e90a365f8022da416e713be0c5024e2f.
This patch fixes the driver behavior to pick up invalid HP pins; at least,
the pins that are listed as the primary outputs aren't taken any more.
- ALSA: hda - Add a workaround for ASUS A7K
ASUS A7K needs additional GPIO1 bit setup; it has to be cleared.
Added a new fixup hook for this laptop so that it works as is.
Refernece: Novell bnc#494309
http://bugzilla.novell.com/show_bug.cgi?id=494309
- ALSA: hda - Fix invalid initializations for ALC861 auto mode
The recent auto-parser doesn't work for machines with a single output
with ALC861, such as Toshiba laptops, because alc_subsystem_id() sets
the hp_pins[0] while it's listed in line_outs[0].
This ends up with the doubled initialization of the same mixer widget,
and it mutes the DAC route because hp_pins has no DAC assigned.
To fix this problem, just check spec->autocfg.hp_outs and speaker_outs
so that they are really detected pins.
Reference: Novell bnc#544161
http://bugzilla.novell.com/show_bug.cgi?id=544161
- ALSA: hda - Fix / improve ALC66x parser
The auto-parser for ALC662/663/272 codecs doesn't work properly when
a speaker is connected to mono NID 0x17, and doesn't handle the dynamic
DAC assignment properly.
This patch fixes the issues and also improves the assignment of DACs
so that HP and speakers can have independent volume controls.
- ALSA: hda - Fix digita/analog mic auto-switching with IDT codecs
When the auto-mic switching between an analog and a digital mic is
needed with IDT codecs, the current driver doesn't reset the connection
of the digital mux.
This patch fixes the behavior by checking both mux connections properly.
- ALSA: hda - Added quirk to enable sound on Toshiba NB200
Patch was tested on Toshiba NB200 and is found to enable sound.
Cc: stable@kernel.org
- ALSA: hda - Resurrect input-source mixer of ALC268 model=acer
In the commit fdbc66266c21976027938642f60e0f047149a61a, I mistakenly
replaced the capture mixer array for ALC268_ACER to nosrc version
although this should be kept to alt_mixer. Now fixed back.
- ALSA: hda - Analog Devices AD1984A add HP Touchsmart model
Reference: ALSA bug #0004614
https://bugtrack.alsa-project.org/alsa-bug/view.php?id=4614
port-A (0x11) - front hp-out
port-D (0x12) - rear line out
port-E (0x1c) - front mic-in
port-F (0x16) - Internal speakers
digital-mic (0x17) - Internal mic
init verbs, mixers, jack sensing and PCI_QUIRK to support this hardware
- ALSA: hda - CD-audio sound for hda-intel conexant benq laptop
After puting a cd-audio inside my laptop there was no sound out here,
so I decided to install alsa-driver with debug level and setup a
model=test, it didn't help, but then I look at source code and added
this few lines, now cd-audio is working both when playback/recording.
[Additional minor fixes of mixer element/item names by tiwai]
- ALSA: hda - Fix MSI GX620 mixer
The headphone and speaker mixer elements aren't properly set for
MSI GX620 with targa-8ch-dig quirk.
Also fixed the speaker volume control for other ALC883-targa quirks,
too.
- ALSA: hda - Fix Dell S14 pin setup
The pin setup for Dell S14 quirk is rather wrong for the latest driver.
Fixed pin 0x0a, 0x0b, 0x0d and 0x0f.
- ALSA: hda - Fix IDT92HD83* codec setup
Remove unnecessary (and buggy) init sequences left for IDT92HD83*
codecs in the previous fixes. The DACs are now dynamically connected,
thus shouldn't be set statically in init verbs. Also, the mono_nid
is detected dynamically, thus shouldn't be set staticaly, too.
- ALSA: hda - Add support for HP dv6
Add the quirk entry for HP dv6. Also add a workaround for the headphone
detection by setting hp_detect=1 beforehand. Without this, the driver
won't do auto-muting because BIOS doesn't give any HP pin but only a
line-out pin.
- ALSA: hda - Fix HP/line-out initialization with IDT/STAC codecs
It's possible that hp_detect is set even though no headphone pin is
detected. The driver issues, however, an unsol event only to hp_pins[0],
which can be invalid.
This patch adds the check of the valid pin to send an unsol event
at initialization and resume callbacks.
- ALSA: hda - Set default GPIO for IDT92HD71bxx
A smiliar fix for IDT 92HD71Bxx codecs like the previous commit for
other IDT/STAC codecs.
- ALSA: hda - Set default GPIO for STAC/IDT codecs
IDT92HD73xx and STAC927x codecs use GPIO0 bit as EAPD on many machines.
However, currently we don't set it unless the model is specified just
for safety reason. But, most machines do need this bit, so this safety
handling is rather annoying.
This patch enables GPIO0 setup as default for them. Many HP / Dell
laptops should work even without model override with this change.
- ALSA: hda - Add missing model=auto entry for ALC269
- ALSA: hda - Use auto model for HP laptops with ALC268 codec
The HP laptops with ALC268 codec seem working better with model=auto
than model=toshiba; e.g. the auto model fixes missing digital outputs.
Let's fix quirk entry to choose auto model explicitly.
Tested-by: Jens Jorgensen <jbj1@ultraemail.net>
- ALSA: hda/realtek: Added support for CLEVO M540R subsystem, 6 channel + digital
The model clevo-m540r was created with 6-channel and digital support. All
functions verified except spdif. Tested with a VIT D2000 laptop which has:
[lspci extract]
Audio device [0403]: Intel Corporation 82801H (ICH8 Family) HD Audio
Controller [8086:284b] (rev 03)
Subsystem: CLEVO/KAPOK Computer Device [1558:5409]
[/proc/asound/card0/codec\#0 header]
Codec: Realtek ALC883
Address: 0
Function Id: 0x1
Vendor Id: 0x10ec0883
Subsystem Id: 0x15585409
Revision Id: 0x100002
[Added a comment about HP mute and the model description by tiwai]
- ALSA: hda - Add support of Alienware M17x laptop
Added the quirk for Alienware M17x with IDT 92HD73* codec chip.
It has two HP and one line-out jack, one mic jack, a built-in
speaker and a built-in mic.
- ALSA: hda - Remove dead codes from patch_sigmatel.c
Due to the previous fix of input source for IDT92HD73xx, the amp mux
and amp vol stuff became unused. Let's rip off dead codes.
- ALSA: hda - Fix input source selection of IDT92HD73xx
Fix the mux_nids to select directly the input source instead of mux
mixers so that it works with the current mux enum handler for IDT
92HD73xx codecs.
Also, clean up useless / unnecessary mixer controls and init verbs.
- ALSA: hda - Fix obsolete CONFIG_SND_DEBUG_DETECT
Fix the old dead CONFIG_SND_DEBUG_DETECT to CONFIG_SND_DEBUG_VERBOSE.
- ALSA: hda - Unmute docking line-out as default with AD1984A codec
Unmute the docking-station line-out as default on machines with
AD1984A codec chip. It can be still muted via "Dock" mixer switch.
- ALSA: hda - Add another entry for Nvidia HDMI device
Added another entry for Nvidia HDMI device (10de:0003).
Reference: kernel bug#14097
http://bugzilla.kernel.org/show_bug.cgi?id=14097
- ALSA: hda - Add missing GPIO initialization for AD1984A laptop model
A similar initialization of GPIO1 pin like mobile model is needed
for laptop model, too.
- ALSA: hda - Add support of docking auto-mute/mic for AD1984A laptop model
Add the support of automatic mute and mic-switching of the docking
station HP and mic plugs for AD1984A laptop model for some HP machines.
- ALSA: hda - Fix ALC268/ALC269 headphone pint routing
Fix the headphone pin routing of ALC268/ALC269 codecs. Using alc882
routine doesn't work because alc268/alc269 parser assumes the
independent DACs for both HP and speaker outputs. Need to assign the
DAC depending on the pin.
- ALSA: hda - Create "Digital Mic Capture Volume" correctly for IDT codecs
So far, the digital mic capture volume wasn't created. This is because
IDT codecs have output amps for digital mics, not input amps, while
input amps should be used for other analog pins. Thus the automatic
capture volume creation should check both directions for digital mics.
- ALSA: hda - Fix MacBookPro 3,1/4,1 quirk with ALC889A
This patch fixes the wrong headphone output routing for MacBookPro 3,1/4,1
quirk with ALC889A codec, which caused the silent headphone output.
Also, this gives the individual Headphone and Speaker volume controls.
Reference: kernel bug#14078
http://bugzilla.kernel.org/show_bug.cgi?id=14078
Cc: <stable@kernel.org>
- ALSA: hda - Add missing mux check for VT1708
In patch_vt1708(), the check of MUX nids is missing and this results in
the -EINVAL error in accessing Input Source mixer element. Simpliy
adding the call of get_mux_nids() fixes the problem.
Reference: Novell bnc#534904
https://bugzilla.novell.com/show_bug.cgi?id=534904

HDA Intel driver

- ALSA: hda - Add PCI IDs for Nvidia G2xx-series
- intelhdmi - dont power off HDA link
For codecs without EPSS support (G45/IbexPeak), the hotplug event will
be lost if the HDA is powered off during the time. After that the pin
presence detection verb returns inaccurate info.
So always power-on HDA link for !EPSS codecs.
KarL offers the fact and Takashi recommends to flag hda_bus. Thanks!
- ALSA: hda - Terradici HDA controllers does not support 64-bit mode
Confirmed from vendor and tests in RedHat bugzilla #536782 .
Cc: <stable@kernel.org>
- ALSA: hda - Add position_fix quirk for HP dv3
HP dv3 requires position_fix=1.
Reference: Novell bnc#555935
https://bugzilla.novell.com/show_bug.cgi?id=555935
- ALSA: hda - Add a position_fix quirk for MSI Wind U115
MSI Wind U115 seems to require position_fix=1 explicitly.
Otherwise it screws up PulseAudio.
- ALSA: hda - add beep_mode module parameter
The beep_mode parameter for snd-hda-intel module allows to choose among
different digital beep device registation to the input layer.
0 = do not register to the input layer
1 = register to the input layer all time
2 = use "Beep Switch" control exported to user space mixer applications
Also, introduce CONFIG_SND_HDA_INPUT_BEEP_MODE for default value.
- ALSA: hda - Add reboot notifier to each codec
Add reboot notifier to each codec so that it can do some workarounds
needed for reboot.
So far, patch_sigmatel.c calls its shutup routine for avoiding noises
at reboot on some HP machines.
References: Novell bnc#544779
http://bugzilla.novell.com/show_bug.cgi?id=544779
- ALSA: hda - Don't initialize CORB/RIRB for single_cmd mode
So far, CORB/RIRB still remains even if the driver is switched to the
single_cmd mode. The specification says that this should be disabled,
but I hoped this isn't the case; indeed most devices worked together with
CORB/RIRB.
However, Poulsbo (US15W) seems problematic with this setup, and it
requires to disable CORB/RIRB when single_cmd is used.
Now this patch disables CORB/RIRB initialization when the single_cmd
mode is used. Also the unsolicited event is disabled because it can't
work without RIRB.
Reported-and-tested-by: Troy Kisky <troy.kisky@boundarydevices.com>
- ALSA: hda - Switch to polling mode before disabling MSI
When any codec communication error happens, try to switch to the polling
mode first before turning off MSI. MSI gets more stable nowadays, thus
we should keep it on as much as possible.
- ALSA: hda_intel: Add the Linux device ID for NVIDIA HDA controller
Add the generic device ID for NVIDIA HDA controller.
- ALSA: hda - Enable MSI as default
Since the recent kernel can handle MSI properly on non-Intel platforms,
let's enable MSI as default.
If any borken device is found, we can add the quirk entry to the list,
which is currently empty.
- ALSA: hda - Add HP Pavilion dv4t-1300 to MSI whitelist
BugLink: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=547994
Enable MSI by default for this Pavilion model.

HDA generic driver

- Fix a typo in ilog2() hack in pci/hda/hda_proc.c
- Add ilog2() wrapper to pci/hda/hda_proc.c
- hda - fix hda_beep.patch according latest alsa-kernel tree
- Revert "Revert "hda_intel: Fix hda_beep.patch according latest alsa-kernel changes""
This reverts commit e83ac9bd623e779af1d1553f12ca7d7a001e0db5.
- Revert "hda_intel: Fix hda_beep.patch according latest alsa-kernel changes"
This reverts commit 1f3eb4be072393539baf5e533f16321a485d9a0f.
The change isn't merged yet.
- hda_intel: Fix hda_beep.patch according latest alsa-kernel changes
- Fix a typo in hda_intel.patch
Must be #ifdef instead of #if.
- Make MSI white/black-list for HD-audio
Whie the recent kernel works with MSI on non-Intel boards, it doesn't
on older kernels. So, we need to disable MSI as default on such.
- ALSA: hda - simplify usage of HDA_SUBDEV_AMP_FLAG
The HDA_SUBDEV_NID_FLAG is duplicate for amplifier control elements. Move
get_amp_nid_() call to the snd_hda_ctl_add() function.
- ALSA: hda - introduce HDA_SUBDEV_AMP_FLAG (ControlAmp in proc)
The purpose of this changeset is to show information about amplifier
setting in the codec proc file. Something like:
Control: name="Front Playback Volume", index=0, device=0
ControlAmp: chs=3, dir=Out, idx=0, ofs=0
Control: name="Front Playback Switch", index=0, device=0
ControlAmp: chs=3, dir=In, idx=2, ofs=0
- ALSA: hda - add more NID->Control mapping
This set of changes add missing NID values to some static control
elemenents. Also, it handles all "Capture Source" or "Input Source"
controls.
- ALSA: intelhdmi - accept DisplayPort pin
HDA036 spec states:
DP (Display Port) indicates whether the Pin Complex Widget supports
connection to a Display Port sink. Supported if set to 1. Note that
it is possible for the pin widget to support more than one digital
display connection type, e.g. HDMI and DP bit are both set to 1.
Also export the DP pin cap in procfs.
- ALSA: hda - show HBR(High Bit Rate) pin cap in procfs
Note that the HBR capability only applies to HDMI pin.
- ALSA: hda - Fix input and jack Kconfig depenencies
CONFIG_SND_JACK needs to be selected explicitly only when INPUT=y or
INPUT_SND. The current way, INPUT=SND_HDA_INTEL isn't strict enough.
Reported-by: Randy Dunlap <randy.dunlap@oracle.com>
- ALSA: hda - show EPSS capability in proc
- ALSA: hda - introduce snd_hda_jack_detect() and snd_hda_pin_sense()
This helps merge duplicate code.
v2: add snd_hda_jack_detect() and comments recommended by Takashi.
- ALSA: intelhdmi - export monitor-presence and ELD-valid status
- ALSA: hda - Fix build errors with CONFIG_SND_HDA_INPUT_BEEP=n
Disable beep-related codes when CONFIG_SND_HDA_INPUT_BEEP isn't set.
- ALSA: hda - Fix beep_mode option value
The beep_mode option value was wrongly defined: it must be 0 = off and
1 = on.
Also, evaluate the beep_mode value at snd_hda_attach_beep_device()
properly so that no device is created when beep_mode=0 is given.
- ALSA: hda - Get rid of magic digits for subdev hack
Define a proper const for a magic 31bit flag for subdev / NID setup
with a brief comment.
- ALSA: hda - add beep_mode module parameter
The beep_mode parameter for snd-hda-intel module allows to choose among
different digital beep device registation to the input layer.
0 = do not register to the input layer
1 = register to the input layer all time
2 = use "Beep Switch" control exported to user space mixer applications
Also, introduce CONFIG_SND_HDA_INPUT_BEEP_MODE for default value.
- ALSA: hda - proc - add support for dynamic controls to mixer<->NID mapping
This patch adds support for dynamically created controls to proc codec file
(Control: lines).
- ALSA: hda - proc - introduce Control: lines to show mixer<->NID assignment
This is an initial patch to show universal control<->NID assigment in
proc codec file. The change helps to debug codec related problems.
- ALSA: hda - move snd_hda_pcm_type_name from hda_codec.h to hda_local.h
The snd_hda_pcm_type_name array is local only.
- ALSA: hda - Don't access invalid substream in proc file
The commit e3303235209c0496b490e10ab131e72a9568c153
"ALSA: hda - proc - show which I/O NID is associated to PCM device"
introduces the access to substream pointer. But, PCMs may have no
substreams in one or both directions, and this results in NULL
dereference. Also, print the first substream number doesn't make
sense.
This patch removes the access to the substream pointer, and reformat
to fit to the standard coding style.
- ALSA: hda - Fix build error without CONFIG_SND_HDA_HWDEP=y
CONFIG_SND_HDA_POWER_SAVE is independent from CONFIG_SND_HDA_HWDEP.
Thus snd_hda_hwdep_add_power_sysfs() needs the check of both kconfigs.
- ALSA: hda - Add power on/off counter
Added the power on/off counter and expose via sysfs files.
The sysfs files, power_on_acct and power_off_acct, are created under
each codec hwdep sysfs directory (e.g. /sys/class/sound/hwC0D0).
The files show the msec length of the codec power-on and power-off,
respectively.
- ALSA: hda - proc - show which I/O NID is associated to PCM device
Output something like:
Node 0x02 [Audio Output] wcaps 0x11: Stereo
Device: name="ALC888 Analog", type="Audio", device=0, substream=0
Converter: stream=0, channel=0
...
- [ALSA] hda: beep - add missing cancel_delayed_work
The unregister work should be also canceled in snd_hda_detach_beep_device()
function.
- ALSA: hda - vectorize intelhdmi
The Intel IbexPeak HDMI codec supports 2 converters and 3 pins,
which requires converting the cvt_nid/pin_nid to arrays.
The active pin number (the one connected with a live HDMI monitor/sink)
will be dynamically identified on hotplug events.
It exports two HDMI devices, so that user space can choose the A/V pipe
for sending the audio samples.
It's still undefined behavior when there are two active monitors
connected and routed to the same audio converter.
- [ALSA] hda_intel: Digital PC Beep - delay input device unregistration
The massive register/unregister calls for input device layer might be
overkill. Delay unregister call by one HZ as workaround.
Also, as benefit, beep->enabled variable is changed immediately now
(not from workqueue).
- hda_intel: Digital PC Beep - change behaviour for input layer
Original implementation was keeping registered input device for SND_BEEP
and SND_TONE events all time. This patch changes this behaviour:
If digital PC Beep is turned off using universal control switch,
the input device is unregistered.
Explanation: The kd_mksound() send SND_BEEP and SND_TONE only to last
registered device acceping those events. It means that the HDA Intel
audio driver blocks also the internal PC Speaker device (pcspkr.c
driver) even if the HDA Beep is muted. The user can easy disable
all beeps using 'setterm -blength 0' or 'xset b off' command.

HR timer driver

- Refresh patches to remove fuzz
- ALSA: hrtimer - Fix lock-up
The timer stop callback can be called from snd_timer_interrupt(), which
is called from the hrtimer callback. Since hrtimer_cancel() waits for
the callback completion, this eventually results in a lock-up.
This patch fixes the problem by just toggling a flag at stop callback
and call hrtimer_cancel() later.
Reported-and-tested-by: Wojtek Zabolotny <W.Zabolotny@elka.pw.edu.pl>
Cc: <stable@kernel.org>

I2C cs8427

- Add a workaround for bitrev8() in i2c/cs8427.c
- ALSA: ice1712: Use bitrev8

ICE1712 driver

- Add a build stub for pci/ice1712/quartet.c
- ALSA: ice1724 - aureon - modify WM8770 Master & DAC volume
The volume levels in original implementation are incorrect and does
not match the dB scale. The real range is linear (in the sense of
the dB scale) from 0dB to -100dB. Remove logaritmic table and make
all volumes from range 0dB..100dB.
The tests are in RedHat's bugzilla #540817.
- tree-wide: fix a very frequent spelling mistake
something-bility is spelled as something-blity
so a grep for 'blit' would find these lines
this is so trivial that I didn't split it by subsystem / copy
additional maintainers - all changes are to comments
The only purpose is to get fewer false positives when grepping
around the kernel sources.
- ALSA: ice1724 - make some bitfields unsigned
This is a clean up and doesn't change the behavior.
Bit fields should always be unsigned. Otherwise pm_suspend_enabled will
be -1 when you want it to be 1. The other bad thing is that the sparse
checker will complain 36 times if they aren't unsigned.
The other bitfields in that struct are unsigned already.
- ALSA: ice1724 - Fix section mismatch in prodigy_hd2_resume()
Remove invlid __devinit prefix from the suspend callback.
- ALSA: ice1724 - Patch for suspend/resume for ESI Juli@
Add proper suspend/resume code for Juli@ cards. Based on ice1724
suspend/resume work of Igor Chernyshev.
Fixes bug https://bugtrack.alsa-project.org/alsa-bug/view.php?id=4413
Tested on linux-2.6.31.6
- ALSA: ice1724 - Infrasonic Quartet support
* three external clock types
* all controls supported
- ALSA: ice1724 - Support for multiple external clock types
* Support for customization of the external clock names
* Adding hooks to playback_pro_open and capture_pro_open, allowing e.g.
limiting available stream rates to a single value when the external
clock rate is detected
- ALSA: ice1724 - adding GPIO routines for mask and direction
* get/set routines for GPIO mask and direction
- ALSA: ak4620 support, codec regs listed in proc
* complete support for ak4620
* codec regs listed in proc for all codecs/chips
* adding total regs for each codec
* fixing nb. of steps in input attenuation controls
- ALSA: ICE1712/24 - Change the Multi Track Peak control (level meters) from MIXER to PCM type
* PLEASE NOTE - this change requires the corresponding update of
envy24control for ice1712 - kind of an ABI change.
* The "Multi Track Peak" control is read-only level meters indicator.
* The control is VERY confusing to most users since it is currently displayed
in regular mixers. E.g. alsamixer ignores its read-only status
and allows changing the levels with keys which makes no sense.
Acked-by: Jaroslav Kysela <perex@perex.cz>

ICE1724 driver

- ALSA: ice1724 - Infrasonic Quartet support
* three external clock types
* all controls supported
- ALSA: ice1724 - Support for multiple external clock types
* Support for customization of the external clock names
* Adding hooks to playback_pro_open and capture_pro_open, allowing e.g.
limiting available stream rates to a single value when the external
clock rate is detected
- ALSA: ice1724 - pro-rate-locking makes sense only for internal clock mode
* pro-rate-locking applies to internal clock mode only
* required rate and current rate are compared for internal clock mode only
- ALSA: ice1724 - adding GPIO routines for mask and direction
* get/set routines for GPIO mask and direction
- ALSA: ice1724 - Make call to set hw params succeed on ESI Juli@
If two streams are started immediately after one another (such as a
playback and a recording stream), the call to set hw params fails with
EBUSY. This patch makes the call succeed, so playback and recording will
work properly.
- ALSA: ice1724: Fix surround on Chaintech AV-710
Fix the num_total_dacs setting for Chaintech AV710. The existing comment
that only PSDOUT0 is connected is correct, but since the card is using
packed AC97 mode to send 6 channels to the codec, num_total_dacs should be
set to 6 and not 2. This allows 6-channel surround to work. Also clarify
a comment regarding the additional WM8728 codec on this card (it's connected
to the SPDIF output and always receives the same data).
- ALSA: ice1724: increase SPDIF and independent stereo buffer sizes
Increase the default and maximum PCM buffer prellocation size for ice1724's
SPDIF and independent stereo pair outputs to 256K, which is the hardware's
maximum supported size. This allows a reduction in interrupt rate and
potentially power usage when an application is not latency-critical.
- ALSA: ICE1712/24 - Change the Multi Track Peak control (level meters) from MIXER to PCM type
* PLEASE NOTE - this change requires the corresponding update of
envy24control for ice1712 - kind of an ABI change.
* The "Multi Track Peak" control is read-only level meters indicator.
* The control is VERY confusing to most users since it is currently displayed
in regular mixers. E.g. alsamixer ignores its read-only status
and allows changing the levels with keys which makes no sense.
Acked-by: Jaroslav Kysela <perex@perex.cz>

ISA

- ALSA: dt019x: merge into the als100 driver
The als100 driver is so similar to the dt019x/als007 driver
that one driver's source can be used for both drivers with
only few changes. Merge the dt019x driver into the als100.
- ALSA: sscape: convert to firmware loader framework
The conversion solves the problem that firmware size was set to 64KB
while non PnP cards have 128KB firmware files.
An additional firmware initialization code has been moved from the OSS
driver.
- ALSA: sscape: add supoort for SPEA Media FX/Reveal SC-600
Move code from the OSS sscape driver in order to support old Soundscape OEM models.

ISA DMA

- ALSA: snd_dma_pointer workaround for chipsets with buggy DMA
The chipsets with the isa_dma_bridge_buggy set do not stop DMA during
DMA counter reads. The DMA counter is read in two 8-bit read steps
on x86 platform. Sometimes, such reads happen during higher byte
change so the lower byte is already decremented (rolled over) but
the higher byte is not. It introduces an error that position is
moved 256 bytes ahead of the true position. Thus, the next DMA
position read can return a lower value then the previous read.
If the DMA position is decreased (reversed) the ALSA subsystem is
tricked into the playback underrun error and resets the playback.
It results in a "pop" during a playback.
Work around the issue by reading the counter twice and choosing a higher
value.

Intel8x0 driver

- ALSA: intel8x0: Mute External Amplifier by default for Gateway 4525GZ
BugLink: https://bugs.launchpad.net/bugs/487884
This Gateway model needs External Amplifier muted for audible playback,
so set the inv_eapd quirk for it.
- ALSA: intel8x0: Mute External Amplifier by default for another Sony model
BugLink: https://bugs.launchpad.net/bugs/474972
This Sony model needs External Amplifier muted for audible playback, so
make sure we set the inv_eapd quirk.
- ALSA: intel8x0 - Mute External Amplifier by default for Sony VAIO VGN-B1VP
BugLink: https://bugs.launchpad.net/bugs/410933
This Sony VAIO model also needs External Amplifier unmuted for audible
playback, so make sure we set the inv_eapd quirk.
- ALSA: intel8x0 - Mute External Amplifier by default for Sony VAIO VGN-T350P
BugLink: https://bugs.launchpad.net/bugs/410933
This Sony VAIO model needs External Amplifier unmuted for audible
playback, so make sure we set the inv_eapd quirk.

LX6464ES

- ALSA: lx6464es - remove unused struct member
we cannot set the sampling rate of the device, but can only read it
from the board, so we don't need the member for it.
- ALSA: lx6464es - cleanup of rmh message bus function
the rmh bus is not used asynchronously, so it is safe to remove the
specific code pieces.

MIPS SGI A2 Audio System

- ALSA: Fix invalid __exit in sound/mips/*.c
The remove callback has to be marked as __devexit, as the dynamic unbind
is possible.
Reported-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

Memalloc module

- Refresh patches to remove fuzz

OPL3

- ALSA: opl3: circular locking in the snd_opl3_note_on() and snd_opl3_note_off()
Fix following circular locking in the opl3 driver.
=======================================================
[ INFO: possible circular locking dependency detected ]
2.6.32-rc3 #87
-------------------------------------------------------
swapper/0 is trying to acquire lock:
(&opl3->voice_lock){..-...}, at: [<cca748fe>] snd_opl3_note_off+0x1e/0xe0 [snd_opl3_synth]
but task is already holding lock:
(&opl3->sys_timer_lock){..-...}, at: [<cca75169>] snd_opl3_timer_func+0x19/0xc0 [snd_opl3_synth]
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #1 (&opl3->sys_timer_lock){..-...}:
[<c02461d5>] validate_chain+0xa25/0x1040
[<c0246aca>] __lock_acquire+0x2da/0xab0
[<c024731a>] lock_acquire+0x7a/0xa0
[<c044c300>] _spin_lock_irqsave+0x40/0x60
[<cca75046>] snd_opl3_note_on+0x686/0x790 [snd_opl3_synth]
[<cca68912>] snd_midi_process_event+0x322/0x590 [snd_seq_midi_emul]
[<cca74245>] snd_opl3_synth_event_input+0x15/0x20 [snd_opl3_synth]
[<cca4dcc0>] snd_seq_deliver_single_event+0x100/0x200 [snd_seq]
[<cca4de07>] snd_seq_deliver_event+0x47/0x1f0 [snd_seq]
[<cca4e50b>] snd_seq_dispatch_event+0x3b/0x140 [snd_seq]
[<cca5008c>] snd_seq_check_queue+0x10c/0x120 [snd_seq]
[<cca5037b>] snd_seq_enqueue_event+0x6b/0xe0 [snd_seq]
[<cca4e0fd>] snd_seq_client_enqueue_event+0xdd/0x100 [snd_seq]
[<cca4eb7a>] snd_seq_write+0xea/0x190 [snd_seq]
[<c02827b6>] vfs_write+0x96/0x160
[<c0282c9d>] sys_write+0x3d/0x70
[<c0202c45>] syscall_call+0x7/0xb
-> #0 (&opl3->voice_lock){..-...}:
[<c02467e6>] validate_chain+0x1036/0x1040
[<c0246aca>] __lock_acquire+0x2da/0xab0
[<c024731a>] lock_acquire+0x7a/0xa0
[<c044c300>] _spin_lock_irqsave+0x40/0x60
[<cca748fe>] snd_opl3_note_off+0x1e/0xe0 [snd_opl3_synth]
[<cca751f0>] snd_opl3_timer_func+0xa0/0xc0 [snd_opl3_synth]
[<c022ac46>] run_timer_softirq+0x166/0x1e0
[<c02269e8>] __do_softirq+0x78/0x110
[<c0226ac6>] do_softirq+0x46/0x50
[<c0226e26>] irq_exit+0x36/0x40
[<c0204bd2>] do_IRQ+0x42/0xb0
[<c020328e>] common_interrupt+0x2e/0x40
[<c021092f>] apm_cpu_idle+0x10f/0x290
[<c0201b11>] cpu_idle+0x21/0x40
[<c04443cd>] rest_init+0x4d/0x60
[<c055c835>] start_kernel+0x235/0x280
[<c055c066>] i386_start_kernel+0x66/0x70
other info that might help us debug this:
2 locks held by swapper/0:
#0: (&opl3->tlist){+.-...}, at: [<c022abd0>] run_timer_softirq+0xf0/0x1e0
#1: (&opl3->sys_timer_lock){..-...}, at: [<cca75169>] snd_opl3_timer_func+0x19/0xc0 [snd_opl3_synth]
stack backtrace:
Pid: 0, comm: swapper Not tainted 2.6.32-rc3 #87
Call Trace:
[<c0245188>] print_circular_bug+0xc8/0xd0
[<c02467e6>] validate_chain+0x1036/0x1040
[<c0247f14>] ? check_usage_forwards+0x54/0xd0
[<c0246aca>] __lock_acquire+0x2da/0xab0
[<c024731a>] lock_acquire+0x7a/0xa0
[<cca748fe>] ? snd_opl3_note_off+0x1e/0xe0 [snd_opl3_synth]
[<c044c300>] _spin_lock_irqsave+0x40/0x60
[<cca748fe>] ? snd_opl3_note_off+0x1e/0xe0 [snd_opl3_synth]
[<cca748fe>] snd_opl3_note_off+0x1e/0xe0 [snd_opl3_synth]
[<c044c307>] ? _spin_lock_irqsave+0x47/0x60
[<cca751f0>] snd_opl3_timer_func+0xa0/0xc0 [snd_opl3_synth]
[<c022ac46>] run_timer_softirq+0x166/0x1e0
[<c022abd0>] ? run_timer_softirq+0xf0/0x1e0
[<cca75150>] ? snd_opl3_timer_func+0x0/0xc0 [snd_opl3_synth]
[<c02269e8>] __do_softirq+0x78/0x110
[<c044c0fd>] ? _spin_unlock+0x1d/0x20
[<c025915f>] ? handle_level_irq+0xaf/0xe0
[<c0226ac6>] do_softirq+0x46/0x50
[<c0226e26>] irq_exit+0x36/0x40
[<c0204bd2>] do_IRQ+0x42/0xb0
[<c024463c>] ? trace_hardirqs_on_caller+0x12c/0x180
[<c020328e>] common_interrupt+0x2e/0x40
[<c0208d88>] ? default_idle+0x38/0x50
[<c021092f>] apm_cpu_idle+0x10f/0x290
[<c0201b11>] cpu_idle+0x21/0x40
[<c04443cd>] rest_init+0x4d/0x60
[<c055c835>] start_kernel+0x235/0x280
[<c055c210>] ? unknown_bootoption+0x0/0x210
[<c055c066>] i386_start_kernel+0x66/0x70

OSS device core

- Driver-Core: extend devnode callbacks to provide permissions
This allows subsytems to provide devtmpfs with non-default permissions
for the device node. Instead of the default mode of 0600, null, zero,
random, urandom, full, tty, ptmx now have a mode of 0666, which allows
non-privileged processes to access standard device nodes in case no
other userspace process applies the expected permissions.
This also fixes a wrong assignment in pktcdvd and a checkpatch.pl complain.

Opti9xx drivers

- ALSA: opti93x: use dB scale for mixer controls
Add dB scale for mixer controls. Fix dB scale for
Master Volume control.
- ALSA: opti93x: move controls definitions to opti93x driver
Move OPTi93x controls definitions to the opti93x driver
from the common wss-lib library module. These controls
are used only by the opti93x driver.
Also, fix capture source names. They are the same as
opl3sa2 names.
- tree-wide: fix assorted typos all over the place
That is "success", "unknown", "through", "performance", "[re|un]mapping"
, "access", "default", "reasonable", "[con]currently", "temperature"
, "channel", "[un]used", "application", "example","hierarchy", "therefore"
, "[over|under]flow", "contiguous", "threshold", "enough" and others.
- ALSA: opti93x: fix irq releasing if the irq cannot be allocated
Use the chip->irq to check if the irq should be released so the irq is not released
if it has not been allocated.
- ALSA: opti93x: set MC indirect registers base from PnP data
The PnP data on the OPTI931 and OPTI933 contains io port
range for the MC indirect registers. Use the PnP range
instead of hardwired value 0xE0E.
Also, request region of MC indirect registers so it is
marked as used to other drivers (this was missing previously).
- ALSA: opti9xx: remove snd_opti9xx fields
Remove snd_opti9xx fields which are indirect arguments to
the snd_opti9xx_configure(). Pass these values as function
arguments.
- ALSA: opti-miro: add PnP detection
The PCM12 and PCM20 can be set into the ISA PnP mode. The PCM12 PnP
was sold as the PnP device.
Add code to handle detection of these cards using ISA PnP framework.
Tested on the PCM20 in PnP mode. The PCM12 PnP has the same MS Windows
INF file except for a card name displayed for user.
- ALSA: opti-miro: separate comon probing code
Separate common probing code in order to use it
for PnP probing.
- ALSA: opti-miro: fix OOPS if hardware is not detected
If a hardware is not detected there is a kernel crash
due to not initialized snd_miro->aci pointer. This pointer
is initialized after detection of the opti (miro) chip.
This bug was introduced by patches to expose
ACI mikser outside the snd-miro driver.
- ALSA: opti-miro: expose ACI mixer to outside drivers
The ACI mixer is used to control the radio FM module
installed on the Miro PCM20 sound card. Expose ACI mixer
outside the sound card driver.
- ALSA: opti-miro: make miro.h header available outside the alsa directory
Move the miro.h header to the include/sound directory. It can
be used in the Miro PCM20 radio driver (v4l).
- ALSA: opti-miro: remove snd_card pointer from snd_miro structure
Remove the snd_card pointer from the snd_miro structure and
do some small code improvements.
Also, move Opti chipset detection before detection of the
ACI mixer, so the mci_base value is set in one place only.
- ALSA: opti-miro: Fix missing semicolon
To fix a build error
sound/isa/opti9xx/miro.c:1281: error: expected ';' before '}' token
- ALSA: opti-miro: use variables directly in the probe function
Use the fm_port and mpu_port variables directly in a probe function.
This completely eliminates a need to copy the fm_port value to
the snd_miro structure.

PARISC Harmony driver

- ALSA: sound/parisc: Move dereference after NULL test
If the NULL test on h is needed in snd_harmony_mixer_init, then the
dereference should be after the NULL test.
Actually, there is a sequence of calls: snd_harmony_create, then
snd_harmony_pcm_init, and then snd_harmony_mixer_init. snd_harmony_create
initializes h, but may indeed leave it as NULL. There was no NULL test at
the beginning of snd_harmony_pcm_init, so I have added one. The NULL test
in snd_harmony_mixer_init is then not necessary, but in case the ordering
of the calls changes, I have left it, and moved the dereference after it.
A simplified version of the semantic match that detects this problem is as
follows (http://coccinelle.lip6.fr/):
// <smpl>
@match exists@
expression x, E;
identifier fld;
@@
* x->fld
... when != \(x = E\|&x\)
* x == NULL
// </smpl>

PCI drivers

- ALSA: ice1712: Use bitrev8
- ALSA: SND_CS5535AUDIO: Remove the X86 platform dependency
SND_CS5535AUDIO is available on Loongson(MIPS compatible) family
machines, and checked it with ARCH=x86_64, no relative compiling
warnings & errors, so, remove the platform dependency directly.
Reported-by: rixed@happyleptic.org
Acked-by: Andres Salomon <dilinger@collabora.co.uk>

PDAudioCF driver

- pcmcia: rework the irq_req_t typedef
Most of the irq_req_t typedef'd struct can be re-worked quite
easily:
(1) IRQInfo2 was unused in any case, so drop it.
(2) IRQInfo1 was used write-only, so drop it.
(3) Instance (private data to be passed to the IRQ handler):
Most PCMCIA drivers using pcmcia_request_irq() to actually
register an IRQ handler set the "dev_id" to the same pointer
as the "priv" pointer in struct pcmcia_device. Modify the two
exceptions (ipwireless, ibmtr_cs) to also work this waym and
set the IRQ handler's "dev_id" to p_dev->priv unconditionally.
(4) Handler is to be of type irq_handler_t.
(5) Handler != NULL already tells whether an IRQ handler is present.
Therefore, we do not need the IRQ_HANDLER_PRESENT flag in
irq_req_t.Attributes.
CC: netdev@vger.kernel.org
CC: linux-bluetooth@vger.kernel.org
CC: linux-ide@vger.kernel.org
CC: linux-wireless@vger.kernel.org
CC: linux-scsi@vger.kernel.org
CC: alsa-devel@alsa-project.org
CC: Jaroslav Kysela <perex@perex.cz>
CC: Jiri Kosina <jkosina@suse.cz>
CC: Karsten Keil <isdn@linux-pingi.de>
for the Bluetooth parts: Acked-by: Marcel Holtmann <marcel@holtmann.org>
- pcmcia: remove deprecated handle_to_dev() macro
Update remaining users and remove deprecated handle_to_dev() macro
CC: Harald Welte <laforge@gnumonks.org>
CC: netdev@vger.kernel.org
CC: linux-wireless@vger.kernel.org
CC: linux-serial@vger.kernel.org
- ALSA: pcmcia: use dynamic debug infrastructure, deprecate CS_CHECK (sound)
Convert PCMCIA drivers to use the dynamic debug infrastructure, instead of
requiring manual settings of PCMCIA_DEBUG.
Also, remove all usages of the CS_CHECK macro and replace them with proper
Linux style calling and return value checking. The extra error reporting may
be dropped, as the PCMCIA core already complains about any (non-driver-author)
errors.

PPC

- powerpc: Minor cleanup to sound/ppc/Kconfig
We can replace PPC32 || PPC64 as a dependancy with just PPC as all
powerpc platforms (32-bit and 64-bit) define PPC now.

PPC AWACS driver

- [ALSA] rename "PC Speaker" controls to "Speaker"
To unify control names, rename "PC Speaker" to "Speaker" for PPC ALSA drivers.

PPC Burgundy driver

- [ALSA] rename "PC Speaker" controls to "Speaker"
To unify control names, rename "PC Speaker" to "Speaker" for PPC ALSA drivers.

PPC Keywest driver

- sound: Make keywest_driver static
I can't see any reason for struct i2c_driver keywest_driver to not be
static.
- ALSA: Don't assume i2c device probing always succeeds
The client->driver pointer can be NULL when i2c-device probing fails
in i2c_new_device(). This patch adds the NULL checks for client->driver
and return the error instead of blind assumption of driver availability.
Reported-by: Tim Shepard <shep@alum.mit.edu>
Cc: Jean Delvare <khali@linux-fr.org>
Cc: Johannes Berg <johannes@sipsolutions.net>

SB drivers

- ALSA: sb_mixer: convert pointer tables to mixer control tables
Convert table of pointers to mixer controls into tables
of the mixer controls. It saves about 20% of the snd-sb-common
module size reported by lsmod.
The als4000 uses part of sb16's control table.

SGI O2 Audio

- ALSA: Fix invalid __exit in sound/mips/*.c
The remove callback has to be marked as __devexit, as the dynamic unbind
is possible.
Reported-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

SH platform core

- ALSA: sh: add SuperH DAC audio driver for ALSA V4
This is a port of the sound/oss/sh_dac_audio.c driver.
The driver uses an on-chip 8-bit D/A converter, which has a speaker connected
to one of its channels, found in several ancient HP machines.
For interrupts it uses a high-resolution timer (hrtimer).
Tested on SH7709 based hp6xx (HP Jornada 680/690 and HP Palmtop 620lx/660lx).
Also, since OSS Emulation works, the old OSS sound/oss/sh_dac_audio.c driver
would be obsolete soon, and it could be removed.
Acked-by: Paul Mundt <lethal@linux-sh.org>

Serial BUS drivers

- ALSA: ak4113 support
* complete support for ak4113
* based on code for ak4114 and ak4117

SoC Audio for Freecale i.MX1x i.MX2x CPUs

- ASoC: Wrong variable returned on error
The wrong variable was returned in the case of an error
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: Remove absent SYNC and TDM DAI format options from i.MX SSI
These should be handled via set_tdm_slot() now and cause build
failures as-is.

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

- ASoC: at91sam9g20ek_2mmc board uses same audio connexion as at91sam9g20ek
The modified revision of at91sam9g20 Evaluation Kit rev. C and onwards share
with previous ones its audio connexion to Wolfson wm8731. Modify the SoC file
to extend the machine ID checking.
- ASoC: Add source argument to PLL configuration
More and more devices feature PLLs and FLLs with the ability to select
between multiple input clocks. In order to better support these devices
a new argument, source, has been added to the set_pll() configuration
API. Using set_clkdiv() is often difficult due to the need to stop the
PLL/FLL before any reconfiguration can be done.
- [ARM] 5596/1: at91sam9g20-ek: Register WM8731 in board file
The WM8731 driver has been updated to allow registration via normal
device model methods rather than from within the ASoC driver probe
so update the AT91SAM9G20-EK to make use of this.
Acked-by: Andrew Victor <linux@maxim.org.za>

SoC Audio for the Samsung S3C24XX chips

- ASoC: Added the CPU driver for PCM controllers
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: Rename 's3c24xx-pcm' driver to 's3c-dma'
Making room for namespace for the PCM Controller driver
the platform driver(s3c24xx-pcm) has been renamed to SoC
agnostic name 's3c-dma'.
Acked-by: Ben Dooks <ben-linux@fluff.org>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: Rename s3c24xx_pcm prefix to s3c_dma
The s3c24xx_pcm prefix for the soc_platform is inappropriate when
some Samsung SoCs have PCM controllers which will eventually have
drivers and hence namespace ambiguities.
To resolve naming ambiguities in future the following have been
renamed in order
1) s3c24xx_pcm_dma_params -> s3c_dma_params
2) s3c24xx_pcm_preallocate_dma_buffer -> s3c_preallocate_dma_buffer
3) s3c24xx_pcm_dmamask -> s3c_dma_mask
4) s3c24xx_pcm_XXX -> s3c_dma_XXX
Acked-by: Ben Dooks <ben-linux@fluff.org>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: Fixed arguments passed to SMDK64xx set_pll
Corrected the order of 'source' and 'pll_id' arguments.
- ASoC: S3C64XX I2S: Enable audio-bus clock
Added the missing clk_enable after acquiring the 'audio-bus' clock.
- ARM: S3C: Add info for supporting circular DMA buffers
The S3C64XX DMA implementation will work a lot better with the ability
to enqueue circular buffers as the hardware can do it's own linked-list
management.
Add a function s3c_dma_has_circular() to show that the system can do this
and a flag for the channel.
Update the s3c24xx/s3c64xx I2S DMA code to deal with this.
Acked-by: Mark Brown <broonie@@opensource.wolfsonmicro.com>
- ASoC: Minor SMDK64xx WM8580 cleanups
Fix up some comments, remove all enable_pin() calls (edge widgets
are all enabled by default) and mark the microphone as disabled by
default since it requires a resistor fit to connect it.
- ASoC: S3C: Remove <plat/audio.h>
Remove the <plat/audio.h> include from arch/arm/plat-s3c/include/plat/audio.h
as it provides nothing to the current kernel and is not in any future plans
for the system.
- ASoC: Fix snd_soc_dai_set_pll() calls in neo1973_*.c
Fix the missing argument of snd_soc_dai_set_pll() in neo1973_*.c,
which was forgotten in the commit 85488037bb.
- ASoC: Support WM8580 based audio subsystem on SMDK64xx machines
New machine driver for WM8580 I2S i/f on SMDK64XX.
By default SoC-Slave is set and WM8580 is configured to use it's
PLLA to generate clocks from a 12MHz crystal attached to WM8580.
[Added dependency on BROKEN since the IISv4 interface hasn't been merged
yet, fixed the PLL API usage and removed the disabling of the PLL in the
hw_free function since that'll break simultaneous playback and record
-- broonie.]
- ASoC: Return correct codec clock in s3c64xx-i2s
Instead of always returnig pointer to the 'audio-bus' clock,
check which clock is used to generate internal clocks and
then return it's pointer.
- ASoC: Add S3C64xx IIS CDCLK source selection
CDCLK can either be an output generated by the CPU, intended for use
as the CODEC master clock, or an input (probably from the CODEC)
providing a master clock for the IIS block.
- ASoC: S3C I2S LRCLK polarity option.
1) Explicitly set LRCLK polarity for I2S Vs LSM/MSB modes.
2) Convert from numerical to bit-field values for BCLK selection.
3) Use proper error checking for return value from clk_get
- ASoC: S3C lrsync function made to work with IRQs disabled.
s3c2412_snd_lrsync() maybe reached with IRQs disabled and if LRCLK
is dead due to improper initialization of CPU or CODEC, the system
gets stuck in the loop because jiffies may never get updated.
Implemented counter based wait mechanism for atleast the same
timeout period.
- ARM: S3C24XX: Add platform device for AC97 controller
Move the definition of the "generic" IRQ in the process.

SoC Blackfin

- ASoC: Blackfin I2S: use dai state rather than local counter
Since the active field of the dai already tells us the stream activity,
the local counter variable is redundant and can be replaced.
- ASoC: use set_channel_map api to reorder channels for AD1938 and AD1836
- ASoC: fix kconfig order of Blackfin drivers
Some of the Blackfin options don't directly follow the kconfig options
they depend on, so kconfig is unable to display the proper tree. So sort
the options such they expand/collapse properly.
- ASoC: Blackfin: fix inverted handling of SPORT0 on PORT F/G
- ASoC: Blackfin I2S: fix resuming when device hasn't been used
If the sound system hasn't been utilized yet and we suspend, then we
attempt to save/restore using state that doesn't exist. So use a global
handle instead to reconfigure properly.
- ASoC: Blackfin I2S: add lost platform_device parameter to resume function
Commit dc7d7b830ee1 trimmed the platform_device parameter from all of the
suspend functions, but it also accidentally removed it from the resume
function in the Blackfin I2S driver. So restore it.
- ASoC: fix typos in Blackfin headers
- ASoC: bf5xx-sport: the irq save/restore funcs take an unsigned long
- ASoC: Blackfin AC97: add a few missing multichannel define handling
Somewhere along the line, most of SND_BF5XX_MULTICHAN_SUPPORT handling was
merged, but two places were missed (the probe/resume functions). Restore
handling of this option so it gets initialized properly.
- ASoC: new board driver to connect bfin-5xx with ad1836 codec
As discussed, the patch uses the original TDM order without rewriting.
For the match between TDM slot number and audio channel number, a new
API need be added.

SoC Codec AC97

- ASoC: Factor out snd_soc_init_card()
snd_soc_init_card() is always called as the last part of the CODEC probe
function so we can factor it out into the core card setup rather than
have each CODEC replicate the code to do the initialiastation. This will
be required to support multiple CODECs per card.

SoC Codec AD1836

- ASoC: Remove redundant snd_soc_dapm_new_widgets() calls
The DAPM widgets are now insntantiated by the core when creating the card
so there is no need for the individual CODEC drivers to do so.
- ASoC: Remove dead code and labels
Remove the dead code and labels "card_err" in the error paths of
some codec drivers.
- ASoC: Factor out snd_soc_init_card()
snd_soc_init_card() is always called as the last part of the CODEC probe
function so we can factor it out into the core card setup rather than
have each CODEC replicate the code to do the initialiastation. This will
be required to support multiple CODECs per card.
- ASoC: some minor changes for AD1836 and AD1938 codec drivers
1. delete redundant assignment to bus field in spi_driver structure
2. fix lost assignment to set_bias_level entry in ad1938 codec dai
3. change spi driver name of ad1836 from "ad1836-spi" to "ad1836"
- ASoC: remove unused #include <linux/version.h>
Remove unused #include <linux/version.h>('s) in
sound/soc/codecs/ad1836.c
sound/soc/codecs/ad1938.c
sound/soc/codecs/wm8974.c

SoC Codec AD1938

- ASoC: Remove redundant snd_soc_dapm_new_widgets() calls
The DAPM widgets are now insntantiated by the core when creating the card
so there is no need for the individual CODEC drivers to do so.
- ASoC: Remove dead code and labels
Remove the dead code and labels "card_err" in the error paths of
some codec drivers.
- ASoC: Factor out snd_soc_init_card()
snd_soc_init_card() is always called as the last part of the CODEC probe
function so we can factor it out into the core card setup rather than
have each CODEC replicate the code to do the initialiastation. This will
be required to support multiple CODECs per card.
- ASoC: some minor changes for AD1836 and AD1938 codec drivers
1. delete redundant assignment to bus field in spi_driver structure
2. fix lost assignment to set_bias_level entry in ad1938 codec dai
3. change spi driver name of ad1836 from "ad1836-spi" to "ad1836"
- ASoC: remove unused #include <linux/version.h>
Remove unused #include <linux/version.h>('s) in
sound/soc/codecs/ad1836.c
sound/soc/codecs/ad1938.c
sound/soc/codecs/wm8974.c

SoC Codec AK4535

- ASoC: Remove redundant snd_soc_dapm_new_widgets() calls
The DAPM widgets are now insntantiated by the core when creating the card
so there is no need for the individual CODEC drivers to do so.

SoC Codec AK4671

- ASoC: Remove redundant snd_soc_dapm_new_widgets() calls
The DAPM widgets are now insntantiated by the core when creating the card
so there is no need for the individual CODEC drivers to do so.
- ASoC: AK4671: add ak4671 codec driver
The AK4671 is a stereo CODEC with a built-in Microphone-Amplifier,
Receiver-Amplifier and Headphone-Amplifier.
The datasheet for the ak4671 can find at the following url:
http://www.asahi-kasei.co.jp/akm/en/product/ak4671/ak4671_f01e.pdf

SoC Codec CS4270

- ASoC: CS4270: export de-emphasis filter as ALSA control
The CS4270 codec features an de-emphasis filter for compensation of
audio material filtered by an 50/15 uS algorithm. Not sure whether we
should always enable it for 44100Hz sampling frequency, but it should at
least be configurable by the user.
Acked-by: Timur Tabi <timur@freescale.com>
- ASoC: Remove snd_soc_suspend_device()
The PM core will grow pm_link infrastructure in 2.6.33 which can be
used to implement the intended functionality of the ASoC-specific
device suspend and resume callbacks so drop them.

SoC Codec CX20442

- ASoC: Remove dead code and labels
Remove the dead code and labels "card_err" in the error paths of
some codec drivers.

SoC Codec TLV320AIC23

- ASoC: AIC23: Fixing infinite loop in resume path
This patch fixes two issues:
a) Infinite loop in resume function
b) Writes to non-existing registers in resume function
Cc: stable@kernel.org
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: tlv320aic23 fix rate selection
Fix the ordering of sr_valid_mask array.
The lower bit of the index represents USB
not bosr.
Reported-by: Anuj Aggarwal <anuj.aggarwal@ti.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>

SoC Codec TLV320DAC33

- ASoC: tlv320dac33: Change RT wq to singlethread wq
RT workqueue is going away in the near future, replace it with
singlethread wq for now, which is still supported.
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: tlv320dac33: typo fix in the header
Fix the definition of DAC33_LTM field, the LTM bits in
FIFO_IRQ_MODE_B register are starting at bit 6.
- ASoC: Codec driver for Texas Instruments tlv320dac33 codec
Driver for Texas Instruments TLV320DAC33 (SLAS546) low power stereo
audio DAC.
TLV320DAC33 is a stereo audio codec with integrated 24KB FIFO for low
power audio playback.
The digital interface can use I2S, DSP (A or B), Right and Left
justified formats.
DAC33 has stereo analog input, which can be bypassed to the analog
outputs.
Regarding to the internal 24KB FIFO the driver implements 'FIFO bypass'
mode (default) and nSample mode (FIFO is in use).
a) In 'FIFO bypass' mode the internal FIFO is not in use, the codec is
working synchronously as a normal codec (it needs constant stream of
data on the digital interface).
b) The nSample mode implementation uses one interrupt line from DAC33 to
the host:
Alarm threshold is set to 10ms of audio data (limit by the driver
implementation).
DAC33 will signal an interrupt, when the FIFO level goes under the
Alarm threshold.
The host will write to nSample register a value (number of stereo
samples), to tell DAC33 how many samples it should read in a burst from
the host. When the DAC33 received the number of samples, it disables the
clocks on the I2S bus. When the FIFO use again goes under the Alarm
threshold, DAC33 signals the host with an interrupt, and the process is
repeated.

SoC Codec TPA6130A2

- ASoC: TPA6130A2: Make tpa6130a2_power as static
The power for the amplifier should be handled internally
by the tpa6130a2 driver.
- ASoC: Minor fixups to tpa6130a2 driver
- Staticise ttpa6130a2_client.
- Remove unneeded cast from void.
- Use explict NULL rather than 0.
- ASoC: TPA6130A2 amplifier driver
Driver for Texas Instruments TPA6130A2 stereo headphone
amplifier.
The driver provides playback gain control and also pre-defined
DAPM_HP widgets and DAPM routings for power management.
The DAPM_HP widget names are:
"TPA6130A2 Headphone Left"
"TPA6130A2 Headphone Right"
From soc machine drivers to use with the tpa6130a2 amplifier,
the tpa6130a2_add_controls has to be called, which adds the alsa
controls and the DAPM routing needed for the tpa6130a2.
After that the machine driver can connect the codec's output
with 'TPA6130A2 Left' and 'TPA6130A2 Right':
{"TPA6130A2 Left", NULL, "CODEC LEFT OUT"},
{"TPA6130A2 Right", NULL, "CODEC RIGHT OUT"},
Internally the left and right channels are powered separately.
When none of the channels are needed the amplifier is powered
down:
hard power: valid GPIO number is passed within platform data
soft power: Using the software shutdown of the amplifier

SoC Codec TWL4030

- ASoC: TWL4030: Do not modify the APLL_CTL register
APLL_CTL register is configured by the twl4030-codec MFD
driver.
Remove code, which makes changes in the APLL_CTL register,
and replace those with checks against the configured
audio_mclk configuration done in the MFD driver.
- ASoC: TWL4030: Make sure, that the codec is powered on startup
Set the codec->bias_level to SND_SOC_BIAS_OFF before changing
the initial bias level to STANDBY.
- ASoC: TWL4030: Add APLL supply for the capture path
Capture path also need the APLL enabled, adding DAPM_SUPPLY
for the Virtual ADCs.
- ASoC: TWL4030: Change APLL powering sequence
It seams that certain part of the twl4030 codec needs the APLL
enabled before they are enabled.
Paths which has any digital processing needs need the APLL
enabled before they can function.
For example the vibra output will have some random data after
it is enabled and before the APLL also enabled.
If only analog components are in use (analog bypass), than it
seams, that the APLL does not need to be enabled. This lowers
the power consumption with around ~0.005A.
Adding DAPM_SUPPLY to the Digital playback route and also
to the capture route to enable and disable the APLL.
- ASoC: TWL4030: Vibra motor stop fix when it is driven with audio
This patch fixes vibrator playing incoherently, when driven
with audio. There is something wrong in switch 3 at
H-bridge and VIBRA_SET still affects PWM generator.
Slowest value fixes things.
- ASoC: TWL4030: Change codec_muted to apll_enabled
codec_muted is missleading, change it to apll_enabled,
which is what it is doing: enabing and disabling the APLL.
- ASoC: TWL4030: Remove bypass tracking
Since ASoC core now handling the codec bias differently
there is no need to do the tracking of bypass switch states
anymore.
Handling of the common bit for analog loopbacks is done with
DAPM_SUPPLY for the bypass paths.
Now this bit is only enabled when there is a complete analog
bypass path, compared to the previous implementation, when the
global switch was enabled if there were any of the analog
bypass switch was on (regardless if there were complete path or
not)
- ASoC: TWL4030: Driver registration via twl4030_codec MFD
Change the way how the twl4030 soc codec driver is
loaded/probed.
Use the device probing via tlw4030_codec MFD device.
- ASoC: TWL4030: use the twl4030-codec.h for register descriptions
Remove the register descriptions from the twl4030.h file and use
the linux/mfd/twl4030-codec.h instead, which has the codec
related register descriptions also.
- ASoC: TWL4030: Only update the needed bits in *set_dai_sysclk
Do not rewrite the whole register, but only update the needed
bits in set_dai_sysclk functions.

SoC Codec WM8350

- ASoC: Remove snd_soc_suspend_device()
The PM core will grow pm_link infrastructure in 2.6.33 which can be
used to implement the intended functionality of the ASoC-specific
device suspend and resume callbacks so drop them.
- ASoC: WM8350 capture PGA mutes are inverted
Cc: stable@kernel.org
- ASoC: Fix WM835x Out4 capture enumeration
It's the 8th enum of a zero indexed array. This is why I don't let
new drivers use these arrays of enums...
Cc: stable@kernel.org

SoC Codec WM8400

- ASoC: Remove dead code and labels
Remove the dead code and labels "card_err" in the error paths of
some codec drivers.
- ASoC: Remove snd_soc_suspend_device()
The PM core will grow pm_link infrastructure in 2.6.33 which can be
used to implement the intended functionality of the ASoC-specific
device suspend and resume callbacks so drop them.

SoC Codec WM8580

- ASoC: Debugged improper setting of PLL fields in WM8580 driver
Bug was caught while trying to use WM8580 as I2S master on SMDK.
Symptoms were lesser LRCLK read by CRO(41.02 instead of 44.1 KHz) Solved
by referring to WM8580A manual and setting mask value correctly and
making the code to not touch 'reserved' bits of PLL4 register.

SoC Codec WM8711

- ASoC: Fix build errors of wm8711.c with SPI
Fix a couple of typos and a missing header file inclusion to build wm8711.c
properly with CONFIG_SPI_MASTER.
- ASoC: Add TLV information to WM8711
- ASoC: WM8711 minor cleanups
Coding style changes only.
- ASoC: Add SPI support to WM8711
- ASoC: Factor out WM8711 cache I/O
- ASoC: Update WM8711 to driver model registration method
- ASoC: Add WM8711 CODEC driver
The WM8711 or WM8711L (WM8711/L) is a low power stereo DAC with an
integrated headphone driver. The WM8711/L is designed specifically for
portable MP3 audio and speech players. The WM8711/L is also ideal for
MD, CD machines and DAT players.

SoC Codec WM8727

- ASoC: Staticise wm8727 driver structure
- ASoC: Add support for the WM8727 DAC.
Add support for the Wolfson Microelectronics WM8727 DAC, this is a simple
non-configurable DAC.

SoC Codec WM8731

- ASoC: Add regulator support for WM8731

SoC Codec WM8753

- ASoC: wm8753: fix mapping when MONOMIX is set to Stereo
When MONOMIX is set to Stereo, Left PGA was not powered on but should be.
Add a mapping from Capture Left Mux to Capture Left Mixer to fix the issue.

SoC Codec WM8940

- ASoC: wm8940: Fix check on error code form snd_soc_codec_set_cache_io
Fix for typo in commit 8d50e447d19fec64adebeef55f2b60d695435412
ASoC: Factor out I/O for Wolfson 8 bit data 16 bit register CODECs

SoC Codec WM8974

- ASoC: Clean up WM8974 PLL configuration
Don't use a static for WM8974 PLL factors - we don't support more than
one device so it won't happen but no sense in leaving the race condition
hanging around. Also, pre_div is a single bit and it's a bit simpler if
we move the handling of the factor of 4 in the output into the
coefficient setup.
- ASoC: remove unused #include <linux/version.h>
Remove unused #include <linux/version.h>('s) in
sound/soc/codecs/ad1836.c
sound/soc/codecs/ad1938.c
sound/soc/codecs/wm8974.c

SoC Codec WM8993/4

- tree-wide: fix assorted typos all over the place
That is "success", "unknown", "through", "performance", "[re|un]mapping"
, "access", "default", "reasonable", "[con]currently", "temperature"
, "channel", "[un]used", "application", "example","hierarchy", "therefore"
, "[over|under]flow", "contiguous", "threshold", "enough" and others.
- ASoC: Rename controls with a / in wm_hubs
This renames from a character / to : of controls. A / occurs below error
messages.
ASoC: Failed to create IN2RP/VXRP debugfs file
ASoC: Failed to create IN2LP/VXRN debugfs file
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: Factor out analogue platform data from WM8993
This is also shared with newer CODECs.
- ASoC: Fully specify DC servo bits to update in wm_hubs
Avoids potential issues if we read back unexpected values during
a read/modify/write cycle.

SoC Codec WM9081

- trivial: remove unnecessary semicolons

SoC Codec WM9705

- ASoC: Revert missing reset_err in wm97*.c
The commit fe3e78e073d25308756f38019956061153267769
ASoC: Factor out snd_soc_init_card()
removed the error paths that are still valid for wm97* codecs, causing
the compile errors like
sound/soc/codecs/wm9705.c:399: error: label 'reset_err' used but not defined
sound/soc/codecs/wm9712.c:687: error: label 'reset_err' used but not defined
sound/soc/codecs/wm9713.c:1237: error: label 'reset_err' used but not defined
Revert the removed error path codes.

SoC Codec WM9712

- ASoC: Revert missing reset_err in wm97*.c
The commit fe3e78e073d25308756f38019956061153267769
ASoC: Factor out snd_soc_init_card()
removed the error paths that are still valid for wm97* codecs, causing
the compile errors like
sound/soc/codecs/wm9705.c:399: error: label 'reset_err' used but not defined
sound/soc/codecs/wm9712.c:687: error: label 'reset_err' used but not defined
sound/soc/codecs/wm9713.c:1237: error: label 'reset_err' used but not defined
Revert the removed error path codes.

SoC Codec WM9713

- ASoC: Revert missing reset_err in wm97*.c
The commit fe3e78e073d25308756f38019956061153267769
ASoC: Factor out snd_soc_init_card()
removed the error paths that are still valid for wm97* codecs, causing
the compile errors like
sound/soc/codecs/wm9705.c:399: error: label 'reset_err' used but not defined
sound/soc/codecs/wm9712.c:687: error: label 'reset_err' used but not defined
sound/soc/codecs/wm9713.c:1237: error: label 'reset_err' used but not defined
Revert the removed error path codes.

SoC Codec ads1174/8

- ASoC: Update ads117x to current APIs
Probe as a platform driver (ads117x) and remove the call to
snd_soc_init_card().
- ASoC: ADS117x ADC driver
This patch adds support for the TI ADS117x family of multichannel ADCs
and was sponsored by Shotspotter Inc.

SoC DaVinci

- ASoC: DaVinci: use edma_pause, edma_resume
Use edma_pause and edma_resume to make missing dma_events
less likely. This may not be needed, but it looks better.
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: DaVinci: pcm, fix underrun by using sram
Fix underruns by using dma to copy 1st to sram
in a ping/pong buffer style and then copying from
the sram to the ASP. This also has the advantage
of tolerating very long interrupt latency on dma
completion.
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: DaVinci: pcm, rename variables in prep for ping/pong
Rename variable master_lch to asp_channel
Rename variable slave_lch to asp_link[0]
Rename local variables:
lch to link
count to asp_count
src to asp_src
dst to asp_dst
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: DaVinci: i2s, reduce underruns by combining into 1 element
Allow the left and right 16 bit samples to be shifted out as 1
32 bit sample.
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: DaVinci: remove requirement that dma_params is 1st in structure
Remove requirement that dma_params is 1st in the structures
davinci_audio_dev and davinci_mcbsp_dev.
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: DaVinci: McASP FIFO related updates
The DMA params for McASP with FIFO has been updated so that it works for
various FIFO levels. A member- 'fifo_level' has been added to the DMA
params data structure. The fifo_level can be adjusted by the tx[rx]_numevt
platform data. This is relevant only for DA8xx/OMAP-L1xx platforms. This
implementation has been tested for numevt values 1, 2, 4, 8.
- ASoC: Davinci: Add audio codec support for DM365 EVM
This patch enables tlv320aic3101 support on DM365 EVM and
it was tested on DM365 EVM rev c.
Note: this patch was created based on temp/asoc branch.
- ASoC: DaVinci: Correct McASP FIFO initialization
McASP write FIFO registers should be modified for playback and read FIFO
registers for capture. Check the PCM mode before manipulating the
FIFO registers. Currently, irrespective of playback/capture both the
FIFOs are enabled or disbaled. This resulted in errors in audio loopback
mode.
- ASoC: Davinci: Fix race with cpu_dai->dma_data
This patch removes references to cpu_dai->dma_data.
It makes struct davinci_pcm_dma_params part of
struct davinci_mcbsp_dev or struct davinci_audio_dev.
It removes the unused name variable from davinci_pcm_dma_params.
- ASoC: DaVinci: Fix divide by zero error during 1st execution
When both playback and capture stream were open
davinci_i2s_hw_params was setting parameters for
the wrong stream. The fix for davinci_i2s_hw_params
is sufficient, but it looks like a race still happens
in davici_pcm_open. This patch also makes the race smaller
but the next patch provides a better fix.
- ASoC: DaVinci: Fixes to McASP configuration
McASP register settings are not correct for DSP mode of operation.
There is a channel swap initally. This patch provides fixes to
the register values for proper working.
Tested on DA830/OMAP-L137 EVM, DM6467 EVM.
- davinci: EDMA: multiple CCs, channel mapping and API changes
- restructure to support multiple channel controllers by using
additional struct resources for each CC
- interface changes visible to EDMA clients
Introduce macros to build IDs from controller and channel number,
and to extract them. Modify the edma_alloc_slot function to take an
extra argument for the controller.
Also update ASoC drivers to use API. ASoC changes
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
- Move queue related mappings to dm<soc>.c
EDMA in DM355 and DM644x has two transfer controllers while DM646x
has four transfer controllers. Moving the queue to tc mapping and
queue priority mapping to dm<soc>.c will be helpful to probe these
mappings from platform device so that the machine_is_* testing will
be avoided.
- add channel mapping logic
Channel mapping logic is introduced in dm646x EDMA. This implies
that there is no fixed association for a channel number to a
parameter entry number. In other words, using the DMA channel
mapping registers (DCHMAPn), a PaRAM entry can be mapped to any
channel. While in the case of dm644x and dm355 there is a fixed
mapping between the EDMA channel and Param entry number.
Reviewed-by: David Brownell <dbrownell@users.sourceforge.net>
- ASoC: davinci: i2c device creation moved into board files
Also, the codec setup data structure has to remain for successful
probe.

SoC Dynamic Audio Power Management

- ASoC: Fix suspend with active audio streams
When we get a stream suspend event force the power down since otherwise
the stream would remain marked as active. In future we'll probably want
to make this stream-specific and add an interface to make the power down
of other widgets optional in order to support leaving bypass paths
active while suspending the processor.
Cc: stable@kernel.org
Reported-by: Joonyoung Shim <jy0922.shim@samsung.com>
Tested-by: Joonyoung Shim <jy0922.shim@samsung.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: Serialize access to dapm_power_widgets()
Access to damp_power_widgets() is assumed to be single-threaded.
Concurrent accesses to dapm_power_widgets() may result in
unpredictable behavior.
Calls from:
close_delayed_work()
soc_codec_close()
soc_pcm_prepare()
soc_suspend()
soc_resume_deferred()
to snd_soc_dapm_stream_event() do not have the codec->mutex
taken to cover the call to dapm_power_widgets(). Thus, take
the mutex in these paths also to assure single-threaded use
of dapm_power_widgets().
- ASoC: Add virtual enumeration support for DAPM muxes
Sometimes it is desirable to have a mux which does not reflect any
direct register configuration but which will instead only have an
effect implicitly (for example, as a result of changing which parts
of the device are powered up). Provide a virtual mux for this purpose.
- ASoC: Push DAPM enumeration register change test out
Don't assume that enumerations are backed by registers when updating
mux power.
- ASoC: Simplify code for DAPM widget updates
We don't need to check for an event callback since we also check for
an appropriate event flag when applying mux status changes.
- ASoC: Allow per-route connectedness checks for supplies
Some chips with complex internal supply (particularly clocking)
arragements may have multiple options for some of the supply
connections. Since these don't affect user-visible audio routing
the expectation would be that they would be managed automatically
by one of the drivers.
Support these users by allowing routes to have a connected function
which is queried before the connectedness of the path is checked as
normal. Currently this is only done for supplies, other widgets
could be supported but are not currently since the expectation for
them is that audio routing will be under the control of userspace.
- ASoC: Fix SND_SOC_DAPM_LINE handling
Since the SND_SOC_DAPM_LINE can be input or output, additional check is
needed in order to determine if the widget is connected as input or
output.
When checking for connected outputs, if the widget is line, than check
if the sources list is not empty (line is connected as output)
For input endpoint check, when the widget is line, also check if the
sinks list is not empty (line is connected as input).
- ASoC: Fix display of stream name in DAPM debugfs
Also display streams all the time while we're here.

SoC Freescale

- ASoC: mpc5200: remove duplicate identical IRQ handler
The TX and RX irq handlers are identical. Merge them
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- sound: ASoC/mpc5200: fix enable/disable of AC97 slots
The MPC5200 AC97 driver is disabling the slots when a stop
trigger is received, but not reenabling them if the stream
is started again without processing the hw_params again.
This patch fixes the problem by caching the slot enable bit
settings calculated at hw_params time so that they can be
reapplied every time the start trigger is received.
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- sound: ASoC/mpc5200: add to_psc_dma_stream() helper
Move the resolving of the psc_dma_stream pointer to a helper function
to reduce duplicate code
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- sound: ASoC/mpc5200: Improve printk debug output for trigger
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- sound: ASoC/mpc5200: get rid of the appl_ptr tracking nonsense
Sound drivers PCM DMA is supposed to free-run until told to stop
by the trigger callback. The current code tries to track appl_ptr,
to avoid stale buffer data getting played out at the end of the
data stream. Unfortunately it also results in race conditions
which can cause the audio to stall.
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- sound: ASoC/mpc5200: Track DMA position by period number instead of bytes
All DMA blocks are lined up to period boundaries, but the DMA
handling code tracks bytes instead. This patch reworks the code
to track the period index into the DMA buffer instead of the
physical address pointer. Doing so makes the code simpler and
easier to understand.
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: Clean up error handling in MPC5200 DMA setup
Error handling code following a kzalloc should free the allocated data.
Error handling code following an ioremap should iounmap the allocated data.
The semantic match that finds the first problem is as follows:
(http://www.emn.fr/x-info/coccinelle/)
// <smpl>
@r exists@
local idexpression x;
statement S;
expression E;
identifier f,f1,l;
position p1,p2;
expression *ptr != NULL;
@@
x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...);
...
if (x == NULL) S
<... when != x
when != if (...) { <+...x...+> }
(
x->f1 = E
|
(x->f1 == NULL || ...)
|
f(...,x->f1,...)
)
...>
(
return \(0\|<+...x...+>\|ptr\);
|
return@p2 ...;
)
@script:python@
p1 << r.p1;
p2 << r.p2;
@@
print "* file: %s kmalloc %s return %s" % (p1[0].file,p1[0].line,p2[0].line)
// </smpl>

SoC Layer

- Add the build stub for soc/soc-utils.c
- ASoC: Add BCLK calculation utility for TDM mode too
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: ADS117x ADC driver
This patch adds support for the TI ADS117x family of multichannel ADCs
and was sponsored by Shotspotter Inc.
- ASoC: Add jack_status_check callback function for GPIO jacks
The jack_status_check callback function is the interface to check the
status of the jack. Some target provides the method to distinguish what
is the jack inserted - headphone jack, microphone jack, tvout jack, etc,
so we can implement it using the jack_status_check function.
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: move setting ac97 platformdata earlier than ac97 read/write
While probing, AC97 codec drivers and soc-core generically execute the
following sequence:
snd_soc_new_ac97_codec -> snd_soc_new_pcms -> reset ac-link/read AC97 ID
to detect ->... -> set platform_data to ac97 by soc-core
commit 474828a40f6ddab6e2a3475a19c5c84aa3ec7d60 adds platform_data to
snd_ac97 instance. But ac97 platform data hasn't given to snd_ac97
before actual ac97 operations. Then while ac97_read access platform_data
of snd_ac97 for detecting, NULL pointer oops will fire. That means old
platform_data patch doesn't work in real-life cases.
This patch moves the operation of setting ac97 platform_data earlier
than ac97 reading/writing operations. Then it makes platform_data of
AC97 become practically useful.
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: Add bit clock rate calculator utility functions
Many devices need to calculate the bit clock rate desired to
work out the clock configuration required for the device.
Provide utility functions to do this using both hw_params
structures and raw numbers.
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: Factor out snd_soc_init_card()
snd_soc_init_card() is always called as the last part of the CODEC probe
function so we can factor it out into the core card setup rather than
have each CODEC replicate the code to do the initialiastation. This will
be required to support multiple CODECs per card.
- ASoC: Move sysfs and debugfs functions to head of soc-core.c
A fairly hefty change in diff terms but no actual code changes, will be
used by the next commit.
- ASoC: Add support for the WM8727 DAC.
Add support for the Wolfson Microelectronics WM8727 DAC, this is a simple
non-configurable DAC.
- ASoC: refactor snd_soc_update_bits()
Introduce a wrapper call snd_soc_update_bits_locked()
that will take the codec mutex. This call is used
when the codec mutex is not already taken.
Drivers calling snd_soc_update_bits() may wish to
make sure the codec mutex is taken from the driver.
- ASoC: remove io_mutex
Remove the io_mutex. It has a drawback of serializing
all accesses to snd_soc_update_bits() even when multiple
codecs are in use. In addition, it fails to actually do
its task - during snd_soc_update_bits(), dapm_update_bits()
may also be accessing the same register which may result in
an outdated register value.
- ASoC: TWL4030: Driver registration via twl4030_codec MFD
Change the way how the twl4030 soc codec driver is
loaded/probed.
Use the device probing via tlw4030_codec MFD device.
- ASoC: Move dereference after NULL test
If the NULL test on jack is needed, then the derefernce should be after the
NULL test.
A simplified version of the semantic match that detects this problem is as
follows (http://coccinelle.lip6.fr/):
// <smpl>
@match exists@
expression x, E;
identifier fld;
@@
* x->fld
... when != \(x = E\|&x\)
* x == NULL
// </smpl>
- ASoC: Fix possible codec_dai->ops NULL pointer problems
Some codec DAIs like stac9766, wm9712, wm9713, ad1980 don't register themselves
then it loses to the chance to be given a null_dai_ops in snd_soc_register_dai
if they have no ops. When functions like soc_pcm_open, soc_pcm_hw_params etc.
access the ops field in these DAIs, panic will happen.
- ASoC: Codec driver for Texas Instruments tlv320dac33 codec
Driver for Texas Instruments TLV320DAC33 (SLAS546) low power stereo
audio DAC.
TLV320DAC33 is a stereo audio codec with integrated 24KB FIFO for low
power audio playback.
The digital interface can use I2S, DSP (A or B), Right and Left
justified formats.
DAC33 has stereo analog input, which can be bypassed to the analog
outputs.
Regarding to the internal 24KB FIFO the driver implements 'FIFO bypass'
mode (default) and nSample mode (FIFO is in use).
a) In 'FIFO bypass' mode the internal FIFO is not in use, the codec is
working synchronously as a normal codec (it needs constant stream of
data on the digital interface).
b) The nSample mode implementation uses one interrupt line from DAC33 to
the host:
Alarm threshold is set to 10ms of audio data (limit by the driver
implementation).
DAC33 will signal an interrupt, when the FIFO level goes under the
Alarm threshold.
The host will write to nSample register a value (number of stereo
samples), to tell DAC33 how many samples it should read in a burst from
the host. When the DAC33 received the number of samples, it disables the
clocks on the I2S bus. When the FIFO use again goes under the Alarm
threshold, DAC33 signals the host with an interrupt, and the process is
repeated.
- ASoC: Remove snd_soc_suspend_device()
The PM core will grow pm_link infrastructure in 2.6.33 which can be
used to implement the intended functionality of the ASoC-specific
device suspend and resume callbacks so drop them.
- ASoC: Add SPI support to WM8711
- ASoC: TPA6130A2 amplifier driver
Driver for Texas Instruments TPA6130A2 stereo headphone
amplifier.
The driver provides playback gain control and also pre-defined
DAPM_HP widgets and DAPM routings for power management.
The DAPM_HP widget names are:
"TPA6130A2 Headphone Left"
"TPA6130A2 Headphone Right"
From soc machine drivers to use with the tpa6130a2 amplifier,
the tpa6130a2_add_controls has to be called, which adds the alsa
controls and the DAPM routing needed for the tpa6130a2.
After that the machine driver can connect the codec's output
with 'TPA6130A2 Left' and 'TPA6130A2 Right':
{"TPA6130A2 Left", NULL, "CODEC LEFT OUT"},
{"TPA6130A2 Right", NULL, "CODEC RIGHT OUT"},
Internally the left and right channels are powered separately.
When none of the channels are needed the amplifier is powered
down:
hard power: valid GPIO number is passed within platform data
soft power: Using the software shutdown of the amplifier
- ASoC: Improve the debugfs hierarchy
Change the way the debugfs entries are created:
If the codec->dev is valid, than use:
debugfs/asoc/{codec->name}.{dev_name(codec->dev)}/
if the codec->dev is NULL:
debugfs/asoc/{codec->name}/
as root for the debugfs entries.
- ASoC: add support for multiple cards/codecs in debugfs
In order to support multiple codecs on the same system in the debugfs
the directory hierarchy need to be changed by adding directory per codec
under the asoc direcorty:
debugfs/asoc/{dev_name(socdev->dev)}-{codec->name}/codec_reg
/dapm_pop_time
/dapm/{widgets}
With the original implementation only the debugfs files are only
created for the first codec, other codecs loaded later would fail to
create the debugfs files (since they are already exist).
Furthermore in this situation any of the codecs has been removed, would
cause the debugfs entries to disappear, regardless if the codec, which
created them are still loaded (the one which loaded first).
- ASoC: Add PDM DAI format definition
Add DAI format definition for PDM interfaces.
- ASoC: Convert soc-cache to use C99 style initialisers for the table
- ASoC: Provide API for reordering channels
The patch adds an interface to set the relationship between audio
channel number and slot number. The interface should be really useful
because audio channel n doesn't always use slot n in all platforms. And
for some devices, the relationship even can change with sound mode
switch in 2.1,3.1,4.1,5.1,6.1,7.1 etc.
- ASoC: AK4671: add ak4671 codec driver
The AK4671 is a stereo CODEC with a built-in Microphone-Amplifier,
Receiver-Amplifier and Headphone-Amplifier.
The datasheet for the ak4671 can find at the following url:
http://www.asahi-kasei.co.jp/akm/en/product/ak4671/ak4671_f01e.pdf
- ASoC: Factor out I2C 8 bit address 8 bit data I/O
This patch is for the AK4671 codec driver using this format.
- ASoC: Add source argument to PLL configuration
More and more devices feature PLLs and FLLs with the ability to select
between multiple input clocks. In order to better support these devices
a new argument, source, has been added to the set_pll() configuration
API. Using set_clkdiv() is often difficult due to the need to stop the
PLL/FLL before any reconfiguration can be done.
- ASoC: Add WM8711 CODEC driver
The WM8711 or WM8711L (WM8711/L) is a low power stereo DAC with an
integrated headphone driver. The WM8711/L is designed specifically for
portable MP3 audio and speech players. The WM8711/L is also ideal for
MD, CD machines and DAT players.
- ASoC: Remove unuused hw_read_t

SoC S6000

- ASoC: Use DMA_BIT_MASK(32) instead of deprecated DMA_32BIT_MASK

SoC SH7760 AC97

- ASoC: sh: fsi: Add runtime PM support
This patch add support runtime PM.
Driver callbacks for Runtime PM are empty because
the device registers are always re-initialized after
pm_runtime_get_sync(). The Runtime PM functions replaces the
clock framework module stop bit handling in this driver.
Acked-by: Paul Mundt <lethal@linux-sh.org>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: sh: FSI: Add capture support
- ASoC: sh: FSI: Remove DMA support
SuperH FSI device have the hardware limitation to use DMA.
If DMA is used, LCD output will be broken.
Maybe there are some solution. But I don't know how to do it now.
This patch remove DMA support and use soft transfer.

SoC Texas Instruments OMAP

- ASoC: Fix build of OMAP sound drivers
There are build errors when building for some of the omap2/3 boards without
enabling sound:
sound/built-in.o:(.data+0x43bc): undefined reference to `soc_codec_dev_tlv320aic23'
sound/built-in.o:(.data+0x43cc): undefined reference to `tlv320aic23_dai'
Confused me quite a bit since the drivers that had references to the
codec weren't enabled. Turns out the Makefile was using the wrong
config option to enable them. Patch below.
Reported-by: Anand Gadiyar <gadiyar@ti.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: Adding OMAP3517 / AM3517 EVM support in ASOC
Adding support for OMAP3517 / AM3517 EVM in Alsa SoC.
- omap: headers: Move remaining headers from include/mach to include/plat
Move the remaining headers under plat-omap/include/mach
to plat-omap/include/plat. Also search and replace the
files using these headers to include using the right path.
This was done with:
#!/bin/bash
mach_dir_old="arch/arm/plat-omap/include/mach"
plat_dir_new="arch/arm/plat-omap/include/plat"
headers=$(cd $mach_dir_old && ls *.h)
omap_dirs="arch/arm/*omap*/ \
drivers/video/omap \
sound/soc/omap"
other_files="drivers/leds/leds-ams-delta.c \
drivers/mfd/menelaus.c \
drivers/mfd/twl4030-core.c \
drivers/mtd/nand/ams-delta.c"
for header in $headers; do
old="#include <mach\/$header"
new="#include <plat\/$header"
for dir in $omap_dirs; do
find $dir -type f -name \*.[chS] | \
xargs sed -i "s/$old/$new/"
done
find drivers/ -type f -name \*omap*.[chS] | \
xargs sed -i "s/$old/$new/"
for file in $other_files; do
sed -i "s/$old/$new/" $file
done
done
for header in $(ls $mach_dir_old/*.h); do
git mv $header $plat_dir_new/
done
- ASoC: Add support for IGEP v2
- ASoC: OMAP: enable Overo driver for CM-T35
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Acked-by: Steve Sakoman <steve@sakoman.com>
- ASoC: OMAP3 Pandora: update for TWL4030 codec changes
A while ago TWL4030 had it's playback stream name changed, but
pandora needs it for it's playback path. Update to correct stream
name so that playback works again.
Also mark VIBRA output as not connected.
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: Modifying the license string GPLv2 for OMAP3 EVM
Correcting the license string from GPLv2 -> GPL v2.
Found the problem while building OMAP3 ASoC driver as
module.
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: omap-mcbsp - add support for upto 16 channels.
This patch increases the number of supported audio channels from 4
to 16 and has been sponsored by Shotspotter Inc. It also fixes a
FSYNC rate calculation bug when McBSP is FSYNC master.
Acked-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Tested-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Acked-by: Jarkko Nikula <jhnikula@gmail.com>
- ASoC: Pandora: Pass SRG input clock frequency to the OMAP McBSP DAI
Upcoming change to omap-mcbsp.c require that machine drivers using OMAP
as a DAI master to pass sample rate generator input clock frequency to
the omap-mcbsp.c DAI driver.
Pandora is using 256*Fs output from the TWL4030 codec as an input clock to
the McBSP sample rate generator.
Tested-by: Grazvydas Ignotas <notasas@gmail.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ASoC: Modifying Kconfig/Makefile for AM3517 EVM
Modifying the Kconfig and Makefile in sound/soc/omap folder
to add support for OMAP3517 / AM3517 EVM in Alsa SoC.
- ASoC: OMAP3EVM: Use the twl4030_setup_data for headset pop-removal
The pop-removal specific values are configured for TWL4030 codec
for OMAP3EVM through this patch.
Acked-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
- ASoC: OMAP: Don't try to set unsupported OMAP_DMA_DATA_BURST_16 on OMAP1
After DMA burst mode has been introduced in sound/soc/omap/omap-pcm.c,
omap_pcm_prepare() unconditionally calls:
omap_set_dma_src_burst_mode(prtd->dma_ch, OMAP_DMA_DATA_BURST_16);
omap_set_dma_dest_burst_mode(prtd->dma_ch, OMAP_DMA_DATA_BURST_16);
Current implementation of those two functions found in
arch/arm/plat-ompa/dma.c doesn't support OMAP_DMA_DATA_BURST_16 on OMAP1 at
all, so they both end with BUG() on that machine. That results in
ASoC being completely unusable, at least on my OMAP5910 based Amstrad Delta.
The patch corrects the problem by not calling those two functions when run on
OMAP1 class based machines.
Created against linux-2.6.32-rc5.
Tested on Amstrad Delta.
Acked-by: Jarkko Nikula <jhnikula@gmail.com>
- ASoC: Amstrad Delta minor cleanups
Hi Mark,
Here is a patch that corrects small omissions I have found in my code.
- ASoC: Amstrad Delta: add info about the line discipline requirement to Kconfig help text
I thought it could be usefull to add some information on how to get the device
fully supported by loading a line discipline on the modem line.
- ASoC: OMAP: Add functionality to set CLKR and FSR sources in McBSP DAI
The McBSP1 port in OMAP3 processors (I believe OMAP2 too but I don't have
specifications to check it) have additional CLKR and FSR pins for McBSP1
receiver. Reset default is that receiver is using bit clock and frame
sync signal from those pins but it is possible to configure to use
also CLKX and FSX pins as well. In fact, other McBSP ports are doing that
internally that transmitter and receiver share the CLKX and FSX.
Add functionaly that machine drivers can set the CLKR and FSR sources by
using the snd_soc_dai_set_sysclk.
Thanks to "Aggarwal, Anuj" <anuj.aggarwal@ti.com> for reporting the issue.

Soc PXA2xx Raumfeld

- ASoC: pxa/raumfeld: adopt new snd_soc_dai_set_pll() API
ALSA's for-2.6.33 branch has a new source argument to
snd_soc_dai_set_pll().
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
- ALSA: ARM: add Raumfeld audio support
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>

Sound Scape driver

- ALSA: sscape: coding style fixes
Fix coding style errors in the driver.
Also, add missing argument for CMD_XXX_MIDI_VOL command.
- ALSA: sscape - Remove invalid __devinitdata to module parameters
Module parameters shouldn't be marked as __devinitdata since they can be
referred via sysfs even after probing.
- ALSA: sscape: force AD1848 codec mode on old Soundscape
Old Soundscape cards (pre PnP) work only with AD1848 codecs.
If the CS4231 codec is installed it must be used in AD1848
compatible mode.
Also, add gameport support and remove an unused mpu field.
- ALSA: sscape: remove MIDI instances counting with limit ULONG_MAX
There is no sense to limit open MIDI connections with limit
as high as ULONG_MAX.
Also, convert more messages to use the snd_printk.
Correct few old and misleading comments as well.
- ALSA: sscape: convert to firmware loader framework
The conversion solves the problem that firmware size was set to 64KB
while non PnP cards have 128KB firmware files.
An additional firmware initialization code has been moved from the OSS
driver.
- ALSA: sscape: add supoort for SPEA Media FX/Reveal SC-600
Move code from the OSS sscape driver in order to support old Soundscape OEM models.

SuperH DAC audio driver

- ALSA: sh: add SuperH DAC audio driver for ALSA V4
This is a port of the sound/oss/sh_dac_audio.c driver.
The driver uses an on-chip 8-bit D/A converter, which has a speaker connected
to one of its channels, found in several ancient HP machines.
For interrupts it uses a high-resolution timer (hrtimer).
Tested on SH7709 based hp6xx (HP Jornada 680/690 and HP Palmtop 620lx/660lx).
Also, since OSS Emulation works, the old OSS sound/oss/sh_dac_audio.c driver
would be obsolete soon, and it could be removed.
Acked-by: Paul Mundt <lethal@linux-sh.org>

TEA575x tuner

- ALSA: tea575x-tuner: fix mute
Fix mute state reporting in tea575x-tuner.
This fixes mute function in kradio on SF64-PCR radio card.

USB

- sound: add Edirol UA-101 support
Add experimental support for the Edirol UA-101 audio/MIDI interface.

USB USX2Y

- usb: fix compilation issues against latest alsa-kernel tree
- Fix a missing patch chunk in usx2yhwdeppcm.patch
- Refresh vm_ops related patches
The patches got broken due to the upstream changes of vm_ops to the
const pointer. Refreshed now.
- ALSA: snd-usb-us122l: add product IDs of US-122MKII and US-144MKII
I added the product IDs of the new revisions of the devices, so owners
can test whether this suffices to make them work. Patched against ALSA
snapshot 20091207.
- sound: usxxx: cleanup chip field
The chip field is no longer needed. Move those of its fields that are
actually used to the device structure itself.
- sound: usb: make the USB MIDI module more independent
Remove the dependecy from the USB MIDI code on the snd_usb_audio
structure. This allows using the USB MIDI module from another driver
without having to pretend to be the generic USB audio driver.
- ALSA: snd-usb-us122l: corrent error number for not probing US-144 on ehci-hcd
snd-usb-us122l: corrent error number for not probing US-144 on ehci-hcd
This is the correct error number for telling the USB system that this
driver is not for the device.
- ALSA: snd-usb-us122l: add support for US-144
Adds support for US-144 when attached on USB1.1.
Unlike the US-122L it uses both USB interfaces 0 and 1.
- const: mark struct vm_struct_operations
* mark struct vm_area_struct::vm_ops as const
* mark vm_ops in AGP code
But leave TTM code alone, something is fishy there with global vm_ops
being used.

USB caiaq

- ALSA: snd-usb-caiaq: Bump version number to 1.3.20
Acked-by: Daniel Mack <daniel@caiaq.de>
- ALSA: snd-usb-caiaq: Lock on stream start/unpause
Fix a bug which can result in white noise from the driver after stream
start or unpause.
Acked-by: Daniel Mack <daniel@caiaq.de>
- ALSA: snd-usb-caiaq: Missing lock around use of buffer positions
Fix a race which causes snd_pcm_update_hw_ptr_pos() to report a bug.
Acked-by: Daniel Mack <daniel@caiaq.de>

USB generic driver

- usb: fix compilation issues against latest alsa-kernel tree
- Add hweight16() wrapper for usb/usbmidi.c
- sound: add Edirol UA-101 support
Add experimental support for the Edirol UA-101 audio/MIDI interface.
- ALSA: usb - Fix mixer map for Hercules Gamesurround Muse Pocket LT
Muse Pocket use brocken mixer names, so alsamixer and PA can't use it correctly
This patch add quirk to overwirte default mixers.
- ALSA: sound: usbmidi: Use hweight16
Use hweight16 instead of Brian Kernighan's/Peter Wegner's method
- sound: usb-audio: add Roland UA-1G support
Add support for the Roland UA-1G audio interface.
- ALSA: usb - Quirk to disable master volume control in PCM2702
Disable the master volume control in the PCM2702 chipset.
The datasheet documents two independent channel volume controls, one
master mute control and one master volume control. All controls are
fully functional except for the master volume control, which returns
USB stalls on all GET requests.
- sound: usb: make the USB MIDI module more independent
Remove the dependecy from the USB MIDI code on the snd_usb_audio
structure. This allows using the USB MIDI module from another driver
without having to pretend to be the generic USB audio driver.
- ALSA: usb-audio: fix combine_word problem
Fix combine_word problem where first octet is not
read properly. The only affected place seems to be the
INPUT_TERMINAL type. Before now, sound controls can be created
with the output terminal's name which is a fallback mechanism
used only for unknown input terminal types. For example,
Line can wrongly appear as Speaker. After the change it
should appear as Line.
The side effect of this change can be that users
can expect the wrong control name in their scripts or
programs while now we return the correct one.
Probably, these defines should use get_unaligned_le16 and
friends.
Cc: <stable@kernel.org>
- sound: usb-audio: allow switching altsetting on Roland USB MIDI devices
Add a mixer control to select between the two altsettings on Roland USB
MIDI devices where the input endpoint is either bulk or interrupt.
- ALSA: usb - Use strlcat() correctly
Don't pass the advanced position to strlcat() but just gives the buffer
head position so that the max size limit can be checked correctly.
Introduced a new helper function to standaralize strlcat() calls.
- ALSA: Re-export snd_pcm_format_name() function
Re-export snd_pcm_format_name() function to be used outside the PCM core.
As a first example, usbaudio is changed to use it now again.

Utils

- Add a workaround for bitrev8() in i2c/cs8427.c
- Grammatical corrections in INSTALL and utils/setup-alsa-kernel script

VIA82xx driver

- sound: via82xx: deactivate DXS controls of inactive streams
Activate the DXS volume controls only when the corresponding stream is
being used. This makes the behaviour consistent with the other drivers
that have per-stream volume controls.
- sound: via82xx: move DXS volume controls to PCM interface
The "VIA DXS" controls are actually volume controls that apply to the
four PCM substreams, so we better indicate this connection by moving the
controls to the PCM interface.
Commit b452e08e73c0e3dbb0be82130217be4b7084299e in 2.6.30 broke the
restoring of these volumes by "alsactl restore" that most distributions
use; the renaming in this patch cures that regression by preventing
alsactl from applying the old, wrong volume levels to the new controls.
http://bugzilla.kernel.org/show_bug.cgi?id=14151
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=532613
Cc: <stable@kernel.org>

WSS library

- ALSA: opti93x: move controls definitions to opti93x driver
Move OPTi93x controls definitions to the opti93x driver
from the common wss-lib library module. These controls
are used only by the opti93x driver.
Also, fix capture source names. They are the same as
opl3sa2 names.
- ALSA: cs4236: update control names
Update control names to be more closer to their meaning.
Change the "Mono" name to the "Beep" as this line is usually
used to forward the PC beeper signal to sound card's output.
Update names for both cs423x and wss.
Clean up cs4235 controls according to the cs4235 doc. Rename
some of the cs4235 controls to be consistent with the cs4236's
ones.
Also, delete one misnamed cs4231 register define.
- ALSA: cs4236: detect chip in one pass
The cs4236 was two step detection with call to the snd_wss_free()
between two steps. The snd_wss_free() did not free a sound device
created in the snd_wss_create(). This caused an OOPS during module
removal as the same sound device was released twice. The same OOPS
happened if the cs4236 module loading failed.
Fix this by adapting the snd_cs4236_create() to correctly work with
chips less capable then cs4236. The snd_cs4236_create() behaves the
same as the snd_wss_create() if the chip is less capable than the cs4236.
- ALSA: wss: reuse CS4231 controls for AD1848
The C4231 control set is a superset of the AD1848 control
set so reuse the CS4231 controls definitions for the AD1848.
- ALSA: wss: convert CS4231 mixer to dB scale
Convert CS4231 mixer to dB scale after AD1848 mixer.
Also, add missing microphone boost control for the AD1848
and correct wrong bits for loopback volume on the AD1848.

alsa-lib

Core

- Release v1.0.22
- configure.in: fix --without-softfloat
Using --without-softfloat or --with-softfloat=no results in using
softfloat. This patch fixes the problem.
- Define _GNU_SOURCE so that <fcntl.h> gives O_CLOEXEC
- Open device nodes with close-on-exec flag
- configure.in: Add m4 check for new AM_SILENT_RULES
Kbuild like output for automake (>=1.11). It's no hard dependency as it needs
the newest automake, but enable it by default if it is available. To turn it off
you can either use --disable-silent-rules at configure time or make V=0 at
compile time.
- cvscompile: Remove in favour of gitcompile.
Alsa-lib is no longer hosted in cvs but in git and the only difference between
both helper scripts is the name of the NO_MAKE env VAR check.
- Release v1.0.21a

Control API

- Remove redefinition of _GNU_SOURCE and __USE_GNU
Now _GNU_SOURCE is already defined globally in configure.in.
- Remove old commented-out FD_CLOEXEC code
- namehint: list card independent devices only once
Card-independent devices such as "null" or "pulse" should only be
added once, not once for each card.
- namehint: Allow snd_device_name_hint to search for CTL devices.
- namehint: add missing list->card initialization
list->card is wrongly assumed to be initialized, but the previous
initialization is within a conditional that is false when only
card-independent devices are found. (This is the case when searching
for mixers on my system; the end result is that the "pulse" mixer is
listed three times.)
- Fix corruption after snd_device_name_hint()
snd_device_name_hint() corrupts the config name space after its call.
This results in the error from the suceeding calls of snd_pcm_open()
after snd_device_name_hint().
The bug is in try_config() in namehint.c; it calls snd_config_delete(res)
but res can be two different objects in the function. One is the object
obtained via snd_config_search_definition(), and another is the one from
snd_config_search_alias_hooks(). The former is the expanded objects,
thus it should be freed. But, the latter is a reference, and must not be
freed.
This patch adds the check to free or not.
Reported-by: John Lindgren <john.lindgren@tds.net>
- hcontrol: fix compare_default function to handle also id.device and id.subdevice
In case when kcontrol differs only by device or subdevice numbers, the
find function can give wrong results.
- control: Remove unused variable.

HWDEP API

- Remove old commented-out FD_CLOEXEC code

Mixer API

- mixer: fix enum check
The recent CHECK_ENUM fix uncovered a bug in snd_mixer_selem_is_enumerated()
which would now return -EINVAL for any non-enum control, which would be
interpreted as 'true' by callers like amixer or alsamixer.
- simple_none.c uses HAVE_SOFT_FLOAT it has to include config.h
for this to work properly.
- Fix CHECK_ENUM() in simple.c
simple.c: In function ‘snd_mixer_selem_is_enumerated’:
simple.c:881: warning: suggest parentheses around operand of ‘!’ or change ‘&’ to ‘&&’ or ‘!’ to ‘~’
- mixer: Add Speaker and Beep names to the weight list
Added strings "Speaker" and "Beep" to the weight list so that the entries
appear in more appropriate positions.

PCM API

- Update pcm doc strings
This is information I needed and is based on my understanding of information
from Takashi Iwai.
- Remove old commented-out FD_CLOEXEC code
- pcm_rate_linear: Annotate unused function parameter to avoid compiler warnings.
- dmix - Fix snd_pcm_info()
Call the slave snd_pcm_info() as long as possible in the direct plugins
(i.e. when the PCM device could be opened with O_APPEND mode).
This allows dmix/dsnoop as a salve for PCM hook controls.
- pcm_hw: Always use delay ioctl in snd_pcm_delay()
As the result of snd_pcm_delay() is affected not only by hw_ptr
and appl_ptr, but also by 'runtime->delay' property,
either SNDRV_PCM_IOCTL_DELAY or SNDRV_PCM_IOCTL_STATUS ioctl
must be used to get the correct result.
Previously 'runtime->delay' was ignored in case 'hw->sync_ptr'
was used.
- PCM - Change the hw_params determination order
In snd_pcm_hw_params_choose(), set the buffer size before the period
size and time as default. This will give more useful configuration for
most of apps, i.e. larger buffer size.
For apps that require the old behavior, now the function checks the
environment variable $LIBASOUND_COMPAT. If this variable is set to
non-empty, the hw_params is determined in the old way, first period
then buffer sizes.

RawMidi API

- Remove old commented-out FD_CLOEXEC code

Sequencer API

- Remove old commented-out FD_CLOEXEC code

Timer API

- Remove redefinition of _GNU_SOURCE and __USE_GNU
Now _GNU_SOURCE is already defined globally in configure.in.
- Remove old commented-out FD_CLOEXEC code
- Defined symbols exposing the hrtimer to applications.

ALSA Lisp

- alisp: Comment out an unused function to avoid compiler warnings.
The function should be useful later so keep it in place and just comment it out
until it is actually used.

Configuration

- Change dmix.conf to accept user configuration from defaults.dmix.<driver_id>.xxx
An attempt to fix problem described in reverted patch "Fix driver conf
parsing in snd_config_hook_load_for_all_cards()".
- Revert "Fix driver conf parsing in snd_config_hook_load_for_all_cards()"
This reverts commit 96da0c842d14b40ce8e37726b259229634b3aa21.
This way of fix brokes card-specific configuration loading.
See http://bugzilla.redhat.com bug#521988 for details.
Appropriate way to handle this problem is to fix the dmix configuration file.

Dynamic Loader helpers

- Remove redefinition of _GNU_SOURCE and __USE_GNU
Now _GNU_SOURCE is already defined globally in configure.in.
- Cache libasound.so access in snd_dlopen
Speed up repeated calls to snd_dlopen by caching the path to
libasound.so; this reduces the instructions executed by
snd_device_name_hint by 40 percent.

Kernel Headers

- Defined symbols exposing the hrtimer to applications.

alsa-utils

Core

- Release v1.0.22

ALSA Control (alsactl)

- alsactl: fix error path code in init_parse.c
If initialization file (-i option) does not exists, the free_space()
function was called with NULL pointer.
- alsactl: init - default - initialize also "Digital Input Source"
Set "Digital Input Source" to "Digital Mic 1" or "Mic" (fallback).
- alsactl init: Add CTL{do_search} and CTL{do_count} parsers
To increase configuration readability, add CTL{do_search} and CTL{do_count}
actions. The old PROGRAM=="__ctl_search" notion is also allowed.
Add CTL{write} to XML documentation.
- alsactl init: use empty GOTOs in init/default file to increase readability
- alsactl: introduce CTL{write} to match directly written CTL values
- alsactl - Initialize Speaker volume to 0dB when Master is present
Initialize Speaker volume to 0dB as well as Headphone when Master
is present. Also initialize Headphone,1 for machines with dual
headphones.
- alsactl init: Fix typo "(" -> "{" in Headphone default rule
Reported-by: Philipp Jocham <philipp.jocham@gmx.net>

Speaker Test

- speaker-test: not all sample formats are supported - show only supported ones
Also, check if given format is supported.
- speaker-test: add -d (--debug) option to show PCM parameters

aplay/arecord

- arecord: fix wrong chunk_size initialization when verbose and mmap flags are set
- aplay - Show available formats
Report available sample formats in aplay/arecord when currently selected
one doesn't work.

alsa-tools

Core

- Release v1.0.22

Envy24 Control

- envy24control: Changing the Multi Track Peak control from MIXER to PCM type
* The "Multi Track Peak" control is now of PCM type, to avoid
confusing users in other alsa mixers.

alsa-plugins

Core

- Release v1.0.22

A52 Output plugin

- a52 - set channel layout with recent libavcodec
As of SVN r18631 (2009-04-20) A52 encoder of libavcodec outputs a
warning at run-time if channel layout is not specified.
Fix that by setting the channel layout in a52_prepare() when building
against libavcodec revision that supports this.
- a52 - fix 5.1 channel order with recent libavcodec
As of SVN r18540 libavcodec expects 5.1 channel audio with SMPTE channel
order. Fix ALSA a52 plugin to use that order when built against such a
libavcodec. Minor version of libavcodec was raised on the same day (Apr
17th 2009), so use that for the check.

Automatic upmix / downmix plugins

- upmix - Add 7.1 support

alsa-python

Core

- Release v1.0.22

pyalsa.alsahcontrol module

- hcontrol: fix a typo
- hcontrol: allow constructing Elem with numid
snd_hctl_find_elem has the (undocumented) requirement that the ID must
have all fields set. Copy the necessary workaround from amixer.
- hcontrol: add poll_fds property
The existing register_poll function works with Python's select.poll
object, but not with the main loop of GUI toolkits that use their own
event source implementation. Therefore, add a property to get the raw
file handles.
- hcontrol: fix memory leak
The pfd array was never freed. In this function, we can just replace
malloc with alloca.
- hcontrol: fix variable type
The last parameter of PyString_AsStringAndSize is Py_ssize_t, not int.
This shuts up a compiler warning.
Custom Search
Personal tools
Namespaces

Variants
Actions
Navigation
wiki
Toolbox