bafe9bc093
This bump fix the build failure with gcc5 for barebox. Some changes were made to the first patch to align to the latest barebox api. Also done the following changes: - Use "BR2_TARGET_BAREBOX_CONFIG_FRAGMENT_FILES" instead of patching the barebox sources. - Use "BR2_GLOBAL_PATCH_DIR" instead of "BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR". Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
100 lines
2.5 KiB
Diff
100 lines
2.5 KiB
Diff
From 76e2b190803484db033153fe8a97b381a567ed25 Mon Sep 17 00:00:00 2001
|
|
From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
|
|
Date: Wed, 14 Nov 2012 19:16:35 +0800
|
|
Subject: [PATCH 1/4] watchdog: add keep alive support
|
|
|
|
this will allow to ping the watchdog via poller
|
|
|
|
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
|
|
Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
|
|
---
|
|
drivers/watchdog/Kconfig | 1 +
|
|
drivers/watchdog/wd_core.c | 25 +++++++++++++++++++++++++
|
|
include/watchdog.h | 2 ++
|
|
3 files changed, 28 insertions(+)
|
|
|
|
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
|
|
index 63fb1a8c5..7ebff89b9 100644
|
|
--- a/drivers/watchdog/Kconfig
|
|
+++ b/drivers/watchdog/Kconfig
|
|
@@ -4,6 +4,7 @@ config WATCHDOG_IMX_RESET_SOURCE
|
|
|
|
menuconfig WATCHDOG
|
|
bool "Watchdog support"
|
|
+ select GENERIC_POLLER
|
|
help
|
|
Many platforms support a watchdog to keep track of a working machine.
|
|
This framework provides routines to handle these watchdogs.
|
|
diff --git a/drivers/watchdog/wd_core.c b/drivers/watchdog/wd_core.c
|
|
index 3a3f51964..52537afef 100644
|
|
--- a/drivers/watchdog/wd_core.c
|
|
+++ b/drivers/watchdog/wd_core.c
|
|
@@ -18,6 +18,7 @@
|
|
#include <errno.h>
|
|
#include <linux/ctype.h>
|
|
#include <watchdog.h>
|
|
+#include <poller.h>
|
|
|
|
static LIST_HEAD(watchdog_list);
|
|
|
|
@@ -31,6 +32,20 @@ static const char *watchdog_name(struct watchdog *wd)
|
|
return "unknown";
|
|
}
|
|
|
|
+static struct watchdog *watchdog_get_default(void);
|
|
+
|
|
+static void watchdog_poller_func(struct poller_struct *poller)
|
|
+{
|
|
+ struct watchdog *wd = watchdog_get_default();
|
|
+
|
|
+ if (wd)
|
|
+ wd->keep_alive(wd);
|
|
+}
|
|
+
|
|
+static struct poller_struct watchdog_poller = {
|
|
+ .func = watchdog_poller_func,
|
|
+};
|
|
+
|
|
int watchdog_register(struct watchdog *wd)
|
|
{
|
|
if (!wd->priority)
|
|
@@ -41,6 +56,16 @@ int watchdog_register(struct watchdog *wd)
|
|
pr_debug("registering watchdog %s with priority %d\n", watchdog_name(wd),
|
|
wd->priority);
|
|
|
|
+
|
|
+ if (wd->keep_alive) {
|
|
+ int ret;
|
|
+
|
|
+ ret = poller_register(&watchdog_poller);
|
|
+ if (ret) {
|
|
+ return ret;
|
|
+ }
|
|
+ }
|
|
+
|
|
return 0;
|
|
}
|
|
EXPORT_SYMBOL(watchdog_register);
|
|
diff --git a/include/watchdog.h b/include/watchdog.h
|
|
index 3e8a487a4..a2660c2e0 100644
|
|
--- a/include/watchdog.h
|
|
+++ b/include/watchdog.h
|
|
@@ -13,12 +13,14 @@
|
|
#ifndef INCLUDE_WATCHDOG_H
|
|
# define INCLUDE_WATCHDOG_H
|
|
|
|
+
|
|
struct watchdog {
|
|
int (*set_timeout)(struct watchdog *, unsigned);
|
|
const char *name;
|
|
struct device_d *dev;
|
|
unsigned int priority;
|
|
struct list_head list;
|
|
+ void (*keep_alive)(struct watchdog *);
|
|
};
|
|
|
|
#ifdef CONFIG_WATCHDOG
|
|
--
|
|
2.12.0
|
|
|