diff options
Diffstat (limited to 'drivers/dahdi')
7 files changed, 181 insertions, 267 deletions
diff --git a/drivers/dahdi/oct612x/include/oct6100api/oct6100_channel_inst.h b/drivers/dahdi/oct612x/include/oct6100api/oct6100_channel_inst.h index b329a49..4472b9c 100644 --- a/drivers/dahdi/oct612x/include/oct6100api/oct6100_channel_inst.h +++ b/drivers/dahdi/oct612x/include/oct6100api/oct6100_channel_inst.h @@ -43,10 +43,15 @@ $Octasic_Revision: 90 $ typedef struct _OCT6100_API_CHANNEL_TDM_ { /* Laws. */ - UINT8 byRinPcmLaw; - UINT8 bySinPcmLaw; - UINT8 byRoutPcmLaw; - UINT8 bySoutPcmLaw; + UINT8 byRinPcmLaw : 1; + UINT8 bySinPcmLaw : 1; + UINT8 byRoutPcmLaw : 1; + UINT8 bySoutPcmLaw : 1; + + UINT8 byRinNumTssts : 1; + UINT8 bySinNumTssts : 1; + UINT8 byRoutNumTssts : 1; + UINT8 bySoutNumTssts : 1; /* RIN port. */ UINT16 usRinTimeslot; @@ -72,86 +77,71 @@ typedef struct _OCT6100_API_CHANNEL_TDM_ UINT16 usSoutBrdcastTsstFirstEntry; UINT16 usSoutBrdcastTsstNumEntry; - UINT8 byRinNumTssts; - UINT8 bySinNumTssts; - UINT8 byRoutNumTssts; - UINT8 bySoutNumTssts; - } tOCT6100_API_CHANNEL_TDM, *tPOCT6100_API_CHANNEL_TDM; typedef struct _OCT6100_API_CHANNEL_VQE_ { - UINT8 fEnableNlp; - UINT8 fEnableTailDisplacement; - UINT16 usTailDisplacement; - UINT16 usTailLength; + UINT8 fEnableNlp : 1; + UINT8 fEnableTailDisplacement : 1; + UINT8 fSinDcOffsetRemoval : 1; + UINT8 fRinDcOffsetRemoval : 1; + UINT8 fRinLevelControl : 1; + UINT8 fSoutLevelControl : 1; + UINT8 fRinAutomaticLevelControl : 1; + UINT8 fSoutAutomaticLevelControl : 1; + UINT8 fRinHighLevelCompensation : 1; + UINT8 fSoutAdaptiveNoiseReduction : 1; + UINT8 fDtmfToneRemoval : 1; + UINT8 fAcousticEcho : 1; + UINT8 byComfortNoiseMode : 1; + UINT8 fSoutNaturalListenerEnhancement : 1; + UINT8 fRoutNoiseReduction : 1; + UINT8 fEnableMusicProtection : 1; + UINT8 fIdleCodeDetection : 1; + UINT8 byAnrVoiceNoiseSegregation : 1; + UINT8 byDoubleTalkBehavior : 1; + UINT8 fSoutNoiseBleaching : 1; + UINT8 fSoutConferencingNoiseReduction : 1; + UINT8 bySoutAutomaticListenerEnhancementGainDb : 1; + UINT8 byNonLinearityBehaviorA : 1; + UINT8 byNonLinearityBehaviorB : 1; + UINT8 bySoutNaturalListenerEnhancementGainDb : 1; - UINT8 fSinDcOffsetRemoval; - UINT8 fRinDcOffsetRemoval; - UINT8 fRinLevelControl; - UINT8 fSoutLevelControl; - - UINT8 fRinAutomaticLevelControl; - UINT8 fSoutAutomaticLevelControl; OCT_INT8 chRinAutomaticLevelControlTargetDb; OCT_INT8 chSoutAutomaticLevelControlTargetDb; - UINT8 fRinHighLevelCompensation; OCT_INT8 chRinHighLevelCompensationThresholdDb; - UINT8 bySoutAutomaticListenerEnhancementGainDb; - UINT8 fSoutNaturalListenerEnhancement; - - UINT8 fSoutAdaptiveNoiseReduction; - UINT8 fDtmfToneRemoval; - UINT8 fAcousticEcho; - UINT8 byComfortNoiseMode; - - UINT8 byNonLinearityBehaviorA; - UINT8 byNonLinearityBehaviorB; OCT_INT8 chRinLevelControlGainDb; OCT_INT8 chSoutLevelControlGainDb; OCT_INT8 chDefaultErlDb; OCT_INT8 chAecDefaultErlDb; - UINT8 fRoutNoiseReduction; OCT_INT8 chRoutNoiseReductionLevelGainDb; OCT_INT8 chAnrSnrEnhancementDb; - UINT8 fEnableMusicProtection; - UINT8 fIdleCodeDetection; - - UINT8 byAnrVoiceNoiseSegregation; - UINT8 bySoutNaturalListenerEnhancementGainDb; - UINT16 usToneDisablerVqeActivationDelay; UINT16 usAecTailLength; - UINT8 byDoubleTalkBehavior; - UINT8 fSoutNoiseBleaching; - - - - UINT8 fSoutConferencingNoiseReduction; - - + UINT16 usTailDisplacement; + UINT16 usTailLength; } tOCT6100_API_CHANNEL_VQE, *tPOCT6100_API_CHANNEL_VQE; typedef struct _OCT6100_API_CHANNEL_CODEC_ { - UINT8 byAdpcmNibblePosition; - UINT8 fEnableSilenceSuppression; + UINT8 byAdpcmNibblePosition : 1; + UINT8 fEnableSilenceSuppression : 1; - UINT8 byEncoderPort; - UINT8 byEncodingRate; + UINT8 byEncoderPort : 1; + UINT8 byEncodingRate : 1; - UINT8 byDecoderPort; - UINT8 byDecodingRate; + UINT8 byDecoderPort : 1; + UINT8 byDecodingRate : 1; - UINT8 byPhase; - UINT8 byPhasingType; + UINT8 byPhase : 1; + UINT8 byPhasingType : 1; } tOCT6100_API_CHANNEL_CODEC, *tPOCT6100_API_CHANNEL_CODEC; @@ -161,16 +151,54 @@ typedef struct _OCT6100_API_CHANNEL_ /* Channel configuration. */ /* Flag specifying whether the entry is used or not. */ - UINT8 fReserved; + UINT8 fReserved : 1; /* Count used to manage entry handles allocated to user. */ - UINT8 byEntryOpenCnt; + UINT8 byEntryOpenCnt : 1; /* Is this a bidirectionnal channel? */ - UINT8 fBiDirChannel; + UINT8 fBiDirChannel : 1; /* Enable tone disabler? */ - UINT8 fEnableToneDisabler; + UINT8 fEnableToneDisabler : 1; + + /* Current echo operation mode. */ + UINT8 byEchoOperationMode : 1; + + UINT8 byToneDisablerStatus : 1; + + UINT8 fMute : 1; + UINT8 fTap : 1; + UINT8 fBeingTapped : 1; + UINT8 fCopyEventCreated : 1; + + UINT8 fSoutBufPlaying : 1; + UINT8 fRinBufPlaying : 1; + + UINT8 fRinBufPlayoutNotifyOnStop : 1; + UINT8 fRinBufPlayoutRepeatUsed : 1; + + + UINT8 fSoutBufPlayoutNotifyOnStop : 1; + UINT8 fSoutBufPlayoutRepeatUsed : 1; + + UINT8 fRinHardStop : 1; + UINT8 fSoutHardStop : 1; + + UINT8 byRinPlayoutStopEventType : 1; + UINT8 bySoutPlayoutStopEventType : 1; + + UINT8 fRinBufAdded : 1; + UINT8 fSoutBufAdded : 1; + + UINT8 fBufPlayoutActive : 1; + + /* Enable extended tone detection. */ + UINT8 fEnableExtToneDetection : 1; + + /* State of the codec structure associated to this channel. */ + UINT8 fSinSoutCodecActive : 1; + UINT8 fRinRoutCodecActive : 1; /* TSI chariot memory entry for the Rin/Rout stream. */ UINT16 usRinRoutTsiMemIndex; @@ -202,9 +230,6 @@ typedef struct _OCT6100_API_CHANNEL_ /* Active mixer events count to test for last event. */ UINT16 usMixerEventCnt; - /* User channel ID, transparently passed to the user. */ - UINT32 ulUserChanId; - /* Copy events. */ UINT16 usSinCopyEventIndex; UINT16 usSoutCopyEventIndex; @@ -219,15 +244,11 @@ typedef struct _OCT6100_API_CHANNEL_ /* VQE configuration. */ tOCT6100_API_CHANNEL_VQE VqeConfig; - /* Current echo operation mode. */ - UINT8 byEchoOperationMode; - /* Currently muted ports. */ UINT16 usMutedPorts; /*=======================================================================*/ - /*=======================================================================*/ /* Statistics section. */ @@ -251,8 +272,6 @@ typedef struct _OCT6100_API_CHANNEL_ INT16 sRinAppliedGain; INT16 sSoutAppliedGain; - UINT8 byToneDisablerStatus; - /*=======================================================================*/ @@ -261,11 +280,6 @@ typedef struct _OCT6100_API_CHANNEL_ UINT16 usBridgeIndex; - UINT8 fMute; - UINT8 fTap; - UINT8 fBeingTapped; - UINT8 fCopyEventCreated; - UINT16 usLoadEventIndex; UINT16 usSubStoreEventIndex; @@ -279,34 +293,12 @@ typedef struct _OCT6100_API_CHANNEL_ /*=======================================================================*/ /* Buffer playout information. */ - UINT32 ulRinBufWritePtr; - UINT32 ulRinBufSkipPtr; - - UINT8 fSoutBufPlaying; - UINT8 fRinBufPlaying; - - UINT8 fRinBufPlayoutNotifyOnStop; - UINT8 fRinBufPlayoutRepeatUsed; - - UINT32 ulSoutBufWritePtr; - UINT32 ulSoutBufSkipPtr; - - UINT8 fSoutBufPlayoutNotifyOnStop; - UINT8 fSoutBufPlayoutRepeatUsed; - - UINT8 fRinHardStop; - UINT8 fSoutHardStop; + UINT16 ulRinBufWritePtr; + UINT16 ulRinBufSkipPtr; + UINT16 ulSoutBufWritePtr; + UINT16 ulSoutBufSkipPtr; - UINT32 ulRinUserBufPlayoutEventId; - UINT32 ulSoutUserBufPlayoutEventId; - - UINT8 byRinPlayoutStopEventType; - UINT8 bySoutPlayoutStopEventType; - - UINT8 fRinBufAdded; - UINT8 fSoutBufAdded; - - UINT8 fBufPlayoutActive; + /* User channel ID, transparently passed to the user. */ /*=======================================================================*/ @@ -323,51 +315,39 @@ typedef struct _OCT6100_API_CHANNEL_ /*=======================================================================*/ /* Extended tone detection info. */ - /* Enable extended tone detection. */ - UINT8 fEnableExtToneDetection; UINT16 usExtToneChanIndex; UINT16 usExtToneMixerIndex; UINT16 usExtToneTsiIndex; + /* Index of the phasing TSST */ + UINT16 usPhasingTsstIndex; + /* Mode of operation of the channel based on the extended tone detection configuration. */ - UINT32 ulExtToneChanMode; + UINT16 ulExtToneChanMode; /*=======================================================================*/ /* Tone detection state. */ /* This array is configured as follow. */ /* Index 0 contain event 0 to 31 and Index 1 contains event 32 - 55 */ - UINT32 aulToneConf[ 2 ]; - UINT32 ulLastSSToneDetected; - UINT32 ulLastSSToneTimestamp; + UINT16 ulLastSSToneDetected; + UINT16 ulLastSSToneTimestamp; - /*=======================================================================*/ + UINT16 ulRinUserBufPlayoutEventId; + UINT16 ulSoutUserBufPlayoutEventId; + UINT32 aulToneConf[2]; + UINT32 ulUserChanId; /*=======================================================================*/ - /* Index of the phasing TSST */ - UINT16 usPhasingTsstIndex; - - /* State of the codec structure associated to this channel. */ - UINT8 fSinSoutCodecActive; - UINT8 fRinRoutCodecActive; - - /* Codec configuration. */ - tOCT6100_API_CHANNEL_CODEC CodecConfig; /*=======================================================================*/ - - - - - - /* Nlp Conf Dword, index 0 contains the dword where the dword is located. and - index 1 is the actual value of the dword.*/ - UINT32 aulNlpConfDword[ cOCT6100_MAX_NLP_CONF_DWORD ][ 2 ]; + /* Codec configuration. */ + tOCT6100_API_CHANNEL_CODEC CodecConfig; } tOCT6100_API_CHANNEL, *tPOCT6100_API_CHANNEL; @@ -377,12 +357,9 @@ typedef struct _OCT6100_API_BIDIR_CHANNEL_ UINT16 usSecondChanIndex; /* Flag specifying whether the entry is used or not. */ - UINT8 fReserved; - + UINT8 fReserved : 1; /* Count used to manage entry handles allocated to user. */ - UINT8 byEntryOpenCnt; - - + UINT8 byEntryOpenCnt : 1; } tOCT6100_API_BIDIR_CHANNEL, *tPOCT6100_API_BIDIR_CHANNEL; diff --git a/drivers/dahdi/oct612x/include/oct6100api/oct6100_chip_open_inst.h b/drivers/dahdi/oct612x/include/oct6100api/oct6100_chip_open_inst.h index 6de2d7e..fdd2bd0 100644 --- a/drivers/dahdi/oct612x/include/oct6100api/oct6100_chip_open_inst.h +++ b/drivers/dahdi/oct612x/include/oct6100api/oct6100_chip_open_inst.h @@ -129,8 +129,6 @@ typedef struct _OCT6100_API_MISCELLANEOUS_ allocate on the stack. The size of this array MUST NOT CHANGE (it's used everywhere). */ UINT16 ausSuperArray[ cOCT6100_INTERNAL_SUPER_ARRAY_SIZE ]; - UINT16 ausSuperArray1[ cOCT6100_INTERNAL_SUPER_ARRAY_SIZE ]; - UINT16 ausSuperArray2[ cOCT6100_INTERNAL_SUPER_ARRAY_SIZE ]; /* Chip ID and revision.*/ UINT16 usChipId; diff --git a/drivers/dahdi/oct612x/include/oct6100api/oct6100_defines.h b/drivers/dahdi/oct612x/include/oct6100api/oct6100_defines.h index ab7aab8..b1f1622 100644 --- a/drivers/dahdi/oct612x/include/oct6100api/oct6100_defines.h +++ b/drivers/dahdi/oct612x/include/oct6100api/oct6100_defines.h @@ -56,7 +56,7 @@ $Octasic_Revision: 171 $ #define cOCT6100_INVALID_HANDLE cOCT6100_FFFFFFFF #define cOCT6100_INVALID_TIMESLOT cOCT6100_FFFFFFFF #define cOCT6100_INVALID_STREAM cOCT6100_FFFFFFFF -#define cOCT6100_INVALID_VALUE cOCT6100_FFFFFFFF +#define cOCT6100_INVALID_VALUE -1 #define cOCT6100_INVALID_STAT cOCT6100_FFFFFFFF #define cOCT6100_INVALID_STAT_W cOCT6100_FFFF #define cOCT6100_INVALID_PCM_LAW cOCT6100_FF @@ -249,7 +249,7 @@ $Octasic_Revision: 171 $ /* Chip open defines.*/ #define cOCT6100_INTERNAL_TONE_ARRAY_SIZE 256 /* in words.*/ -#define cOCT6100_INTERNAL_SUPER_ARRAY_SIZE 1024 /* in words.*/ +#define cOCT6100_INTERNAL_SUPER_ARRAY_SIZE 128 /* in words.*/ /* Internal memory mapping.*/ @@ -358,7 +358,7 @@ $Octasic_Revision: 171 $ #define cOCT6100_CHANNEL_ROOT_GLOBAL_CONF_OFFSET 0x0000 #define cOCT6100_NUM_WORDS_PER_TONE_EVENT 32 -#define cOCT6100_NUM_PGSP_EVENT_OUT 2048 +#define cOCT6100_NUM_PGSP_EVENT_OUT 2048 /* CPTAG: Must not be modified, represents number of events stored in hardware. */ #define cOCT6100_VALID_TONE_EVENT 0x8000 #define cOCT6100_LOCAL_TIMESTAMP_INCREMENT 32 /* 4 ms increment. */ #define cOCT6100_ABSOLUTE_MAX_NUM_PGSP_EVENT_OUT 65535 @@ -394,7 +394,7 @@ $Octasic_Revision: 171 $ #define cOCT6100_IMAGE_AF_CST_OFFSET 0x1000; /* Max defines.*/ -#define cOCT6100_MAX_ECHO_CHANNELS 672 +#define cOCT6100_MAX_ECHO_CHANNELS 128 #define cOCT6100_MAX_TSI_CNCTS 1530 #define cOCT6100_MAX_CALLER_ID_PLAYOUT_BUFFERS ( 3328 + 6 ) #define cOCT6100_MAX_PLAYOUT_BUFFERS ( 1344 + cOCT6100_MAX_CALLER_ID_PLAYOUT_BUFFERS ) @@ -474,20 +474,23 @@ $Octasic_Revision: 171 $ /* TSST defines.*/ #define cOCT6100_UNASSIGNED cOCT6100_FFFD -#define cOCT6100_MAX_TSSTS 4096 +#define cOCT6100_MAX_TSSTS (cOCT6100_MAX_ECHO_CHANNELS*4) /* cOCT6100_MAX_ECHO_CHANNELS channels, 4 TSSTs per channel. */ #define cOCT6100_TWO_TSSTS_INDEX_MASK 0x8000 #define cOCT6100_TSST_INDEX_MASK 0x7FFF #define cOCT6100_INPUT_TSST 0 #define cOCT6100_OUTPUT_TSST 1 /* Conference bridges defines.*/ -#define cOCT6100_MAX_MIXER_EVENTS 1344 +/* CPTAG: No application needs for mixer events. */ +/* 2 needed for head and tail nodes. 2 more needed to get through channel modify function. */ +/* Careful. This value cannot be zero. */ +#define cOCT6100_MAX_MIXER_EVENTS 4 #define cOCT6100_MAX_FLEX_CONF_PARTICIPANTS_PER_BRIDGE 32 #define cOCT6100_CONF_DOMINANT_SPEAKER_UNASSIGNED 672 #define cOCT6100_CONF_NO_DOMINANT_SPEAKER_HNDL cOCT6100_FFFFFFFE /* Conversion memory defines.*/ -#define cOCT6100_MAX_CONVERSION_MEMORY_BLOCKS 1344 +#define cOCT6100_MAX_CONVERSION_MEMORY_BLOCKS (cOCT6100_MAX_ECHO_CHANNELS*2) /* CPTAG: Max this out to the expected max number of channels * 2, was 1344 */ /* Tone detection defines.*/ #define cOCT6100_MAX_TONE_NUMBER 55 @@ -586,8 +589,6 @@ $Octasic_Revision: 171 $ #define cOCT6100_TONE_INFO_STOP_STRING "[~ToneDetectorInfo]" #define cOCT6100_TONE_INFO_EVENT_STRING "TONEEVENT=0x" -#define cOCT6100_MAX_NLP_CONF_DWORD 20 - /* Tail displacement info.*/ #define cOCT6100_MAX_TAIL_DISPLACEMENT 896 diff --git a/drivers/dahdi/oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_channel.c b/drivers/dahdi/oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_channel.c index 49a876f..f06b64b 100644 --- a/drivers/dahdi/oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_channel.c +++ b/drivers/dahdi/oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_channel.c @@ -5481,7 +5481,7 @@ UINT32 Oct6100ApiModifyChannelStructs( if ( f_pChannelModify->fDisableToneDetection == TRUE ) { /* Check if tone detection has been enabled on this channel. */ - for ( ulToneConfIndex = 0; ulToneConfIndex < ( sizeof( pChanEntry->aulToneConf ) / sizeof(UINT32) ); ulToneConfIndex ++ ) + for (ulToneConfIndex = 0; ulToneConfIndex < ARRAY_SIZE(pChanEntry->aulToneConf); ulToneConfIndex++) { /* Check if some tone has been activated on this channel. */ if ( pChanEntry->aulToneConf[ ulToneConfIndex ] != 0 ) diff --git a/drivers/dahdi/oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_open.c b/drivers/dahdi/oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_open.c index 00c0fec..14f13e0 100644 --- a/drivers/dahdi/oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_open.c +++ b/drivers/dahdi/oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_open.c @@ -200,7 +200,7 @@ UINT32 Oct6100ChipOpenDef( f_pChipOpen->fEnableAcousticEcho = FALSE; /* Resource allocation parameters. */ - f_pChipOpen->ulMaxChannels = 672; + f_pChipOpen->ulMaxChannels = 256; f_pChipOpen->ulMaxTsiCncts = 0; f_pChipOpen->ulMaxBiDirChannels = 0; f_pChipOpen->ulMaxConfBridges = 0; @@ -219,7 +219,7 @@ UINT32 Oct6100ChipOpenDef( f_pChipOpen->fEnableFastH100Mode = FALSE; /* Configure the soft tone event buffer. */ - f_pChipOpen->ulSoftToneEventsBufSize = 2048; + f_pChipOpen->ulSoftToneEventsBufSize = 128; f_pChipOpen->fEnableExtToneDetection = FALSE; f_pChipOpen->fEnable2100StopEvent = FALSE; @@ -240,7 +240,7 @@ UINT32 Oct6100ChipOpenDef( f_pChipOpen->InterruptConfig.ulFatalMemoryTimeout = 100; f_pChipOpen->InterruptConfig.ulErrorH100Timeout = 100; f_pChipOpen->InterruptConfig.ulErrorOverflowToneEventsTimeout = 100; - f_pChipOpen->ulMaxRemoteDebugSessions = 1; + f_pChipOpen->ulMaxRemoteDebugSessions = 0; f_pChipOpen->ulTdmSampling = cOCT6100_TDM_SAMPLE_AT_3_QUARTERS; for ( i = 0; i < cOCT6100_TDM_STREAM_MAX_GROUPS; i++ ) f_pChipOpen->aulTdmStreamFreqs[ i ] = cOCT6100_TDM_STREAM_FREQ_8MHZ; @@ -321,6 +321,7 @@ UINT32 Oct6100ChipOpen( InstanceSizes = kmalloc(sizeof(tOCT6100_API_INSTANCE_SIZES), GFP_ATOMIC); if (!InstanceSizes) return cOCT6100_ERR_FATAL_0; + /* Calculate the amount of memory needed for the API instance structure. */ ulResult = Oct6100ApiCalculateInstanceSizes( f_pChipOpen, InstanceSizes ); if ( ulResult != cOCT6100_ERR_OK ) { @@ -1180,7 +1181,7 @@ UINT32 Oct6100ApiCheckChipConfiguration( /*-----------------------------------------------------------------------------*/ /* Check soft buffer for tone events size. */ - if ( f_pChipOpen->ulSoftToneEventsBufSize < cOCT6100_NUM_PGSP_EVENT_OUT || + if (f_pChipOpen->ulSoftToneEventsBufSize < 64 || f_pChipOpen->ulSoftToneEventsBufSize > cOCT6100_ABSOLUTE_MAX_NUM_PGSP_EVENT_OUT ) return cOCT6100_ERR_OPEN_SOFT_TONE_EVENT_SIZE; @@ -1678,6 +1679,7 @@ UINT32 Oct6100ApiCalculateInstanceSizes( /*-----------------------------------------------------------------------------*/ /* Calculate memory needed for the conference bridges. */ ulResult = Oct6100ApiGetConfBridgeSwSizes( f_pChipOpen, f_pInstSizes ); + /* Calculate memory needed for list and allocation software serialization. */ if ( ulResult != cOCT6100_ERR_OK ) return ulResult; @@ -1687,8 +1689,6 @@ UINT32 Oct6100ApiCalculateInstanceSizes( if ( ulResult != cOCT6100_ERR_OK ) return ulResult; - - /*-----------------------------------------------------------------------------*/ /* Memory needed by soft Rx Event buffers. */ ulResult = Oct6100ApiGetEventsSwSizes( f_pChipOpen, f_pInstSizes ); @@ -1741,7 +1741,6 @@ UINT32 Oct6100ApiCalculateInstanceSizes( ulApiInstProcessSpecific = sizeof( tOCT6100_INSTANCE_API ); mOCT6100_ROUND_MEMORY_SIZE( ulApiInstProcessSpecific, ulTempVar ) - f_pInstSizes->ulApiInstTotal = f_pInstSizes->ulChannelList + f_pInstSizes->ulChannelAlloc + diff --git a/drivers/dahdi/oct612x/octdeviceapi/oct6100api/oct6100_miscellaneous_priv.h b/drivers/dahdi/oct612x/octdeviceapi/oct6100api/oct6100_miscellaneous_priv.h index dba94fd..8d4eca6 100644 --- a/drivers/dahdi/oct612x/octdeviceapi/oct6100api/oct6100_miscellaneous_priv.h +++ b/drivers/dahdi/oct612x/octdeviceapi/oct6100api/oct6100_miscellaneous_priv.h @@ -231,67 +231,34 @@ IN f_pulConfigDword Pointer to the content stored in the API located at the \*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ #define mOCT6100_RETRIEVE_NLP_CONF_DWORD( f_pApiInst, f_pChanEntry, f_ulAddress, f_pulConfigDword, f_ulResult ) \ -{ \ - UINT32 _ulFirstEmptyIndex = 0xFFFFFFFF; \ - UINT32 _i; \ - \ - f_ulResult = cOCT6100_ERR_FATAL_8E; \ - (*f_pulConfigDword) = cOCT6100_INVALID_VALUE; \ - \ - /* Search for the Dword.*/ \ - for ( _i = 0; _i < cOCT6100_MAX_NLP_CONF_DWORD; _i++ ) \ - { \ - if ( ( _ulFirstEmptyIndex == 0xFFFFFFFF ) && ( f_pChanEntry->aulNlpConfDword[ _i ][ 0 ] == 0x0 ) ) \ - _ulFirstEmptyIndex = _i; \ - \ - if ( f_pChanEntry->aulNlpConfDword[ _i ][ 0 ] == f_ulAddress ) \ - { \ - /* We found the matching Dword.*/ \ - (*f_pulConfigDword) = f_pChanEntry->aulNlpConfDword[ _i ][ 1 ]; \ - f_ulResult = cOCT6100_ERR_OK; \ - } \ - } \ - \ - if ( ( _i == cOCT6100_MAX_NLP_CONF_DWORD ) && ( _ulFirstEmptyIndex == 0xFFFFFFFF ) ) \ - { \ - /* Nothing to do here, a fatal error occured, no memory was left. */ \ - } \ - else \ - { \ - if ( f_ulResult != cOCT6100_ERR_OK ) \ - { \ - tOCT6100_READ_PARAMS _ReadParams; \ - UINT16 _usReadData; \ - \ - /* We did not found any entry, let's create a new entry.*/ \ - f_pChanEntry->aulNlpConfDword[ _ulFirstEmptyIndex ][ 0 ] = f_ulAddress; \ - \ - _ReadParams.pProcessContext = f_pApiInst->pProcessContext; \ - mOCT6100_ASSIGN_USER_READ_WRITE_OBJ( f_pApiInst, _ReadParams ); \ - _ReadParams.ulUserChipId = f_pApiInst->pSharedInfo->ChipConfig.ulUserChipId; \ - _ReadParams.pusReadData = &_usReadData; \ - \ - /* Read the first 16 bits.*/ \ - _ReadParams.ulReadAddress = f_ulAddress; \ - mOCT6100_DRIVER_READ_API( _ReadParams, f_ulResult ); \ - if ( f_ulResult == cOCT6100_ERR_OK ) \ - { \ - /* Save data.*/ \ - (*f_pulConfigDword) = _usReadData << 16; \ - \ - /* Read the last 16 bits .*/ \ - _ReadParams.ulReadAddress += 2; \ - mOCT6100_DRIVER_READ_API( _ReadParams, f_ulResult ); \ - if ( f_ulResult == cOCT6100_ERR_OK ) \ - { \ - /* Save data.*/ \ - (*f_pulConfigDword) |= _usReadData; \ - f_ulResult = cOCT6100_ERR_OK; \ - } \ - } \ - } \ - } \ -} +{ \ + tOCT6100_READ_PARAMS _ReadParams; \ + UINT16 _usReadData; \ + f_ulResult = cOCT6100_ERR_FATAL_8E; \ + (*f_pulConfigDword) = cOCT6100_INVALID_VALUE; \ + \ + _ReadParams.pProcessContext = f_pApiInst->pProcessContext; \ + mOCT6100_ASSIGN_USER_READ_WRITE_OBJ(f_pApiInst, _ReadParams); \ + _ReadParams.ulUserChipId = f_pApiInst->pSharedInfo->ChipConfig.ulUserChipId; \ + _ReadParams.pusReadData = &_usReadData; \ + \ + /* Read the first 16 bits.*/ \ + _ReadParams.ulReadAddress = f_ulAddress; \ + mOCT6100_DRIVER_READ_API(_ReadParams, f_ulResult); \ + if (f_ulResult == cOCT6100_ERR_OK) { \ + /* Save data.*/ \ + (*f_pulConfigDword) = _usReadData << 16; \ + \ + /* Read the last 16 bits .*/ \ + _ReadParams.ulReadAddress += 2; \ + mOCT6100_DRIVER_READ_API(_ReadParams, f_ulResult); \ + if (f_ulResult == cOCT6100_ERR_OK) { \ + /* Save data.*/ \ + (*f_pulConfigDword) |= _usReadData; \ + f_ulResult = cOCT6100_ERR_OK; \ + } \ + } \ +} \ /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ @@ -314,59 +281,25 @@ IN f_pulConfigDword content to be stored in the API located at the \*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ #define mOCT6100_SAVE_NLP_CONF_DWORD( f_pApiInst, f_pChanEntry, f_ulAddress, f_ulConfigDword, f_ulResult ) \ -{ \ - UINT32 _i; \ - UINT32 _ulLastValue = 0x0; \ - \ - /* Search for the Dword.*/ \ - for ( _i = 0; _i < cOCT6100_MAX_NLP_CONF_DWORD; _i++ ) \ - { \ - if ( f_pChanEntry->aulNlpConfDword[ _i ][ 0 ] == f_ulAddress ) \ - { \ - /* We found the matching Dword.*/ \ - _ulLastValue = f_pChanEntry->aulNlpConfDword[ _i ][ 1 ]; \ - f_pChanEntry->aulNlpConfDword[ _i ][ 1 ] = f_ulConfigDword; \ - break; \ - } \ - } \ - \ - if ( _i == cOCT6100_MAX_NLP_CONF_DWORD ) \ - { \ - f_ulResult = cOCT6100_ERR_FATAL_8F; \ - } \ - else \ - { \ - /* Write the config DWORD. */ \ - tOCT6100_WRITE_PARAMS _WriteParams; \ - \ - _WriteParams.pProcessContext = f_pApiInst->pProcessContext; \ - mOCT6100_ASSIGN_USER_READ_WRITE_OBJ( f_pApiInst, _WriteParams ) \ - _WriteParams.ulUserChipId = f_pApiInst->pSharedInfo->ChipConfig.ulUserChipId; \ - \ - /* Check if it is worth calling the user function. */ \ - if ( ( f_ulConfigDword & 0xFFFF0000 ) != ( _ulLastValue & 0xFFFF0000 ) ) \ - { \ - /* Write the first 16 bits. */ \ - _WriteParams.ulWriteAddress = f_ulAddress; \ - _WriteParams.usWriteData = (UINT16)((f_ulConfigDword >> 16) & 0xFFFF); \ - mOCT6100_DRIVER_WRITE_API( _WriteParams, f_ulResult ); \ - } \ - else \ - { \ - f_ulResult = cOCT6100_ERR_OK; \ - } \ - \ - if ( f_ulResult == cOCT6100_ERR_OK ) \ - { \ - if ( ( f_ulConfigDword & 0x0000FFFF ) != ( _ulLastValue & 0x0000FFFF ) ) \ - { \ - /* Write the last word. */ \ - _WriteParams.ulWriteAddress = f_ulAddress + 2; \ - _WriteParams.usWriteData = (UINT16)(f_ulConfigDword & 0xFFFF); \ - mOCT6100_DRIVER_WRITE_API( _WriteParams, f_ulResult ); \ - } \ - } \ - } \ +{ \ + /* Write the config DWORD. */ \ + tOCT6100_WRITE_PARAMS _WriteParams; \ + \ + _WriteParams.pProcessContext = f_pApiInst->pProcessContext; \ + mOCT6100_ASSIGN_USER_READ_WRITE_OBJ(f_pApiInst, _WriteParams) \ + _WriteParams.ulUserChipId = f_pApiInst->pSharedInfo->ChipConfig.ulUserChipId; \ + \ + /* Write the first 16 bits. */ \ + _WriteParams.ulWriteAddress = f_ulAddress; \ + _WriteParams.usWriteData = (UINT16)((f_ulConfigDword >> 16) & 0xFFFF); \ + mOCT6100_DRIVER_WRITE_API(_WriteParams, f_ulResult); \ + \ + if (f_ulResult == cOCT6100_ERR_OK) { \ + /* Write the last word. */ \ + _WriteParams.ulWriteAddress = f_ulAddress + 2; \ + _WriteParams.usWriteData = (UINT16)(f_ulConfigDword & 0xFFFF); \ + mOCT6100_DRIVER_WRITE_API(_WriteParams, f_ulResult); \ + } \ } diff --git a/drivers/dahdi/wct4xxp/vpm450m.c b/drivers/dahdi/wct4xxp/vpm450m.c index e04922e..a6931fb 100644 --- a/drivers/dahdi/wct4xxp/vpm450m.c +++ b/drivers/dahdi/wct4xxp/vpm450m.c @@ -172,7 +172,7 @@ UINT32 Oct6100UserDriverReadBurstApi(tPOCT6100_READ_BURST_PARAMS f_pBurstParams) struct vpm450m { tPOCT6100_INSTANCE_API pApiInstance; - UINT32 aulEchoChanHndl[ 128 ]; + UINT32 aulEchoChanHndl[128]; int chanflags[128]; int ecmode[128]; int numchans; @@ -237,7 +237,7 @@ static void vpm450m_setecmode(struct vpm450m *vpm450m, int channel, int mode) modify->ulChannelHndl = vpm450m->aulEchoChanHndl[channel]; ulResult = Oct6100ChannelModify(vpm450m->pApiInstance, modify); if (ulResult != GENERIC_OK) { - printk(KERN_NOTICE "Failed to apply echo can changes on channel %d!\n", channel); + printk(KERN_NOTICE "Failed to apply echo can changes on channel %d %08x!\n", channel, ulResult); } else { #ifdef OCTASIC_DEBUG printk(KERN_DEBUG "Echo can on channel %d set to %d\n", channel, mode); @@ -449,7 +449,7 @@ struct vpm450m *init_vpm450m(void *wc, int *isalaw, int numspans, const struct f memset(ChannelOpen, 0, sizeof(tOCT6100_CHANNEL_OPEN)); - for (x=0;x<128;x++) + for (x = 0; x < ARRAY_SIZE(vpm450m->ecmode); x++) vpm450m->ecmode[x] = -1; vpm450m->numchans = numspans * 32; @@ -474,6 +474,12 @@ struct vpm450m *init_vpm450m(void *wc, int *isalaw, int numspans, const struct f ChipOpen->ulMaxTdmStreams = 4; ChipOpen->aulTdmStreamFreqs[0] = cOCT6100_TDM_STREAM_FREQ_8MHZ; ChipOpen->ulTdmSampling = cOCT6100_TDM_SAMPLE_AT_FALLING_EDGE; + ChipOpen->ulMaxFlexibleConfParticipants = 0; + ChipOpen->ulMaxConfBridges = 0; + ChipOpen->ulMaxRemoteDebugSessions = 0; + ChipOpen->fEnableChannelRecording = FALSE; + ChipOpen->ulSoftToneEventsBufSize = 64; + #if 0 ChipOpen->fEnableAcousticEcho = TRUE; #endif @@ -487,7 +493,6 @@ struct vpm450m *init_vpm450m(void *wc, int *isalaw, int numspans, const struct f return NULL; } - vpm450m->pApiInstance = vmalloc(InstanceSize.ulApiInstanceSize); if (!vpm450m->pApiInstance) { printk(KERN_NOTICE "Out of memory (can't allocate %d bytes)!\n", InstanceSize.ulApiInstanceSize); @@ -517,7 +522,7 @@ struct vpm450m *init_vpm450m(void *wc, int *isalaw, int numspans, const struct f kfree(ChannelOpen); return NULL; } - for (x=0;x<128;x++) { + for (x = 0; x < ARRAY_SIZE(vpm450m->aulEchoChanHndl); x++) { /* execute this loop always on 4 span cards but * on 2 span cards only execute for the channels related to our spans */ if (( numspans > 2) || ((x & 0x03) <2)) { @@ -554,8 +559,9 @@ struct vpm450m *init_vpm450m(void *wc, int *isalaw, int numspans, const struct f ulResult = Oct6100ChannelOpen(vpm450m->pApiInstance, ChannelOpen); if (ulResult != GENERIC_OK) { printk(KERN_NOTICE "Failed to open channel %d!\n", x); + continue; } - for (y=0;y<sizeof(tones) / sizeof(tones[0]); y++) { + for (y = 0; y < ARRAY_SIZE(tones); y++) { tOCT6100_TONE_DETECTION_ENABLE enable; Oct6100ToneDetectionEnableDef(&enable); enable.ulChannelHndl = vpm450m->aulEchoChanHndl[x]; |