summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2021-05-25 20:37:50 +0200
committerDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2021-05-25 20:39:37 +0200
commitc0a36a8499bb33acc27afe07fc5a63a9f3c3653c (patch)
tree67ab90536b2cc43496c780eca9102f251950b94b
parent7270f03600fbdf0527d4ce84992705c927b5329e (diff)
downloadexynos-gpio-tool-c0a36a8499bb33acc27afe07fc5a63a9f3c3653c.tar.gz
exynos-gpio-tool-c0a36a8499bb33acc27afe07fc5a63a9f3c3653c.tar.bz2
exynos-gpio-tool-c0a36a8499bb33acc27afe07fc5a63a9f3c3653c.zip
Add command to dump modem GPIOs
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
-rw-r--r--main.c5
-rw-r--r--modem_gpios_data.c34
-rw-r--r--modem_gpios_data.h1
3 files changed, 39 insertions, 1 deletions
diff --git a/main.c b/main.c
index 82cbdbd..b043fd2 100644
--- a/main.c
+++ b/main.c
@@ -17,7 +17,7 @@
int usage(char* progname)
{
- printf("Usage: %s <flash|gpl1|gpl2|test>\n", progname);
+ printf("Usage: %s <flash|gpl1|gpl2|modem|test>\n", progname);
printf("\n");
printf("Available commands:\n");
printf("\tflash: dump flash GPIO (gpj1 1) status\n");
@@ -27,6 +27,7 @@ int usage(char* progname)
" (for tests on gpio127 and gpio128)\n");
printf("\tgpy0: dump GPY0 GPIOs status"
" (for tests on gpio127 and gpio128)\n");
+ printf("\tmodem: dump the modem GPIOs status\n");
printf("\ttest: run self tests\n");
return 0;
@@ -126,6 +127,8 @@ int main(int argc, char *argv[])
} else if (argc == 2 && !strcmp("gpy0", argv[1])) {
return dump_gpio_bank_status(debug, devmem, fd, page_size,
"gpy0");
+ } else if (argc == 2 && !strcmp("modem", argv[1])) {
+ return dump_modem_gpio_infos(debug, devmem, fd, page_size);
} else {
usage(argv[0]);
return EX_USAGE;
diff --git a/modem_gpios_data.c b/modem_gpios_data.c
index 8552024..27a0e5d 100644
--- a/modem_gpios_data.c
+++ b/modem_gpios_data.c
@@ -16,7 +16,9 @@
*/
#include <stddef.h>
+#include <stdio.h>
#include <string.h>
+#include <sysexits.h>
#include "exynos4412_gpios.h"
#include "modem_gpios_data.h"
@@ -136,3 +138,35 @@ int dump_modem_gpio_infos_by_dt_name(char *devmem, int fd, size_t page_size,
return dump_gpio_infos(devmem, fd, page_size, modem_gpio_data->bank,
modem_gpio_data->gpio_offset);
}
+
+
+int dump_modem_gpio_infos(int debug, char* devmem, int fd, size_t page_size)
+{
+ int i = 0;
+
+ while (1) {
+ int rc;
+
+ if (modem_gpio_datas[i].bank == NULL)
+ break;
+
+ printf("%s: dump_gpio_infos: %s\n",
+ __func__, modem_gpio_datas[i].dt_gpio_name);
+
+ rc = dump_gpio_infos(devmem, fd, page_size,
+ modem_gpio_datas[i].bank,
+ modem_gpio_datas[i].gpio_offset);
+
+ if (rc == -1) {
+ printf("%s: dump_gpio_infos failed with error %d\n",
+ __func__, rc);
+
+ /* TODO: return more precise error */
+ return EX_UNAVAILABLE;
+ }
+
+ i++;
+ }
+
+ return 0;
+}
diff --git a/modem_gpios_data.h b/modem_gpios_data.h
index 35ed20a..d5b8f7a 100644
--- a/modem_gpios_data.h
+++ b/modem_gpios_data.h
@@ -31,6 +31,7 @@ struct modem_gpio_data {
char *dt_gpio_name;
};
+int dump_modem_gpio_infos(int debug, char* devmem, int fd, size_t page_size);
int dump_modem_gpio_infos_by_dt_name(char *devmem, int fd, size_t page_size,
char *dt_name);