gpio: Introduce gpio descriptor 'name'
The latest gpio hogging mechanism assigns each gpio a 'line-name' in the devicetree. The 'name' field is different from the 'label' field. 'label' is only used for requested GPIOs to describe its current use by driver or userspace. The 'name' field describes the GPIO itself, not the use. This is most likely identical to the label in the schematic on the GPIO line and should help to find this particular GPIO. This is equivalent to the gpiochip->names array. However names should be stored in the GPIO descriptor. We will use gpiochip->names in the future only as initializer for the GPIO descriptors for drivers that assign GPIO names hardcoded. All other GPIO names will be parsed from DT and directly assigned to the GPIO descriptor. This patch adds a helper function to find gpio descriptors by name instead of gpio number. Signed-off-by: Markus Pargmann <mpa@pengutronix.de> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:

کامیت شده توسط
Linus Walleij

والد
fd7337fdb9
کامیت
c0017ed719
@@ -89,6 +89,38 @@ struct gpio_desc *gpio_to_desc(unsigned gpio)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(gpio_to_desc);
|
||||
|
||||
/**
|
||||
* Convert a GPIO name to its descriptor
|
||||
*/
|
||||
struct gpio_desc *gpio_name_to_desc(const char * const name)
|
||||
{
|
||||
struct gpio_chip *chip;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&gpio_lock, flags);
|
||||
|
||||
list_for_each_entry(chip, &gpio_chips, list) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i != chip->ngpio; ++i) {
|
||||
struct gpio_desc *gpio = &chip->desc[i];
|
||||
|
||||
if (!gpio->name)
|
||||
continue;
|
||||
|
||||
if (!strcmp(gpio->name, name)) {
|
||||
spin_unlock_irqrestore(&gpio_lock, flags);
|
||||
return gpio;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
spin_unlock_irqrestore(&gpio_lock, flags);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(gpio_name_to_desc);
|
||||
|
||||
/**
|
||||
* Get the GPIO descriptor corresponding to the given hw number for this chip.
|
||||
*/
|
||||
|
مرجع در شماره جدید
Block a user