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>
This commit is contained in:
Родитель
621e59a771
Коммит
83c6590cb8
|
@ -111,7 +111,9 @@ setting up a platform_device using the GPIO, is mark its direction:
|
||||||
|
|
||||||
The return value is zero for success, else a negative errno. It should
|
The return value is zero for success, else a negative errno. It should
|
||||||
be checked, since the get/set calls don't have error returns and since
|
be checked, since the get/set calls don't have error returns and since
|
||||||
misconfiguration is possible. (These calls could sleep.)
|
misconfiguration is possible. You should normally issue these calls from
|
||||||
|
a task context. However, for spinlock-safe GPIOs it's OK to use them
|
||||||
|
before tasking is enabled, as part of early board setup.
|
||||||
|
|
||||||
For output GPIOs, the value provided becomes the initial output value.
|
For output GPIOs, the value provided becomes the initial output value.
|
||||||
This helps avoid signal glitching during system startup.
|
This helps avoid signal glitching during system startup.
|
||||||
|
@ -197,7 +199,9 @@ However, many platforms don't currently support this mechanism.
|
||||||
|
|
||||||
Passing invalid GPIO numbers to gpio_request() will fail, as will requesting
|
Passing invalid GPIO numbers to gpio_request() will fail, as will requesting
|
||||||
GPIOs that have already been claimed with that call. The return value of
|
GPIOs that have already been claimed with that call. The return value of
|
||||||
gpio_request() must be checked. (These calls could sleep.)
|
gpio_request() must be checked. You should normally issue these calls from
|
||||||
|
a task context. However, for spinlock-safe GPIOs it's OK to request GPIOs
|
||||||
|
before tasking is enabled, as part of early board setup.
|
||||||
|
|
||||||
These calls serve two basic purposes. One is marking the signals which
|
These calls serve two basic purposes. One is marking the signals which
|
||||||
are actually in use as GPIOs, for better diagnostics; systems may have
|
are actually in use as GPIOs, for better diagnostics; systems may have
|
||||||
|
|
Загрузка…
Ссылка в новой задаче