summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjcs <jcs@openbsd.org>2019-10-14 02:04:35 +0000
committerjcs <jcs@openbsd.org>2019-10-14 02:04:35 +0000
commit6eae9050ac559cdc8a2b6f2d74b351c3fa63acfc (patch)
treed84d517f216912d73b93bf8757a9a7697652de36
parentRename AZ_QRK_WID_SPKR2_DAC and AZ_QRK_WID_DOLBY_ATMOS to make it (diff)
downloadwireguard-openbsd-6eae9050ac559cdc8a2b6f2d74b351c3fa63acfc.tar.xz
wireguard-openbsd-6eae9050ac559cdc8a2b6f2d74b351c3fa63acfc.zip
Add another quirk for the ALC285 on the X1C7 to avoid a clicking
noise on the headphone output From Linux
-rw-r--r--sys/dev/pci/azalia.h5
-rw-r--r--sys/dev/pci/azalia_codec.c13
2 files changed, 14 insertions, 4 deletions
diff --git a/sys/dev/pci/azalia.h b/sys/dev/pci/azalia.h
index 116207ac457..8dd7641c628 100644
--- a/sys/dev/pci/azalia.h
+++ b/sys/dev/pci/azalia.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: azalia.h,v 1.68 2019/10/14 01:59:14 jcs Exp $ */
+/* $OpenBSD: azalia.h,v 1.69 2019/10/14 02:04:35 jcs Exp $ */
/* $NetBSD: azalia.h,v 1.6 2006/01/16 14:15:26 kent Exp $ */
/*-
@@ -505,7 +505,7 @@
#define AZ_QRK_GPIO_UNMUTE_6 0x00000040
#define AZ_QRK_GPIO_UNMUTE_7 0x00000080
#define AZ_QRK_GPIO_POL_0 0x00000100
-#define AZ_QRK_WID_MASK 0x000ff000
+#define AZ_QRK_WID_MASK 0x00fff000
#define AZ_QRK_WID_CDIN_1C 0x00001000
#define AZ_QRK_WID_BEEP_1D 0x00002000
#define AZ_QRK_WID_OVREF50 0x00004000
@@ -513,6 +513,7 @@
#define AZ_QRK_WID_TPDOCK1 0x00010000
#define AZ_QRK_WID_TPDOCK2 0x00020000
#define AZ_QRK_WID_TPDOCK3 0x00040000
+#define AZ_QRK_WID_CLOSE_PCBEEP 0x00080000
#define AZ_QRK_ROUTE_SPKR2_DAC 0x01000000
#define AZ_QRK_DOLBY_ATMOS 0x02000000
diff --git a/sys/dev/pci/azalia_codec.c b/sys/dev/pci/azalia_codec.c
index fe744f5b50d..33833d2f8ea 100644
--- a/sys/dev/pci/azalia_codec.c
+++ b/sys/dev/pci/azalia_codec.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: azalia_codec.c,v 1.177 2019/10/14 01:59:14 jcs Exp $ */
+/* $OpenBSD: azalia_codec.c,v 1.178 2019/10/14 02:04:35 jcs Exp $ */
/* $NetBSD: azalia_codec.c,v 1.8 2006/05/10 11:17:27 kent Exp $ */
/*-
@@ -127,7 +127,8 @@ azalia_codec_init_vtbl(codec_t *this)
case 0x10ec0285:
this->name = "Realtek ALC285";
if (this->subid == 0x229217aa) /* Thinkpad X1 Carbon 7 */
- this->qrks |= AZ_QRK_ROUTE_SPKR2_DAC;
+ this->qrks |= AZ_QRK_ROUTE_SPKR2_DAC |
+ AZ_QRK_WID_CLOSE_PCBEEP;
break;
case 0x10ec0292:
this->name = "Realtek ALC292";
@@ -2603,6 +2604,14 @@ azalia_codec_widget_quirks(codec_t *this, nid_t nid)
azalia_ampcap_ov(w, COP_OUTPUT_AMPCAP, 31, 33, 6, 30, 1);
}
+ if ((this->qrks & AZ_QRK_WID_CLOSE_PCBEEP) && (nid == 0x20)) {
+ /* Close PC beep passthrough to avoid headphone noise */
+ azalia_comresp(this, nid, CORB_SET_COEFFICIENT_INDEX, 0x36,
+ NULL);
+ azalia_comresp(this, nid, CORB_SET_PROCESSING_COEFFICIENT,
+ 0x57d7, NULL);
+ }
+
return(0);
}