blob: e58f03aa45bda5b3e3d9507ce84571b8a7ded3d7 [file] [log] [blame]
/*******************************************************************************
Copyright (C) Marvell International Ltd. and its affiliates
This software file (the "File") is owned and distributed by Marvell
International Ltd. and/or its affiliates ("Marvell") under the following
alternative licensing terms. Once you have made an election to distribute the
File under one of the following license alternatives, please (i) delete this
introductory statement regarding license alternatives, (ii) delete the two
license alternatives that you have not elected to use and (iii) preserve the
Marvell copyright notice above.
********************************************************************************
Marvell Commercial License Option
If you received this File from Marvell and you have entered into a commercial
license agreement (a "Commercial License") with Marvell, the File is licensed
to you under the terms of the applicable Commercial License.
********************************************************************************
Marvell GPL License Option
If you received this File from Marvell, you may opt to use, redistribute and/or
modify this File in accordance with the terms and conditions of the General
Public License Version 2, June 1991 (the "GPL License"), a copy of which is
available along with the File in the license.txt file or by writing to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
DISCLAIMED. The GPL License provides additional details about this warranty
disclaimer.
********************************************************************************
Marvell BSD License Option
If you received this File from Marvell, you may opt to use, redistribute and/or
modify this File under the following licensing terms.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Marvell nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************/
#ifndef _ONU_PON_MAC_H
#define _ONU_PON_MAC_H
/******************************************************************************/
/******************************************************************************/
/* ========================================================================== */
/* ========================================================================== */
/* == == */
/* == ========= ========= ========= === == == */
/* == ========= ========= ========= ==== == == */
/* == == == == == == == == == == */
/* == == == == == == == == == == */
/* == ========= ========= == == == == == == */
/* == ========= ========= == == == == == == */
/* == == == == == == == == == == */
/* == == == == == == == ==== == */
/* == ========= == ========= == === == */
/* == ========= == ========= == == == */
/* == == */
/* ========================================================================== */
/* ========================================================================== */
/******************************************************************************/
/******************************************************************************/
/* Definitions
------------------------------------------------------------------------------*/
#define UINT8_MASK (0xFF)
#define UINT8_OFFSET (8)
#define UINT8_NUM_OF_BITS (8)
/* Frame lengths */
#define GPON_MAX_GEM_PAYLOAD_LEN (0x800) /* GEM payload length */
#define GPON_MIN_ETH_FRAME_LEN (0x40) /* Min ETH frame length */
#define GPON_MAX_ETH_FRAME_LEN (0x800) /* Max ETH frame length */
#define GPON_MIN_OMCI_FRAME_LEN (0x30) /* Min OMCI frame length */
#define GPON_MAX_OMCI_FRAME_LEN (0x30) /* Max OMCI frame length */
/* Frame Delineation Register */
#define GPON_FRAME_DELINEATION_FR_1244 (0x0000) /* DS Frequency - 1.244Gb */
#define GPON_FRAME_DELINEATION_FR_2488 (0x0001) /* DS Frequency - 2.488Gb */
#define GPON_FRAME_DELINEATION_FR (GPON_FRAME_DELINEATION_FR_1244)
#define GPON_FRAME_DELINEATION_M1 (0x0002) /* M1 field */
#define GPON_FRAME_DELINEATION_M2 (0x0005) /* M2 field */
/* ONU-ID Register */
#define GPON_ONU_ID_ONU_ID_DEF (ONU_GPON_UNDEFINED_ONU_ID) /* ONU-ID Field */
/* ONU State Register */
#define GPON_ONU_ID_STATE_01 (ONU_GPON_01_INIT) /* ONU State 01 */
/* ONU BIP period Counter Register */
#define GPON_BIP_PERIOD_CNTR (0) /* BIP period Counter */
/* TX BW Translation Register */
#define GPON_BW_MAP_IDLE_TCONT (0)
/* TX Delay Register - const */
#define GPON_TX_DELAY_TD_622 (0x0AA1) /* Const Delay */
#define GPON_TX_DELAY_TD_1244 (0x15DD) /* Const Delay */
/* TX Delay Register - equilization */
#define GPON_TX_EQUAL_DELAY_TD (0x0000) /* Equilization Delay */
/* TX Preamble Register */
#define ONU_TX_PREAMBLE_TYPE_03_DEF_US_155 (0x0001) /* Preamble type 3 counter - default US rate 155M */
#define ONU_TX_PREAMBLE_TYPE_03_DEF_US_622 (0x0003) /* Preamble type 3 counter - default US rate 622M */
#define ONU_TX_PREAMBLE_TYPE_03_DEF_US_1244 (0x0005) /* Preamble type 3 counter - default US rate 1244M */
#define ONU_TX_PREAMBLE_TYPE_03_DEF_US_2488 (0x000D) /* Preamble type 3 counter - default US rate 2488M */
#define ONU_TX_PREAMBLE_TYPE_03_RATE_622 (0x0008) /* Preamble type 3 counter - US rate 622M */
#define ONU_TX_PREAMBLE_TYPE_03_RATE_1244 (0x0010) /* Preamble type 3 counter - US rate 1244M */
#define ONU_TX_PREAMBLE_TYPE_03_RATE_2488 (0x0020) /* Preamble type 3 counter - US rate 2488M */
#define ONU_TX_PREAMBLE_TYPE_01_P (0x00FF) /* Preamble type 1 value */
#define ONU_TX_PREAMBLE_TYPE_01_PC (0) /* Preamble type 1 counter */
#define ONU_TX_PREAMBLE_TYPE_02_P (0x0000) /* Preamble type 2 value */
#define ONU_TX_PREAMBLE_TYPE_02_PC (0) /* Preamble type 2 counter */
#define ONU_TX_PREAMBLE_TYPE_03_P (0x00AA) /* Preamble type 3 value */
#define ONU_TX_PREAMBLE_TYPE_03_DEF_PC (ONU_TX_PREAMBLE_TYPE_03_DEF_US_622) /* Preamble type 3 counter - default */
#define ONU_TX_PREAMBLE_TYPE_03_RT_PC (ONU_TX_PREAMBLE_TYPE_03_RATE_622) /* Preamble type 3 counter - runtime */
/* TX Delimiter Register */
#if 0
#define GPON_TX_DELIMITER (0x02BEB433)
#define GPON_TX_DELIMITER_D0 (0x0083) /* Delimiter 0 */
#define GPON_TX_DELIMITER_D1 (0x00B4) /* Delimiter 1 */
#define GPON_TX_DELIMITER_D2 (0x00BE) /* Delimiter 2 */
#define GPON_TX_DELIMITER_DS (0x0002) /* Delimiter size */
#else
#define GPON_TX_DELIMITER (0x02AB5983)
#define GPON_TX_DELIMITER_D0 (0x0083) /* Delimiter 0 */
#define GPON_TX_DELIMITER_D1 (0x0059) /* Delimiter 1 */
#define GPON_TX_DELIMITER_D2 (0x00AB) /* Delimiter 2 */
#define GPON_TX_DELIMITER_DS (0x0003) /* Delimiter size */
#endif
/* TX Final Delay Register */
#define GPON_TX_FINAL_DELAY_FD (0x0020) /* Final Delay */
#define GPON_TX_FINAL_DELAY_MASK (0x0007)
#define GPON_TX_FINAL_DELAY_MAX (0x003F)
#define GPON_TX_FINAL_DELAY_MIN (0x0000)
#define GPON_TX_EQUAL_DELAY_MASK (0x000FFFFF)
#define GPON_TX_EQUAL_DELAY_SHIFT (3)
/* BURST enable parameter */
#define GPON_BURST_EN_P_ACT_HIGH (0x0000) /* BURST enable parameter - polarity active high */
#define GPON_BURST_EN_P_ACT_LOW (0x0001) /* BURST enable parameter - polarity active low */
#define GPON_BURST_EN_MASK (0x00C0)
#define GPON_BURST_EN_P (GPON_BURST_EN_P_ACT_HIGH)
#ifndef PON_FPGA
#define GPON_BURST_EN_ORDER (1)
#else
#define GPON_BURST_EN_ORDER (0)
#endif /* PON_FPGA */
#ifndef PON_FPGA
#define GPON_BURST_EN_START (0x0001) /* BURST enable parameter - start */
#define GPON_BURST_EN_STOP (0x0000) /* BURST enable parameter - stop */
#else /* PON_FPGA */
#define GPON_BURST_EN_START (0x0006) /* BURST enable parameter - start */
#define GPON_BURST_EN_STOP (0x0006) /* BURST enable parameter - stop */
#endif /* PON_FPGA */
#define GPON_BURST_THRESHOLD (0x4E20) /* 20000 bytes */
#define MAC_LAST_UPSTREAM_PLOAM (ONU_GPON_US_MSG_ACK)
#define MAC_LAST_DOWNSTREAM_PLOAM (ONU_GPON_DS_MSG_LAST)
/* SW FIFO parameters */
#define GPON_SW_FIFO_SIZE (1024) /* Size of SW FIFO pool for PLOAM messages */
#define GPON_PLOAM_MSG_WORDS (3) /* PLOAM message length is 12 bytes or 3 words */
#define GPON_PLOAM_MSG_BYTES (12) /* PLOAM message length is 12 bytes or 3 words */
#define GPON_MAX_US_MSG_MOVING (3) /* Max SW FIFO entries which can be moved from SW to HW FIFO by ISR */
#define GPON_MAX_US_MSG_TO_PROCESS (10) /* Max SW FIFO entries which can be processed by FIFO Audit */
/*AC coupling burst mode*/
#define GPON_TX_AC_COUPL_BUST_MODE_0 (0)
#define GPON_TX_AC_COUPL_BUST_MODE_1 (1)
#define GPON_TX_AC_COUPL_PREACT_BURST_TIME (0x30)
#define GPON_TX_AC_COUPL_DATA_PATTERN_1 (0x66)
#define GPON_TX_AC_COUPL_DATA_PATTERN_2 (0x0)
/*UTM Active TX Bitmap*/
#define GPON_UTM_ACTIVE_TX_BITMAP (0xFFFF)
#define GPON_UTM_ACTIVE_TX_BITMAP_VALID (1)
/*GSE Transmit threshold*/
#define GPON_GST_TX_DATA_SHIFT (12)
#define GPON_GST_TX_DATA_THRESHOLD (0x30)
#define GPON_GST_TX_IDLE_THRESHOLD (0x10)
/* Typedefs
------------------------------------------------------------------------------*/
typedef MV_STATUS (*MACTXPLOAMCTRFUNC)(MV_U8 msgId, MV_BOOL status);
typedef MV_STATUS (*MACRXPLOAMCTRFUNC)(MV_U8 msgId);
typedef struct
{
MV_U32 txErrMsgIdPloamCounter [ONU_GPON_US_MSG_LAST+1];
MV_U32 txMsgIdPloamCounter [ONU_GPON_US_MSG_LAST+1];
MV_U32 txMsgTotalPloamCounter;
}S_MacTxPloamPm;
typedef struct
{
MV_U32 msg[GPON_PLOAM_MSG_WORDS];
}S_MacPloamMsg;
typedef struct
{
MV_U32 fifoWriteIndex;
MV_U32 fifoReadIndex;
MV_U32 fifoReparoundNum;
S_MacPloamMsg fifoData[GPON_SW_FIFO_SIZE];
}S_MacFifoCtrl;
/* Macros
------------------------------------------------------------------------------*/
#define M_ONU_GPON_RANG_MSG_FINAL_DELAY(eqD) (eqD & GPON_TX_FINAL_DELAY_MASK)
#define M_ONU_GPON_RANG_MSG_EQUAL_DELAY(eqD) ((eqD >> GPON_TX_EQUAL_DELAY_SHIFT) & GPON_TX_EQUAL_DELAY_MASK)
#define M_ONU_GPON_BASE_ADDRESS(address) ((address != NULL) ? (address) : (0))
/* Global functions
------------------------------------------------------------------------------*/
/******************************************************************************/
/* ========================================================================== */
/* High-Level MAC Section */
/* ========================================================================== */
/******************************************************************************/
MV_STATUS mvOnuGponMacMessageReceive(MV_U8 *msgOnuId, MV_U8 *msgId, MV_U8 *msgData);
MV_STATUS mvOnuGponMacMessageSend(MV_U8 msgOnuId, MV_U8 msgId, MV_U8 *msgData);
MV_STATUS mvOnuGponMacMessageCleanSwFifo(void);
MV_STATUS mvOnuGponMacPreambleSet(MV_U32 preamType1Val, MV_U32 preamType1Cnt,
MV_U32 preamType2Val, MV_U32 preamType2Cnt,
MV_U32 preamType3Val, MV_U32 preamType3Cnt);
MV_STATUS mvOnuGponMacPreambleType3Set(MV_U32 preamType3Val, MV_U32 preamType3Cnt);
/* Upstream Messages send routines */
MV_STATUS mvOnuGponMacPasswordMessageSend(MV_U8 onuId, MV_U8 *password, MV_U32 counter);
MV_STATUS mvOnuGponMacReiMessageSend(MV_U8 onuId, MV_U32 errorsCounter);
MV_STATUS mvOnuGponMacAcknowledgeMessageSend(MV_U8 onuId, MV_U8 dmId, MV_U8 *dmByte);
MV_STATUS mvOnuGponMacEncryptionKeyMessageSend(MV_U8 onuId, MV_U8 KeyIndex, MV_U8 fragIndex, MV_U8 *key);
#ifndef PON_FPGA
MV_STATUS mvOnuGponMacDgMessageSend(MV_U8 onuId);
#endif /* PON_FPGA */
/******************************************************************************/
/* ========================================================================== */
/* Low-Level MAC Section */
/* ========================================================================== */
/******************************************************************************/
/* ========================================================================== */
/* Rx Functions Section */
/* ========================================================================== */
MV_STATUS mvOnuGponMacRxConfigSet(MV_BOOL enable);
MV_STATUS mvOnuGponMacRxConfigBitOrderSet(MV_U32 value);
MV_STATUS mvOnuGponMacRxPsaConfigSet(MV_U32 syncFsmM1, MV_U32 syncFsmM2, MV_U32 syncFsmM3, MV_U32 fecHyst);
MV_STATUS mvOnuGponMacRxFecHysteresisSet(MV_U32 fecHyst);
MV_STATUS mvOnuGponMacRxFecConfigSet(MV_BOOL swIndication, MV_BOOL forceSw, MV_BOOL ignoreParity);
MV_STATUS mvOnuGponMacRxFecStatusGet(MV_U32 *fecStatus);
MV_STATUS mvOnuGponMacRxPloamDataGet(MV_U32 *ploamData);
MV_STATUS mvOnuGponMacRxPloamDataUsedGet(MV_U32 *ploamFifoSize);
MV_STATUS mvOnuGponMacRxPlenConfigSet(MV_BOOL forceNum, MV_BOOL useForce, MV_BOOL ignDiff, MV_BOOL notFix, MV_BOOL ignCrc);
MV_STATUS mvOnuGponMacRxPloamConfigSet(MV_BOOL ignCrc, MV_BOOL ignBrd, MV_BOOL fwdAll);
MV_STATUS mvOnuGponMacRxBwMapConfigSet(MV_U32 minSaDelta, MV_BOOL notCrcFix, MV_BOOL ignCrc);
MV_STATUS mvOnuGponMacRxBwMapSet(MV_U32 entry, MV_U32 allocId, MV_U32 tcontCnt, MV_BOOL enable);
MV_STATUS mvOnuGponMacRxBwMapGet(MV_U32 entry, MV_U32 *allocId, MV_BOOL *enable, MV_U32 *tcontCnt);
MV_STATUS mvOnuGponMacRxEqualizationDelaySet(MV_U32 delay);
MV_STATUS mvOnuGponMacRxEqualizationDelayGet(MV_U32 *delay);
MV_STATUS mvOnuGponMacRxInternalDelaySet(MV_U32 delay);
MV_STATUS mvOnuGponMacRxInternalDelayGet(MV_U32 *delay);
MV_STATUS mvOnuGponMacRxSuperFrameCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacRxSuperFrameCounterSet(MV_U32 counter);
/* ========================================================================== */
/* Tx Functions Section */
/* ========================================================================== */
MV_STATUS mvOnuGponMacTxDelimiterSet(MV_U32 delimiterPattern, MV_U32 delimiterSize);
MV_STATUS mvOnuGponMacTxDelimiterGet(MV_U32 *pattern, MV_U32 *size);
MV_STATUS mvOnuGponMacTxPloamDataFifoSet(MV_U32 txPloamData);
MV_STATUS mvOnuGponMacTxPloamDataFreeGet(MV_U32 *ploamFifoSize);
MV_STATUS mvOnuGponMacTxBurstEnParamSet(MV_U32 mask, MV_U32 polarity, MV_U32 delay, MV_U32 enStop, MV_U32 enStart);
MV_STATUS mvOnuGponMacTxBurstEnPolaritySet(MV_U32 polarity);
MV_STATUS mvOnuGponMacTxBurstEnParamGet(MV_U32 *mask, MV_U32 *polarity, MV_U32 *order, MV_U32 *enStop, MV_U32 *enStart);
MV_STATUS mvOnuGponMacTxFinalDelaySet(MV_U32 txFinalDelay);
MV_STATUS mvOnuGponMacTxFinalDelayGet(MV_U32 *txFinalDelay);
MV_STATUS mvOnuGponMacTxPreambleSet(MV_U32 type, MV_U32 pattern, MV_U32 size);
MV_STATUS mvOnuGponMacTxPlsSet(MV_U32 pattern);
MV_STATUS mvOnuGponMacTxConstIdleMsgSet(MV_U32 onuId);
MV_STATUS mvOnuGponMacTxConstSerialNumberMsgSet(MV_U32 onuId, MV_U8 *serialNumber, MV_U32 randomDelay);
MV_STATUS mvOnuGponMacTxDbrBlockSizeSet(MV_U32 blockSize);
MV_STATUS mvOnuGponMacTxSwCountersAdd(MV_U8 msgId ,MV_BOOL sucsses);
MV_STATUS mvOnuGponMacTxSwCountersGet(void *txPloamPm);
/* ========================================================================== */
/* General Functions Section */
/* ========================================================================== */
MV_STATUS mvOnuGponMacVersionGet(MV_U32 *version);
MV_STATUS mvOnuGponMacOnuIdSet(MV_U32 onuId, MV_BOOL valid);
MV_STATUS mvOnuGponMacOnuStateSet(MV_U32 onuState);
MV_STATUS mvOnuGponMacSerialNumberSet(MV_U32 serialNum);
/* ========================================================================== */
/* Gem Functions Section */
/* ========================================================================== */
MV_STATUS mvOnuGponMacGemPayloadLenSet(MV_U32 payloadlen);
MV_STATUS mvOnuGponMacGemPayloadLenGet(MV_U32 *payloadlen);
MV_STATUS mvOnuGponMacGemEthFrameLenSet(MV_U32 maxFrameLen, MV_U32 minFrameLen);
MV_STATUS mvOnuGponMacGemEthFrameLenGet(MV_U32 *maxFrameLen, MV_U32 *minFrameLen);
MV_STATUS mvOnuGponMacGemOmciFrameLenSet(MV_U32 maxFrameLen, MV_U32 minFrameLen);
MV_STATUS mvOnuGponMacGemOmciFrameLenGet(MV_U32 *maxFrameLen, MV_U32 *minFrameLen);
MV_STATUS mvOnuGponMacGemOmciPortIdSet(MV_U32 portId, MV_U32 valid);
MV_STATUS mvOnuGponMacGemOmciPortIdGet(MV_U32 *portId, MV_U32 *valid);
/* ========================================================================== */
/* UTM Functions Section */
/* ========================================================================== */
MV_STATUS mvOnuGponMacUtmOmciPortIdSet(MV_U32 portId, MV_U32 valid);
MV_STATUS mvOnuGponMacUtmOmciPortIdGet(MV_U32 *portId, MV_U32 *valid);
MV_STATUS mvOnuGponMacUtmTcPeriodSet(MV_U32 period );
MV_STATUS mvOnuGponMacUtmTcValidSet(MV_U32 valid);
MV_STATUS mvOnuGponMacUtmTcConfigGet(MV_U32 *period, MV_U32 *valid);
MV_STATUS mvOnuGponMacUtmActiveTxBitmapSet(MV_U32 bitmap);
MV_STATUS mvOnuGponMacUtmActiveTxBitmapValidSet(MV_U32 valid);
MV_STATUS mvOnuGponMacUtmActiveTxBitmapConfigGet(MV_U32 *bitmap, MV_U32 *valid);
/* ========================================================================== */
/* Interrupt Functions Section */
/* ========================================================================== */
MV_STATUS mvOnuGponMacPonInterruptGet(MV_U32 *interrupt);
MV_STATUS mvOnuGponMacPonInterruptMaskGet(MV_U32 *mask);
MV_STATUS mvOnuGponMacPonInterruptMaskSet(MV_U32 mask);
MV_STATUS mvOnuGponMacBipStatusValueGet(MV_U32 *value);
MV_STATUS mvOnuGponMacBipInterruptIntervalSet(MV_U32 interval);
MV_STATUS mvOnuGponMacBipInterruptStatusValueGet(MV_U32 *value);
MV_STATUS mvOnuGponMacRamTestCfgSet(MV_U32 config);
MV_STATUS mvOnuGponMacRamTestCfgGet(MV_U32 *config);
/* ========================================================================== */
/* Statistics Functions Section */
/* ========================================================================== */
/* Gem */
/* === */
MV_STATUS mvOnuGponMacGemRcvdIdleGemFramesCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacGemRcvdValidGemFramesCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacGemRcvdUndefGemFramesCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacGemRcvdOmciFramesCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacGemDropGemFramesCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacGemDropOmciFramesCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacGemRcvdGemFramesWithUncorrHecErrCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacGemRcvdGemFramesWithOneFixedHecErrCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacGemRcvdGemFramesWithTwoFixedHecErrCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacGemRcvdValidGemFramesTotalByteCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacGemRcvdUndefGemFramesTotalByteCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacGemReassembleMemoryFlushCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacGemSynchLostCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacGemRcvdEthFramesWithCorrFcsCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacGemRcvdEthFramesWithFcsErrCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacGemRcvdOmciFramesWithCorrCrcCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacGemRcvdOmciFramesWithCrcErrCounterGet(MV_U32 *counter);
/* Rx Ploam */
/* ======== */
MV_STATUS mvOnuGponMacRxPloamLostCrcCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacRxPloamLostFullCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacRxPloamRcvdIdleCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacRxPloamRcvdBroadCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacRxPloamRcvdOnuIdCounterGet(MV_U32 *counter);
/* Tx */
/* == */
MV_STATUS mvOnuGponMacTxGemPtiTypeOneFrameCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacTxGemPtiTypeZeroFrameCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacTxIdleGemFramesCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacTxTxEnableCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacTxTxEnableCounterThresholdGet(MV_U32 *threshold);
MV_STATUS mvOnuGponMacTxTxEnableCounterThresholdSet(MV_U32 threshold);
MV_STATUS mvOnuGponMacTxGseTransCounterThresholdGet(MV_U32 *threshold);
MV_STATUS mvOnuGponMacTxGseTransCounterThresholdSet(MV_U32 threshold);
MV_STATUS mvOnuGponMacTxConfigAcCouplingGet(MV_U32 *busrtMode,
MV_U32 *preActiveBurstTime,
MV_U8 *dataPattern1,
MV_U8 *dataPattern2);
MV_STATUS mvOnuGponMacTxConfigAcCouplingSet(MV_U32 busrtMode,
MV_U32 preActiveBurstTime,
MV_U8 dataPattern1,
MV_U8 dataPattern2);
MV_STATUS mvOnuGponMacTxEthFramesTcontiCounterGet(MV_U32 tcontNum, MV_U32 *counter);
MV_STATUS mvOnuGponMacTxEthBytesTcontiCounterGet(MV_U32 tcontNum, MV_U32 *counter);
MV_STATUS mvOnuGponMacTxGemFramesTcontiCounterGet(MV_U32 tcontNum, MV_U32 *counter);
MV_STATUS mvOnuGponMacTxIdleGemFramesTcontiCounterGet(MV_U32 tcontNum, MV_U32 *counter);
/* FEC */
/* === */
MV_STATUS mvOnuGponMacRxFecBytesCounterGet(MV_U32 *counter);
MV_STATUS mvOnuGponMacRxFecCorrectCounterGet(MV_U32 *bytes, MV_U32 *bits);
MV_STATUS mvOnuGponMacRxFecInorrectCounterGet(MV_U32 *bytes, MV_U32 *bits);
/* Bw Map */
/* ====== */
MV_STATUS mvOnuGponMacRxBwMapAllocatrionsCounterGet(MV_U32 *cor, MV_U32 *incor, MV_U32 *crcCor, MV_U32 *errCrc);
MV_STATUS mvOnuGponMacRxBwMapTotalBwGet(MV_U32 *bw);
/* Plend */
/* ===== */
MV_STATUS mvOnuGponMacInComingPlendCntGet(MV_U32 *cntValue);
/* ========================================================================== */
/* AES */
/* ========================================================================== */
MV_STATUS mvOnuGponMacAesInit(void);
MV_STATUS mvOnuGponMacAesEnableSet(MV_BOOL enable);
MV_STATUS mvOnuGponMacAesPortIdSet(MV_U32 portId, MV_BOOL status);
MV_BOOL mvOnuGponMacAesPortIdGet(MV_U32 portId);
MV_STATUS mvOnuGponMacAesKeyShadowWrite(MV_U8 *key);
/* ========================================================================== */
/* GEM Port */
/* ========================================================================== */
MV_STATUS mvOnuGponMacIpgValueSet(MV_U32 ipgVal);
MV_STATUS mvOnuGponMacIpgValueGet(MV_U32 *ipgVal);
MV_STATUS mvOnuGponMacIpgValidSet(MV_BOOL enable);
MV_STATUS mvOnuGponMacIpgValidGet(MV_BOOL *enable);
/* ========================================================================== */
MV_STATUS mvOnuGponMacGemInit(void);
MV_STATUS mvOnuGponMacPortIdValidSet(MV_U32 portId, MV_BOOL status);
MV_BOOL mvOnuGponMacPortIdValidGet(MV_U32 portId);
MV_STATUS mvOnuGponMacXvrReset(MV_U32 xvrType);
MV_STATUS mvOnuGponMacXvrActivate(void);
MV_STATUS mvOnuGponMacAsicVersionGet(MV_U32 *asicVer);
MV_STATUS mvOnuGponMacMicroSecCounterGet(MV_U32 *microSec);
MV_STATUS mvOnuGponMacDyingGaspConfigSet(MV_U32 a_id,MV_U32 a_disableEnable,MV_U32 a_polarity, MV_U32 a_threshold);
/* ========================================================================== */
/* SW FIFO */
/* ========================================================================== */
void mvOnuGponMacFifoInit(void);
void mvOnuGponFifoAuditTimerExpireHndl(void);
void mvOnuGponMacFifoGetInfo(S_MacFifoCtrl **ptr, MV_32 *supported);
void mvOnuGponMacFifoGetStat(MV_32 *callCnt, MV_32 *addSwCnt, MV_32 *freeSwCnt, MV_32 *sendHwCnt);
void mvOnuGponMacFifoAuditGetStat(MV_32 *enterCnt, MV_32 *actionCnt);
void mvOnuGponMacFifoCountersSet(MV_U32 value);
void mvOnuGponMacFifoSupportSet(MV_32 value);
/******************************************************************************/
/******************************************************************************/
/* ========================================================================== */
/* ========================================================================== */
/* == == */
/* == ========= ========= ========= == == == */
/* == ========= ========= ========= === == == */
/* == == == == == == == == == == */
/* == == == == == == == == == == */
/* == ========= ========= == == == == == == */
/* == ========= ========= == == == == == == */
/* == == == == == == == == == */
/* == == == == == == ==== == */
/* == ========= == ========= == === == */
/* == ========= == ========= == == == */
/* == == */
/* ========================================================================== */
/* ========================================================================== */
/******************************************************************************/
/******************************************************************************/
/* Definitions
------------------------------------------------------------------------------*/
#define ADDITIONAL_OPCODE_1 (1)
#define ADDITIONAL_OPCODE_2 (2)
#define ADDITIONAL_OPCODE_3 (3)
/*EPON TX MUX POWER UP*/
#define EPON_DDM_TX_EN_MASK_DEFAULT (0)
#define EPON_DDM_TX_TX_POL_DEFAULT (0)
#define EPON_DDM_TX_SERDES_POL_DEFAULT (0)
#define EPON_DDM_TX_XVR_POL_DEFAULT (0)
#define EPON_DDM_TX_BURST_ENA_DEFAULT (0)
/* PCS RX */
#define EPON_PCS_CONFIG_RX_ENABLE (1)
#define EPON_PCS_CONFIG_RX_DISABLE (0)
/* EPON 2K packet supported */
#define EPON_MAC_RXP_DATA_FIFO_THRESHOLD_2K_SUPP (0x800)
#define EPON_MAC_PCS_FRAME_SIZE_LIMIT_SIZE_2K_SUPP (0x800)
#define EPON_MAC_PCS_FRAME_SIZE_LIMIT_LATENCY_2K_SUPP (0x1324)
/* Default value of these registers */
#define EPON_MAC_RXP_DATA_FIFO_THRESHOLD_DEF (0x780)
#define EPON_MAC_PCS_FRAME_SIZE_LIMIT_SIZE_DEF (0x640)
#define EPON_MAC_PCS_FRAME_SIZE_LIMIT_LATENCY_DEF (0xED8)
/* Default value for timestamp configuration registers*/
#define EPON_MAC_TXM_TIMESTAMP_OFFSET (0x77B)
#define EPON_MAC_TXM_USE_TIMESTAMP_IMG (0x0)
#define EPON_MAC_TXM_ADD_SYNC_TIME_TO_TM (0x1)
#define EPON_MAC_GPM_TIMESTAMP_OFFSET (0x760)
#define EPON_MAC_GPM_ADD_SYNC_TIME_TO_TM (0x0)
#define EPON_MAC_RXM_TIMESTAMP_OFFSET (0x250)
#define EPON_MAC_RXM_TIMESTAMP_SIGN (0x0)
#define EPON_MAC_RXM_TIMESTAMP_SELECT (0x1)
/* Global functions
------------------------------------------------------------------------------*/
/* ========================================================================== */
/* Interrupt Functions Section */
/* ========================================================================== */
MV_STATUS mvOnuEponMacPonInterruptGet(MV_U32 *interrupt);
MV_STATUS mvOnuEponMacPonInterruptMaskGet(MV_U32 *mask);
MV_STATUS mvOnuEponMacPonInterruptMaskSet(MV_U32 mask);
/* ========================================================================== */
/* General Functions Section */
/* ========================================================================== */
MV_STATUS mvOnuEponMacVersionGet(MV_U32 *version);
MV_STATUS mvOnuEponMacPcsRxEnableSet(MV_U32 rxEnable);
MV_STATUS mvOnuEponMacPcsTxEnableSet(MV_U32 txEnable);
MV_STATUS mvOnuEponMacOnuEnableSet(MV_U32 rxEnable, MV_U32 txEnable);
MV_STATUS mvOnuEponMacOnuRxEnableSet(MV_U32 rxEnable);
MV_STATUS mvOnuEponMacOnuTxEnableSet(MV_U32 txEnable, MV_U32 macId);
MV_STATUS mvOnuEponMacOnuStateSet(MV_U32 onuState, MV_U32 macId);
MV_STATUS mvOnuEponMacOnuStateGet(MV_U32 *onuState, MV_U32 macId);
MV_STATUS mvOnuEponMacOnuRegAutoUpdateStateSet(MV_U32 value);
MV_STATUS mvOnuEponMacOnuReRegAutoUpdateStateSet(MV_U32 value);
MV_STATUS mvOnuEponMacOnuDeRegAutoUpdateStateSet(MV_U32 value);
MV_STATUS mvOnuEponMacOnuNackAutoUpdateStateSet(MV_U32 value);
MV_STATUS mvOnuEponMacGenTqSizeSet(MV_U32 tqRxSize, MV_U32 tqTxSize);
MV_STATUS mvOnuEponMacGenTqSizeGet(MV_U32 *tqRxSize, MV_U32 *tqTxSize);
MV_STATUS mvOnuEponMacGenLaserParamSet(MV_U32 onOffTime, MV_U32 onTime, MV_U32 offTime);
MV_STATUS mvOnuEponMacGenLaserParamGet(MV_U32 *onOffTime, MV_U32 *onTime, MV_U32 *offTime);
MV_STATUS mvOnuEponMacGenTailGuardSet(MV_U32 packetTailGuard, MV_U32 tailGuard);
MV_STATUS mvOnuEponMacGenSyncTimeSet(MV_U32 syncTime, MV_U32 addSyncTime, MV_U32 forceSwUpdate,
MV_U32 disGateAutoUpdate, MV_U32 disDiscoveryAutoUpdate);
MV_STATUS mvOnuEponMacGenSyncTimeGet(MV_U32 *syncTime, MV_U32 *addSyncTime, MV_U32 *forceSwUpdate,
MV_U32 *disGateAutoUpdate, MV_U32 *disDiscoveryAutoUpdate);
MV_STATUS mvOnuEponMacGenBcastAddrSet(MV_U32 bcastMacAddrHigh, MV_U32 bcastMacAddrLow);
MV_STATUS mvOnuEponMacGenUcastAddrSet(MV_U32 bcastMacAddrHigh, MV_U32 bcastMacAddrLow, MV_U32 macId);
MV_STATUS mvOnuEponMacGenOnuConfigSet(MV_U32 rxPcsFecEn, MV_U32 txPcsFecEn, MV_U32 reportAutoResponse,
MV_U32 ackAutoResponse, MV_U32 requestAutoResponse, MV_U32 txFecEn);
MV_STATUS mvOnuEponMacGenOnuConfigAutoReportSet(MV_U32 reportAutoResponse);
MV_STATUS mvOnuEponMacGenOnuConfigAutoAckSet(MV_U32 ackAutoResponse);
MV_STATUS mvOnuEponMacGenOnuConfigAutoRequestSet(MV_U32 requestAutoResponse);
MV_STATUS mvOnuEponMacGenSldSet(MV_U32 sld);
MV_STATUS mvOnuEponMacGenCtrlTypeSet(MV_U32 type);
MV_STATUS mvOnuEponMacGenLocalTimeStampSet(MV_U32 timeStamp);
MV_STATUS mvOnuEponMacGenLocalTimeStampGet(MV_U32 *timeStamp);
MV_STATUS mvOnuEponMacGenPendGrantSet(MV_U32 grant);
MV_STATUS mvOnuEponMacGenSglStatusGet(MV_U32 *sglStatus);
MV_STATUS mvOnuEponMacGenPonPhyDbgSet(MV_U32 ponDebug);
MV_STATUS mvOnuEponMacGenPonPhyDbgGet(MV_U32 *ponDebug);
MV_STATUS mvOnuEponMacGenSglSwReset(MV_U32 swReset);
MV_STATUS mvOnuEponMacGenSglConfig(MV_U32 startThreshold, MV_U32 dataAlignment);
MV_STATUS mvOnuEponMacGenSglDebounceConfig(MV_U32 polarity, MV_U32 threshold);
MV_STATUS mvOnuEponMacGenSglDebounceEnable(MV_U32 enable);
MV_STATUS mvOnuEponMacGenChurningKeySet(MV_U32 key);
MV_STATUS mvOnuEponMacGenOpcodeSet(MV_U32 opcodeType, MV_U32 value, MV_U32 index,
MV_U32 timestamp, MV_U32 valid);
#ifdef PON_Z2
MV_STATUS mvOnuEponMacGenTimestampConfig(MV_U32 gpmAddSyncTimeToTimestamp,
MV_U32 gpmAimestampOffset,
MV_U32 txmAddSyncTimeToTimestamp,
MV_U32 txmUseTimestampImage,
MV_U32 txmTimestampOffset);
MV_STATUS mvOnuEponMacGenRxTimestampConfigSet(MV_U32 rxpTimestampSelect,
MV_U32 rxpTimestampSign,
MV_U32 rxpTimestampOffset);
MV_STATUS mvOnuEponMacGenRxTimestampConfigGet(MV_U32 *rxpTimestampSelect,
MV_U32 *rxpTimestampSign,
MV_U32 *rxpTimestampOffset);
MV_STATUS mvOnuEponMacGenRegPacketPaddingSet(MV_U32 regAckPadding, MV_U32 regReqPadding);
MV_STATUS mvOnuEponMacGenRegPacketPaddingGet(MV_U32 *regAckPadding, MV_U32 *regReqPadding);
#endif /* PON_Z2 */
MV_STATUS mvOnuEponMacGenDriftThresholdSet(MV_U32 threshold);
MV_STATUS mvOnuEponMacGenTimeStampForIntrSet(MV_U32 timestamp);
MV_STATUS mvOnuEponMacGenTimeStampForIntrGet(MV_U32 *timestamp);
MV_STATUS mvOnuEponMacGenUtmTcPeriodSet(MV_U32 tcPeriod);
MV_STATUS mvOnuEponMacGenUtmTcPeriodEnSet(MV_U32 tcPeriodEnable);
MV_STATUS mvOnuEponMacGenGemIpgValueSet(MV_U32 ipgVal);
MV_STATUS mvOnuEponMacGenGemIpgValueEnSet(MV_U32 ipgValEn);
/* ========================================================================== */
/* RXP Functions Section */
/* ========================================================================== */
MV_STATUS mvOnuEponMacRxpPacketSizeLimitSet(MV_U32 minSize, MV_U32 maxSize);
MV_STATUS mvOnuEponMacRxpPacketSizeLimitGet(MV_U32 *minSize, MV_U32 *maxSize);
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 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 mvOnuEponMacRxpPacketForwardSet(MV_U32 ctrlFrameToDataQueue, MV_U32 ctrlFrameToCtrlQueue,
MV_U32 rprtFrameToDataQueue, MV_U32 rprtFrameToRprtQueue,
MV_U32 slowFrameToRprtQueue, MV_U32 slowFrameToCtrlQueue);
MV_STATUS mvOnuEponMacRxpPacketForwardGet(MV_U32 *ctrlFrameToDataQueue, MV_U32 *ctrlFrameToCtrlQueue,
MV_U32 *rprtFrameToDataQueue, MV_U32 *rprtFrameToRprtQueue,
MV_U32 *slowFrameToRprtQueue, MV_U32 *slowFrameToCtrlQueue);
MV_STATUS mvOnuEponMacRxpLlidDataSet(MV_U32 llid, MV_U32 index);
MV_STATUS mvOnuEponMacRxpLlidDataGet(MV_U32 *llid, MV_U32 index);
MV_STATUS mvOnuEponMacRxpEncConfigSet(MV_U32 config);
MV_STATUS mvOnuEponMacRxpEncConfigGet(MV_U32 *config);
MV_STATUS mvOnuEponMacRxpEncKeySet(MV_U32 key, MV_U32 index, MV_U32 macId);
MV_STATUS mvOnuEponMacRxpEncKeyGet(MV_U32 *keyIndex0, MV_U32 *keyIndex1, MV_U32 macId);
MV_STATUS mvOnuEponMacRxpDataFifoThresholdSet(MV_U32 threshold);
MV_STATUS mvOnuEponMacRxpDataFifoThresholdGet(MV_U32 *threshold);
/* ========================================================================== */
/* GPM Functions Section */
/* ========================================================================== */
MV_STATUS mvOnuEponMacGpmMacFutureGrantTimeSet(MV_U32 grant);
MV_STATUS mvOnuEponMacGpmMinProcessingTimeSet(MV_U32 processingTime, MV_U32 effectiveLength);
#ifdef PON_Z2
MV_STATUS mvOnuEponMacGpmDiscoveryGrantLengthSet(MV_U32 grantLength, MV_U32 addOffsetForCalc, MV_U32 grantLengthMultiTq);
#endif /* PON_Z2 */
#ifdef PON_Z1
MV_STATUS mvOnuEponMacGpmDiscoveryGrantLengthSet(MV_U32 grantLength, MV_U32 grantLengthMultiTq);
#endif /* PON_Z1 */
MV_STATUS mvOnuEponMacGpmRxSyncGet(MV_U32 *syncTime, MV_U32 *syncTimeUpdateInd);
MV_STATUS mvOnuEponMacGpmGrantValidCounterGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacGpmGrantMaxFutureTimeErrorCounterGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacGpmMinProcTimeErrorCounterGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacGpmLengthErrorCounterGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacGpmDiscoveryAndRegisterCounterGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacGpmFifoFullErrorCounterGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacGpmOpcDiscoveryNotRegisterBcastCounterGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacGpmOpcRegisterNotDiscoveryCounterGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacGpmOpcDiscoveryNotRegisterNotBcastCounterGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacGpmOpcDropGrantCounterGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacGpmOpcHiddenGrantCounterGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacGpmOpcBackToBackCounterGet(MV_U32 *counter, MV_U32 macId);
/* ========================================================================== */
/* TXM Functions Section */
/* ========================================================================== */
MV_STATUS mvOnuEponMacTxmOverheadSet(MV_U32 overhead);
MV_STATUS mvOnuEponMacTxmOverheadGet(MV_U32 *overhead);
#ifdef PON_Z2
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);
#endif /* PON_Z2 */
#ifdef PON_Z1
MV_STATUS mvOnuEponMacTxmConfigSet(MV_U32 mode, MV_U32 alignment, MV_U32 priority);
#endif /* PON_Z1 */
MV_STATUS mvOnuEponMacTxmLlidSet(MV_U32 llid, MV_U32 macId);
#ifdef PON_Z2
MV_STATUS mvOnuEponMacTxmCppReportConfig(MV_U32 queueReportQ2, MV_U32 reportBitmapQ2,
MV_U32 queueReport, MV_U32 queueSet,
MV_U32 reportBitmap, MV_U32 macId);
#endif /* PON_Z2 */
#ifdef PON_Z1
MV_STATUS mvOnuEponMacTxmCppReportConfig(MV_U32 config, MV_U32 macId);
#endif /* PON_Z1 */
MV_STATUS mvOnuEponMacTxmCppReportBitMap(MV_U32 bitMap, MV_U32 macId);
MV_STATUS mvOnuEponMacTxmCppReportBitMapGet(MV_U32 *bitMap, MV_U32 macId);
MV_STATUS mvOnuEponMacTxmCppReportQueueSet(MV_U32 queueSet, MV_U32 macId);
MV_STATUS mvOnuEponMacTxmCppReportQueueSetGet(MV_U32 *queueSet, MV_U32 macId);
MV_STATUS mvOnuEponMacTxmCppReportQueueX(MV_U32 queueNum, MV_U32 queueCfg, MV_U32 macId);
MV_STATUS mvOnuEponMacTxmCppReportUpdate(MV_U32 validQueueReport, MV_U32 highestReportQueue, MV_U32 macId);
/* ========================================================================== */
/* PCS Functions Section */
/* ========================================================================== */
MV_STATUS mvOnuEponMacPcsConfigSet(MV_U32 config);
MV_STATUS mvOnuEponMacPcsConfigGet(MV_U32 *config);
MV_STATUS mvOnuEponMacPcsDelaySet(MV_U32 delay);
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_STATUS mvOnuEponMacPcsFrameSizeLimitsSet(MV_U32 size, MV_U32 latency);
MV_STATUS mvOnuEponMacPcsFrameSizeLimitsGet(MV_U32 *size, MV_U32 *latency);
/* ========================================================================== */
/* DDM Functions Section */
/* ========================================================================== */
MV_STATUS mvOnuEponMacDdmDelaySet(MV_U32 delay);
#ifdef PON_Z2
MV_STATUS mvOnuEponMacDdmTxPolaritySet(MV_U32 txEnable, MV_U32 polarity);
#elif defined PON_Z1
MV_STATUS mvOnuEponMacDdmTxPolaritySet(MV_U32 polarity);
#else
MV_STATUS mvOnuEponMacDdmTxPolaritySet(MV_U32 txEnable,
MV_U32 txPolarity,
MV_U32 serdesPolarity,
MV_U32 xvrPolarity,
MV_U32 burstEnable);
#endif
/* ========================================================================== */
/* Statistics Functions Section */
/* ========================================================================== */
MV_STATUS mvOnuEponMacRxStatsFcsErrorGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacRxStatsShortErrorGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacRxStatsLongErrorGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacRxStatsDataFrameGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacRxStatsCtrlFrameGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacRxStatsReportFrameGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacRxStatsGateFrameGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacTxStatsCtrlRegReqFrameGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacTxStatsCtrlRegAckFrameGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacTxStatsCtrlReportFrameGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacTxStatsDataFrameGet(MV_U32 *counter, MV_U32 macId);
MV_STATUS mvOnuEponMacTxStatsTxAllowedByteCountGet(MV_U32 *counter, MV_U32 macId);
/* ========================================================================== */
/* CPQ Functions Section */
/* ========================================================================== */
MV_STATUS mvOnuEponMacCpqRxCtrlHeaderQueueUsedCountGet(MV_U32 *usedCount);
MV_STATUS mvOnuEponMacCpqRxCtrlHeaderQueueReadData(MV_U32 *dataLow, MV_U32 *dataHigh);
MV_STATUS mvOnuEponMacCpqRxCtrlQueueUsedCountGet(MV_U32 *usedCount);
MV_STATUS mvOnuEponMacCpqRxCtrlQueueReadData(MV_U32 *data);
MV_STATUS mvOnuEponMacCpqRxRprtHeaderQueueUsedCountGet(MV_U32 *usedCount);
MV_STATUS mvOnuEponMacCpqRxRprtHeaderQueueReadData(MV_U32 *dataLow, MV_U32 *dataHigh);
MV_STATUS mvOnuEponMacCpqRxRprtQueueUsedCountGet(MV_U32 *usedCount);
MV_STATUS mvOnuEponMacCpqRxRprtQueueReadData(MV_U32 *data);
MV_STATUS mvOnuEponMacCpqTxCtrlHeaderQueueFree(MV_U32 *freeCount, MV_U32 macId);
MV_STATUS mvOnuEponMacCpqTxCtrlHeaderQueueWrite(MV_U32 data, MV_U32 macId);
MV_STATUS mvOnuEponMacCpqTxCtrlQueueFree(MV_U32 *freeCount, MV_U32 macId);
MV_STATUS mvOnuEponMacCpqTxCtrlQueueWrite(MV_U32 data, MV_U32 macId);
/* ========================================================================== */
/* SERDES Functions Section */
/* ========================================================================== */
MV_STATUS mvOnuEponMacSerdesPuRxWrite(MV_U32 enable);
/******************************************************************************/
/******************************************************************************/
/* ========================================================================== */
/* ========================================================================== */
/* == == */
/* == == == ========= ========= == == == */
/* == == == ========= ========= === == == */
/* == == == == == == == == == == == */
/* == == == == == == == == == == == */
/* == == == ========= == == == == == == */
/* == == == ========= == == == == == == */
/* == == == == == == == == == == */
/* == == == == == == == ==== == */
/* == ========= == ========= == === == */
/* == ========= == ========= == == == */
/* == == */
/* ========================================================================== */
/* ========================================================================== */
/******************************************************************************/
/******************************************************************************/
#ifndef PON_FPGA
/* ========================================================================== */
/* DG Functions Section */
/* ========================================================================== */
MV_STATUS mvOnuPonMacDgInterruptEn(MV_U32 dgPol);
MV_STATUS mvOnuPonMacDgInterruptDis(void);
#endif /* PON_FPGA */
#endif /* _ONU_PON_MAC_H */