Hi,
On 08-11-2019 18:28, Jacob Rasmussen wrote:
Hello Hans,
On Fri, Nov 8, 2019 at 6:16 AM Hans de Goede hdegoede@redhat.com wrote:
Hi Ross,
On 11/7/19 11:31 PM, Ross Zwisler wrote:
We are trying to get a piece of Google hardware which uses the rt5645 driver working correctly with newer kernels (currently one based on the latest v4.14 stable), and noticed that the following commit:
commit 6b5da66322c5 ("ASoC: rt5645: read jd1_1 status for jd detection")
broke jack support for our device. Basically with that patch we never correctly see a jack insertion event, and audio is never routed to the headphones.
With just that one patch reverted, things work correctly on our system. The revert applies cleanly to linus/master.
Here is the series where that patch was originally upstreamed:
https://www.spinics.net/lists/alsa-devel/msg64331.html
If we reverted that patch upstream, would it break other devices (the "GDP Win" device?) that use the rt5645 driver?
Yes likely it will, the commit in question was added to fix jd issue in the GDP win and other Cherry Trail devices using standard Intel reference designs.
If so, how would you recommend proceeding?
Does anyone have one of the "GDP Win" devices so we can test that and our device and make sure whatever solution we end up coming up with works for everyone?
I have acccess to the following devices with a rt5645 codec:
rt5645: Spk Mic JDmod UCM -Acer One S1003 stereo ana 3 chtrt5645 -Asus T100HA stereo dmic1 3 inv custom -GPD Pocket mono diff 3 inv chtrt5645-mono-speaker-analog-mic -GPD win mono ana 3 inv chtrt5645-mono-speaker-analog-mic -Kazam Vision stereo ana 3 chtrt5645 -Lenovo Miix310 stereo diff 3 chtrt5645 -Lenovo Miix320 stereo dmic2 3 custom -Teclast X80Pro mono ana 3 chtrt5645-mono-speaker-analog-mic
Which all work fine with the current code, have you tried all the different jdmode values through the quirk moodule param?
I've tried setting jdmode to 0-7 through the quirk module param but none of them fixed the problem.
If Playing with the quirk settings does not help, then I believe that the best approach to fix this is to figure out which bit of the pre 6b5da66322c5 behavior you need and to activate this behind a new quirk option and set that quirk for the system in question.
The part of pre 6b5da66322c5 behavior we need is which register is being read from to set val in jack_detect_work(). It looks like all the other devices that use this codec have jd_mode = 3, so I was thinking we could set buddy's jd_mode to something else and read from the old register if jd_mode is that something else. Does that seem reasonable?
The QUIRK_JD_MODE macro supports jd_mode 0-7 and we are currently only using 0-3, so if you call this say mode 4 then yes that sounds reasonable.
Regards,
Hans