diff options
author | David Brownell <david-b@pacbell.net> | 2007-05-17 01:11:13 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-17 08:23:05 -0400 |
commit | 83c6590cb83d3106df12fee36ac2a261951b8c88 (patch) | |
tree | 8906e0f3366959e2595d26d263ab32922958743b | |
parent | 621e59a771f310358ade8f14cb745d5d5f1c410e (diff) |
gpio interface loosens call restrictions
Loosen gpio_{request,free}() and gpio_direction_{in,out}put() call context
restrictions slightly, so a common idiom is no longer an error: board init
code setting up spinlock-safe GPIOs before tasking is enabled.
The issue was caught by some paranoid code with might_sleep() checks. The
legacy platform-specific GPIO interfaces stick to spinlock-safe GPIOs, so this
change reflects current implementations and won't break anything.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | Documentation/gpio.txt | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Documentation/gpio.txt b/Documentation/gpio.txt index e8be0abb346c..36af58eba136 100644 --- a/Documentation/gpio.txt +++ b/Documentation/gpio.txt | |||
@@ -111,7 +111,9 @@ setting up a platform_device using the GPIO, is mark its direction: | |||
111 | 111 | ||
112 | The return value is zero for success, else a negative errno. It should | 112 | The return value is zero for success, else a negative errno. It should |
113 | be checked, since the get/set calls don't have error returns and since | 113 | be checked, since the get/set calls don't have error returns and since |
114 | misconfiguration is possible. (These calls could sleep.) | 114 | misconfiguration is possible. You should normally issue these calls from |
115 | a task context. However, for spinlock-safe GPIOs it's OK to use them | ||
116 | before tasking is enabled, as part of early board setup. | ||
115 | 117 | ||
116 | For output GPIOs, the value provided becomes the initial output value. | 118 | For output GPIOs, the value provided becomes the initial output value. |
117 | This helps avoid signal glitching during system startup. | 119 | This helps avoid signal glitching during system startup. |
@@ -197,7 +199,9 @@ However, many platforms don't currently support this mechanism. | |||
197 | 199 | ||
198 | Passing invalid GPIO numbers to gpio_request() will fail, as will requesting | 200 | Passing invalid GPIO numbers to gpio_request() will fail, as will requesting |
199 | GPIOs that have already been claimed with that call. The return value of | 201 | GPIOs that have already been claimed with that call. The return value of |
200 | gpio_request() must be checked. (These calls could sleep.) | 202 | gpio_request() must be checked. You should normally issue these calls from |
203 | a task context. However, for spinlock-safe GPIOs it's OK to request GPIOs | ||
204 | before tasking is enabled, as part of early board setup. | ||
201 | 205 | ||
202 | These calls serve two basic purposes. One is marking the signals which | 206 | These calls serve two basic purposes. One is marking the signals which |
203 | are actually in use as GPIOs, for better diagnostics; systems may have | 207 | are actually in use as GPIOs, for better diagnostics; systems may have |