blob: fbb575f149651b4b6b48ae238a6ce79027f37c70 [file] [log] [blame]
/*******************************************************************************
Copyright (C) Marvell International Ltd. and its affiliates
This software file (the "File") is owned and distributed by Marvell
International Ltd. and/or its affiliates ("Marvell") under the following
alternative licensing terms. Once you have made an election to distribute the
File under one of the following license alternatives, please (i) delete this
introductory statement regarding license alternatives, (ii) delete the two
license alternatives that you have not elected to use and (iii) preserve the
Marvell copyright notice above.
********************************************************************************
Marvell Commercial License Option
If you received this File from Marvell and you have entered into a commercial
license agreement (a "Commercial License") with Marvell, the File is licensed
to you under the terms of the applicable Commercial License.
********************************************************************************
Marvell GPL License Option
If you received this File from Marvell, you may opt to use, redistribute and/or
modify this File in accordance with the terms and conditions of the General
Public License Version 2, June 1991 (the "GPL License"), a copy of which is
available along with the File in the license.txt file or by writing to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
DISCLAIMED. The GPL License provides additional details about this warranty
disclaimer.
********************************************************************************
Marvell BSD License Option
If you received this File from Marvell, you may opt to use, redistribute and/or
modify this File under the following licensing terms.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Marvell nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************/
/* Include Files
------------------------------------------------------------------------------*/
#include "mvTypes.h"
#include "mvOs.h"
#include "mvPonOnuDefines.h"
#include "mvPonOnuRegs.h"
#include "mvPonOnuMac.h"
/******************************************************************************/
/******************************************************************************/
/* ========================================================================== */
/* ========================================================================== */
/* == == */
/* == ========= ========= ========= === == == */
/* == ========= ========= ========= ==== == == */
/* == == == == == == == == == == */
/* == == == == == == == == == == */
/* == ========= ========= == == == == == == */
/* == ========= ========= == == == == == == */
/* == == == == == == == == == == */
/* == == == == == == == ==== == */
/* == ========= == ========= == === == */
/* == ========= == ========= == == == */
/* == == */
/* ========================================================================== */
/* ========================================================================== */
/******************************************************************************/
/******************************************************************************/
/* Local Constant
------------------------------------------------------------------------------*/
#define __FILE_DESC__ "mv_hal/pon/mvPonOnuMac.c"
/* Global Variables
------------------------------------------------------------------------------*/
/* Local Variables
------------------------------------------------------------------------------*/
MV_U32 onuGponPortAesStatusImage[GPON_ONU_MAX_GEM_PORTS/32];
MV_BOOL onuGponPortValidStatusImage[GPON_ONU_MAX_GEM_PORTS/32];
S_MacTxPloamPm mvOnuGponMacPloamCnt;
S_MacFifoCtrl fifoCtrl;
MV_U32 fifoReadIdx = 0;
MV_U32 fifoWriteIdx = 0;
MV_32 fifoAuditEnter = 0;
MV_32 fifoAuditAction = 0;
MV_32 fifoMacMsgSend = 0;
MV_32 fifoMacMsgAdd = 0;
MV_32 fifoMacMsgFree = 0;
MV_32 fifoMacPloamSend = 0;
MV_32 fifoSupported = 1;
/* Export Functions
------------------------------------------------------------------------------*/
/* Local Functions
------------------------------------------------------------------------------*/
static inline MV_STATUS mvOnuGponMacFifoMsgAlloc(MV_U32 **buffer, MV_U32 *bufferIndex);
static inline void mvOnuGponMacFifoMsgSend(MV_U32 bufferIndex);
static inline MV_STATUS mvOnuGponMacFifoMsgRece(MV_U32 **buffer, MV_U32 *bufferIndex);
static inline void mvOnuGponMacFifoMsgFree(MV_U32 bufferIndex);
static inline int mvOnuGponMacFifoEmpty(void);
/******************************************************************************/
/* ========================================================================== */
/* RX Low Level Routines */
/* ========================================================================== */
/******************************************************************************/
/*******************************************************************************
**
** mvOnuGponMacVersionGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the asic version
**
** PARAMETERS: None
**
** OUTPUTS: None
**
** RETURNS: asic version
**
*******************************************************************************/
MV_STATUS mvOnuGponMacVersionGet(MV_U32 *version)
{
MV_STATUS rcode;
rcode = asicOntGlbRegRead(mvAsicReg_GPON_GEN_MAC_VERSION, version, 0);
return(rcode);
}
/*******************************************************************************
**
** mvOnuGponMacRxConfigSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set Rx config enable register
**
** PARAMETERS: MV_BOOL enable
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxConfigSet(MV_BOOL enable)
{
MV_STATUS status;
MV_U32 enBit;
enBit = (enable == MV_TRUE) ? 1 : 0;
status = asicOntGlbRegWrite(mvAsicReg_GPON_RX_CONFIG_EN, enBit, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRxConfigBitOrderSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set Rx config bit order register
**
** PARAMETERS: MV_BOOL enable
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxConfigBitOrderSet(MV_U32 value)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_RX_CONFIG_BIT_ORDER, value, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRxPsaConfigSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set Rx PSA config register
**
** PARAMETERS: MV_U32 syncFsmM1
** MV_U32 syncFsmM2
** MV_U32 syncFsmM3
** MV_U32 fecHyst
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxPsaConfigSet(MV_U32 syncFsmM1,
MV_U32 syncFsmM2,
MV_U32 syncFsmM3,
MV_U32 fecHyst)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_RX_PSA_CONFIG_SFM1, syncFsmM1, 0);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_RX_PSA_CONFIG_SFM2, syncFsmM2, 0);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_RX_PSA_CONFIG_SFM3, syncFsmM3, 0);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_RX_PSA_CONFIG_FHM1, fecHyst, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRxFecHysteresisSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set Rx PSA FEC Hysteresis config register
**
** PARAMETERS: MV_U32 fecHyst
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxFecHysteresisSet(MV_U32 fecHyst)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_RX_PSA_CONFIG_FHM1, fecHyst, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRxFecConfigSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set Rx FEC config register
**
** PARAMETERS: MV_BOOL swIndication
** MV_BOOL forceSw
** MV_BOOL ignoreParity
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxFecConfigSet(MV_BOOL swIndication,
MV_BOOL forceSw,
MV_BOOL ignoreParity)
{
MV_STATUS status;
MV_U32 swiBit;
MV_U32 fswBit;
MV_U32 ipaBit;
swiBit = (swIndication == MV_TRUE) ? 1 : 0;
status = asicOntGlbRegWrite(mvAsicReg_GPON_RX_FEC_CONFIG_SWVAL, swiBit, 0);
fswBit = (forceSw == MV_TRUE) ? 1 : 0;
status |= asicOntGlbRegWrite(mvAsicReg_GPON_RX_FEC_CONFIG_FSW, fswBit, 0);
ipaBit = (ignoreParity == MV_TRUE) ? 1 : 0;
status |= asicOntGlbRegWrite(mvAsicReg_GPON_RX_FEC_CONFIG_IGNP, ipaBit, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRxFecStatusGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function get Rx FEC Ind register
**
** PARAMETERS: MV_U32 *fecStatus
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxFecStatusGet(MV_U32 *fecStatus)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_FEC_CONFIG_IND, fecStatus, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRxPloamDataGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return Rx Ploam data
**
** PARAMETERS: MV_U32 *ploamData
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxPloamDataGet(MV_U32 *ploamData)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_PLOAMD_DATA_READ, ploamData, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRxPloamDataUsedGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the Rx ploam fifo size
**
** PARAMETERS: MV_U32 *ploamFifoSize
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxPloamDataUsedGet(MV_U32 *ploamFifoSize)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_PLOAMD_DATA_USED, ploamFifoSize, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRxPlenConfigSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set Rx Plen config register
**
** PARAMETERS: MV_BOOL forceNum
** MV_BOOL useForce
** MV_BOOL ignDiff
** MV_BOOL notFix
** MV_BOOL ignCrc
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxPlenConfigSet(MV_BOOL forceNum,
MV_BOOL useForce,
MV_BOOL ignDiff,
MV_BOOL notFix,
MV_BOOL ignCrc)
{
MV_STATUS status;
MV_U32 fnBit;
MV_U32 ufBit;
MV_U32 idBit;
MV_U32 nfBit;
MV_U32 icBit;
fnBit = (forceNum == MV_TRUE) ? 1 : 0;
status = asicOntGlbRegWrite(mvAsicReg_GPON_RX_PLEND_CONFIG_FN, fnBit, 0);
ufBit = (useForce == MV_TRUE) ? 1 : 0;
status |= asicOntGlbRegWrite(mvAsicReg_GPON_RX_PLEND_CONFIG_UF, ufBit, 0);
idBit = (ignDiff == MV_TRUE) ? 1 : 0;
status |= asicOntGlbRegWrite(mvAsicReg_GPON_RX_PLEND_CONFIG_IGND, idBit, 0);
nfBit = (notFix == MV_TRUE) ? 1 : 0;
status |= asicOntGlbRegWrite(mvAsicReg_GPON_RX_PLEND_CONFIG_DFIX, nfBit, 0);
icBit = (ignCrc == MV_TRUE) ? 1 : 0;
status |= asicOntGlbRegWrite(mvAsicReg_GPON_RX_PLEND_CONFIG_IGNC, icBit, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRxPlenConfigSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set Rx Ploam config register
**
** PARAMETERS: MV_BOOL ignCrc
** MV_BOOL ignBrd
** MV_BOOL fwdAll
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxPloamConfigSet(MV_BOOL ignCrc,
MV_BOOL ignBrd,
MV_BOOL fwdAll)
{
MV_STATUS status;
MV_U32 icBit;
MV_U32 igBit;
MV_U32 faBit;
icBit = (ignCrc == MV_TRUE) ? 1 : 0;
status = asicOntGlbRegWrite(mvAsicReg_GPON_RX_PLOAMD_CONFIG_IGNC, icBit, 0);
igBit = (ignBrd == MV_TRUE) ? 1 : 0;
status |= asicOntGlbRegWrite(mvAsicReg_GPON_RX_PLOAMD_CONFIG_IGNB, igBit, 0);
faBit = (fwdAll == MV_TRUE) ? 1 : 0;
status |= asicOntGlbRegWrite(mvAsicReg_GPON_RX_PLOAMD_CONFIG_FALL, faBit, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRxBwMapConfigSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set Rx BW Map config register
**
** PARAMETERS: MV_U32 minSaDelta
** MV_BOOL notCrcFix
** MV_BOOL ignCrc
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxBwMapConfigSet(MV_U32 minSaDelta,
MV_BOOL notCrcFix,
MV_BOOL ignCrc)
{
MV_STATUS status;
MV_U32 ncfBit;
MV_U32 icBit;
status = asicOntGlbRegWrite(mvAsicReg_GPON_RX_BWMAP_CONFIG_MSD, minSaDelta, 0);
ncfBit = (notCrcFix == MV_TRUE) ? 1 : 0;
status |= asicOntGlbRegWrite(mvAsicReg_GPON_RX_BWMAP_CONFIG_DFIX, ncfBit, 0);
icBit = (ignCrc == MV_TRUE) ? 1 : 0;
status |= asicOntGlbRegWrite(mvAsicReg_GPON_RX_BWMAP_CONFIG_IGNC, icBit, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRxBwMapSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the onu Tx bw map table
**
** PARAMETERS: MV_U32 entry
** MV_U32 allocId
** MV_U32 tcontCnt
** MV_BOOL enable
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxBwMapSet(MV_U32 entry,
MV_U32 allocId,
MV_U32 tcontCnt,
MV_BOOL enable)
{
MV_STATUS status;
MV_U32 enableVal;
enableVal = (enable == MV_TRUE) ? 1 : 0;
status = asicOntGlbRegWrite(mvAsicReg_GPON_RX_BW_MAP_TCN, tcontCnt, entry);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_RX_BW_MAP_EN, enableVal, entry);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_RX_BW_MAP_ALID, allocId, entry);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRxBwMapGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the onu Tx bw translation table
**
** PARAMETERS: MV_U32 entry,
** MV_U32 *allocId,
** MV_U32 *enable,
** MV_U32 *tcontCnt
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxBwMapGet(MV_U32 entry,
MV_U32 *allocId,
MV_BOOL *enable,
MV_U32 *tcontCnt)
{
MV_STATUS status;
MV_U32 enableVal;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_BW_MAP_TCN, tcontCnt, entry);
status |= asicOntGlbRegRead(mvAsicReg_GPON_RX_BW_MAP_EN, &enableVal, entry);
*enable = (enableVal == 0) ? MV_FALSE : MV_TRUE;
status |= asicOntGlbRegRead(mvAsicReg_GPON_RX_BW_MAP_ALID, allocId, entry);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRxEqualizationDelaySet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the onu equalization delay
**
** PARAMETERS: MV_U32 delay
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxEqualizationDelaySet(MV_U32 delay)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_RX_EQULIZATION_DELAY, delay, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRxEqualizationDelayGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the onu equalization delay
**
** PARAMETERS: MV_U32 *delay
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxEqualizationDelayGet(MV_U32 *delay)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_EQULIZATION_DELAY, delay, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRxInternalDelaySet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the onu const delay
**
** PARAMETERS: MV_U32 txConstDelay
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxInternalDelaySet(MV_U32 delay)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_RX_INTERNAL_DELAY, delay, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRxInternalDelayGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the onu const delay
**
** PARAMETERS: MV_U32 *txConstDelay
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxInternalDelayGet(MV_U32 *delay)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_INTERNAL_DELAY, delay, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRxSuperFrameCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function reads Super Frame Counter
**
** PARAMETERS: MV_U32 *counter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxSuperFrameCounterGet(MV_U32 *counter)
{
return(asicOntGlbRegRead(mvAsicReg_GPON_RX_SFRAME_COUNTER, counter, 0));
}
/*******************************************************************************
**
** mvOnuGponMacRxSuperFrameCounterSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function sets Super Frame Counter
**
** PARAMETERS: MV_U32 counter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxSuperFrameCounterSet(MV_U32 counter)
{
return(asicOntGlbRegWrite(mvAsicReg_GPON_RX_SFRAME_COUNTER, counter, 0));
}
/******************************************************************************/
/* ========================================================================== */
/* TX Low Level Routines */
/* ========================================================================== */
/******************************************************************************/
/*******************************************************************************
**
** mvOnuGponMacTxDelimiterSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the Tx delimiter
**
** PARAMETERS: MV_U32 delimiterPattern
** MV_U32 delimiterSize
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxDelimiterSet(MV_U32 delimiterPattern, MV_U32 delimiterSize)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_TX_DELIMITER_PAT, delimiterPattern, 0);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_TX_DELIMITER_SIZE, delimiterSize, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxDelimiterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the Tx delimiter
**
** PARAMETERS: MV_U32 *pattern
** MV_U32 *size
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxDelimiterGet(MV_U32 *pattern, MV_U32 *size)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_TX_DELIMITER_PAT, pattern, 0);
status |= asicOntGlbRegRead(mvAsicReg_GPON_TX_DELIMITER_SIZE, size, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxPloamDataFifoSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the Tx ploam data fifo - one entry
**
** PARAMETERS: MV_U32 txPloamData
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxPloamDataFifoSet(MV_U32 txPloamData)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_TX_PLOAM_DATA_WRITE, txPloamData, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxPloamDataFreeGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the Tx ploam data fifo size
**
** PARAMETERS: MV_U32 *ploamFifoSize
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxPloamDataFreeGet(MV_U32 *ploamFifoSize)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_TX_PLOAM_DATA_WRITE_FREE, ploamFifoSize, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacBurstEnParamSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the burst enable parameters
**
** PARAMETERS: MV_U32 mask
** MV_U32 polarity
** MV_U32 delay
** MV_U32 enStop
** MV_U32 enStart
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxBurstEnParamSet(MV_U32 mask,
MV_U32 polarity,
MV_U32 delay,
MV_U32 enStop,
MV_U32 enStart)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_TX_BURST_EN_PARAM_STR, enStart, 0);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_TX_BURST_EN_PARAM_STP, enStop, 0);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_TX_BURST_EN_PARAM_DLY, delay, 0);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_TX_BURST_EN_PARAM_P, polarity, 0);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_TX_BURST_EN_PARAM_MASK, mask, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxBurstEnPolaritySet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the burst enable polarity
**
** PARAMETERS: MV_U32 polarity
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxBurstEnPolaritySet(MV_U32 polarity)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_TX_BURST_EN_PARAM_P, polarity, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxBurstEnParamGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the burst enable parameters
**
** PARAMETERS: MV_U32 *mask
** MV_U32 *polarity
** MV_U32 *delay
** MV_U32 *enStop
** MV_U32 *enStart
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxBurstEnParamGet(MV_U32 *mask,
MV_U32 *polarity,
MV_U32 *order,
MV_U32 *enStop,
MV_U32 *enStart)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_TX_BURST_EN_PARAM_STR, enStart, 0);
status |= asicOntGlbRegRead(mvAsicReg_GPON_TX_BURST_EN_PARAM_STP, enStop, 0);
status |= asicOntGlbRegRead(mvAsicReg_GPON_TX_BURST_EN_PARAM_DLY, order, 0);
status |= asicOntGlbRegRead(mvAsicReg_GPON_TX_BURST_EN_PARAM_P, polarity, 0);
status |= asicOntGlbRegRead(mvAsicReg_GPON_TX_BURST_EN_PARAM_MASK, mask, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxFinalDelaySet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the Tx final delay
**
** PARAMETERS: MV_U32 txFinalDelay
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxFinalDelaySet(MV_U32 txFinalDelay)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_TX_FDELAY, txFinalDelay, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxFinalDelayGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the Tx final delay
**
** PARAMETERS: MV_U32 *txFinalDelay
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxFinalDelayGet(MV_U32 *txFinalDelay)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_TX_FDELAY, txFinalDelay, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxPreambleSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the Tx preamble type (1,2,3)
**
** PARAMETERS: MV_U32 preamType
** MV_U32 preamCnt
** MV_U32 preamVal
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxPreambleSet(MV_U32 type, MV_U32 pattern, MV_U32 size)
{
MV_STATUS status;
if (type >= 3)
{
return(MV_ERROR);
}
status = asicOntGlbRegWrite(mvAsicReg_GPON_TX_PREAMBLE_PATT, pattern, type);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_TX_PREAMBLE_SIZE, size, type);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxPlsSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the Tx PLS
**
** PARAMETERS: MV_U32 pattern
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxPlsSet(MV_U32 pattern)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_TX_PLS_CONSTANT, pattern, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxConstIdleMsgSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the Tx const data ram - one entry
**
** PARAMETERS: MV_U32 onuId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxConstIdleMsgSet(MV_U32 onuId)
{
MV_STATUS status;
MV_U32 dataWord;
dataWord = ((onuId & 0xFF) << 24) | (ONU_GPON_US_MSG_NO_MESSAGE << 16);
status = asicOntGlbRegWrite(mvAsicReg_GPON_TX_CONST_DATA_RAM_IDLE, dataWord, 0);
dataWord = 0;
status |= asicOntGlbRegWrite(mvAsicReg_GPON_TX_CONST_DATA_RAM_IDLE, dataWord, 1);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_TX_CONST_DATA_RAM_IDLE, dataWord, 2);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxConstIdleMsgSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the Tx const data ram - one entry
**
** PARAMETERS: MV_U32 onuId
** MV_U8 *serialNumber
** MV_U32 randomDelay
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxConstSerialNumberMsgSet(MV_U32 onuId,
MV_U8 *serialNumber,
MV_U32 randomDelay)
{
MV_STATUS status;
MV_U32 dataWord;
dataWord = ((onuId & 0xFF) << 24) | (ONU_GPON_US_MSG_SN_ONU << 16) |
(((MV_U32)(serialNumber[0])) << 8) | (MV_U32)(serialNumber[1]);
status = asicOntGlbRegWrite(mvAsicReg_GPON_TX_CONST_DATA_RAM_SN, dataWord, 0);
dataWord = (((MV_U32)(serialNumber[2])) << 24) | (((MV_U32)(serialNumber[3])) << 16) |
(((MV_U32)(serialNumber[4])) << 8) | (MV_U32)(serialNumber[5]);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_TX_CONST_DATA_RAM_SN, dataWord, 1);
dataWord = (((MV_U32)(serialNumber[6])) << 24) | (((MV_U32)(serialNumber[7])) << 16) |
(((randomDelay >> 4) & 0xFF) << 8) | ((randomDelay & 0xF) << 4 | 5);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_TX_CONST_DATA_RAM_SN, dataWord, 2);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxDbrBlockSizeSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the Tx DBR Block size
**
** PARAMETERS: MV_U32 blockSize
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxDbrBlockSizeSet(MV_U32 blockSize)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_TX_DBR_REPORT_BLOCK_IDX, blockSize, 0);
return(status);
}
/******************************************************************************/
/* ========================================================================== */
/* General Low Level Routines */
/* ========================================================================== */
/******************************************************************************/
/*******************************************************************************
**
** mvOnuGponMacOnuIdSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the ONU ID
**
** PARAMETERS: MV_U32 onuId
** MV_BOOL valid
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacOnuIdSet(MV_U32 onuId, MV_BOOL valid)
{
MV_STATUS status;
MV_U32 validBit;
status = asicOntGlbRegWrite(mvAsicReg_GPON_ONU_ID_OID, onuId, 0);
validBit = (valid == MV_TRUE) ? 1 : 0;
status |= asicOntGlbRegWrite(mvAsicReg_GPON_ONU_ID_V, validBit, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacOnuStateSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the onu state
**
** PARAMETERS: MV_U32 onuState
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacOnuStateSet(MV_U32 onuState)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_ONU_STATE, onuState, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacSerialNumberSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set 2 bytes of Serial Number
** it is for ASIC random value creation - so the 2 last bytes
** should be put here
**
** PARAMETERS: MV_U32 serialNum
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacSerialNumberSet(MV_U32 serialNum)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_TX_SERIAL_NUMBER, serialNum, 0);
return(status);
}
/******************************************************************************/
/* ========================================================================== */
/* Gem Low Level Routines */
/* ========================================================================== */
/******************************************************************************/
/*******************************************************************************
**
** mvOnuGponMacGemPayloadLenSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the max gem payload length
**
** PARAMETERS: MV_U32 payloadlen
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemPayloadLenSet(MV_U32 payloadlen)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_GEM_CONFIG_PLI, payloadlen, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemPayloadLenGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the max gem payload length
**
** PARAMETERS: MV_U32 *payloadlen
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemPayloadLenGet(MV_U32 *payloadlen)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_CONFIG_PLI, payloadlen, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemEthFrameLenSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the max / min ethernet frame length
**
** PARAMETERS: MV_U32 maxFrameLen
** MV_U32 minFrameLen
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemEthFrameLenSet(MV_U32 maxFrameLen, MV_U32 minFrameLen)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_GEM_CONFIG_ETH_FRAME_LEN_MAX, maxFrameLen, 0);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_GEM_CONFIG_ETH_FRAME_LEN_MIN, minFrameLen, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemEthFrameLenGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the max / min ethernet frame length
**
** PARAMETERS: MV_U32 maxFrameLen
** MV_U32 minFrameLen
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemEthFrameLenGet(MV_U32 *maxFrameLen, MV_U32 *minFrameLen)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_CONFIG_ETH_FRAME_LEN_MAX, maxFrameLen, 0);
status |= asicOntGlbRegRead(mvAsicReg_GPON_GEM_CONFIG_ETH_FRAME_LEN_MIN, minFrameLen, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemOmciFrameLenSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the max / min omci frame length
**
** PARAMETERS: MV_U32 maxFrameLen
** MV_U32 minFrameLen
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemOmciFrameLenSet(MV_U32 maxFrameLen, MV_U32 minFrameLen)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_GEM_CONFIG_OMCI_FRAME_LEN_MAX, maxFrameLen, 0);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_GEM_CONFIG_OMCI_FRAME_LEN_MIN, minFrameLen, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemOmciFrameLenGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the max / min omci frame length
**
** PARAMETERS: MV_U32 maxFrameLen
** MV_U32 minFrameLen
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemOmciFrameLenGet(MV_U32 *maxFrameLen, MV_U32 *minFrameLen)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_CONFIG_OMCI_FRAME_LEN_MAX, maxFrameLen, 0);
status |= asicOntGlbRegRead(mvAsicReg_GPON_GEM_CONFIG_OMCI_FRAME_LEN_MIN, minFrameLen, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemOmciPortIdSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the omci port Id
**
** PARAMETERS: MV_U32 portId
** MV_U32 valid
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemOmciPortIdSet(MV_U32 portId, MV_U32 valid)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_GEM_CONFIG_OMCI_PORT_ID, portId, 0);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_GEM_CONFIG_OMCI_PORT_VALID, valid, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemOmciPortIdGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the omci port Id
**
** PARAMETERS: MV_U32 portId
** MV_U32 valid
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemOmciPortIdGet(MV_U32 *portId, MV_U32 *valid)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_CONFIG_OMCI_PORT_ID, portId, 0);
status |= asicOntGlbRegRead(mvAsicReg_GPON_GEM_CONFIG_OMCI_PORT_VALID, valid, 0);
return(status);
}
/******************************************************************************/
/* ========================================================================== */
/* UTM Low Level Routines */
/* ========================================================================== */
/******************************************************************************/
/*******************************************************************************
**
** mvOnuGponMacUtmOmciPortIdSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the omci port Id
**
** PARAMETERS: MV_U32 portId
** MV_U32 valid
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacUtmOmciPortIdSet(MV_U32 portId, MV_U32 valid)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_UTM_CONFIG_OMCI_PORT_ID, portId, 0);
status |= asicOntGlbRegWrite(mvAsicReg_GPON_UTM_CONFIG_OMCI_PORT_VALID, valid, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacUtmOmciPortIdGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the omci port Id
**
** PARAMETERS: MV_U32 *portId
** MV_U32 *valid
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacUtmOmciPortIdGet(MV_U32 *portId, MV_U32 *valid)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_UTM_CONFIG_OMCI_PORT_ID, portId, 0);
status |= asicOntGlbRegRead(mvAsicReg_GPON_UTM_CONFIG_OMCI_PORT_VALID, valid, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacUtmTcPeriodSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the TC period
**
** PARAMETERS: MV_U32 period
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacUtmTcPeriodSet(MV_U32 period)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_UTM_CONFIG_TC_PERIOD, period, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacUtmTcValidSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the TC valid
**
** PARAMETERS: MV_U32 valid
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacUtmTcValidSet(MV_U32 valid)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_UTM_CONFIG_TC_PERIOD_VALID, valid, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacUtmTcConfigGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the TC configuration
**
** PARAMETERS: MV_U32 *period
** MV_U32 *valid
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacUtmTcConfigGet(MV_U32 *period, MV_U32 *valid)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_UTM_CONFIG_TC_PERIOD, period, 0);
status |= asicOntGlbRegRead(mvAsicReg_GPON_UTM_CONFIG_TC_PERIOD_VALID, valid, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacUtmActiveTxBitmapSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the active TX bitmap
**
** PARAMETERS: MV_U32 bitmap
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacUtmActiveTxBitmapSet(MV_U32 bitmap)
{
return(asicOntGlbRegWrite(mvAsicReg_GPON_UTM_ACTIVE_TX_BITMAP, bitmap, 0));
}
/*******************************************************************************
**
** mvOnuGponMacUtmActiveTxBitmapValidSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the active TX bitmap valid
**
** PARAMETERS: MV_U32 valid
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacUtmActiveTxBitmapValidSet(MV_U32 valid)
{
return(asicOntGlbRegWrite(mvAsicReg_GPON_UTM_ACTIVE_TX_BITMAP_VALID, valid, 0));
}
/*******************************************************************************
**
** mvOnuGponMacUtmActiveTxBitmapConfigGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the active TX bitmap configuration
**
** PARAMETERS: MV_U32 *bitmap
** MV_U32 *valid
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacUtmActiveTxBitmapConfigGet(MV_U32 *bitmap, MV_U32 *valid)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_UTM_ACTIVE_TX_BITMAP, bitmap, 0);
status |= asicOntGlbRegRead(mvAsicReg_GPON_UTM_ACTIVE_TX_BITMAP_VALID, valid, 0);
return(status);
}
/******************************************************************************/
/* ========================================================================== */
/* Interrupt Low Level Routines */
/* ========================================================================== */
/******************************************************************************/
/*******************************************************************************
**
** mvOnuGponMacPonInterruptGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the interrupt event
**
** PARAMETERS: MV_U32 *interrupt
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacPonInterruptGet(MV_U32 *interrupt)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_INTERRUPT_PON, interrupt, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacPonInterruptMaskGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the interrupt mask
**
** PARAMETERS: MV_U32 *mask
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacPonInterruptMaskGet(MV_U32 *mask)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_INTERRUPT_PON_MASK, mask, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacPonInterruptMaskSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the interrupt mask
**
** PARAMETERS: MV_U32 *mask
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacPonInterruptMaskSet(MV_U32 mask)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_INTERRUPT_PON_MASK, mask, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacBipStatusValueGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the BIP8 general counter
**
** PARAMETERS: MV_U32 *value
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacBipStatusValueGet(MV_U32 *value)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_BIP_STATUS, value, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacBipInterruptIntervalSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the BIP8 interrupt interval (in frames)
**
** PARAMETERS: MV_U32 interval
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacBipInterruptIntervalSet(MV_U32 interval)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_BIP_INTR_INTERVAL, interval, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacBipStatusValueGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the BIP8 interrupt counter
**
** PARAMETERS: MV_U32 *value
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacBipInterruptStatusValueGet(MV_U32 *value)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_RX_BIP_STATUS_FOR_INTERRUPT, value, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacBipInterruptIntervalSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set ram test configuration
**
** PARAMETERS: MV_U32 interval
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRamTestCfgSet(MV_U32 config)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_RAM_TEST_CONFIG, config, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacRamTestCfgGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return ram test configuration
**
** PARAMETERS: MV_U32 *value
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRamTestCfgGet(MV_U32 *config)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_RAM_TEST_CONFIG, config, 0);
return(status);
}
/******************************************************************************/
/* ========================================================================== */
/* Statistics Low Level Routines */
/* ========================================================================== */
/******************************************************************************/
/* ========================================================================== */
/* GEM Statistics Low Level Routines */
/* ========================================================================== */
/*******************************************************************************
**
** mvOnuGponMacGemRcvdIdleGemFramesCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received idle gem frames counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemRcvdIdleGemFramesCounterGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_STAT_IDLE_GEM_CNT, cntValue, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemRcvdValidGemFramesCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received valid gem frames counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemRcvdValidGemFramesCounterGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_STAT_VALID_GEM_CNT, cntValue, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemRcvdUndefGemFramesCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received undefined gem frames counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemRcvdUndefGemFramesCounterGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_STAT_UNDEF_GEM_CNT, cntValue, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemRcvdOmciFramesCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received omci frames counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemRcvdOmciFramesCounterGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_STAT_VALID_OMCI_CNT, cntValue, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemDropGemFramesCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received dropped gem frames counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemDropGemFramesCounterGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_STAT_DROPPED_GEM_CNT, cntValue, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemDropOmciFramesCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received dropped omci frames counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemDropOmciFramesCounterGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_STAT_DROPPED_OMCI_CNT, cntValue, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemRcvdGemFramesWithUncorrHecErrCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received gem frames with uncorrect hec error counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemRcvdGemFramesWithUncorrHecErrCounterGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_STAT_ERROR_GEM_CNT, cntValue, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemRcvdGemFramesWithOneFixedHecErrCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received gem frames with one fixed hec error counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemRcvdGemFramesWithOneFixedHecErrCounterGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_STAT_ONE_FIXED_HEC_ERR_CNT, cntValue, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemRcvdGemFramesWithTwoFixedHecErrCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received gem frames with two fixed hec error counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemRcvdGemFramesWithTwoFixedHecErrCounterGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_STAT_TWO_FIXED_HEC_ERR_CNT, cntValue, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemRcvdValidGemFramesTotalByteCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received valid gem frames total bytes counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemRcvdValidGemFramesTotalByteCounterGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_STAT_VALID_GEM_PAYLOAD_CNT, cntValue, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemRcvdUndefGemFramesTotalByteCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received undefined gem frames total bytes counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemRcvdUndefGemFramesTotalByteCounterGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_STAT_UNDEF_GEM_PAYLOAD_CNT, cntValue, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemReassembleMemoryFlushCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received gem reassemble memory flush counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemReassembleMemoryFlushCounterGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_STAT_RSMBL_MEM_FLUSH_CNT, cntValue, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemSynchLostCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return gem synch lost counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemSynchLostCounterGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_STAT_LCDGi_CNT, cntValue, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemRcvdEthFramesWithCorrFcsCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received ethernet frames with correct FCS counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemRcvdEthFramesWithCorrFcsCounterGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_STAT_CORR_ETH_FRAME_CNT, cntValue, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemRcvdEthFramesWithFcsErrCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received ethernet frames with FCS error counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemRcvdEthFramesWithFcsErrCounterGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_STAT_ERR_ETH_FRAME_CNT, cntValue, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemRcvdOmciFramesWithCorrCrcCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received omci frames with correct CRC counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemRcvdOmciFramesWithCorrCrcCounterGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_STAT_CORR_OMCI_FRAME_CNT, cntValue, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacGemRcvdOmciFramesWithCrcErrCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received omci frames with CRC error counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemRcvdOmciFramesWithCrcErrCounterGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_GEM_STAT_ERR_OMCI_FRAME_CNT, cntValue, 0);
return(status);
}
/* ========================================================================== */
/* Rx PLOAM Statistics Low Level Routines */
/* ========================================================================== */
/******************************************************************************
**
** mvOnuGponMacRxPloamLostCrcCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return Rx ploam lost crc counter
**
** PARAMETERS: MV_U32 *counter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxPloamLostCrcCounterGet(MV_U32 *counter)
{
MV_STATUS status;
*counter = 0;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_PLOAMD_LOST_CRC_STATUS, counter, 0);
if (status != MV_OK)
{
return(status);
}
return(MV_OK);
}
/*******************************************************************************
**
** mvOnuGponMacRxPloamLostFullCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return Rx ploam lost full counter
**
** PARAMETERS: MV_U32 *counter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxPloamLostFullCounterGet(MV_U32 *counter)
{
MV_STATUS status;
*counter = 0;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_PLOAMD_LOST_FULL_STATUS, counter, 0);
if (status != MV_OK)
{
return(status);
}
return(MV_OK);
}
/*******************************************************************************
**
** mvOnuGponMacRxPloamRcvdIdleCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return Rx ploam received idle counter
**
** PARAMETERS: MV_U32 *counter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxPloamRcvdIdleCounterGet(MV_U32 *counter)
{
MV_STATUS status;
*counter = 0;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_PLOAMD_RCVD_IDLE_STATUS, counter, 0);
if (status != MV_OK)
{
return(status);
}
return(MV_OK);
}
/*******************************************************************************
**
** mvOnuGponMacRxPloamRcvdBroadCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return Rx ploam received broadcast counter
**
** PARAMETERS: MV_U32 *counter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxPloamRcvdBroadCounterGet(MV_U32 *counter)
{
MV_STATUS status;
*counter = 0;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_PLOAMD_RCVD_BROAD_STATUS, counter, 0);
if (status != MV_OK)
{
return(status);
}
return(MV_OK);
}
/*******************************************************************************
**
** mvOnuGponMacRxPloamRcvdOnuIdCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return Rx ploam received Onu Id counter
**
** PARAMETERS: MV_U32 *counter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxPloamRcvdOnuIdCounterGet(MV_U32 *counter)
{
MV_STATUS status;
*counter = 0;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_PLOAMD_RCVD_MYID_STATUS, counter, 0);
if (status != MV_OK)
{
return(status);
}
return(MV_OK);
}
/* ========================================================================== */
/* Tx Statistics Low Level Routines */
/* ========================================================================== */
/*******************************************************************************
**
** mvOnuGponMacTxGemPtiTypeOneFrameCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the num of trans gem frames with pti = 1
**
** PARAMETERS: MV_U32 *counter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxGemPtiTypeOneFrameCounterGet(MV_U32 *counter)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_TX_STAT_GEM_PTI1, counter, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxGemPtiTypeZeroFrameCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the num of trans gem frames with pti = 0
**
** PARAMETERS: MV_U32 *counter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxGemPtiTypeZeroFrameCounterGet(MV_U32 *counter)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_TX_STAT_GEM_PTI0, counter, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxIdleGemFramesCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the num of trans idle gem frames
**
** PARAMETERS: MV_U32 *counter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxIdleGemFramesCounterGet(MV_U32 *counter)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_TX_STAT_GEM_IDLE, counter, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxTxEnableCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the num of cycles with tx enable asserted
**
** PARAMETERS: MV_U32 *counter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxTxEnableCounterGet(MV_U32 *counter)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_TX_STAT_TX_EN_CNT, counter, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxTxEnableCounterThresholdGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return tx enable counter threshold
**
** PARAMETERS: MV_U32 *threshold
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxTxEnableCounterThresholdGet(MV_U32 *threshold)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_TX_CONFIG_EN_THRESHOLD, threshold, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxTxEnableCounterThresholdSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set tx enable counter threshold
**
** PARAMETERS: MV_U32 threshold
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxTxEnableCounterThresholdSet(MV_U32 threshold)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_TX_CONFIG_EN_THRESHOLD, threshold, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxGseTransCounterThresholdGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return GSE threshold for starting forwarding data to
** the TX burst FIFO
**
** PARAMETERS: MV_U32 *threshold
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxGseTransCounterThresholdGet(MV_U32 *threshold)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_TX_GSE_TRANS_THRESHOLD, threshold, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxGseTransCounterThresholdSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set GSE threshold for starting forwarding data to
** the TX burst FIFO
**
** PARAMETERS: MV_U32 threshold
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxGseTransCounterThresholdSet(MV_U32 threshold)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_GPON_TX_GSE_TRANS_THRESHOLD, threshold, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxGseTransConfigAcCouplingSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set GSE Transmit Configuration AC coupling
**
** PARAMETERS: MV_U32 busrtMode - GPON_TX_AC_COUPL_BUST_MODE_0 or
** GPON_TX_AC_COUPL_BUST_MODE_1
** MV_U32 preActiveBurstTime - time from burst to TX pattern2
** MV_U8 dataPattern1 - Pattern1
** MV_U8 dataPattern2 - Pattern2
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxConfigAcCouplingGet(MV_U32 *busrtMode,
MV_U32 *preActiveBurstTime,
MV_U8 *dataPattern1,
MV_U8 *dataPattern2)
{
MV_STATUS status;
MV_U32 reg;
status = asicOntGlbRegRead(mvAsicReg_GPON_TX_CFG_AC_COUPLING, &reg, 0);
if (status == MV_OK) {
*busrtMode = (reg >> 30) & 0x3;
*preActiveBurstTime = (reg >> 16) & 0x3FFF;
*dataPattern2 = (reg >> 8) & 0xFF;
*dataPattern1 = reg & 0xFF;
}
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxGseTransConfigAcCouplingSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set GSE Transmit Configuration AC coupling
**
** PARAMETERS: MV_U32 busrtMode - GPON_TX_AC_COUPL_BUST_MODE_0 or
** GPON_TX_AC_COUPL_BUST_MODE_1
** MV_U32 preActiveBurstTime - time from burst to TX pattern2
** MV_U8 dataPattern1 - Pattern1
** MV_U8 dataPattern2 - Pattern2
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxConfigAcCouplingSet(MV_U32 busrtMode,
MV_U32 preActiveBurstTime,
MV_U8 dataPattern1,
MV_U8 dataPattern2)
{
MV_U32 reg = 0;
if (busrtMode != GPON_TX_AC_COUPL_BUST_MODE_0)
reg = 1 << 30;
reg |= (preActiveBurstTime & 0x3FFF) << 16;
reg |= dataPattern1 | (dataPattern2 << 8);
return(asicOntGlbRegWrite(mvAsicReg_GPON_TX_CFG_AC_COUPLING, reg, 0));
}
/*******************************************************************************
**
** mvOnuGponMacTxEthFramesTcontiCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return number of trans ethernet frames via tcont
**
** PARAMETERS: MV_U32 tcontNum
** MV_U32 *counter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxEthFramesTcontiCounterGet(MV_U32 tcontNum, MV_U32 *counter)
{
MV_STATUS status;
if (tcontNum >= ONU_GPON_MAX_NUM_OF_T_CONTS)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_GPON_TX_STAT_TCONT_i_ETH_FRAMES, counter, tcontNum);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxEthBytesTcontiCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return number of trans ethernet bytes via tcont
**
** PARAMETERS: MV_U32 tcontNum
** MV_U32 *counter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxEthBytesTcontiCounterGet(MV_U32 tcontNum, MV_U32 *counter)
{
MV_STATUS status;
if (tcontNum >= ONU_GPON_MAX_NUM_OF_T_CONTS)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_GPON_TX_STAT_TCONT_i_ETH_BYTES, counter, tcontNum);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxGemFramesTcontiCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return number of trans gem frames via tcont
**
** PARAMETERS: MV_U32 tcontNum
** MV_U32 *counter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxGemFramesTcontiCounterGet(MV_U32 tcontNum, MV_U32 *counter)
{
MV_STATUS status;
if (tcontNum >= ONU_GPON_MAX_NUM_OF_T_CONTS)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_GPON_TX_STAT_TCONT_i_GEM_FRAMES, counter, tcontNum);
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacTxIdleGemFramesTcontiCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return number of trans idle gem frames via tcont
**
** PARAMETERS: MV_U32 tcontNum
** MV_U32 *counter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxIdleGemFramesTcontiCounterGet(MV_U32 tcontNum, MV_U32 *counter)
{
MV_STATUS status;
if (tcontNum >= ONU_GPON_MAX_NUM_OF_T_CONTS)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_GPON_TX_STAT_TCONT_i_IDLE_GEM, counter, tcontNum);
return(status);
}
/* ========================================================================== */
/* FEC Statistics Low Level Routines */
/* ========================================================================== */
/*******************************************************************************
**
** mvOnuGponMacRxFecBytesCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return Rx FEC Bytes counter
**
** PARAMETERS: MV_U32 *counter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxFecBytesCounterGet(MV_U32 *counter)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_FEC_STAT0, counter, 0);
if (status != MV_OK)
{
return(status);
}
return(MV_OK);
}
/*******************************************************************************
**
** mvOnuGponMacRxFecCorrectBytesCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return Rx FEC correct Bytes counter
**
** PARAMETERS: MV_U32 *bytes
** MV_U32 *bits
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxFecCorrectCounterGet(MV_U32 *bytes, MV_U32 *bits)
{
MV_STATUS status;
MV_U32 regVal;
*bytes = 0;
*bits = 0;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_FEC_STAT1, &regVal, 0);
if (status != MV_OK)
{
return(status);
}
*bits = regVal & 0xFFFF;
*bytes = (regVal >> 16) & 0xFFFF;
return(MV_OK);
}
/*******************************************************************************
**
** mvOnuGponMacRxFecInorrectCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return Rx FEC Incorrect Bytes counter
**
** PARAMETERS: MV_U32 *bytes
** MV_U32 *bits
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxFecInorrectCounterGet(MV_U32 *bytes, MV_U32 *bits)
{
MV_STATUS status;
MV_U32 regVal;
*bytes = 0;
*bits = 0;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_FEC_STAT2, &regVal, 0);
if (status != MV_OK)
{
return(status);
}
*bits = regVal & 0xFFFF;
*bytes = (regVal >> 16) & 0xFFFF;
return(MV_OK);
}
/* ========================================================================== */
/* Bw Map Statistics Low Level Routines */
/* ========================================================================== */
/*******************************************************************************
**
** mvOnuGponMacRxBwMapAllocatrionsCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return Rx Bw Map allocation counters
**
** PARAMETERS: MV_U32 *cor
** MV_U32 *incor
** MV_U32 *crcCor
** MV_U32 *errCrc
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxBwMapAllocatrionsCounterGet(MV_U32 *cor,
MV_U32 *incor,
MV_U32 *crcCor,
MV_U32 *errCrc)
{
MV_STATUS status;
MV_U32 regVal;
*cor = 0;
*incor = 0;
*crcCor = 0;
*errCrc = 0;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_BWMAP_STATUS0, &regVal, 0);
if (status != MV_OK)
{
return(status);
}
*incor = regVal & 0xFF;
*crcCor = (regVal >> 8) & 0xFF;
*cor = (regVal >> 16) & 0xFF;
*errCrc = (regVal >> 24) & 0xFF;
return(MV_OK);
}
/*******************************************************************************
**
** mvOnuGponMacRxBwMapTotalBwGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return Rx Bw total Bw counter
**
** PARAMETERS: MV_U32 *bw
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacRxBwMapTotalBwGet(MV_U32 *bw)
{
MV_STATUS status;
MV_U32 regVal;
*bw = 0;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_BWMAP_STATUS1, &regVal, 0);
if (status != MV_OK)
{
return(status);
}
*bw = regVal & 0x7FFFF;
return(MV_OK);
}
/* ========================================================================== */
/* Plend Statistics Low Level Routines */
/* ========================================================================== */
/*******************************************************************************
**
** onuGponInComingPlendCntGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return InComing Plend counter
**
** PARAMETERS: MV_U32 *cntValue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacInComingPlendCntGet(MV_U32 *cntValue)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_GPON_RX_PLEND_STATUS, cntValue, 0);
return(status);
}
/******************************************************************************/
/* ========================================================================== */
/* High-Level MAC Section */
/* ========================================================================== */
/******************************************************************************/
/*******************************************************************************
**
** mvOnuGponMacMessageReceive
** ____________________________________________________________________________
**
** DESCRIPTION: The function read message from the message fifo
** The ploam size is 12 octets - each read get 32 bits
** 3 read actions needed
**
** PARAMETERS: msgData - 10 bytes (buffer is allocated by calling)
** msgOnuId - the ONU ID on the message
** msgId - the message ID on the message
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacMessageReceive(MV_U8 *msgOnuId, MV_U8 *msgId, MV_U8 *msgData)
{
MV_STATUS rcode;
MV_U32 ploamFifoData_1;
MV_U32 ploamFifoData_2;
MV_U32 ploamFifoData_3;
rcode = mvOnuGponMacRxPloamDataGet(&ploamFifoData_1);
rcode |= mvOnuGponMacRxPloamDataGet(&ploamFifoData_2);
rcode |= mvOnuGponMacRxPloamDataGet(&ploamFifoData_3);
if (rcode != MV_OK)
return(rcode);
/* Outputs */
*msgOnuId = (MV_U8)((ploamFifoData_1 >> 24) & UINT8_MASK); /* MSB */
*msgId = (MV_U8)((ploamFifoData_1 >> 16) & UINT8_MASK);
msgData[0] = (MV_U8)((ploamFifoData_1 >> 8) & UINT8_MASK);
msgData[1] = (MV_U8) (ploamFifoData_1 & UINT8_MASK); /* LSB */
msgData[2] = (MV_U8)((ploamFifoData_2 >> 24) & UINT8_MASK); /* MSB */
msgData[3] = (MV_U8)((ploamFifoData_2 >> 16) & UINT8_MASK);
msgData[4] = (MV_U8)((ploamFifoData_2 >> 8) & UINT8_MASK);
msgData[5] = (MV_U8) (ploamFifoData_2 & UINT8_MASK); /* LSB */
msgData[6] = (MV_U8)((ploamFifoData_3 >> 24) & UINT8_MASK); /* MSB */
msgData[7] = (MV_U8)((ploamFifoData_3 >> 16) & UINT8_MASK);
msgData[8] = (MV_U8)((ploamFifoData_3 >> 8) & UINT8_MASK);
msgData[9] = (MV_U8) (ploamFifoData_3 & UINT8_MASK); /* LSB */
return(MV_OK);
}
/*******************************************************************************
**
** mvOnuGponMacTxPloamSend
** ____________________________________________________________________________
**
** DESCRIPTION: The function writes PLOAM message to HW FIFO
**
** PARAMETERS: msgData - 10 bytes (buffer is allocated by calling)
** msgOnuId - the ONU ID on the message
** msgId - the message ID on the message
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxPloamSend(MV_U8 msgOnuId, MV_U8 msgId, MV_U8 *msgData)
{
MV_STATUS rcode;
MV_U32 ploamFifoData;
fifoMacPloamSend++;
/* Write ONU ID and Message ID and data[0:1] */
ploamFifoData = (((MV_U32)msgOnuId) << 24) | (((MV_U32)msgId) << 16) |
(((MV_U32)msgData[0]) << 8) |(((MV_U32)msgData[1]) << 0);
rcode = mvOnuGponMacTxPloamDataFifoSet(ploamFifoData);
/* Write data[2:5] */
ploamFifoData = (((MV_U32)msgData[2]) << 24) | (((MV_U32)msgData[3]) << 16) |
(((MV_U32)msgData[4]) << 8) |(((MV_U32)msgData[5]) << 0);
rcode |= mvOnuGponMacTxPloamDataFifoSet(ploamFifoData);
/* Write data[6:9] */
ploamFifoData = (((MV_U32)msgData[6]) << 24) | (((MV_U32)msgData[7]) << 16) |
(((MV_U32)msgData[8]) << 8) |(((MV_U32)msgData[9]) << 0);
rcode |= mvOnuGponMacTxPloamDataFifoSet(ploamFifoData);
return(rcode);
}
/*******************************************************************************
**
** mvOnuGponMacMessageAdd
** ____________________________________________________________________________
**
** DESCRIPTION: The function adds message to the SW FIFO
**
** PARAMETERS: msgData - 10 bytes (buffer is allocated by calling)
** msgOnuId - the ONU ID on the message
** msgId - the message ID on the message
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_FULL
**
*******************************************************************************/
MV_STATUS mvOnuGponMacMessageAdd(MV_U8 msgOnuId, MV_U8 msgId, MV_U8 *msgData)
{
MV_STATUS rcode;
MV_U8 *buffer;
MV_U32 bufferIndex;
/* Get pointer to and index of the free SW FIFO entry */
rcode = mvOnuGponMacFifoMsgAlloc((MV_U32**)&buffer, &bufferIndex);
if (rcode == MV_OK)
{
buffer[0] = msgOnuId;
buffer[1] = msgId;
memcpy(&buffer[2], msgData, GPON_PLOAM_MSG_BYTES - 2);
mvOnuGponMacFifoMsgSend(bufferIndex);
}
return(rcode);
}
/*******************************************************************************
**
** mvOnuGponMacMessageSend
** ____________________________________________________________________________
**
** DESCRIPTION: The function write message to the message fifo
**
** PARAMETERS: msgData - 10 bytes (buffer is allocated by calling)
** msgOnuId - the ONU ID on the message
** msgId - the message ID on the message
**
** OUTPUTS: None
**
** RETURNS: MV_OK, MV_FULL or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacMessageSend(MV_U8 msgOnuId, MV_U8 msgId, MV_U8 *msgData)
{
MV_STATUS rcode;
MV_U32 ploamFifoSize;
MV_U8 *buffer;
MV_U32 bufferIndex;
int i, moved_num;
fifoMacMsgSend++;
/* Check first if PLOAM FIFO has free place */
rcode = mvOnuGponMacTxPloamDataFreeGet(&ploamFifoSize);
if (rcode != MV_OK)
return(rcode);
/* SW FIFO is not supported */
if (!fifoSupported)
{
if (ploamFifoSize < GPON_PLOAM_MSG_WORDS)
return(MV_ERROR);
return mvOnuGponMacTxPloamSend(msgOnuId, msgId, msgData);
}
/* There is no free entries in HW FIFO */
if (ploamFifoSize < GPON_PLOAM_MSG_WORDS)
{
rcode = mvOnuGponMacMessageAdd(msgOnuId, msgId, msgData);
}
else
{
/* HW FIFO has free entries. Verify whether SW FIFO is empty */
if (mvOnuGponMacFifoEmpty())
{
rcode = mvOnuGponMacTxPloamSend(msgOnuId, msgId, msgData);
}
else
{
/* Add received PLOAM to SW FIFO */
rcode = mvOnuGponMacMessageAdd(msgOnuId, msgId, msgData);
/* Move up to GPON_MAX_US_MSG_MOVING (3) PLOAMs from SW to HW FIFO */
moved_num = ploamFifoSize/GPON_PLOAM_MSG_WORDS;
if (moved_num > GPON_MAX_US_MSG_MOVING) {
moved_num = GPON_MAX_US_MSG_MOVING;
}
for (i=0; i<moved_num; i++)
{
rcode = mvOnuGponMacFifoMsgRece((MV_U32**)&buffer, &bufferIndex);
if (rcode == MV_EMPTY)
break;
rcode = mvOnuGponMacTxPloamSend(buffer[0], buffer[1], &buffer[2]);
if(rcode != MV_OK)
break;
mvOnuGponMacFifoMsgFree(bufferIndex);
}
}
}
return rcode;
}
/*******************************************************************************
**
** mvOnuGponMacMessageCleanSwFifo
** ____________________________________________________________________________
**
** DESCRIPTION: The function clean the SW transmit message fifo
**
** PARAMETERS: None
**
** OUTPUTS: None
**
** RETURNS: MV_OK, MV_FULL or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacMessageCleanSwFifo(void)
{
MV_STATUS rcode;
MV_U8 *buffer;
MV_U32 bufferIndex;
do
{
rcode = mvOnuGponMacFifoMsgRece((MV_U32**)&buffer, &bufferIndex);
if (rcode == MV_EMPTY)
break;
mvOnuGponMacFifoMsgFree(bufferIndex);
} while (1);
return MV_OK;
}
/*******************************************************************************
**
** mvOnuGponMacPreambleSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the onu overhead preamble bytes
**
** PARAMETERS: preamType1Val - preamble type 1 value
** preamType1Cnt - preamble type 1 count
** preamType2Val - preamble type 2 value
** preamType2Cnt - preamble type 2 count
** preamType3Val - preamble type 3 value
** preamType3Cnt - preamble type 3 count
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacPreambleSet(MV_U32 preamType1Val,
MV_U32 preamType1Cnt,
MV_U32 preamType2Val,
MV_U32 preamType2Cnt,
MV_U32 preamType3Val,
MV_U32 preamType3Cnt)
{
MV_STATUS rcode;
rcode = mvOnuGponMacTxPreambleSet(ONU_GPON_PREM_TYPE_01, preamType1Val, preamType1Cnt);
if (rcode != MV_OK)
{
return(rcode);
}
rcode = mvOnuGponMacTxPreambleSet(ONU_GPON_PREM_TYPE_02, preamType2Val, preamType2Cnt);
if (rcode != MV_OK)
{
return(rcode);
}
rcode = mvOnuGponMacTxPreambleSet(ONU_GPON_PREM_TYPE_03, preamType3Val, preamType3Cnt);
if (rcode != MV_OK)
{
return(rcode);
}
return(MV_OK);
}
/*******************************************************************************
**
** mvOnuGponMacPreambleType3Set
** ____________________________________________________________________________
**
** DESCRIPTION: The function set the onu overhead preamble type3
**
** PARAMETERS: preamType3Val - preamble type 3 value
** preamType3Cnt - preamble type 3 count
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacPreambleType3Set(MV_U32 preamType3Val, MV_U32 preamType3Cnt)
{
MV_STATUS rcode;
rcode = mvOnuGponMacTxPreambleSet(ONU_GPON_PREM_TYPE_03, preamType3Val, preamType3Cnt);
if (rcode != MV_OK)
{
return(rcode);
}
return(MV_OK);
}
/******************************************************************************/
/* ========================================================================== */
/* Upstream Messages MAC Section */
/* ========================================================================== */
/******************************************************************************/
#ifndef PON_FPGA
/*******************************************************************************
**
** mvOnuGponMacDgMessageSend
** ____________________________________________________________________________
**
** DESCRIPTION: The function sends dying gasp message in the US direction
**
** PARAMETERS: MV_U8 onuId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacDgMessageSend(MV_U8 onuId)
{
MV_U32 i;
MV_STATUS rcode;
MV_U8 data[12];
for (i = 0; i < 3; i++)
{
rcode = mvOnuGponMacMessageSend(onuId, ONU_GPON_US_MSG_DYING_GASP, data);
if (rcode != MV_OK)
{
mvOnuGponMacTxSwCountersAdd(ONU_GPON_US_MSG_DYING_GASP, MV_FALSE);
return(rcode);
}
else
{
mvOnuGponMacTxSwCountersAdd(ONU_GPON_US_MSG_DYING_GASP, MV_TRUE);
}
}
return(MV_OK);
}
#endif /* PON_FPGA */
/*******************************************************************************
**
** mvOnuGponMacPasswordMessageSend
** ____________________________________________________________________________
**
** DESCRIPTION: The function sends password message in the US direction
**
** PARAMETERS: MV_U8 onuId
** MV_U8 *password
** MV_U32 counter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacPasswordMessageSend(MV_U8 onuId, MV_U8 *password, MV_U32 counter)
{
MV_U32 time;
MV_U32 i;
MV_STATUS rcode;
time = (counter > 3) ? 3 : counter;
for (i = 0; i < time; i++)
{
rcode = mvOnuGponMacMessageSend(onuId, ONU_GPON_US_MSG_PASSWORD, password);
if (rcode != MV_OK)
{
mvOnuGponMacTxSwCountersAdd(ONU_GPON_US_MSG_PASSWORD, MV_FALSE);
return(rcode);
}
else
{
mvOnuGponMacTxSwCountersAdd(ONU_GPON_US_MSG_PASSWORD, MV_TRUE);
}
}
return(MV_OK);
}
/*******************************************************************************
**
** mvOnuGponMacReiMessageSend
** ____________________________________________________________________________
**
** DESCRIPTION: The function sends dying gasp message in the US direction
**
** PARAMETERS: MV_U8 onuId
** MV_U8 errorsCounter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacReiMessageSend(MV_U8 onuId, MV_U32 errorsCounter)
{
MV_STATUS rcode;
static MV_U8 sequenceNumber = 0;
MV_U8 data[12];
data[0] = (MV_U8)((errorsCounter >> 24) & 0xFF);
data[1] = (MV_U8)((errorsCounter >> 16) & 0xFF);
data[2] = (MV_U8)((errorsCounter >> 8) & 0xFF);
data[3] = (MV_U8)(errorsCounter & 0xFF);
data[4] = sequenceNumber;
sequenceNumber++;
if (sequenceNumber > 0xF) sequenceNumber = 0;
rcode = mvOnuGponMacMessageSend(onuId, ONU_GPON_US_MSG_REI, data);
if (rcode != MV_OK)
{
mvOnuGponMacTxSwCountersAdd(ONU_GPON_US_MSG_REI, MV_FALSE);
return(rcode);
}
else
{
mvOnuGponMacTxSwCountersAdd(ONU_GPON_US_MSG_REI, MV_TRUE);
}
return(rcode);
}
/*******************************************************************************
**
** mvOnuGponMacAcknowledgeMessageSend
** ____________________________________________________________________________
**
** DESCRIPTION: The function sends acknowledge message in the US direction
**
** PARAMETERS: MV_U8 onuId
** MV_U8 errorsCounter
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacAcknowledgeMessageSend(MV_U8 onuId, MV_U8 dmId, MV_U8 *dmByte)
{
MV_STATUS rcode;
MV_U8 data[12];
data[0] = dmId;
data[1] = onuId;
data[2] = dmId;
data[3] = dmByte[0];
data[4] = dmByte[1];
data[5] = dmByte[2];
data[6] = dmByte[3];
data[7] = dmByte[4];
data[8] = dmByte[5];
data[9] = dmByte[6];
rcode = mvOnuGponMacMessageSend(onuId, ONU_GPON_US_MSG_ACK, data);
if (rcode != MV_OK)
{
mvOnuGponMacTxSwCountersAdd(ONU_GPON_US_MSG_ACK, MV_FALSE);
return(rcode);
}
else
{
mvOnuGponMacTxSwCountersAdd(ONU_GPON_US_MSG_ACK, MV_TRUE);
}
return(rcode);
}
/*******************************************************************************
**
** mvOnuGponMacEncryptionKeyMessageSend
** ____________________________________________________________________________
**
** DESCRIPTION: The function sends encryption key message in the US direction
**
** PARAMETERS: MV_U8 onuId
** MV_U8 KeyIndex
** MV_U8 fragIndex
** MV_U8 *key
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacEncryptionKeyMessageSend(MV_U8 onuId,
MV_U8 KeyIndex,
MV_U8 fragIndex,
MV_U8 *key)
{
MV_STATUS rcode;
MV_U8 data[12];
data[0] = KeyIndex;
data[1] = fragIndex;
data[2] = key[0];
data[3] = key[1];
data[4] = key[2];
data[5] = key[3];
data[6] = key[4];
data[7] = key[5];
data[8] = key[6];
data[9] = key[7];
rcode = mvOnuGponMacMessageSend(onuId, ONU_GPON_US_MSG_ENCRYPT_KEY, data);
if (rcode != MV_OK)
{
mvOnuGponMacTxSwCountersAdd(ONU_GPON_US_MSG_ENCRYPT_KEY, MV_FALSE);
return(rcode);
}
else
{
mvOnuGponMacTxSwCountersAdd(ONU_GPON_US_MSG_ENCRYPT_KEY, MV_TRUE);
}
return(rcode);
}
/******************************************************************************/
/* ========================================================================== */
/* AES Support */
/* ========================================================================== */
/******************************************************************************/
/*******************************************************************************
**
** mvOnuGponMacAesInit
** ____________________________________________________________________________
**
** DESCRIPTION: The function init onu AES
**
** PARAMETERS: None
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacAesInit(void)
{
MV_U32 i;
MV_STATUS rcode = MV_OK;
for (i = 0 ; i < (GPON_ONU_MAX_GEM_PORTS/32) ; i++)
{
onuGponPortAesStatusImage[i] = 0;
rcode |= asicOntGlbRegWrite(mvAsicReg_GPON_GEM_AES_PID_TABLE, onuGponPortAesStatusImage[i], i);
}
return(rcode);
}
/*******************************************************************************
**
** mvOnuGponMacAesEnableSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function enable onu AES
**
** PARAMETERS: MV_BOOL enable
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacAesEnableSet(MV_BOOL enable)
{
MV_STATUS rcode = MV_OK;
MV_U32 enableBit;
enableBit = (enable == MV_TRUE) ? 1 : 0;
rcode = asicOntGlbRegWrite(mvAsicReg_GPON_GEM_CONFIG_AES , enableBit, 0);
return(rcode);
}
/*******************************************************************************
**
** mvOnuGponMacAesPortIdSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function AES for port Id
**
** PARAMETERS: MV_U32 portId
** MV_BOOL status
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacAesPortIdSet(MV_U32 portId, MV_BOOL status)
{
MV_STATUS rcode;
MV_U32 group;
MV_U32 groupOffset;
MV_U32 regData;
MV_U32 statusBit;
group = portId / 32;
groupOffset = portId % 32;
statusBit = (status == MV_TRUE) ? 1 : 0;
/* Get Image */
regData = onuGponPortAesStatusImage[group];
/* Update the bit */
regData &= ~(1 << groupOffset); /* Clear the bit */
regData |= (statusBit << groupOffset); /* Set the status */
onuGponPortAesStatusImage[group] = regData; /* Update the Image */
rcode = asicOntGlbRegWrite (mvAsicReg_GPON_GEM_AES_PID_TABLE , regData, group);
return(rcode);
}
/*******************************************************************************
**
** mvOnuGponMacAesPortIdGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return port Id AES state
**
** PARAMETERS: MV_U32 portId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_BOOL mvOnuGponMacAesPortIdGet(MV_U32 portId)
{
MV_U32 group;
MV_U32 groupOffset;
MV_U32 statusBit;
MV_BOOL status;
group = portId / 32;
groupOffset = portId % 32;
statusBit = (onuGponPortAesStatusImage[group] >> groupOffset) & 1;
status = (statusBit == 0) ? MV_FALSE : MV_TRUE;
return(status);
}
/*******************************************************************************
**
** mvOnuGponMacAesKeyShadowWrite
** ____________________________________________________________________________
**
** DESCRIPTION: The function write AES key to GPON MAC
**
** PARAMETERS: MV_U8 *key
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacAesKeyShadowWrite(MV_U8 *key)
{
MV_U32 i;
MV_U32 regData;
MV_STATUS rcode = MV_OK;
for (i = 0 ; i < 4 ; i++)
{
regData = (((MV_U32)(key[i * 4])) << 24) |
(((MV_U32)(key[i * 4 + 1])) << 16) |
(((MV_U32)(key[i * 4 + 2])) << 8) |
((MV_U32)(key[i * 4 + 3]));
rcode |= asicOntGlbRegWrite (mvAsicReg_GPON_GEM_AES_SHADOW_KEY, regData, i);
}
return(rcode);
}
/*******************************************************************************
**
** mvOnuGponMacIpgValueSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function sets IPG value
**
** PARAMETERS: MV_U32 ipgVal
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacIpgValueSet(MV_U32 ipgVal)
{
return(asicOntGlbRegWrite(mvAsicReg_GPON_GEM_CFG_IPG_VALUE , ipgVal, 0));
}
/*******************************************************************************
**
** mvOnuGponMacIpgValueGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function returns IPG value
**
** PARAMETERS: MV_U32 *ipgVal
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacIpgValueGet(MV_U32 *ipgVal)
{
return(asicOntGlbRegRead(mvAsicReg_GPON_GEM_CFG_IPG_VALUE, ipgVal, 0));
}
/*******************************************************************************
**
** mvOnuGponMacIpgValidSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function enables IPG value settings
**
** PARAMETERS: MV_BOOL enable
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacIpgValidSet(MV_BOOL enable)
{
MV_U32 enableBit = (enable == MV_TRUE) ? 1 : 0;
return(asicOntGlbRegWrite(mvAsicReg_GPON_GEM_CFG_IPG_VALID , enableBit, 0));
}
/*******************************************************************************
**
** mvOnuGponMacIpgValidGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function get IPG value inabled/disabled status
**
** PARAMETERS: MV_BOOL *enable
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacIpgValidGet(MV_BOOL *enable)
{
MV_STATUS rcode = MV_OK;
MV_U32 enableBit;
if (enable == 0)
return(MV_BAD_PARAM);
rcode = asicOntGlbRegRead(mvAsicReg_GPON_GEM_CFG_IPG_VALID , &enableBit, 0);
if (rcode == MV_OK)
*enable = (enableBit == 0) ? MV_FALSE : MV_TRUE;
return(rcode);
}
/*******************************************************************************
**
** mvOnuGponMacGemInit
** ____________________________________________________________________________
**
** DESCRIPTION: The function init onu Gem
**
** PARAMETERS: None
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacGemInit(void)
{
MV_U32 i;
MV_STATUS rcode = MV_OK;
for (i = 0 ; i < (GPON_ONU_MAX_GEM_PORTS/32) ; i++)
{
onuGponPortValidStatusImage[i] = 0;
rcode |= asicOntGlbRegWrite (mvAsicReg_GPON_GEM_VALID_PID_TABLE, onuGponPortValidStatusImage[i], i);
}
return(rcode);
}
/*******************************************************************************
**
** mvOnuGponMacPortIdValidSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set valid for port Id
**
** PARAMETERS: MV_U32 portId
** MV_BOOL status
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacPortIdValidSet(MV_U32 portId, MV_BOOL status)
{
MV_STATUS rcode;
MV_U32 group;
MV_U32 groupOffset;
MV_U32 regData;
MV_U32 statusBit;
group = portId / 32;
groupOffset = portId % 32;
statusBit = (status == MV_TRUE) ? 1 : 0;
/* Get Image */
regData = onuGponPortValidStatusImage[group];
/* Update the bit */
regData &= ~(1 << groupOffset); /* Clear the bit */
regData |= (statusBit << groupOffset); /* Set the status */
onuGponPortValidStatusImage[group] = regData; /* Update the Image */
rcode = asicOntGlbRegWrite (mvAsicReg_GPON_GEM_VALID_PID_TABLE , regData, group);
return(rcode);
}
/*******************************************************************************
**
** mvOnuGponMacPortIdValidGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return port Id valid state
**
** PARAMETERS: MV_U32 portId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_BOOL mvOnuGponMacPortIdValidGet(MV_U32 portId)
{
MV_U32 group;
MV_U32 groupOffset;
MV_U32 statusBit;
MV_BOOL status;
group = portId / 32;
groupOffset = portId % 32;
statusBit = (onuGponPortValidStatusImage[group] >> groupOffset) & 1;
status = (statusBit == 0) ? MV_FALSE : MV_TRUE;
return(status);
}
/******************************************************************************/
/* ========================================================================== */
/* SW FIFO */
/* ========================================================================== */
/******************************************************************************/
/*******************************************************************************
**
** mvOnuGponMacFifoInit
** ____________________________________________________________________________
**
** DESCRIPTION: The function inits SW FIFO
**
** PARAMETERS: None
**
** OUTPUTS: None
**
** RETURNS: None
**
*******************************************************************************/
void mvOnuGponMacFifoInit(void)
{
fifoCtrl.fifoReadIndex = 0;
fifoCtrl.fifoWriteIndex = 0;
fifoCtrl.fifoReparoundNum = 0;
memset(fifoCtrl.fifoData, 0, GPON_SW_FIFO_SIZE * sizeof(S_MacPloamMsg));
}
/*******************************************************************************
**
** mvOnuGponMacFifoMsgAlloc
** ____________________________________________________________________________
**
** DESCRIPTION: The function allocates a buffer from the FIFO
**
** PARAMETERS: None
**
** OUTPUTS: MV_U32 **buffer
** MV_U32 *bufferIndex
**
** RETURNS: MV_OK or MV_FULL
**
*******************************************************************************/
static inline MV_STATUS mvOnuGponMacFifoMsgAlloc(MV_U32 **buffer,
MV_U32 *bufferIndex)
{
MV_U32 nextWriteIndex;
nextWriteIndex = fifoCtrl.fifoWriteIndex + 1;
/* roll over */
if (nextWriteIndex >= GPON_SW_FIFO_SIZE)
{
nextWriteIndex = 0;
fifoCtrl.fifoReparoundNum++;
}
if (nextWriteIndex != fifoCtrl.fifoReadIndex)
{
*buffer = (MV_U32*)(&(fifoCtrl.fifoData[nextWriteIndex]));
*bufferIndex = nextWriteIndex;
return (MV_OK);
}
return(MV_FULL);
}
/*******************************************************************************
**
** mvOnuGponMacFifoMsgSend
** ____________________________________________________________________________
**
** DESCRIPTION: The function sets the buffer (message) for transmission
**
** PARAMETERS: MV_U32 bufferIndex
**
** OUTPUTS: None
**
** RETURNS: None
**
*******************************************************************************/
static inline void mvOnuGponMacFifoMsgSend(MV_U32 bufferIndex)
{
fifoCtrl.fifoWriteIndex = bufferIndex;
fifoMacMsgAdd++;
}
/*******************************************************************************
**
** mvOnuGponMacFifoMsgRece
** ____________________________________________ ________________________________
**
** DESCRIPTION: The function receives a message from the FIFO
**
** PARAMETERS: None
**
** OUTPUTS: MV_U32 **buffer
** MV_U32 *bufferIndex
**
** RETURNS: MV_OK or MV_EMPTY
**
*******************************************************************************/
static inline MV_STATUS mvOnuGponMacFifoMsgRece(MV_U32 **buffer,
MV_U32 *bufferIndex)
{
MV_U32 nextReadIndex;
if (fifoCtrl.fifoReadIndex != fifoCtrl.fifoWriteIndex)
{
nextReadIndex = fifoCtrl.fifoReadIndex + 1;
/* roll over */
if (nextReadIndex >= GPON_SW_FIFO_SIZE)
nextReadIndex = 0;
*buffer = (MV_U32*)(&(fifoCtrl.fifoData[nextReadIndex]));
*bufferIndex = nextReadIndex;
return(MV_OK);
}
return (MV_EMPTY);
}
/*******************************************************************************
**
** mvOnuGponMacFifoMsgFree
** ____________________________________________________________________________
**
** DESCRIPTION: The function returns a buffer to the FIFO
**
** PARAMETERS: MV_U32 bufferIndex
**
** OUTPUTS: None
**
** RETURNS: None
**
*******************************************************************************/
static inline void mvOnuGponMacFifoMsgFree(MV_U32 bufferIndex)
{
fifoCtrl.fifoReadIndex = bufferIndex;
fifoMacMsgFree++;
}
/*******************************************************************************
**
** mvOnuGponMacFifoEmpty
** ____________________________________________________________________________
**
** DESCRIPTION: The function returns an answer whether the FIFO is empty
**
** PARAMETERS: None
**
** OUTPUTS: None
**
** RETURNS: 1 - SW FIFO is empty
** 0 - SW FIFO includes PLOAM messages
**
*******************************************************************************/
static inline int mvOnuGponMacFifoEmpty(void)
{
return(fifoCtrl.fifoReadIndex == fifoCtrl.fifoWriteIndex);
}
/*******************************************************************************
**
** mvOnuGponMacFifoGetInfo
** ____________________________________________________________________________
**
** DESCRIPTION: Debug function
**
** PARAMETERS:
**
** OUTPUTS: None
**
** RETURNS: None
**
*******************************************************************************/
void mvOnuGponMacFifoGetInfo(S_MacFifoCtrl **ptr, MV_32 *supported)
{
*ptr = &fifoCtrl;
*supported = fifoSupported;
}
/*******************************************************************************
**
** mvOnuGponMacFifoGetStat
** ____________________________________________________________________________
**
** DESCRIPTION: Debug function
**
** PARAMETERS:
**
** OUTPUTS: None
**
** RETURNS: None
**
*******************************************************************************/
void mvOnuGponMacFifoGetStat(MV_32 *callCnt, MV_32 *addSwCnt, MV_32 *freeSwCnt, MV_32 *sendHwCnt)
{
*callCnt = fifoMacMsgSend;
*addSwCnt = fifoMacMsgAdd;
*freeSwCnt = fifoMacMsgFree;
*sendHwCnt = fifoMacPloamSend;
}
/*******************************************************************************
**
** mvOnuGponMacFifoAuditGetStat
** ____________________________________________________________________________
**
** DESCRIPTION: Debug function
**
** PARAMETERS:
**
** OUTPUTS: None
**
** RETURNS: None
**
*******************************************************************************/
void mvOnuGponMacFifoAuditGetStat(MV_32 *enterCnt, MV_32 *actionCnt)
{
*enterCnt = fifoAuditEnter;
*actionCnt = fifoAuditAction;
}
/*******************************************************************************
**
** mvOnuGponMacFifoSupportSet
** ____________________________________________________________________________
**
** DESCRIPTION: Debug function
**
** PARAMETERS:
**
** OUTPUTS: None
**
** RETURNS: None
**
*******************************************************************************/
void mvOnuGponMacFifoSupportSet(MV_32 value)
{
fifoSupported = value;
}
/*******************************************************************************
**
** mvOnuGponMacFifoCountersSet
** ____________________________________________________________________________
**
** DESCRIPTION: Debug function
**
** PARAMETERS:
**
** OUTPUTS: None
**
** RETURNS: None
**
*******************************************************************************/
void mvOnuGponMacFifoCountersSet(MV_U32 value)
{
fifoMacMsgSend = value;
fifoMacMsgAdd = value;
fifoMacMsgFree = value;
fifoMacPloamSend = value;
fifoAuditEnter = value;
fifoAuditAction = value;
}
/*******************************************************************************
**
** mvOnuGponFifoAuditTimerExpireHndl
** ____________________________________________________________________________
**
** DESCRIPTION: The function moves PLOAMs from SW to HW FIFO in case there is
** no new DS PLOAMs
**
** PARAMETERS: None
**
** OUTPUTS: None
**
** RETURNS: None
**
*******************************************************************************/
void mvOnuGponFifoAuditTimerExpireHndl(void)
{
MV_STATUS rc;
MV_U32 hwFifoFreeEntries;
MV_32 i;
MV_U8 *buffer;
MV_U32 bufferIndex;
fifoAuditEnter++;
if (fifoAuditEnter <= 0)
{
fifoAuditEnter = 0;
fifoAuditAction = 0;
}
/* Verify whether SW FIFO is empty */
if (mvOnuGponMacFifoEmpty())
return;
/* Verify whether HW FIFO has free place */
rc = mvOnuGponMacTxPloamDataFreeGet(&hwFifoFreeEntries);
if((rc != MV_OK) || (hwFifoFreeEntries < GPON_PLOAM_MSG_WORDS))
return;
/* Verify whether FIFO indexes have been changed from the last Audit cycle */
if ((fifoReadIdx == fifoCtrl.fifoReadIndex) &&
(fifoWriteIdx == fifoCtrl.fifoWriteIndex))
{
fifoAuditAction++;
/* Lock GPON interrupt */
/*onuPonIrqLock(onuPonResourceTbl_s.onuPonIrqId); */
for (i=0; i<GPON_MAX_US_MSG_TO_PROCESS; i++)
{
if (mvOnuGponMacFifoMsgRece((MV_U32**)&buffer, &bufferIndex) == MV_EMPTY)
break;
if (mvOnuGponMacTxPloamSend(buffer[0], buffer[1], &buffer[2]) != MV_OK)
break;
mvOnuGponMacFifoMsgFree(bufferIndex);
}
/* Unlock GPON interrupt */
/*onuPonIrqUnlock(onuPonResourceTbl_s.onuPonIrqId); */
fifoReadIdx = fifoCtrl.fifoReadIndex;
}
else
{
/* Save current values of the FIFO indexes */
fifoReadIdx = fifoCtrl.fifoReadIndex;
fifoWriteIdx = fifoCtrl.fifoWriteIndex;
}
}
/******************************************************************************/
/* ========================================================================== */
/* Low-Level MAC Section */
/* ========================================================================== */
/******************************************************************************/
/******************************************************************************/
/* ========================================================================== */
/* GENERAL Routines */
/* ========================================================================== */
/*******************************************************************************
**
** mvOnuGponMacAsicVersionGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the onu asic version
**
** PARAMETERS: MV_U32 *asicVer
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacAsicVersionGet(MV_U32 *asicVer)
{
MV_STATUS rcode;
MV_U32 asicVerVal;
rcode = asicOntGlbRegRead (mvAsicReg_GPON_GEN_MAC_VERSION, &asicVerVal, 0);
if (rcode != MV_OK) return(rcode);
else *asicVer = asicVerVal;
return(MV_OK);
}
/*******************************************************************************
**
** mvOnuGponMacMicroSecCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return the onu micro sec counter
**
** PARAMETERS: MV_U32 *microSec
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacMicroSecCounterGet(MV_U32 *microSec)
{
MV_STATUS rcode;
MV_U32 asicVerVal;
rcode = asicOntGlbRegRead (mvAsicReg_GPON_GEN_MICRO_SEC_CNT, &asicVerVal, 0);
if (rcode != MV_OK) return(rcode);
else *microSec = asicVerVal;
return(MV_OK);
}
/*******************************************************************************
**
** mvOnuGponMacDyingGaspConfigSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function enables and sets GPIO and DeBouncer registers to allow
** Dying Gasp interrupt.
**
** PARAMETERS: id- Dying Gasp 0 or 1.
** disableEnable 0 Disable 1 Enable.
** threshold - The number of sampling values in the debouncer before an input is asserted.
** 1 = 6.4n sec.
** polarity - 1= active on high, 3 = active on low.
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuGponMacDyingGaspConfigSet(MV_U32 id,
MV_U32 disableEnable,
MV_U32 polarity,
MV_U32 threshold)
{
return(MV_OK);
}
/*******************************************************************************
**
** mvOnuGponMacXvrReset
** ____________________________________________________________________________
**
** DESCRIPTION: The function execute xvr reset sequence
**
** PARAMETERS: MV_U32 xvrType
**
** OUTPUTS: None
**
** RETURNS: MV_OK
**
*******************************************************************************/
MV_STATUS mvOnuGponMacXvrReset(MV_U32 xvrType)
{
return(MV_OK);
}
/*******************************************************************************
**
** mvOnuGponMacXvrActivate
** ____________________________________________________________________________
**
** DESCRIPTION: The function activates xvr
**
** PARAMETERS: None
**
** OUTPUTS: None
**
** RETURNS: MV_OK
**
*******************************************************************************/
MV_STATUS mvOnuGponMacXvrActivate(void)
{
return(MV_OK);
}
/*******************************************************************************
**
** mvOnuGponMacTxSwCountersAdd
** ____________________________________________________________________________
**
** DESCRIPTION: The function updates Tx Ploam message counters
**
** PARAMETERS: MV_U8 msgId
** MV_BOOL sucsses
**
** OUTPUTS: None
**
** RETURNS: MV_OK
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxSwCountersAdd(MV_U8 msgId, MV_BOOL sucsses)
{
mvOnuGponMacPloamCnt.txMsgTotalPloamCounter++;
if (sucsses == MV_FALSE) mvOnuGponMacPloamCnt.txErrMsgIdPloamCounter[msgId]++;
else mvOnuGponMacPloamCnt.txMsgIdPloamCounter[msgId]++;
return(MV_OK);
}
/*******************************************************************************
**
** ponOnuMacTxSwCountersGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function updates Tx Ploam message counters
**
** PARAMETERS: MV_U8 msgId
** MV_BOOL sucsses
**
** OUTPUTS: None
**
** RETURNS: MV_OK
**
*******************************************************************************/
MV_STATUS mvOnuGponMacTxSwCountersGet(void* txPloamPm)
{
MV_U32 numOfMsgIdIndex;
S_MacTxPloamPm *outTxPloamPm = (S_MacTxPloamPm*)txPloamPm;
outTxPloamPm->txMsgTotalPloamCounter = mvOnuGponMacPloamCnt.txMsgTotalPloamCounter;
for (numOfMsgIdIndex = ONU_GPON_US_MSG_SN_ONU;
numOfMsgIdIndex <= ONU_GPON_US_MSG_ACK;
numOfMsgIdIndex++)
{
outTxPloamPm->txMsgIdPloamCounter[numOfMsgIdIndex] = mvOnuGponMacPloamCnt.txMsgIdPloamCounter[numOfMsgIdIndex];
outTxPloamPm->txErrMsgIdPloamCounter[numOfMsgIdIndex] = mvOnuGponMacPloamCnt.txErrMsgIdPloamCounter[numOfMsgIdIndex];
}
return(MV_OK);
}
/******************************************************************************/
/******************************************************************************/
/* ========================================================================== */
/* ========================================================================== */
/* == == */
/* == ========= ========= ========= === == == */
/* == ========= ========= ========= ==== == == */
/* == == == == == == == == == == */
/* == == == == == == == == == == */
/* == ========= ========= == == == == == == */
/* == ========= ========= == == == == == == */
/* == == == == == == == == == */
/* == == == == == == ==== == */
/* == ========= == ========= == === == */
/* == ========= == ========= == == == */
/* == == */
/* ========================================================================== */
/* ========================================================================== */
/******************************************************************************/
/******************************************************************************/
/* ========================================================================== */
/* Interrupt Functions Section */
/* ========================================================================== */
/*******************************************************************************
**
** mvOnuEponMacPonInterruptGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return interrupt status
**
** PARAMETERS: MV_U32 *interrupt
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacPonInterruptGet(MV_U32 *interrupt)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_INTR_REG, interrupt, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacPonInterruptrMaskGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return interrupt mask
**
** PARAMETERS: MV_U32 *mask
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacPonInterruptMaskGet(MV_U32 *mask)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_INTR_MASK, mask, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacPonInterruptrMaskSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set interrupt mask
**
** PARAMETERS: MV_U32 mask
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacPonInterruptMaskSet(MV_U32 mask)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_INTR_MASK, mask, 0);
return(status);
}
/* ========================================================================== */
/* General Functions Section */
/* ========================================================================== */
/*******************************************************************************
**
** mvOnuEponMacVersionGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return mac version
**
** PARAMETERS: MV_U32 *version
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacVersionGet(MV_U32 *version)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_GEN_MAC_VERSION_ADDR, version, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacPcsRxEnableSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function sets PcsRxEnable register
**
** PARAMETERS: MV_U32 rxEnable
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacPcsRxEnableSet(MV_U32 rxEnable)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_PCS_CONFIGURATION_RX_ENABLE, rxEnable, 0);
return (status);
}
/*******************************************************************************
**
** mvOnuEponMacPcsTxEnableSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function sets PcsTxEnable register
**
** PARAMETERS: MV_U32 txEnable
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacPcsTxEnableSet(MV_U32 txEnable)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_PCS_CONFIGURATION_TX_ENABLE, txEnable, 0);
return (status);
}
/*******************************************************************************
**
** mvOnuEponMacOnuEnableSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu Rx & Tx enable
**
** PARAMETERS: MV_U32 rxEnable
** MV_U32 txEnable
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacOnuEnableSet(MV_U32 rxEnable, MV_U32 txEnable)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_PCS_CONFIGURATION_RX_ENABLE, rxEnable, 0);
status |= asicOntGlbRegWrite(mvAsicReg_EPON_GEN_ONT_RX_ENABLE, rxEnable, 0);
status |= asicOntGlbRegWrite(mvAsicReg_EPON_PCS_CONFIGURATION_TX_ENABLE, txEnable, 0);
status |= asicOntGlbRegWrite(mvAsicReg_EPON_GEN_ONT_TX_ENABLE, txEnable, 0);
return (status);
}
/*******************************************************************************
**
** mvOnuEponMacOnuRxEnableSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu Rx enable
**
** PARAMETERS: MV_U32 rxEnable
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacOnuRxEnableSet(MV_U32 rxEnable)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_PCS_CONFIGURATION_RX_ENABLE, rxEnable, 0);
status |= asicOntGlbRegWrite(mvAsicReg_EPON_GEN_ONT_RX_ENABLE, rxEnable, 0);
return (status);
}
/*******************************************************************************
**
** mvOnuEponMacOnuTxEnableSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu Rx & Tx enable
**
** PARAMETERS: MV_U32 txEnable
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacOnuTxEnableSet(MV_U32 txEnable, MV_U32 macId)
{
MV_STATUS status;
MV_U32 currOnuTxEnable;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_GEN_ONT_TX_ENABLE, &currOnuTxEnable, 0);
if (txEnable == 0) currOnuTxEnable &= ~(1 << macId);
else currOnuTxEnable |= (1 << macId);
status |= asicOntGlbRegWrite(mvAsicReg_EPON_GEN_ONT_TX_ENABLE, currOnuTxEnable, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacOnuStateSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu state
**
** PARAMETERS: MV_U32 onuState
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacOnuStateSet(MV_U32 onuState, MV_U32 macId)
{
MV_STATUS status;
MV_U32 currOnuState;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_GEN_ONT_STATE_REG, &currOnuState, 0);
if (onuState == 0) currOnuState &= ~(1 << macId);
else currOnuState |= (1 << macId);
status |= asicOntGlbRegWrite(mvAsicReg_EPON_GEN_ONT_STATE_REG, currOnuState, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacOnuStateSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu state
**
** PARAMETERS: MV_U32 *onuState
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacOnuStateGet(MV_U32 *onuState, MV_U32 macId)
{
MV_STATUS status;
MV_U32 currOnuState;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_GEN_ONT_STATE_REG, &currOnuState, 0);
*onuState = ((currOnuState >> macId) & (0x1));
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacOnuRegAutoUpdateStateSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu register auto update params
**
** PARAMETERS: MV_U32 value
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacOnuRegAutoUpdateStateSet(MV_U32 value)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_ONT_STATE_REG_AUTO_EN, value, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacOnuReRegAutoUpdateStateSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu re-register auto update params
**
** PARAMETERS: MV_U32 value
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacOnuReRegAutoUpdateStateSet(MV_U32 value)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_ONT_STATE_REREG_AUTO_EN, value, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacOnuDeRegAutoUpdateStateSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu de-register auto update params
**
** PARAMETERS: MV_U32 value
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacOnuDeRegAutoUpdateStateSet(MV_U32 value)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_ONT_STATE_DEREG_AUTO_EN, value, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacOnuNackAutoUpdateStateSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu nack auto update params
**
** PARAMETERS: MV_U32 value
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacOnuNackAutoUpdateStateSet(MV_U32 value)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_ONT_STATE_NACK_AUTO_EN, value, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenTqSizeSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu TQ size
**
** PARAMETERS: MV_U32 tqRxSize
** MV_U32 tqTxSize
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenTqSizeSet(MV_U32 tqRxSize, MV_U32 tqTxSize)
{
MV_STATUS status;
MV_U32 tqSize;
tqSize = ((tqTxSize & 0xF) << 4) |
(tqRxSize & 0xF);
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_TQ_SIZE, tqSize, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenLaserParamSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu laser params
**
** PARAMETERS: MV_U32 onOffTime
** MV_U32 onTime
** MV_U32 offTime
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenLaserParamSet(MV_U32 onOffTime, MV_U32 onTime, MV_U32 offTime)
{
MV_STATUS status;
MV_U32 lazerTime;
lazerTime = ((onOffTime & 0xFF) << 16) |
((offTime & 0xFF) << 8) |
(onTime & 0xFF);
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_LASER_PARAM, lazerTime, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenLaserParamGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return laser params
**
** PARAMETERS: MV_U32 *onOffTime
** MV_U32 *onTime
** MV_U32 *offTime
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenLaserParamGet(MV_U32 *onOffTime, MV_U32 *onTime, MV_U32 *offTime)
{
MV_STATUS status;
MV_U32 lazerTime;
status = asicOntGlbRegRead(mvAsicReg_EPON_GEN_LASER_PARAM, &lazerTime, 0);
*onTime = (lazerTime & 0xFF);
*offTime = ((lazerTime >> 8) & 0xFF);
*onOffTime = ((lazerTime >> 16) & 0xFF);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenProcessingTimeSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu processing time
**
** PARAMETERS: MV_U32 packetTailGuard
** MV_U32 tailGuard
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenTailGuardSet(MV_U32 packetTailGuard, MV_U32 tailGuard)
{
MV_STATUS status;
MV_U32 guard;
guard = ((packetTailGuard & 0xFF) << 8) |
(tailGuard & 0xFF);
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_TAIL_GUARD, guard, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenSyncTimeSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu sync time
**
** PARAMETERS: MV_U32 syncTime
** MV_U32 addSyncTime
** MV_U32 forceSwUpdate
** MV_U32 disAutoUpdate
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenSyncTimeSet(MV_U32 syncTime,
MV_U32 addSyncTime,
MV_U32 forceSwUpdate,
MV_U32 disGateAutoUpdate,
MV_U32 disDiscoveryAutoUpdate)
{
MV_STATUS status;
MV_U32 sync;
sync = ((addSyncTime & 0x00FF) << 24) |
((disDiscoveryAutoUpdate & 0x0001) << 18) |
((disGateAutoUpdate & 0x0001) << 17) |
((forceSwUpdate & 0x0001) << 16) |
(syncTime & 0xFFFF);
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_SYNC_TIME, sync, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenSyncTimeGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return onu sync time
**
** PARAMETERS: MV_U32 *syncTime
** MV_U32 *addSyncTime
** MV_U32 *forceSwUpdate
** MV_U32 *disAutoUpdate
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenSyncTimeGet(MV_U32 *syncTime,
MV_U32 *addSyncTime,
MV_U32 *forceSwUpdate,
MV_U32 *disGateAutoUpdate,
MV_U32 *disDiscoveryAutoUpdate)
{
MV_STATUS status;
MV_U32 sync;
status = asicOntGlbRegRead(mvAsicReg_EPON_GEN_SYNC_TIME, &sync, 0);
*addSyncTime = ((sync >> 24) & 0x00FF);
*disDiscoveryAutoUpdate = ((sync >> 18) & 0x0001);
*disGateAutoUpdate = ((sync >> 17) & 0x0001);
*forceSwUpdate = ((sync >> 16) & 0x0001);
*syncTime = ((sync) & 0xFFFF);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenBcastAddrSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu mac broadcast address
**
** PARAMETERS: MV_U32 bcastMacAddrHigh
** MV_U32 bcastMacAddrLow
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenBcastAddrSet(MV_U32 bcastMacAddrHigh, MV_U32 bcastMacAddrLow)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_BROADCAST_ADDR_LOW, bcastMacAddrLow, 0);
status |= asicOntGlbRegWrite(mvAsicReg_EPON_GEN_BROADCAST_ADDR_HIGH, bcastMacAddrHigh & 0xFFFF, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenSyncTimeSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu configuration
**
** PARAMETERS: MV_U32 rxFec
** MV_U32 txFec
** MV_U32 reportAutoResponse
** MV_U32 ackAutoResponse
** MV_U32 requestAutoResponse
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenOnuConfigSet(MV_U32 rxPcsFecEn,
MV_U32 txPcsFecEn,
MV_U32 reportAutoResponse,
MV_U32 ackAutoResponse,
MV_U32 requestAutoResponse,
MV_U32 txFecEn)
{
MV_STATUS status;
MV_U32 config;
config = ((txFecEn & 0x00FF) << 8) |
((requestAutoResponse & 0x0001) << 6) |
((ackAutoResponse & 0x0001) << 5) |
((reportAutoResponse & 0x0001) << 4) |
((rxPcsFecEn & 0x0001) << 1) |
(txPcsFecEn & 0x0001);
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_CONFIGURATION, config, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenOnuConfigAutoReportSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu configuration auto report
**
** PARAMETERS: MV_U32 reportAutoResponse
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenOnuConfigAutoReportSet(MV_U32 reportAutoResponse)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_CONFIGURATION_AUTO_REPORT, reportAutoResponse, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenOnuConfigAutoAckSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu configuration auto ack
**
** PARAMETERS: MV_U32 ackAutoResponse
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenOnuConfigAutoAckSet(MV_U32 ackAutoResponse)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_CONFIGURATION_AUTO_ACK, ackAutoResponse, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenOnuConfigAutoRequestSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu configuration auto response
**
** PARAMETERS: MV_U32 requestAutoResponse
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenOnuConfigAutoRequestSet(MV_U32 requestAutoResponse)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_CONFIGURATION_AUTO_REQUEST, requestAutoResponse, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenSldSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu SLD
**
** PARAMETERS: MV_U32 sld
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenSldSet(MV_U32 sld)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_SLD, sld, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenCtrlTypeSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set control type (Ether type)
**
** PARAMETERS: MV_U32 sld
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenCtrlTypeSet(MV_U32 type)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_MAC_CONTROL_TYPE, type, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenLocalTimeStampSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu local timestamp
**
** PARAMETERS: MV_U32 timeStamp
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenLocalTimeStampSet(MV_U32 timeStamp)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_LOCAL_TIMESTAMP, timeStamp, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenLocalTimeStampGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return onu local timestamp
**
** PARAMETERS: MV_U32 *timeStamp
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenLocalTimeStampGet(MV_U32 *timeStamp)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_GEN_LOCAL_TIMESTAMP, timeStamp, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenPendGrantSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu pending grants
**
** PARAMETERS: MV_U32 grant
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenPendGrantSet(MV_U32 grant)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_NUM_OF_PENDING_GRANTS, grant, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenPendGrantSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return onu SGL status
**
** PARAMETERS: MV_U32 *status
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenSglStatusGet(MV_U32 *sglStatus)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_GEN_SGL_STATUS, sglStatus, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenPonPhyDbgSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu PON phy debug
**
** PARAMETERS: MV_U32 ponDebug
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenPonPhyDbgSet(MV_U32 ponDebug)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_PON_PHY_DEBUG, ponDebug, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenPonPhyDbgGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return onu PON phy debug
**
** PARAMETERS: MV_U32 *ponDebug
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenPonPhyDbgGet(MV_U32 *ponDebug)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_GEN_PON_PHY_DEBUG, ponDebug, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenSglSwReset
** ____________________________________________________________________________
**
** DESCRIPTION: The function return onu SGL sw reset
**
** PARAMETERS: MV_U32 swReset
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenSglSwReset(MV_U32 swReset)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_SGL_SW_RESET, swReset, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenSglConfig
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu SGL configuration
**
** PARAMETERS: startThreshold
** dataAlignment
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenSglConfig(MV_U32 startThreshold,
MV_U32 dataAlignment)
{
MV_STATUS status;
MV_U32 config;
config = ((dataAlignment & 0x0001) << 4) |
(startThreshold & 0x000F);
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_SGL_CONFIG, config, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenSglDebounceConfig
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu SGL Debounce configuration
**
** PARAMETERS: MV_U32 polarity
** MV_U32 threshold
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenSglDebounceConfig(MV_U32 polarity,
MV_U32 threshold)
{
MV_STATUS status;
MV_U32 config;
config = ((polarity & 0x0001) << 16) |
(threshold & 0xFFFF);
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_SGL_DEBOUNCE_CONFIG, config, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenSglDebounceEnable
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu SGL Debounce enable
**
** PARAMETERS: MV_U32 enable
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenSglDebounceEnable(MV_U32 enable)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_SGL_DEBOUNCE_ENABLE, enable, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenChurningKeySet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu churning key
**
** PARAMETERS: MV_U32 enable
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenChurningKeySet(MV_U32 key)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_TCH_CHURNING_KEY, key, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenOpcodeSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu additional opcode
**
** PARAMETERS: MV_U32 opcodeType
** MV_U32 value
** MV_U32 index
** MV_U32 timestamp
** MV_U32 valid
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenOpcodeSet(MV_U32 opcodeType,
MV_U32 value,
MV_U32 index,
MV_U32 timestamp,
MV_U32 valid)
{
MV_STATUS status = MV_OK;
MV_U32 opcode;
opcode = ((valid & 0x0001) << 20) |
((timestamp & 0x0001) << 19) |
((index & 0x0007) << 16) |
(value & 0xFFFF);
if (opcodeType == ADDITIONAL_OPCODE_1)
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_ADDITIONAL_OPCODE1, opcode, 0);
else if (opcodeType == ADDITIONAL_OPCODE_2)
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_ADDITIONAL_OPCODE2, opcode, 0);
else if (opcodeType == ADDITIONAL_OPCODE_3)
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_ADDITIONAL_OPCODE3, opcode, 0);
return(status);
}
#ifdef PON_Z2
/*******************************************************************************
**
** mvOnuEponMacGenTimestampConfig
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu timestamp configuration
**
** PARAMETERS: MV_U32 threshold
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenTimestampConfig(MV_U32 gpmAddSyncTimeToTimestamp,
MV_U32 gpmAimestampOffset,
MV_U32 txmAddSyncTimeToTimestamp,
MV_U32 txmUseTimestampImage,
MV_U32 txmTimestampOffset)
{
MV_STATUS status;
MV_U32 timestampConfig;
timestampConfig = ((gpmAddSyncTimeToTimestamp & 0x0001) << 31) |
((gpmAimestampOffset & 0x07FF) << 16) |
((txmAddSyncTimeToTimestamp & 0x0001) << 15) |
((txmUseTimestampImage & 0x0001) << 14) |
(txmTimestampOffset & 0x07FF);
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_TIMESTAMP_CONFIG, timestampConfig, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenRxTimestampConfigSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu RX timestamp configuration
**
** PARAMETERS:
** MV_U32 rxpTimestampSelect - 0 or 1
** MV_U32 rxpTimestampSign - 0 or 1
** MV_U32 rxpTimestampOffset - 0 to 0x7FF
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenRxTimestampConfigSet(MV_U32 rxpTimestampSelect,
MV_U32 rxpTimestampSign,
MV_U32 rxpTimestampOffset)
{
MV_U32 timestampConfig;
timestampConfig = ((rxpTimestampSelect & 0x1) << 15) |
((rxpTimestampSign & 0x1) << 11) |
(rxpTimestampOffset & 0x07FF);
return(asicOntGlbRegWrite(mvAsicReg_EPON_GEN_ONT_RX_TIMESTAMP_CONFIG, timestampConfig, 0));
}
/*******************************************************************************
**
** mvOnuEponMacGenRxTimestampConfigGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function reads onu RX timestamp configuration
**
** PARAMETERS:
** MV_U32 *rxpTimestampSelect - 0 or 1
** MV_U32 *rxpTimestampSign - 0 or 1
** MV_U32 *rxpTimestampOffset - 0 to 0x7FF
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenRxTimestampConfigGet(MV_U32 *rxpTimestampSelect,
MV_U32 *rxpTimestampSign,
MV_U32 *rxpTimestampOffset)
{
MV_STATUS status;
MV_U32 timestampConfig;
if ((rxpTimestampSelect == 0) || (rxpTimestampSign == 0) || (rxpTimestampOffset == 0))
return(MV_BAD_PARAM);
status = asicOntGlbRegRead(mvAsicReg_EPON_GEN_ONT_RX_TIMESTAMP_CONFIG, &timestampConfig, 0);
if (status == MV_OK) {
*rxpTimestampSelect = (timestampConfig >> 15) & 0x1;
*rxpTimestampSign = (timestampConfig >> 11) & 0x1;
*rxpTimestampOffset = timestampConfig & 0x7FF;
}
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenRegPacketPaddingGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function gets onu packet padding
**
** PARAMETERS:
** MV_U32 regAckPadding - padding value for Ack (0 - 0xFF)
** MV_U32 regReqPadding - padding value for Request (0 - 0xFF)
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenRegPacketPaddingGet(MV_U32 *regAckPadding, MV_U32 *regReqPadding)
{
MV_STATUS status;
MV_U32 paddingConfig;
if ((regAckPadding == 0) || (regReqPadding == 0))
return(MV_BAD_PARAM);
status = asicOntGlbRegRead(mvAsicReg_EPON_GEN_ONT_REGISTER_PACKET_PADDING, &paddingConfig, 0);
if (status == MV_OK) {
*regAckPadding = (paddingConfig >> 8) & 0xFF;
*regReqPadding = paddingConfig & 0xFF;
}
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenRegPacketPaddingSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function sets onu packet padding
**
** PARAMETERS:
** MV_U32 *regAckPadding - padding value for Ack
** MV_U32 *regReqPadding - padding value for Request
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenRegPacketPaddingSet(MV_U32 regAckPadding, MV_U32 regReqPadding)
{
MV_U32 paddingConfig;
paddingConfig = ((regAckPadding & 0xFF) << 8) | (regReqPadding & 0xFF);
return(asicOntGlbRegWrite(mvAsicReg_EPON_GEN_ONT_REGISTER_PACKET_PADDING, paddingConfig, 0));
}
#endif /* PON_Z2 */
/*******************************************************************************
**
** mvOnuEponMacGenDriftThresholdSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu drift threshold
**
** PARAMETERS: MV_U32 threshold
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenDriftThresholdSet(MV_U32 threshold)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_DRIFT_THRESHOLD, threshold, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenTimeStampForIntrSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu timestamp for interrupt
**
** PARAMETERS: MV_U32 timestamp
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenTimeStampForIntrSet(MV_U32 timestamp)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_TIMESTAMP_VAL_FOR_INTR, timestamp, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenTimeStampForIntrGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function get onu timestamp for interrupt
**
** PARAMETERS: MV_U32 *timestamp
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenTimeStampForIntrGet(MV_U32 *timestamp)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_GEN_TIMESTAMP_VAL_FOR_INTR, timestamp, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenUcastAddrSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu mac address
**
** PARAMETERS: MV_U32 ucastMacAddrHigh
** MV_U32 ucastMacAddrLow
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenUcastAddrSet(MV_U32 ucastMacAddrHigh, MV_U32 ucastMacAddrLow, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_MAC_ADDR_LOW, ucastMacAddrLow, macId);
status |= asicOntGlbRegWrite(mvAsicReg_EPON_GEN_MAC_ADDR_HIGH, ucastMacAddrHigh & 0xFFFF, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenUtmTcPeriodSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu TC period
**
** PARAMETERS: MV_U32 tcPeriod
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenUtmTcPeriodSet(MV_U32 tcPeriod)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_UTM_TC_PERIOD, tcPeriod, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenUtmTcPeriodEnSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu TC period enable
**
** PARAMETERS: MV_U32 tcPeriodEnable
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenUtmTcPeriodEnSet(MV_U32 tcPeriodEnable)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_UTM_TC_PERIOD_VALID, tcPeriodEnable, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenGemIpgValueSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu IPG value
**
** PARAMETERS: MV_U32 ipgVal
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenGemIpgValueSet(MV_U32 ipgVal)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_GEM_IPG_VAL, ipgVal, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGenGemIpgValueEnSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set onu IPG value enable
**
** PARAMETERS: MV_U32 ipgValEn
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGenGemIpgValueEnSet(MV_U32 ipgValEn)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GEN_GEM_IPG_VAL_VALID, ipgValEn, 0);
return(status);
}
/* ========================================================================== */
/* RXP Functions Section */
/* ========================================================================== */
/*******************************************************************************
**
** mvOnuEponMacRxpPacketSizeLimitSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set packet min / mac size
**
** PARAMETERS: MV_U32 minSize
** MV_U32 maxSize
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxpPacketSizeLimitSet(MV_U32 minSize,
MV_U32 maxSize)
{
MV_STATUS status;
MV_U32 size;
size = ((maxSize & 0x0FFF) << 16) |
(minSize & 0x0FFF);
status = asicOntGlbRegWrite(mvAsicReg_EPON_RXP_PACKET_SIZE_LIMIT, size, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxpPacketSizeLimitGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return packet min / mac size
**
** PARAMETERS: MV_U32 *minSize
** MV_U32 *maxSize
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxpPacketSizeLimitGet(MV_U32 *minSize,
MV_U32 *maxSize)
{
MV_STATUS status;
MV_U32 size;
status = asicOntGlbRegRead(mvAsicReg_EPON_RXP_PACKET_SIZE_LIMIT, &size, 0);
*minSize = size & 0x0FFF;
*maxSize = (size >> 16) & 0x0FFF;
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxpPacketFilterSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set packet filtering
**
** PARAMETERS: MV_U32 ignoreLlidCrcError
** MV_U32 ignoreFcsError
** MV_U32 ignoreGmiiError
** MV_U32 ignoreLengthError
** MV_U32 forwardAllLlid
** MV_U32 forwardBc0FFF
** MV_U32 forwardBc1FFF
** MV_U32 forwardBc1xxx
** MV_U32 dropBc1nnn
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxpPacketFilterSet(MV_U32 ignoreLlidCrcError,
MV_U32 ignoreFcsError,
MV_U32 ignoreGmiiError,
MV_U32 ignoreLengthError,
MV_U32 forwardAllLlid,
MV_U32 forwardBc0FFF,
MV_U32 forwardBc1FFF,
MV_U32 forwardBc1xxx,
MV_U32 dropBc1nnn)
{
MV_STATUS status;
MV_U32 filter;
filter = ((dropBc1nnn & 0x0001) << 8) |
((forwardBc1xxx & 0x0001) << 7) |
((forwardBc1FFF & 0x0001) << 6) |
((forwardBc0FFF & 0x0001) << 5) |
((forwardAllLlid & 0x0001) << 4) |
((ignoreLengthError & 0x0001) << 3) |
((ignoreGmiiError & 0x0001) << 2) |
((ignoreFcsError & 0x0001) << 1) |
(ignoreLlidCrcError & 0x0001);
status = asicOntGlbRegWrite(mvAsicReg_EPON_RXP_PACKET_FILTER, filter, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxpPacketFilterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return packet filtering
**
** PARAMETERS: MV_U32 *ignoreLlidCrcError
** MV_U32 *ignoreFcsError
** MV_U32 *ignoreGmiiError
** MV_U32 *ignoreLengthError
** MV_U32 *forwardAllLlid
** MV_U32 *forwardBc0FFF
** MV_U32 *forwardBc1FFF
** MV_U32 *forwardBc1xxx
** MV_U32 *dropBc1nnn
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxpPacketFilterGet(MV_U32 *ignoreLlidCrcError,
MV_U32 *ignoreFcsError,
MV_U32 *ignoreGmiiError,
MV_U32 *ignoreLengthError,
MV_U32 *forwardAllLlid,
MV_U32 *forwardBc0FFF,
MV_U32 *forwardBc1FFF,
MV_U32 *forwardBc1xxx,
MV_U32 *dropBc1nnn)
{
MV_STATUS status;
MV_U32 filter;
status = asicOntGlbRegRead(mvAsicReg_EPON_RXP_PACKET_FILTER, &filter, 0);
*dropBc1nnn = ((filter >> 8) & 0x0001);
*forwardBc1xxx = ((filter >> 7) & 0x0001);
*forwardBc1FFF = ((filter >> 6) & 0x0001);
*forwardBc0FFF = ((filter >> 5) & 0x0001);
*forwardAllLlid = ((filter >> 4) & 0x0001);
*ignoreLengthError = ((filter >> 3) & 0x0001);
*ignoreGmiiError = ((filter >> 2) & 0x0001);
*ignoreFcsError = ((filter >> 1) & 0x0001);
*ignoreLlidCrcError = ( filter & 0x0001);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxpPacketForwardSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set packet forwarding
**
** PARAMETERS: MV_U32 ctrlFrameToDataQueue
** MV_U32 ctrlFrameToCtrlQueue
** MV_U32 rprtFrameToDataQueue
** MV_U32 rprtFrameToRprtQueue
** MV_U32 slowFrameToRprtQueue
** MV_U32 slowFrameToCtrlQueue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxpPacketForwardSet(MV_U32 ctrlFrameToDataQueue,
MV_U32 ctrlFrameToCtrlQueue,
MV_U32 rprtFrameToDataQueue,
MV_U32 rprtFrameToRprtQueue,
MV_U32 slowFrameToRprtQueue,
MV_U32 slowFrameToCtrlQueue)
{
MV_STATUS status;
MV_U32 forward;
forward = ((slowFrameToCtrlQueue & 0x0001) << 5) |
((slowFrameToRprtQueue & 0x0001) << 4) |
((rprtFrameToRprtQueue & 0x0001) << 3) |
((rprtFrameToDataQueue & 0x0001) << 2) |
((ctrlFrameToCtrlQueue & 0x0001) << 1) |
(ctrlFrameToDataQueue & 0x0001);
status = asicOntGlbRegWrite(mvAsicReg_EPON_RXP_CTRL_FRAME_FORWARD, forward, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxpPacketForwardGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return packet forwarding
**
** PARAMETERS: MV_U32 *ctrlFrameToDataQueue
** MV_U32 *ctrlFrameToCtrlQueue
** MV_U32 *rprtFrameToDataQueue
** MV_U32 *rprtFrameToRprtQueue
** MV_U32 *slowFrameToRprtQueue
** MV_U32 *slowFrameToCtrlQueue
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxpPacketForwardGet(MV_U32 *ctrlFrameToDataQueue,
MV_U32 *ctrlFrameToCtrlQueue,
MV_U32 *rprtFrameToDataQueue,
MV_U32 *rprtFrameToRprtQueue,
MV_U32 *slowFrameToRprtQueue,
MV_U32 *slowFrameToCtrlQueue)
{
MV_STATUS status;
MV_U32 forward;
status = asicOntGlbRegRead(mvAsicReg_EPON_RXP_CTRL_FRAME_FORWARD, &forward, 0);
*slowFrameToCtrlQueue = ((forward >> 5) & 0x0001);
*slowFrameToRprtQueue = ((forward >> 4) & 0x0001);
*rprtFrameToRprtQueue = ((forward >> 3) & 0x0001);
*rprtFrameToDataQueue = ((forward >> 2) & 0x0001);
*ctrlFrameToCtrlQueue = ((forward >> 1) & 0x0001);
*ctrlFrameToDataQueue = ( forward & 0x0001);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxpLlidDataSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set LLID Data entry
**
** PARAMETERS: MV_U32 llid
** MV_U32 index
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxpLlidDataSet(MV_U32 llid, MV_U32 index)
{
MV_STATUS status;
if (index >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegWrite(mvAsicReg_EPON_RXP_LLT_LLID_DATA, llid, index);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxpLlidDataGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return LLID Data entry
**
** PARAMETERS: MV_U32 *llid
** MV_U32 index
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxpLlidDataGet(MV_U32 *llid, MV_U32 index)
{
MV_STATUS status;
if (index >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_RXP_LLT_LLID_DATA, llid, index);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxpEncConfigSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set Encryption configuration
**
** PARAMETERS: MV_U32 config
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxpEncConfigSet(MV_U32 config)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_RXP_ENCRYPTION_CONFIG, config, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxpEncConfigGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return Encryption configuration
**
** PARAMETERS: MV_U32 *config
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxpEncConfigGet(MV_U32 *config)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_RXP_ENCRYPTION_CONFIG, config, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxpEncKeySet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set Encryption key
**
** PARAMETERS: MV_U32 key
** MV_U32 index
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxpEncKeySet(MV_U32 key, MV_U32 index, MV_U32 macId)
{
MV_STATUS status = MV_OK;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
if (index == 0)
{
status = asicOntGlbRegWrite(mvAsicReg_EPON_RXP_ENCRYPTION_KEY0, key, macId);
}
else if (index == 1)
{
status = asicOntGlbRegWrite(mvAsicReg_EPON_RXP_ENCRYPTION_KEY1, key, macId);
}
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxpEncKeyGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set Encryption key
**
** PARAMETERS: MV_U32 *keyIndex0
** MV_U32 *keyIndex1
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxpEncKeyGet(MV_U32 *keyIndex0, MV_U32 *keyIndex1, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_RXP_ENCRYPTION_KEY0, keyIndex0, macId);
status |= asicOntGlbRegRead(mvAsicReg_EPON_RXP_ENCRYPTION_KEY1, keyIndex1, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxpDataFifoThresholdSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function sets Data FIFO Threshold
**
** PARAMETERS: MV_U32 threshold
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxpDataFifoThresholdSet(MV_U32 threshold)
{
return(asicOntGlbRegWrite(mvAsicReg_EPON_RXP_DATA_FIFO_THRESH, threshold, 0));
}
/*******************************************************************************
**
** mvOnuEponMacRxpDataFifoThresholdGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function gets Data FIFO Threshold
**
** PARAMETERS: MV_U32 *threshold
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxpDataFifoThresholdGet(MV_U32 *threshold)
{
return(asicOntGlbRegRead(mvAsicReg_EPON_RXP_DATA_FIFO_THRESH, threshold, 0));
}
/* ========================================================================== */
/* GPM Functions Section */
/* ========================================================================== */
/*******************************************************************************
**
** mvOnuEponMacGpmMacFutureGrantTimeSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set future grants
**
** PARAMETERS: MV_U32 grant
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGpmMacFutureGrantTimeSet(MV_U32 grant)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_GPM_MAX_FUTURE_GRANT_TIME, grant, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGpmMinProcessingTimeSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set min processing time
**
** PARAMETERS: MV_U32 processingTime
** MV_U32 effectiveLength
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGpmMinProcessingTimeSet(MV_U32 processingTime, MV_U32 effectiveLength)
{
MV_STATUS status;
MV_U32 minProcTime;
minProcTime = ((effectiveLength & 0x00FF) << 16) |
(processingTime & 0xFFFF);
status = asicOntGlbRegWrite(mvAsicReg_EPON_GPM_MIN_PROCESSING_TIME, minProcTime, 0);
return(status);
}
#ifdef PON_Z2
/*******************************************************************************
**
** mvOnuEponMacGpmDiscoveryGrantLengthSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set discovery grant length
**
** PARAMETERS: MV_U32 grantLength
** MV_U32 addOffsetForCalc
** MV_U32 grantLengthMultiTq
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGpmDiscoveryGrantLengthSet(MV_U32 grantLength,
MV_U32 addOffsetForCalc,
MV_U32 grantLengthMultiTq)
{
MV_STATUS status;
MV_U32 discoveryGrantLength;
discoveryGrantLength = ((grantLengthMultiTq & 0x0FFF) << 16) |
((addOffsetForCalc & 0x000F) << 12) |
(grantLength & 0x0FFF);
status = asicOntGlbRegWrite(mvAsicReg_EPON_GPM_DISCOVERY_GRANT_LENGTH, discoveryGrantLength, 0);
return(status);
}
#endif /* PON_Z2 */
#ifdef PON_Z1
/*******************************************************************************
**
** mvOnuEponMacGpmDiscoveryGrantLengthSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set discovery grant length
**
** PARAMETERS: MV_U32 grantLength
** MV_U32 grantLengthMultiTq
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGpmDiscoveryGrantLengthSet(MV_U32 grantLength, MV_U32 grantLengthMultiTq)
{
MV_STATUS status;
MV_U32 discoveryGrantLength;
discoveryGrantLength = ((grantLengthMultiTq & 0x0FFF) << 16) |
(grantLength & 0x0FFF);
status = asicOntGlbRegWrite(mvAsicReg_EPON_GPM_DISCOVERY_GRANT_LENGTH, discoveryGrantLength, 0);
return(status);
}
#endif /* PON_Z1 */
/*******************************************************************************
**
** mvOnuEponMacGpmRxSyncGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return Rx sync time
**
** PARAMETERS: MV_U32 *syncTime
** MV_U32 *syncTimeUpdateInd
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGpmRxSyncGet(MV_U32 *syncTime, MV_U32 *syncTimeUpdateInd)
{
MV_STATUS status;
MV_U32 time;
status = asicOntGlbRegRead(mvAsicReg_EPON_GPM_RX_SYNC_TIME, &time, 0);
*syncTimeUpdateInd = ((time >> 16) & 0x0001);
*syncTime = (time & 0xFFFF);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGpmGrantValidCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return GPM counters
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGpmGrantValidCounterGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_GPM_GRANT_VALID, counter, macId);
return(status);
}
/*****************************************************S**************************
**
** mvOnuEponMacGpmGrantMaxFutureTimeErrorCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return GPM counters
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGpmGrantMaxFutureTimeErrorCounterGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_GPM_GRANT_MAX_FUTURE_TIME_ERR, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGpmMinProcTimeErrorCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return GPM counters
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGpmMinProcTimeErrorCounterGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_GPM_MIN_PROC_TIME_ERR, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGpmLengthErrorCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return GPM counters
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGpmLengthErrorCounterGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_GPM_LENGTH_ERR, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGpmDiscoveryAndRegisterCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return GPM counters
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGpmDiscoveryAndRegisterCounterGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_GPM_DISCOVERY_AND_REGISTERED_ERR, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGpmFifoFullErrorCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return GPM counters
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGpmFifoFullErrorCounterGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_GPM_FIFO_FULL_ERR, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGpmOpcDiscoveryNotRegisterBcastCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return GPM counters
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGpmOpcDiscoveryNotRegisterBcastCounterGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_GPM_OPC_DISC_NOT_REG_BCAST, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGpmOpcRegisterNotDiscoveryCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return GPM counters
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGpmOpcRegisterNotDiscoveryCounterGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_GPM_OPC_REG_NOT_DISC, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGpmOpcDiscoveryNotRegisterNotBcastCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return GPM counters
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGpmOpcDiscoveryNotRegisterNotBcastCounterGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_GPM_OPC_DISC_NOT_REG_NOT_BCAST, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGpmOpcDropGrantCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return GPM counters
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGpmOpcDropGrantCounterGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_GPM_OPC_DROPED_GRANT, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGpmOpcHiddenGrantCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return GPM counters
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGpmOpcHiddenGrantCounterGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_GPM_OPC_HIDDEN_GRANT, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacGpmOpcBackToBackCounterGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return GPM counters
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacGpmOpcBackToBackCounterGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_GPM_OPC_BACK_TO_BACK_GRANT, counter, macId);
return(status);
}
/* ========================================================================== */
/* TXM Functions Section */
/* ========================================================================== */
/*******************************************************************************
**
** mvOnuEponMacTxmOverheadSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set TX module overhead
**
** PARAMETERS: MV_U32 overhead
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmOverheadSet(MV_U32 overhead)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_TXM_DEFAULT_OVERHEAD, overhead, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxmOverheadGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function get TX module overhead
**
** PARAMETERS: None
**
** OUTPUTS: MV_U32 overhead
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmOverheadGet(MV_U32 *overhead)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_TXM_DEFAULT_OVERHEAD, overhead, 0);
return(status);
}
#ifdef PON_Z2
/*******************************************************************************
**
** mvOnuEponMacTxmConfigSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set TX configuration
**
** PARAMETERS: MV_U32 mode
** MV_U32 alignment
** MV_U32 priority
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmConfigSet(MV_U32 tFec1Cfg, MV_U32 tFec2Cfg, MV_U32 ctrlFifoDisFcs,
MV_U32 maskGmiiSignal, MV_U32 blockDataFromDataPath,
MV_U32 addIpgToLenCalc, MV_U32 mode, MV_U32 alignment,
MV_U32 priority)
{
MV_STATUS status;
MV_U32 config;
config = ((tFec1Cfg & 0x0007) << 13) |
((tFec2Cfg & 0x0007) << 10) |
((ctrlFifoDisFcs & 0x0001) << 8) |
((maskGmiiSignal & 0x0001) << 7) |
((blockDataFromDataPath & 0x0001) << 6) |
((addIpgToLenCalc & 0x0001) << 5) |
((mode & 0x0003) << 3) |
((alignment & 0x0003) << 1) |
(priority & 0x0001);
status = asicOntGlbRegWrite(mvAsicReg_EPON_TXM_CONFIGURATION, config, 0);
return(status);
}
#endif /* PON_Z2 */
#ifdef PON_Z1
/*******************************************************************************
**
** mvOnuEponMacTxmConfigSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set TX configuration
**
** PARAMETERS: MV_U32 mode
** MV_U32 alignment
** MV_U32 priority
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmConfigSet(MV_U32 mode, MV_U32 alignment, MV_U32 priority)
{
MV_STATUS status;
MV_U32 config;
config = ((mode & 0x0003) << 3) |
((alignment & 0x0003) << 1) |
(priority & 0x0001);
status = asicOntGlbRegWrite(mvAsicReg_EPON_TXM_CONFIGURATION, config, 0);
return(status);
}
#endif /* PON_Z1 */
/*******************************************************************************
**
** mvOnuEponMacTxmLlidSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set TX LLID
**
** PARAMETERS: MV_U32 llid
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmLlidSet(MV_U32 llid, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegWrite(mvAsicReg_EPON_TXM_TX_LLID, llid, macId);
return(status);
}
#ifdef PON_Z2
/*******************************************************************************
**
** mvOnuEponMacTxmCppReportConfig
** ____________________________________________________________________________
**
** DESCRIPTION: The function set TX CPP Report configuration
**
** PARAMETERS: MV_U32 config
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmCppReportConfig(MV_U32 queueReportQ2, MV_U32 reportBitmapQ2,
MV_U32 queueReport, MV_U32 queueSet,
MV_U32 reportBitmap, MV_U32 macId)
{
MV_STATUS status;
MV_U32 config;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
config = ((queueReportQ2 & 0x00FF) << 18) |
((reportBitmapQ2 & 0x0001) << 16) |
((queueReport & 0x00FF) << 2) |
((queueSet & 0x0003) << 1) |
(reportBitmap & 0x0001);
status = asicOntGlbRegWrite(mvAsicReg_EPON_TXM_CPP_RPRT_CONFIG, config, macId);
return(status);
}
#endif /* PON_Z2 */
#ifdef PON_Z1
/*******************************************************************************
**
** mvOnuEponMacTxmCppReportConfig
** ____________________________________________________________________________
**
** DESCRIPTION: The function set TX CPP Report configuration
**
** PARAMETERS: MV_U32 config
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmCppReportConfig(MV_U32 config, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegWrite(mvAsicReg_EPON_TXM_CPP_RPRT_CONFIG, config, macId);
return(status);
}
#endif /* PON_Z1 */
/*******************************************************************************
**
** mvOnuEponMacTxmCppReportBitMap
** ____________________________________________________________________________
**
** DESCRIPTION: The function set TX CPP Report Bit Map
**
** PARAMETERS: MV_U32 bitMap
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmCppReportBitMap(MV_U32 bitMap, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegWrite(mvAsicReg_EPON_TXM_CPP_RPRT_BIT_MAP, bitMap, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxmCppReportBitMapGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set TX CPP Report Bit Map
**
** PARAMETERS: MV_U32 bitMap
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmCppReportBitMapGet(MV_U32 *bitMap, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_TXM_CPP_RPRT_BIT_MAP, bitMap, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxmCppReportQueueSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set TX CPP Report Queue Set
**
** PARAMETERS: MV_U32 queueSet
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmCppReportQueueSet(MV_U32 queueSet, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegWrite(mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_SET, queueSet, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxmCppReportQueueSetGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return TX CPP Report Queue Set
**
** PARAMETERS: MV_U32 *queueSet
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmCppReportQueueSetGet(MV_U32 *queueSet, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_SET, queueSet, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxmCppReportQueue0
** ____________________________________________________________________________
**
** DESCRIPTION: The function return TX CPP Report Queue
**
** PARAMETERS: MV_U32 queue
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmCppReportQueue0(MV_U32 queue, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegWrite(mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_0, queue, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxmCppReportQueue1
** ____________________________________________________________________________
**
** DESCRIPTION: The function return TX CPP Report Queue
**
** PARAMETERS: MV_U32 queue
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmCppReportQueue1(MV_U32 queue, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegWrite(mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_1, queue, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxmCppReportQueue2
** ____________________________________________________________________________
**
** DESCRIPTION: The function return TX CPP Report Queue
**
** PARAMETERS: MV_U32 queue
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmCppReportQueue2(MV_U32 queue, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegWrite(mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_2, queue, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxmCppReportQueue3
** ____________________________________________________________________________
**
** DESCRIPTION: The function return TX CPP Report Queue
**
** PARAMETERS: MV_U32 queue
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmCppReportQueue3(MV_U32 queue, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegWrite(mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_3, queue, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxmCppReportQueue4
** ____________________________________________________________________________
**
** DESCRIPTION: The function return TX CPP Report Queue
**
** PARAMETERS: MV_U32 queue
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmCppReportQueue4(MV_U32 queue, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegWrite(mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_4, queue, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxmCppReportQueue5
** ____________________________________________________________________________
**
** DESCRIPTION: The function return TX CPP Report Queue
**
** PARAMETERS: MV_U32 queue
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmCppReportQueue5(MV_U32 queue, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegWrite(mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_5, queue, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxmCppReportQueue6
** ____________________________________________________________________________
**
** DESCRIPTION: The function return TX CPP Report Queue
**
** PARAMETERS: MV_U32 queue
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmCppReportQueue6(MV_U32 queue, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegWrite(mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_6, queue, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxmCppReportQueue7
** ____________________________________________________________________________
**
** DESCRIPTION: The function return TX CPP Report Queue
**
** PARAMETERS: MV_U32 queue
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmCppReportQueue7(MV_U32 queue, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegWrite(mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_7, queue, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxmCppReportQueueX
** ____________________________________________________________________________
**
** DESCRIPTION: The function return TX CPP Report Queue 0 - 7
**
** PARAMETERS: MV_U32 queue
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmCppReportQueueX(MV_U32 queueNum, MV_U32 queueCfg, MV_U32 macId)
{
MV_STATUS status = MV_OK;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
if (queueNum == 0) {status |= mvOnuEponMacTxmCppReportQueue0(queueCfg, macId); }
else if (queueNum == 1) {status |= mvOnuEponMacTxmCppReportQueue1(queueCfg, macId); }
else if (queueNum == 2) {status |= mvOnuEponMacTxmCppReportQueue2(queueCfg, macId); }
else if (queueNum == 3) {status |= mvOnuEponMacTxmCppReportQueue3(queueCfg, macId); }
else if (queueNum == 4) {status |= mvOnuEponMacTxmCppReportQueue4(queueCfg, macId); }
else if (queueNum == 5) {status |= mvOnuEponMacTxmCppReportQueue5(queueCfg, macId); }
else if (queueNum == 6) {status |= mvOnuEponMacTxmCppReportQueue6(queueCfg, macId); }
else if (queueNum == 7) {status |= mvOnuEponMacTxmCppReportQueue7(queueCfg, macId); }
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxmCppReportUpdate
** ____________________________________________________________________________
**
** DESCRIPTION: The function return TX CPP Report Queue
**
** PARAMETERS: MV_U32 queue
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmCppReportUpdate(MV_U32 validQueueReport, MV_U32 highestReportQueue, MV_U32 macId)
{
MV_STATUS status;
MV_U32 queueNum;
if (macId >= EPON_MAX_MAC_NUM)
return (MV_ERROR);
status = mvOnuEponMacTxmCppReportConfig(0xFF, /* Queueset2 not supported - set to 0xFF (queueReportQ2) */
0x1, /* Queueset2 not supported - set to 0x1, Software (reportBitmapQ2) */
~(validQueueReport & 0xFF), /* Queueset1 supported - set to 0, means all 8 queues are active (queueReport) */
0x1, /* Number of queueSet - support for 1 queueset */
0x1, /* Queueset1 supported - set to 0x1, Software (reportBitmap) */
macId);
status |= mvOnuEponMacTxmCppReportBitMap(validQueueReport & 0xFF, macId); /* Queueset1 - 8 queues enabled(0xFF) , Queueset1 - 8 queues disabled(0x00) */
status |= mvOnuEponMacTxmCppReportQueueSet(0x1, macId); /* Number of queuesets - support for 1 queueset */
for (queueNum = 0; queueNum < ONU_DBA_MAX_QUEUE; queueNum++)
{
if (validQueueReport & (1 << queueNum))
{
if (queueNum == highestReportQueue) {status |= mvOnuEponMacTxmCppReportQueueX(queueNum, 0x000053ff, macId); }
else {status |= mvOnuEponMacTxmCppReportQueueX(queueNum, 0x000003ff, macId); }
}
else
{
status |= mvOnuEponMacTxmCppReportQueueX(queueNum, 0x0, macId);
}
}
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxmCppReportFecConfig
** ____________________________________________________________________________
**
** DESCRIPTION: The function set TX CPP Report FEC config
**
** PARAMETERS: MV_U32 fecConst1
** MV_U32 fecConst2
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxmCppReportFecConfig(MV_U32 fecConst1, MV_U32 fecConst2)
{
MV_STATUS status;
MV_U32 config;
config = ((fecConst2 & 0x00FF) << 16) |
(fecConst1 & 0xFFFF);
status = asicOntGlbRegWrite(mvAsicReg_EPON_TXM_CPP_RPRT_FEC_CONFIG, config, 0);
return(status);
}
/* ========================================================================== */
/* PCS Functions Section */
/* ========================================================================== */
/*******************************************************************************
**
** mvOnuEponMacPcsConfigSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set PCS configuration
**
** PARAMETERS: MV_U32 config
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacPcsConfigSet(MV_U32 config)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_PCS_CONFIGURATION, config, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacPcsConfigGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function get PCS configuration
**
** PARAMETERS: None
**
** OUTPUTS: MV_U32 config
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacPcsConfigGet(MV_U32 *config)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_PCS_CONFIGURATION, config, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacPcsDelaySet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set PCS delay
**
** PARAMETERS: MV_U32 delay
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacPcsDelaySet(MV_U32 delay)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_PCS_DELAY_CONFIG, delay, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacPcsStatsGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function get PCS stats (0,1,2,3,4)
**
** PARAMETERS:
** MV_U32 *legalFrameCnt,
** MV_U32 *maxFrameSizeErrCnt,
** MV_U32 *parityLenErrCnt,
** MV_U32 *longGateErrCnt,
** MV_U32 *protocolErrCnt,
** MV_U32 *minFrameSizeErrCnt,
** MV_U32 *legalFecFrameCnt,
** MV_U32 *legalNonFecFrameCnt
** OUTPUTS:
** Counter values assigned to input parameters
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacPcsStatsGet(MV_U32 *legalFrameCnt,
MV_U32 *maxFrameSizeErrCnt,
MV_U32 *parityLenErrCnt,
MV_U32 *longGateErrCnt,
MV_U32 *protocolErrCnt,
MV_U32 *minFrameSizeErrCnt,
MV_U32 *legalFecFrameCnt,
MV_U32 *legalNonFecFrameCnt)
{
MV_U32 regVal;
MV_STATUS status;
if ((legalFrameCnt == 0) || (maxFrameSizeErrCnt == 0) ||
(parityLenErrCnt == 0) || (longGateErrCnt == 0) ||
(protocolErrCnt == 0) || (minFrameSizeErrCnt == 0) ||
(legalFecFrameCnt == 0) || (legalNonFecFrameCnt == 0))
return(MV_BAD_PARAM);
status = asicOntGlbRegRead(mvAsicReg_EPON_PCS_STATS_0, &regVal, 0);
*legalFrameCnt = regVal;
status |= asicOntGlbRegRead(mvAsicReg_EPON_PCS_STATS_1, &regVal, 0);
*maxFrameSizeErrCnt = (regVal >> 16) & 0xFFFF;
status |= asicOntGlbRegRead(mvAsicReg_EPON_PCS_STATS_1, &regVal, 0);
*parityLenErrCnt = regVal & 0xFFFF;
status |= asicOntGlbRegRead(mvAsicReg_EPON_PCS_STATS_2, &regVal, 0);
*longGateErrCnt = (regVal >> 16) & 0xFFFF;
status |= asicOntGlbRegRead(mvAsicReg_EPON_PCS_STATS_2, &regVal, 0);
*protocolErrCnt = regVal & 0xFFFF;
status |= asicOntGlbRegRead(mvAsicReg_EPON_PCS_STATS_3, &regVal, 0);
*minFrameSizeErrCnt = regVal & 0xFFFF;
status |= asicOntGlbRegRead(mvAsicReg_EPON_PCS_STATS_4, &regVal, 0);
*legalFecFrameCnt = (regVal >> 16) & 0xFFFF;
status |= asicOntGlbRegRead(mvAsicReg_EPON_PCS_STATS_4, &regVal, 0);
*legalNonFecFrameCnt = regVal & 0xFFFF;
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacPcsFrameSizeLimitsSet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set PCS frame size limits
**
** PARAMETERS: MV_U32 size - maximum frame size
** MV_U32 latency - FEC decoder latency
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacPcsFrameSizeLimitsSet(MV_U32 size, MV_U32 latency)
{
MV_U32 reg_val;
reg_val = size & 0xFFF;
reg_val |= (latency & 0x1FFF) << 16;
return(asicOntGlbRegWrite(mvAsicReg_EPON_PCS_FRAME_SZ_LIMITS, reg_val, 0));
}
/*******************************************************************************
**
** mvOnuEponMacPcsFrameSizeLimitsGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function get PCS frime size limits
**
** PARAMETERS: None
**
** OUTPUTS: MV_U32 *size - maximum framce size
** MV_U32 *latency - FEC decoder latency
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacPcsFrameSizeLimitsGet(MV_U32 *size, MV_U32 *latency)
{
MV_STATUS status;
MV_U32 reg_val;
status = asicOntGlbRegRead(mvAsicReg_EPON_PCS_FRAME_SZ_LIMITS, &reg_val, 0);
if (status == MV_OK) {
*size = reg_val & 0xFFF;
*latency = (reg_val >> 16) & 0x1FFF;
}
return(status);
}
/* ========================================================================== */
/* DDM Functions Section */
/* ========================================================================== */
/*******************************************************************************
**
** mvOnuEponMacDdmDelaySet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set DDM delay
**
** PARAMETERS: MV_U32 delay
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacDdmDelaySet(MV_U32 delay)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_DDM_DELAY_CONFIG, delay, 0);
return(status);
}
#ifdef PON_Z2
/*******************************************************************************
**
** mvOnuEponMacDdmTxPolaritySet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set DDM polarity
**
** PARAMETERS: MV_U32 txEnable
** MV_U32 polarity
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacDdmTxPolaritySet(MV_U32 txEnable, MV_U32 polarity)
{
MV_STATUS status;
MV_U32 config;
config = ((txEnable & 0x3) << 1) |
(polarity & 0x1);
status = asicOntGlbRegWrite(mvAsicReg_EPON_DDM_TX_POLARITY, config, 0);
return(status);
}
#elif defined PON_Z1
/*******************************************************************************
**
** mvOnuEponMacDdmTxPolaritySet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set DDM polarity
**
** PARAMETERS: MV_U32 polarity
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacDdmTxPolaritySet(MV_U32 polarity)
{
MV_STATUS status;
status = asicOntGlbRegWrite(mvAsicReg_EPON_DDM_TX_POLARITY, polarity, 0);
return(status);
}
#else
/*******************************************************************************
**
** mvOnuEponMacDdmTxPolaritySet
** ____________________________________________________________________________
**
** DESCRIPTION: The function set DDM polarity
**
** PARAMETERS: MV_U32 txEnable - mask TX enabled with TX allowed
** MV_U32 txPolarity - TX polarity (0 - active high)
** MV_U32 serdesPolarity - SERDES shutdown polarity (0 - active low)
** MV_U32 xvrPolarity - XVR shutdown polarity (0 - active low)
** MV_U32 burstEnabl - burst enable mode
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacDdmTxPolaritySet(MV_U32 txEnable,
MV_U32 txPolarity,
MV_U32 serdesPolarity,
MV_U32 xvrPolarity,
MV_U32 burstEnable)
{
MV_U32 config;
config = ((burstEnable & 0x1) << 5) |
((xvrPolarity & 0x1) << 4) |
((serdesPolarity & 0x1) << 3) |
((txEnable & 0x3) << 1) |
(txPolarity & 0x1);
return(asicOntGlbRegWrite(mvAsicReg_EPON_DDM_TX_POLARITY, config, 0));
}
#endif
/* ========================================================================== */
/* Statistics Functions Section */
/* ========================================================================== */
/*******************************************************************************
**
** mvOnuEponMacRxStatsFcsErrorGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received with FCS error counter
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxStatsFcsErrorGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_STAT_RXP_FCS_ERROR_CNT, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxStatsShortErrorGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received short packets error counter
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxStatsShortErrorGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_STAT_RXP_SHORT_ERROR_CNT, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxStatsLongErrorGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received long packets error counter
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxStatsLongErrorGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_STAT_RXP_LONG_ERROR_CNT, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxStatsDataFrameGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received data frames counter
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxStatsDataFrameGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_STAT_RXP_DATA_FRAMES_CNT, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxStatsCtrlFrameGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received control frames counter
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxStatsCtrlFrameGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_STAT_RXP_CTRL_FRAMES_CNT, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxStatsReportFrameGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received report frames counter
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxStatsReportFrameGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_STAT_RXP_REPORT_FRAMES_CNT, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacRxStatsGateFrameGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return received gate frames counter
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacRxStatsGateFrameGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_STAT_RXP_GATE_FRAMES_CNT, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxStatsCtrlRegReqFrameGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return transmitted REGISTER REQUEST frames counter
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxStatsCtrlRegReqFrameGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_STAT_TXP_CTRL_REG_REQ_FRAMES_CNT, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxStatsCtrlRegAckFrameGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return transmitted REGISTER ACK frames counter
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxStatsCtrlRegAckFrameGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_STAT_TXP_CTRL_REG_ACK_FRAMES_CNT, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxStatsCtrlReportFrameGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return transmitted report frames counter
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxStatsCtrlReportFrameGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_STAT_TXP_CTRL_REPORT_FRAMES_CNT, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxStatsDataFrameGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return transmitted data frames counter
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxStatsDataFrameGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_STAT_TXP_DATA_FRAMES_CNT, counter, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacTxStatsTxAllowedByteCountGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return transmitted Tx Allowed byte counter
**
** PARAMETERS: MV_U32 *counter
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacTxStatsTxAllowedByteCountGet(MV_U32 *counter, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_STAT_TXP_TX_ALLOWED_BYTE_CNT, counter, macId);
return(status);
}
/* ========================================================================== */
/* CPQ Functions Section */
/* ========================================================================== */
/*******************************************************************************
**
** mvOnuEponMacCpqRxCtrlHeaderQueueUsedCountGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return control header queue used count
**
** PARAMETERS: MV_U32 *usedCount
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacCpqRxCtrlHeaderQueueUsedCountGet(MV_U32 *usedCount)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_CPQ_RX_CTRL_HQ_USED, usedCount, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacCpqRxCtrlHeaderQueueReadData
** ____________________________________________________________________________
**
** DESCRIPTION: The function return control header queue data
**
** PARAMETERS: MV_U32 *dataLow
** MV_U32 *dataHigh
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacCpqRxCtrlHeaderQueueReadData(MV_U32 *dataLow, MV_U32 *dataHigh)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_CPQ_RX_CTRL_HQ_READ_L, dataLow, 0);
status |= asicOntGlbRegRead(mvAsicReg_EPON_CPQ_RX_CTRL_HQ_READ_H, dataHigh, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacCpqRxCtrlQueueUsedCountGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return control queue used count
**
** PARAMETERS: MV_U32 *usedCount
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacCpqRxCtrlQueueUsedCountGet(MV_U32 *usedCount)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_CPQ_RX_CTRL_Q_USED, usedCount, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacCpqRxCtrlQueueReadData
** ____________________________________________________________________________
**
** DESCRIPTION: The function return control queue data
**
** PARAMETERS: MV_U32 *data
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacCpqRxCtrlQueueReadData(MV_U32 *data)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_CPQ_RX_CTRL_Q_READ, data, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacCpqRxRprtHeaderQueueUsedCountGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return report header queue used count
**
** PARAMETERS: MV_U32 *usedCount
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacCpqRxRprtHeaderQueueUsedCountGet(MV_U32 *usedCount)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_CPQ_RX_RPRT_HQ_USED, usedCount, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacCpqRxRprtHeaderQueueReadData
** ____________________________________________________________________________
**
** DESCRIPTION: The function return report header queue data
**
** PARAMETERS: MV_U32 *dataLow
** MV_U32 *dataHigh
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacCpqRxRprtHeaderQueueReadData(MV_U32 *dataLow, MV_U32 *dataHigh)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_CPQ_RX_RPRT_HQ_READ_L, dataLow, 0);
status |= asicOntGlbRegRead(mvAsicReg_EPON_CPQ_RX_RPRT_HQ_READ_H, dataHigh, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacCpqRxRprtQueueUsedCountGet
** ____________________________________________________________________________
**
** DESCRIPTION: The function return report queue used count
**
** PARAMETERS: MV_U32 *usedCount
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacCpqRxRprtQueueUsedCountGet(MV_U32 *usedCount)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_CPQ_RX_RPRT_Q_USED, usedCount, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacCpqRxRprtQueueReadData
** ____________________________________________________________________________
**
** DESCRIPTION: The function return report queue data
**
** PARAMETERS: MV_U32 *data
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacCpqRxRprtQueueReadData(MV_U32 *data)
{
MV_STATUS status;
status = asicOntGlbRegRead(mvAsicReg_EPON_CPQ_RX_RPRT_Q_READ, data, 0);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacCpqTxCtrlHeaderQueueFree
** ____________________________________________________________________________
**
** DESCRIPTION: The function return control header queue free count
**
** PARAMETERS: MV_U32 *freeCount
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacCpqTxCtrlHeaderQueueFree(MV_U32 *freeCount, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_CPQ_TX_CTRL_HQ_FREE, freeCount, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacCpqTxCtrlHeaderQueueWrite
** ____________________________________________________________________________
**
** DESCRIPTION: The function write control header queue data
**
** PARAMETERS: MV_U32 data
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacCpqTxCtrlHeaderQueueWrite(MV_U32 data, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegWrite(mvAsicReg_EPON_CPQ_TX_CTRL_HQ_WRITE, data, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacCpqTxCtrlQueueFree
** ____________________________________________________________________________
**
** DESCRIPTION: The function return control queue free count
**
** PARAMETERS: MV_U32 *freeCount
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacCpqTxCtrlQueueFree(MV_U32 *freeCount, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegRead(mvAsicReg_EPON_CPQ_TX_CTRL_Q_FREE, freeCount, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacCpqTxCtrlQueueWrite
** ____________________________________________________________________________
**
** DESCRIPTION: The function write control queue data
**
** PARAMETERS: MV_U32 data
** MV_U32 macId
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacCpqTxCtrlQueueWrite(MV_U32 data, MV_U32 macId)
{
MV_STATUS status;
if (macId >= EPON_MAX_MAC_NUM)
return(MV_ERROR);
status = asicOntGlbRegWrite(mvAsicReg_EPON_CPQ_TX_CTRL_Q_WRITE, data, macId);
return(status);
}
/*******************************************************************************
**
** mvOnuEponMacSerdesPuRxWrite
** ____________________________________________________________________________
**
** DESCRIPTION: The function write to serdes power up receiver
**
** PARAMETERS: enable - 0: power down, 1: power up
**
** OUTPUTS: None
**
** RETURNS: MV_OK or MV_ERROR
**
*******************************************************************************/
MV_STATUS mvOnuEponMacSerdesPuRxWrite(MV_U32 enable)
{
MV_STATUS status;
status = asicOntMiscRegWrite(mvAsicReg_PON_SERDES_PHY_CTRL_0_PU_RX, enable, 0);
return(status);
}
/******************************************************************************/
/******************************************************************************/
/* ========================================================================== */
/* ========================================================================== */
/* == == */
/* == == == ========= ========= == == == */
/* == == == ========= ========= === == == */
/* == == == == == == == == == == == */
/* == == == == == == == == == == == */
/* == == == ========= == == == == == == */
/* == == == ========= == == == == == == */
/* == == == == == == == == == == */
/* == == == == == == == ==== == */
/* == ========= == ========= == === == */
/* == ========= == ========= == == == */
/* == == */
/* ========================================================================== */
/* ========================================================================== */
/******************************************************************************/
/******************************************************************************/
#ifndef PON_FPGA
/*******************************************************************************
**
** mvOnuPonMacDgInterruptEn
** ____________________________________________________________________________
**
** DESCRIPTION: The function configure Dying Gasp interrupt
**
** PARAMETERS: void
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuPonMacDgInterruptEn(MV_U32 dgPol)
{
MV_STATUS status;
status = asicOntMiscRegWrite(mvAsicReg_PON_DG_CTRL_EN, 0x1, 0); /* Enable */
if (status != MV_OK)
return(status);
status = asicOntMiscRegWrite(mvAsicReg_PON_DG_CTRL_POLARITY, dgPol, 0); /* Active High/Low */
if (status != MV_OK)
return(status);
status = asicOntMiscRegWrite(mvAsicReg_PON_DG_THRESHOLD, 0x61A80, 0); /* Threshold */
if (status != MV_OK)
return(status);
return(status);
}
/*******************************************************************************
**
** mvOnuPonMacDgInterruptDis
** ____________________________________________________________________________
**
** DESCRIPTION: The function disable Dying Gasp interrupt
**
** PARAMETERS: void
**
** OUTPUTS: None
**
** RETURNS: MV_OK or error
**
*******************************************************************************/
MV_STATUS mvOnuPonMacDgInterruptDis(void)
{
MV_STATUS status;
status = asicOntMiscRegWrite(mvAsicReg_PON_DG_CTRL_EN, 0x0, 0); /* Disable */
if (status != MV_OK)
return(status);
return(status);
}
#endif /* PON_FPGA */