alsa-lib/src
Stephen Warren 529706fc32 snd_tlv_convert_from_dB: fix decreasing gain across entries
Currently, for a TLV consisting of TLV_DB_SCALE_ITEMs, if e.g. alsamixer
calls snd_mixer_selem_set_playback_dB() with a value that is in-between
two TLV_DB_SCALE_ITEMs, and xdir is negative, the selected raw hardware
value is the minimum in the first range above that value, rather than the
maximum in the last range below that value.

The user-visible symptom is that in alsamixer, pressing the down key to
reduce the value sticks at certain points, and cannot be incrementally
reduced any further, although directly selecting a much lower value (e.g.
by pressing 0..9) works as expected. This is triggered e.g. by
sound/soc/codec/max98090.c's max98090_hp_tlv[].

Fix this by checking whether xdir is positive or not, rather than
checking whether it has a non-zero value. The code to select the previous
range's max value is already present. This matches how xdir is used in
other parts of the code.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2013-10-01 12:24:45 +02:00
..
alisp Fix several spelling errors for “writable” and derivatives. 2013-05-16 10:13:49 +02:00
compat Corrections by Kevin Conder <kconder@interaccess.com> 2002-03-12 20:14:33 +00:00
conf HDA-Intel: present up to 8 HDMI/DP outputs via "hdmi" device 2013-09-26 12:01:33 +02:00
control snd_tlv_convert_from_dB: fix decreasing gain across entries 2013-10-01 12:24:45 +02:00
hwdep Allow specifying the max number of cards 2013-05-24 17:21:15 +02:00
mixer all places: doxygen cleanups 2013-04-08 16:42:24 +02:00
pcm pcm: Fix a wrong value shown in the error message in rate plugin 2013-08-08 12:29:09 +02:00
rawmidi Fix several spelling errors for “writable” and derivatives. 2013-05-16 10:13:49 +02:00
seq seqmid: restore sequencer address prefix match feature 2013-05-13 21:16:36 +02:00
timer Merge kernel uapi/sound/asound.h and asequencer.h 2012-11-26 18:02:17 +01:00
ucm ucm: Fix segfault when device argument is missing from _sw{dev, mod} 2013-05-24 13:03:54 +02:00
async.c Make some static tables and strings constants. 2008-11-21 13:04:41 +01:00
conf.c all places: doxygen cleanups 2013-04-08 16:42:24 +02:00
confmisc.c Allow specifying the max number of cards 2013-05-24 17:21:15 +02:00
dlmisc.c Compile in the ALSA search path instead of relying on ld.so.conf. 2013-05-16 10:13:28 +02:00
error.c all places: doxygen cleanups 2013-04-08 16:42:24 +02:00
input.c Make all the remaining ops structure constants. 2008-11-21 20:48:33 +01:00
Makefile.am real fix for the UCM code compilation issue 2011-01-27 14:56:53 +01:00
names.c Remove docs for snd_names_list and snd_names_list_free 2012-01-19 12:35:20 +01:00
output.c fix doc errors 2009-08-04 09:17:20 +02:00
shmarea.c Changed Jaroslav Kysela's e-mail from perex@suse.cz to perex@perex.cz 2007-10-15 10:24:55 +02:00
socket.c Move snd_is_local() to socket.c 2005-11-30 11:31:18 +00:00
userfile.c Changed Jaroslav Kysela's e-mail from perex@suse.cz to perex@perex.cz 2007-10-15 10:24:55 +02:00
Versions.in Fix wrong exported functions 2008-02-04 14:15:44 +01:00