[alsa-devel] Balanced output support for Xonar: Patches for Virtuoso driver to add mixer option for balanced mono output (PCM179x dacs)

Christian Wisner-Carlson christian at freedomofknowledge.org
Wed Nov 3 05:50:13 CET 2010

>> It allows for 4 balanced outputs, 8 unbalanced outputs, or any
>> combination of balanced and unbalanced outputs. HOWEVER, it adds 4
>> mixer controls and the code isn't very pretty.
> The controller can route any stereo pair to each DAC, so it would be a
> good idea to have one global control that also affects this routing so
> that, e.g., configuring the card for 4 outputs works correctly when
> playing 4-channel data.

Currently, routing is set up by void oxygen_update_dac_routing(struct
oxygen *chip) in oxygen_mixer.c.
However,  it only allows for five different routing configurations,
which it statically defines internally as int reg_values[5].
Do you mind (ie, would you mind merging/using it) if I defined a new struct:
struct oxygen_routing_table = {
	u8 channels;
	unsigned int dac0;
	unsigned int dac1;
	unsigned int dac2;
	unsigned int dac3;
that would be passed to oxygen_update_dac_routing() as a new field of
struct oxygen? This would allow for
arbitrary routing configurations for the dacs (needed to implement 4
channel balanced output) and would
not require many changes to the driver as a whole. Where should I
define this struct? (ie, in what file?)

Christian Wisner-Carlson

More information about the Alsa-devel mailing list