Hi,
Amarendra Godbole writes:
> mixerctl output has some duplicate entries (duplicated names, but
> different values), which leaves me confused. Here is the output:
I see... this happens when an item has both input and output
levels that can be adjusted.
Could you try this diff please? It should give you something
more like:
outputs.line=124,124
inputs.line=85,85
Thanks!
Index: azalia.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/azalia.c,v
retrieving revision 1.45
diff -u -p -r1.45 azalia.c
--- azalia.c 25 Nov 2007 18:13:40 -0000 1.45
+++ azalia.c 13 Dec 2007 18:37:58 -0000
@@ -1609,13 +1609,24 @@ azalia_widget_label_widgets(codec_t *cod
w = &codec->w[i];
if (w->type == COP_AWTYPE_PIN_COMPLEX) {
pins[w->d.pin.device]++;
- if (pins[w->d.pin.device] > 1)
- snprintf(w->name, sizeof(w->name), "%s%d",
- pin_devices[w->d.pin.device],
- pins[w->d.pin.device]);
- else
- snprintf(w->name, sizeof(w->name), "%s",
- pin_devices[w->d.pin.device]);
+ if (w->d.pin.device == CORB_CD_LINEIN) {
+ pins[CORB_CD_LINEOUT]++;
+ if (pins[CORB_CD_LINEOUT] > 1)
+ snprintf(w->name, sizeof(w->name),
"%s%d",
+ pin_devices[CORB_CD_LINEOUT],
+ pins[CORB_CD_LINEOUT]);
+ else
+ snprintf(w->name, sizeof(w->name), "%s",
+ pin_devices[CORB_CD_LINEOUT]);
+ } else {
+ if (pins[w->d.pin.device] > 1)
+ snprintf(w->name, sizeof(w->name),
"%s%d",
+ pin_devices[w->d.pin.device],
+ pins[w->d.pin.device]);
+ else
+ snprintf(w->name, sizeof(w->name), "%s",
+ pin_devices[w->d.pin.device]);
+ }
} else {
types[w->type]++;
if (types[w->type] > 1)
Index: azalia_codec.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/azalia_codec.c,v
retrieving revision 1.45
diff -u -p -r1.45 azalia_codec.c
--- azalia_codec.c 6 Dec 2007 19:58:48 -0000 1.45
+++ azalia_codec.c 13 Dec 2007 18:37:33 -0000
@@ -529,9 +529,7 @@ azalia_generic_mixer_init(codec_t *this)
snprintf(d->label.name, sizeof(d->label.name),
"%s.mute", w->name);
d->type = AUDIO_MIXER_ENUM;
- if (w->type == COP_AWTYPE_PIN_COMPLEX)
- d->mixer_class = AZ_CLASS_OUTPUT;
- else if (w->type == COP_AWTYPE_AUDIO_INPUT)
+ if (w->type == COP_AWTYPE_AUDIO_INPUT)
d->mixer_class = AZ_CLASS_RECORD;
else
d->mixer_class = AZ_CLASS_INPUT;
@@ -553,9 +551,7 @@ azalia_generic_mixer_init(codec_t *this)
"%s.%s.mute", w->name,
this->w[w->connections[j]].name);
d->type = AUDIO_MIXER_ENUM;
- if (w->type == COP_AWTYPE_PIN_COMPLEX)
- d->mixer_class =
AZ_CLASS_OUTPUT;
- else if (w->type ==
COP_AWTYPE_AUDIO_INPUT)
+ if (w->type == COP_AWTYPE_AUDIO_INPUT)
d->mixer_class =
AZ_CLASS_RECORD;
else
d->mixer_class = AZ_CLASS_INPUT;
@@ -581,9 +577,7 @@ azalia_generic_mixer_init(codec_t *this)
snprintf(d->label.name, sizeof(d->label.name),
"%s", w->name);
d->type = AUDIO_MIXER_VALUE;
- if (w->type == COP_AWTYPE_PIN_COMPLEX)
- d->mixer_class = AZ_CLASS_OUTPUT;
- else if (w->type == COP_AWTYPE_AUDIO_INPUT)
+ if (w->type == COP_AWTYPE_AUDIO_INPUT)
d->mixer_class = AZ_CLASS_RECORD;
else
d->mixer_class = AZ_CLASS_INPUT;
@@ -608,9 +602,7 @@ azalia_generic_mixer_init(codec_t *this)
"%s.%s", w->name,
this->w[w->connections[j]].name);
d->type = AUDIO_MIXER_VALUE;
- if (w->type == COP_AWTYPE_PIN_COMPLEX)
- d->mixer_class =
AZ_CLASS_OUTPUT;
- else if (w->type ==
COP_AWTYPE_AUDIO_INPUT)
+ if (w->type == COP_AWTYPE_AUDIO_INPUT)
d->mixer_class =
AZ_CLASS_RECORD;
else
d->mixer_class = AZ_CLASS_INPUT;