lib: utils/gpio: use list for drivers

Convert static array to sbi_list.

This removes size limitation, makes add/remove more efficient and
saves space.

Signed-off-by: Nikita Shubin <n.shubin@yadro.com>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
This commit is contained in:
Nikita Shubin
2021-11-02 17:39:11 +03:00
committed by Anup Patel
parent 013ba4ef3d
commit 0979ffda12
2 changed files with 19 additions and 29 deletions

View File

@@ -11,6 +11,7 @@
#define __GPIO_H__
#include <sbi/sbi_types.h>
#include <sbi/sbi_list.h>
#define GPIO_LINE_DIRECTION_IN 1
#define GPIO_LINE_DIRECTION_OUT 0
@@ -70,8 +71,15 @@ struct gpio_chip {
int (*get)(struct gpio_pin *gp);
/** Set output value for GPIO pin */
void (*set)(struct gpio_pin *gp, int value);
/** List */
struct sbi_dlist node;
};
static inline struct gpio_chip *to_gpio_chip(struct sbi_dlist *node)
{
return container_of(node, struct gpio_chip, node);
}
/** Find a registered GPIO chip */
struct gpio_chip *gpio_chip_find(unsigned int id);