Patchworkβ [2/3] omap: mux: add interface for encoded mux configration

login
register
about
Submitter Mike Rapoport
Date 2009-10-28 13:07:44
Message ID <6acc1e45771b767fb89947455837ffcdbde01b95.1256734115.git.mike@compulab.co.il>
Download mbox | patch
Permalink /patch/56284/
State Superseded, archived
Delegated to: Tony Lindgren
Headers show

Comments

Mike Rapoport - 2009-10-28 13:07:44
Signed-off-by: Mike Rapoport <mike@compulab.co.il>
---
 arch/arm/plat-omap/include/plat/mux.h |    3 +++
 arch/arm/plat-omap/mux.c              |   17 +++++++++++++++++
 2 files changed, 20 insertions(+), 0 deletions(-)

Patch

diff --git a/arch/arm/plat-omap/include/plat/mux.h b/arch/arm/plat-omap/include/plat/mux.h
index f3c1d8a..edc3ff9 100644
--- a/arch/arm/plat-omap/include/plat/mux.h
+++ b/arch/arm/plat-omap/include/plat/mux.h
@@ -846,6 +846,7 @@  struct omap_mux_cfg {
 	struct pin_config	*pins;
 	unsigned long		size;
 	int			(*cfg_reg)(const struct pin_config *cfg);
+	int			(*cfg_pin)(unsigned long pin_config);
 };
 
 #ifdef	CONFIG_OMAP_MUX
@@ -854,11 +855,13 @@  extern int omap1_mux_init(void);
 extern int omap2_mux_init(void);
 extern int omap_mux_register(struct omap_mux_cfg *);
 extern int omap_cfg_reg(unsigned long reg_cfg);
+extern int omap_cfg_pin(unsigned long pin_config);
 #else
 /* boot loader does it all (no warnings from CONFIG_OMAP_MUX_WARNINGS) */
 static inline int omap1_mux_init(void) { return 0; }
 static inline int omap2_mux_init(void) { return 0; }
 static inline int omap_cfg_reg(unsigned long reg_cfg) { return 0; }
+static inline int omap_cfg_pin(unsigned long pin_config) { return 0; }
 #endif
 
 #endif
diff --git a/arch/arm/plat-omap/mux.c b/arch/arm/plat-omap/mux.c
index 05aebca..94b37c1 100644
--- a/arch/arm/plat-omap/mux.c
+++ b/arch/arm/plat-omap/mux.c
@@ -77,7 +77,24 @@  int __init_or_module omap_cfg_reg(const unsigned long index)
 	return mux_cfg->cfg_reg(reg);
 }
 EXPORT_SYMBOL(omap_cfg_reg);
+
+int __init_or_module omap_cfg_pin(unsigned long pin_config)
+{
+	if (mux_cfg == NULL) {
+		printk(KERN_ERR "MUX: pin mux table not initialized\n");
+		return -ENODEV;
+	}
+
+	if (!mux_cfg->cfg_pin) {
+		printk(KERN_ERR "MUX: cfg_pin interface is not supported\n");
+		return -ENODEV;
+	}
+
+	return mux_cfg->cfg_pin(pin_config);
+}
+EXPORT_SYMBOL(omap_cfg_pin);
 #else
 #define omap_mux_init() do {} while(0)
 #define omap_cfg_reg(x)	do {} while(0)
+#define omap_cfg_pin(x)	do {} while(0)
 #endif	/* CONFIG_OMAP_MUX */