| /******************************************************************************* |
| 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 (0x1984) /* 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_EXT_BURST_LEN) |
| |
| /* 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) |
| |
| |
| /* 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 */ |