Hello,
With the stock BIOS in the board I am working on one of the nodes for the ALC256 CODEC is:
Node 0x21 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out Control: name="Headphone Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] Pincap 0x0001001c: OUT HP EAPD Detect EAPD 0x2: EAPD Pin Default 0x02214020: [Jack] HP Out at Ext Front Conn = 1/8, Color = Green DefAssociation = 0x2, Sequence = 0x0 Pin-ctls: 0xc0: OUT HP Unsolicited: tag=01, enabled=1 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 2 0x02 0x03*
In the real world we are finding that the detection of headphones being plugged in aren’t being detected and the audio continues to be played through the onboard speakers. Based on experimentation the customer has determined that the alc256-asus-mic quirk in the Linux kernel gets it work properly but I want to fix this issue properly in Coreboot.
The only change in the output of /proc/asound/card/codec#0 appears to be:
Node 0x21 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
changes to:
Node 0x21 [Pin Complex] wcaps 0x03211020: Stereo Amp-Out
I’m assuming that this needs me to add some raw 32bit values into cim_verb_data[] as well as the AZALIA_PIN_CFG() definitions that I already have.
Based on what I have seen in files such (src/mainboard/intel/coffeelake_rvp/variants/cml_u/include/variant/hda_verb.h then I guess this is going to be multiple values that will be of the form 0x021xxxxx. How do I convert the change I need to make to fill in the xxxxx values?
-Andy.
Dear Andy,
Am 27.11.20 um 12:47 schrieb Andy Pont:
With the stock BIOS in the board I am working on one of the nodes for the ALC256 CODEC is:
What board is this and what chipset?
Node 0x21 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out Control: name="Headphone Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] Pincap 0x0001001c: OUT HP EAPD Detect EAPD 0x2: EAPD Pin Default 0x02214020: [Jack] HP Out at Ext Front Conn = 1/8, Color = Green DefAssociation = 0x2, Sequence = 0x0 Pin-ctls: 0xc0: OUT HP Unsolicited: tag=01, enabled=1 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 2 0x02 0x03*
In the real world we are finding that the detection of headphones being plugged in aren’t being detected and the audio continues to be played through the onboard speakers. Based on experimentation the customer has determined that the alc256-asus-mic quirk in the Linux kernel gets it work properly but I want to fix this issue properly in Coreboot.
[Note, the official spelling for coreboot is all lowercase.]
The only change in the output of /proc/asound/card/codec#0 appears to be:
Node 0x21 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
changes to:
Node 0x21 [Pin Complex] wcaps 0x03211020: Stereo Amp-Out
I’m assuming that this needs me to add some raw 32bit values into cim_verb_data[] as well as the AZALIA_PIN_CFG() definitions that I already have.
Based on what I have seen in files such (src/mainboard/intel/coffeelake_rvp/variants/cml_u/include/variant/hda_verb.h then I guess this is going to be multiple values that will be of the form 0x021xxxxx. How do I convert the change I need to make to fill in the xxxxx values?
Sorry, I do not know the exact answer, but looking at the quirk implementation in Linux 5.10-rc5, it consists actually of two quirks (also `ALC256_FIXUP_ASUS_HEADSET_MODE`), if `.chain_id` does what I think [1][2].
At you should be able to copy the pin values, the quirk sets. No idea, if that is all.
As this is a commercial undertaking, I recommend you contract support from the companies working on coreboot [3].
Kind regards,
Paul
[1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/soun... [2]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/soun... [3]: https://coreboot.org/consulting.html
Paul wrote…
What board is this and what chipset?
It is a custom laptop platform where we have been tasked to replace the stock AMI BIOS with coreboot. It uses Intel Comet Lake.
Sorry, I do not know the exact answer, but looking at the quirk implementation in Linux 5.10-rc5, it consists actually of two quirks (also `ALC256_FIXUP_ASUS_HEADSET_MODE`), if `.chain_id` does what I think [1][2].
At you should be able to copy the pin values, the quirk sets. No idea, if that is all.
I’ve been staring at that code in the kernel all day trying to figure out what changes it makes along with Intel’s High Definition Audio Specification document and the ALC256 datasheet.
As this is a commercial undertaking, I recommend you contract support from the companies working on coreboot [3].
At some point in the future, probably when this project is finished and I have submitted some patches, then I am hoping to email Martin to get us added to that list.
-Andy.