From b422b5cdc54e53448e62996e6bbcabb8d38fcd71 Mon Sep 17 00:00:00 2001 From: tzafrir Date: Wed, 14 Nov 2007 15:22:59 +0000 Subject: xpp r5010: * Fix a deadlock spotted on some SMP installations. * Improve (reduce) signal attenuation on FXO ports. * Increase FXS ring detect debounce interval. Merged revisions 3229-3232 via svnmerge from http://svn.digium.com/svn/zaptel/branches/1.2 git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.4@3233 5390a7c7-147a-4af0-8ec9-7488f05a26cb --- xpp/.version | 2 +- xpp/Changelog_xpp | 6 ++++++ xpp/init_card_3_29 | 2 +- xpp/init_card_4_29 | 4 ++-- xpp/utils/print_modes.c | 2 +- xpp/xpp_zap.c | 6 +++--- 6 files changed, 14 insertions(+), 8 deletions(-) diff --git a/xpp/.version b/xpp/.version index 1f850cf..016eda5 100644 --- a/xpp/.version +++ b/xpp/.version @@ -1 +1 @@ -branch-rel-4816-r4900 +branch-rel-4816-r5010 diff --git a/xpp/Changelog_xpp b/xpp/Changelog_xpp index 9171bc3..582ebcc 100644 --- a/xpp/Changelog_xpp +++ b/xpp/Changelog_xpp @@ -1,3 +1,9 @@ +Wed Nov 14 2007 Tzafrir Cohen - xpp.r5010 + * Fix a deadlock spotted on some SMP installations. + * increase FXS ring detect debounce interval. + * Improve (reduce) signal attenuation on FXO ports. + * zaptel-perl: further fixes to handling of empty slots. + Wed Oct 3 2007 Tzafrir Cohen - xpp.r4900 * Zaptel/Hardware perl modules: - Use sysfs directly. Don't rely on lspci/lsusb. diff --git a/xpp/init_card_3_29 b/xpp/init_card_3_29 index c0cf339..43dbb54 100755 --- a/xpp/init_card_3_29 +++ b/xpp/init_card_3_29 @@ -143,7 +143,7 @@ echo " 31 WD 45 0A # Ring Detect Debounce Interval -31 WD 46 0B +31 WD 46 47 # Battery Feed Control: Battery low (DCSW low) 31 WD 42 00 diff --git a/xpp/init_card_4_29 b/xpp/init_card_4_29 index 760e711..5dda0b2 100755 --- a/xpp/init_card_4_29 +++ b/xpp/init_card_4_29 @@ -141,8 +141,8 @@ for i in `seq 0 7`; do echo "$i WD 20 A0" done -# based on fxo_modes from wctdm.c . TODO: more decent calculation? -reg16=00; reg26=00; reg30=00; reg31=A3; ring_osc=; ring_x=; +# based on fxo_modes from wctdm.c . +reg16=00; reg26=00; reg30=00; reg31=20; ring_osc=; ring_x=; mode="$opermode" if [ -r $INIT_DIR/init_fxo_modes ]; then . $INIT_DIR/init_fxo_modes diff --git a/xpp/utils/print_modes.c b/xpp/utils/print_modes.c index b52c0c5..6312bd1 100644 --- a/xpp/utils/print_modes.c +++ b/xpp/utils/print_modes.c @@ -8,7 +8,7 @@ int main() { printf("case \"$mode\" in\n"); for (i=0; i<(sizeof(fxo_modes)/sizeof(struct fxo_mode)); i++) { if (fxo_modes[i].name == NULL) break; - int reg16=0, reg26=0, reg30=0, reg31=0xa3; + int reg16=0, reg26=0, reg30=0, reg31=0x20; char ring_osc[BUFSIZ]="", ring_x[BUFSIZ] = ""; reg16 |= (fxo_modes[i].ohs << 6); diff --git a/xpp/xpp_zap.c b/xpp/xpp_zap.c index 67de877..aabc236 100644 --- a/xpp/xpp_zap.c +++ b/xpp/xpp_zap.c @@ -1364,7 +1364,7 @@ static void do_ec(xpd_t *xpd) struct zt_chan *chans = xpd->span.chans; int i; -#if WITH_ECHO_SUPPRESSION +#ifdef WITH_ECHO_SUPPRESSION /* FIXME: need to Echo cancel double buffered data */ for (i = 0;i < xpd->span.channels; i++) { if(unlikely(IS_SET(xpd->digital_signalling, i))) /* Don't echo cancel PRI/BRI D-chans */ @@ -1419,12 +1419,12 @@ static void xpp_receiveprep(xpd_t *xpd) memset(chans[i].readchunk, 0x7F, ZT_CHUNKSIZE); // SILENCE } } - do_ec(xpd); spin_unlock_irqrestore(&xpd->lock, flags); /* * This should be out of spinlocks, as it may call back our hook setting * methods */ + do_ec(xpd); zt_receive(&xpd->span); } @@ -1775,7 +1775,7 @@ int __init xpp_zap_init(void) INFO("revision %s MAX_XPDS=%d (%d*%d)\n", XPP_VERSION, MAX_XPDS, MAX_UNIT, MAX_SUBUNIT); -#if WITH_ECHO_SUPPRESSION +#ifdef WITH_ECHO_SUPPRESSION INFO("FEATURE: with ECHO_SUPPRESSION\n"); #else INFO("FEATURE: without ECHO_SUPPRESSION\n"); -- cgit v1.2.3