dahdi-linux/drivers/dahdi
Shaun Ruffell ae2785e0e7 wct4xxp: Fix condition where hardware echo canceler erroneously mutes DTMF.
Commit r9750 "wct4xxp: Reduce the memory footprint of the hardware
echocanceler.", as part of reducing the non-pageable memory required to
support the VPMOCT064 and VPMOCT128, disabled caching of some hardware
echocan registers. This resulted in more physical reads to the echo
canceler. These new read transactions exposed an existing issue where
sometimes reads could be turned into writes which put a channel into an
unintended state preventing Asterisk from detecting any DTMF.

This issue is resolved by ensuring that the write signal to the Octasic
part is explicitly cleared between when the address is presented on the
bus and when the read and chip select signals are asserted. The cost is
an increase in the average time to enable / disable echo cancellation by
about 5 us on one Intel Xeon X3220 test machine (~250ns increase per
read from the Octasic part and 20 reads to enable / disable a channel).

This commit resolves a behavioral regression first introduced in 2.5.0
and 2.4.1 which could take many calls before revealing itself. This
change only affects cards with a VPMOCT128 or VPMOCT064 installed.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Doug Bailey <dbailey@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@10220 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-10-12 16:12:33 +00:00
..
datamods wct4xxp: Moving the transmit short detection behind debug module param. 2010-08-27 21:59:27 +00:00
firmware wcte12xp, wctdm24xxp: Update VPMOCT032 firmware to 1.11.0. 2011-08-30 20:58:06 +00:00
hpec dahdi_echocan_hpec: Update the HPEC wrapper to use the new name interface 2010-12-09 21:52:34 +00:00
oct612x oct612x: Increase the size of some of the instance variables. 2011-07-20 17:24:27 +00:00
voicebus wcte12xp, wctdm24xxp: Remove frowny face from vpmoct032 error message 2011-08-15 21:57:53 +00:00
vpmadt032_loader Update copyright on changed files since 2011-01-01. 2011-01-03 14:55:24 +00:00
wcb4xxp wcb4xxp: Prevent null pointer dereference on spanconfig 2011-07-22 17:56:07 +00:00
wct4xxp wct4xxp: Fix condition where hardware echo canceler erroneously mutes DTMF. 2011-10-12 16:12:33 +00:00
wctc4xxp wctc4xxp: Allow G723 SID frames to pass to the hardware decoder. 2011-09-30 19:12:42 +00:00
wctdm24xxp wctdm24xxp: Set dahdi_span.devicetype string in one place. 2011-09-27 22:08:31 +00:00
wcte12xp wcte12xp: Set uncollected performance counters to -1. 2011-09-29 16:11:50 +00:00
xpp xpp: fix FXS D DTMF detection (not zero) 2011-09-27 17:10:48 +00:00
adt_lec.c wct4xxp: Moving the transmit short detection behind debug module param. 2010-08-27 21:59:27 +00:00
adt_lec.h wct4xxp: Moving the transmit short detection behind debug module param. 2010-08-27 21:59:27 +00:00
arith.h wct4xxp: Moving the transmit short detection behind debug module param. 2010-08-27 21:59:27 +00:00
biquad.h wct4xxp: Moving the transmit short detection behind debug module param. 2010-08-27 21:59:27 +00:00
dahdi_dummy.c 'dahdi_copy_string()' -> 'strlcpy()' 2011-01-03 18:26:29 +00:00
dahdi_dynamic_eth.c 'dahdi_copy_string()' -> 'strlcpy()' 2011-01-03 18:26:29 +00:00
dahdi_dynamic_ethmf.c 'dahdi_copy_string()' -> 'strlcpy()' 2011-01-03 18:26:29 +00:00
dahdi_dynamic_loc.c dahdi: Allow spans to advertise if they can provide any timing. 2011-01-03 18:26:08 +00:00
dahdi_dynamic.c dahdi_dynamic: Call dahdi_receive in rx packet handler. 2011-08-10 19:22:01 +00:00
dahdi_echocan_jpah.c dahdi-base, dahdi_echocan_*, wcb4xxp, wct4xxp, wctdm24xxp, wcte12xp, kernel: Allow name of EC factory to vary based on channel 2010-12-09 20:19:26 +00:00
dahdi_echocan_kb1.c dahdi-base, dahdi_echocan_*, wcb4xxp, wct4xxp, wctdm24xxp, wcte12xp, kernel: Allow name of EC factory to vary based on channel 2010-12-09 20:19:26 +00:00
dahdi_echocan_mg2.c dahdi-base, dahdi_echocan_*, wcb4xxp, wct4xxp, wctdm24xxp, wcte12xp, kernel: Allow name of EC factory to vary based on channel 2010-12-09 20:19:26 +00:00
dahdi_echocan_oslec.c dahdi-base, dahdi_echocan_*, wcb4xxp, wct4xxp, wctdm24xxp, wcte12xp, kernel: Allow name of EC factory to vary based on channel 2010-12-09 20:19:26 +00:00
dahdi_echocan_sec2.c dahdi-base, dahdi_echocan_*, wcb4xxp, wct4xxp, wctdm24xxp, wcte12xp, kernel: Allow name of EC factory to vary based on channel 2010-12-09 20:19:26 +00:00
dahdi_echocan_sec.c dahdi-base, dahdi_echocan_*, wcb4xxp, wct4xxp, wctdm24xxp, wcte12xp, kernel: Allow name of EC factory to vary based on channel 2010-12-09 20:19:26 +00:00
dahdi_transcode.c 'dahdi_copy_string()' -> 'strlcpy()' 2011-01-03 18:26:29 +00:00
dahdi-base.c dahdi: Check for master in DAHDI_STARTUP / resolves MeetMe regression. 2011-09-23 20:18:36 +00:00
dahdi-sysfs.c dahdi: Do not rebuild dahdi-base.c when only updating the version. 2011-02-28 14:19:09 +00:00
dahdi-version.c dahdi: Do not rebuild dahdi-base.c when only updating the version. 2011-02-28 14:19:09 +00:00
dahdi.h dahdi: Do not rebuild dahdi-base.c when only updating the version. 2011-02-28 14:19:09 +00:00
ecdis.h wct4xxp: Moving the transmit short detection behind debug module param. 2010-08-27 21:59:27 +00:00
fir.h wct4xxp: Moving the transmit short detection behind debug module param. 2010-08-27 21:59:27 +00:00
fxo_modes.h wctdm24xxp, wctdm: Reduce memory used by fxo_modes array. 2011-04-04 16:26:00 +00:00
Kbuild dahdi: Do not rebuild dahdi-base.c when only updating the version. 2011-02-28 14:19:09 +00:00
Kconfig wct4xxp: Moving the transmit short detection behind debug module param. 2010-08-27 21:59:27 +00:00
Makefile wct4xxp: Moving the transmit short detection behind debug module param. 2010-08-27 21:59:27 +00:00
makefw.c wct4xxp: Moving the transmit short detection behind debug module param. 2010-08-27 21:59:27 +00:00
pciradio.c "struct pci_device_id[]" -> "DEFINE_PCI_DEVICE_TABLE" 2011-01-03 18:26:24 +00:00
pciradio.rbt wct4xxp: Moving the transmit short detection behind debug module param. 2010-08-27 21:59:27 +00:00
proslic.h wct4xxp: Moving the transmit short detection behind debug module param. 2010-08-27 21:59:27 +00:00
tor2-hw.h "struct pci_device_id[]" -> "DEFINE_PCI_DEVICE_TABLE" 2011-01-03 18:26:24 +00:00
tor2.c dahdi: Allow dahdi_span_ops.[chan|span]config and startup to block. 2011-06-02 20:01:34 +00:00
tormenta2.rbt wct4xxp: Moving the transmit short detection behind debug module param. 2010-08-27 21:59:27 +00:00
wcfxo.c 'dahdi_copy_string()' -> 'strlcpy()' 2011-01-03 18:26:29 +00:00
wct1xxp.c dahdi: Allow dahdi_span_ops.[chan|span]config and startup to block. 2011-06-02 20:01:34 +00:00
wctdm.c wctdm: Set 'fastpickup' counter to 8ms 2011-08-19 22:40:36 +00:00
wcte11xp.c dahdi: Allow dahdi_span_ops.[chan|span]config and startup to block. 2011-06-02 20:01:34 +00:00