diff options
| author | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2021-06-09 19:18:28 +0200 |
|---|---|---|
| committer | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2021-06-09 19:18:28 +0200 |
| commit | 0db1ace160bc41ec11c85954da4ce39b93658851 (patch) | |
| tree | 939c8502cbca4af88895164e1fc6ce561f5c048a | |
| parent | e2d9ab665fc7b1414a9708a3b267a5facae814f5 (diff) | |
| download | exynos-gpio-tool-0db1ace160bc41ec11c85954da4ce39b93658851.tar.gz exynos-gpio-tool-0db1ace160bc41ec11c85954da4ce39b93658851.tar.bz2 exynos-gpio-tool-0db1ace160bc41ec11c85954da4ce39b93658851.zip | |
Add working devmem2 value test
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
| -rw-r--r-- | tests.c | 64 |
1 files changed, 64 insertions, 0 deletions
@@ -230,6 +230,68 @@ static int test_direction_with_devmem2(int debug, } +static int test_output_value_with_devmem2(int debug, + struct memory_mapping *memory_mapping) +{ + char *gpio_high_command; + char *gpio_low_command; + + off_t gpj1_dat_addr = 0x11400264; + unsigned long register_value; + int rc = 0; + + /* Test output high for GPJ1 1 */ + rc = read_word(debug, memory_mapping, gpj1_dat_addr, ®ister_value); + assert(rc == 0); + + register_value |= (1<<1); + + rc = asprintf(&gpio_high_command, + "devmem2 0x%lx w 0x%lx", + gpj1_dat_addr, register_value); + if (rc == -1) { + rc = errno; + printf("%s: asprintf failed with error %d: %s\n", + __func__, rc, strerror(rc)); + assert(false); + } + + rc = run_command(debug, gpio_high_command); + assert(rc == 0); + + rc = gpio_get_output_value(debug, memory_mapping, "gpj1", 1); + assert (rc == GPIO_VALUE_HIGH); + + /* Test output low for GPJ1 1 */ + rc = read_word(debug, memory_mapping, gpj1_dat_addr, ®ister_value); + assert(rc == 0); + + register_value &= 0xfffffffd; + + rc = asprintf(&gpio_low_command, + "devmem2 0x%lx w 0x%lx", + gpj1_dat_addr, register_value); + if (rc == -1) { + rc = errno; + printf("%s: asprintf failed with error %d: %s\n", + __func__, rc, strerror(rc)); + assert(false); + } + + rc = run_command(debug, gpio_low_command); + assert(rc == 0); + + rc = gpio_get_output_value(debug, memory_mapping, "gpj1", 1); + assert (rc == GPIO_VALUE_LOW); + + /* Free resources */ + free(gpio_high_command); + free(gpio_low_command); + + return 0; + +} + int run_tests(int debug, struct memory_mapping *memory_mapping) { bool has_devmem2; @@ -259,6 +321,8 @@ int run_tests(int debug, struct memory_mapping *memory_mapping) if (has_devmem2) { test_direction_with_devmem2(debug, memory_mapping); printf("[ OK ] devmem2 GPIO direction test\n"); + test_output_value_with_devmem2(debug, memory_mapping); + printf("[ OK ] devmem2 GPIO output value test\n"); } else { printf("[ !! ] devmem2 not found: skipping" " devmem2 direction and output tests\n"); |
