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.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
for this to work properly.
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
simple.c: In function ‘snd_mixer_selem_is_enumerated’:
simple.c:881: warning: suggest parentheses around operand of ‘!’ or change ‘&’ to ‘&&’ or ‘!’ to ‘~’
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Added strings "Speaker" and "Beep" to the weight list so that the entries
appear in more appropriate positions.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This makes it possible to write them to .data.rel.ro or to .rodata if
there is no relocation involved (arrays of character arrays).
Signed-off-by: Diego E. 'Flameeyes' Pettenò <flameeyes@gmail.com>
Use "const char *const []" as type for string arrays, or convert to
"const char [][x]" when it makes sense.
Signed-off-by: Diego E. 'Flameeyes' Pettenò <flameeyes@gmail.com>
Fixed a long-standing bug that the values of global or simple mixer
elements aren't updated when dir = SM_CAPT is given.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Rename the local functions to snd1_* so that they won't be exported
out of alsa-lib.
Some functions are still kept because aserver requires them. Sigh.
When calculating the value range of a control, the variables cannot be
initialized with zero because this would prevent the minimum from having
a value above zero or the maximum from having a value below zero.
Putting assert in the public macros isn't good idea at all.
Let's get rid of them.
Also, clean up snd*_alloca() functions to use a helper macro
instead of copy and paste.
Export helper functions to convert dB level and range.
snd_tlv_*dB*() are to convert dB level or range directly from TLV data.
snd_ctl_*dB*() are to get dB level or range from a control element.
Some drivers use "Input Source" as the capture source mixer element because
mixer abstraction layer can't handle multiple "Capture Source" elements.
This patch adds a hack to handle Input Source as a capture route, and let
mixer apps know that it's a capture stuff, at least.
reasons:
- rapid development
- class-like code structure
- more readable code
features:
- hcontrol binding is managed from python (opportunity to create
virtual mixer without driver or join multiple cards to behave as one)
Added --with-configdir and --with-plugindir options to configure
which specify the directories for config files and plugin objects
respectively. The default paths when these options are not
specified are unchanged.
- add snd_device_name_hint() and snd_device_name_free_hint() functions
- add snd_ctl_iface_conf_name() functions
- do not accept parameters for the plugin definition without @args section
- add defaults.pcm.dmix.card/device and dsnoop.card/device definitions
- add hints for HDA-Intel.conf, pcm/dmix.conf, pcm/dsnoop.conf and alsa.conf
- add test/namehint test utility
- doxygen related cleanups
If volume or switch write fails, the internal contents for element
is changed, but it is wrong. Reread the whole simple element in this
case to get correct values.
- separated the "base library" from ac97.c (dynamically loaded)
- added necessary handling of all private structures
- added selector and sid registration functions and handling code
- added basic code for hda.c (yeah, my notebook has this hw)
- midlayer cleanups and simplification
- probably broke the "none" abstraction code somehow (not intensively tested
midlayer changes)
- trying to implement ac97 module
- far from finished
- common code should be moved to alsa-lib as core for other modules
- perhaps simple_abst.c can be based on this common code, too