
From: Vipul Kumar vipul.kumar@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 vipulk@xilinx.com Signed-off-by: Michal Simek michal.simek@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)