diff options
author | Michael Buesch <mb@bu3sch.de> | 2008-02-19 10:22:50 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-02-20 20:11:49 -0500 |
commit | 53521d8c90d366191b6c134f88a8ebe83de60614 (patch) | |
tree | 2d4b8bed0db743927586389ab035aab816d22f36 /include/linux/ssb | |
parent | c2bcbe65fc88d61f9a806367ff6eab76c9eabb3a (diff) |
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.h | 5 | ||||
-rw-r--r-- | include/linux/ssb/ssb_embedded.h | 8 |
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 { | |||
283 | /* Contents of the SPROM. */ | 283 | /* Contents of the SPROM. */ |
284 | struct ssb_sprom sprom; | 284 | struct ssb_sprom sprom; |
285 | 285 | ||
286 | #ifdef CONFIG_SSB_EMBEDDED | ||
287 | /* Lock for GPIO register access. */ | ||
288 | spinlock_t gpio_lock; | ||
289 | #endif /* EMBEDDED */ | ||
290 | |||
286 | /* Internal-only stuff follows. Do not touch. */ | 291 | /* Internal-only stuff follows. Do not touch. */ |
287 | struct list_head list; | 292 | struct list_head list; |
288 | #ifdef CONFIG_SSB_DEBUG | 293 | #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 @@ | |||
7 | 7 | ||
8 | extern int ssb_watchdog_timer_set(struct ssb_bus *bus, u32 ticks); | 8 | extern int ssb_watchdog_timer_set(struct ssb_bus *bus, u32 ticks); |
9 | 9 | ||
10 | /* Generic GPIO API */ | ||
11 | u32 ssb_gpio_in(struct ssb_bus *bus, u32 mask); | ||
12 | u32 ssb_gpio_out(struct ssb_bus *bus, u32 mask, u32 value); | ||
13 | u32 ssb_gpio_outen(struct ssb_bus *bus, u32 mask, u32 value); | ||
14 | u32 ssb_gpio_control(struct ssb_bus *bus, u32 mask, u32 value); | ||
15 | u32 ssb_gpio_intmask(struct ssb_bus *bus, u32 mask, u32 value); | ||
16 | u32 ssb_gpio_polarity(struct ssb_bus *bus, u32 mask, u32 value); | ||
17 | |||
10 | #endif /* LINUX_SSB_EMBEDDED_H_ */ | 18 | #endif /* LINUX_SSB_EMBEDDED_H_ */ |