Thread (53 messages) 53 messages, 6 authors, 2017-03-14

Re: [PATCH v2] Input: silead - Do not try to directly access the GPIO when using ACPI pm

From: Mika Westerberg <mika.westerberg@linux.intel.com>
Date: 2017-02-02 13:49:05

On Thu, Feb 02, 2017 at 02:27:28PM +0100, Hans de Goede wrote:
quoted
Actually what is wrong here is that your gpiod_get(dev, "power") falls
back to use plain indexes and returns the first GPIO even though it
should not as the driver specifically requests GPIO with name "power"
and there is no _DSD.
There is no clear "binding" for this device in ACPI, so the fallback
is actually used as a feature by the Silead driver (more or less),
the use of "power" as name here is for the ARM + devicetree usage
of the driver really, so IOW the series:
quoted
Andy (Cc'd) has a patch that tries to make the fallback mechanism more
stricter which should in theory fix the problem as well. The patch
series is here:

https://bitbucket.org/andy-shev/linux/commits/338c0226b631b8b497d143070a301d8b8883c349?at=master
You are referring to might fix this, but then we may need to add an
attempt to get the gpio by index for some boards which do not control
it themselves from _PS#.

I can give the linked series a try, but I would still like a fallback
plan if we indeed encounter boards where we need to fallback to
getting the gpio by index. Once we do that we're back to having the
same problem as then we would do the same fallback on boards where
the pin is reserved for _PS# usage, and end up with an -EBUSY error
again. I guess we could ignore -EBUSY in the fallback path, or only
do the fallback if acpi_bus_power_manageable() returns false.
I don't think using acpi_bus_power_manageable() is a proper way to fix
this.

This can be fixed without the fallback so that for the boards you know
need to handle the GPIO themselves (based on the _HID for example), they
will call acpi_dev_add_driver_gpios() passing the mapping for "power".
The other boards then just don't get the GPIO.

We really want to get rid of the whole fallback mess.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help