diff mbox series

[v1,1/8] pinctrl: Introduce struct pinfunction and PINCTRL_PINFUNCTION() macro

Message ID 20221219124240.62781-1-andriy.shevchenko@linux.intel.com
State Accepted
Commit 443a0a0f0cf4f432c7af6654b7f2f920d411d379
Headers show
Series [v1,1/8] pinctrl: Introduce struct pinfunction and PINCTRL_PINFUNCTION() macro | expand

Commit Message

Andy Shevchenko Dec. 19, 2022, 12:42 p.m. UTC
There are many pin control drivers define their own data type for
pin function representation which is the same or embed the same data
as newly introduced one. Provide the data type and convenient macro
for all pin control drivers.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 include/linux/pinctrl/pinctrl.h | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

Comments

Andy Shevchenko Dec. 27, 2022, 9:46 p.m. UTC | #1
On Tue, Dec 20, 2022 at 08:20:31AM +0200, Mika Westerberg wrote:
> On Mon, Dec 19, 2022 at 04:42:41PM +0200, Andy Shevchenko wrote:
> > On Mon, Dec 19, 2022 at 02:42:33PM +0200, Andy Shevchenko wrote:
> > > There are many pin control drivers define their own data type for
> > > pin function representation which is the same or embed the same data
> > > as newly introduced one. Provide the data type and convenient macro
> > > for all pin control drivers.
> > 
> > The stats for the entire series:
> > 
> > drivers/pinctrl/intel/pinctrl-baytrail.c   | 10 +++++-----
> > drivers/pinctrl/intel/pinctrl-cherryview.c |  6 +++---
> > drivers/pinctrl/intel/pinctrl-intel.c      |  6 +++---
> > drivers/pinctrl/intel/pinctrl-intel.h      | 16 +++++-----------
> > drivers/pinctrl/intel/pinctrl-lynxpoint.c  |  8 ++++----
> > drivers/pinctrl/intel/pinctrl-merrifield.c |  6 +++---
> > drivers/pinctrl/intel/pinctrl-moorefield.c |  6 +++---
> > include/linux/pinctrl/pinctrl.h            | 20 ++++++++++++++++++++
> > 8 files changed, 46 insertions(+), 32 deletions(-)
> 
> Thanks!
> 
> For the series,
> 
> Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>

Pushed to my review and testing queue, thanks!
Linus Walleij Dec. 29, 2022, 9:17 p.m. UTC | #2
On Mon, Dec 19, 2022 at 1:42 PM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:

> There are many pin control drivers define their own data type for
> pin function representation which is the same or embed the same data
> as newly introduced one. Provide the data type and convenient macro
> for all pin control drivers.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

Very nice and helpful!
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij
diff mbox series

Patch

diff --git a/include/linux/pinctrl/pinctrl.h b/include/linux/pinctrl/pinctrl.h
index a0d39b303431..4d252ea00ed1 100644
--- a/include/linux/pinctrl/pinctrl.h
+++ b/include/linux/pinctrl/pinctrl.h
@@ -206,6 +206,26 @@  extern int pinctrl_get_group_pins(struct pinctrl_dev *pctldev,
 				const char *pin_group, const unsigned **pins,
 				unsigned *num_pins);
 
+/**
+ * struct pinfunction - Description about a function
+ * @name: Name of the function
+ * @groups: An array of groups for this function
+ * @ngroups: Number of groups in @groups
+ */
+struct pinfunction {
+	const char *name;
+	const char * const *groups;
+	size_t ngroups;
+};
+
+/* Convenience macro to define a single named pinfunction */
+#define PINCTRL_PINFUNCTION(_name, _groups, _ngroups)	\
+(struct pinfunction) {					\
+		.name = (_name),			\
+		.groups = (_groups),			\
+		.ngroups = (_ngroups),			\
+	}
+
 #if IS_ENABLED(CONFIG_OF) && IS_ENABLED(CONFIG_PINCTRL)
 extern struct pinctrl_dev *of_pinctrl_get(struct device_node *np);
 #else