diff options
Diffstat (limited to 'wcfxs.c')
-rwxr-xr-x | wcfxs.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -1216,15 +1216,16 @@ static inline void wcfxs_voicedaa_check_hook(struct wcfxs *wc, int card) unsigned char res; #endif signed char b; + int poopy = 0; /* Try to track issues that plague slot one FXO's */ b = wcfxs_getreg(wc, card, 5); if ((b & 0x2) || !(b & 0x8)) { /* Not good -- don't look at anything else */ if (debug) printk("Poopy (%02x) on card %d!\n", b, card + 1); - return; + poopy++; } - b &= 0x9; + b &= 0x9b; if (wc->mod.fxo.offhook[card]) { if (b != 0x9) wcfxs_setreg(wc, card, 5, 0x9); @@ -1232,6 +1233,8 @@ static inline void wcfxs_voicedaa_check_hook(struct wcfxs *wc, int card) if (b != 0x8) wcfxs_setreg(wc, card, 5, 0x8); } + if (poopy) + return; #ifndef AUDIO_RINGCHECK if (!wc->mod.fxo.offhook[card]) { res = wcfxs_getreg(wc, card, 5); |