Page MenuHomeFreeBSD

D9559.id25055.diff
No OneTemporary

D9559.id25055.diff

Index: share/man/man4/snd_hda.4
===================================================================
--- share/man/man4/snd_hda.4
+++ share/man/man4/snd_hda.4
@@ -227,8 +227,8 @@
particular association.
Sequence numbers can be specified as numeric values from 0 to 15.
.Pp
-The sequence number 15 has a special meaning for output associations.
-Output pins with this number and device type
+The sequence numbers 14 and 15 has a special meaning for output associations.
+Output pins with these numbers and device type
.Dq Ar Headphones
will duplicate (with automatic mute if jack detection is supported) the
first pin in that association.
Index: sys/dev/sound/pci/hda/hdaa.c
===================================================================
--- sys/dev/sound/pci/hda/hdaa.c
+++ sys/dev/sound/pci/hda/hdaa.c
@@ -419,7 +419,7 @@
}
}
/* (Un)Mute other pins. */
- for (j = 0; j < 15; j++) {
+ for (j = 0; j < 14; j++) {
if (as->pins[j] <= 0)
continue;
ctl = hdaa_audio_ctl_amp_get(devinfo,
@@ -561,7 +561,8 @@
);
as = &devinfo->as[w->bindas];
- if (as->hpredir >= 0 && as->pins[15] == w->nid)
+ if (as->hpredir >= 0 &&
+ (as->pins[15] == w->nid || as->pins[14] == w->nid))
hdaa_hpredir_handler(w);
if (as->dir == HDAA_CTL_IN && old != 2)
hdaa_autorecsrc_handler(as, w);
@@ -762,7 +763,8 @@
HDA_CMD_SET_UNSOLICITED_RESPONSE_ENABLE | w->unsol));
}
as = &devinfo->as[w->bindas];
- if (as->hpredir >= 0 && as->pins[15] == w->nid) {
+ if (as->hpredir >= 0 &&
+ (as->pins[15] == w->nid || as->pins[14] == w->nid)) {
if (HDA_PARAM_PIN_CAP_PRESENCE_DETECT_CAP(w->wclass.pin.cap) == 0 ||
(HDA_CONFIG_DEFAULTCONF_MISC(w->wclass.pin.config) & 1) != 0) {
device_printf(devinfo->dev,
@@ -3268,9 +3270,12 @@
HDA_CONFIG_DEFAULTCONF_LOCATION(w->wclass.pin.config)) {
as[cnt].location = -2;
}
- /* Headphones with seq=15 may mean redirection. */
+ /*
+ * Headphones with seq == 15 (or 14) may mean
+ * redirection.
+ */
if (type == HDA_CONFIG_DEFAULTCONF_DEVICE_HP_OUT &&
- seq == 15)
+ (seq == 15 || seq == 14))
hpredir = 1;
as[cnt].pins[seq] = w->nid;
as[cnt].pincnt++;
@@ -3562,7 +3567,8 @@
if (i == 16)
return (1);
- hpredir = (i == 15 && ases[as].fakeredir == 0)?ases[as].hpredir:-1;
+ hpredir = ((i == 15 || i == 14) &&
+ ases[as].fakeredir == 0) ? ases[as].hpredir : -1;
min = 0;
do {
HDA_BOOTHVERBOSE(
@@ -5322,7 +5328,7 @@
ch->io[ret++] = as[ch->as].dacs[ch->asindex][i];
ch->stripecap &= w->wclass.conv.stripecap;
/* Do not count redirection pin/dac channels. */
- if (i == 15 && as[ch->as].hpredir >= 0)
+ if ((i == 15 || i == 14) && as[ch->as].hpredir >= 0)
continue;
channels += HDA_PARAM_AUDIO_WIDGET_CAP_CC(w->param.widget_cap) + 1;
if (HDA_PARAM_AUDIO_WIDGET_CAP_CC(w->param.widget_cap) != 1)

File Metadata

Mime Type
text/plain
Expires
Wed, Mar 18, 1:41 PM (6 h, 21 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29909039
Default Alt Text
D9559.id25055.diff (2 KB)

Event Timeline