From: Vipul Kumar <vipul.ku...@xilinx.com> This patch tests the gpio commands using the gpio data from boardenv file.
Also one test will show the default status of all the gpio's supported by the processor. Signed-off-by: Vipul Kumar <vip...@xilinx.com> Signed-off-by: Michal Simek <michal.si...@xilinx.com> --- test/py/tests/test_gpio.py | 111 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 test/py/tests/test_gpio.py diff --git a/test/py/tests/test_gpio.py b/test/py/tests/test_gpio.py new file mode 100644 index 000000000000..5ab237c8abe5 --- /dev/null +++ b/test/py/tests/test_gpio.py @@ -0,0 +1,111 @@ +# Copyright (c) 2017 Xilinx, Inc. +# +# SPDX-License-Identifier: GPL-2.0 + +# Test various gpio-related functionality, such as the input, set, +# clear and toggle. + +import pytest +import random + +""" +Note: This test relies on boardenv_* containing configuration values to define +which the gpio available for testing. Without this, this test will be automat- +ically skipped. + +For example: + +# A list of gpio's that are going to be tested in order to validate the +# test. +env__gpio_val = { + "gpio": [0,1,2], +} + +# A list of gpio's that are shorted on the hardware board and first gpio of +# each group is configured as input and the other as output. If the pins are +# not shorted properly, then the test will be fail. +env__gpio_input_output = { + "list_of_gpios": [ [36, 37], [38, 39]], +} +""" + +def gpio_input(u_boot_console, gpio): + u_boot_console.run_command("gpio input %d" %gpio) + response = u_boot_console.run_command("gpio status -a %d" %gpio) + expected_response = "%d: input:" %gpio + assert(expected_response in response) + +def gpio_set(u_boot_console, gpio): + expected_response = "%d: output: 1" %gpio + u_boot_console.run_command("gpio set %d" %gpio) + response = u_boot_console.run_command("gpio status -a %d" %gpio) + assert(expected_response in response) + +def gpio_clear(u_boot_console, gpio): + expected_response = "%d: output: 0" %gpio + u_boot_console.run_command("gpio clear %d" %gpio) + response = u_boot_console.run_command("gpio status -a %d" %gpio) + assert(expected_response in response) + +def gpio_toggle(u_boot_console, gpio): + expected_response = "%d: output: 1" %gpio + u_boot_console.run_command("gpio toggle %d" %gpio) + response = u_boot_console.run_command("gpio status -a %d" %gpio) + assert(expected_response in response) + +@pytest.mark.buildconfigspec("cmd_gpio") +def test_gpio_status(u_boot_console): + response = u_boot_console.run_command("gpio status -a") + expected_response = "0: input:" + assert(expected_response in response) + +@pytest.mark.buildconfigspec("cmd_gpio") +def test_gpio(u_boot_console): + f = u_boot_console.config.env.get('env__gpio_val', None) + if not f: + pytest.skip('No GPIO readable file to read') + + gpin = f.get("gpio", None) + + for gpio in gpin: + gpio_input(u_boot_console, gpio) + gpio_set(u_boot_console, gpio) + gpio_clear(u_boot_console, gpio) + gpio_toggle(u_boot_console, gpio) + +@pytest.mark.buildconfigspec("cmd_gpio") +def test_gpio_input_output(u_boot_console): + f = u_boot_console.config.env.get('env__gpio_input_output', None) + if not f: + pytest.skip('No GPIO readable file to read') + + list_of_gpios = f.get("list_of_gpios", None) + + flag = 0 + for list in list_of_gpios: + for i in list: + if flag == 0: + gpio_in = i + expected_response = "%d: input:" %gpio_in + u_boot_console.run_command("gpio input %d" %gpio_in) + response = u_boot_console.run_command("gpio status -a %d" %gpio_in) + assert(expected_response in response) + flag = 1 + + else: + gpio_out = i + expected_response = "%d: output:" %gpio_out + u_boot_console.run_command("gpio set %d" %gpio_out) + response = u_boot_console.run_command("gpio status -a %d" %gpio_out) + assert(expected_response in response) + flag = 0 + + expected_response = "%d: input: 0" %gpio_in + u_boot_console.run_command("gpio clear %d" %gpio_out) + response = u_boot_console.run_command("gpio status -a %d" %gpio_in) + assert(expected_response in response) + + expected_response = "%d: input: 1" %gpio_in + u_boot_console.run_command("gpio set %d" %gpio_out) + response = u_boot_console.run_command("gpio status -a %d" %gpio_in) + assert(expected_response in response) -- 1.9.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot