mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-19 19:34:35 +00:00
cmd: gpio: Make gpio input
return pin value again
4dbc107f46
("cmd: gpio: Correct do_gpio() return value") correctly changed the behaviour of the gpio command to return CMD_RET_SUCCESS or CMD_RET_FAILURE, but any existing script which expects the return value to be the pin value is broken by this change. Reinstate the legacy behaviour for `gpio input` only. Fixes:4dbc107f46
("cmd: gpio: Correct do_gpio() return value") Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> Signed-off-by: Alex Kiernan <alex.kiernan@hivehome.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
dde1b75e95
commit
4af2a33ee5
2 changed files with 43 additions and 1 deletions
|
@ -248,7 +248,12 @@ static int do_gpio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
if (ret != -EBUSY)
|
if (ret != -EBUSY)
|
||||||
gpio_free(gpio);
|
gpio_free(gpio);
|
||||||
|
|
||||||
return CMD_RET_SUCCESS;
|
/*
|
||||||
|
* Whilst wrong, the legacy gpio input command returns the pin
|
||||||
|
* value, or CMD_RET_FAILURE (which is indistinguishable from a
|
||||||
|
* valid pin value).
|
||||||
|
*/
|
||||||
|
return (sub_cmd == GPIOC_INPUT) ? value : CMD_RET_SUCCESS;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
if (ret != -EBUSY)
|
if (ret != -EBUSY)
|
||||||
|
|
37
test/py/tests/test_gpio.py
Normal file
37
test/py/tests/test_gpio.py
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
@pytest.mark.boardspec('sandbox')
|
||||||
|
@pytest.mark.buildconfigspec('cmd_gpio')
|
||||||
|
def test_gpio_input(u_boot_console):
|
||||||
|
"""Test that gpio input correctly returns the value of a gpio pin."""
|
||||||
|
|
||||||
|
response = u_boot_console.run_command('gpio input 0; echo rc:$?')
|
||||||
|
expected_response = 'rc:0'
|
||||||
|
assert(expected_response in response)
|
||||||
|
response = u_boot_console.run_command('gpio toggle 0; gpio input 0; echo rc:$?')
|
||||||
|
expected_response = 'rc:1'
|
||||||
|
assert(expected_response in response)
|
||||||
|
|
||||||
|
@pytest.mark.boardspec('sandbox')
|
||||||
|
@pytest.mark.buildconfigspec('cmd_gpio')
|
||||||
|
def test_gpio_exit_statuses(u_boot_console):
|
||||||
|
"""Test that non-input gpio commands correctly return the command
|
||||||
|
success/failure status."""
|
||||||
|
|
||||||
|
expected_response = 'rc:0'
|
||||||
|
response = u_boot_console.run_command('gpio clear 0; echo rc:$?')
|
||||||
|
assert(expected_response in response)
|
||||||
|
response = u_boot_console.run_command('gpio set 0; echo rc:$?')
|
||||||
|
assert(expected_response in response)
|
||||||
|
response = u_boot_console.run_command('gpio toggle 0; echo rc:$?')
|
||||||
|
assert(expected_response in response)
|
||||||
|
response = u_boot_console.run_command('gpio status -a; echo rc:$?')
|
||||||
|
assert(expected_response in response)
|
||||||
|
|
||||||
|
expected_response = 'rc:1'
|
||||||
|
response = u_boot_console.run_command('gpio nonexistent-command; echo rc:$?')
|
||||||
|
assert(expected_response in response)
|
||||||
|
response = u_boot_console.run_command('gpio input 200; echo rc:$?')
|
||||||
|
assert(expected_response in response)
|
Loading…
Add table
Reference in a new issue