diff options
Diffstat (limited to 'drivers/dahdi')
-rw-r--r-- | drivers/dahdi/firmware/Makefile | 2 | ||||
-rw-r--r-- | drivers/dahdi/voicebus/GpakApi.c | 130 | ||||
-rw-r--r-- | drivers/dahdi/voicebus/GpakApi.h | 4 | ||||
-rw-r--r-- | drivers/dahdi/voicebus/GpakCust.c | 6 | ||||
-rw-r--r-- | drivers/dahdi/voicebus/gpakErrs.h | 6 | ||||
-rw-r--r-- | drivers/dahdi/voicebus/gpakenum.h | 3 |
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 */ |