summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsruffell <sruffell@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2009-06-18 16:29:08 +0000
committersruffell <sruffell@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2009-06-18 16:29:08 +0000
commit6a7f88f4d2fbb2fc7422fd1e6d42720720506016 (patch)
treeb1394a32f237fae956e90482f18ab5b77720f414
parent6ab1953ff8d0d3d43208b28545db674d08b1861a (diff)
wctdm24xxp, voicebus: Enable the watchdog for the wctdm24xxp driver.
Allows the wctdm24xxp driver to use the default dahdi watchdog facility to kickstart the board in case it stops generating interrupts. DAHDI-254. git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.4@4655 5390a7c7-147a-4af0-8ec9-7488f05a26cb
-rw-r--r--kernel/voicebus.c15
-rw-r--r--kernel/voicebus.h3
-rw-r--r--kernel/wctdm24xxp/base.c7
-rw-r--r--kernel/zconfig.h2
4 files changed, 26 insertions, 1 deletions
diff --git a/kernel/voicebus.c b/kernel/voicebus.c
index aabfd8c..6724d32 100644
--- a/kernel/voicebus.c
+++ b/kernel/voicebus.c
@@ -39,6 +39,7 @@
#include <linux/interrupt.h>
#include <linux/timer.h>
+#include "zconfig.h"
#include "voicebus.h"
#define assert(__x__) BUG_ON(!(__x__))
@@ -846,6 +847,7 @@ __vb_disable_interrupts(struct voicebus *vb)
__vb_setctl(vb, IER_CSR7, 0);
}
+
static void
vb_disable_interrupts(struct voicebus *vb)
{
@@ -947,6 +949,19 @@ voicebus_start(struct voicebus *vb)
return 0;
}
+#ifdef CONFIG_ZAPTEL_WATCHDOG
+/**
+ * voicebus_watchdog - Called from a watchdog function to restart interrupts.
+ *
+ */
+int voicebus_watchdog(struct voicebus *vb)
+{
+ vb_tx_demand_poll(vb);
+ return 0;
+}
+EXPORT_SYMBOL(voicebus_watchdog);
+#endif
+
static void
vb_clear_start_transmit_bit(struct voicebus *vb)
{
diff --git a/kernel/voicebus.h b/kernel/voicebus.h
index c234690..59ec484 100644
--- a/kernel/voicebus.h
+++ b/kernel/voicebus.h
@@ -50,5 +50,8 @@ void voicebus_free(struct voicebus *vb, void *vbb);
int voicebus_transmit(struct voicebus *vb, void *vbb);
int voicebus_set_minlatency(struct voicebus *vb, unsigned int milliseconds);
int voicebus_current_latency(struct voicebus *vb) ;
+#ifdef CONFIG_ZAPTEL_WATCHDOG
+int voicebus_watchdog(struct voicebus *vb);
+#endif
#endif /* __VOICEBUS_H__ */
diff --git a/kernel/wctdm24xxp/base.c b/kernel/wctdm24xxp/base.c
index bf8a409..e9165f7 100644
--- a/kernel/wctdm24xxp/base.c
+++ b/kernel/wctdm24xxp/base.c
@@ -2704,11 +2704,16 @@ static int wctdm_open(struct zt_chan *chan)
return 0;
}
+#ifdef CONFIG_ZAPTEL_WATCHDOG
static int wctdm_watchdog(struct zt_span *span, int event)
{
+ struct wctdm *wc = span->pvt;
printk("TDM: Called watchdog\n");
+ if (ZT_WATCHDOG_NOINTS == event)
+ voicebus_watchdog(wc->vb);
return 0;
}
+#endif
static int wctdm_close(struct zt_chan *chan)
{
@@ -2960,7 +2965,9 @@ static int wctdm_initialize(struct wctdm *wc)
wc->span.close = wctdm_close;
wc->span.flags = ZT_FLAG_RBS;
wc->span.ioctl = wctdm_ioctl;
+#ifdef CONFIG_ZAPTEL_WATCHDOG
wc->span.watchdog = wctdm_watchdog;
+#endif
wc->span.dacs= wctdm_dacs;
#ifdef VPM_SUPPORT
wc->span.echocan_with_params = wctdm_echocan_with_params;
diff --git a/kernel/zconfig.h b/kernel/zconfig.h
index 26d1755..7239c7f 100644
--- a/kernel/zconfig.h
+++ b/kernel/zconfig.h
@@ -147,7 +147,7 @@
* Uncomment to enable "watchdog" to monitor if interfaces
* stop taking interrupts or otherwise misbehave
*/
-/* #define CONFIG_ZAPTEL_WATCHDOG */
+#define CONFIG_ZAPTEL_WATCHDOG
/*
* Uncomment for Non-standard FXS groundstart start state (A=Low, B=Low)