summaryrefslogtreecommitdiff
path: root/include/linux/ssb
diff options
context:
space:
mode:
authorMichael Buesch <mb@bu3sch.de>2008-02-19 18:22:50 +0300
committerJohn W. Linville <linville@tuxdriver.com>2008-02-21 04:11:49 +0300
commit53521d8c90d366191b6c134f88a8ebe83de60614 (patch)
tree2d4b8bed0db743927586389ab035aab816d22f36 /include/linux/ssb
parentc2bcbe65fc88d61f9a806367ff6eab76c9eabb3a (diff)
downloadlinux-53521d8c90d366191b6c134f88a8ebe83de60614.tar.xz
ssb: Make the GPIO API reentrancy safe
This fixes the GPIO API to be reentrancy safe. Signed-off-by: Michael Buesch <mb@bu3sch.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include/linux/ssb')
-rw-r--r--include/linux/ssb/ssb.h5
-rw-r--r--include/linux/ssb/ssb_embedded.h8
2 files changed, 13 insertions, 0 deletions
diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h
index 9d5da8b2ccf9..d14c03685717 100644
--- a/include/linux/ssb/ssb.h
+++ b/include/linux/ssb/ssb.h
@@ -283,6 +283,11 @@ struct ssb_bus {
/* Contents of the SPROM. */
struct ssb_sprom sprom;
+#ifdef CONFIG_SSB_EMBEDDED
+ /* Lock for GPIO register access. */
+ spinlock_t gpio_lock;
+#endif /* EMBEDDED */
+
/* Internal-only stuff follows. Do not touch. */
struct list_head list;
#ifdef CONFIG_SSB_DEBUG
diff --git a/include/linux/ssb/ssb_embedded.h b/include/linux/ssb/ssb_embedded.h
index 80bd58496450..8d8dedff059d 100644
--- a/include/linux/ssb/ssb_embedded.h
+++ b/include/linux/ssb/ssb_embedded.h
@@ -7,4 +7,12 @@
extern int ssb_watchdog_timer_set(struct ssb_bus *bus, u32 ticks);
+/* Generic GPIO API */
+u32 ssb_gpio_in(struct ssb_bus *bus, u32 mask);
+u32 ssb_gpio_out(struct ssb_bus *bus, u32 mask, u32 value);
+u32 ssb_gpio_outen(struct ssb_bus *bus, u32 mask, u32 value);
+u32 ssb_gpio_control(struct ssb_bus *bus, u32 mask, u32 value);
+u32 ssb_gpio_intmask(struct ssb_bus *bus, u32 mask, u32 value);
+u32 ssb_gpio_polarity(struct ssb_bus *bus, u32 mask, u32 value);
+
#endif /* LINUX_SSB_EMBEDDED_H_ */