Lenovo X270 with HDA ALC298
Hi all,
I noticed that my 3 years old Lenovo X270 with Intel HDA & RealTek ALC298 doesn't work with 3.5 mm audio combo jack with 4 pole CTIA. A bit of googling showed me that `snd-hda-intel` module can take some options like `model` to run some fix ups. and I have found that `model=alc298-dell1` seems to at least work. But its gain is way too low. It's mostly just noise. It sounds like my mic is on the line-in.
So, I opened `patch_realtek.c` to see what's going on. I found the following but not sure what the values for `.v.pins` are for.
``` [ALC298_FIXUP_DELL1_MIC_NO_PRESENCE] = { .type = HDA_FIXUP_PINS, .v.pins = (const struct hda_pintbl[]) { { 0x18, 0x01a1913c }, /* use as headset mic, without its own jack detect */ { 0x1a, 0x01a1913d }, /* use as headphone mic, without its own jack detect */ { } }, .chained = true, .chain_id = ALC269_FIXUP_HEADSET_MODE }, ```
In `apply_fix(), these `.v.pins` values are passed to `snd_hda_apply_pincfgs()` but I can't find what values mean. Would someone please enlighten me?
My questions are
1) How can I found out which pin goes where. There is x270 schematics on the net but not sure it's correct.
2) What does the value, ie, 0x01a1913d, represent?
Thanks,
On Sat, 25 Jul 2020 12:20:41 +0200, Yasushi SHOJI wrote:
Hi all,
I noticed that my 3 years old Lenovo X270 with Intel HDA & RealTek ALC298 doesn't work with 3.5 mm audio combo jack with 4 pole CTIA. A bit of googling showed me that `snd-hda-intel` module can take some options like `model` to run some fix ups. and I have found that `model=alc298-dell1` seems to at least work. But its gain is way too low. It's mostly just noise. It sounds like my mic is on the line-in.
So, I opened `patch_realtek.c` to see what's going on. I found the following but not sure what the values for `.v.pins` are for.
[ALC298_FIXUP_DELL1_MIC_NO_PRESENCE] = { .type = HDA_FIXUP_PINS, .v.pins = (const struct hda_pintbl[]) { { 0x18, 0x01a1913c }, /* use as headset mic, without its own jack detect */ { 0x1a, 0x01a1913d }, /* use as headphone mic, without its own jack detect */ { } }, .chained = true, .chain_id = ALC269_FIXUP_HEADSET_MODE },
In `apply_fix(), these `.v.pins` values are passed to `snd_hda_apply_pincfgs()` but I can't find what values mean. Would someone please enlighten me?
My questions are
- How can I found out which pin goes where. There is x270 schematics on the net but not sure it's correct.
It's often done by trial-and-error. Or sometimes the information can be extracted from Windows driver *.INI file. Or you can try hdajackretask program for figuring out those.
- What does the value, ie, 0x01a1913d, represent?
At best take a look at HD-audio specification. You can find easily on the web.
Those are "pin configuration" values where various attributes like the jack type, the jack color, etc are embedded. The HD-audio driver looks through those configurations and determine the set up based on them.
HTH,
Takashi
participants (2)
-
Takashi Iwai
-
Yasushi SHOJI