At Wed, 18 Jul 2012 08:27:02 +0200, David Henningsson wrote:
Hi,
I'm trying to fix a bug where the docking station is not working. I started by adding pins for them (because that was not present), like this:
[ALC269_FIXUP_LENOVO_DOCK] = { .type = ALC_FIXUP_PINS, .v.pins = (const struct alc_pincfg[]) { { 0x19, 0x23a11040 }, /* dock mic */ { 0x1b, 0x2121103f }, /* dock headphone */ { } }, },
However, this caused the real (non-dock) headphone out to "fixed up" to a line out, which is wrong. I'm a little unsure about the best way to resolve this, I can think of a few different options:
Also override the non-dock headphone out to have sequence number 0xf
Set parse_flags to HDA_PINCFG_NO_HP_FIXUP in patch_alc269
Try to improve the fix up algorithm to not fix up this particular
case, but since I don't know when and where this was needed in the first place, I'm not sure how to do that without throwing the baby out with the bath water...?
In this particular case, I'd take 1 or 2, the easier one. 1 is already used for Lenovo conexant models pin-fixups. And 2 can be applied only to this model by a quirk function setting spec->parse_flags before alc_parse_auto_config().
thanks,
Takashi