| /******************************************************************************* |
| 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, ®, 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, ®Val, 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, ®Val, 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, ®Val, 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, ®Val, 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, ×tampConfig, 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, ®Val, 0); |
| *legalFrameCnt = regVal; |
| |
| status |= asicOntGlbRegRead(mvAsicReg_EPON_PCS_STATS_1, ®Val, 0); |
| *maxFrameSizeErrCnt = (regVal >> 16) & 0xFFFF; |
| |
| status |= asicOntGlbRegRead(mvAsicReg_EPON_PCS_STATS_1, ®Val, 0); |
| *parityLenErrCnt = regVal & 0xFFFF; |
| |
| status |= asicOntGlbRegRead(mvAsicReg_EPON_PCS_STATS_2, ®Val, 0); |
| *longGateErrCnt = (regVal >> 16) & 0xFFFF; |
| |
| status |= asicOntGlbRegRead(mvAsicReg_EPON_PCS_STATS_2, ®Val, 0); |
| *protocolErrCnt = regVal & 0xFFFF; |
| |
| status |= asicOntGlbRegRead(mvAsicReg_EPON_PCS_STATS_3, ®Val, 0); |
| *minFrameSizeErrCnt = regVal & 0xFFFF; |
| |
| status |= asicOntGlbRegRead(mvAsicReg_EPON_PCS_STATS_4, ®Val, 0); |
| *legalFecFrameCnt = (regVal >> 16) & 0xFFFF; |
| |
| status |= asicOntGlbRegRead(mvAsicReg_EPON_PCS_STATS_4, ®Val, 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, ®_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 */ |