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;
}