acpi: Add more documentation for struct acpi_gpio

Add some documentation provided by Andy Shevchenko to describe how to
use struct acpi_gpio.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2020-09-22 12:45:43 -06:00 committed by Bin Meng
parent 49f5141ed3
commit 1e4073b855

View File

@ -170,6 +170,28 @@ enum acpi_gpio_polarity {
* @io_shared; true if GPIO is shared
* @io_restrict: I/O restriction setting
* @polarity: GPIO polarity
*
* Note that GpioIo doesn't have any means of Active Low / High setting, so a
* _DSD must be provided to mitigate this.
*
* GpioIo doesn't properly communicate the initial state of the output pin,
* thus Linux assumes the simple rule:
*
* Pull Bias Polarity Requested...
*
* Implicit x AS IS (assumed firmware configured for us)
* Explicit x (no _DSD) as Pull Bias (Up == High, Down == Low),
* assuming non-active (Polarity = !Pull Bias)
*
* Down Low as low, assuming active
* Down High as high, assuming non-active
* Up Low as high, assuming non-active
* Up High as high, assuming active
*
* GpioIo() can be used as interrupt and in this case the IoRestriction mustn't
* be OutputOnly. It also requires active_low flag from _DSD in cases where it's
* needed (better to always provide than rely on above assumption made on OS
* level).
*/
struct acpi_gpio {
int pin_count;