diff options
| author | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2021-05-25 20:37:50 +0200 |
|---|---|---|
| committer | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2021-05-25 20:39:37 +0200 |
| commit | c0a36a8499bb33acc27afe07fc5a63a9f3c3653c (patch) | |
| tree | 67ab90536b2cc43496c780eca9102f251950b94b | |
| parent | 7270f03600fbdf0527d4ce84992705c927b5329e (diff) | |
| download | exynos-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.c | 5 | ||||
| -rw-r--r-- | modem_gpios_data.c | 34 | ||||
| -rw-r--r-- | modem_gpios_data.h | 1 |
3 files changed, 39 insertions, 1 deletions
@@ -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); |
