hdajackretask: Add new program for easy retask of hda pin nodes
Most HDA Intel soundcards are to some degree retaskable, i e can be
used for more than one thing. This tool is a GUI to make it easy to
retask your jacks - e g, turn your Mic jack into an extra Headphone,
or why not make them both line outs and connect them to your surround
receiver?
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Adrian Knoth [Fri, 29 Jul 2011 15:57:30 +0000 (17:57 +0200)]
hdspmixer: Fix temporary RPM constant
RPM in hdsp.h's HDSP_IO_Type is 4, not 5. This patch isn't exactly
necessary here, because the constant is only used internally, but to
avoid confusion if somebody ever reads the code, let's use the correct
value.
Note that we'll drop it after the next alsa-lib release.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Thu, 28 Jul 2011 21:45:48 +0000 (23:45 +0200)]
hdsploader: Temporary define for RPM
Right now (1.0.24.1), alsa-lib's hdsp.h doesn't know about the RPM. To
avoid a strong dependency on unreleased code, temporary provide the
define here.
It can be dropped as soon as a new version of alsa-lib will be released,
thus effectively making it the required minimum version for alsa-tools.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Thu, 28 Jul 2011 21:45:46 +0000 (23:45 +0200)]
hdspmixer: Add support for RME RPM
This patch adds support for the RME RPM devices. It's mostly based on
Florian Faber's previous patch against hdspmixer 1.0.23,
forwarded-ported to the current hdspmixer code.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Fri, 8 Apr 2011 17:58:36 +0000 (19:58 +0200)]
hdspmixer: Handle channel count in old (v1.0.23) preset file format
When reading a preset file, v1.0.23 only used 26 channels instead of 64.
Reading 64 channels from a 26 channel file won't work, hence set it
depending on the file format version.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Fri, 8 Apr 2011 17:58:35 +0000 (19:58 +0200)]
hdspmixer: Fix read/write from/to preset files on MADI-like cards
The old hdspmixer (prior to e24e56795ea57e3dd7da45063ab71f04e231192d,
that is pre-1.0.24) has used the hard-coded value "14" for
reading/storing 14 ints from/to preset files, however, it's actually
HDSP_MAX_DEST that should be used.
HDSP_MAX_DEST was bumped from 14 to 32 to allow for MADI cards (32
stereo pairs equal 64 output channels on MADI cards)
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Mon, 4 Apr 2011 12:34:30 +0000 (14:34 +0200)]
hdspmixer: Initialize headphones out in presets
Cards like the multiface/digiface have additional headphones out. Those
were not initialized in the presets due to wrong loop boundaries:
maxdest represents the amount of physical stereo pairs, and chnls is
either equal or less, so the output fader array needs more iterations
than the playback section.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Mon, 4 Apr 2011 12:34:29 +0000 (14:34 +0200)]
hdspmixer: Recall 1st preset on all cards, not just on the first
With the new "store current settings to the virtual 9th preset" before
switching cards code, one needs to make sure the actual mixer state is
loaded with sane values, either from the preset file or a generic
builtin preset.
Calling preset_change(1) is sufficient, setting all the required data.
However, in case of more than one RME card in the system, one needs to
call this function for each card, otherwise, some of the cards store
uninitialized data to the 9th preset, resulting in a weird mixer state
afterwards.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Mon, 4 Apr 2011 12:34:28 +0000 (14:34 +0200)]
hdspmixer: Save preset before switching cards
When running with more than one card, switching cards would lose any
changes made to the current card. To avoid this inconvenience, save the
current settings to the virtual 9th preset and restore them when
switching back.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Mon, 4 Apr 2011 12:34:27 +0000 (14:34 +0200)]
hdspmixer: Add a 9th pseudo preset
When switching cards, all current settings are lost. To have a place
where to store them, let's add a virtual 9th preset which can be used as
a temporary scratch pad.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Tue, 22 Mar 2011 10:53:47 +0000 (11:53 +0100)]
hdspmixer: Save and restore level meter settings
Each preset can have a different level meter setting (FS samples for
OVR, release rate, minimum level and so on).
These settings were not saved/restore to/from the on-disk file. This
patch adds the missing functionality.
Unfortunately, the current on-disk format is a 1:1 binary dump from
memory without any header information. In other words, this commit will
break backward compatibility with older hdspmixers, that is, new preset
files cannot be read by older versions of hdspmixer. However, we can
still read the old mix files and save them in the new format.
I hence bumped the version, so users know to re-create their files after
upgrading to 1.11.
Bug discovered by Raphaël Doursenaud from ematech.fr.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Mon, 7 Mar 2011 18:03:08 +0000 (19:03 +0100)]
hdspmixer: [cosmetics] Break code into logic blocks
Convert the if-then-else-if chain into standalone if-then blocks to
improve readability. A switch-case statement would also do the trick,
but it's less readable.
No (intended) semantic change.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Mon, 7 Mar 2011 18:03:05 +0000 (19:03 +0100)]
hdspmixer: Introduce output channel count for all cards.
Some cards (like multiface) have more physical output ports than
playback ports, mostly because of additional headphones out.
For those cards, the old abstraction model of channels_input and
channels_output doesn't fit, so let's introduce channels_output.
Of course, channels_output is always 2*max_dest at the given speed_mode
(SS/DS/QS), so one could extend this idea, store all destination
settings in channels_output[3] (one for each speed mode) and rip off the
massive code duplication for setting maxdest or max_dest respectively.
Note that dest_map_whatever_speed_mode's array size indirectly defines
the right value for channels_output (read: even more unwanted
redundancy)
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Mon, 7 Mar 2011 18:03:03 +0000 (19:03 +0100)]
hdspmixer: Fix preset activation segfault on AES(32)
When selecting preset 6 or 7 on AES(32), hdspmixer has caused a segfault
due to indirect out of bound access on the destination label array.
The amount of destinations is the number of physical stereo
pairs, so it's usually half the channel count, in some cases one more if
there are additional headphone jacks.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Tue, 1 Mar 2011 09:42:27 +0000 (10:42 +0100)]
hdspmixer: Fix labels on H9652
The H9652 uses the same layout as the Digiface, except Digiface features
an additional headphones out. That's why the channel mappings are the
same, but Digiface has mexdest=14 while H9652 has maxdest=13 (12 ADAT
pairs, another pair for S/PDIF and headphone-L/R on Digiface)
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Tue, 1 Mar 2011 09:42:26 +0000 (10:42 +0100)]
hdspmixer: Lower nesting depth in label assignment
This fix is mostly cosmetic, the long if-then-else-if-chain was rather
confusing. To improve code readability, use simple if-then statements
and leave the function as soon as a match is found.
Clear code would probably use a two-dimensional map, but it seems rather
overengineered.
Last but not least, the non-matching case was augmented by assigning a
generic "1", "2", "3" .. channel naming schema to prevent hdspmixer from
crashing.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Mon, 28 Feb 2011 13:56:07 +0000 (14:56 +0100)]
hdspmixer: Fix compiler warnings.
All compiler warnings were caused by a conversion from "foo" to a
char pointer. Given that the string itself really is constant, simply
add the keyword to make g++ happy.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Thu, 24 Feb 2011 20:33:31 +0000 (21:33 +0100)]
hdspmixer: Fix metering for non-MADI cards
Currently, hdsp and hdspm use different ioctls. Consequently, the metering
is wrong. To avoid code duplication, use pointers to the corresponding
struct members.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Thu, 24 Feb 2011 20:33:30 +0000 (21:33 +0100)]
hdspmixer: Fix ALSA snd_ctl_open error when running with three cards.
If three (or more) RME cards are installed in one box, hdspmixer will
try to open a non-existing 4th card, causing an error in snd_ctl_open
and finally terminates itself.
cards[] is a static array, and one must not read beyond the last
element. The solution is far from elegant, however, it's a rather
unintrusive change.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Thu, 24 Feb 2011 20:33:29 +0000 (21:33 +0100)]
hdspmixer: Bump version number to 1.10
Florian Faber's last hdspmixer64 version was 1.9, so let's make this the
successor (contains everything that was in 1.9 and also Fredrik's work
on AES(32) support)
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Thu, 24 Feb 2011 20:33:26 +0000 (21:33 +0100)]
hdspmixer: Improve code coherency
Move channelmappings into one place (channelmap.h). Also, use "aes32"
when referring to the card itself to avoid confusion and to be coherent
with the remaining naming scheme.
This work has mainly been done by Fredrik Lingvall.
Signed-off-by: Fredrik Lingvall <fredrik.lingvall@gmail.com> Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Thu, 3 Feb 2011 21:43:34 +0000 (22:43 +0100)]
hdspmixer: retab and reindent code.
Something seriously was wrong, probably different patches with different
tabwidth levels. I switched to spaces to avoid ambiguity and let vim
reindent everything.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adrian Knoth [Thu, 27 Jan 2011 10:41:47 +0000 (11:41 +0100)]
hdspmixer: Don't use channelmap from hdspm.h
The channel mapping has been moved to hdspm.c, so it's no longer
available to userspace tools. For now, let's simply copy (duplicate) the
data and wait for a way to query this information from the driver.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>