aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-u300/padmux.h
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@stericsson.com>2009-08-10 12:52:40 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2009-08-15 15:36:28 +0100
commitdf1e0520f9434b5b771c854a13dd928727d8673a (patch)
tree5d48442a1c8e43122511fd0c73596ac3917f8483 /arch/arm/mach-u300/padmux.h
parent5ad73d07173e7b76c16bcb8b6cf64d8386019689 (diff)
downloadkernel_samsung_smdk4412-df1e0520f9434b5b771c854a13dd928727d8673a.zip
kernel_samsung_smdk4412-df1e0520f9434b5b771c854a13dd928727d8673a.tar.gz
kernel_samsung_smdk4412-df1e0520f9434b5b771c854a13dd928727d8673a.tar.bz2
ARM: 5666/1: Revamped U300 padmux API
This abstracts the hackish padmux API on the U300 platform into something more manageable. It provides a way for drivers to activate/deactivate a certain padmux setting. It will also switch the users of the old API over to using the new style, pushing muxing into the apropriate setup files. Signed-off-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-u300/padmux.h')
-rw-r--r--arch/arm/mach-u300/padmux.h28
1 files changed, 24 insertions, 4 deletions
diff --git a/arch/arm/mach-u300/padmux.h b/arch/arm/mach-u300/padmux.h
index 8c2099a..6e8b860 100644
--- a/arch/arm/mach-u300/padmux.h
+++ b/arch/arm/mach-u300/padmux.h
@@ -6,14 +6,34 @@
* Copyright (C) 2009 ST-Ericsson AB
* License terms: GNU General Public License (GPL) version 2
* U300 PADMUX API
- * Author: Linus Walleij <linus.walleij@stericsson.com>
- *
+ * Author: Martin Persson <martin.persson@stericsson.com>
*/
#ifndef __MACH_U300_PADMUX_H
#define __MACH_U300_PADMUX_H
-void pmx_set_mission_mode_mmc(void);
-void pmx_set_mission_mode_spi(void);
+enum pmx_settings {
+ U300_APP_PMX_MMC_SETTING,
+ U300_APP_PMX_SPI_SETTING
+};
+
+struct pmx_onmask {
+ u16 mask; /* Mask bits */
+ u16 val; /* Value when active */
+};
+
+struct pmx {
+ struct device *dev;
+ enum pmx_settings setting;
+ char *name;
+ bool activated;
+ bool default_on;
+ struct pmx_onmask onmask[];
+};
+
+struct pmx *pmx_get(struct device *dev, enum pmx_settings setting);
+int pmx_put(struct device *dev, struct pmx *pmx);
+int pmx_activate(struct device *dev, struct pmx *pmx);
+int pmx_deactivate(struct device *dev, struct pmx *pmx);
#endif