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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 02/20/2015 02:41 PM, Pali Rohár wrote:
On Friday 20 February 2015 20:56:23 Mario Limonciello wrote:
I have BIOS version A05 on my E6440 machine. That version does
not have problems with "repeating keys" and my workaround for
ALPS touchpad (which is in mainline tree and -stable trees now)
works fine. If I do not see other problems, I will not update
BIOS (just because current version working -- with workarounds).

But CCing Rob. He told me as first about existence of new BIOS
version for E6440 and he is already testing new version of BIOS,
so can share details.

Mario, can you share some details about that new BIOS update? If
it is not secret, how was problem with "repeating keys" fixed?
Why linux had more problems as Windows? Cannot we implement some
"workaround" in linux kernel to prevent that (or similar)
problems in future?

It's a bit ironic really.  The problem was introduced because a timer was added to the EC last year to fix a key repeating problem found on Windows.  In doing so the EC was blocking "BREAK" from being sent to the OS.  Windows OS didn't mind this, but Linux did. The fix doesn't block BREAK anymore.

resetafter=0 means to never reset (even if driver receive e.g
thousand invalid packets). I think this is very dangerous if
there will be other bugs either in linux driver or some other HW
problems.

For ALPS issue I added resetafter = pktsize * 2 (Allow 2 invalid
packets without resetting device). Cannot you find something
similar for synaptics touchpads on XPS? (pktsize for ALPS is 6,
no idea how big are synaptics packets).
I'll take a look and see if there's an upper limit I can find for this that works well enough.
Older Dell HW (laptops, desktops, servers) supported BIOS update
directly from Linux (ubuntu has needed tools in standard
repositories). It is not supported/provided anymore? I see that
dell_rbu driver is still in linux kernel.

dell_rbu.ko:
description:    Driver for updating BIOS image on DELL systems
Servers can (and I believe still do) use this method.  Latitude, Precision and XPS 13 (2015) do still support RBU for flashing but the BIOS executables no longer are distributed in a format that the payload can simply be extracted and flashed this way.  The executable supports a variety of firmware targets and custom builds the payload for the machine it's being executed upon.  Until we have a better method to do something similar to this in Linux, the best bet is to use the F12 BIOS boot menu to perform the flash if it's supported on  the given machine.

There is problem with some synaptics touchpad on some laptops
(probably not dell). Windows driver loads own firmware into
synaptics touchpad which use different protocol (as original
firmware in touchpad). And that loaded firmware is active until
laptop is not shut down. When you reboot from Windows to Linux
then linux kernel driver refuse to identify & use touchpad
because it does not support that new firmware loaded by
Windows... I do not know lot of about this problem, I just heard
about it from other people. I did not see any laptop "in action".

Ah, so it's a special interface that's implemented in the Synaptics Windows driver.  As described above this sounds like a stop gap type solution to resolve a field problem until the firmware can be implemented into manufactured parts.  I'd suspect that people who purchased the same model of this computer later might run into problems without warm booting as the firmware got updated into the manufacturer's factory.



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




[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux