diff options
Diffstat (limited to 'exynos4412_gpios.c')
| -rw-r--r-- | exynos4412_gpios.c | 75 |
1 files changed, 11 insertions, 64 deletions
diff --git a/exynos4412_gpios.c b/exynos4412_gpios.c index e9b4b2f..9da5e41 100644 --- a/exynos4412_gpios.c +++ b/exynos4412_gpios.c @@ -25,44 +25,9 @@ #include "exynos4412_gpios.h" #include "exynos4412_gpios_data.h" -void *mmap_gpio_hardware_blocks(int debug, char *devmem, int fd, - size_t page_size) +int dump_gpio_infos(int debug, struct memory_mapping *memory_mapping, + char *bank, uint32_t gpio_offset) { - uint32_t base_addr; - uint32_t *virt_addr; - off_t len; - int rc; - - /* GPIO_right: base_addr: 0x11000000 len: 0x400000 - * GPIO_left: base_addr: 0x11400000 len: 0x400000 - */ - base_addr = 0x11000000u; - len = 0x800000; - - /* virt_addr points to the beining of the file, so to the physical - * address 0 - */ - virt_addr = mmap(0, len, PROT_READ|PROT_WRITE, MAP_SHARED, fd, - base_addr); - if (virt_addr == MAP_FAILED) { - rc = errno; - printf("mmap on %s failed with error %d: %s\n", - devmem, rc, strerror(rc)); - errno = rc; - return NULL; - } - - if (debug) - printf("%s: mapped address 0 @ %p\n", __func__, virt_addr); - - return virt_addr; -} - -int dump_gpio_infos(int debug, char *devmem, int fd, size_t page_size, - void *gpio_hardware_blocks_addr, char *bank, - uint32_t gpio_offset) -{ - uint32_t *addr; int rc; int i = 0; off_t offset = 0; @@ -78,18 +43,11 @@ int dump_gpio_infos(int debug, char *devmem, int fd, size_t page_size, } - addr = gpio_hardware_blocks_addr + offset; - - if (debug) { - printf("%s: Mapped at %p\n", __func__, addr); - print_gpio_banks_data(); - } - printf("%s: %s[%d]: {\n", __func__, bank, gpio_offset); for (i=0; i< sizeof(gpio_registers) / sizeof (char*); i++) { rc = decode_gpio_data(debug, bank, gpio_offset, - gpio_registers[i], addr); + gpio_registers[i], memory_mapping); if (rc == -1) { rc = errno; printf("%s:" @@ -97,14 +55,13 @@ int dump_gpio_infos(int debug, char *devmem, int fd, size_t page_size, " bank=%s," " gpio_offset=%d," " gpio_register_name=%s," - " addr=%p);" + " memory_mapping);" " failed with with error %d: %s\n", __func__, debug, bank, gpio_offset, gpio_registers[i], - addr, rc, strerror(rc)); return -1; } @@ -116,11 +73,9 @@ int dump_gpio_infos(int debug, char *devmem, int fd, size_t page_size, return 0; } -int gpio_get_direction(int debug, char *devmem, int fd, size_t page_size, - void *gpio_hardware_blocks_addr, +int gpio_get_direction(int debug, struct memory_mapping *memory_mapping, char *bank, uint32_t gpio_offset) { - uint32_t *addr; int rc; int err; off_t offset = 0; @@ -133,16 +88,14 @@ int gpio_get_direction(int debug, char *devmem, int fd, size_t page_size, return -1; } - addr = gpio_hardware_blocks_addr + offset; - - rc = decode_gpio_data(debug, bank, gpio_offset, "con", addr); + rc = decode_gpio_data(debug, bank, gpio_offset, "con", memory_mapping); if (rc == -1) err = errno; if(debug) printf("%s: decode_gpio_data(debug=%d, bank=%s, gpio_offset=%d," - " gpio_register_name=%s, addr=%p);\n", - __func__, debug, bank, gpio_offset, "con", addr); + " gpio_register_name=%s, memory_mapping);\n", + __func__, debug, bank, gpio_offset, "con"); if (rc == -1) { printf("%s: decode_gpio_data failed with error %d: %s\n", @@ -153,11 +106,9 @@ int gpio_get_direction(int debug, char *devmem, int fd, size_t page_size, return rc; } -int gpio_get_output_value(int debug, char *devmem, int fd, size_t page_size, - void *gpio_hardware_blocks_addr, +int gpio_get_output_value(int debug, struct memory_mapping *memory_mapping, char *bank, uint32_t gpio_offset) { - uint32_t *addr; int rc; off_t offset = 0; @@ -172,25 +123,21 @@ int gpio_get_output_value(int debug, char *devmem, int fd, size_t page_size, if (debug) printf("%s: offset for %s: 0x%lx\n\n", __func__, bank, offset); - addr = gpio_hardware_blocks_addr + offset; - rc = decode_gpio_data(debug, bank, gpio_offset, - "dat", addr); + "dat", memory_mapping); if (rc == -1) { rc = errno; printf("%s:" " decode_gpio_data(debug=%d," " bank=%s," " gpio_offset=%d," - " gpio_register_name=%s," - " addr=%p);" + " gpio_register_name=%s, memory_mapping);" " failed with with error %d: %s\n", __func__, debug, bank, gpio_offset, "dat", - addr, rc, strerror(rc)); return -1; } |
