Page MenuHomeFreeBSD

D17772.id59833.diff
No OneTemporary

D17772.id59833.diff

Index: head/share/man/man4/snd_hda.4
===================================================================
--- head/share/man/man4/snd_hda.4
+++ head/share/man/man4/snd_hda.4
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd April 1, 2018
+.Dd July 16, 2019
.Dt SND_HDA 4
.Os
.Sh NAME
@@ -153,6 +153,12 @@
and
.Dq Li ovref Ns Ar X
options control the voltage used to power external microphones.
+.It Va dev.hdaa.%d.init_clear
+Zero out the pin widget config setup by the system.
+Some systems seem to have unuseable audio devices if the pin widgit
+configuration is cleared.
+Set this value to 0 to accept the default configuration values setup by the
+BIOS.
.It Va hint.hdaa.%d.gpio_config
Overrides audio function GPIO pins configuration set by BIOS.
May be specified as a set of space-separated
Index: head/sys/dev/sound/pci/hda/hdaa.h
===================================================================
--- head/sys/dev/sound/pci/hda/hdaa.h
+++ head/sys/dev/sound/pci/hda/hdaa.h
@@ -214,6 +214,7 @@
struct hdaa_chan *chans;
struct callout poll_jack;
int poll_ival;
+ uint32_t init_clear;
};
#define HDAA_CHN_RUNNING 0x00000001
Index: head/sys/dev/sound/pci/hda/hdaa.c
===================================================================
--- head/sys/dev/sound/pci/hda/hdaa.c
+++ head/sys/dev/sound/pci/hda/hdaa.c
@@ -5034,11 +5034,13 @@
pincap = w->wclass.pin.cap;
/* Disable everything. */
- w->wclass.pin.ctrl &= ~(
- HDA_CMD_SET_PIN_WIDGET_CTRL_HPHN_ENABLE |
- HDA_CMD_SET_PIN_WIDGET_CTRL_OUT_ENABLE |
- HDA_CMD_SET_PIN_WIDGET_CTRL_IN_ENABLE |
- HDA_CMD_SET_PIN_WIDGET_CTRL_VREF_ENABLE_MASK);
+ if (devinfo->init_clear) {
+ w->wclass.pin.ctrl &= ~(
+ HDA_CMD_SET_PIN_WIDGET_CTRL_HPHN_ENABLE |
+ HDA_CMD_SET_PIN_WIDGET_CTRL_OUT_ENABLE |
+ HDA_CMD_SET_PIN_WIDGET_CTRL_IN_ENABLE |
+ HDA_CMD_SET_PIN_WIDGET_CTRL_VREF_ENABLE_MASK);
+ }
if (w->enable == 0) {
/* Pin is unused so left it disabled. */
@@ -6671,6 +6673,10 @@
SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO,
"reconfig", CTLTYPE_INT | CTLFLAG_RW,
dev, 0, hdaa_sysctl_reconfig, "I", "Reprocess configuration");
+ SYSCTL_ADD_INT(device_get_sysctl_ctx(dev),
+ SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO,
+ "init_clear", CTLFLAG_RW,
+ &devinfo->init_clear, 1,"Clear initial pin widget configuration");
bus_generic_attach(dev);
return (0);
}

File Metadata

Mime Type
text/plain
Expires
Fri, Mar 20, 4:59 AM (19 h, 23 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29999926
Default Alt Text
D17772.id59833.diff (2 KB)

Event Timeline