jcs's openbsd hax
openbsd

Add another quirk for the ALC285 on the X1C7 to avoid a clicking noise on the headphone output

From Linux

+14 -4
+3 -2
sys/dev/pci/azalia.h
··· 1 - /* $OpenBSD: azalia.h,v 1.68 2019/10/14 01:59:14 jcs Exp $ */ 1 + /* $OpenBSD: azalia.h,v 1.69 2019/10/14 02:04:35 jcs Exp $ */ 2 2 /* $NetBSD: azalia.h,v 1.6 2006/01/16 14:15:26 kent Exp $ */ 3 3 4 4 /*- ··· 505 505 #define AZ_QRK_GPIO_UNMUTE_6 0x00000040 506 506 #define AZ_QRK_GPIO_UNMUTE_7 0x00000080 507 507 #define AZ_QRK_GPIO_POL_0 0x00000100 508 - #define AZ_QRK_WID_MASK 0x000ff000 508 + #define AZ_QRK_WID_MASK 0x00fff000 509 509 #define AZ_QRK_WID_CDIN_1C 0x00001000 510 510 #define AZ_QRK_WID_BEEP_1D 0x00002000 511 511 #define AZ_QRK_WID_OVREF50 0x00004000 ··· 513 513 #define AZ_QRK_WID_TPDOCK1 0x00010000 514 514 #define AZ_QRK_WID_TPDOCK2 0x00020000 515 515 #define AZ_QRK_WID_TPDOCK3 0x00040000 516 + #define AZ_QRK_WID_CLOSE_PCBEEP 0x00080000 516 517 #define AZ_QRK_ROUTE_SPKR2_DAC 0x01000000 517 518 #define AZ_QRK_DOLBY_ATMOS 0x02000000 518 519
+11 -2
sys/dev/pci/azalia_codec.c
··· 1 - /* $OpenBSD: azalia_codec.c,v 1.177 2019/10/14 01:59:14 jcs Exp $ */ 1 + /* $OpenBSD: azalia_codec.c,v 1.178 2019/10/14 02:04:35 jcs Exp $ */ 2 2 /* $NetBSD: azalia_codec.c,v 1.8 2006/05/10 11:17:27 kent Exp $ */ 3 3 4 4 /*- ··· 127 127 case 0x10ec0285: 128 128 this->name = "Realtek ALC285"; 129 129 if (this->subid == 0x229217aa) /* Thinkpad X1 Carbon 7 */ 130 - this->qrks |= AZ_QRK_ROUTE_SPKR2_DAC; 130 + this->qrks |= AZ_QRK_ROUTE_SPKR2_DAC | 131 + AZ_QRK_WID_CLOSE_PCBEEP; 131 132 break; 132 133 case 0x10ec0292: 133 134 this->name = "Realtek ALC292"; ··· 2601 2602 ((nid == 0x05) || (nid == 0x06) || (nid == 0x07) || 2602 2603 (nid == 0x09) || (nid == 0x18))) { 2603 2604 azalia_ampcap_ov(w, COP_OUTPUT_AMPCAP, 31, 33, 6, 30, 1); 2605 + } 2606 + 2607 + if ((this->qrks & AZ_QRK_WID_CLOSE_PCBEEP) && (nid == 0x20)) { 2608 + /* Close PC beep passthrough to avoid headphone noise */ 2609 + azalia_comresp(this, nid, CORB_SET_COEFFICIENT_INDEX, 0x36, 2610 + NULL); 2611 + azalia_comresp(this, nid, CORB_SET_PROCESSING_COEFFICIENT, 2612 + 0x57d7, NULL); 2604 2613 } 2605 2614 2606 2615 return(0);