diff options
| author | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2021-06-02 16:37:19 +0200 |
|---|---|---|
| committer | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2021-06-02 16:37:19 +0200 |
| commit | 1e90665e9091bb4a0bc39c0101c47e42f5ade490 (patch) | |
| tree | f7c144b601a0f752cf1a210861d01f20caa14ee9 | |
| parent | c2a1602a7ce9e84b99f49349087b6c28906fff22 (diff) | |
| download | exynos-gpio-tool-1e90665e9091bb4a0bc39c0101c47e42f5ade490.tar.gz exynos-gpio-tool-1e90665e9091bb4a0bc39c0101c47e42f5ade490.tar.bz2 exynos-gpio-tool-1e90665e9091bb4a0bc39c0101c47e42f5ade490.zip | |
gpio_get_output_value: use global mmap
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
| -rw-r--r-- | exynos4412_gpios.c | 22 | ||||
| -rw-r--r-- | exynos4412_gpios.h | 5 | ||||
| -rw-r--r-- | tests.c | 20 |
3 files changed, 24 insertions, 23 deletions
diff --git a/exynos4412_gpios.c b/exynos4412_gpios.c index b478794..f40d309 100644 --- a/exynos4412_gpios.c +++ b/exynos4412_gpios.c @@ -154,8 +154,9 @@ int gpio_get_direction(char *devmem, int fd, size_t page_size, return rc; } -int gpio_get_output_value(char *devmem, int fd, size_t page_size, char *bank, - uint32_t gpio_offset) +int gpio_get_output_value(char *devmem, int fd, size_t page_size, + void *gpio_hardware_blocks_addr, + char *bank, uint32_t gpio_offset) { int debug = 0; @@ -171,21 +172,10 @@ int gpio_get_output_value(char *devmem, int fd, size_t page_size, char *bank, return -1; } - if (debug){ - printf("%s: offset for %s: 0x%lx\n\n", - __func__, bank, offset); - } - - addr = mmap_gpio_hardware_blocks(debug, devmem, fd, page_size) + offset; - if (addr == NULL) { - /* mmap_gpio_bank already prints an error */ - return -1; - } + if (debug) + printf("%s: offset for %s: 0x%lx\n\n", __func__, bank, offset); - if (debug) { - printf("%s: Mapped at %p\n", __func__, addr); - print_gpio_banks_data(); - } + addr = gpio_hardware_blocks_addr + offset; rc = decode_gpio_data(debug, bank, gpio_offset, "dat", addr); diff --git a/exynos4412_gpios.h b/exynos4412_gpios.h index 4aa2771..1f19d66 100644 --- a/exynos4412_gpios.h +++ b/exynos4412_gpios.h @@ -26,8 +26,9 @@ int dump_gpio_infos(int debug, char *devmem, int fd, size_t page_size, int gpio_get_direction(char *devmem, int fd, size_t page_size, void *gpio_hardware_blocks_addr, char *bank, uint32_t gpio_offset); -int gpio_get_output_value(char *devmem, int fd, size_t page_size, char *bank, - uint32_t gpio_offset); +int gpio_get_output_value(char *devmem, int fd, size_t page_size, + void *gpio_hardware_blocks_addr, + char *bank, uint32_t gpio_offset); void *mmap_gpio_hardware_blocks(int debug, char *devmem, int fd, size_t page_size); @@ -83,7 +83,9 @@ static int test_output_value_with_libgpiod(int debug, char *devmem, int fd, gpio_hardware_blocks_addr, bank, gpio_offset); assert (rc == GPIO_OUTPUT); - rc = gpio_get_output_value(devmem, fd, page_size, bank, gpio_offset); + rc = gpio_get_output_value(devmem, fd, page_size, + gpio_hardware_blocks_addr, + bank, gpio_offset); assert (rc == GPIO_VALUE_HIGH); rc = asprintf(&gpioset_low_command, "gpioset %s %d=0", bank, @@ -103,7 +105,9 @@ static int test_output_value_with_libgpiod(int debug, char *devmem, int fd, bank, gpio_offset); assert (rc == GPIO_OUTPUT); - rc = gpio_get_output_value(devmem, fd, page_size, bank, gpio_offset); + rc = gpio_get_output_value(devmem, fd, page_size, + gpio_hardware_blocks_addr, + bank, gpio_offset); assert (rc == GPIO_VALUE_LOW); free(gpioset_low_command); @@ -157,7 +161,9 @@ static int test_flash_with_devmem2(int debug, char *devmem, int fd, printf(" Starting devmem2 GPIO output low test\n"); rc = run_command(debug, "devmem2 0x11400264 w 0"); assert(rc == 0); - rc = gpio_get_output_value(devmem, fd, page_size, "gpj1", 1); + rc = gpio_get_output_value(devmem, fd, page_size, + gpio_hardware_blocks_addr, + "gpj1", 1); assert (rc == GPIO_VALUE_LOW); printf("[ OK ] devmem2 GPIO output low test\n"); @@ -167,7 +173,9 @@ static int test_flash_with_devmem2(int debug, char *devmem, int fd, printf(" Starting devmem2 GPIO output high test\n"); rc = run_command(debug, "devmem2 0x11400264 w 2"); assert(rc == 0); - rc = gpio_get_output_value(devmem, fd, page_size, "gpj1", 1); + rc = gpio_get_output_value(devmem, fd, page_size, + gpio_hardware_blocks_addr, + "gpj1", 1); assert (rc == GPIO_VALUE_HIGH); printf("[ OK ] devmem2 GPIO output high test\n"); @@ -177,7 +185,9 @@ static int test_flash_with_devmem2(int debug, char *devmem, int fd, printf(" Starting devmem2 GPIO output low test\n"); rc = run_command(debug, "devmem2 0x11400264 w 0"); assert(rc == 0); - rc = gpio_get_output_value(devmem, fd, page_size, "gpj1", 1); + rc = gpio_get_output_value(devmem, fd, page_size, + gpio_hardware_blocks_addr, + "gpj1", 1); assert (rc == GPIO_VALUE_LOW); printf("[ OK ] devmem2 GPIO output low test\n"); |
