gpio: better lookup method for platform GPIOs
authorAlexandre Courbot <acourbot@nvidia.com>
Tue, 3 Dec 2013 03:20:11 +0000 (12:20 +0900)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 9 Dec 2013 13:05:51 +0000 (14:05 +0100)
commitad824783fb23bbc8295cffb6214b3b82d25f7d4a
tree745d128c1d04dca7a6c7b10dd737f116f13ddcb1
parentbdc54ef45d7670aeb52ce73f8b7ad5f3e5563661
gpio: better lookup method for platform GPIOs

Change the format of the platform GPIO lookup tables to make them less
confusing and improve lookup efficiency.

The previous format was a single linked-list that required to compare
the device name and function ID of every single GPIO defined for each
lookup. Switch that to a list of per-device tables, so that the lookup
can be done in two steps, omitting the GPIOs that are not relevant for a
particular device.

The matching rules are now defined as follows:
- The device name must match *exactly*, and can be NULL for GPIOs not
  assigned to a particular device,
- If the function ID in the lookup table is NULL, the con_id argument of
  gpiod_get() will not be used for lookup. However, if it is defined, it
  must match exactly.
- The index must always match.

Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Documentation/gpio/board.txt
drivers/gpio/gpiolib.c
include/linux/gpio/driver.h