summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChe-Liang Chiou <clchiou@chromium.org>2012-07-12 12:02:44 +0800
committerKatie Roberts-Hoffman <katierh@chromium.org>2012-07-12 02:00:27 -0700
commit7def3a9dfb56da418aa5dca0cf76e4448b9ba27e (patch)
treef314f2fa15e92cae85c9c8f53ae08efd16ea2367
parentedea097d55771083fd17075f2cc2c8c7a5449914 (diff)
downloadvboot-factory-2569.B.tar.gz
CHERRY-PICK: crossystem: Return error when trying to read GPIO port zerofactory-2569.B
For the record, zero is a valid GPIO port number. Unfortunately firmware uses port zero to denote that a GPIO port is not exist. So crossystem should not attempt to read GPIO port zero, but return error instead. Signed-off-by: Che-Liang Chiou <clchiou@chromium.org> BUG=chrome-os-partner:11296 TEST=On Snow, run crossystem and see devsw_cur and recoverysw_cur are "(error)" Change-Id: I36f201dcd098ff787707b5a5c7c741859c1ebd82 Original-Change-Id: I70b15824f613df1e46bf152515ad4e9362c9f066 Reviewed-on: https://gerrit.chromium.org/gerrit/27269 Reviewed-by: Bernie Thompson <bhthompson@chromium.org> Reviewed-by: Che-Liang Chiou <clchiou@chromium.org> Tested-by: Katie Roberts-Hoffman <katierh@chromium.org>
-rw-r--r--host/arch/arm/lib/crossystem_arch.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/host/arch/arm/lib/crossystem_arch.c b/host/arch/arm/lib/crossystem_arch.c
index d1030c89..1e5ecbad 100644
--- a/host/arch/arm/lib/crossystem_arch.c
+++ b/host/arch/arm/lib/crossystem_arch.c
@@ -238,7 +238,16 @@ static int VbGetVarGpio(const char* name) {
gpio_num = ntohl(prop[1]);
polarity = ntohl(prop[2]);
- ret = VbGetGpioStatus(gpio_num) ^ polarity ^ 1;
+ /*
+ * TODO(chrome-os-partner:11296): Use gpio_num == 0 to denote non-exist
+ * GPIO for now, at the risk that one day we might actually want to read
+ * from a GPIO port 0. We should figure out how to represent "non-exist"
+ * properly.
+ */
+ if (gpio_num)
+ ret = VbGetGpioStatus(gpio_num) ^ polarity ^ 1;
+ else
+ ret = -1;
out:
if (pp)
free(pp);