summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authormattf <mattf@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2008-03-14 16:39:39 +0000
committermattf <mattf@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2008-03-14 16:39:39 +0000
commit562f282a49a8d26080c0c322ef1f7246fa8a3320 (patch)
tree1e0993c2bc4b1983a91aa72c63d45c00260e9a7b /kernel
parent6bfbb4a31de03374ba822816caaa88d341487001 (diff)
Update wctdm24xxp's VPMADT032 firmware to version 1.16
git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.4@3990 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'kernel')
-rw-r--r--kernel/wctdm24xxp/GpakApi.c46
-rw-r--r--kernel/wctdm24xxp/GpakApi.h3
-rw-r--r--kernel/wctdm24xxp/base.c10
3 files changed, 25 insertions, 34 deletions
diff --git a/kernel/wctdm24xxp/GpakApi.c b/kernel/wctdm24xxp/GpakApi.c
index abdb09f..8f03c7f 100644
--- a/kernel/wctdm24xxp/GpakApi.c
+++ b/kernel/wctdm24xxp/GpakApi.c
@@ -32,10 +32,9 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-
+
#include <linux/version.h>
#include <asm/semaphore.h>
-
#include "zaptel.h"
#include "GpakHpi.h"
@@ -129,12 +128,10 @@ static int CheckDspReset(
DSP_ADDRESS IfBlockPntr; /* Interface Block pointer */
DSP_WORD DspStatus; /* DSP Status */
DSP_WORD DspChannels; /* number of DSP channels */
- DSP_WORD Temp[2];
-#if 0
DSP_WORD DspConfs; /* number of DSP conferences */
DSP_ADDRESS PktBufrMem; /* address of Packet Buffer */
+ DSP_WORD Temp[2];
unsigned short int i; /* loop index / counter */
-#endif
/* Read the pointer to the Interface Block. */
gpakReadDspMemory(DspId, DSP_IFBLK_ADDRESS, 2, Temp);
@@ -563,7 +560,7 @@ gpakConfigPortStatus_t gpakConfigurePorts(
((pPortConfig->RxFrameSyncPolarity2 << 4) & 0x0010) |
((pPortConfig->TxFrameSyncPolarity2 << 3) & 0x0008) |
((pPortConfig->CompandingMode2 << 1) & 0x0006) |
- (pPortConfig->SerialWordSize1 & 0x0001));
+ (pPortConfig->SerialWordSize2 & 0x0001));
MsgBuffer[12] = (DSP_WORD)
(((pPortConfig->DxDelay3 << 11) & 0x0800) |
@@ -735,8 +732,16 @@ gpakConfigChanStatus_t gpakConfigureChannel(
pChanConfig->EcanParametersB.EcanNumFirSegments;
MsgBuffer[34] = (DSP_WORD)
pChanConfig->EcanParametersB.EcanFirSegmentLen;
-
- MsgLength = 70; // byte number == 35*2
+ MsgBuffer[35] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanTandemOperationEnable;
+ MsgBuffer[36] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanMixedFourWireMode;
+ MsgBuffer[37] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanTandemOperationEnable;
+ MsgBuffer[38] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanMixedFourWireMode;
+
+ MsgLength = 78; // byte number == 39*2
break;
@@ -892,32 +897,21 @@ gpakReadEventFIFOMessageStat_t gpakReadEventFIFOMessage(
DSP_WORD TakeIndex; /* event fifo take index */
DSP_WORD WordsReady; /* number words ready for read out of event fifo */
DSP_WORD EventError; /* flag indicating error with event fifo msg */
-#if 0
DSP_WORD *pDebugData; /* debug data buffer pointer in event data struct */
-#endif
/* Make sure the DSP Id is valid. */
- if (DspId >= MAX_DSP_CORES) {
-#if 0
- printk("Invalid DSP\n");
-#endif
+ if (DspId >= MAX_DSP_CORES)
return (RefInvalidDsp);
- }
/* Lock access to the DSP. */
gpakLockAccess(DspId);
-#if 1
/* Check if the DSP was reset and is ready. */
if (CheckDspReset(DspId) == -1)
{
gpakUnlockAccess(DspId);
-#if 0
- printk("CheckDspReset failed (DspId %d)\n", DspId);
-#endif
return (RefDspCommFailure);
}
-#endif
/* Check if an event message is ready in the DSP. */
EventInfoAddress = pEventFifoAddress[DspId];
@@ -958,9 +952,6 @@ gpakReadEventFIFOMessageStat_t gpakReadEventFIFOMessage(
if (EventDataLength > WORD_BUFFER_SIZE)
{
gpakUnlockAccess(DspId);
-#if 0
- printk("EventDataLength > WORD_BUFFER_SIZE (%d)\n", EventDataLength);
-#endif
return (RefInvalidEvent);
}
ReadCircBuffer(DspId, BufrBaseAddress, BufrLastAddress, &TakeAddress,
@@ -973,18 +964,11 @@ gpakReadEventFIFOMessageStat_t gpakReadEventFIFOMessage(
TakeIndex += EventDataLength;
if (TakeIndex >= BufrSize)
TakeIndex -= BufrSize;
- if (EventDataLength != 4) {
-#if 0
- printk("EventDataLength != 4 it's %d\n", EventDataLength);
-#endif
+ if (EventDataLength != 4)
EventError = 1;
- }
break;
default:
-#if 0
- printk("Event Code not in switch\n");
-#endif
EventError = 1;
break;
};
diff --git a/kernel/wctdm24xxp/GpakApi.h b/kernel/wctdm24xxp/GpakApi.h
index df57c09..a435db3 100644
--- a/kernel/wctdm24xxp/GpakApi.h
+++ b/kernel/wctdm24xxp/GpakApi.h
@@ -77,6 +77,9 @@ typedef struct
short int EcanCrossCorrLimit; // Echo Can Cross Correlation limit
short int EcanNumFirSegments; // Echo Can Num FIR Segments
short int EcanFirSegmentLen; // Echo Can FIR Segment Length
+ short int EcanTandemOperationEnable; //Enable tandem operation
+ short int EcanMixedFourWireMode; // Handle possible 4-wire (echo-free) lines
+
} GpakEcanParms_t;
/* Definition of a Channel Configuration information structure. */
diff --git a/kernel/wctdm24xxp/base.c b/kernel/wctdm24xxp/base.c
index 8f5ae14..201f475 100644
--- a/kernel/wctdm24xxp/base.c
+++ b/kernel/wctdm24xxp/base.c
@@ -295,7 +295,7 @@ static int dtmfthreshold = VPM_DEFAULT_DTMFTHRESHOLD;
* 4 : Suppression NLP - In order to use this, you must set the vpmnlpmaxsupp parameter to
* some value in order to give the amount of dB to suppress to the suppressor
*/
-static int vpmnlptype = 1;
+static int vpmnlptype = 3;
/* This is the threshold (in dB) for enabling and disabling of the NLP */
static int vpmnlpthresh = 24;
/* See vpmnlptype = 4 for more info */
@@ -3348,13 +3348,15 @@ void vpm150m_set_chanconfig_from_state(struct adt_lec_params * parms, int channu
chanconfig->EcanParametersA.EcanDblTalkThresh = 6;
chanconfig->EcanParametersA.EcanNlpThreshold = parms->nlp_threshold;
chanconfig->EcanParametersA.EcanNlpConv = 0;
- chanconfig->EcanParametersA.EcanNlpUnConv = 0;
+ chanconfig->EcanParametersA.EcanNlpUnConv = 12;
chanconfig->EcanParametersA.EcanNlpMaxSuppress = parms->nlp_max_suppress;
chanconfig->EcanParametersA.EcanCngThreshold = 43;
chanconfig->EcanParametersA.EcanAdaptLimit = 50;
chanconfig->EcanParametersA.EcanCrossCorrLimit = 15;
chanconfig->EcanParametersA.EcanNumFirSegments = 3;
chanconfig->EcanParametersA.EcanFirSegmentLen = 64;
+ chanconfig->EcanParametersA.EcanTandemOperationEnable = 1;
+ chanconfig->EcanParametersA.EcanMixedFourWireMode = 1;
chanconfig->EcanParametersB.EcanTapLength = 1024;
chanconfig->EcanParametersB.EcanNlpType = parms->nlp_type;
@@ -3363,13 +3365,15 @@ void vpm150m_set_chanconfig_from_state(struct adt_lec_params * parms, int channu
chanconfig->EcanParametersB.EcanDblTalkThresh = 6;
chanconfig->EcanParametersB.EcanNlpThreshold = parms->nlp_threshold;
chanconfig->EcanParametersB.EcanNlpConv = 0;
- chanconfig->EcanParametersB.EcanNlpUnConv = 0;
+ chanconfig->EcanParametersB.EcanNlpUnConv = 12;
chanconfig->EcanParametersB.EcanNlpMaxSuppress = parms->nlp_max_suppress;
chanconfig->EcanParametersB.EcanCngThreshold = 43;
chanconfig->EcanParametersB.EcanAdaptLimit = 50;
chanconfig->EcanParametersB.EcanCrossCorrLimit = 15;
chanconfig->EcanParametersB.EcanNumFirSegments = 3;
chanconfig->EcanParametersB.EcanFirSegmentLen = 64;
+ chanconfig->EcanParametersB.EcanTandemOperationEnable = 1;
+ chanconfig->EcanParametersB.EcanMixedFourWireMode = 1;
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)