Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F142192626
D49002.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D49002.id.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D49002: snd_hda(4): Add quirks for Lenovo ThinkBooks and ASUS TUFs
Attached
Detach File
Event Timeline
Log In to Comment