Page MenuHomeFreeBSD

D49002.id.diff
No OneTemporary

D49002.id.diff

diff --git a/sys/dev/sound/pci/hda/hdaa_patches.c b/sys/dev/sound/pci/hda/hdaa_patches.c
--- a/sys/dev/sound/pci/hda/hdaa_patches.c
+++ b/sys/dev/sound/pci/hda/hdaa_patches.c
@@ -39,6 +39,7 @@
#include <dev/sound/pcm/sound.h>
#include <sys/ctype.h>
+#include <sys/limits.h>
#include <dev/sound/pci/hda/hdac.h>
#include <dev/sound/pci/hda/hdaa.h>
@@ -317,15 +318,16 @@
break;
}
} else if (id == HDA_CODEC_ALC257 &&
- (subid == LENOVO_L5AMD_SUBVENDOR ||
- subid == LENOVO_L5INTEL_SUBVENDOR ||
- subid == LENOVO_IDEAPAD3_SUBVENDOR)) {
+ HDA_DEV_MATCH(LENOVO_ALL_SUBVENDOR, subid)) {
switch (nid) {
case 20:
patch_str = "as=1 seq=0";
break;
+ case 25:
+ patch_str = "loc=Left";
+ break;
case 33:
- patch_str = "as=1 seq=15";
+ patch_str = "as=1 seq=15 loc=Left";
break;
}
} else if (id == HDA_CODEC_IDT92HD95B &&
@@ -705,6 +707,21 @@
return (hda_command(dev, HDA_CMD_SET_PROCESSING_COEFF(0, nid, val)));
}
+static uint32_t
+hdaa_update_coef(device_t dev, nid_t nid, uint16_t idx, uint16_t mask, uint16_t val)
+{
+ uint16_t curr;
+
+ hda_command(dev, HDA_CMD_SET_COEFF_INDEX(0, nid, idx));
+ curr = (hda_command(dev, HDA_CMD_GET_PROCESSING_COEFF(0, nid)));
+ if (curr != USHRT_MAX ) {
+ val = (curr & ~mask) | val;
+ hda_command(dev, HDA_CMD_SET_COEFF_INDEX(0, nid, idx));
+ val = (hda_command(dev, HDA_CMD_SET_PROCESSING_COEFF(0, nid, val)));
+ }
+ return val;
+}
+
void
hdaa_patch_direct(struct hdaa_devinfo *devinfo)
{
@@ -738,10 +755,19 @@
hdaa_write_coef(dev, 0x20, 0x07, 0x7cb);
}
break;
- }
- if (id == HDA_CODEC_ALC255 || id == HDA_CODEC_ALC256) {
- val = hdaa_read_coef(dev, 0x20, 0x46);
- hdaa_write_coef(dev, 0x20, 0x46, val|0x3000);
+ case HDA_CODEC_ALC255:
+ case HDA_CODEC_ALC256:
+ case HDA_CODEC_ALC257:
+ hdaa_update_coef(dev, 0x57, 0x04, 0x0007, 0x01);
+ hdaa_write_coef(dev, 0x21, 0x300, 0xb080);
+ hdaa_write_coef(dev, 0x21, 0x707, 1 << 6);
+ hdaa_update_coef(dev, 0x20, 0x46, 3 << 12, 0);
+ hdaa_update_coef(dev, 0x57, 0x04, 0x0007, 0x4);
+ hdaa_update_coef(dev, 0x53, 0x02, 0x8000, 1 << 15);
+ hdaa_update_coef(dev, 0x53, 0x02, 0x8000, 0 << 15);
+ /* Enable Mic / Line In instead of PC Beep on 1Ah. */
+ hdaa_write_coef(dev, 0x20, 0x36, 0x5757);
+ break;
}
if (subid == APPLE_INTEL_MAC)
hda_command(dev, HDA_CMD_12BIT(0, devinfo->nid,
diff --git a/sys/dev/sound/pci/hda/hdac.h b/sys/dev/sound/pci/hda/hdac.h
--- a/sys/dev/sound/pci/hda/hdac.h
+++ b/sys/dev/sound/pci/hda/hdac.h
@@ -332,6 +332,7 @@
#define ASUS_G2K_SUBVENDOR HDA_MODEL_CONSTRUCT(ASUS, 0x1339)
#define ASUS_Z550SA_SUBVENDOR HDA_MODEL_CONSTRUCT(ASUS, 0x13b0)
#define ASUS_A7T_SUBVENDOR HDA_MODEL_CONSTRUCT(ASUS, 0x13c2)
+#define ASUS_FA507XI_SUBVENDOR HDA_MODEL_CONSTRUCT(ASUS, 0x14b3)
#define ASUS_UX331_SUBVENDOR HDA_MODEL_CONSTRUCT(ASUS, 0x14de)
#define ASUS_UX31A_SUBVENDOR HDA_MODEL_CONSTRUCT(ASUS, 0x1517)
#define ASUS_GL553VE_SUBVENDOR HDA_MODEL_CONSTRUCT(ASUS, 0x15e0)
@@ -386,6 +387,8 @@
#define LENOVO_3000_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x384e)
#define LENOVO_IDEAPAD330_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x3808)
#define LENOVO_IDEAPAD3_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x3881)
+#define LENOVO_LEGION_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x385a)
+#define LENOVO_THINKBOOK_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x386a)
#define LENOVO_ALL_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0xffff)
/* Samsung */
diff --git a/sys/dev/sound/pci/hda/pin_patch_realtek.h b/sys/dev/sound/pci/hda/pin_patch_realtek.h
--- a/sys/dev/sound/pci/hda/pin_patch_realtek.h
+++ b/sys/dev/sound/pci/hda/pin_patch_realtek.h
@@ -235,6 +235,16 @@
PIN_PATCH_STRING(25, "as=2 misc=1 color=Black ctype=1/8 device=Mic loc=Right"),
{ }
}
+ }, {
+ .models = (struct pin_machine_model_t[]){
+ PIN_SUBVENDOR(ASUS_FA507XI_SUBVENDOR),
+ { }
+ },
+ .pin_patches = (struct pin_patch_t[]){
+ PIN_PATCH_STRING(25, "as=3 seq=15 misc=0 color=Black ctype=1/8 device=Mic loc=Left conn=Jack"),
+ PIN_PATCH_STRING(33, "as=1 seq=15"),
+ { }
+ }
}, { }
}
}, { /**** CODEC: HDA_CODEC_ALC260 ****/

File Metadata

Mime Type
text/plain
Expires
Sun, Jan 18, 1:23 AM (21 h, 50 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27696200
Default Alt Text
D49002.id.diff (4 KB)

Event Timeline