static inline void wcfxs_check_hook(struct wcfxs *wc, int card);
+static inline void wcfxs_recheck_sanity(struct wcfxs *wc, int card);
static void wcfxs_stop_dma(struct wcfxs *wc);
static void wcfxs_reset_tdm(struct wcfxs *wc);
@@ -281,6 +282,8 @@
x = wc->intcount % 4;
if ((x < wc->cards) && (wc->cardflag & (1 << x))) {
wcfxs_check_hook(wc, x);
+ if (!(wc->intcount & 0xfc))
+ wcfxs_recheck_sanity(wc, x);
}
if (!(wc->intcount % 10000)) {
/* Accept an alarm once per 10 seconds */
@@ -899,14 +902,9 @@
return 0;
}
-static inline void wcfxs_check_hook(struct wcfxs *wc, int card)
+static inline void wcfxs_recheck_sanity(struct wcfxs *wc, int card)
{
- char res;
- int hook;
-
- /* For some reason we have to debounce the
- hook detector. */
-
+ int res;
/* Check loopback */
res = wcfxs_getreg(wc, card, 8);
if (res) {
@@ -926,6 +924,16 @@
}
}
}
+}
+
+static inline void wcfxs_check_hook(struct wcfxs *wc, int card)
+{
+ char res;
+ int hook;
+
+ /* For some reason we have to debounce the
+ hook detector. */
+
res = wcfxs_getreg(wc, card, 68);
hook = (res & 1);
if (hook != wc->lastrxhook[card]) {
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum