Skip to content

Commit 5f4bfd0

Browse files
author
Bartosz Golaszewski
committed
Merge tag 'intel-gpio-v6.18-1' of git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel into gpio/for-current
intel-gpio fixes for v6.18-1 * Make set debounce errors non-fatal in GPIO ACPI case * Use human readable error when printing a message in GPIO ACPI code
2 parents 2ba5772 + b105567 commit 5f4bfd0

1 file changed

Lines changed: 17 additions & 14 deletions

File tree

drivers/gpio/gpiolib-acpi-core.c

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,19 @@ acpi_gpio_to_gpiod_flags(const struct acpi_resource_gpio *agpio, int polarity)
291291
return GPIOD_ASIS;
292292
}
293293

294+
static void acpi_gpio_set_debounce_timeout(struct gpio_desc *desc,
295+
unsigned int acpi_debounce)
296+
{
297+
int ret;
298+
299+
/* ACPI uses hundredths of milliseconds units */
300+
acpi_debounce *= 10;
301+
ret = gpio_set_debounce_timeout(desc, acpi_debounce);
302+
if (ret)
303+
gpiod_warn(desc, "Failed to set debounce-timeout %u: %d\n",
304+
acpi_debounce, ret);
305+
}
306+
294307
static struct gpio_desc *acpi_request_own_gpiod(struct gpio_chip *chip,
295308
struct acpi_resource_gpio *agpio,
296309
unsigned int index,
@@ -300,18 +313,12 @@ static struct gpio_desc *acpi_request_own_gpiod(struct gpio_chip *chip,
300313
enum gpiod_flags flags = acpi_gpio_to_gpiod_flags(agpio, polarity);
301314
unsigned int pin = agpio->pin_table[index];
302315
struct gpio_desc *desc;
303-
int ret;
304316

305317
desc = gpiochip_request_own_desc(chip, pin, label, polarity, flags);
306318
if (IS_ERR(desc))
307319
return desc;
308320

309-
/* ACPI uses hundredths of milliseconds units */
310-
ret = gpio_set_debounce_timeout(desc, agpio->debounce_timeout * 10);
311-
if (ret)
312-
dev_warn(chip->parent,
313-
"Failed to set debounce-timeout for pin 0x%04X, err %d\n",
314-
pin, ret);
321+
acpi_gpio_set_debounce_timeout(desc, agpio->debounce_timeout);
315322

316323
return desc;
317324
}
@@ -375,8 +382,8 @@ static acpi_status acpi_gpiochip_alloc_event(struct acpi_resource *ares,
375382
desc = acpi_request_own_gpiod(chip, agpio, 0, "ACPI:Event");
376383
if (IS_ERR(desc)) {
377384
dev_err(chip->parent,
378-
"Failed to request GPIO for pin 0x%04X, err %ld\n",
379-
pin, PTR_ERR(desc));
385+
"Failed to request GPIO for pin 0x%04X, err %pe\n",
386+
pin, desc);
380387
return AE_OK;
381388
}
382389

@@ -944,7 +951,6 @@ struct gpio_desc *acpi_find_gpio(struct fwnode_handle *fwnode,
944951
bool can_fallback = acpi_can_fallback_to_crs(adev, con_id);
945952
struct acpi_gpio_info info = {};
946953
struct gpio_desc *desc;
947-
int ret;
948954

949955
desc = __acpi_find_gpio(fwnode, con_id, idx, can_fallback, &info);
950956
if (IS_ERR(desc))
@@ -959,10 +965,7 @@ struct gpio_desc *acpi_find_gpio(struct fwnode_handle *fwnode,
959965
acpi_gpio_update_gpiod_flags(dflags, &info);
960966
acpi_gpio_update_gpiod_lookup_flags(lookupflags, &info);
961967

962-
/* ACPI uses hundredths of milliseconds units */
963-
ret = gpio_set_debounce_timeout(desc, info.debounce * 10);
964-
if (ret)
965-
return ERR_PTR(ret);
968+
acpi_gpio_set_debounce_timeout(desc, info.debounce);
966969

967970
return desc;
968971
}

0 commit comments

Comments
 (0)