Commit 7bfa0781 authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman

greybus: gpio: refuse to set value of input pins

Add warning and refuse to set output value for pin configured as input,
as the result of such an operation is undefined.

Remove incorrect todo-comment suggesting that the driver could
implicitly switch direction as part of the call.
Signed-off-by: default avatarJohan Hovold <johan@hovoldconsulting.com>
Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
parent 64d2f4e5
......@@ -273,14 +273,18 @@ static void gb_gpio_set_value_operation(struct gb_gpio_controller *ggc,
struct gb_gpio_set_value_request request;
int ret;
if (ggc->lines[which].direction == 1) {
dev_warn(ggc->chip.dev,
"refusing to set value of input gpio %u\n", which);
return;
}
request.which = which;
request.value = value_high ? 1 : 0;
ret = gb_operation_sync(ggc->connection, GB_GPIO_TYPE_SET_VALUE,
&request, sizeof(request), NULL, 0);
if (!ret) {
/* XXX should this set direction to out? */
if (!ret)
ggc->lines[which].value = request.value;
}
}
static int gb_gpio_set_debounce_operation(struct gb_gpio_controller *ggc,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment