aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/gpio.txt
diff options
context:
space:
mode:
authorDavid Brownell <david-b@pacbell.net>2007-03-16 17:38:14 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-03-16 22:25:04 -0400
commit28735a7253a6c24364765e80a5428b4a151fccc2 (patch)
tree824c6391341338dac51f92735d37c83de0d1d522 /Documentation/gpio.txt
parenta836f5856ae46ccb2464ea76031ea05ae967b832 (diff)
[PATCH] gpio_direction_output() needs an initial value
It's been pointed out that output GPIOs should have an initial value, to avoid signal glitching ... among other things, it can be some time before a driver is ready. This patch corrects that oversight, fixing - documentation - platforms supporting the GPIO interface - users of that call (just one for now, others are pending) There's only one user of this call for now since most platforms are still using non-generic GPIO setup code, which in most cases already couples the initial value with its "set output mode" request. Note that most platforms are clear about the hardware letting the output value be set before the pin direction is changed, but the s3c241x docs are vague on that topic ... so those chips might not avoid the glitches. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Acked-by: Andrew Victor <andrew@sanpeople.com> Acked-by: Milan Svoboda <msvoboda@ra.rockwell.com> Acked-by: Haavard Skinnemoen <hskinnemoen@atmel.com> Cc: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'Documentation/gpio.txt')
-rw-r--r--Documentation/gpio.txt5
1 files changed, 4 insertions, 1 deletions
diff --git a/Documentation/gpio.txt b/Documentation/gpio.txt
index 576ce463cf44..989f1130f4f3 100644
--- a/Documentation/gpio.txt
+++ b/Documentation/gpio.txt
@@ -105,12 +105,15 @@ setting up a platform_device using the GPIO, is mark its direction:
105 105
106 /* set as input or output, returning 0 or negative errno */ 106 /* set as input or output, returning 0 or negative errno */
107 int gpio_direction_input(unsigned gpio); 107 int gpio_direction_input(unsigned gpio);
108 int gpio_direction_output(unsigned gpio); 108 int gpio_direction_output(unsigned gpio, int value);
109 109
110The return value is zero for success, else a negative errno. It should 110The return value is zero for success, else a negative errno. It should
111be checked, since the get/set calls don't have error returns and since 111be checked, since the get/set calls don't have error returns and since
112misconfiguration is possible. (These calls could sleep.) 112misconfiguration is possible. (These calls could sleep.)
113 113
114For output GPIOs, the value provided becomes the initial output value.
115This helps avoid signal glitching during system startup.
116
114Setting the direction can fail if the GPIO number is invalid, or when 117Setting the direction can fail if the GPIO number is invalid, or when
115that particular GPIO can't be used in that mode. It's generally a bad 118that particular GPIO can't be used in that mode. It's generally a bad
116idea to rely on boot firmware to have set the direction correctly, since 119idea to rely on boot firmware to have set the direction correctly, since