summaryrefslogtreecommitdiffstats
path: root/exynos4412_gpios.c
diff options
context:
space:
mode:
Diffstat (limited to 'exynos4412_gpios.c')
-rw-r--r--exynos4412_gpios.c75
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;
}