From 0979ffda12b636fab58228c2b40bab1e2f6b327b Mon Sep 17 00:00:00 2001
From: Nikita Shubin <n.shubin@yadro.com>
Date: Tue, 2 Nov 2021 17:39:11 +0300
Subject: 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>
---
 include/sbi_utils/gpio/gpio.h | 8 ++++++++
 1 file changed, 8 insertions(+)

(limited to 'include')

diff --git a/include/sbi_utils/gpio/gpio.h b/include/sbi_utils/gpio/gpio.h
index 167d11a..7a3d8bb 100644
--- a/include/sbi_utils/gpio/gpio.h
+++ b/include/sbi_utils/gpio/gpio.h
@@ -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);
 
-- 
cgit v1.2.3