Increase output amp on ASUS UX31A by +5dB.

While there, implement couple helper functions.
This commit is contained in:
Alexander Motin 2015-07-20 17:48:00 +00:00
parent a54bd5953b
commit d575325b81
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=285723

View File

@ -696,6 +696,22 @@ hdaa_patch(struct hdaa_devinfo *devinfo)
}
}
static uint32_t
hdaa_read_coef(device_t dev, nid_t nid, uint16_t idx)
{
hda_command(dev, HDA_CMD_SET_COEFF_INDEX(0, nid, idx));
return (hda_command(dev, HDA_CMD_GET_PROCESSING_COEFF(0, nid)));
}
static uint32_t
hdaa_write_coef(device_t dev, nid_t nid, uint16_t idx, uint16_t val)
{
hda_command(dev, HDA_CMD_SET_COEFF_INDEX(0, nid, idx));
return (hda_command(dev, HDA_CMD_SET_PROCESSING_COEFF(0, nid, val)));
}
void
hdaa_patch_direct(struct hdaa_devinfo *devinfo)
{
@ -737,10 +753,12 @@ hdaa_patch_direct(struct hdaa_devinfo *devinfo)
* That results in silence if downmix it to mono.
* To workaround, make codec to handle signal as mono.
*/
hda_command(dev, HDA_CMD_SET_COEFF_INDEX(0, 0x20, 0x07));
val = hda_command(dev, HDA_CMD_GET_PROCESSING_COEFF(0, 0x20));
hda_command(dev, HDA_CMD_SET_COEFF_INDEX(0, 0x20, 0x07));
hda_command(dev, HDA_CMD_SET_PROCESSING_COEFF(0, 0x20, val|0x80));
val = hdaa_read_coef(dev, 0x20, 0x07);
hdaa_write_coef(dev, 0x20, 0x07, val|0x80);
}
if (subid == 0x15171043) {
/* Increase output amp on ASUS UX31A by +5dB. */
hdaa_write_coef(dev, 0x20, 0x12, 0x2800);
}
}
}