summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2011-08-19 22:53:51 +0000
committerShaun Ruffell <sruffell@digium.com>2011-08-19 22:53:51 +0000
commitf2208dfe8be788d937b6a5e012bdff243ca7b728 (patch)
tree839e1c25b893f06cbc82d36f964416a929f6ee77
parent435cb6e580dc1bc6dd49f0b2c316688d2597b26d (diff)
wctdm24xxp: Set 'fastoffhook' counter to 8ms and turn off calibration delay.
r10006 "wctdm24xxp: Add 'fastpick' module parameter." copied the fast-off hook module parameter from the wctdm.c driver, but the setting in that driver does not match the data sheet. The previous commit did not actually change any of the significant bits in that register. Also, that commit changed the timer, but did not disable the callibration delay which is necessary for Type-II callerid. The fastpickup option in the wctdm24xxp driver should now match the fastpickup option in the wctdm driver. DAHDI-224. Reported-By: Kinnith Wallace <kwallace@digium.com> Signed-off-by: Shaun Ruffell <sruffell@digium.com> Origin: http://svnview.digium.com/svn/dahdi?view=rev&rev=10148 git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/branches/2.5@10150 a0bf4364-ded3-4de4-8d8a-66a801d63aff
-rw-r--r--drivers/dahdi/wctdm24xxp/base.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/dahdi/wctdm24xxp/base.c b/drivers/dahdi/wctdm24xxp/base.c
index facbd1b..316d79d 100644
--- a/drivers/dahdi/wctdm24xxp/base.c
+++ b/drivers/dahdi/wctdm24xxp/base.c
@@ -2876,7 +2876,10 @@ wctdm_init_voicedaa(struct wctdm *wc, struct wctdm_module *mod,
wctdm_setreg(wc, mod, 30, reg30);
/* Misc. DAA parameters */
- reg31 = (fastpickup) ? 0xb3 : 0xa3;
+
+ /* If fast pickup is set, then the off hook counter will be set to 8
+ * ms, otherwise 128 ms. */
+ reg31 = (fastpickup) ? 0xe3 : 0xa3;
reg31 |= (fxo_modes[_opermode].ohs2 << 3);
wctdm_setreg(wc, mod, 31, reg31);
@@ -2886,6 +2889,10 @@ wctdm_init_voicedaa(struct wctdm *wc, struct wctdm_module *mod,
/* Enable ISO-Cap */
wctdm_setreg(wc, mod, 6, 0x00);
+ /* Turn off the calibration delay when fastpickup is enabled. */
+ if (fastpickup)
+ wctdm_setreg(wc, mod, 17, wctdm_getreg(wc, mod, 17) | 0x20);
+
/* Wait 1000ms for ISO-cap to come up */
newjiffies = jiffies;
newjiffies += 2 * HZ;