Re: [PATCH] Add a quirk for the Dell XPS 13 (2015) when in PS/2 mode.

From: Mario Limonciello
Date: Mon Mar 16 2015 - 10:30:02 EST



On 03/14/2015 02:17 PM, Benjamin Tissoires wrote:
[top posting, sorry]

Jason made some interesting progress today:
with the patch in https://lkml.org/lkml/2015/3/12/149, the sound card
is not switched in the I2S mode and works while the touchpad keeps
using I2C.
It looks like suspend/resume is also fixed by that :)

I thought it was worth mentioning to the people in this thread.

Cheers,
Benjamin
Benjamin,

Thanks for reporting the progress to me.

Jason,

Are you sure upon the particulars of what's happening here? That patch only modifies the behavior of how the EC is configured.
I'm not aware of any suspend/resume issues, especially related to the EC, so that really surprises me. My initial suspicion is a suspend/resume issue you encountered was rare enough that you just haven't hit it yet even with that patch applied. Maybe something in the out of kernel Broadcom wireless driver if you are still using the Broadcom card with it.

I believe you are incorrect in the audio being put in HDA mode. It's more likely that it's operating closer to properly in I2S mode. Here's some background around what that patch is doing.
When this platform started development the Linux kernel didn't yet respond true to Windows 2013. All our validation for Linux happened on kernel 3.13.

_OSI of Windows 2009 is supposed to set it for PS2 mouse, HDA device in ACPI and configure the EC to set up the Realtek codec for HDA mode. Linux was planned to mirror this behavior during development.
_OSI of Windows 2013 is supposed to set it up for I2C mouse, I2S audio in ACPI and configure the EC to set up the Realtek codec for I2S mode.

From when the platform was in development a _REV check was put in for Windows 2013 to make sure that in case the kernel started to respond to Windows 2013 we would still have it running in the intended modes for Linux. There was a mistake in this _REV check though that caused the I2S ACPI device but to misconfigure the EC. The reason _REV = 2 and _OSI = Windows 2013 you are getting working audio is the rt286 driver is starting to be used. You can validate this by looking at dmesg for lines about rt286.
Realtek recently submitted some patches for this at Dell's request. There are still a variety of issues with the I2S driver including jack detection and some other microphone issues. Pulseaudio will possibly need some patches to work properly with this device too. Ideally we don't want customers to use I2S mode on Linux until it's solid.

I don't believe this was in Linus' tree yet, so if you don't have it you can apply it and it should fix at least one microphone issue when in I2S mode.
http://mailman.alsa-project.org/pipermail/alsa-devel/2015-March/088724.html

Whether or not that _REV patch gets applied to the kernel we are fixing this incorrect behavior for Windows 2013 _OSI and Linux in upcoming BIOS A02.
In BIOS A02 there will still be a _REV check but it will do this:
Windows 2013 _OSI, _REV 5: I2C mouse, HDA device in ACPI, configure EC for HDA mode.
Windows 2013 _OSI, _REV 2: I2C mouse, I2S device in ACPI, configure EC for I2S mode.



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/