Hi, On 7/16/19 9:21 AM, Dmitry Torokhov wrote:
When you are saying that Pro 4 and later models use different notifications, does this mean that Pro 4 does not define any GPIOs?
Unfortunately, at least the Surface Book (first generation, buttons are handled the same way as on the Pro 4) has GPIOs defined in MSHW0040, but they are for different use. Specifically: They can detect if the clipboard (screen part of the device, the device basically has two parts that can be separated: clipboard and base) is being removed. Relying on the GPIOs was my first idea too, but that has been reported to shut down the Book 1 when the clipboard is detached. As far as I know, the OEM platform revision check is the easiest way to differentiate between those devices.
I do not believe -EAGAIN has any special meaning in the driver core;
I think I got the -EAGAIN from an outdated LWN article when I first started working on this, thanks for confirming.
also when the GPIO controller is not ready gpiod_get() will return -EPROBE_DEFER, which is the prober way if signalling that some resource is not yet available and probe should be retries at a later time. Moreover, I do not believe that gpiod_count() needs GPIO controller to be ready, the count is taken from board firmware or static board file definition, so if gpiod_count() returns 0 it should be clear indication that the driver should not be used with the device.
Thank you for this insight, I will update the patch accordingly. Maximilian