Hi Takashi,
sorry - it's me again about the Acer 8951G LFE speaker.
On Fri, Aug 30, 2019 at 01:45:10PM +0200, Sergey 'Jin' Bostandzhyan wrote:
The below HDA_FIXUP_VERBS does the trick, so I do have all 6 speakers working, finally!
{0x01, AC_VERB_SET_GPIO_DIRECTION, 0x02}
Actually this must be paired with the corresponding bit of GPIO_DATA, too. Is the bit 0x02 of GPIO_DATA set or cleared? Usually setting it turns on the amp, but sometimes inverted.
If I understood everything correctly, then the bit is set, meaning that the GPIO signal is configured as output. I'll be honest, I exported the hda-analyzer setting as a python script (nice feature btw) and deducted the fixup verb setting from there (relevant part of the hda-analyzer export below):
def set(nid, verb, param): verb = (nid << 24) | (verb << 8) | param res = ioctl(FD, IOCTL_VERB_WRITE, struct.pack('II', verb, 0))
set(0x01, 0x717, 0x02) # 0x01071702 (SET_GPIO_DIRECTION)
it seems I indeed missed something here regarding GPIO_DATA, I really am not sure what the influence is, but after updating to Fedora 31 my LFE stopped working, even with the self compiled 5.4-rc8 kernel which I am running now (all the time before I was on Fedora 29 and I just backported my patch to 5.2.x and compiled the modules outside the tree after being done with the patch submission).
So ultimately, it seems I now need to do the following in my fixup (original commit was 00066e9733f629e536f6b7957de2ce11a85fe15a):
--- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -8875,7 +8875,7 @@ static const struct hda_fixup alc662_fixups[] = { .v.verbs = (const struct hda_verb[]) { {0x01, AC_VERB_SET_GPIO_MASK, 0x02}, {0x01, AC_VERB_SET_GPIO_DIRECTION, 0x02}, - {0x01, AC_VERB_SET_GPIO_DATA, 0x00}, + {0x01, AC_VERB_SET_GPIO_DATA, 0x02}, { } }, .chained = true,
My question is: could something on the outside have influence on that? I am really very, very sure that I have tested LFE on kernel 5.4-rc before submitting the original patch and it has been working as submitted. Why did the behavior change now? What else could I have missed?
I guess I have to submit the above change again, but I would like to make sure that I am not missing something else somewhere, something that could cause a change of behavior yet again after some future update.
Kind regards, Jin