Index: azalia.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/azalia.h,v
retrieving revision 1.63
diff -u -p -r1.63 azalia.h
--- azalia.h    20 Aug 2015 06:44:06 -0000      1.63
+++ azalia.h    24 Aug 2015 00:15:01 -0000
@@ -512,6 +512,7 @@
 #define AZ_QRK_WID_AD1981_OAMP 0x00008000
 #define AZ_QRK_WID_TPDOCK1     0x00010000
 #define AZ_QRK_WID_TPDOCK2     0x00020000
+#define AZ_QRK_WID_TPDOCK3     0x00030000
 
 /* memory-mapped types */
 typedef struct {
Index: azalia_codec.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/azalia_codec.c,v
retrieving revision 1.169
diff -u -p -r1.169 azalia_codec.c
--- azalia_codec.c      21 Aug 2015 06:11:04 -0000      1.169
+++ azalia_codec.c      24 Aug 2015 00:15:01 -0000
@@ -321,6 +321,27 @@ azalia_codec_init_vtbl(codec_t *this)
        case 0x14f15051:
                this->name = "Conexant CX20561";  /* Hermosa */
                break;
+       case 0x14f1506e:
+               this->name = "Conexant CX20590";
+               /*
+                * Enable dock audio on Thinkpad docks
+                * 0x17aa : 0x20f2 = Thinkpad T400
+                * 0x17aa : 0x215e = Thinkpad T410
+                * 0x17aa : 0x215f = Thinkpad T510
+                * 0x17aa : 0x21ce = Thinkpad T420
+                * 0x17aa : 0x21cf = Thinkpad T520
+                * 0x17aa : 0x21da = Thinkpad X220
+                * 0x17aa : 0x21db = Thinkpad X220t
+                */
+               if (this->subid == 0x20f217aa ||
+                   this->subid == 0x215e17aa ||
+                   this->subid == 0x215f17aa ||
+                   this->subid == 0x21ce17aa ||
+                   this->subid == 0x21cf17aa ||
+                   this->subid == 0x21da17aa ||
+                   this->subid == 0x21db17aa)
+                       this->qrks |= AZ_QRK_WID_TPDOCK3;
+               break;
        case 0x434d4980:
                this->name = "CMedia CMI9880";
                break;
@@ -2537,6 +2558,20 @@ azalia_codec_widget_quirks(codec_t *this
            nid == 0x19) {
                /* Thinkpad x240/t440 style dock microphone */
                w->d.pin.config = 0x21a11010;
+               w->enable = 1;
+       }
+
+       if (this->qrks & AZ_QRK_WID_TPDOCK3 &&
+           nid == 0x1a) {
+               /* Thinkpad x220/t420 style dock microphone */
+               w->d.pin.config = 0x21a190f0;
+               w->enable = 1;
+       }
+
+       if (this->qrks & AZ_QRK_WID_TPDOCK3 &&
+           nid == 0x1c) {
+               /* Thinkpad x220/t420 style dock headphone */
+               w->d.pin.config = 0x212140ff;
                w->enable = 1;
        }
 

Reply via email to