gpiolib: acpi: Introduce NO_RESTRICTION quirk
Allow to relax IoRestriction for certain cases. One of the use case is incorrectly cooked ACPI table where interrupt pin is defined with GpioIo() macro with IoRestrictionOutputOnly. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
此提交包含在:
@@ -496,11 +496,18 @@ int
|
||||
acpi_gpio_update_gpiod_flags(enum gpiod_flags *flags, struct acpi_gpio_info *info)
|
||||
{
|
||||
struct device *dev = &info->adev->dev;
|
||||
enum gpiod_flags old = *flags;
|
||||
int ret;
|
||||
|
||||
ret = __acpi_gpio_update_gpiod_flags(flags, info->flags);
|
||||
if (ret)
|
||||
dev_dbg(dev, "Override GPIO initialization flags\n");
|
||||
ret = __acpi_gpio_update_gpiod_flags(&old, info->flags);
|
||||
if (info->quirks & ACPI_GPIO_QUIRK_NO_IO_RESTRICTION) {
|
||||
if (ret)
|
||||
dev_warn(dev, FW_BUG "GPIO not in correct mode, fixing\n");
|
||||
} else {
|
||||
if (ret)
|
||||
dev_dbg(dev, "Override GPIO initialization flags\n");
|
||||
*flags = old;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
新增問題並參考
封鎖使用者