summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2021-06-02 16:37:19 +0200
committerDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2021-06-02 16:37:19 +0200
commit1e90665e9091bb4a0bc39c0101c47e42f5ade490 (patch)
treef7c144b601a0f752cf1a210861d01f20caa14ee9
parentc2a1602a7ce9e84b99f49349087b6c28906fff22 (diff)
downloadexynos-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.c22
-rw-r--r--exynos4412_gpios.h5
-rw-r--r--tests.c20
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);
diff --git a/tests.c b/tests.c
index 2956219..bfcb0c6 100644
--- a/tests.c
+++ b/tests.c
@@ -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");