From: Ben Hutchings <ben.hutchings@mind.be>
To: linux-gpio@vger.kernel.org
Subject: [PATCH libgpiod-v2] gpioinfo: Show edge detection and debounce period if enabled
Date: Thu, 29 Jul 2021 01:46:08 +0200 [thread overview]
Message-ID: <20210728234607.GC14442@cephalopod> (raw)
gpioinfo shows most settings for each GPIO line, but currently misses
edge detection and debouncing.
* If edge detection is enabled, report it as an additional flag
* If debouncing is enabled, report the duration
Signed-off-by: Ben Hutchings <ben.hutchings@mind.be>
---
tools/gpioinfo.c | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/tools/gpioinfo.c b/tools/gpioinfo.c
index cd2b9e4..ed0018c 100644
--- a/tools/gpioinfo.c
+++ b/tools/gpioinfo.c
@@ -44,6 +44,21 @@ static bool line_drive_is_open_source(struct gpiod_line_info *info)
return gpiod_line_info_get_drive(info) == GPIOD_LINE_DRIVE_OPEN_SOURCE;
}
+static bool edge_detection_is_rising(struct gpiod_line_info *info)
+{
+ return gpiod_line_info_get_edge_detection(info) == GPIOD_LINE_EDGE_RISING;
+}
+
+static bool edge_detection_is_falling(struct gpiod_line_info *info)
+{
+ return gpiod_line_info_get_edge_detection(info) == GPIOD_LINE_EDGE_FALLING;
+}
+
+static bool edge_detection_is_both(struct gpiod_line_info *info)
+{
+ return gpiod_line_info_get_edge_detection(info) == GPIOD_LINE_EDGE_BOTH;
+}
+
static const struct flag flags[] = {
{
.name = "used",
@@ -69,6 +84,18 @@ static const struct flag flags[] = {
.name = "bias-disabled",
.is_set = line_bias_is_disabled,
},
+ {
+ .name = "edge-rising",
+ .is_set = edge_detection_is_rising,
+ },
+ {
+ .name = "edge-failling",
+ .is_set = edge_detection_is_falling,
+ },
+ {
+ .name = "edge-both",
+ .is_set = edge_detection_is_both,
+ },
};
static const struct option longopts[] = {
@@ -129,6 +156,7 @@ static void list_lines(struct gpiod_chip *chip)
const char *name, *consumer;
unsigned int i, offset;
int direction;
+ unsigned long debounce_period;
printf("%s - %u lines:\n",
gpiod_chip_get_name(chip), gpiod_chip_get_num_lines(chip));
@@ -142,6 +170,8 @@ static void list_lines(struct gpiod_chip *chip)
consumer = gpiod_line_info_get_consumer(info);
direction = gpiod_line_info_get_direction(info);
active_low = gpiod_line_info_is_active_low(info);
+ debounce_period = gpiod_line_info_is_debounced(info) ?
+ gpiod_line_info_get_debounce_period(info) : 0;
of = false;
@@ -166,6 +196,9 @@ static void list_lines(struct gpiod_chip *chip)
prinfo(&of, 13, "%s ",
active_low ? "active-low" : "active-high");
+ if (debounce_period)
+ printf("debounce=%lu ", debounce_period);
+
flag_printed = false;
for (i = 0; i < ARRAY_SIZE(flags); i++) {
if (flags[i].is_set(info)) {
--
2.20.1
next reply other threads:[~2021-07-28 23:46 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-28 23:46 Ben Hutchings [this message]
2021-09-20 13:52 ` [PATCH libgpiod-v2] gpioinfo: Show edge detection and debounce period if enabled Bartosz Golaszewski
2021-09-22 11:49 ` Ben Hutchings
2021-09-22 12:59 ` Bartosz Golaszewski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210728234607.GC14442@cephalopod \
--to=ben.hutchings@mind.be \
--cc=linux-gpio@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).