gpiolib: acpi: Set initial value for output pin based on bias and polarity
authorVasile-Laurentiu Stanimir <vasile-laurentiu.stanimir@windriver.com>
Thu, 1 Oct 2020 17:12:12 +0000 (20:12 +0300)
committerAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 16 Nov 2020 12:14:35 +0000 (14:14 +0200)
commit56f7058af0dc0fb07b03cb49b945d8793dc3264a
treef42b2313572b2d54a80d7608400a1f28a4b2d1b4
parent1a81f19154b4afcd4216a7253938adf1c0e65ea9
gpiolib: acpi: Set initial value for output pin based on bias and polarity

GpioIo() resources don't contain an initial value for the output pin.
Therefore instead of deducting its value solely based on bias field
we should deduce that value from the polarity and the bias fields.
Typical scenario is, when pin is defined in the table and its polarity,
specified in _DSD or via platform code, is defined as active low,
in the following call chain:

  -> acpi_populate_gpio_lookup()
     -> acpi_gpio_to_gpiod_flags()

it will return GPIOD_OUT_HIGH if bias is set no matter if polarity
is GPIO_ACTIVE_LOW, so it will return the current level instead of
the logical level.

Cc: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Vasile-Laurentiu Stanimir <vasile-laurentiu.stanimir@windriver.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/gpio/gpiolib-acpi.c