summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/dahdi/firmware/Makefile2
-rw-r--r--drivers/dahdi/voicebus/GpakApi.c130
-rw-r--r--drivers/dahdi/voicebus/GpakApi.h4
-rw-r--r--drivers/dahdi/voicebus/GpakCust.c6
-rw-r--r--drivers/dahdi/voicebus/gpakErrs.h6
-rw-r--r--drivers/dahdi/voicebus/gpakenum.h3
6 files changed, 143 insertions, 8 deletions
diff --git a/drivers/dahdi/firmware/Makefile b/drivers/dahdi/firmware/Makefile
index b90b1a6..0d4973d 100644
--- a/drivers/dahdi/firmware/Makefile
+++ b/drivers/dahdi/firmware/Makefile
@@ -25,7 +25,7 @@
OCT6114_064_VERSION:=1.05.01
OCT6114_128_VERSION:=1.05.01
TC400M_VERSION:=MR6.12
-VPMADT032_VERSION:=1.20.0
+VPMADT032_VERSION:=1.25.0
HX8_VERSION:=2.06
FIRMWARE_URL:=http://downloads.digium.com/pub/telephony/firmware/releases
diff --git a/drivers/dahdi/voicebus/GpakApi.c b/drivers/dahdi/voicebus/GpakApi.c
index a44834b..9dde204 100644
--- a/drivers/dahdi/voicebus/GpakApi.c
+++ b/drivers/dahdi/voicebus/GpakApi.c
@@ -722,9 +722,135 @@ gpakConfigChanStatus_t gpakConfigureChannel(
MsgBuffer[37] = (DSP_WORD)
pChanConfig->EcanParametersB.EcanMaxDoubleTalkThres;
- MsgLength = 76; // byte number == 38*2
- break;
+ MsgBuffer[38] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanSaturationLevel;
+ MsgBuffer[39] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanSaturationLevel;
+ MsgBuffer[40] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanNLPSaturationThreshold;
+ MsgBuffer[41] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanNLPSaturationThreshold;
+ MsgLength = 84; /* byte number == 42*2 */
+ break;
+ /* PCM to Packet channel type. */
+ case tdmToTdmDebug:
+
+ MsgBuffer[2] = (DSP_WORD)
+ ((pChanConfig->PcmInPortA << 8) |
+ (pChanConfig->PcmInSlotA & 0xFF));
+ MsgBuffer[3] = (DSP_WORD)
+ ((pChanConfig->PcmOutPortA << 8) |
+ (pChanConfig->PcmOutSlotA & 0xFF));
+
+ MsgBuffer[4] = (DSP_WORD)
+ ((pChanConfig->PcmInPortB << 8) |
+ (pChanConfig->PcmInSlotB & 0xFF));
+ MsgBuffer[5] = (DSP_WORD)
+ ((pChanConfig->PcmOutPortB << 8) |
+ (pChanConfig->PcmOutSlotB & 0xFF));
+
+ MsgBuffer[6] = (DSP_WORD)
+ (
+ ((pChanConfig->FaxCngDetB << 11) & 0x0800) |
+ ((pChanConfig->FaxCngDetA << 10) & 0x0400) |
+ ((pChanConfig->MuteToneB << 9) & 0x0200) |
+ ((pChanConfig->MuteToneA << 8) & 0x0100) |
+ ((pChanConfig->FrameRate << 6) & 0x00C0) |
+ ((pChanConfig->ToneTypesB << 5) & 0x0020) |
+ ((pChanConfig->ToneTypesA << 4) & 0x0010) |
+ ((pChanConfig->SoftwareCompand & 3) << 2) |
+ (pChanConfig->EcanEnableB << 1) |
+ (pChanConfig->EcanEnableA & 1)
+ );
+
+ MsgBuffer[7] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanTapLength;
+ MsgBuffer[8] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanNlpType;
+ MsgBuffer[9] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanAdaptEnable;
+ MsgBuffer[10] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanG165DetEnable;
+ MsgBuffer[11] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanDblTalkThresh;
+ MsgBuffer[12] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanNlpThreshold;
+ MsgBuffer[13] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanNlpConv;
+ MsgBuffer[14] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanNlpUnConv;
+ MsgBuffer[15] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanNlpMaxSuppress;
+
+ MsgBuffer[16] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanCngThreshold;
+ MsgBuffer[17] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanAdaptLimit;
+ MsgBuffer[18] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanCrossCorrLimit;
+ MsgBuffer[19] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanNumFirSegments;
+ MsgBuffer[20] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanFirSegmentLen;
+
+ MsgBuffer[21] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanTapLength;
+ MsgBuffer[22] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanNlpType;
+ MsgBuffer[23] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanAdaptEnable;
+ MsgBuffer[24] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanG165DetEnable;
+ MsgBuffer[25] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanDblTalkThresh;
+ MsgBuffer[26] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanNlpThreshold;
+ MsgBuffer[27] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanNlpConv;
+ MsgBuffer[28] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanNlpUnConv;
+ MsgBuffer[29] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanNlpMaxSuppress;
+ MsgBuffer[30] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanCngThreshold;
+ MsgBuffer[31] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanAdaptLimit;
+ MsgBuffer[32] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanCrossCorrLimit;
+ MsgBuffer[33] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanNumFirSegments;
+ MsgBuffer[34] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanFirSegmentLen;
+
+ MsgBuffer[35] = (DSP_WORD)
+ (
+ ((pChanConfig->EcanParametersB.EcanReconvergenceCheckEnable << 5) & 0x20) |
+ ((pChanConfig->EcanParametersA.EcanReconvergenceCheckEnable << 4) & 0x10) |
+ ((pChanConfig->EcanParametersB.EcanTandemOperationEnable << 3) & 0x8) |
+ ((pChanConfig->EcanParametersA.EcanTandemOperationEnable << 2) & 0x4) |
+ ((pChanConfig->EcanParametersB.EcanMixedFourWireMode << 1) & 0x2) |
+ (pChanConfig->EcanParametersA.EcanMixedFourWireMode & 1)
+ );
+ MsgBuffer[36] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanMaxDoubleTalkThres;
+
+ MsgBuffer[37] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanMaxDoubleTalkThres;
+
+ MsgBuffer[38] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanSaturationLevel;
+ MsgBuffer[39] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanSaturationLevel;
+ MsgBuffer[40] = (DSP_WORD)
+ pChanConfig->EcanParametersA.EcanNLPSaturationThreshold;
+ MsgBuffer[41] = (DSP_WORD)
+ pChanConfig->EcanParametersB.EcanNLPSaturationThreshold;
+ MsgBuffer[42] = (DSP_WORD)
+ pChanConfig->ChannelId_tobe_Debug;
+
+ MsgLength = 86; /* byte number == 43*2 */
+ break;
/* Unknown (invalid) channel type. */
default:
diff --git a/drivers/dahdi/voicebus/GpakApi.h b/drivers/dahdi/voicebus/GpakApi.h
index ef16d63..bbc27a4 100644
--- a/drivers/dahdi/voicebus/GpakApi.h
+++ b/drivers/dahdi/voicebus/GpakApi.h
@@ -63,6 +63,8 @@ typedef struct GpakEcanParms
short int EcanTandemOperationEnable; //Enable tandem operation
short int EcanMixedFourWireMode; // Handle possible 4-wire (echo-free) lines
short int EcanReconvergenceCheckEnable; // Handle possible 4-wire (echo-free) lines
+ short int EcanSaturationLevel; /* Far end input level above which significant saturation/nonlinearity may be expected. */
+ short int EcanNLPSaturationThreshold; /* NLP threshold under conditions of possible saturation */
} GpakEcanParms_t;
/* Definition of a Channel Configuration information structure. */
@@ -88,6 +90,8 @@ typedef struct GpakChannelConfig
GpakActivation MuteToneB; // B side mute DTMF Enabled
GpakActivation FaxCngDetA; // A side FaxCng Tone Detector Enabled
GpakActivation FaxCngDetB; // B side FaxCng Tone Detector Enabled
+ unsigned short int ChannelId_tobe_Debug; /* Channel Id of the channel that we'd like to debug */
+ /* (0 to MaxChannels-1), only used for tdmToTdmDebug */
} GpakChannelConfig_t;
diff --git a/drivers/dahdi/voicebus/GpakCust.c b/drivers/dahdi/voicebus/GpakCust.c
index 11453fc..a601525 100644
--- a/drivers/dahdi/voicebus/GpakCust.c
+++ b/drivers/dahdi/voicebus/GpakCust.c
@@ -716,13 +716,15 @@ void vpmadt032_get_default_parameters(struct GpakEcanParms *p)
p->EcanNlpUnConv = 12;
p->EcanNlpMaxSuppress = DEFAULT_NLPMAXSUPP;
p->EcanCngThreshold = 43;
- p->EcanAdaptLimit = 50;
+ p->EcanAdaptLimit = 25;
p->EcanCrossCorrLimit = 15;
p->EcanNumFirSegments = 3;
p->EcanFirSegmentLen = 48;
- p->EcanReconvergenceCheckEnable = 2;
+ p->EcanReconvergenceCheckEnable = 1;
p->EcanTandemOperationEnable = 0;
p->EcanMixedFourWireMode = 0;
+ p->EcanSaturationLevel = 3;
+ p->EcanNLPSaturationThreshold = 6;
}
EXPORT_SYMBOL(vpmadt032_get_default_parameters);
diff --git a/drivers/dahdi/voicebus/gpakErrs.h b/drivers/dahdi/voicebus/gpakErrs.h
index c36a1b7..5daa930 100644
--- a/drivers/dahdi/voicebus/gpakErrs.h
+++ b/drivers/dahdi/voicebus/gpakErrs.h
@@ -97,8 +97,10 @@ typedef enum
Cc_InvalidMuteToneA = 51, /* invalid MuteToneA set, no detector */
Cc_InvalidMuteToneB = 52, /* invalid MuteToneB set, no detector */
- Cc_InsuffFaxCngDetResources = 53 /* insufficient tdm block resources avail. */
-
+ Cc_InsuffFaxCngDetResources = 53, /* insufficient tdm block resources avail. */
+ Cc_PortDmaNotStarted = 54, /* SerialPort not ready */
+ Cc_ChannelDebugActive = 55, /* Debug Channel is not active */
+ Cc_ChannelDebugEnabled = 56 /* Channel already been debugged */
} GPAK_ChannelConfigStat_t;
/* Tear Down Channel reply status codes. */
diff --git a/drivers/dahdi/voicebus/gpakenum.h b/drivers/dahdi/voicebus/gpakenum.h
index f488a81..3cc7adf 100644
--- a/drivers/dahdi/voicebus/gpakenum.h
+++ b/drivers/dahdi/voicebus/gpakenum.h
@@ -98,7 +98,8 @@ typedef enum
typedef enum
{
inactive=0, // channel inactive
- tdmToTdm=1 // tdmToTdm
+ tdmToTdm = 1, /* tdmToTdm */
+ tdmToTdmDebug = 2 /* tdmToTdm */
} GpakChanType;
/* G.PAK Algorithm control commands */