pinctrl: break out a pinctrl consumer header
authorLinus Walleij <linus.walleij@linaro.org>
Thu, 9 Feb 2012 00:52:22 +0000 (01:52 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Fri, 10 Feb 2012 20:32:57 +0000 (21:32 +0100)
This breaks out a <linux/pinctrl/consumer.h> header to be used by
all pinmux and pinconfig alike, so drivers needing services from
pinctrl does not need to include different headers. This is similar
to the approach taken by the regulator API.

Acked-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Documentation/pinctrl.txt
arch/arm/mach-u300/core.c
drivers/pinctrl/pinctrl-coh901.c
include/linux/pinctrl/consumer.h [new file with mode: 0644]
include/linux/pinctrl/pinconf.h
include/linux/pinctrl/pinmux.h

index 14aecd2b2dbc98cd3ec327f2c7bc07aaaca5f2f7..b268832c49d2ca3c37d813a14b85a8e5b09eb30d 100644 (file)
@@ -208,6 +208,8 @@ unconnected.
 
 For example, a platform may do this:
 
+#include <linux/pinctrl/consumer.h>
+
 ret = pin_config_set("foo-dev", "FOO_GPIO_PIN", PLATFORM_X_PULL_UP);
 
 To pull up a pin to VDD. The pin configuration driver implements callbacks for
@@ -920,7 +922,7 @@ this is not possible.
 A driver may request a certain mux to be activated, usually just the default
 mux like this:
 
-#include <linux/pinctrl/pinmux.h>
+#include <linux/pinctrl/consumer.h>
 
 struct foo_state {
        struct pinmux *pmx;
@@ -1019,6 +1021,8 @@ function, but with different named in the mapping as described under
 This snippet first muxes the function in the pins defined by group A, enables
 it, disables and releases it, and muxes it in on the pins defined by group B:
 
+#include <linux/pinctrl/consumer.h>
+
 foo_switch()
 {
        struct pinmux *pmx;
index b4c6926a700cc30c8187768d0a629e590b1d3417..1429e5282198ea03c38bcddb0787afd94f881aca 100644 (file)
@@ -26,7 +26,7 @@
 #include <linux/mtd/nand.h>
 #include <linux/mtd/fsmc.h>
 #include <linux/pinctrl/machine.h>
-#include <linux/pinctrl/pinmux.h>
+#include <linux/pinctrl/consumer.h>
 #include <linux/dma-mapping.h>
 
 #include <asm/types.h>
index 69fb7072a23eafb73891f3fa121fea1c86cf6aa1..8bac3f093d5807819baf862e080b0cae9bacc32a 100644 (file)
@@ -22,7 +22,7 @@
 #include <linux/gpio.h>
 #include <linux/list.h>
 #include <linux/slab.h>
-#include <linux/pinctrl/pinmux.h>
+#include <linux/pinctrl/consumer.h>
 #include <mach/gpio-u300.h>
 
 /*
diff --git a/include/linux/pinctrl/consumer.h b/include/linux/pinctrl/consumer.h
new file mode 100644 (file)
index 0000000..9c8513d
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+ * Consumer interface the pin control subsystem
+ *
+ * Copyright (C) 2012 ST-Ericsson SA
+ * Written on behalf of Linaro for ST-Ericsson
+ * Based on bits of regulator core, gpio core and clk core
+ *
+ * Author: Linus Walleij <linus.walleij@linaro.org>
+ *
+ * License terms: GNU General Public License (GPL) version 2
+ */
+#ifndef __LINUX_PINCTRL_CONSUMER_H
+#define __LINUX_PINCTRL_CONSUMER_H
+
+#include <linux/list.h>
+#include <linux/seq_file.h>
+#include "pinctrl.h"
+
+/* This struct is private to the core and should be regarded as a cookie */
+struct pinmux;
+
+#ifdef CONFIG_PINMUX
+
+/* External interface to pinmux */
+extern int pinmux_request_gpio(unsigned gpio);
+extern void pinmux_free_gpio(unsigned gpio);
+extern int pinmux_gpio_direction_input(unsigned gpio);
+extern int pinmux_gpio_direction_output(unsigned gpio);
+extern struct pinmux * __must_check pinmux_get(struct device *dev, const char *name);
+extern void pinmux_put(struct pinmux *pmx);
+extern int pinmux_enable(struct pinmux *pmx);
+extern void pinmux_disable(struct pinmux *pmx);
+
+#else /* !CONFIG_PINMUX */
+
+static inline int pinmux_request_gpio(unsigned gpio)
+{
+       return 0;
+}
+
+static inline void pinmux_free_gpio(unsigned gpio)
+{
+}
+
+static inline int pinmux_gpio_direction_input(unsigned gpio)
+{
+       return 0;
+}
+
+static inline int pinmux_gpio_direction_output(unsigned gpio)
+{
+       return 0;
+}
+
+static inline struct pinmux * __must_check pinmux_get(struct device *dev, const char *name)
+{
+       return NULL;
+}
+
+static inline void pinmux_put(struct pinmux *pmx)
+{
+}
+
+static inline int pinmux_enable(struct pinmux *pmx)
+{
+       return 0;
+}
+
+static inline void pinmux_disable(struct pinmux *pmx)
+{
+}
+
+#endif /* CONFIG_PINMUX */
+
+#ifdef CONFIG_PINCONF
+
+extern int pin_config_get(const char *dev_name, const char *name,
+                         unsigned long *config);
+extern int pin_config_set(const char *dev_name, const char *name,
+                         unsigned long config);
+extern int pin_config_group_get(const char *dev_name,
+                               const char *pin_group,
+                               unsigned long *config);
+extern int pin_config_group_set(const char *dev_name,
+                               const char *pin_group,
+                               unsigned long config);
+
+#else
+
+static inline int pin_config_get(const char *dev_name, const char *name,
+                                unsigned long *config)
+{
+       return 0;
+}
+
+static inline int pin_config_set(const char *dev_name, const char *name,
+                                unsigned long config)
+{
+       return 0;
+}
+
+static inline int pin_config_group_get(const char *dev_name,
+                                      const char *pin_group,
+                                      unsigned long *config)
+{
+       return 0;
+}
+
+static inline int pin_config_group_set(const char *dev_name,
+                                      const char *pin_group,
+                                      unsigned long config)
+{
+       return 0;
+}
+
+#endif
+
+#endif /* __LINUX_PINCTRL_CONSUMER_H */
index 477922cf043ad26a17c31afc09b0448252fbd1c2..f8cf156873d7c4a2c8df869ba0f5d8ec0b828ddf 100644 (file)
@@ -53,45 +53,6 @@ struct pinconf_ops {
                                           unsigned selector);
 };
 
-extern int pin_config_get(const char *dev_name, const char *name,
-                         unsigned long *config);
-extern int pin_config_set(const char *dev_name, const char *name,
-                         unsigned long config);
-extern int pin_config_group_get(const char *dev_name,
-                               const char *pin_group,
-                               unsigned long *config);
-extern int pin_config_group_set(const char *dev_name,
-                               const char *pin_group,
-                               unsigned long config);
-
-#else
-
-static inline int pin_config_get(const char *dev_name, const char *name,
-                                unsigned long *config)
-{
-       return 0;
-}
-
-static inline int pin_config_set(const char *dev_name, const char *name,
-                                unsigned long config)
-{
-       return 0;
-}
-
-static inline int pin_config_group_get(const char *dev_name,
-                                      const char *pin_group,
-                                      unsigned long *config)
-{
-       return 0;
-}
-
-static inline int pin_config_group_set(const char *dev_name,
-                                      const char *pin_group,
-                                      unsigned long config)
-{
-       return 0;
-}
-
 #endif
 
 #endif /* __LINUX_PINCTRL_PINCONF_H */
index 937b3e2fa36f7a5d1fc2722cd31bbbeb5ee24309..47e9237edd47cfbfbaac9ddcaee6564f3f470750 100644 (file)
@@ -16,9 +16,6 @@
 #include <linux/seq_file.h>
 #include "pinctrl.h"
 
-/* This struct is private to the core and should be regarded as a cookie */
-struct pinmux;
-
 #ifdef CONFIG_PINMUX
 
 struct pinctrl_dev;
@@ -88,55 +85,6 @@ struct pinmux_ops {
                                   bool input);
 };
 
-/* External interface to pinmux */
-extern int pinmux_request_gpio(unsigned gpio);
-extern void pinmux_free_gpio(unsigned gpio);
-extern int pinmux_gpio_direction_input(unsigned gpio);
-extern int pinmux_gpio_direction_output(unsigned gpio);
-extern struct pinmux * __must_check pinmux_get(struct device *dev, const char *name);
-extern void pinmux_put(struct pinmux *pmx);
-extern int pinmux_enable(struct pinmux *pmx);
-extern void pinmux_disable(struct pinmux *pmx);
-
-#else /* !CONFIG_PINMUX */
-
-static inline int pinmux_request_gpio(unsigned gpio)
-{
-       return 0;
-}
-
-static inline void pinmux_free_gpio(unsigned gpio)
-{
-}
-
-static inline int pinmux_gpio_direction_input(unsigned gpio)
-{
-       return 0;
-}
-
-static inline int pinmux_gpio_direction_output(unsigned gpio)
-{
-       return 0;
-}
-
-static inline struct pinmux * __must_check pinmux_get(struct device *dev, const char *name)
-{
-       return NULL;
-}
-
-static inline void pinmux_put(struct pinmux *pmx)
-{
-}
-
-static inline int pinmux_enable(struct pinmux *pmx)
-{
-       return 0;
-}
-
-static inline void pinmux_disable(struct pinmux *pmx)
-{
-}
-
 #endif /* CONFIG_PINMUX */
 
 #endif /* __LINUX_PINCTRL_PINMUX_H */