mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-26 00:41:08 +00:00
49 lines
1.3 KiB
Diff
49 lines
1.3 KiB
Diff
|
diff --git a/dev/pci/azalia.h b/dev/pci/azalia.h
|
||
|
index 8dd7641..2d3ce3a 100644
|
||
|
--- a/dev/pci/azalia.h
|
||
|
+++ b/dev/pci/azalia.h
|
||
|
@@ -516,6 +516,7 @@
|
||
|
#define AZ_QRK_WID_CLOSE_PCBEEP 0x00080000
|
||
|
+#define AZ_QRK_WID_HEADSET 0x00100000
|
||
|
#define AZ_QRK_ROUTE_SPKR2_DAC 0x01000000
|
||
|
#define AZ_QRK_DOLBY_ATMOS 0x02000000
|
||
|
|
||
|
/* memory-mapped types */
|
||
|
typedef struct {
|
||
|
diff --git a/dev/pci/azalia_codec.c b/dev/pci/azalia_codec.c
|
||
|
index 05d157b..8046b3b 100644
|
||
|
--- a/dev/pci/azalia_codec.c
|
||
|
+++ b/dev/pci/azalia_codec.c
|
||
|
@@ -100,6 +100,8 @@ azalia_codec_init_vtbl(codec_t *this)
|
||
|
break;
|
||
|
case 0x10ec0255:
|
||
|
this->name = "Realtek ALC255";
|
||
|
+ if (this->subid == 0x193e10cf)
|
||
|
+ this->qrks |= AZ_QRK_WID_HEADSET;
|
||
|
break;
|
||
|
case 0x10ec0256:
|
||
|
this->name = "Realtek ALC256";
|
||
|
@@ -747,6 +749,9 @@ azalia_unsol_event(codec_t *this, int tag)
|
||
|
CORB_GET_PIN_SENSE, 0, &result);
|
||
|
if (!err && (result & CORB_PS_PRESENCE))
|
||
|
vol = 1;
|
||
|
+ // switch microphone to mic2
|
||
|
+ if (!err)
|
||
|
+ notify_hp_sense(result & CORB_PS_PRESENCE);
|
||
|
}
|
||
|
if (err)
|
||
|
break;
|
||
|
@@ -2702,6 +2707,12 @@ azalia_codec_widget_quirks(codec_t *this, nid_t nid)
|
||
|
0x57d7, NULL);
|
||
|
}
|
||
|
|
||
|
+ if (this->qrks & AZ_QRK_WID_HEADSET && nid == 0x19) {
|
||
|
+ w->d.pin.config = 0x03a19120;
|
||
|
+ azalia_pin_config_ov(w, CORB_CD_DEVICE_MASK, CORB_CD_MICIN);
|
||
|
+ w->enable = 1;
|
||
|
+ }
|
||
|
+
|
||
|
return(0);
|
||
|
}
|
||
|
|