mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Oleksij Rempel <o.rempel@pengutronix.de>
To: barebox@lists.infradead.org
Cc: Oleksij Rempel <o.rempel@pengutronix.de>
Subject: [PATCH v2 3/6] watchdog: register watchdog virtual device with short name wdog
Date: Tue, 13 Mar 2018 09:33:25 +0100	[thread overview]
Message-ID: <20180313083328.25705-3-o.rempel@pengutronix.de> (raw)
In-Reply-To: <20180313083328.25705-1-o.rempel@pengutronix.de>

the watchdog hwdev is usually named with devicetree schema
which is not practical for CLI.

On device registration "wdog" will be extended with some index number
extracted from devicetree (if awailable) or automatically assigned
first available number. End result will be "wdog0" .. etc.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
---
 drivers/watchdog/wd_core.c | 24 ++++++++++++++++++++++++
 include/watchdog.h         |  1 +
 2 files changed, 25 insertions(+)

diff --git a/drivers/watchdog/wd_core.c b/drivers/watchdog/wd_core.c
index 1d0f0de7d..0dc7aecf3 100644
--- a/drivers/watchdog/wd_core.c
+++ b/drivers/watchdog/wd_core.c
@@ -31,8 +31,31 @@ static const char *watchdog_name(struct watchdog *wd)
 	return "unknown";
 }
 
+static int watchdog_register_dev(struct watchdog *wd, const char *name, int id)
+{
+	wd->dev.parent = wd->hwdev;
+	wd->dev.id = id;
+	strncpy(wd->dev.name, name, MAX_DRIVER_NAME);
+
+	return register_device(&wd->dev);
+}
+
 int watchdog_register(struct watchdog *wd)
 {
+	struct param_d *p;
+	const char *alias;
+	int ret;
+
+	alias = of_alias_get(wd->hwdev->device_node);
+	if (alias)
+		ret = watchdog_register_dev(wd, alias, DEVICE_ID_SINGLE);
+
+	if (!alias || ret)
+		ret = watchdog_register_dev(wd, "wdog", DEVICE_ID_DYNAMIC);
+
+	if (ret)
+		return ret;
+
 	if (!wd->priority)
 		wd->priority = WATCHDOG_DEFAULT_PRIORITY;
 
@@ -50,6 +73,7 @@ EXPORT_SYMBOL(watchdog_register);
 
 int watchdog_deregister(struct watchdog *wd)
 {
+	unregister_device(&wd->dev);
 	list_del(&wd->list);
 
 	return 0;
diff --git a/include/watchdog.h b/include/watchdog.h
index 1e06fbc3f..a2459d255 100644
--- a/include/watchdog.h
+++ b/include/watchdog.h
@@ -17,6 +17,7 @@ struct watchdog {
 	int (*set_timeout)(struct watchdog *, unsigned);
 	const char *name;
 	struct device_d *hwdev;
+	struct device_d dev;
 	unsigned int priority;
 	unsigned int timeout_max;
 	struct list_head list;
-- 
2.16.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  parent reply	other threads:[~2018-03-13  8:33 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-13  8:33 [PATCH v2 1/6] watchdog: rename dev to hwdev Oleksij Rempel
2018-03-13  8:33 ` [PATCH v2 2/6] watchdog: move max timeout test in to wd_core Oleksij Rempel
2018-03-13  8:33 ` Oleksij Rempel [this message]
2018-03-13  8:33 ` [PATCH v2 4/6] watchdog: set some reasonable timeout_max value if no other is available Oleksij Rempel
2018-03-13  8:33 ` [PATCH v2 5/6] watchdog: provide timeout_cur value Oleksij Rempel
2018-03-13  8:33 ` [PATCH v2 6/6] watchdog: add watchdog poller Oleksij Rempel
2018-03-19  8:01   ` Sascha Hauer

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=20180313083328.25705-3-o.rempel@pengutronix.de \
    --to=o.rempel@pengutronix.de \
    --cc=barebox@lists.infradead.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