diff options
author | Alexandre Courbot <acourbot@nvidia.com> | 2014-08-19 13:06:09 -0400 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2014-08-29 02:58:34 -0400 |
commit | abdc08a3a263a20e49534a36291d657bf53dda5b (patch) | |
tree | e26e4f6c9f26f8d7dda2415b0e9ee0b00b03a331 /drivers/gpio/gpiolib-acpi.c | |
parent | e46cf32ced90d00972d5c3d9322cdb848d183338 (diff) |
gpio: change gpiochip_request_own_desc() prototype
The current prototype of gpiochip_request_own_desc() requires to obtain
a pointer to a descriptor. This is in contradiction to all other GPIO
request schemes, and imposes an extra step of obtaining a descriptor to
drivers. Most drivers actually cannot even perform that step since the
function that does it (gpichip_get_desc()) is gpiolib-private.
Change gpiochip_request_own_desc() to return a descriptor from a
(chip, hwnum) tuple and update users of this function (currently
gpiolib-acpi only).
Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/gpio/gpiolib-acpi.c')
-rw-r--r-- | drivers/gpio/gpiolib-acpi.c | 20 |
1 files changed, 3 insertions, 17 deletions
diff --git a/drivers/gpio/gpiolib-acpi.c b/drivers/gpio/gpiolib-acpi.c index 84540025aa08..f9103e72e2a4 100644 --- a/drivers/gpio/gpiolib-acpi.c +++ b/drivers/gpio/gpiolib-acpi.c | |||
@@ -145,14 +145,8 @@ static acpi_status acpi_gpiochip_request_interrupt(struct acpi_resource *ares, | |||
145 | if (!handler) | 145 | if (!handler) |
146 | return AE_BAD_PARAMETER; | 146 | return AE_BAD_PARAMETER; |
147 | 147 | ||
148 | desc = gpiochip_get_desc(chip, pin); | 148 | desc = gpiochip_request_own_desc(chip, pin, "ACPI:Event"); |
149 | if (IS_ERR(desc)) { | 149 | if (IS_ERR(desc)) { |
150 | dev_err(chip->dev, "Failed to get GPIO descriptor\n"); | ||
151 | return AE_ERROR; | ||
152 | } | ||
153 | |||
154 | ret = gpiochip_request_own_desc(desc, "ACPI:Event"); | ||
155 | if (ret) { | ||
156 | dev_err(chip->dev, "Failed to request GPIO\n"); | 150 | dev_err(chip->dev, "Failed to request GPIO\n"); |
157 | return AE_ERROR; | 151 | return AE_ERROR; |
158 | } | 152 | } |
@@ -420,22 +414,14 @@ acpi_gpio_adr_space_handler(u32 function, acpi_physical_address address, | |||
420 | } | 414 | } |
421 | } | 415 | } |
422 | if (!found) { | 416 | if (!found) { |
423 | int ret; | 417 | desc = gpiochip_request_own_desc(chip, pin, |
424 | 418 | "ACPI:OpRegion"); | |
425 | desc = gpiochip_get_desc(chip, pin); | ||
426 | if (IS_ERR(desc)) { | 419 | if (IS_ERR(desc)) { |
427 | status = AE_ERROR; | 420 | status = AE_ERROR; |
428 | mutex_unlock(&achip->conn_lock); | 421 | mutex_unlock(&achip->conn_lock); |
429 | goto out; | 422 | goto out; |
430 | } | 423 | } |
431 | 424 | ||
432 | ret = gpiochip_request_own_desc(desc, "ACPI:OpRegion"); | ||
433 | if (ret) { | ||
434 | status = AE_ERROR; | ||
435 | mutex_unlock(&achip->conn_lock); | ||
436 | goto out; | ||
437 | } | ||
438 | |||
439 | switch (agpio->io_restriction) { | 425 | switch (agpio->io_restriction) { |
440 | case ACPI_IO_RESTRICT_INPUT: | 426 | case ACPI_IO_RESTRICT_INPUT: |
441 | gpiod_direction_input(desc); | 427 | gpiod_direction_input(desc); |