| /******************************************************************************* |
| 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 "mvCommon.h" |
| #include "mvOs.h" |
| #include "ctrlEnv/mvCtrlEnvSpec.h" |
| |
| #include "mvPonOnuDefines.h" |
| #include "mvPonOnuRegs.h" |
| #include "mvPonOnuMac.h" |
| |
| /* Local Constant |
| ------------------------------------------------------------------------------*/ |
| #define MV_ASIC_ONT_GLB_ADDR (MV_ASIC_ONT_BASE) |
| |
| /* Global Variables |
| ------------------------------------------------------------------------------*/ |
| MV_U32 ponOnuGlbAddr; |
| |
| /* Local Variables |
| ------------------------------------------------------------------------------*/ |
| |
| S_asicGlobalRegDb asicGlbDb[] = |
| { |
| /* Enumeration |Address |Offset |Access |Mask |Shift |Table |Table |Cnt |Description |
| * | | |Type | | |Len |Entry | | |
| * | | | | | | |Size | | |
| * ============================================================================================================================================================================================================================= */ |
| [mvAsicReg_Start] = { mvAsicReg_Start }, |
| |
| /******************************************************************************/ |
| /******************************************************************************/ |
| /* ========================================================================== */ |
| /* ========================================================================== */ |
| /* == == */ |
| /* == ========= ========= ========= === == == */ |
| /* == ========= ========= ========= ==== == == */ |
| /* == == == == == == == == == == */ |
| /* == == == == == == == == == == */ |
| /* == ========= ========= == == == == == == */ |
| /* == ========= ========= == == == == == == */ |
| /* == == == == == == == == == == */ |
| /* == == == == == == == ==== == */ |
| /* == ========= == ========= == === == */ |
| /* == ========= == ========= == == == */ |
| /* == == */ |
| /* ========================================================================== */ |
| /* ========================================================================== */ |
| /******************************************************************************/ |
| /******************************************************************************/ |
| |
| /* =========================== */ |
| /* Interrupts Registers */ |
| /* =========================== */ |
| [mvAsicReg_GPON_INTERRUPT_PON] = { mvAsicReg_GPON_INTERRUPT_PON, MV_ASIC_ONT_GLB_ADDR + 0x0000, 0x0000, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Interrupt PON"}, |
| [mvAsicReg_GPON_INTERRUPT_PON_MASK] = { mvAsicReg_GPON_INTERRUPT_PON_MASK, MV_ASIC_ONT_GLB_ADDR + 0x0004, 0x0004, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Interrupt PON Mask"}, |
| [mvAsicReg_BIP_INTR_INTERVAL] = { mvAsicReg_BIP_INTR_INTERVAL, MV_ASIC_ONT_GLB_ADDR + 0x0008, 0x0008, asicRW, 0x0000FFFF, 0, 0, 0, 0, "BIP INTR interval"}, |
| [mvAsicReg_RX_BIP_STATUS_FOR_INTERRUPT] = { mvAsicReg_RX_BIP_STATUS_FOR_INTERRUPT, MV_ASIC_ONT_GLB_ADDR + 0x000C, 0x000C, asicRO, 0x0000FFFF, 0, 0, 0, 0, "BIP INTR stats accumulator"}, |
| [mvAsicReg_RAM_TEST_CONFIG] = { mvAsicReg_RAM_TEST_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x0010, 0x000C, asicRW, 0x0000000F, 0, 0, 0, 0, "Ram test config PE polarity"}, |
| |
| /* =========================== */ |
| /* General Registers */ |
| /* =========================== */ |
| [mvAsicReg_GPON_GEN_MAC_VERSION] = { mvAsicReg_GPON_GEN_MAC_VERSION, MV_ASIC_ONT_GLB_ADDR + 0x0400, 0x0400, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "GPON version"}, |
| [mvAsicReg_GPON_GEN_MAC_VERSION_ID] = { mvAsicReg_GPON_GEN_MAC_VERSION_ID, MV_ASIC_ONT_GLB_ADDR + 0x0400, 0x0400, asicRO, 0x0000FFFF, 0, 0, 0, 0, "GPON MAC version"}, |
| [mvAsicReg_GPON_GEN_MAC_VERSION_MAC_ID] = { mvAsicReg_GPON_GEN_MAC_VERSION_MAC_ID, MV_ASIC_ONT_GLB_ADDR + 0x0400, 0x0400, asicRO, 0x0000FFFF, 16, 0, 0, 0, "GPON MAC Id"}, |
| [mvAsicReg_GPON_GEN_MAC_SCRATCH] = { mvAsicReg_GPON_GEN_MAC_SCRATCH, MV_ASIC_ONT_GLB_ADDR + 0x0404, 0x0404, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "MAC scratch register"}, |
| [mvAsicReg_GPON_ONU_STATE] = { mvAsicReg_GPON_ONU_STATE, MV_ASIC_ONT_GLB_ADDR + 0x0408, 0x0408, asicRW, 0x000000FF, 0, 0, 0, 0, "ONU state"}, |
| [mvAsicReg_GPON_GEN_MICRO_SEC_CNT] = { mvAsicReg_GPON_GEN_MICRO_SEC_CNT, MV_ASIC_ONT_GLB_ADDR + 0x040C, 0x040C, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Micro second counter"}, |
| [mvAsicReg_GPON_TX_SERIAL_NUMBER] = { mvAsicReg_GPON_TX_SERIAL_NUMBER, MV_ASIC_ONT_GLB_ADDR + 0x0410, 0x0410, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Tx serial number"}, |
| [mvAsicReg_GPON_ONU_ID] = { mvAsicReg_GPON_ONU_ID, MV_ASIC_ONT_GLB_ADDR + 0x0414, 0x0414, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "ONU Id"}, |
| [mvAsicReg_GPON_ONU_ID_OID] = { mvAsicReg_GPON_ONU_ID_OID, MV_ASIC_ONT_GLB_ADDR + 0x0414, 0x0414, asicRW, 0x000000FF, 0, 0, 0, 0, "GPON ONU Id"}, |
| [mvAsicReg_GPON_ONU_ID_V] = { mvAsicReg_GPON_ONU_ID_V, MV_ASIC_ONT_GLB_ADDR + 0x0414, 0x0414, asicRW, 0x00000001, 8, 0, 0, 0, "GPON ONU valid indication"}, |
| [mvAsicReg_GPON_GEN_TOD_INT_WIDTH] = { mvAsicReg_GPON_GEN_TOD_INT_WIDTH, MV_ASIC_ONT_GLB_ADDR + 0x0418, 0x0418, asicRW, 0x3FFFFFFF, 0, 0, 0, 0, "GPON Interrupt Width"}, |
| [mvAsicReg_GPON_GEN_TOD_INT_SFC] = { mvAsicReg_GPON_GEN_TOD_INT_SFC, MV_ASIC_ONT_GLB_ADDR + 0x041C, 0x041C, asicRW, 0x3FFFFFFF, 0, 0, 0, 0, "GPON SPF Counter for TOD INT"}, |
| |
| /* =========================== */ |
| /* Rx Registers */ |
| /* =========================== */ |
| [mvAsicReg_GPON_RX_CONFIG] = { mvAsicReg_GPON_RX_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x0800, 0x0800, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Rx config"}, |
| [mvAsicReg_GPON_RX_CONFIG_EN] = { mvAsicReg_GPON_RX_CONFIG_EN, MV_ASIC_ONT_GLB_ADDR + 0x0800, 0x0800, asicRW, 0x00000001, 0, 0, 0, 0, "Rx config - enable"}, |
| [mvAsicReg_GPON_RX_CONFIG_BIT_ORDER] = { mvAsicReg_GPON_RX_CONFIG_BIT_ORDER, MV_ASIC_ONT_GLB_ADDR + 0x0800, 0x0800, asicRW, 0x00000001, 1, 0, 0, 0, "Rx config - bit order"}, |
| [mvAsicReg_GPON_RX_PSA_CONFIG] = { mvAsicReg_GPON_RX_PSA_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x0804, 0x0804, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Rx PSA config"}, |
| [mvAsicReg_GPON_RX_PSA_CONFIG_SFM3] = { mvAsicReg_GPON_RX_PSA_CONFIG_SFM3, MV_ASIC_ONT_GLB_ADDR + 0x0804, 0x0804, asicRW, 0x000000FF, 0, 0, 0, 0, "PLOAM Sync SM: sync => hunt state"}, |
| [mvAsicReg_GPON_RX_PSA_CONFIG_SFM2] = { mvAsicReg_GPON_RX_PSA_CONFIG_SFM2, MV_ASIC_ONT_GLB_ADDR + 0x0804, 0x0804, asicRW, 0x000000FF, 8, 0, 0, 0, "PLOAM Sync SM: sync => hunt state"}, |
| [mvAsicReg_GPON_RX_PSA_CONFIG_SFM1] = { mvAsicReg_GPON_RX_PSA_CONFIG_SFM1, MV_ASIC_ONT_GLB_ADDR + 0x0804, 0x0804, asicRW, 0x000000FF, 16, 0, 0, 0, "PLOAM Sync SM: pre-sync => sync state"}, |
| [mvAsicReg_GPON_RX_PSA_CONFIG_FHM1] = { mvAsicReg_GPON_RX_PSA_CONFIG_FHM1, MV_ASIC_ONT_GLB_ADDR + 0x0804, 0x0804, asicRW, 0x0000000F, 24, 0, 0, 0, "FEC hysteresis mechanisem"}, |
| [mvAsicReg_GPON_RX_FEC_CONFIG] = { mvAsicReg_GPON_RX_FEC_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x0808, 0x0808, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Rx FEC config"}, |
| [mvAsicReg_GPON_RX_FEC_CONFIG_SWVAL] = { mvAsicReg_GPON_RX_FEC_CONFIG_SWVAL, MV_ASIC_ONT_GLB_ADDR + 0x0808, 0x0808, asicRW, 0x00000001, 0, 0, 0, 0, "SW value for internal FEC indication"}, |
| [mvAsicReg_GPON_RX_FEC_CONFIG_FSW] = { mvAsicReg_GPON_RX_FEC_CONFIG_FSW, MV_ASIC_ONT_GLB_ADDR + 0x0808, 0x0808, asicRW, 0x00000001, 1, 0, 0, 0, "Force SW FEC indication"}, |
| [mvAsicReg_GPON_RX_FEC_CONFIG_IGNP] = { mvAsicReg_GPON_RX_FEC_CONFIG_IGNP, MV_ASIC_ONT_GLB_ADDR + 0x0808, 0x0808, asicRW, 0x00000001, 2, 0, 0, 0, "Force SW FEC ignore parity"}, |
| [mvAsicReg_GPON_RX_FEC_CONFIG_IND] = { mvAsicReg_GPON_RX_FEC_CONFIG_IND, MV_ASIC_ONT_GLB_ADDR + 0x0808, 0x0808, asicRO, 0x00000001, 31, 0, 0, 0, "Internal FEC indication"}, |
| [mvAsicReg_GPON_RX_FEC_STAT0] = { mvAsicReg_GPON_RX_FEC_STAT0, MV_ASIC_ONT_GLB_ADDR + 0x080C, 0x080C, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of bytes rece from last read"}, |
| [mvAsicReg_GPON_RX_FEC_STAT1] = { mvAsicReg_GPON_RX_FEC_STAT1, MV_ASIC_ONT_GLB_ADDR + 0x0810, 0x0810, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of correct bytes / bits"}, |
| [mvAsicReg_GPON_RX_FEC_STAT2] = { mvAsicReg_GPON_RX_FEC_STAT2, MV_ASIC_ONT_GLB_ADDR + 0x0814, 0x0814, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of incorrect / rece bytes"}, |
| [mvAsicReg_GPON_RX_SFRAME_COUNTER] = { mvAsicReg_GPON_RX_SFRAME_COUNTER, MV_ASIC_ONT_GLB_ADDR + 0x0818, 0x0818, asicRO, 0x3FFFFFFF, 0, 0, 0, 0, "Rx Superframe Counter"}, |
| [mvAsicReg_GPON_RX_PLOAMD_DATA_READ] = { mvAsicReg_GPON_RX_PLOAMD_DATA_READ, MV_ASIC_ONT_GLB_ADDR + 0x081C, 0x081C, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Rx PLOAM data fifo, PLOAM = 3xread"}, |
| [mvAsicReg_GPON_RX_PLOAMD_DATA_USED] = { mvAsicReg_GPON_RX_PLOAMD_DATA_USED, MV_ASIC_ONT_GLB_ADDR + 0x0820, 0x0820, asicRO, 0x000000FF, 0, 0, 0, 0, "Num of free entry's in PLOAM data fifo"}, |
| [mvAsicReg_GPON_RX_PLOAMD_CONFIG] = { mvAsicReg_GPON_RX_PLOAMD_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x0824, 0x0824, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Rx PLOAM config"}, |
| [mvAsicReg_GPON_RX_PLOAMD_CONFIG_IGNC] = { mvAsicReg_GPON_RX_PLOAMD_CONFIG_IGNC, MV_ASIC_ONT_GLB_ADDR + 0x0824, 0x0824, asicRW, 0x00000001, 0, 0, 0, 0, "Ignore PLOAM crc, forward regardless of crc"}, |
| [mvAsicReg_GPON_RX_PLOAMD_CONFIG_IGNB] = { mvAsicReg_GPON_RX_PLOAMD_CONFIG_IGNB, MV_ASIC_ONT_GLB_ADDR + 0x0824, 0x0824, asicRW, 0x00000001, 1, 0, 0, 0, "Ignore broadcast PLOAM, forward only onuId"}, |
| [mvAsicReg_GPON_RX_PLOAMD_CONFIG_FALL] = { mvAsicReg_GPON_RX_PLOAMD_CONFIG_FALL, MV_ASIC_ONT_GLB_ADDR + 0x0824, 0x0824, asicRW, 0x00000001, 2, 0, 0, 0, "Forward all PLOAM"}, |
| [mvAsicReg_GPON_RX_PLOAMD_LOST_CRC_STATUS] = { mvAsicReg_GPON_RX_PLOAMD_LOST_CRC_STATUS, MV_ASIC_ONT_GLB_ADDR + 0x0828, 0x0828, asicRO, 0x0000FFFF, 0, 0, 0, 0, "Num of PLOAM lost due to faulty crc"}, |
| [mvAsicReg_GPON_RX_PLOAMD_LOST_FULL_STATUS] = { mvAsicReg_GPON_RX_PLOAMD_LOST_FULL_STATUS, MV_ASIC_ONT_GLB_ADDR + 0x082C, 0x082C, asicRO, 0x0000FFFF, 0, 0, 0, 0, "Num of PLOAM lost due to cpu fifo full"}, |
| [mvAsicReg_GPON_RX_PLOAMD_RCVD_IDLE_STATUS] = { mvAsicReg_GPON_RX_PLOAMD_RCVD_IDLE_STATUS, MV_ASIC_ONT_GLB_ADDR + 0x0830, 0x0830, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of idle PLOAM rece"}, |
| [mvAsicReg_GPON_RX_PLOAMD_RCVD_BROAD_STATUS] = { mvAsicReg_GPON_RX_PLOAMD_RCVD_BROAD_STATUS, MV_ASIC_ONT_GLB_ADDR + 0x0834, 0x0834, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of broadcast PLOAM rece"}, |
| [mvAsicReg_GPON_RX_PLOAMD_RCVD_MYID_STATUS] = { mvAsicReg_GPON_RX_PLOAMD_RCVD_MYID_STATUS, MV_ASIC_ONT_GLB_ADDR + 0x0838, 0x0838, asicRO, 0x0000FFFF, 0, 0, 0, 0, "Num of PLOAM rece assigned to MYID"}, |
| [mvAsicReg_GPON_RX_BIP_STATUS] = { mvAsicReg_GPON_RX_BIP_STATUS, MV_ASIC_ONT_GLB_ADDR + 0x083C, 0x083C, asicRO, 0x0000FFFF, 0, 0, 0, 0, "Num of BIP errors since last read"}, |
| [mvAsicReg_GPON_RX_PLEND_CONFIG] = { mvAsicReg_GPON_RX_PLEND_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x0840, 0x0840, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Rx PLEND config"}, |
| [mvAsicReg_GPON_RX_PLEND_CONFIG_FN] = { mvAsicReg_GPON_RX_PLEND_CONFIG_FN, MV_ASIC_ONT_GLB_ADDR + 0x0840, 0x0840, asicRW, 0x00000001, 0, 0, 0, 0, "Force SW plend field selection"}, |
| [mvAsicReg_GPON_RX_PLEND_CONFIG_UF] = { mvAsicReg_GPON_RX_PLEND_CONFIG_UF, MV_ASIC_ONT_GLB_ADDR + 0x0840, 0x0840, asicRW, 0x00000001, 1, 0, 0, 0, "SW use of plend field"}, |
| [mvAsicReg_GPON_RX_PLEND_CONFIG_IGND] = { mvAsicReg_GPON_RX_PLEND_CONFIG_IGND, MV_ASIC_ONT_GLB_ADDR + 0x0840, 0x0840, asicRW, 0x00000001, 2, 0, 0, 0, "Ignore diff between two plend fields"}, |
| [mvAsicReg_GPON_RX_PLEND_CONFIG_DFIX] = { mvAsicReg_GPON_RX_PLEND_CONFIG_DFIX, MV_ASIC_ONT_GLB_ADDR + 0x0840, 0x0840, asicRW, 0x00000001, 3, 0, 0, 0, "Do not fix plend field according to crc result"}, |
| [mvAsicReg_GPON_RX_PLEND_CONFIG_IGNC] = { mvAsicReg_GPON_RX_PLEND_CONFIG_IGNC, MV_ASIC_ONT_GLB_ADDR + 0x0840, 0x0840, asicRW, 0x00000001, 4, 0, 0, 0, "Ignore crc during plend field selection"}, |
| [mvAsicReg_GPON_RX_PLEND_STATUS] = { mvAsicReg_GPON_RX_PLEND_STATUS, MV_ASIC_ONT_GLB_ADDR + 0x0844, 0x0844, asicRO, 0x0000FFFF, 0, 0, 0, 0, "Rx PLEND status"}, |
| [mvAsicReg_GPON_RX_BWMAP_CONFIG] = { mvAsicReg_GPON_RX_BWMAP_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x0848, 0x0848, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Rx BW map config"}, |
| [mvAsicReg_GPON_RX_BWMAP_CONFIG_MSD] = { mvAsicReg_GPON_RX_BWMAP_CONFIG_MSD, MV_ASIC_ONT_GLB_ADDR + 0x0848, 0x0848, asicRW, 0x00000FFF, 0, 0, 0, 0, "Min num of bytes between bursts"}, |
| [mvAsicReg_GPON_RX_BWMAP_CONFIG_DFIX] = { mvAsicReg_GPON_RX_BWMAP_CONFIG_DFIX, MV_ASIC_ONT_GLB_ADDR + 0x0848, 0x0848, asicRW, 0x00000001, 12, 0, 0, 0, "Do not fix BW map according to crc result"}, |
| [mvAsicReg_GPON_RX_BWMAP_CONFIG_IGNC] = { mvAsicReg_GPON_RX_BWMAP_CONFIG_IGNC, MV_ASIC_ONT_GLB_ADDR + 0x0848, 0x0848, asicRW, 0x00000001, 13, 0, 0, 0, "Ignore crc result for BW allocation"}, |
| [mvAsicReg_GPON_RX_BWMAP_STATUS0] = { mvAsicReg_GPON_RX_BWMAP_STATUS0, MV_ASIC_ONT_GLB_ADDR + 0x084C, 0x084C, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of BW bytes rece with crc: bad/error/corr/uncorr"}, |
| [mvAsicReg_GPON_RX_BWMAP_STATUS1] = { mvAsicReg_GPON_RX_BWMAP_STATUS1, MV_ASIC_ONT_GLB_ADDR + 0x0850, 0x0850, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of BW bytes rece from last read"}, |
| [mvAsicReg_GPON_RX_AES_CONFIG] = { mvAsicReg_GPON_RX_AES_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x0854, 0x0854, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Rx AES key switch config"}, |
| [mvAsicReg_GPON_RX_AES_CONFIG_TIME] = { mvAsicReg_GPON_RX_AES_CONFIG_TIME, MV_ASIC_ONT_GLB_ADDR + 0x0854, 0x0854, asicRW, 0x3FFFFFFF, 0, 0, 0, 0, "AES Key switch time value based on superframe counter"}, |
| [mvAsicReg_GPON_RX_AES_CONFIG_SWS] = { mvAsicReg_GPON_RX_AES_CONFIG_SWS, MV_ASIC_ONT_GLB_ADDR + 0x0854, 0x0854, asicRW, 0x00000001, 30, 0, 0, 0, "AES SW Force key switch according to superframe counter"}, |
| [mvAsicReg_GPON_RX_AES_STATUS] = { mvAsicReg_GPON_RX_AES_STATUS, MV_ASIC_ONT_GLB_ADDR + 0x0858, 0x0858, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Rx AES status"}, |
| [mvAsicReg_GPON_RX_AES_STATUS_HST] = { mvAsicReg_GPON_RX_AES_STATUS_HST, MV_ASIC_ONT_GLB_ADDR + 0x0858, 0x0858, asicRO, 0x3FFFFFFF, 0, 0, 0, 0, "Indicates the time to switch AES Key"}, |
| [mvAsicReg_GPON_RX_AES_STATUS_HWS] = { mvAsicReg_GPON_RX_AES_STATUS_HWS, MV_ASIC_ONT_GLB_ADDR + 0x0858, 0x0858, asicRO, 0x00000001, 30, 0, 0, 0, "indicates AES key switch time is valid"}, |
| [mvAsicReg_GPON_RX_EQULIZATION_DELAY] = { mvAsicReg_GPON_RX_EQULIZATION_DELAY, MV_ASIC_ONT_GLB_ADDR + 0x085C, 0x085C, asicRW, 0x000FFFFF, 0, 0, 0, 0, "Rx equalization delay, sent from the OLT"}, |
| [mvAsicReg_GPON_RX_INTERNAL_DELAY] = { mvAsicReg_GPON_RX_INTERNAL_DELAY, MV_ASIC_ONT_GLB_ADDR + 0x0860, 0x0860, asicRW, 0x00001FFF, 0, 0, 0, 0, "Rx Internal Delay - Constant"}, |
| [mvAsicReg_GPON_RX_BW_MAP] = { mvAsicReg_GPON_RX_BW_MAP, MV_ASIC_ONT_GLB_ADDR + 0x0880, 0x0880, asicRW, 0xFFFFFFFF, 0, 16, 1, 0, "Rx BW map"}, |
| [mvAsicReg_GPON_RX_BW_MAP_ALID] = { mvAsicReg_GPON_RX_BW_MAP_ALID, MV_ASIC_ONT_GLB_ADDR + 0x0880, 0x0880, asicRW, 0x00000FFF, 0, 16, 1, 0, "Alloc Id number to be mapped to tcont number"}, |
| [mvAsicReg_GPON_RX_BW_MAP_TCN] = { mvAsicReg_GPON_RX_BW_MAP_TCN, MV_ASIC_ONT_GLB_ADDR + 0x0880, 0x0880, asicRW, 0x0000001F, 12, 16, 1, 0, "Tcont number to which the allocId will be mapped"}, |
| [mvAsicReg_GPON_RX_BW_MAP_EN] = { mvAsicReg_GPON_RX_BW_MAP_EN, MV_ASIC_ONT_GLB_ADDR + 0x0880, 0x0880, asicRW, 0x00000001, 17, 16, 1, 0, "Rx BW map mapping fields are valid"}, |
| |
| /* =========================== */ |
| /* GEM Registers */ |
| /* =========================== */ |
| [mvAsicReg_GPON_GEM_STAT_IDLE_GEM_CNT] = { mvAsicReg_GPON_GEM_STAT_IDLE_GEM_CNT, MV_ASIC_ONT_GLB_ADDR + 0x0C00, 0x0C00, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of rece idle gem frames"}, |
| [mvAsicReg_GPON_GEM_STAT_VALID_GEM_CNT] = { mvAsicReg_GPON_GEM_STAT_VALID_GEM_CNT, MV_ASIC_ONT_GLB_ADDR + 0x0C04, 0x0C04, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of rece valid gem frames"}, |
| [mvAsicReg_GPON_GEM_STAT_UNDEF_GEM_CNT] = { mvAsicReg_GPON_GEM_STAT_UNDEF_GEM_CNT, MV_ASIC_ONT_GLB_ADDR + 0x0C08, 0x0C08, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of rece undefined gem frames"}, |
| [mvAsicReg_GPON_GEM_STAT_VALID_OMCI_CNT] = { mvAsicReg_GPON_GEM_STAT_VALID_OMCI_CNT, MV_ASIC_ONT_GLB_ADDR + 0x0C0C, 0x0C0C, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of rece omci frames"}, |
| [mvAsicReg_GPON_GEM_STAT_DROPPED_GEM_CNT] = { mvAsicReg_GPON_GEM_STAT_DROPPED_GEM_CNT, MV_ASIC_ONT_GLB_ADDR + 0x0C10, 0x0C10, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of dropped gem frames"}, |
| [mvAsicReg_GPON_GEM_STAT_DROPPED_OMCI_CNT] = { mvAsicReg_GPON_GEM_STAT_DROPPED_OMCI_CNT, MV_ASIC_ONT_GLB_ADDR + 0x0C14, 0x0C14, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of dropped omci frames"}, |
| [mvAsicReg_GPON_GEM_STAT_ERROR_GEM_CNT] = { mvAsicReg_GPON_GEM_STAT_ERROR_GEM_CNT, MV_ASIC_ONT_GLB_ADDR + 0x0C18, 0x0C18, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of rece gem frames with uncorr HEC errors"}, |
| [mvAsicReg_GPON_GEM_STAT_ONE_FIXED_HEC_ERR_CNT] = { mvAsicReg_GPON_GEM_STAT_ONE_FIXED_HEC_ERR_CNT, MV_ASIC_ONT_GLB_ADDR + 0x0C1C, 0x0C1C, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of rece gem frames with 1 HEC error in gem header"}, |
| [mvAsicReg_GPON_GEM_STAT_TWO_FIXED_HEC_ERR_CNT] = { mvAsicReg_GPON_GEM_STAT_TWO_FIXED_HEC_ERR_CNT, MV_ASIC_ONT_GLB_ADDR + 0x0C20, 0x0C20, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of rece gem frames with 2 HEC error in gem header"}, |
| [mvAsicReg_GPON_GEM_STAT_VALID_GEM_PAYLOAD_CNT] = { mvAsicReg_GPON_GEM_STAT_VALID_GEM_PAYLOAD_CNT, MV_ASIC_ONT_GLB_ADDR + 0x0C24, 0x0C24, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Total payload byte count of rece valid gem frames"}, |
| [mvAsicReg_GPON_GEM_STAT_UNDEF_GEM_PAYLOAD_CNT] = { mvAsicReg_GPON_GEM_STAT_UNDEF_GEM_PAYLOAD_CNT, MV_ASIC_ONT_GLB_ADDR + 0x0C28, 0x0C28, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Total payload byte count of rece undefined gem frames"}, |
| [mvAsicReg_GPON_GEM_STAT_RSMBL_MEM_FLUSH_CNT] = { mvAsicReg_GPON_GEM_STAT_RSMBL_MEM_FLUSH_CNT, MV_ASIC_ONT_GLB_ADDR + 0x0C2C, 0x0C2C, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of times gem reassemble memory was flushed"}, |
| [mvAsicReg_GPON_GEM_STAT_LCDGi_CNT] = { mvAsicReg_GPON_GEM_STAT_LCDGi_CNT, MV_ASIC_ONT_GLB_ADDR + 0x0C30, 0x0C30, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of times gem synchronization was lost"}, |
| [mvAsicReg_GPON_GEM_STAT_CORR_ETH_FRAME_CNT] = { mvAsicReg_GPON_GEM_STAT_CORR_ETH_FRAME_CNT, MV_ASIC_ONT_GLB_ADDR + 0x0C34, 0x0C34, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of rece ethernet frames with corr fcs"}, |
| [mvAsicReg_GPON_GEM_STAT_ERR_ETH_FRAME_CNT] = { mvAsicReg_GPON_GEM_STAT_ERR_ETH_FRAME_CNT, MV_ASIC_ONT_GLB_ADDR + 0x0C38, 0x0C38, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of rece ethernet frames with fcs error"}, |
| [mvAsicReg_GPON_GEM_STAT_CORR_OMCI_FRAME_CNT] = { mvAsicReg_GPON_GEM_STAT_CORR_OMCI_FRAME_CNT, MV_ASIC_ONT_GLB_ADDR + 0x0C3C, 0x0C3C, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of rece omci frames with corr crc"}, |
| [mvAsicReg_GPON_GEM_STAT_ERR_OMCI_FRAME_CNT] = { mvAsicReg_GPON_GEM_STAT_ERR_OMCI_FRAME_CNT, MV_ASIC_ONT_GLB_ADDR + 0x0C40, 0x0C40, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Num of rece omci frames with crc error"}, |
| [mvAsicReg_GPON_GEM_CONFIG_PLI] = { mvAsicReg_GPON_GEM_CONFIG_PLI, MV_ASIC_ONT_GLB_ADDR + 0x0C44, 0x0C44, asicRW, 0x00000FFF, 0, 0, 0, 0, "Gem frames max payload length"}, |
| [mvAsicReg_GPON_GEM_CONFIG_ETH_FRAME_LEN] = { mvAsicReg_GPON_GEM_CONFIG_ETH_FRAME_LEN, MV_ASIC_ONT_GLB_ADDR + 0x0C48, 0x0C48, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Gem ethernet frames length config"}, |
| [mvAsicReg_GPON_GEM_CONFIG_ETH_FRAME_LEN_MAX] = { mvAsicReg_GPON_GEM_CONFIG_ETH_FRAME_LEN_MAX, MV_ASIC_ONT_GLB_ADDR + 0x0C48, 0x0C48, asicRW, 0x00000FFF, 0, 0, 0, 0, "Gem ethernet frames max length"}, |
| [mvAsicReg_GPON_GEM_CONFIG_ETH_FRAME_LEN_MIN] = { mvAsicReg_GPON_GEM_CONFIG_ETH_FRAME_LEN_MIN, MV_ASIC_ONT_GLB_ADDR + 0x0C48, 0x0C48, asicRW, 0x00000FFF, 16, 0, 0, 0, "Gem ethernet frames min length"}, |
| [mvAsicReg_GPON_GEM_CONFIG_OMCI_FRAME_LEN] = { mvAsicReg_GPON_GEM_CONFIG_OMCI_FRAME_LEN, MV_ASIC_ONT_GLB_ADDR + 0x0C4C, 0x0C4C, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Gem omci frames length config"}, |
| [mvAsicReg_GPON_GEM_CONFIG_OMCI_FRAME_LEN_MAX] = { mvAsicReg_GPON_GEM_CONFIG_OMCI_FRAME_LEN_MAX, MV_ASIC_ONT_GLB_ADDR + 0x0C4C, 0x0C4C, asicRW, 0x00000FFF, 0, 0, 0, 0, "Gem omci frames max length"}, |
| [mvAsicReg_GPON_GEM_CONFIG_OMCI_FRAME_LEN_MIN] = { mvAsicReg_GPON_GEM_CONFIG_OMCI_FRAME_LEN_MIN, MV_ASIC_ONT_GLB_ADDR + 0x0C4C, 0x0C4C, asicRW, 0x00000FFF, 16, 0, 0, 0, "Gem omci frames min length"}, |
| [mvAsicReg_GPON_GEM_CONFIG_OMCI_PORT] = { mvAsicReg_GPON_GEM_CONFIG_OMCI_PORT, MV_ASIC_ONT_GLB_ADDR + 0x0C50, 0x0C50, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Omci gem port Id config"}, |
| [mvAsicReg_GPON_GEM_CONFIG_OMCI_PORT_ID] = { mvAsicReg_GPON_GEM_CONFIG_OMCI_PORT_ID, MV_ASIC_ONT_GLB_ADDR + 0x0C50, 0x0C50, asicRW, 0x00000FFF, 0, 0, 0, 0, "Omci gem port Id value"}, |
| [mvAsicReg_GPON_GEM_CONFIG_OMCI_PORT_VALID] = { mvAsicReg_GPON_GEM_CONFIG_OMCI_PORT_VALID, MV_ASIC_ONT_GLB_ADDR + 0x0C50, 0x0C50, asicRW, 0x00000001, 16, 0, 0, 0, "Omci gem port Id valid indication"}, |
| [mvAsicReg_GPON_GEM_CONFIG_OMCI_FAST_PATH_VALID] = { mvAsicReg_GPON_GEM_CONFIG_OMCI_FAST_PATH_VALID, MV_ASIC_ONT_GLB_ADDR + 0x0C50, 0x0C50, asicRW, 0x00000001, 31, 0, 0, 0, "D/S OMCI fast path valid indication"}, |
| [mvAsicReg_GPON_GEM_CONFIG_AES] = { mvAsicReg_GPON_GEM_CONFIG_AES, MV_ASIC_ONT_GLB_ADDR + 0x0C54, 0x0C54, asicRW, 0x00000001, 0, 0, 0, 0, "Gem AES enable"}, |
| [mvAsicReg_GPON_GEM_AES_SHADOW_KEY] = { mvAsicReg_GPON_GEM_AES_SHADOW_KEY, MV_ASIC_ONT_GLB_ADDR + 0x0C58, 0x0C58, asicRW, 0xFFFFFFFF, 0, 4, 1, 0, "Rx AES shadow key"}, |
| [mvAsicReg_GPON_GEM_CFG_IPG_VALUE] = { mvAsicReg_GPON_GEM_CFG_IPG_VALUE, MV_ASIC_ONT_GLB_ADDR + 0x0C68, 0x0C68, asicRW, 0x000000FF, 0, 0, 0, 0, "Gem Cfg IPG Value"}, |
| [mvAsicReg_GPON_GEM_CFG_IPG_VALID] = { mvAsicReg_GPON_GEM_CFG_IPG_VALID, MV_ASIC_ONT_GLB_ADDR + 0x0C6C, 0x0C6C, asicRW, 0x00000001, 0, 0, 0, 0, "Gem Cfg IPG Valid"}, |
| [mvAsicReg_GPON_GEM_RX_CTRL_Q_READ] = { mvAsicReg_GPON_GEM_RX_CTRL_Q_READ, MV_ASIC_ONT_GLB_ADDR + 0x0C74, 0x0C74, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Rx control cmd and data fifo"}, |
| [mvAsicReg_GPON_GEM_RX_CTRL_DATA_USED] = { mvAsicReg_GPON_GEM_RX_CTRL_DATA_USED, MV_ASIC_ONT_GLB_ADDR + 0x0C78, 0x0C78, asicRO, 0x000003FF, 0, 0, 0, 0, "Control data fifo used"}, |
| [mvAsicReg_GPON_GEM_RX_CTRL_CMD_USED] = { mvAsicReg_GPON_GEM_RX_CTRL_CMD_USED, MV_ASIC_ONT_GLB_ADDR + 0x0C78, 0x0C78, asicRO, 0x000000FF, 16, 0, 0, 0, "Control cmd fifo used"}, |
| [mvAsicReg_GPON_GEM_RX_CTRL_HQ_HEAD_LEN] = { mvAsicReg_GPON_GEM_RX_CTRL_HQ_HEAD_LEN, MV_ASIC_ONT_GLB_ADDR + 0x0C7C, 0x0C7C, asicRO, 0x00000FFF, 0, 0, 0, 0, "Rx control cmd and data header length"}, |
| [mvAsicReg_GPON_GEM_RX_CTRL_HQ_GEM_PORT_ID] = { mvAsicReg_GPON_GEM_RX_CTRL_HQ_GEM_PORT_ID, MV_ASIC_ONT_GLB_ADDR + 0x0C7C, 0x0C7C, asicRO, 0x00000FFF, 12, 0, 0, 0, "Rx control cmd and data GEM port ID"}, |
| [mvAsicReg_GPON_GEM_RX_CTRL_HQ_GEM_PTI] = { mvAsicReg_GPON_GEM_RX_CTRL_HQ_GEM_PTI, MV_ASIC_ONT_GLB_ADDR + 0x0C7C, 0x0C7C, asicRO, 0x00000007, 24, 0, 0, 0, "Rx control cmd and data GEM PTI"}, |
| [mvAsicReg_GPON_GEM_RX_CTRL_HQ_GEM_ERR] = { mvAsicReg_GPON_GEM_RX_CTRL_HQ_GEM_ERR, MV_ASIC_ONT_GLB_ADDR + 0x0C7C, 0x0C7C, asicRO, 0x00000001, 27, 0, 0, 0, "Rx control cmd and data GEM error"}, |
| |
| /* =========================== */ |
| /* Tx Registers */ |
| /* =========================== */ |
| [mvAsicReg_GPON_TX_PREAMBLE] = { mvAsicReg_GPON_TX_PREAMBLE, MV_ASIC_ONT_GLB_ADDR + 0x1000, 0x1000, asicRW, 0xFFFFFFFF, 0, 3, 1, 0, "Tx preamble config"}, |
| [mvAsicReg_GPON_TX_PREAMBLE_PATT] = { mvAsicReg_GPON_TX_PREAMBLE_PATT, MV_ASIC_ONT_GLB_ADDR + 0x1000, 0x1000, asicRW, 0x000000FF, 0, 3, 1, 0, "Tx preamble type 1/2/3 pattern"}, |
| [mvAsicReg_GPON_TX_PREAMBLE_SIZE] = { mvAsicReg_GPON_TX_PREAMBLE_SIZE, MV_ASIC_ONT_GLB_ADDR + 0x1000, 0x1000, asicRW, 0x000000FF, 8, 3, 1, 0, "Tx preamble type 1/2/3 size"}, |
| [mvAsicReg_GPON_TX_DELIMITER] = { mvAsicReg_GPON_TX_DELIMITER, MV_ASIC_ONT_GLB_ADDR + 0x100C, 0x100C, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Tx delimiter config"}, |
| [mvAsicReg_GPON_TX_DELIMITER_PAT] = { mvAsicReg_GPON_TX_DELIMITER_PAT, MV_ASIC_ONT_GLB_ADDR + 0x100C, 0x100C, asicRW, 0x00FFFFFF, 0, 0, 0, 0, "Tx delimiter byte 1/2/3 pattern"}, |
| [mvAsicReg_GPON_TX_DELIMITER_SIZE] = { mvAsicReg_GPON_TX_DELIMITER_SIZE, MV_ASIC_ONT_GLB_ADDR + 0x100C, 0x100C, asicRW, 0x000000FF, 24, 0, 0, 0, "Tx delimiter size"}, |
| [mvAsicReg_GPON_TX_BURST_EN_PARAM] = { mvAsicReg_GPON_TX_BURST_EN_PARAM, MV_ASIC_ONT_GLB_ADDR + 0x1010, 0x1010, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Tx burst enable config"}, |
| [mvAsicReg_GPON_TX_BURST_EN_PARAM_STR] = { mvAsicReg_GPON_TX_BURST_EN_PARAM_STR, MV_ASIC_ONT_GLB_ADDR + 0x1010, 0x1010, asicRW, 0x0000001F, 0, 0, 0, 0, "Num of tx enable bytes before first US data bit is trans"}, |
| [mvAsicReg_GPON_TX_BURST_EN_PARAM_STP] = { mvAsicReg_GPON_TX_BURST_EN_PARAM_STP, MV_ASIC_ONT_GLB_ADDR + 0x1010, 0x1010, asicRW, 0x0000001F, 8, 0, 0, 0, "Num of tx enable bytes after last US data bit is trans"}, |
| [mvAsicReg_GPON_TX_BURST_EN_PARAM_DLY] = { mvAsicReg_GPON_TX_BURST_EN_PARAM_DLY, MV_ASIC_ONT_GLB_ADDR + 0x1010, 0x1010, asicRW, 0x00000001, 14, 0, 0, 0, "Swap the order of tx data and tx enable bytes"}, |
| [mvAsicReg_GPON_TX_BURST_EN_PARAM_P] = { mvAsicReg_GPON_TX_BURST_EN_PARAM_P, MV_ASIC_ONT_GLB_ADDR + 0x1010, 0x1010, asicRW, 0x00000001, 15, 0, 0, 0, "Tx Burst enable polarity"}, |
| [mvAsicReg_GPON_TX_BURST_EN_PARAM_MASK] = { mvAsicReg_GPON_TX_BURST_EN_PARAM_MASK, MV_ASIC_ONT_GLB_ADDR + 0x1010, 0x1010, asicRW, 0x000000FF, 16, 0, 0, 0, "Mask for 8 bits that are added to the end of tx enable signal"}, |
| [mvAsicReg_GPON_TX_FDELAY] = { mvAsicReg_GPON_TX_FDELAY, MV_ASIC_ONT_GLB_ADDR + 0x1014, 0x1014, asicRW, 0x0000003F, 0, 0, 0, 0, "Tx final delay"}, |
| [mvAsicReg_GPON_TX_PLOAM_DATA_WRITE] = { mvAsicReg_GPON_TX_PLOAM_DATA_WRITE, MV_ASIC_ONT_GLB_ADDR + 0x1018, 0x1018, asicWO, 0xFFFFFFFF, 0, 0, 0, 0, "Tx PLOAM data fifo"}, |
| [mvAsicReg_GPON_TX_PLOAM_DATA_WRITE_FREE] = { mvAsicReg_GPON_TX_PLOAM_DATA_WRITE_FREE, MV_ASIC_ONT_GLB_ADDR + 0x101C, 0x101C, asicRO, 0x000000FF, 0, 0, 0, 0, "Num of free entry's in Us PLOAM data fifo"}, |
| [mvAsicReg_GPON_TX_PLS_CONSTANT] = { mvAsicReg_GPON_TX_PLS_CONSTANT, MV_ASIC_ONT_GLB_ADDR + 0x1020, 0x1020, asicRW, 0x000000FF, 0, 0, 0, 0, "Tx PLS Constant"}, |
| [mvAsicReg_GPON_TX_DBR_REPORT_BLOCK_IDX] = { mvAsicReg_GPON_TX_DBR_REPORT_BLOCK_IDX, MV_ASIC_ONT_GLB_ADDR + 0x1024, 0x1024, asicRW, 0x000000FF, 0, 0, 0, 0, "Tx dbr block index"}, |
| [mvAsicReg_GPON_TX_FE_RDI_INDICATION] = { mvAsicReg_GPON_TX_FE_RDI_INDICATION, MV_ASIC_ONT_GLB_ADDR + 0x1028, 0x1028, asicRW, 0x00000001, 0, 0, 0, 0, "Tx rdi indication for US trans"}, |
| [mvAsicReg_GPON_TX_STAT_GEM_PTI1] = { mvAsicReg_GPON_TX_STAT_GEM_PTI1, MV_ASIC_ONT_GLB_ADDR + 0x102C, 0x102C, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Total num of trans gem frames with pti indication set to 1"}, |
| [mvAsicReg_GPON_TX_STAT_GEM_PTI0] = { mvAsicReg_GPON_TX_STAT_GEM_PTI0, MV_ASIC_ONT_GLB_ADDR + 0x1030, 0x1030, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Total num of trans gem frames with pti indication set to 0"}, |
| [mvAsicReg_GPON_TX_STAT_GEM_IDLE] = { mvAsicReg_GPON_TX_STAT_GEM_IDLE, MV_ASIC_ONT_GLB_ADDR + 0x1034, 0x1034, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Total num of trans idle gem frames"}, |
| [mvAsicReg_GPON_TX_STAT_TX_EN_CNT] = { mvAsicReg_GPON_TX_STAT_TX_EN_CNT, MV_ASIC_ONT_GLB_ADDR + 0x1038, 0x1038, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "Total num of cycles with tx enable indication asserted"}, |
| [mvAsicReg_GPON_TX_CONFIG_EN_THRESHOLD] = { mvAsicReg_GPON_TX_CONFIG_EN_THRESHOLD, MV_ASIC_ONT_GLB_ADDR + 0x103C, 0x103C, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Saturation threshold for tx enable indication counter"}, |
| [mvAsicReg_GPON_TX_GSE_TRANS_THRESHOLD] = { mvAsicReg_GPON_TX_GSE_TRANS_THRESHOLD, MV_ASIC_ONT_GLB_ADDR + 0x1040, 0x1040, asicRW, 0x00FFFFFF, 0, 0, 0, 0, "GSE threshold for starting forwarding data to the tx burst fifo"}, |
| [mvAsicReg_GPON_TX_CFG_AC_COUPLING] = { mvAsicReg_GPON_TX_CFG_AC_COUPLING, MV_ASIC_ONT_GLB_ADDR + 0x104C, 0x104C, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Transmit Configuration AC Coupling"}, |
| [mvAsicReg_GPON_TX_CFG_RAND_DELAY] = { mvAsicReg_GPON_TX_CFG_RAND_DELAY, MV_ASIC_ONT_GLB_ADDR + 0x1050, 0x1050, asicRW, 0x00000007, 0, 0, 0, 0, "Transmit Configuration Random Delay"}, |
| [mvAsicReg_GPON_TX_STAT_TCONT_i_ETH_FRAMES] = { mvAsicReg_GPON_TX_STAT_TCONT_i_ETH_FRAMES, MV_ASIC_ONT_GLB_ADDR + 0x10A0, 0x10A0, asicRO, 0xFFFFFFFF, 0, 8, 1, 0, "Num of ethernet frames trans via tcont i (0-7)"}, |
| [mvAsicReg_GPON_TX_STAT_TCONT_i_ETH_BYTES] = { mvAsicReg_GPON_TX_STAT_TCONT_i_ETH_BYTES, MV_ASIC_ONT_GLB_ADDR + 0x10C8, 0x10C8, asicRO, 0xFFFFFFFF, 0, 8, 1, 0, "Num of ethernet payload bytes trans via tcont i (0-7)"}, |
| [mvAsicReg_GPON_TX_STAT_TCONT_i_GEM_FRAMES] = { mvAsicReg_GPON_TX_STAT_TCONT_i_GEM_FRAMES, MV_ASIC_ONT_GLB_ADDR + 0x10F0, 0x10F0, asicRO, 0xFFFFFFFF, 0, 8, 1, 0, "Num of gem frames trans via tcont i (0-7)"}, |
| [mvAsicReg_GPON_TX_STAT_TCONT_i_IDLE_GEM] = { mvAsicReg_GPON_TX_STAT_TCONT_i_IDLE_GEM, MV_ASIC_ONT_GLB_ADDR + 0x1118, 0x1118, asicRO, 0xFFFFFFFF, 0, 8, 1, 0, "Num of idle gem frames trans via tcont i (0-7)"}, |
| [mvAsicReg_GPON_TX_STAT_TCONT_i_8_15_ETH_FRAME] = { mvAsicReg_GPON_TX_STAT_TCONT_i_8_15_ETH_FRAME, MV_ASIC_ONT_GLB_ADDR + 0x1140, 0x1140, asicRO, 0xFFFFFFFF, 0, 8, 1, 0, "Num of ethernet frames trans via tcont i (8-15)"}, |
| [mvAsicReg_GPON_TX_STAT_TCONT_i_8_15_ETH_BYTES] = { mvAsicReg_GPON_TX_STAT_TCONT_i_8_15_ETH_BYTES, MV_ASIC_ONT_GLB_ADDR + 0x1168, 0x1168, asicRO, 0xFFFFFFFF, 0, 8, 1, 0, "Num of ethernet payload bytes trans via tcont i (8-15)"}, |
| [mvAsicReg_GPON_TX_STAT_TCONT_i_8_15_GEM_FRAME] = { mvAsicReg_GPON_TX_STAT_TCONT_i_8_15_GEM_FRAME, MV_ASIC_ONT_GLB_ADDR + 0x1190, 0x1190, asicRO, 0xFFFFFFFF, 0, 8, 1, 0, "Num of gem frames trans via tcont i (8-15)"}, |
| [mvAsicReg_GPON_TX_STAT_TCONT_i_8_15_IDLE_GEM] = { mvAsicReg_GPON_TX_STAT_TCONT_i_8_15_IDLE_GEM, MV_ASIC_ONT_GLB_ADDR + 0x11B8, 0x11B8, asicRO, 0xFFFFFFFF, 0, 8, 1, 0, "Num of idle gem frames trans via tcont i (8-15)"}, |
| [mvAsicReg_GPON_TX_HIGH_PRI_CONFIG_EN] = { mvAsicReg_GPON_TX_HIGH_PRI_CONFIG_EN, MV_ASIC_ONT_GLB_ADDR + 0x11E0, 0x11E0, asicRW, 0x00000001, 31, 0, 0, 0, "Enable or disable GPON high priority TX feature"}, |
| [mvAsicReg_GPON_TX_HIGH_PRI_FOR_FRAGMENT] = { mvAsicReg_GPON_TX_HIGH_PRI_FOR_FRAGMENT, MV_ASIC_ONT_GLB_ADDR + 0x11E0, 0x11E0, asicRW, 0x00000001, 30, 0, 0, 0, "Enable or disable high priority for fragment packet"}, |
| [mvAsicReg_GPON_TX_HIGH_PRI_VALID_BITMAP] = { mvAsicReg_GPON_TX_HIGH_PRI_VALID_BITMAP, MV_ASIC_ONT_GLB_ADDR + 0x11E0, 0x11E0, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Bitmap of allowed low priority T-CONT"}, |
| [mvAsicReg_GPON_TX_HIGH_PRI_MAP_0] = { mvAsicReg_GPON_TX_HIGH_PRI_MAP_0, MV_ASIC_ONT_GLB_ADDR + 0x11E4, 0x11E4, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "GPON high priority mapping 0"}, |
| [mvAsicReg_GPON_TX_HIGH_PRI_MAP_1] = { mvAsicReg_GPON_TX_HIGH_PRI_MAP_1, MV_ASIC_ONT_GLB_ADDR + 0x11E8, 0x11E8, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "GPON high priority mapping 1"}, |
| |
| /* =========================== */ |
| /* UTM Registers */ |
| /* =========================== */ |
| [mvAsicReg_GPON_UTM_CONFIG_OMCI_PORT_ID] = { mvAsicReg_GPON_UTM_CONFIG_OMCI_PORT_ID, MV_ASIC_ONT_GLB_ADDR + 0x1400, 0x1400, asicRW, 0x00000FFF, 0, 0, 0, 0, "Omci gem port Id - upstream direction"}, |
| [mvAsicReg_GPON_UTM_CONFIG_OMCI_PORT_VALID] = { mvAsicReg_GPON_UTM_CONFIG_OMCI_PORT_VALID, MV_ASIC_ONT_GLB_ADDR + 0x1404, 0x1404, asicRW, 0x00000001, 0, 0, 0, 0, "Omci gem port valid - upstream direction"}, |
| [mvAsicReg_GPON_UTM_CONFIG_TC_PERIOD] = { mvAsicReg_GPON_UTM_CONFIG_TC_PERIOD, MV_ASIC_ONT_GLB_ADDR + 0x1408, 0x1408, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Num of cycles to pause between two counter gathering sweeps"}, |
| [mvAsicReg_GPON_UTM_CONFIG_TC_PERIOD_VALID] = { mvAsicReg_GPON_UTM_CONFIG_TC_PERIOD_VALID, MV_ASIC_ONT_GLB_ADDR + 0x140C, 0x140C, asicRW, 0x00000001, 0, 0, 0, 0, "Tc period valid"}, |
| [mvAsicReg_GPON_UTM_ACTIVE_TX_BITMAP] = { mvAsicReg_GPON_UTM_ACTIVE_TX_BITMAP, MV_ASIC_ONT_GLB_ADDR + 0x1410, 0x1410, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Active TX bitmap"}, |
| [mvAsicReg_GPON_UTM_ACTIVE_TX_BITMAP_VALID] = { mvAsicReg_GPON_UTM_ACTIVE_TX_BITMAP_VALID, MV_ASIC_ONT_GLB_ADDR + 0x1414, 0x1414, asicRW, 0x00000001, 0, 0, 0, 0, "Active TX bitmap valid"}, |
| [mvAsicReg_GPON_UTM_FLUSH] = { mvAsicReg_GPON_UTM_FLUSH, MV_ASIC_ONT_GLB_ADDR + 0x1418, 0x1418, asicRW, 0x0000FFFF, 0, 0, 0, 0, "UTM flush"}, |
| [mvAsicReg_GPON_UTM_GENERAL] = { mvAsicReg_GPON_UTM_GENERAL, MV_ASIC_ONT_GLB_ADDR + 0x141C, 0x141C, asicRW, 0x01FFFFFF, 0, 0, 0, 0, "UTM general"}, |
| [mvAsicReg_GPON_UTM_DEBUG] = { mvAsicReg_GPON_UTM_DEBUG, MV_ASIC_ONT_GLB_ADDR + 0x1420, 0x1420, asicRW, 0x0000FFFF, 0, 0, 0, 0, "UTM debug"}, |
| [mvAsicReg_GPON_UTM_REPORT_CONFIG] = { mvAsicReg_GPON_UTM_REPORT_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x1424, 0x1424, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "UTM report configuration"}, |
| [mvAsicReg_GPON_UTM_REPORT_MAP_0] = { mvAsicReg_GPON_UTM_REPORT_MAP_0, MV_ASIC_ONT_GLB_ADDR + 0x1428, 0x1428, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "UTM report bitmap 0"}, |
| [mvAsicReg_GPON_UTM_REPORT_MAP_0] = { mvAsicReg_GPON_UTM_REPORT_MAP_0, MV_ASIC_ONT_GLB_ADDR + 0x142C, 0x142C, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "UTM report bitmap 1"}, |
| |
| /* =========================== */ |
| /* SGL Registers */ |
| /* =========================== */ |
| [mvAsicReg_GPON_SGL_SW_RESET] = { mvAsicReg_GPON_SGL_SW_RESET, MV_ASIC_ONT_GLB_ADDR + 0x1800, 0x1800, asicRW, 0x00000001, 0, 0, 0, 0, "Serdes glue logic - sw reset"}, |
| [mvAsicReg_GPON_SGL_CONFIG_REG] = { mvAsicReg_GPON_SGL_CONFIG_REG, MV_ASIC_ONT_GLB_ADDR + 0x1804, 0x1804, asicRW, 0x0000000F, 0, 0, 0, 0, "Serdes glue logic - config"}, |
| [mvAsicReg_GPON_SGL_STATS_REG] = { mvAsicReg_GPON_SGL_STATS_REG, MV_ASIC_ONT_GLB_ADDR + 0x1808, 0x1808, asicRO, 0x000000FF, 0, 0, 0, 0, "Serdes glue logic - stats"}, |
| |
| /* =========================== */ |
| /* Memory Registers */ |
| /* =========================== */ |
| [mvAsicReg_GPON_TX_CONST_DATA_RAM] = { mvAsicReg_GPON_TX_CONST_DATA_RAM, MV_ASIC_ONT_GLB_ADDR + 0x2000, 0x2000, asicWO, 0xFFFFFFFF, 0, 8, 1, 0, "Tx constantant data ram"}, |
| [mvAsicReg_GPON_TX_CONST_DATA_RAM_IDLE] = { mvAsicReg_GPON_TX_CONST_DATA_RAM_IDLE, MV_ASIC_ONT_GLB_ADDR + 0x2000, 0x2000, asicWO, 0xFFFFFFFF, 0, 3, 1, 0, "Tx constantant data - Idle message"}, |
| [mvAsicReg_GPON_TX_CONST_DATA_RAM_SN] = { mvAsicReg_GPON_TX_CONST_DATA_RAM_SN, MV_ASIC_ONT_GLB_ADDR + 0x2020, 0x2020, asicWO, 0xFFFFFFFF, 0, 3, 1, 0, "Tx constantant data - SN message"}, |
| |
| [mvAsicReg_GPON_GEM_AES_PID_TABLE] = { mvAsicReg_GPON_GEM_AES_PID_TABLE, MV_ASIC_ONT_GLB_ADDR + 0x2200, 0x2200, asicWO, 0xFFFFFFFF, 0, 128, 1, 0, "Gem AES port Id table"}, |
| [mvAsicReg_GPON_GEM_VALID_PID_TABLE] = { mvAsicReg_GPON_GEM_VALID_PID_TABLE, MV_ASIC_ONT_GLB_ADDR + 0x2400, 0x2400, asicWO, 0xFFFFFFFF, 0, 128, 1, 0, "Gem valid port Id table"}, |
| |
| [mvAsicReg_GPON_TEST] = { mvAsicReg_GPON_TEST, MV_ASIC_ONT_GLB_ADDR + 0x0940, 0x0940, asicRW, 0x03FF03FF, 0, 0, 0, 0, "Gem valid port Id table"}, |
| |
| /* =========================== */ |
| /* GEM Port MIB Counters */ |
| /* =========================== */ |
| [mvAsicReg_PON_RX_MIB_CONTROL] = {mvAsicReg_PON_RX_MIB_CONTROL, 0xCB800, 0xCB800, asicRW, 0x0001FFFF, 0, 16, 1, 0, "PON MAC MIB RX control"}, |
| [mvAsicReg_PON_TX_MIB_CONTROL] = {mvAsicReg_PON_TX_MIB_CONTROL, 0xCB840, 0xCB840, asicRW, 0x0001FFFF, 0, 16, 1, 0, "PON MAC MIB TX control"}, |
| [mvAsicReg_PON_RX_MIB_DEFAULT] = {mvAsicReg_PON_RX_MIB_DEFAULT, 0xCB880, 0xCB880, asicRW, 0x0000001F, 12, 0, 0, 0, "PON MAC MIB RX default"}, |
| [mvAsicReg_PON_TX_MIB_DEFAULT] = {mvAsicReg_PON_TX_MIB_DEFAULT, 0xCB884, 0xCB884, asicRW, 0x0000001F, 12, 0, 0, 0, "PON MAC MIB TX default"}, |
| [mvAsicReg_PON_MIB_MIN_MAX_LENGTH] = {mvAsicReg_PON_MIB_MIN_MAX_LENGTH, 0xCB888, 0xCB888, asicRW, 0x001FFFFF, 0, 0, 0, 0, "PON MAC MIB MIN MAX length"}, |
| [mvAsicReg_PON_MIB_CONFIG] = {mvAsicReg_PON_MIB_CONFIG, 0xCB88C, 0xCB88C, asicRW, 0x00000001, 0, 0, 0, 0, "PON MAC MIB configuration"}, |
| |
| [mvAsicReg_PON_MIB_RX_GOOD_OCT_LS] = {mvAsicReg_PON_MIB_RX_GOOD_OCT_LS, 0xCB000, 0xCB000, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB RX good octects LSN"}, |
| [mvAsicReg_PON_MIB_RX_GOOD_OCT_MS] = {mvAsicReg_PON_MIB_RX_GOOD_OCT_MS, 0xCB040, 0xCB040, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB RX good octects MSN"}, |
| [mvAsicReg_PON_MIB_RX_GOOD_FRAME] = {mvAsicReg_PON_MIB_RX_GOOD_FRAME, 0xCB080, 0xCB080, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB RX good frame"}, |
| [mvAsicReg_PON_MIB_RX_BAD_OCTECT] = {mvAsicReg_PON_MIB_RX_BAD_OCTECT, 0xCB0C0, 0xCB0C0, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB RX bad octects"}, |
| [mvAsicReg_PON_MIB_RX_BAD_FRAME] = {mvAsicReg_PON_MIB_RX_BAD_FRAME, 0xCB100, 0xCB100, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB RX bad frame"}, |
| [mvAsicReg_PON_MIB_RX_MULTICAST] = {mvAsicReg_PON_MIB_RX_MULTICAST, 0xCB140, 0xCB140, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB RX multicast packet"}, |
| [mvAsicReg_PON_MIB_RX_BROADCAST] = {mvAsicReg_PON_MIB_RX_BROADCAST, 0xCB180, 0xCB180, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB RX broadcast packet"}, |
| [mvAsicReg_PON_MIB_RX_64_OCT] = {mvAsicReg_PON_MIB_RX_64_OCT, 0xCB1C0, 0xCB1C0, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB RX octects below or equal 64 bytes"}, |
| [mvAsicReg_PON_MIB_RX_65_127_OCT] = {mvAsicReg_PON_MIB_RX_65_127_OCT, 0xCB200, 0xCB200, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB RX octects between 65 and 127 bytes"}, |
| [mvAsicReg_PON_MIB_RX_128_255_OCT] = {mvAsicReg_PON_MIB_RX_128_255_OCT, 0xCB240, 0xCB240, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB RX octects between 128 and 255 bytes"}, |
| [mvAsicReg_PON_MIB_RX_256_511_OCT] = {mvAsicReg_PON_MIB_RX_256_511_OCT, 0xCB280, 0xCB280, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB RX octects between 256 and 511 bytes"}, |
| [mvAsicReg_PON_MIB_RX_512_1023_OCT] = {mvAsicReg_PON_MIB_RX_512_1023_OCT, 0xCB2C0, 0xCB2C0, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB RX octects between 511 and 1023 bytes"}, |
| [mvAsicReg_PON_MIB_RX_1024_OCT] = {mvAsicReg_PON_MIB_RX_1024_OCT, 0xCB300, 0xCB300, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB RX octects above or equal 1024 bytes"}, |
| [mvAsicReg_PON_MIB_TX_GOOD_OCT_LS] = {mvAsicReg_PON_MIB_TX_GOOD_OCT_LS, 0xCB400, 0xCB400, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB TX good octects LSN"}, |
| [mvAsicReg_PON_MIB_TX_GOOD_OCT_MS] = {mvAsicReg_PON_MIB_TX_GOOD_OCT_MS, 0xCB440, 0xCB440, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB TX good octects MSN"}, |
| [mvAsicReg_PON_MIB_TX_GOOD_FRAME] = {mvAsicReg_PON_MIB_TX_GOOD_FRAME, 0xCB480, 0xCB480, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB TX good frame"}, |
| [mvAsicReg_PON_MIB_TX_BAD_OCTECT] = {mvAsicReg_PON_MIB_TX_BAD_OCTECT, 0xCB4C0, 0xCB4C0, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB TX bad octects"}, |
| [mvAsicReg_PON_MIB_TX_MAC_ERROR] = {mvAsicReg_PON_MIB_TX_MAC_ERROR, 0xCB500, 0xCB500, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB TX bad frames by MAC errors"}, |
| [mvAsicReg_PON_MIB_TX_MULTICAST] = {mvAsicReg_PON_MIB_TX_MULTICAST, 0xCB540, 0xCB540, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB TX multicast packet"}, |
| [mvAsicReg_PON_MIB_TX_BROADCAST] = {mvAsicReg_PON_MIB_TX_BROADCAST, 0xCB580, 0xCB580, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB TX broadcast packet"}, |
| [mvAsicReg_PON_MIB_TX_64_OCT] = {mvAsicReg_PON_MIB_TX_64_OCT, 0xD75C0, 0xD75C0, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB TX octects below or equal 64 bytes"}, |
| [mvAsicReg_PON_MIB_TX_65_127_OCT] = {mvAsicReg_PON_MIB_TX_65_127_OCT, 0xCB600, 0xCB600, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB TX octects between 65 and 127 bytes"}, |
| [mvAsicReg_PON_MIB_TX_128_255_OCT] = {mvAsicReg_PON_MIB_TX_128_255_OCT, 0xCB640, 0xCB640, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB TX octects between 128 and 255 bytes"}, |
| [mvAsicReg_PON_MIB_TX_256_511_OCT] = {mvAsicReg_PON_MIB_TX_256_511_OCT, 0xCB680, 0xCB680, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB TX octects between 256 and 511 bytes"}, |
| [mvAsicReg_PON_MIB_TX_512_1023_OCT] = {mvAsicReg_PON_MIB_TX_512_1023_OCT, 0xCB6C0, 0xCB6C0, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB TX octects between 511 and 1023 bytes"}, |
| [mvAsicReg_PON_MIB_TX_1024_OCT] = {mvAsicReg_PON_MIB_TX_1024_OCT, 0xCB700, 0xCB700, asicRO, 0xFFFFFFFF, 0, 16, 1, 0, "PON MAC MIB TX octects above or equal 1024 bytes"}, |
| |
| |
| |
| /******************************************************************************/ |
| /******************************************************************************/ |
| /* ========================================================================== */ |
| /* ========================================================================== */ |
| /* == == */ |
| /* == ========= ========= ========= === == == */ |
| /* == ========= ========= ========= ==== == == */ |
| /* == == == == == == == == == == */ |
| /* == == == == == == == == == == */ |
| /* == ========= ========= == == == == == == */ |
| /* == ========= ========= == == == == == == */ |
| /* == == == == == == == == == */ |
| /* == == == == == == ==== == */ |
| /* == ========= == ========= == === == */ |
| /* == ========= == ========= == == == */ |
| /* == == */ |
| /* ========================================================================== */ |
| /* ========================================================================== */ |
| /******************************************************************************/ |
| /******************************************************************************/ |
| |
| /* =========================== */ |
| /* EPON Interrupt Registers */ |
| /* =========================== */ |
| [mvAsicReg_EPON_INTR_REG] = { mvAsicReg_EPON_INTR_REG, MV_ASIC_ONT_GLB_ADDR + 0x0000, 0x0000, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Interrupt PON"}, |
| [mvAsicReg_EPON_INTR_MASK] = { mvAsicReg_EPON_INTR_MASK, MV_ASIC_ONT_GLB_ADDR + 0x0004, 0x0004, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Interrupt PON Mask"}, |
| [mvAsicReg_EPON_DBR_INT_LLID_MASK] = { mvAsicReg_EPON_DBR_INT_LLID_MASK, MV_ASIC_ONT_GLB_ADDR + 0x001C, 0x001C, asicRW, 0x000000FF, 16, 0, 0, 0, "DBR Interrupt mask per LLID"}, |
| [mvAsicReg_EPON_DBR_INT_MASK] = { mvAsicReg_EPON_DBR_INT_MASK, MV_ASIC_ONT_GLB_ADDR + 0x001C, 0x001C, asicRW, 0x00000001, 7, 0, 0, 0, "DBR Interrupt mask"}, |
| [mvAsicReg_EPON_DBR_INT] = { mvAsicReg_EPON_DBR_INT, MV_ASIC_ONT_GLB_ADDR + 0x0020, 0x0020, asicRO, 0x000000FF, 0, 0, 0, 0, "DBR Interrupt"}, |
| [mvAsicReg_EPON_DBR_LLID_INT] = { mvAsicReg_EPON_DBR_LLID_INT, MV_ASIC_ONT_GLB_ADDR + 0x0040, 0x0040, asicRO, 0x00000001, 7, 8, 1, 0, "DBR LLID Interrupt"}, |
| |
| /* =========================== */ |
| /* EPON General Registers */ |
| /* =========================== */ |
| [mvAsicReg_EPON_GEN_MAC_VERSION_ADDR] = { mvAsicReg_EPON_GEN_MAC_VERSION_ADDR, MV_ASIC_ONT_GLB_ADDR + 0x0400, 0x0400, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "EPON MAC version"}, |
| [mvAsicReg_EPON_GEN_ONT_ENABLE] = { mvAsicReg_EPON_GEN_ONT_ENABLE, MV_ASIC_ONT_GLB_ADDR + 0x040C, 0x040C, asicRW, 0x0000FF01, 0, 0, 0, 0, "ONU Rx/Tx Enable"}, |
| [mvAsicReg_EPON_GEN_ONT_RX_ENABLE] = { mvAsicReg_EPON_GEN_ONT_RX_ENABLE, MV_ASIC_ONT_GLB_ADDR + 0x040C, 0x040C, asicRW, 0x00000001, 0, 0, 0, 0, "ONU Rx Enable"}, |
| [mvAsicReg_EPON_GEN_ONT_TX_ENABLE] = { mvAsicReg_EPON_GEN_ONT_TX_ENABLE, MV_ASIC_ONT_GLB_ADDR + 0x040C, 0x040C, asicRW, 0x000000FF, 8, 0, 0, 0, "ONU Tx Enable"}, |
| #ifdef PON_A0 |
| [mvAsicReg_EPON_GEN_ONT_STATE] = { mvAsicReg_EPON_GEN_ONT_STATE, MV_ASIC_ONT_GLB_ADDR + 0x0410, 0x0410, asicRW, 0x00001FFF, 0, 0, 0, 0, "ONU State"}, |
| #else /* PON_Z1 */ |
| [mvAsicReg_EPON_GEN_ONT_STATE] = { mvAsicReg_EPON_GEN_ONT_STATE, MV_ASIC_ONT_GLB_ADDR + 0x0410, 0x0410, asicRW, 0x00000FFF, 0, 0, 0, 0, "ONU State"}, |
| #endif |
| [mvAsicReg_EPON_GEN_ONT_STATE_REG] = { mvAsicReg_EPON_GEN_ONT_STATE_REG, MV_ASIC_ONT_GLB_ADDR + 0x0410, 0x0410, asicRW, 0x000000FF, 0, 0, 0, 0, "ONU Register State"}, |
| [mvAsicReg_EPON_GEN_ONT_STATE_REG_AUTO_EN] = { mvAsicReg_EPON_GEN_ONT_STATE_REG_AUTO_EN, MV_ASIC_ONT_GLB_ADDR + 0x0410, 0x0410, asicRW, 0x00000001, 8, 0, 0, 0, "ONU Register State Auto Enable"}, |
| [mvAsicReg_EPON_GEN_ONT_STATE_REREG_AUTO_EN] = { mvAsicReg_EPON_GEN_ONT_STATE_REREG_AUTO_EN, MV_ASIC_ONT_GLB_ADDR + 0x0410, 0x0410, asicRW, 0x00000001, 9, 0, 0, 0, "ONU ReRegister State Auto Enable"}, |
| [mvAsicReg_EPON_GEN_ONT_STATE_DEREG_AUTO_EN] = { mvAsicReg_EPON_GEN_ONT_STATE_DEREG_AUTO_EN, MV_ASIC_ONT_GLB_ADDR + 0x0410, 0x0410, asicRW, 0x00000001, 10, 0, 0, 0, "ONU DeRegister State Auto Enable"}, |
| [mvAsicReg_EPON_GEN_ONT_STATE_NACK_AUTO_EN] = { mvAsicReg_EPON_GEN_ONT_STATE_NACK_AUTO_EN, MV_ASIC_ONT_GLB_ADDR + 0x0410, 0x0410, asicRW, 0x00000001, 11, 0, 0, 0, "ONU Nack State Auto Enable"}, |
| [mvAsicReg_EPON_GEN_ONT_UP_RX_LLID_PAD] = { mvAsicReg_EPON_GEN_ONT_UP_RX_LLID_PAD, MV_ASIC_ONT_GLB_ADDR + 0x0410, 0x0410, asicRW, 0x00000001, 12, 0, 0, 0, "ONU UP RX LLID Padding"}, |
| [mvAsicReg_EPON_GEN_TQ_SIZE] = { mvAsicReg_EPON_GEN_TQ_SIZE, MV_ASIC_ONT_GLB_ADDR + 0x0414, 0x0414, asicRW, 0x000000FF, 0, 0, 0, 0, "TQ Size"}, |
| [mvAsicReg_EPON_GEN_LASER_PARAM] = { mvAsicReg_EPON_GEN_LASER_PARAM, MV_ASIC_ONT_GLB_ADDR + 0x0418, 0x0418, asicRW, 0x01FFFFFF, 0, 0, 0, 0, "Laser Params"}, |
| [mvAsicReg_EPON_GEN_TAIL_GUARD] = { mvAsicReg_EPON_GEN_TAIL_GUARD, MV_ASIC_ONT_GLB_ADDR + 0x0420, 0x0420, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Tail Guard"}, |
| [mvAsicReg_EPON_GEN_SYNC_TIME] = { mvAsicReg_EPON_GEN_SYNC_TIME, MV_ASIC_ONT_GLB_ADDR + 0x0424, 0x0424, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Sync Time"}, |
| [mvAsicReg_EPON_GEN_BROADCAST_ADDR_LOW] = { mvAsicReg_EPON_GEN_BROADCAST_ADDR_LOW, MV_ASIC_ONT_GLB_ADDR + 0x0428, 0x0428, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Broadcast Address Low"}, |
| [mvAsicReg_EPON_GEN_BROADCAST_ADDR_HIGH] = { mvAsicReg_EPON_GEN_BROADCAST_ADDR_HIGH, MV_ASIC_ONT_GLB_ADDR + 0x042C, 0x042C, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Broadcast Address High"}, |
| [mvAsicReg_EPON_GEN_CONFIGURATION] = { mvAsicReg_EPON_GEN_CONFIGURATION, MV_ASIC_ONT_GLB_ADDR + 0x0430, 0x0430, asicRW, 0x0000FF73, 0, 0, 0, 0, "Gen Configuration"}, |
| [mvAsicReg_EPON_GEN_CONFIGURATION_AUTO_REPORT] = { mvAsicReg_EPON_GEN_CONFIGURATION_AUTO_REPORT, MV_ASIC_ONT_GLB_ADDR + 0x0430, 0x0430, asicRW, 0x00000001, 4, 0, 0, 0, "Gen Configuration Auto Report"}, |
| [mvAsicReg_EPON_GEN_CONFIGURATION_AUTO_ACK] = { mvAsicReg_EPON_GEN_CONFIGURATION_AUTO_ACK, MV_ASIC_ONT_GLB_ADDR + 0x0430, 0x0430, asicRW, 0x00000001, 5, 0, 0, 0, "Gen Configuration Auto Ack"}, |
| [mvAsicReg_EPON_GEN_CONFIGURATION_AUTO_REQUEST] = { mvAsicReg_EPON_GEN_CONFIGURATION_AUTO_REQUEST, MV_ASIC_ONT_GLB_ADDR + 0x0430, 0x0430, asicRW, 0x00000001, 6, 0, 0, 0, "Gen Configuration Auto Request"}, |
| [mvAsicReg_EPON_GEN_SLD] = { mvAsicReg_EPON_GEN_SLD, MV_ASIC_ONT_GLB_ADDR + 0x0434, 0x0434, asicRW, 0x000000FF, 0, 0, 0, 0, "Sld"}, |
| [mvAsicReg_EPON_GEN_MAC_CONTROL_TYPE] = { mvAsicReg_EPON_GEN_MAC_CONTROL_TYPE, MV_ASIC_ONT_GLB_ADDR + 0x0438, 0x0438, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Mac Control type"}, |
| [mvAsicReg_EPON_GEN_LOCAL_TIMESTAMP] = { mvAsicReg_EPON_GEN_LOCAL_TIMESTAMP, MV_ASIC_ONT_GLB_ADDR + 0x043C, 0x043C, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Local TimeStamp"}, |
| [mvAsicReg_EPON_GEN_NUM_OF_PENDING_GRANTS] = { mvAsicReg_EPON_GEN_NUM_OF_PENDING_GRANTS, MV_ASIC_ONT_GLB_ADDR + 0x0448, 0x0448, asicRW, 0x000000FF, 0, 0, 0, 0, "Num Of Pending Grants"}, |
| [mvAsicReg_EPON_GEN_SGL_STATUS] = { mvAsicReg_EPON_GEN_SGL_STATUS, MV_ASIC_ONT_GLB_ADDR + 0x044C, 0x044C, asicRW, 0x000000FF, 0, 0, 0, 0, "SGL Status"}, |
| [mvAsicReg_EPON_GEN_PON_PHY_DEBUG] = { mvAsicReg_EPON_GEN_PON_PHY_DEBUG, MV_ASIC_ONT_GLB_ADDR + 0x0450, 0x0450, asicRW, 0x000000FF, 0, 0, 0, 0, "Phy Debug"}, |
| [mvAsicReg_EPON_GEN_SGL_SW_RESET] = { mvAsicReg_EPON_GEN_SGL_SW_RESET, MV_ASIC_ONT_GLB_ADDR + 0x0454, 0x0454, asicRW, 0x00000001, 0, 0, 0, 0, "SGL SW Reset"}, |
| [mvAsicReg_EPON_GEN_SGL_CONFIG] = { mvAsicReg_EPON_GEN_SGL_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x0458, 0x0458, asicRW, 0x0000001F, 0, 0, 0, 0, "SGL Config"}, |
| [mvAsicReg_EPON_GEN_SGL_DEBOUNCE_CONFIG] = { mvAsicReg_EPON_GEN_SGL_DEBOUNCE_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x045C, 0x045C, asicRW, 0x0001FFFF, 0, 0, 0, 0, "SGL Debounce Config"}, |
| [mvAsicReg_EPON_GEN_SGL_DEBOUNCE_ENABLE] = { mvAsicReg_EPON_GEN_SGL_DEBOUNCE_ENABLE, MV_ASIC_ONT_GLB_ADDR + 0x0460, 0x0460, asicRW, 0x00000001, 0, 0, 0, 0, "SGL Debounce Enable"}, |
| [mvAsicReg_EPON_GEN_TCH_CHURNING_KEY] = { mvAsicReg_EPON_GEN_TCH_CHURNING_KEY, MV_ASIC_ONT_GLB_ADDR + 0x0464, 0x0464, asicRW, 0x00FFFFFF, 0, 0, 0, 0, "Churning Key random for SW"}, |
| [mvAsicReg_EPON_GEN_ADDITIONAL_OPCODE1] = { mvAsicReg_EPON_GEN_ADDITIONAL_OPCODE1, MV_ASIC_ONT_GLB_ADDR + 0x0468, 0x0468, asicRW, 0x001FFFFF, 0, 0, 0, 0, "Additional Opcode 01"}, |
| [mvAsicReg_EPON_GEN_ADDITIONAL_OPCODE2] = { mvAsicReg_EPON_GEN_ADDITIONAL_OPCODE2, MV_ASIC_ONT_GLB_ADDR + 0x046C, 0x046C, asicRW, 0x001FFFFF, 0, 0, 0, 0, "Additional Opcode 02"}, |
| [mvAsicReg_EPON_GEN_DRIFT_THRESHOLD] = { mvAsicReg_EPON_GEN_DRIFT_THRESHOLD, MV_ASIC_ONT_GLB_ADDR + 0x0470, 0x0470, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Drift Threshold"}, |
| [mvAsicReg_EPON_GEN_TIMESTAMP_VAL_FOR_INTR] = { mvAsicReg_EPON_GEN_TIMESTAMP_VAL_FOR_INTR, MV_ASIC_ONT_GLB_ADDR + 0x0474, 0x0474, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Timestamp valuer for interrupt"}, |
| [mvAsicReg_EPON_GEN_ADDITIONAL_OPCODE3] = { mvAsicReg_EPON_GEN_ADDITIONAL_OPCODE3, MV_ASIC_ONT_GLB_ADDR + 0x0478, 0x0478, asicRW, 0x001FFFFF, 0, 0, 0, 0, "Additional Opcode 03"}, |
| [mvAsicReg_EPON_GEN_LLID_CRC_CONFIG] = { mvAsicReg_EPON_GEN_LLID_CRC_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x047C, 0x047C, asicRW, 0x000003FF, 0, 0, 0, 0, "LLID configuration"}, |
| [mvAsicReg_EPON_GEN_TIMESTAMP_CONFIG] = { mvAsicReg_EPON_GEN_TIMESTAMP_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x0480, 0x0480, asicRW, 0x87FFC7FF, 0, 0, 0, 0, "Timestamp configuration"}, |
| [mvAsicReg_EPON_GEN_ONT_RX_TIMESTAMP_CONFIG] = { mvAsicReg_EPON_GEN_ONT_RX_TIMESTAMP_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x0484, 0x0484, asicRW, 0x00008FFF, 0, 0, 0, 0, "ONT Rx Timestamp configuration"}, |
| [mvAsicReg_EPON_GEN_ONT_REGISTER_PACKET_PADDING] = { mvAsicReg_EPON_GEN_ONT_REGISTER_PACKET_PADDING, MV_ASIC_ONT_GLB_ADDR + 0x0488, 0x0488, asicRW, 0x0000FFFF, 0, 0, 0, 0, "ONT Register packet pading"}, |
| [mvAsicReg_EPON_GEN_MAC_ADDR_LOW] = { mvAsicReg_EPON_GEN_MAC_ADDR_LOW, MV_ASIC_ONT_GLB_ADDR + 0x04A0, 0x04A0, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "MAC address low part"}, |
| [mvAsicReg_EPON_GEN_MAC_ADDR_HIGH] = { mvAsicReg_EPON_GEN_MAC_ADDR_HIGH, MV_ASIC_ONT_GLB_ADDR + 0x04C8, 0x04C8, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "MAC address high part"}, |
| [mvAsicReg_EPON_GEN_UTM_TC_PERIOD] = { mvAsicReg_EPON_GEN_UTM_TC_PERIOD, MV_ASIC_ONT_GLB_ADDR + 0x0720, 0x0720, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "UTM TC Period"}, |
| [mvAsicReg_EPON_GEN_UTM_TC_PERIOD_VALID] = { mvAsicReg_EPON_GEN_UTM_TC_PERIOD_VALID, MV_ASIC_ONT_GLB_ADDR + 0x0724, 0x0724, asicRW, 0x00000001, 0, 0, 0, 0, "UTM TC Period valid"}, |
| [mvAsicReg_EPON_GEN_GEM_IPG_VAL] = { mvAsicReg_EPON_GEN_GEM_IPG_VAL, MV_ASIC_ONT_GLB_ADDR + 0x0728, 0x0728, asicRW, 0x000000FF, 0, 0, 0, 0, "IPG Value"}, |
| [mvAsicReg_EPON_GEN_GEM_IPG_VAL_VALID] = { mvAsicReg_EPON_GEN_GEM_IPG_VAL_VALID, MV_ASIC_ONT_GLB_ADDR + 0x072C, 0x072C, asicRW, 0x00000001, 0, 0, 0, 0, "IPG Value valid"}, |
| [mvAsicReg_EPON_GEN_ACT_TX_BITMAP] = { mvAsicReg_EPON_GEN_ACT_TX_BITMAP, MV_ASIC_ONT_GLB_ADDR + 0x0730, 0x0730, asicRW, 0x000000FF, 0, 0, 0, 0, "UTM Active TX Bitmap"}, |
| [mvAsicReg_EPON_GEN_ACT_TX_VALID] = { mvAsicReg_EPON_GEN_ACT_TX_VALID, MV_ASIC_ONT_GLB_ADDR + 0x0734, 0x0734, asicRW, 0x00000001, 0, 0, 0, 0, "UTM Active TX Valid"}, |
| [mvAsicReg_EPON_GEN_TOD_INT_WIDTH] = { mvAsicReg_EPON_GEN_TOD_INT_WIDTH, MV_ASIC_ONT_GLB_ADDR + 0x0738, 0x0738, asicRW, 0x1FFFFFFF, 0, 0, 0, 0, "Time of Day Interrupt Width and Polarity"}, |
| [mvAsicReg_EPON_UTM_DEBUG] = { mvAsicReg_EPON_UTM_DEBUG, MV_ASIC_ONT_GLB_ADDR + 0x0740, 0x0740, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "UTM debug"}, |
| [mvAsicReg_EPON_UTM_GENERAL] = { mvAsicReg_EPON_UTM_GENERAL, MV_ASIC_ONT_GLB_ADDR + 0x0748, 0x0748, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "UTM general"}, |
| [mvAsicReg_EPON_TXM_EXT_REPORT_STATE] = { mvAsicReg_EPON_TXM_EXT_REPORT_STATE, MV_ASIC_ONT_GLB_ADDR + 0x074C, 0x074C, asicRW, 0x00000001, 31, 0, 0, 0, "Extend report enable"}, |
| [mvAsicReg_EPON_TXM_EXT_REPORT_STATE_PER_TX] = { mvAsicReg_EPON_TXM_EXT_REPORT_STATE_PER_TX, MV_ASIC_ONT_GLB_ADDR + 0x074C, 0x074C, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Extend report enable bitmap"}, |
| [mvAsicReg_EPON_TXM_EXT_REPORT_MAP_0] = { mvAsicReg_EPON_TXM_EXT_REPORT_MAP_0, MV_ASIC_ONT_GLB_ADDR + 0x0750, 0x0750, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Extend report mapping 0"}, |
| [mvAsicReg_EPON_TXM_EXT_REPORT_MAP_1] = { mvAsicReg_EPON_TXM_EXT_REPORT_MAP_1, MV_ASIC_ONT_GLB_ADDR + 0x0754, 0x0754, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Extend report mapping 1"}, |
| |
| /* =========================== */ |
| /* EPON RXP Registers */ |
| /* =========================== */ |
| [mvAsicReg_EPON_RXP_PACKET_SIZE_LIMIT] = { mvAsicReg_EPON_RXP_PACKET_SIZE_LIMIT, MV_ASIC_ONT_GLB_ADDR + 0x0810, 0x0810, asicRW, 0x0FFF0FFF, 0, 0, 0, 0, "Rxp packet limit size"}, |
| #ifdef PON_Z1 |
| [mvAsicReg_EPON_RXP_PACKET_FILTER] = { mvAsicReg_EPON_RXP_PACKET_FILTER, MV_ASIC_ONT_GLB_ADDR + 0x0814, 0x0814, asicRW, 0x000000FF, 0, 0, 0, 0, "Rxp packet filter"}, |
| #else /* PON_A0 */ |
| [mvAsicReg_EPON_RXP_PACKET_FILTER] = { mvAsicReg_EPON_RXP_PACKET_FILTER, MV_ASIC_ONT_GLB_ADDR + 0x0814, 0x0814, asicRW, 0x000001FF, 0, 0, 0, 0, "Rxp packet filter"}, |
| #endif |
| #ifdef PON_Z1 |
| [mvAsicReg_EPON_RXP_CTRL_FRAME_FORWARD] = { mvAsicReg_EPON_RXP_CTRL_FRAME_FORWARD, MV_ASIC_ONT_GLB_ADDR + 0x0818, 0x0818, asicRW, 0x0000003F, 0, 0, 0, 0, "Rxp ctrl frame forward"}, |
| #else /* PON_A0 */ |
| [mvAsicReg_EPON_RXP_CTRL_FRAME_FORWARD] = { mvAsicReg_EPON_RXP_CTRL_FRAME_FORWARD, MV_ASIC_ONT_GLB_ADDR + 0x0818, 0x0818, asicRW, 0x000003FF, 0, 0, 0, 0, "Rxp ctrl frame forward"}, |
| #endif |
| [mvAsicReg_EPON_RXP_LLT_LLID_DATA] = { mvAsicReg_EPON_RXP_LLT_LLID_DATA, MV_ASIC_ONT_GLB_ADDR + 0x081C, 0x081C, asicRW, 0x000FFFFF, 0, 10, 1, 0, "Rxp LLID data"}, |
| [mvAsicReg_EPON_RXP_LLT_LLID_DATA_VALUE] = { mvAsicReg_EPON_RXP_LLT_LLID_DATA_VALUE, MV_ASIC_ONT_GLB_ADDR + 0x081C, 0x081C, asicRW, 0x00007FFF, 0, 10, 1, 0, "Rxp LLID data value"}, |
| [mvAsicReg_EPON_RXP_LLT_LLID_DATA_INDEX] = { mvAsicReg_EPON_RXP_LLT_LLID_DATA_INDEX, MV_ASIC_ONT_GLB_ADDR + 0x081C, 0x081C, asicRW, 0x0000000F, 15, 10, 1, 0, "Rxp LLID data index"}, |
| [mvAsicReg_EPON_RXP_LLT_LLID_DATA_VALID] = { mvAsicReg_EPON_RXP_LLT_LLID_DATA_VALID, MV_ASIC_ONT_GLB_ADDR + 0x081C, 0x081C, asicRW, 0x00000001, 19, 10, 1, 0, "Rxp LLID data valid"}, |
| [mvAsicReg_EPON_RXP_ENCRYPTION_CONFIG] = { mvAsicReg_EPON_RXP_ENCRYPTION_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x0844, 0x0844, asicRW, 0x00000031, 0, 0, 0, 0, "Rxp Enctyption Config"}, |
| [mvAsicReg_EPON_RXP_ENCRYPTION_KEY0] = { mvAsicReg_EPON_RXP_ENCRYPTION_KEY0, MV_ASIC_ONT_GLB_ADDR + 0x0850, 0x0850, asicRW, 0x00FFFFFF, 0, 8, 1, 0, "Rxp Enctyption Key 0"}, |
| [mvAsicReg_EPON_RXP_ENCRYPTION_KEY1] = { mvAsicReg_EPON_RXP_ENCRYPTION_KEY1, MV_ASIC_ONT_GLB_ADDR + 0x0878, 0x0878, asicRW, 0x00FFFFFF, 0, 8, 1, 0, "Rxp Enctyption Key 1"}, |
| [mvAsicReg_EPON_RXP_DATA_FIFO_THRESH] = { mvAsicReg_EPON_RXP_DATA_FIFO_THRESH, MV_ASIC_ONT_GLB_ADDR + 0x08C0, 0x08C0, asicRW, 0x00000FFF, 0, 8, 1, 0, "Rxp FIFO Threshold"}, |
| |
| /* =========================== */ |
| /* EPON GPM Registers */ |
| /* =========================== */ |
| [mvAsicReg_EPON_GPM_MAX_FUTURE_GRANT_TIME] = { mvAsicReg_EPON_GPM_MAX_FUTURE_GRANT_TIME, MV_ASIC_ONT_GLB_ADDR + 0x0C10, 0x0C10, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Max future grant time"}, |
| #ifdef PON_Z1 |
| [mvAsicReg_EPON_GPM_MIN_PROCESSING_TIME] = { mvAsicReg_EPON_GPM_MIN_PROCESSING_TIME, MV_ASIC_ONT_GLB_ADDR + 0x0C14, 0x0C14, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Min processing time"}, |
| #else /* PON_A0 */ |
| [mvAsicReg_EPON_GPM_MIN_PROCESSING_TIME] = { mvAsicReg_EPON_GPM_MIN_PROCESSING_TIME, MV_ASIC_ONT_GLB_ADDR + 0x0C14, 0x0C14, asicRW, 0x00FFFFFF, 0, 0, 0, 0, "Min processing time"}, |
| #endif |
| [mvAsicReg_EPON_GPM_DISCOVERY_GRANT_LENGTH] = { mvAsicReg_EPON_GPM_DISCOVERY_GRANT_LENGTH, MV_ASIC_ONT_GLB_ADDR + 0x0C18, 0x0C18, asicRW, 0x0FFFFFFF, 0, 0, 0, 0, "Discovery grant length"}, |
| [mvAsicReg_EPON_GPM_RX_SYNC_TIME] = { mvAsicReg_EPON_GPM_RX_SYNC_TIME, MV_ASIC_ONT_GLB_ADDR + 0x0C1C, 0x0C1C, asicRW, 0x0001FFFF, 0, 0, 0, 0, "Rx sync time"}, |
| [mvAsicReg_EPON_GPM_GRANT_VALID] = { mvAsicReg_EPON_GPM_GRANT_VALID, MV_ASIC_ONT_GLB_ADDR + 0x0C50, 0x0C50, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "Grant valid counter"}, |
| [mvAsicReg_EPON_GPM_GRANT_MAX_FUTURE_TIME_ERR] = { mvAsicReg_EPON_GPM_GRANT_MAX_FUTURE_TIME_ERR, MV_ASIC_ONT_GLB_ADDR + 0x0C70, 0x0C70, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "Grant max future time error counter"}, |
| [mvAsicReg_EPON_GPM_MIN_PROC_TIME_ERR] = { mvAsicReg_EPON_GPM_MIN_PROC_TIME_ERR, MV_ASIC_ONT_GLB_ADDR + 0x0C90, 0x0C90, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "Min proc time error counter"}, |
| [mvAsicReg_EPON_GPM_LENGTH_ERR] = { mvAsicReg_EPON_GPM_LENGTH_ERR, MV_ASIC_ONT_GLB_ADDR + 0x0CB0, 0x0CB0, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "Length error counter"}, |
| [mvAsicReg_EPON_GPM_DISCOVERY_AND_REGISTERED_ERR] = { mvAsicReg_EPON_GPM_DISCOVERY_AND_REGISTERED_ERR, MV_ASIC_ONT_GLB_ADDR + 0x0CD0, 0x0CD0, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "Discovery and register error counter"}, |
| [mvAsicReg_EPON_GPM_FIFO_FULL_ERR] = { mvAsicReg_EPON_GPM_FIFO_FULL_ERR, MV_ASIC_ONT_GLB_ADDR + 0x0CF0, 0x0CF0, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "Fifo full error counter"}, |
| [mvAsicReg_EPON_GPM_OPC_DISC_NOT_REG_BCAST] = { mvAsicReg_EPON_GPM_OPC_DISC_NOT_REG_BCAST, MV_ASIC_ONT_GLB_ADDR + 0x0D10, 0x0D10, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "OPC discard not register broadcast counter"}, |
| [mvAsicReg_EPON_GPM_OPC_REG_NOT_DISC] = { mvAsicReg_EPON_GPM_OPC_REG_NOT_DISC, MV_ASIC_ONT_GLB_ADDR + 0x0D30, 0x0D30, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "OPC register not broadcast counter"}, |
| [mvAsicReg_EPON_GPM_OPC_DISC_NOT_REG_NOT_BCAST] = { mvAsicReg_EPON_GPM_OPC_DISC_NOT_REG_NOT_BCAST, MV_ASIC_ONT_GLB_ADDR + 0x0D50, 0x0D50, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "OPC discard not register not broadcast counter"}, |
| [mvAsicReg_EPON_GPM_OPC_DROPED_GRANT] = { mvAsicReg_EPON_GPM_OPC_DROPED_GRANT, MV_ASIC_ONT_GLB_ADDR + 0x0D70, 0x0D70, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "OPC dropped grant counter"}, |
| [mvAsicReg_EPON_GPM_OPC_HIDDEN_GRANT] = { mvAsicReg_EPON_GPM_OPC_HIDDEN_GRANT, MV_ASIC_ONT_GLB_ADDR + 0x0D90, 0x0D90, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "OPC hidden grant counter"}, |
| [mvAsicReg_EPON_GPM_OPC_BACK_TO_BACK_GRANT] = { mvAsicReg_EPON_GPM_OPC_BACK_TO_BACK_GRANT, MV_ASIC_ONT_GLB_ADDR + 0x0DB0, 0x0DB0, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "OPC back to back grant counter"}, |
| |
| /* =========================== */ |
| /* EPON TXM Registers */ |
| /* =========================== */ |
| [mvAsicReg_EPON_TXM_DEFAULT_OVERHEAD] = { mvAsicReg_EPON_TXM_DEFAULT_OVERHEAD, MV_ASIC_ONT_GLB_ADDR + 0x1010, 0x1010, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Default overhead"}, |
| [mvAsicReg_EPON_TXM_CONFIGURATION] = { mvAsicReg_EPON_TXM_CONFIGURATION, MV_ASIC_ONT_GLB_ADDR + 0x1018, 0x1018, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Tx Configuration"}, |
| [mvAsicReg_EPON_TXM_POWER_UP] = { mvAsicReg_EPON_TXM_POWER_UP, MV_ASIC_ONT_GLB_ADDR + 0x1020, 0x1020, asicRW, 0x00001FFF, 0, 0, 0, 0, "Tx MUX Power UP"}, |
| [mvAsicReg_EPON_TXM_TX_LLID] = { mvAsicReg_EPON_TXM_TX_LLID, MV_ASIC_ONT_GLB_ADDR + 0x1050, 0x1050, asicRW, 0x00007FFF, 0, 8, 1, 0, "Tx LLID"}, |
| |
| [mvAsicReg_EPON_TXM_CPP_RPRT_CONFIG] = { mvAsicReg_EPON_TXM_CPP_RPRT_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x1078, 0x1078, asicRW, 0x03FD03FF, 0, 8, 1, 0, "Cpp report configuration"}, |
| [mvAsicReg_EPON_TXM_CPP_RPRT_BIT_MAP] = { mvAsicReg_EPON_TXM_CPP_RPRT_BIT_MAP, MV_ASIC_ONT_GLB_ADDR + 0x1098, 0x1098, asicRW, 0x0000FFFF, 0, 8, 1, 0, "Cpp report bit map"}, |
| [mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_SET] = { mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_SET, MV_ASIC_ONT_GLB_ADDR + 0x10B8, 0x10B8, asicRW, 0x0000003F, 0, 8, 1, 0, "Cpp report queue sets"}, |
| [mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_0] = { mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_0, MV_ASIC_ONT_GLB_ADDR + 0x10D8, 0x10D8, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "Cpp report queue0"}, |
| [mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_1] = { mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_1, MV_ASIC_ONT_GLB_ADDR + 0x10F8, 0x10F8, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "Cpp report queue1"}, |
| [mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_2] = { mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_2, MV_ASIC_ONT_GLB_ADDR + 0x1118, 0x1118, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "Cpp report queue2"}, |
| [mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_3] = { mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_3, MV_ASIC_ONT_GLB_ADDR + 0x1138, 0x1138, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "Cpp report queue3"}, |
| [mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_4] = { mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_4, MV_ASIC_ONT_GLB_ADDR + 0x1158, 0x1158, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "Cpp report queue4"}, |
| [mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_5] = { mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_5, MV_ASIC_ONT_GLB_ADDR + 0x1178, 0x1178, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "Cpp report queue5"}, |
| [mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_6] = { mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_6, MV_ASIC_ONT_GLB_ADDR + 0x1198, 0x1198, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "Cpp report queue6"}, |
| [mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_7] = { mvAsicReg_EPON_TXM_CPP_RPRT_QUEUE_7, MV_ASIC_ONT_GLB_ADDR + 0x11B8, 0x11B8, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "Cpp report queue7"}, |
| [mvAsicReg_EPON_TXM_CPP_RPRT_FEC_CONFIG] = { mvAsicReg_EPON_TXM_CPP_RPRT_FEC_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x11DC, 0x11DC, asicRW, 0x00FFFFFF, 0, 8, 1, 0, "Cpp report fec config"}, |
| [mvAsicReg_EPON_TXM_CPP_RPM_REPORT_CONFIG] = { mvAsicReg_EPON_TXM_CPP_RPM_REPORT_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x11E0, 0x11E0, asicRW, 0x0000001F, 0, 0, 0, 0, "RPM Report config"}, |
| [mvAsicReg_EPON_TXM_CPP_RPM_CTRL_FIFO_DBA] = { mvAsicReg_EPON_TXM_CPP_RPM_CTRL_FIFO_DBA, MV_ASIC_ONT_GLB_ADDR + 0x11E0, 0x11E0, asicRW, 0x000007FF, 5, 0, 0, 0, "RPM contrl FIFO DBA config"}, |
| [mvAsicReg_EPON_TXM_CPP_RPM_ADX_REPORT_TBL] = { mvAsicReg_EPON_TXM_CPP_RPM_ADX_REPORT_TBL, MV_ASIC_ONT_GLB_ADDR + 0x11E4, 0x11E4, asicRW, 0x003F00FF, 0, 0, 0, 0, "RPM Index Report Table"}, |
| [mvAsicReg_EPON_TXM_CTRL_FIFO_FLUSH] = { mvAsicReg_EPON_TXM_CTRL_FIFO_FLUSH, MV_ASIC_ONT_GLB_ADDR + 0x11F0, 0x11F0, asicRW, 0x000000FF, 0, 0, 0, 0, "TX control FIFO flush"}, |
| [mvAsicReg_EPON_TXM_HIGH_PRI_TX_STATE_BITMAP] = { mvAsicReg_EPON_TXM_HIGH_PRI_TX_STATE_BITMAP, MV_ASIC_ONT_GLB_ADDR + 0x11F4, 0x11F4, asicRW, 0x000000FF, 0, 0, 0, 0, "High priority TX valid bitmap"}, |
| [mvAsicReg_EPON_TXM_HIGH_PRI_TX_MAP_0] = { mvAsicReg_EPON_TXM_HIGH_PRI_TX_MAP_0, MV_ASIC_ONT_GLB_ADDR + 0x11F8, 0x11F8, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "High priority TX map 0"}, |
| [mvAsicReg_EPON_TXM_HIGH_PRI_TX_MAP_1] = { mvAsicReg_EPON_TXM_HIGH_PRI_TX_MAP_1, MV_ASIC_ONT_GLB_ADDR + 0x11FC, 0x11FC, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "High priority TX map 1"}, |
| |
| /* =========================== */ |
| /* EPON PCS Registers */ |
| /* =========================== */ |
| [mvAsicReg_EPON_PCS_CONFIGURATION] = { mvAsicReg_EPON_PCS_CONFIGURATION, MV_ASIC_ONT_GLB_ADDR + 0x1414, 0x1414, asicRW, 0x00000033, 0, 0, 0, 0, "PCS configuration"}, |
| [mvAsicReg_EPON_PCS_CONFIGURATION_RX_ENABLE] = { mvAsicReg_EPON_PCS_CONFIGURATION_RX_ENABLE, MV_ASIC_ONT_GLB_ADDR + 0x1414, 0x1414, asicRW, 0x00000001, 0, 0, 0, 0, "PCS configuration Rx enable"}, |
| [mvAsicReg_EPON_PCS_CONFIGURATION_TX_ENABLE] = { mvAsicReg_EPON_PCS_CONFIGURATION_TX_ENABLE, MV_ASIC_ONT_GLB_ADDR + 0x1414, 0x1414, asicRW, 0x00000001, 4, 0, 0, 0, "PCS configuration Tx enable"}, |
| [mvAsicReg_EPON_PCS_DELAY_CONFIG] = { mvAsicReg_EPON_PCS_DELAY_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x1418, 0x1418, asicRW, 0x00001FFF, 0, 0, 0, 0, "PCS delay config"}, |
| [mvAsicReg_EPON_PCS_STATS_FEC_0] = { mvAsicReg_EPON_PCS_STATS_FEC_0, MV_ASIC_ONT_GLB_ADDR + 0x141C, 0x141C, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "PCS stats Fec 0"}, |
| [mvAsicReg_EPON_PCS_STATS_FEC_1] = { mvAsicReg_EPON_PCS_STATS_FEC_1, MV_ASIC_ONT_GLB_ADDR + 0x1420, 0x1420, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "PCS stats Fec 1"}, |
| [mvAsicReg_EPON_PCS_STATS_FEC_2] = { mvAsicReg_EPON_PCS_STATS_FEC_2, MV_ASIC_ONT_GLB_ADDR + 0x1424, 0x1424, asicRW, 0x00FFFFFF, 0, 0, 0, 0, "PCS stats Fec 2"}, |
| [mvAsicReg_EPON_PCS_STATS_0] = { mvAsicReg_EPON_PCS_STATS_0, MV_ASIC_ONT_GLB_ADDR + 0x1428, 0x1428, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "PCS stats 0"}, |
| [mvAsicReg_EPON_PCS_STATS_1] = { mvAsicReg_EPON_PCS_STATS_1, MV_ASIC_ONT_GLB_ADDR + 0x142C, 0x142C, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "PCS stats 1"}, |
| [mvAsicReg_EPON_PCS_STATS_2] = { mvAsicReg_EPON_PCS_STATS_2, MV_ASIC_ONT_GLB_ADDR + 0x1430, 0x1430, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "PCS stats 2"}, |
| [mvAsicReg_EPON_PCS_STATS_3] = { mvAsicReg_EPON_PCS_STATS_3, MV_ASIC_ONT_GLB_ADDR + 0x1434, 0x1434, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "PCS stats 3"}, |
| [mvAsicReg_EPON_PCS_STATS_4] = { mvAsicReg_EPON_PCS_STATS_4, MV_ASIC_ONT_GLB_ADDR + 0x1438, 0x1438, asicRO, 0xFFFFFFFF, 0, 0, 0, 0, "PCS stats 4"}, |
| [mvAsicReg_EPON_PCS_FRAME_SZ_LIMITS] = { mvAsicReg_EPON_PCS_FRAME_SZ_LIMITS, MV_ASIC_ONT_GLB_ADDR + 0x143C, 0x143C, asicRW, 0x1FFF0FFF, 0, 0, 0, 0, "PCS Frame Size Limits"}, |
| |
| /* =========================== */ |
| /* EPON DDM Registers */ |
| /* =========================== */ |
| [mvAsicReg_EPON_DDM_DELAY_CONFIG] = { mvAsicReg_EPON_DDM_DELAY_CONFIG, MV_ASIC_ONT_GLB_ADDR + 0x1814, 0x1814, asicRW, 0x0000FFFF, 0, 0, 0, 0, "DDM delay config"}, |
| [mvAsicReg_EPON_DDM_TX_POLARITY] = { mvAsicReg_EPON_DDM_TX_POLARITY, MV_ASIC_ONT_GLB_ADDR + 0x1818, 0x1818, asicRW, 0x0000003F, 0, 0, 0, 0, "DDM tx ploarity"}, |
| [mvAsicReg_EPON_STAT_RXP_FCS_ERROR_CNT] = { mvAsicReg_EPON_STAT_RXP_FCS_ERROR_CNT, MV_ASIC_ONT_GLB_ADDR + 0x1828, 0x1828, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "RXP fcs error counter"}, |
| [mvAsicReg_EPON_STAT_RXP_SHORT_ERROR_CNT] = { mvAsicReg_EPON_STAT_RXP_SHORT_ERROR_CNT, MV_ASIC_ONT_GLB_ADDR + 0x1848, 0x1848, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "RXP short error counter"}, |
| [mvAsicReg_EPON_STAT_RXP_LONG_ERROR_CNT] = { mvAsicReg_EPON_STAT_RXP_LONG_ERROR_CNT, MV_ASIC_ONT_GLB_ADDR + 0x1868, 0x1868, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "RXP long error counter"}, |
| [mvAsicReg_EPON_STAT_RXP_DATA_FRAMES_CNT] = { mvAsicReg_EPON_STAT_RXP_DATA_FRAMES_CNT, MV_ASIC_ONT_GLB_ADDR + 0x1888, 0x1888, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "RXP data frame counter"}, |
| [mvAsicReg_EPON_STAT_RXP_CTRL_FRAMES_CNT] = { mvAsicReg_EPON_STAT_RXP_CTRL_FRAMES_CNT, MV_ASIC_ONT_GLB_ADDR + 0x18A8, 0x18A8, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "RXP ctrl frame counter"}, |
| [mvAsicReg_EPON_STAT_RXP_REPORT_FRAMES_CNT] = { mvAsicReg_EPON_STAT_RXP_REPORT_FRAMES_CNT, MV_ASIC_ONT_GLB_ADDR + 0x18C8, 0x18C8, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "RXP report frame counter"}, |
| [mvAsicReg_EPON_STAT_RXP_GATE_FRAMES_CNT] = { mvAsicReg_EPON_STAT_RXP_GATE_FRAMES_CNT, MV_ASIC_ONT_GLB_ADDR + 0x18E8, 0x18E8, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "RXP gate frame counter"}, |
| [mvAsicReg_EPON_STAT_TXP_CTRL_REG_REQ_FRAMES_CNT] = { mvAsicReg_EPON_STAT_TXP_CTRL_REG_REQ_FRAMES_CNT, MV_ASIC_ONT_GLB_ADDR + 0x1908, 0x1908, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "TXP ctrl register req frame counter"}, |
| [mvAsicReg_EPON_STAT_TXP_CTRL_REG_ACK_FRAMES_CNT] = { mvAsicReg_EPON_STAT_TXP_CTRL_REG_ACK_FRAMES_CNT, MV_ASIC_ONT_GLB_ADDR + 0x1928, 0x1928, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "TXP ctrl register ack frame counter"}, |
| [mvAsicReg_EPON_STAT_TXP_CTRL_REPORT_FRAMES_CNT] = { mvAsicReg_EPON_STAT_TXP_CTRL_REPORT_FRAMES_CNT, MV_ASIC_ONT_GLB_ADDR + 0x1948, 0x1948, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "TXP ctrl report frame counter"}, |
| [mvAsicReg_EPON_STAT_TXP_DATA_FRAMES_CNT] = { mvAsicReg_EPON_STAT_TXP_DATA_FRAMES_CNT, MV_ASIC_ONT_GLB_ADDR + 0x1968, 0x1968, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "TXP data frame counter"}, |
| [mvAsicReg_EPON_STAT_TXP_TX_ALLOWED_BYTE_CNT] = { mvAsicReg_EPON_STAT_TXP_TX_ALLOWED_BYTE_CNT, MV_ASIC_ONT_GLB_ADDR + 0x1988, 0x1988, asicRW, 0xFFFFFFFF, 0, 8, 1, 0, "TXP tx allowed byte counter"}, |
| |
| /* ===================================== */ |
| /* EPON Control Packet queue Registers */ |
| /* ===================================== */ |
| [mvAsicReg_EPON_CPQ_RX_CTRL_Q_READ] = { mvAsicReg_EPON_CPQ_RX_CTRL_Q_READ, MV_ASIC_ONT_GLB_ADDR + 0x1C10, 0x1C10, asicRW, 0x000000FF, 0, 0, 0, 0, "CPQ rx ctrl queue read"}, |
| [mvAsicReg_EPON_CPQ_RX_CTRL_Q_USED] = { mvAsicReg_EPON_CPQ_RX_CTRL_Q_USED, MV_ASIC_ONT_GLB_ADDR + 0x1C14, 0x1C14, asicRW, 0x000007FF, 0, 0, 0, 0, "CPQ rx ctrl queue used"}, |
| [mvAsicReg_EPON_CPQ_RX_RPRT_Q_READ] = { mvAsicReg_EPON_CPQ_RX_RPRT_Q_READ, MV_ASIC_ONT_GLB_ADDR + 0x1C18, 0x1C18, asicRW, 0x000000FF, 0, 0, 0, 0, "CPQ rx report queue read"}, |
| [mvAsicReg_EPON_CPQ_RX_RPRT_Q_USED] = { mvAsicReg_EPON_CPQ_RX_RPRT_Q_USED, MV_ASIC_ONT_GLB_ADDR + 0x1C1C, 0x1C1C, asicRW, 0x000007FF, 0, 0, 0, 0, "CPQ rx report queue used"}, |
| [mvAsicReg_EPON_CPQ_RX_CTRL_HQ_READ_L] = { mvAsicReg_EPON_CPQ_RX_CTRL_HQ_READ_L, MV_ASIC_ONT_GLB_ADDR + 0x1C20, 0x1C20, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "CPQ rx ctrl header queue read L"}, |
| [mvAsicReg_EPON_CPQ_RX_CTRL_HQ_READ_H] = { mvAsicReg_EPON_CPQ_RX_CTRL_HQ_READ_H, MV_ASIC_ONT_GLB_ADDR + 0x1C24, 0x1C24, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "CPQ rx ctrl header queue read H"}, |
| [mvAsicReg_EPON_CPQ_RX_CTRL_HQ_USED] = { mvAsicReg_EPON_CPQ_RX_CTRL_HQ_USED, MV_ASIC_ONT_GLB_ADDR + 0x1C28, 0x1C28, asicRW, 0x0000001F, 0, 0, 0, 0, "CPQ rx ctrl header queue read used"}, |
| [mvAsicReg_EPON_CPQ_RX_RPRT_HQ_READ_L] = { mvAsicReg_EPON_CPQ_RX_RPRT_HQ_READ_L, MV_ASIC_ONT_GLB_ADDR + 0x1C2C, 0x1C2C, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "CPQ rx report header queue read L"}, |
| [mvAsicReg_EPON_CPQ_RX_RPRT_HQ_READ_H] = { mvAsicReg_EPON_CPQ_RX_RPRT_HQ_READ_H, MV_ASIC_ONT_GLB_ADDR + 0x1C30, 0x1C30, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "CPQ rx report header queue read H"}, |
| [mvAsicReg_EPON_CPQ_RX_RPRT_HQ_USED] = { mvAsicReg_EPON_CPQ_RX_RPRT_HQ_USED, MV_ASIC_ONT_GLB_ADDR + 0x1C34, 0x1C34, asicRW, 0x0000001F, 0, 0, 0, 0, "CPQ rx report header queue read used"}, |
| [mvAsicReg_EPON_CPQ_TX_CTRL_Q_WRITE] = { mvAsicReg_EPON_CPQ_TX_CTRL_Q_WRITE, MV_ASIC_ONT_GLB_ADDR + 0x1C78, 0x1C78, asicWO, 0x000000FF, 0, 8, 1, 0, "CPQ tx ctrl queue write"}, |
| #ifdef PON_Z1 |
| [mvAsicReg_EPON_CPQ_TX_CTRL_Q_FREE] = { mvAsicReg_EPON_CPQ_TX_CTRL_Q_FREE, MV_ASIC_ONT_GLB_ADDR + 0x1C98, 0x1C98, asicRO, 0x000001FF, 0, 8, 1, 0, "CPQ tx ctrl queue free"}, |
| #else /* PON_A0 */ |
| [mvAsicReg_EPON_CPQ_TX_CTRL_Q_FREE] = { mvAsicReg_EPON_CPQ_TX_CTRL_Q_FREE, MV_ASIC_ONT_GLB_ADDR + 0x1C98, 0x1C98, asicRO, 0x00000FFF, 0, 8, 1, 0, "CPQ tx ctrl queue free"}, |
| #endif |
| #ifdef PON_Z1 |
| [mvAsicReg_EPON_CPQ_TX_CTRL_HQ_WRITE] = { mvAsicReg_EPON_CPQ_TX_CTRL_HQ_WRITE, MV_ASIC_ONT_GLB_ADDR + 0x1C48, 0x1C48, asicRW, 0x00FFFFFF, 0, 0, 0, 0, "CPQ tx ctrl header queue write"}, |
| [mvAsicReg_EPON_CPQ_TX_CTRL_HQ_FREE] = { mvAsicReg_EPON_CPQ_TX_CTRL_HQ_FREE, MV_ASIC_ONT_GLB_ADDR + 0x1C4C, 0x1C4C, asicRW, 0x00FFFFFF, 0, 0, 0, 0, "CPQ tx ctrl header queue free"}, |
| #else /* PON_A0 */ |
| [mvAsicReg_EPON_CPQ_TX_CTRL_HQ_WRITE] = { mvAsicReg_EPON_CPQ_TX_CTRL_HQ_WRITE, MV_ASIC_ONT_GLB_ADDR + 0x1CB8, 0x1CB8, asicRW, 0x00FFFFFF, 0, 8, 1, 0, "CPQ tx ctrl header queue write"}, |
| [mvAsicReg_EPON_CPQ_TX_CTRL_HQ_FREE] = { mvAsicReg_EPON_CPQ_TX_CTRL_HQ_FREE, MV_ASIC_ONT_GLB_ADDR + 0x1CD8, 0x1CD8, asicRW, 0x00FFFFFF, 0, 8, 1, 0, "CPQ tx ctrl header queue free"}, |
| #endif |
| |
| /* =========================== */ |
| /* P2P Registers */ |
| /* =========================== */ |
| [mvAsicReg_P2P_GEN_ONT_MODE] = { mvAsicReg_P2P_GEN_ONT_MODE, MV_ASIC_ONT_GLB_ADDR + 0x040C, 0x040C, asicRW, 0x00000001, 31, 0, 0, 0, "ONU mode"}, |
| [mvAsicReg_P2P_PCS_CONFIGURATION] = { mvAsicReg_P2P_PCS_CONFIGURATION, MV_ASIC_ONT_GLB_ADDR + 0x1414, 0x1414, asicRW, 0x00000613, 16, 0, 0, 0, "P2P PCS configuration"}, |
| [mvAsicReg_P2P_TXM_CFG_MODE] = { mvAsicReg_P2P_TXM_CFG_MODE, MV_ASIC_ONT_GLB_ADDR + 0x1018, 0x1018, asicRW, 0x00000003, 3, 0, 0, 0, "Tx Configuration mode"}, |
| |
| #ifndef PON_FPGA |
| #ifdef DISABLE_DG_FOR_AVANTA_LP |
| [mvAsicReg_PON_MPP_00] = {mvAsicReg_PON_MPP_00, 0x18000, 0x18000, asicRW, 0x0000000F, 0, 0, 0, 0, "Gpon MMP 00"}, |
| [mvAsicReg_PON_MPP_01] = {mvAsicReg_PON_MPP_01, 0x18000, 0x18000, asicRW, 0x0000000F, 4, 0, 0, 0, "Gpon MMP 01"}, |
| [mvAsicReg_PON_MPP_02] = {mvAsicReg_PON_MPP_02, 0x18000, 0x18000, asicRW, 0x0000000F, 8, 0, 0, 0, "Gpon MMP 02"}, |
| [mvAsicReg_PON_MPP_03] = {mvAsicReg_PON_MPP_03, 0x18000, 0x18000, asicRW, 0x0000000F, 12, 0, 0, 0, "Gpon MMP 03"}, |
| [mvAsicReg_PON_MPP_04] = {mvAsicReg_PON_MPP_04, 0x18000, 0x18000, asicRW, 0x0000000F, 16, 0, 0, 0, "Gpon MMP 04"}, |
| [mvAsicReg_PON_MPP_05] = {mvAsicReg_PON_MPP_05, 0x18000, 0x18000, asicRW, 0x0000000F, 20, 0, 0, 0, "Gpon MMP 05"}, |
| [mvAsicReg_PON_MPP_06] = {mvAsicReg_PON_MPP_06, 0x18000, 0x18000, asicRW, 0x0000000F, 24, 0, 0, 0, "Gpon MMP 06"}, |
| [mvAsicReg_PON_MPP_07] = {mvAsicReg_PON_MPP_07, 0x18000, 0x18000, asicRW, 0x0000000F, 28, 0, 0, 0, "Gpon MMP 07"}, |
| [mvAsicReg_PON_MPP_08] = {mvAsicReg_PON_MPP_08, 0x18004, 0x18004, asicRW, 0x0000000F, 0, 0, 0, 0, "Gpon MMP 08"}, |
| [mvAsicReg_PON_MPP_09] = {mvAsicReg_PON_MPP_09, 0x18004, 0x18004, asicRW, 0x0000000F, 4, 0, 0, 0, "Gpon MMP 09"}, |
| [mvAsicReg_PON_MPP_10] = {mvAsicReg_PON_MPP_10, 0x18004, 0x18004, asicRW, 0x0000000F, 8, 0, 0, 0, "Gpon MMP 10"}, |
| [mvAsicReg_PON_MPP_11] = {mvAsicReg_PON_MPP_11, 0x18004, 0x18004, asicRW, 0x0000000F, 12, 0, 0, 0, "Gpon MMP 11"}, |
| [mvAsicReg_PON_MPP_12] = {mvAsicReg_PON_MPP_12, 0x18004, 0x18004, asicRW, 0x0000000F, 16, 0, 0, 0, "Gpon MMP 12"}, |
| [mvAsicReg_PON_MPP_13] = {mvAsicReg_PON_MPP_13, 0x18004, 0x18004, asicRW, 0x0000000F, 20, 0, 0, 0, "Gpon MMP 13"}, |
| [mvAsicReg_PON_MPP_14] = {mvAsicReg_PON_MPP_14, 0x18004, 0x18004, asicRW, 0x0000000F, 24, 0, 0, 0, "Gpon MMP 14"}, |
| [mvAsicReg_PON_MPP_15] = {mvAsicReg_PON_MPP_15, 0x18004, 0x18004, asicRW, 0x0000000F, 28, 0, 0, 0, "Gpon MMP 15"}, |
| [mvAsicReg_PON_MPP_16] = {mvAsicReg_PON_MPP_16, 0x18008, 0x18008, asicRW, 0x0000000F, 0, 0, 0, 0, "Gpon MMP 16"}, |
| [mvAsicReg_PON_MPP_17] = {mvAsicReg_PON_MPP_17, 0x18008, 0x18008, asicRW, 0x0000000F, 4, 0, 0, 0, "Gpon MMP 17"}, |
| [mvAsicReg_PON_MPP_18] = {mvAsicReg_PON_MPP_18, 0x18008, 0x18008, asicRW, 0x0000000F, 8, 0, 0, 0, "Gpon MMP 18"}, |
| [mvAsicReg_PON_MPP_19] = {mvAsicReg_PON_MPP_19, 0x18008, 0x18008, asicRW, 0x0000000F, 12, 0, 0, 0, "Gpon MMP 19, TDM RST"}, |
| [mvAsicReg_PON_MPP_20] = {mvAsicReg_PON_MPP_20, 0x18008, 0x18008, asicRW, 0x0000000F, 16, 0, 0, 0, "Gpon MMP 20"}, |
| [mvAsicReg_PON_MPP_21] = {mvAsicReg_PON_MPP_21, 0x18008, 0x18008, asicRW, 0x0000000F, 20, 0, 0, 0, "Gpon MMP 21"}, |
| [mvAsicReg_PON_MPP_22] = {mvAsicReg_PON_MPP_22, 0x18008, 0x18008, asicRW, 0x0000000F, 24, 0, 0, 0, "Gpon MMP 22"}, |
| [mvAsicReg_PON_MPP_23] = {mvAsicReg_PON_MPP_23, 0x18008, 0x18008, asicRW, 0x0000000F, 28, 0, 0, 0, "Gpon MMP 23"}, |
| [mvAsicReg_PON_MPP_24] = {mvAsicReg_PON_MPP_24, 0x1800C, 0x1800C, asicRW, 0x0000000F, 0, 0, 0, 0, "Gpon MMP 24"}, |
| [mvAsicReg_PON_MPP_25] = {mvAsicReg_PON_MPP_25, 0x1800C, 0x1800C, asicRW, 0x0000000F, 4, 0, 0, 0, "Gpon MMP 25"}, |
| [mvAsicReg_PON_MPP_26] = {mvAsicReg_PON_MPP_26, 0x1800C, 0x1800C, asicRW, 0x0000000F, 8, 0, 0, 0, "Gpon MMP 26"}, |
| [mvAsicReg_PON_MPP_27] = {mvAsicReg_PON_MPP_27, 0x1800C, 0x1800C, asicRW, 0x0000000F, 12, 0, 0, 0, "Gpon MMP 27"}, |
| [mvAsicReg_PON_MPP_28] = {mvAsicReg_PON_MPP_28, 0x1800C, 0x1800C, asicRW, 0x0000000F, 16, 0, 0, 0, "Gpon MMP 28"}, |
| [mvAsicReg_PON_MPP_29] = {mvAsicReg_PON_MPP_29, 0x1800C, 0x1800C, asicRW, 0x0000000F, 20, 0, 0, 0, "Gpon MMP 29"}, |
| [mvAsicReg_PON_MPP_30] = {mvAsicReg_PON_MPP_30, 0x1800C, 0x1800C, asicRW, 0x0000000F, 24, 0, 0, 0, "Gpon MMP 30"}, |
| [mvAsicReg_PON_MPP_31] = {mvAsicReg_PON_MPP_31, 0x1800C, 0x1800C, asicRW, 0x0000000F, 28, 0, 0, 0, "Gpon MMP 31"}, |
| [mvAsicReg_PON_MPP_32] = {mvAsicReg_PON_MPP_32, 0x18010, 0x18010, asicRW, 0x0000000F, 0, 0, 0, 0, "Gpon MMP 32"}, |
| [mvAsicReg_PON_MPP_33] = {mvAsicReg_PON_MPP_33, 0x18010, 0x18010, asicRW, 0x0000000F, 4, 0, 0, 0, "Gpon MMP 33"}, |
| [mvAsicReg_PON_MPP_34] = {mvAsicReg_PON_MPP_34, 0x18010, 0x18010, asicRW, 0x0000000F, 8, 0, 0, 0, "Gpon MMP 34"}, |
| [mvAsicReg_PON_MPP_35] = {mvAsicReg_PON_MPP_35, 0x18010, 0x18010, asicRW, 0x0000000F, 12, 0, 0, 0, "Gpon MMP 35"}, |
| [mvAsicReg_PON_MPP_36] = {mvAsicReg_PON_MPP_36, 0x18010, 0x18010, asicRW, 0x0000000F, 16, 0, 0, 0, "Gpon MMP 36"}, |
| [mvAsicReg_PON_MPP_37] = {mvAsicReg_PON_MPP_37, 0x18010, 0x18010, asicRW, 0x0000000F, 20, 0, 0, 0, "Gpon MMP 37"}, |
| [mvAsicReg_PON_MPP_38] = {mvAsicReg_PON_MPP_38, 0x18010, 0x18010, asicRW, 0x0000000F, 24, 0, 0, 0, "Gpon MMP 38"}, |
| [mvAsicReg_PON_MPP_39] = {mvAsicReg_PON_MPP_39, 0x18010, 0x18010, asicRW, 0x0000000F, 28, 0, 0, 0, "Gpon MMP 39"}, |
| [mvAsicReg_PON_MPP_40] = {mvAsicReg_PON_MPP_40, 0x18014, 0x18014, asicRW, 0x0000000F, 0, 0, 0, 0, "Gpon MMP 40"}, |
| [mvAsicReg_PON_MPP_41] = {mvAsicReg_PON_MPP_41, 0x18014, 0x18014, asicRW, 0x0000000F, 4, 0, 0, 0, "Gpon MMP 41"}, |
| [mvAsicReg_PON_MPP_42] = {mvAsicReg_PON_MPP_42, 0x18014, 0x18014, asicRW, 0x0000000F, 8, 0, 0, 0, "Gpon MMP 42"}, |
| [mvAsicReg_PON_MPP_43] = {mvAsicReg_PON_MPP_43, 0x18014, 0x18014, asicRW, 0x0000000F, 12, 0, 0, 0, "Gpon MMP 43"}, |
| [mvAsicReg_PON_MPP_44] = {mvAsicReg_PON_MPP_44, 0x18014, 0x18014, asicRW, 0x0000000F, 16, 0, 0, 0, "Gpon MMP 44"}, |
| [mvAsicReg_PON_MPP_45] = {mvAsicReg_PON_MPP_45, 0x18014, 0x18014, asicRW, 0x0000000F, 20, 0, 0, 0, "Gpon MMP 45"}, |
| [mvAsicReg_PON_MPP_46] = {mvAsicReg_PON_MPP_46, 0x18014, 0x18014, asicRW, 0x0000000F, 24, 0, 0, 0, "Gpon MMP 46"}, |
| [mvAsicReg_PON_MPP_47] = {mvAsicReg_PON_MPP_47, 0x18014, 0x18014, asicRW, 0x0000000F, 28, 0, 0, 0, "Gpon MMP 47"}, |
| [mvAsicReg_PON_MPP_48] = {mvAsicReg_PON_MPP_48, 0x18018, 0x18018, asicRW, 0x0000000F, 0, 0, 0, 0, "Gpon MMP 48"}, |
| [mvAsicReg_PON_MPP_49] = {mvAsicReg_PON_MPP_49, 0x18018, 0x18018, asicRW, 0x0000000F, 4, 0, 0, 0, "Gpon MMP 49"}, |
| [mvAsicReg_PON_MPP_50] = {mvAsicReg_PON_MPP_50, 0x18018, 0x18018, asicRW, 0x0000000F, 8, 0, 0, 0, "Gpon MMP 50, RD Board Dying Gasp"}, |
| [mvAsicReg_PON_MPP_51] = {mvAsicReg_PON_MPP_51, 0x18018, 0x18018, asicRW, 0x0000000F, 12, 0, 0, 0, "Gpon MMP 51"}, |
| [mvAsicReg_PON_MPP_52] = {mvAsicReg_PON_MPP_52, 0x18018, 0x18018, asicRW, 0x0000000F, 16, 0, 0, 0, "Gpon MMP 52"}, |
| [mvAsicReg_PON_MPP_53] = {mvAsicReg_PON_MPP_53, 0x18018, 0x18018, asicRW, 0x0000000F, 20, 0, 0, 0, "Gpon MMP 53"}, |
| [mvAsicReg_PON_MPP_54] = {mvAsicReg_PON_MPP_54, 0x18018, 0x18018, asicRW, 0x0000000F, 24, 0, 0, 0, "Gpon MMP 54"}, |
| [mvAsicReg_PON_MPP_55] = {mvAsicReg_PON_MPP_55, 0x18018, 0x18018, asicRW, 0x0000000F, 28, 0, 0, 0, "Gpon MMP 55"}, |
| [mvAsicReg_PON_MPP_56] = {mvAsicReg_PON_MPP_56, 0x1801C, 0x1801C, asicRW, 0x0000000F, 0, 0, 0, 0, "Gpon MMP 56"}, |
| [mvAsicReg_PON_MPP_57] = {mvAsicReg_PON_MPP_57, 0x1801C, 0x1801C, asicRW, 0x0000000F, 4, 0, 0, 0, "Gpon MMP 57"}, |
| [mvAsicReg_PON_MPP_58] = {mvAsicReg_PON_MPP_58, 0x1801C, 0x1801C, asicRW, 0x0000000F, 8, 0, 0, 0, "Gpon MMP 58"}, |
| [mvAsicReg_PON_MPP_59] = {mvAsicReg_PON_MPP_59, 0x1801C, 0x1801C, asicRW, 0x0000000F, 12, 0, 0, 0, "Gpon MMP 59"}, |
| [mvAsicReg_PON_MPP_60] = {mvAsicReg_PON_MPP_60, 0x1801C, 0x1801C, asicRW, 0x0000000F, 16, 0, 0, 0, "Gpon MMP 60"}, |
| [mvAsicReg_PON_MPP_61] = {mvAsicReg_PON_MPP_61, 0x1801C, 0x1801C, asicRW, 0x0000000F, 20, 0, 0, 0, "Gpon MMP 61"}, |
| [mvAsicReg_PON_MPP_62] = {mvAsicReg_PON_MPP_62, 0x1801C, 0x1801C, asicRW, 0x0000000F, 24, 0, 0, 0, "Gpon MMP 62"}, |
| [mvAsicReg_PON_MPP_63] = {mvAsicReg_PON_MPP_63, 0x1801C, 0x1801C, asicRW, 0x0000000F, 28, 0, 0, 0, "Gpon MMP 63"}, |
| [mvAsicReg_PON_MPP_64] = {mvAsicReg_PON_MPP_64, 0x18020, 0x18020, asicRW, 0x0000000F, 0, 0, 0, 0, "Gpon MMP 64"}, |
| [mvAsicReg_PON_MPP_65] = {mvAsicReg_PON_MPP_65, 0x18020, 0x18020, asicRW, 0x0000000F, 4, 0, 0, 0, "Gpon MMP 65"}, |
| [mvAsicReg_PON_MPP_66] = {mvAsicReg_PON_MPP_66, 0x18020, 0x18020, asicRW, 0x0000000F, 8, 0, 0, 0, "Gpon MMP 66"}, |
| #endif |
| #endif |
| |
| /* =========================== */ |
| /* SERDES Registers */ |
| /* =========================== */ |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0] = { mvAsicReg_PON_SERDES_PHY_CTRL_0, 0x184F4, 0x184F4, asicRW, 0xFFFFFFFF, 0, 0, 0, 0, "Gpon Phy Control 0"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_PU_Pll] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_PU_Pll, 0x184F4, 0x184F4, asicRW, 0x00000001, 0, 0, 0, 0, "Gpon Phy Control 0 Power Up Pll"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_PU_RX] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_PU_RX, 0x184F4, 0x184F4, asicRW, 0x00000001, 1, 0, 0, 0, "Gpon Phy Control 0 Power Up Rx"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_PU_TX] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_PU_TX, 0x184F4, 0x184F4, asicRW, 0x00000001, 2, 0, 0, 0, "Gpon Phy Control 0 Power Up Tx"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_RST] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_RST, 0x184F4, 0x184F4, asicRW, 0x00000001, 3, 0, 0, 0, "Gpon Phy Control 0 Reset"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_RST_TX_DOUT] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_RST_TX_DOUT, 0x184F4, 0x184F4, asicRW, 0x00000001, 4, 0, 0, 0, "Gpon Phy Control 0 Reset Tx Dout"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_RST_CORE] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_RST_CORE, 0x184F4, 0x184F4, asicRW, 0x00000001, 5, 0, 0, 0, "Gpon Phy Control 0 Reset Core"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_RX_INIT] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_RX_INIT, 0x184F4, 0x184F4, asicRW, 0x00000001, 6, 0, 0, 0, "Gpon Phy Control 0 Rx Init"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_RX_RATE] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_RX_RATE, 0x184F4, 0x184F4, asicRW, 0x00000001, 7, 0, 0, 0, "Gpon Phy Control 0 Rx Rate"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_TX_RATE] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_TX_RATE, 0x184F4, 0x184F4, asicRW, 0x00000001, 8, 0, 0, 0, "Gpon Phy Control 0 Tx Rate"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_SEL_GEPON] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_SEL_GEPON, 0x184F4, 0x184F4, asicRW, 0x00000001, 9, 0, 0, 0, "Gpon Phy Control 0 Sel GEPON"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_SEL_REF_CLK] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_SEL_REF_CLK, 0x184F4, 0x184F4, asicRW, 0x00000003, 10, 0, 0, 0, "Gpon Phy Control 0 Sel Ref Clk"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_REF_CLK_25M] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_REF_CLK_25M, 0x184F4, 0x184F4, asicRW, 0x00000001, 12, 0, 0, 0, "Gpon Phy Control 0 Ref Clk 25M"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_CID_REV] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_CID_REV, 0x184F4, 0x184F4, asicRW, 0x000000FF, 13, 0, 0, 0, "Gpon Phy Control 0 Cid Rev"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_PU_TX_SOURCE] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_PU_TX_SOURCE, 0x184F4, 0x184F4, asicRW, 0x00000001, 21, 0, 0, 0, "Gpon Phy Control 0 Pu Tx Source"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_REF_CLK_DISABLE] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_REF_CLK_DISABLE, 0x184F4, 0x184F4, asicRW, 0x00000001, 22, 0, 0, 0, "Gpon Phy Control 0 Ref clock disable"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_TX_IDLE] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_TX_IDLE, 0x184F4, 0x184F4, asicRW, 0x00000001, 23, 0, 0, 0, "Gpon Phy Control 0 Tx Idle"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_BEN_IO_EN] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_BEN_IO_EN, 0x184F4, 0x184F4, asicRW, 0x00000001, 24, 0, 0, 0, "Gpon Phy Control 0 BEN IO Enable"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_BEN_SW_HW_SELECT] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_BEN_SW_HW_SELECT, 0x184F4, 0x184F4, asicRW, 0x00000001, 25, 0, 0, 0, "Gpon Phy Control 0 Select SW or HW Control"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_BEN_SW_FORCE] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_BEN_SW_FORCE, 0x184F4, 0x184F4, asicRW, 0x00000001, 26, 0, 0, 0, "Gpon Phy Control 0 Software Control Force Enable"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_BEN_SW_VALUE] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_BEN_SW_VALUE, 0x184F4, 0x184F4, asicRW, 0x00000001, 27, 0, 0, 0, "Gpon Phy Control 0 Software Control Force Value"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_TOD_OVERRIDE] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_TOD_OVERRIDE, 0x184F4, 0x184F4, asicRW, 0x00000001, 28, 0, 0, 0, "Gpon Phy Control 0 ToD Overide"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_DIG_TEST_EN] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_DIG_TEST_EN, 0x184F4, 0x184F4, asicRW, 0x00000001, 29, 0, 0, 0, "Gpon Phy Control 0 Dig Test En"}, |
| [mvAsicReg_PON_SERDES_PHY_CTRL_0_EPON_MODE_SEL] = { mvAsicReg_PON_SERDES_PHY_CTRL_0_EPON_MODE_SEL, 0x184F4, 0x184F4, asicRW, 0x00000001, 30, 0, 0, 0, "Gpon Phy Control 0 Epon Mode Sel"}, |
| |
| [mvAsicReg_PON_SERDES_PHY_CTRL_1_PHY_SOURCE] = { mvAsicReg_PON_SERDES_PHY_CTRL_1_PHY_SOURCE, 0x184F8, 0x184F8, asicRW, 0x00000001, 0, 0, 0, 0, "Gpon Phy Control 1 Gpon Phy Source"}, |
| |
| [mvAsicReg_PON_SERDES_PHY_STATUS_REF_CLK_DIS_ACK] = { mvAsicReg_PON_SERDES_PHY_STATUS_REF_CLK_DIS_ACK, 0x184FC, 0x184FC, asicRW, 0x00000001, 16, 0, 0, 0, "Gpon Phy Status Ref Clock Disable Ack"}, |
| [mvAsicReg_PON_SERDES_PHY_STATUS_READY_RX] = { mvAsicReg_PON_SERDES_PHY_STATUS_READY_RX, 0x184FC, 0x184FC, asicRW, 0x00000001, 17, 0, 0, 0, "Gpon Phy Status Pll Ready Rx"}, |
| [mvAsicReg_PON_SERDES_PHY_STATUS_READY_TX] = { mvAsicReg_PON_SERDES_PHY_STATUS_READY_TX, 0x184FC, 0x184FC, asicRW, 0x00000001, 18, 0, 0, 0, "Gpon Phy Status Pll Ready Tx"}, |
| [mvAsicReg_PON_SERDES_PHY_STATUS_INIT_DONE] = { mvAsicReg_PON_SERDES_PHY_STATUS_INIT_DONE, 0x184FC, 0x184FC, asicRW, 0x00000001, 19, 0, 0, 0, "Gpon Phy Status Rx Init Done"}, |
| |
| [mvAsicReg_PON_SERDES_CLK_SEL] = { mvAsicReg_PON_SERDES_CLK_SEL, 0x18754, 0x18754, asicRW, 0x00000001, 1, 0, 0, 0, "Gpon Serdes Clock Select"}, |
| [mvAsicReg_PON_SERDES_CLK_EN] = { mvAsicReg_PON_SERDES_CLK_EN, 0x18754, 0x18754, asicRW, 0x00000001, 2, 0, 0, 0, "Gpon Serdes Clock Enable"}, |
| [mvAsicReg_PON_MAC_CLK_SEL] = { mvAsicReg_PON_MAC_CLK_SEL, 0x18754, 0x18754, asicRW, 0x00000001, 3, 0, 0, 0, "Gpon MAC Clock Select"}, |
| [mvAsicReg_PON_REF_CLK_EN] = { mvAsicReg_PON_REF_CLK_EN, 0x18754, 0x18754, asicRW, 0x00000001, 4, 0, 0, 0, "Gpon Ref Clock Enable"}, |
| |
| [mvAsicReg_PON_MAC_GPON_CLK_EN] = { mvAsicReg_PON_MAC_GPON_CLK_EN, 0x18220, 0x18220, asicRW, 0x00000001, 1, 0, 0, 0, "Gpon MAC Gpon T-Clock Enable"}, |
| [mvAsicReg_PON_MAC_SW_RESET_CTRL] = { mvAsicReg_PON_MAC_SW_RESET_CTRL, 0x18258, 0x18258, asicRW, 0x00000001, 3, 0, 0, 0, "Gpon MAC Software Reset Control"}, |
| |
| [mvAsicReg_PON_SERDES_INTERNAL_POWER_REG_0] = { mvAsicReg_PON_SERDES_INTERNAL_POWER_REG_0, 0x32004, 0x32004, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Gpon Serded Internal - Power reg 0"}, |
| [mvAsicReg_PON_SERDES_INTERNAL_REG_D] = { mvAsicReg_PON_SERDES_INTERNAL_REG_D, 0x32034, 0x32034, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Gpon Serded Internal - Reg 0xD"}, |
| [mvAsicReg_PON_SERDES_INTERNAL_REG_23_LOOP_TIMING] = { mvAsicReg_PON_SERDES_INTERNAL_REG_23_LOOP_TIMING, 0x3208c, 0x3208c, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Gpon Serded Internal - Loop Timing"}, |
| [mvAsicReg_PON_SERDES_INTERNAL_REG_26_TX_DRV_IDLE] = { mvAsicReg_PON_SERDES_INTERNAL_REG_26_TX_DRV_IDLE, 0x32098, 0x32098, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Gpon Serded Internal - Tx Driver Idle"}, |
| [mvAsicReg_PON_SERDES_INTERNAL_REG_3D] = { mvAsicReg_PON_SERDES_INTERNAL_REG_3D, 0x320f4, 0x320f4, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Gpon Serded Internal - Reg 0x3D"}, |
| [mvAsicReg_PON_SERDES_INTERNAL_REG_4D] = { mvAsicReg_PON_SERDES_INTERNAL_REG_4D, 0x32134, 0x32134, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Gpon Serded Internal - Reg 0x4D"}, |
| [mvAsicReg_PON_SERDES_INTERNAL_REG_51] = { mvAsicReg_PON_SERDES_INTERNAL_REG_51, 0x32144, 0x32144, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Gpon Serded Internal - Reg 0x51"}, |
| [mvAsicReg_PON_SERDES_INTERNAL_REG_OFFSET_148] = { mvAsicReg_PON_SERDES_INTERNAL_REG_OFFSET_148, 0x32148, 0x32148, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Gpon Serded Internal - Offse 0x32148"}, |
| [mvAsicReg_PON_SERDES_INTERNAL_REG_55_BIT6_7] = { mvAsicReg_PON_SERDES_INTERNAL_REG_55_BIT6_7, 0x32154, 0x32154, asicRW, 0x00000003, 6, 0, 0, 0, "Gpon Serded Internal - Reg 0x54 bit6 and bit7"}, |
| [mvAsicReg_PON_SERDES_INTERNAL_REG_OFFSET_178] = { mvAsicReg_PON_SERDES_INTERNAL_REG_OFFSET_178, 0x32178, 0x32178, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Gpon Serded Internal - Offse 0x32178"}, |
| |
| [mvAsicReg_PON_XVR_TX_DATA_OUT_17] = { mvAsicReg_PON_XVR_TX_DATA_OUT_17, 0x18104, 0x18104, asicRW, 0x00000001, 17, 0, 0, 0, "GPIO 17 data out transmit"}, |
| [mvAsicReg_PON_XVR_TX_DATA_OUT_36] = { mvAsicReg_PON_XVR_TX_DATA_OUT_36, 0x18144, 0x18144, asicRW, 0x00000001, 4, 0, 0, 0, "GPIO 36 data out transmit"}, |
| [mvAsicReg_PON_XVR_TX_DATA_OUT_37] = { mvAsicReg_PON_XVR_TX_DATA_OUT_37, 0x18144, 0x18144, asicRW, 0x00000001, 5, 0, 0, 0, "GPIO 37 data out transmit"}, |
| [mvAsicReg_PON_XVR_TX_DATA_OUT_41] = { mvAsicReg_PON_XVR_TX_DATA_OUT_41, 0x18144, 0x18144, asicRW, 0x00000001, 9, 0, 0, 0, "GPIO 41 data out transmit"}, |
| [mvAsicReg_PON_XVR_TX_DATA_OUT_45] = { mvAsicReg_PON_XVR_TX_DATA_OUT_45, 0x18144, 0x18144, asicRW, 0x00000001, 13, 0, 0, 0, "GPIO 45 data out transmit"}, |
| [mvAsicReg_PON_XVR_TX_DATA_OUT_65] = { mvAsicReg_PON_XVR_TX_DATA_OUT_65, 0x18184, 0x18184, asicRW, 0x00000001, 1, 0, 0, 0, "GPIO 68 data out transmit"}, |
| [mvAsicReg_PON_XVR_TX_DATA_OUT_68] = { mvAsicReg_PON_XVR_TX_DATA_OUT_68, 0x18184, 0x18184, asicRW, 0x00000001, 4, 0, 0, 0, "GPIO 68 data out transmit"}, |
| [mvAsicReg_PON_XVR_TX_OUTPUT_ENABLE_17] = { mvAsicReg_PON_XVR_TX_OUTPUT_ENABLE_17, 0x18100, 0x18100, asicRW, 0x00000001, 17, 0, 0, 0, "GPIO 17 data out enabled"}, |
| [mvAsicReg_PON_XVR_TX_OUTPUT_ENABLE_36] = { mvAsicReg_PON_XVR_TX_OUTPUT_ENABLE_36, 0x18140, 0x18140, asicRW, 0x00000001, 4, 0, 0, 0, "GPIO 36 data out enabled"}, |
| [mvAsicReg_PON_XVR_TX_OUTPUT_ENABLE_37] = { mvAsicReg_PON_XVR_TX_OUTPUT_ENABLE_37, 0x18140, 0x18140, asicRW, 0x00000001, 5, 0, 0, 0, "GPIO 37 data out enabled"}, |
| [mvAsicReg_PON_XVR_RX_INPUT_41] = { mvAsicReg_PON_XVR_RX_INPUT_41, 0x18150, 0x18150, asicRW, 0x00000001, 9, 0, 0, 0, "GPIO 41 data in "}, |
| [mvAsicReg_PON_XVR_RX_INPUT_45] = { mvAsicReg_PON_XVR_RX_INPUT_45, 0x18150, 0x18150, asicRW, 0x00000001, 13, 0, 0, 0, "GPIO 45 data in "}, |
| [mvAsicReg_PON_XVR_TX_OUTPUT_ENABLE_65] = { mvAsicReg_PON_XVR_TX_OUTPUT_ENABLE_65, 0x18180, 0x18180, asicRW, 0x00000001, 1, 0, 0, 0, "GPIO 65 data out enabled"}, |
| [mvAsicReg_PON_XVR_TX_OUTPUT_ENABLE_68] = { mvAsicReg_PON_XVR_TX_OUTPUT_ENABLE_68, 0x18180, 0x18180, asicRW, 0x00000001, 4, 0, 0, 0, "GPIO 68 data out enabled"}, |
| [mvAsicReg_PON_SERDES_INTERNAL_OPEN_TX_DOOR_15] = { mvAsicReg_PON_SERDES_INTERNAL_OPEN_TX_DOOR_15, 0xA2E98, 0xA2E98, asicRW, 0x00000001, 15, 0, 0, 0, "Gpon Serded Internal - open tx door"}, |
| [mvAsicReg_PON_SERDES_POWER_PHY_MODE] = { mvAsicReg_PON_SERDES_POWER_PHY_MODE, 0xA2E04, 0xA2E04, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Gpon Serded power up in PHY mode"}, |
| [mvAsicReg_PON_SYS_LED_ENABLE] = { mvAsicReg_PON_SYS_LED_ENABLE, 0x18144, 0x18144, asicRW, 0x00000001, 12, 0, 0, 0, "ONU Sys Led enable"}, |
| [mvAsicReg_PON_SYS_LED_STATE] = { mvAsicReg_PON_SYS_LED_STATE, 0x18140, 0x18140, asicRW, 0x00000001, 12, 0, 0, 0, "ONU Sys Led state"}, |
| [mvAsicReg_PON_SYS_LED_BLINK] = { mvAsicReg_PON_SYS_LED_BLINK, 0x18148, 0x18148, asicRW, 0x00000001, 12, 0, 0, 0, "ONU Sys Led blink"}, |
| [mvAsicReg_PON_SYS_LED_BLINK_FREQ] = { mvAsicReg_PON_SYS_LED_BLINK_FREQ, 0x18160, 0x18160, asicRW, 0x00000001, 12, 0, 0, 0, "ONU Sys Led blink freq"}, |
| [mvAsicReg_PON_SYNC_LED_ENABLE] = { mvAsicReg_PON_SYNC_LED_ENABLE, 0x18144, 0x18144, asicRW, 0x00000001, 13, 0, 0, 0, "ONU Sync Led enable"}, |
| [mvAsicReg_PON_SYNC_LED_STATE] = { mvAsicReg_PON_SYNC_LED_STATE, 0x18140, 0x18140, asicRW, 0x00000001, 13, 0, 0, 0, "ONU Sync Led state"}, |
| [mvAsicReg_PON_SYNC_LED_BLINK] = { mvAsicReg_PON_SYNC_LED_BLINK, 0x18148, 0x18148, asicRW, 0x00000001, 13, 0, 0, 0, "ONU Sync Led blink"}, |
| [mvAsicReg_PON_SYNC_LED_BLINK_FREQ] = { mvAsicReg_PON_SYNC_LED_BLINK_FREQ, 0x18160, 0x18160, asicRW, 0x00000001, 13, 0, 0, 0, "ONU Sync Led blink freq"}, |
| [mvAsicReg_PON_LED_BLINK_FREQ_A_ON] = { mvAsicReg_PON_LED_BLINK_FREQ_A_ON, 0x181C0, 0x181C0, asicRW, 0x00000000, 0, 0, 0, 0, "ONU Led Freq A On"}, |
| [mvAsicReg_PON_LED_BLINK_FREQ_A_OFF] = { mvAsicReg_PON_LED_BLINK_FREQ_A_OFF, 0x181C4, 0x181C4, asicRW, 0x00000000, 0, 0, 0, 0, "ONU Led Freq A Off"}, |
| [mvAsicReg_PON_LED_BLINK_FREQ_B_ON] = { mvAsicReg_PON_LED_BLINK_FREQ_B_ON, 0x181C8, 0x181C8, asicRW, 0x00000000, 0, 0, 0, 0, "ONU Led Freq B On"}, |
| [mvAsicReg_PON_LED_BLINK_FREQ_B_OFF] = { mvAsicReg_PON_LED_BLINK_FREQ_B_OFF, 0x181CC, 0x181CC, asicRW, 0x00000000, 0, 0, 0, 0, "ONU Led Freq B Off"}, |
| #ifndef PON_FPGA |
| #ifdef DISABLE_DG_FOR_AVANTA_LP |
| [mvAsicReg_PON_DG_CTRL_EN] = { mvAsicReg_PON_DG_CTRL_EN, 0x18210, 0x18210, asicRW, 0x00000001, 0, 0, 0, 0, "ONU Dying Gasp enable"}, |
| [mvAsicReg_PON_DG_CTRL_POLARITY] = { mvAsicReg_PON_DG_CTRL_POLARITY, 0x18210, 0x18210, asicRW, 0x00000001, 1, 0, 0, 0, "ONU Dying Gasp polarity"}, |
| [mvAsicReg_PON_DG_THRESHOLD] = { mvAsicReg_PON_DG_THRESHOLD, 0x18214, 0x18214, asicRW, 0x00000000, 0, 0, 0, 0, "ONU Dying Gasp threshold"}, |
| #else |
| [mvAsicReg_PON_DG_CTRL_EN] = { mvAsicReg_PON_DG_CTRL_EN, 0x18270, 0x18270, asicRW, 0x00000001, 0, 0, 0, 0, "ONU Dying Gasp enable"}, |
| [mvAsicReg_PON_DG_CTRL_POLARITY] = { mvAsicReg_PON_DG_CTRL_POLARITY, 0x18270, 0x18270, asicRW, 0x00000001, 1, 0, 0, 0, "ONU Dying Gasp polarity"}, |
| [mvAsicReg_PON_DG_THRESHOLD] = { mvAsicReg_PON_DG_THRESHOLD, 0x18274, 0x18274, asicRW, 0x00000000, 0, 0, 0, 0, "ONU Dying Gasp threshold"}, |
| #endif |
| #endif |
| [mvAsicReg_PON_INTERNAL_DG] = { mvAsicReg_PON_INTERNAL_DG, 0x182E4, 0x182E4, asicRW, 0x0000007F, 0, 0, 0, 0, "ONU internal Dying Gasp support"}, |
| |
| #ifdef CONFIG_AVANTA_LP |
| [mvAsicReg_PT_PATTERN_SELECT] = { mvAsicReg_PT_PATTERN_SELECT, 0xA2E54, 0x32054, asicRW, 0x0000000F, 4, 0, 0, 0, "PHY test pattern select"}, |
| [mvAsicReg_PT_PATTERN_ENABLED] = { mvAsicReg_PT_PATTERN_ENABLED, 0xA2E54, 0x32054, asicRW, 0x00000001, 15, 0, 0, 0, "PHY test pattern enabled"}, |
| [mvAsicReg_PT_PATTERN_DATA] = { mvAsicReg_PT_PATTERN_DATA, 0xA2E6C, 0x3206C, asicRW, 0x0000FFFF, 0, 0, 0, 0, "PHY test pattern data / user pattern [15:0]"}, |
| [mvAsicReg_PT_PATTERN_USER_DATA_01] = { mvAsicReg_PT_PATTERN_USER_DATA_01, 0xA2E68, 0x32068, asicRW, 0x0000FFFF, 0, 0, 0, 0, "PHY test user pattern [31:16]"}, |
| [mvAsicReg_PT_PATTERN_USER_DATA_02] = { mvAsicReg_PT_PATTERN_USER_DATA_02, 0xA2E64, 0x32064, asicRW, 0x0000FFFF, 0, 0, 0, 0, "PHY test user pattern [47:32]"}, |
| [mvAsicReg_PT_PATTERN_USER_DATA_03] = { mvAsicReg_PT_PATTERN_USER_DATA_03, 0xA2E60, 0x32060, asicRW, 0x0000FFFF, 0, 0, 0, 0, "PHY test user pattern [63:48]"}, |
| [mvAsicReg_PT_PATTERN_USER_DATA_04] = { mvAsicReg_PT_PATTERN_USER_DATA_04, 0xA2E5C, 0x3205C, asicRW, 0x0000FFFF, 0, 0, 0, 0, "PHY test user pattern [79:64]"}, |
| [mvAsicReg_PT_PATTERN_USER_DATA_05] = { mvAsicReg_PT_PATTERN_USER_DATA_05, 0xA2E58, 0x32058, asicRW, 0x0000FFFF, 0, 0, 0, 0, "PHY test user pattern [96:80]"}, |
| #else |
| [mvAsicReg_PT_PATTERN_SELECT] = { mvAsicReg_PT_PATTERN_SELECT, 0xA2E54, 0xA2E54, asicRW, 0x00000007, 5, 0, 0, 0, "PHY test pattern select"}, |
| [mvAsicReg_PT_PATTERN_ENABLED] = { mvAsicReg_PT_PATTERN_ENABLED, 0xA2E54, 0xA2E54, asicRW, 0x00000001, 15, 0, 0, 0, "PHY test pattern enabled"}, |
| [mvAsicReg_PT_PATTERN_DATA] = { mvAsicReg_PT_PATTERN_DATA, 0xA2E6C, 0xA2E6C, asicRW, 0x0000FFFF, 0, 0, 0, 0, "PHY test pattern data / user pattern [15:0]"}, |
| [mvAsicReg_PT_PATTERN_USER_DATA_01] = { mvAsicReg_PT_PATTERN_USER_DATA_01, 0xA2E68, 0xA2E68, asicRW, 0x0000FFFF, 0, 0, 0, 0, "PHY test user pattern [31:16]"}, |
| [mvAsicReg_PT_PATTERN_USER_DATA_02] = { mvAsicReg_PT_PATTERN_USER_DATA_02, 0xA2E64, 0xA2E64, asicRW, 0x0000FFFF, 0, 0, 0, 0, "PHY test user pattern [47:32]"}, |
| [mvAsicReg_PT_PATTERN_USER_DATA_03] = { mvAsicReg_PT_PATTERN_USER_DATA_03, 0xA2E60, 0xA2E60, asicRW, 0x0000FFFF, 0, 0, 0, 0, "PHY test user pattern [63:48]"}, |
| [mvAsicReg_PT_PATTERN_USER_DATA_04] = { mvAsicReg_PT_PATTERN_USER_DATA_04, 0xA2E5C, 0xA2E5C, asicRW, 0x0000FFFF, 0, 0, 0, 0, "PHY test user pattern [79:64]"}, |
| [mvAsicReg_PT_PATTERN_USER_DATA_05] = { mvAsicReg_PT_PATTERN_USER_DATA_05, 0xA2E58, 0xA2E58, asicRW, 0x0000FFFF, 0, 0, 0, 0, "PHY test user pattern [96:80]"}, |
| #endif |
| [mvAsicReg_GUNIT_TX_0_PKT_MOD_MAX_HEAD_SIZE_CFG] = { mvAsicReg_GUNIT_TX_0_PKT_MOD_MAX_HEAD_SIZE_CFG, 0xA59D0, 0xA59D0, asicRW, 0x000000FE, 1, 0, 0, 0, "GPON GUNIT Pkt Mod Mac Head Size for TX 0"}, |
| [mvAsicReg_GUNIT_TX_1_PKT_MOD_MAX_HEAD_SIZE_CFG] = { mvAsicReg_GUNIT_TX_1_PKT_MOD_MAX_HEAD_SIZE_CFG, 0xA5DD0, 0xA5DD0, asicRW, 0x000000FE, 1, 0, 0, 0, "GPON GUNIT Pkt Mod Mac Head Size for TX 1"}, |
| [mvAsicReg_GUNIT_TX_2_PKT_MOD_MAX_HEAD_SIZE_CFG] = { mvAsicReg_GUNIT_TX_2_PKT_MOD_MAX_HEAD_SIZE_CFG, 0xA79D0, 0xA79D0, asicRW, 0x000000FE, 1, 0, 0, 0, "GPON GUNIT Pkt Mod Mac Head Size for TX 2"}, |
| [mvAsicReg_GUNIT_TX_3_PKT_MOD_MAX_HEAD_SIZE_CFG] = { mvAsicReg_GUNIT_TX_3_PKT_MOD_MAX_HEAD_SIZE_CFG, 0xA7DD0, 0xA7DD0, asicRW, 0x000000FE, 1, 0, 0, 0, "GPON GUNIT Pkt Mod Mac Head Size for TX 3"}, |
| [mvAsicReg_GUNIT_TX_4_PKT_MOD_MAX_HEAD_SIZE_CFG] = { mvAsicReg_GUNIT_TX_4_PKT_MOD_MAX_HEAD_SIZE_CFG, 0xA99D0, 0xA99D0, asicRW, 0x000000FE, 1, 0, 0, 0, "GPON GUNIT Pkt Mod Mac Head Size for TX 4"}, |
| [mvAsicReg_GUNIT_TX_5_PKT_MOD_MAX_HEAD_SIZE_CFG] = { mvAsicReg_GUNIT_TX_5_PKT_MOD_MAX_HEAD_SIZE_CFG, 0xA9DD0, 0xA9DD0, asicRW, 0x000000FE, 1, 0, 0, 0, "GPON GUNIT Pkt Mod Mac Head Size for TX 5"}, |
| [mvAsicReg_GUNIT_TX_6_PKT_MOD_MAX_HEAD_SIZE_CFG] = { mvAsicReg_GUNIT_TX_6_PKT_MOD_MAX_HEAD_SIZE_CFG, 0xAB9D0, 0xAB9D0, asicRW, 0x000000FE, 1, 0, 0, 0, "GPON GUNIT Pkt Mod Mac Head Size for TX 6"}, |
| [mvAsicReg_GUNIT_TX_7_PKT_MOD_MAX_HEAD_SIZE_CFG] = { mvAsicReg_GUNIT_TX_7_PKT_MOD_MAX_HEAD_SIZE_CFG, 0xABDD0, 0xABDD0, asicRW, 0x000000FE, 1, 0, 0, 0, "GPON GUNIT Pkt Mod Mac Head Size for TX 7"}, |
| |
| [mvAsicReg_GUNIT_TX_0_PKT_MOD_STATS_PKT_COUNT] = { mvAsicReg_GUNIT_TX_0_PKT_MOD_STATS_PKT_COUNT, 0xA59D8, 0xA59D8, asicRW, 0x0000FFFF, 0, 0, 0, 0, "GPON GUNIT Pkt Mod Packet Count for TX 0"}, |
| [mvAsicReg_GUNIT_TX_1_PKT_MOD_STATS_PKT_COUNT] = { mvAsicReg_GUNIT_TX_1_PKT_MOD_STATS_PKT_COUNT, 0xA5DD8, 0xA5DD8, asicRW, 0x0000FFFF, 0, 0, 0, 0, "GPON GUNIT Pkt Mod Packet Count for TX 1"}, |
| [mvAsicReg_GUNIT_TX_2_PKT_MOD_STATS_PKT_COUNT] = { mvAsicReg_GUNIT_TX_2_PKT_MOD_STATS_PKT_COUNT, 0xA79D8, 0xA79D8, asicRW, 0x0000FFFF, 0, 0, 0, 0, "GPON GUNIT Pkt Mod Packet Count for TX 2"}, |
| [mvAsicReg_GUNIT_TX_3_PKT_MOD_STATS_PKT_COUNT] = { mvAsicReg_GUNIT_TX_3_PKT_MOD_STATS_PKT_COUNT, 0xA7DD8, 0xA7DD8, asicRW, 0x0000FFFF, 0, 0, 0, 0, "GPON GUNIT Pkt Mod Packet Count for TX 3"}, |
| [mvAsicReg_GUNIT_TX_4_PKT_MOD_STATS_PKT_COUNT] = { mvAsicReg_GUNIT_TX_4_PKT_MOD_STATS_PKT_COUNT, 0xA99D8, 0xA99D8, asicRW, 0x0000FFFF, 0, 0, 0, 0, "GPON GUNIT Pkt Mod Packet Count for TX 4"}, |
| [mvAsicReg_GUNIT_TX_5_PKT_MOD_STATS_PKT_COUNT] = { mvAsicReg_GUNIT_TX_5_PKT_MOD_STATS_PKT_COUNT, 0xA9DD8, 0xA9DD8, asicRW, 0x0000FFFF, 0, 0, 0, 0, "GPON GUNIT Pkt Mod Packet Count for TX 5"}, |
| [mvAsicReg_GUNIT_TX_6_PKT_MOD_STATS_PKT_COUNT] = { mvAsicReg_GUNIT_TX_6_PKT_MOD_STATS_PKT_COUNT, 0xAB9D8, 0xAB9D8, asicRW, 0x0000FFFF, 0, 0, 0, 0, "GPON GUNIT Pkt Mod Packet Count for TX 6"}, |
| [mvAsicReg_GUNIT_TX_7_PKT_MOD_STATS_PKT_COUNT] = { mvAsicReg_GUNIT_TX_7_PKT_MOD_STATS_PKT_COUNT, 0xABDD8, 0xABDD8, asicRW, 0x0000FFFF, 0, 0, 0, 0, "GPON GUNIT Pkt Mod Packet Count for TX 7"}, |
| |
| [mvAsicReg_PPv2_TX_PON_BYTE_CNT_INDEX] = { mvAsicReg_PPv2_TX_PON_BYTE_CNT_INDEX, 0xF8100, 0xF8100, asicRW, 0x0000007F, 0, 0, 0, 0, "Transmit PON Byte Counters Index (TPBC_INDEX)"}, |
| [mvAsicReg_PPv2_TX_PON_BYTE_CNT_CONFIG1_QUE_OVR] = { mvAsicReg_PPv2_TX_PON_BYTE_CNT_CONFIG1_QUE_OVR, 0xF8104, 0xF8104, asicRW, 0x000000FF, 0, 0, 0, 0, "Transmit PON Byte Counters Config1 (TPBC_CFG1)"}, |
| [mvAsicReg_PPv2_TX_PON_BYTE_CNT_CONFIG1_PKT_MOD] = { mvAsicReg_PPv2_TX_PON_BYTE_CNT_CONFIG1_PKT_MOD, 0xF8104, 0xF8104, asicRW, 0x000000FF, 8, 0, 0, 0, "Transmit PON Byte Counters Config1 (TPBC_CFG1)"}, |
| [mvAsicReg_PPv2_TX_PON_BYTE_CNT_CONFIG2_POST_FEC] = { mvAsicReg_PPv2_TX_PON_BYTE_CNT_CONFIG2_POST_FEC, 0xF8108, 0xF8108, asicRW, 0x0000FFFF, 0, 0, 0, 0, "Transmit PON Byte Counters Config2 (TPBC_CFG2)"}, |
| [mvAsicReg_PPv2_PON_FEC] = { mvAsicReg_PPv2_PON_FEC, 0xF0170, 0xF0170, asicRW, 0x00000001, 0, 0, 0, 0, "PON FEC (PON_FEC)"}, |
| |
| [mvAsicReg_C5000_BIT_1] = { mvAsicReg_C5000_BIT_1, 0xC5000, 0xC5000, asicRW, 0x00000001, 1, 0, 0, 0, "0xC5000 bitfield 1"}, |
| [mvAsicReg_C5008_BIT_0] = { mvAsicReg_C5008_BIT_0, 0xC5008, 0xC5008, asicRW, 0x00000001, 0, 0, 0, 0, "0xC5008 bitfield 0"}, |
| [mvAsicReg_C5008_BIT_3] = { mvAsicReg_C5008_BIT_3, 0xC5008, 0xC5008, asicRW, 0x00000001, 3, 0, 0, 0, "0xC5008 bitfield 3"}, |
| |
| [mvAsicReg_18900_BIT_14] = { mvAsicReg_18900_BIT_14, 0x18900, 0x18900, asicRW, 0x00000001, 14, 0, 0, 0, "0x18900 bitfield 14"}, |
| [mvAsicReg_18900_BIT_19] = { mvAsicReg_18900_BIT_19, 0x18900, 0x18900, asicRW, 0x00000001, 19, 0, 0, 0, "0x18900 bitfield 19"}, |
| [mvAsicReg_18900_BIT_21] = { mvAsicReg_18900_BIT_21, 0x18900, 0x18900, asicRW, 0x00000001, 14, 0, 0, 0, "0x18900 bitfield 21"}, |
| |
| [mvAsicReg_GMAC1_AUTONEG_SPEED] = { mvAsicReg_GMAC1_AUTONEG_SPEED, 0xC500C, 0xC500C, asicRW, 0x00000001, 7, 0, 0, 0, "GMAC1 autoneg speed"}, |
| [mvAsicReg_GMAC1_AUTONEG_FLOW_CONTROL_MODE] = { mvAsicReg_GMAC1_AUTONEG_FLOW_CONTROL_MODE, 0xC500C, 0xC500C, asicRW, 0x00000001, 9, 0, 0, 0, "GMAC1 autoneg flow control mode"}, |
| [mvAsicReg_GMAC1_AUTONEG_FLOW_CONTROL_ENABLE] = { mvAsicReg_GMAC1_AUTONEG_FLOW_CONTROL_ENABLE, 0xC500C, 0xC500C, asicRW, 0x00000001, 11, 0, 0, 0, "GMAC1 autoneg flow control enable"}, |
| [mvAsicReg_GMAC1_AUTONEG_DUPLEX_MODE] = { mvAsicReg_GMAC1_AUTONEG_DUPLEX_MODE, 0xC500C, 0xC500C, asicRW, 0x00000001, 12, 0, 0, 0, "GMAC1 autoneg duplex mode"}, |
| [mvAsicReg_GMAC1_AUTONEG_DUPLEX_ENABLE] = { mvAsicReg_GMAC1_AUTONEG_DUPLEX_ENABLE, 0xC500C, 0xC500C, asicRW, 0x00000001, 13, 0, 0, 0, "GMAC1 autoneg duplex enable"}, |
| |
| [mvAsicReg_PON_BYTE_CNT_IDX] = { mvAsicReg_PON_BYTE_CNT_IDX, 0xF8100, 0xF8100, asicRW, 0x0000003F, 0, 0, 0, 0, "PON byte counter index for T-CONT/LLID and queue"}, |
| [mvAsicReg_PON_BYTE_CNT_CFG] = { mvAsicReg_PON_BYTE_CNT_CFG, 0xF8104, 0xF8104, asicRW, 0x000000FF, 0, 0, 0, 0, "PON byte counter configuration"}, |
| }; |
| |
| /* Export Functions |
| ------------------------------------------------------------------------------*/ |
| |
| /* Local Functions |
| ------------------------------------------------------------------------------*/ |
| MV_STATUS asicOntGlbRegValidation(E_asicGlobalRegs reg, |
| S_asicGlobalRegDb **pRegEntry, |
| MV_U32 entry, |
| MV_U32 accessType); |
| |
| /******************************************************************************* |
| ** |
| ** asicOntGlbAddrSet |
| ** ____________________________________________________________________________ |
| ** |
| ** DESCRIPTION: Set ASIC global address |
| ** |
| ** PARAMETERS: MV_U32 address |
| ** |
| ** OUTPUTS: None |
| ** |
| ** RETURNS: MV_OK |
| ** |
| *******************************************************************************/ |
| MV_STATUS ponOnuGlbAddrSet(MV_U32 address) |
| { |
| ponOnuGlbAddr = address; |
| |
| return MV_OK; |
| } |
| |
| /******************************************************************************* |
| ** |
| ** asicOntGlbRegValidation |
| ** ____________________________________________________________________________ |
| ** |
| ** DESCRIPTION: Validate ASIC register |
| ** |
| ** PARAMETERS: E_asicGlobalRegs reg, |
| ** S_asicGlobalRegDb **pRegEntry |
| ** MV_U32 entry |
| ** MV_U32 accessType |
| ** |
| ** OUTPUTS: S_asicGlobalRegDb **pRegEntry |
| ** |
| ** RETURNS: MV_OK or error |
| ** |
| *******************************************************************************/ |
| MV_STATUS asicOntGlbRegValidation(E_asicGlobalRegs reg, |
| S_asicGlobalRegDb **pRegEntry, |
| MV_U32 entry, |
| MV_U32 accessType) |
| { |
| /* Check range */ |
| if (reg >= mvAsicReg_MAX_NUM_OF_REGS) |
| return MV_ERROR; |
| |
| /* Get the register entry in DB */ |
| *pRegEntry = &(asicGlbDb[reg]); |
| |
| /* Check DB coherency */ |
| if ((*pRegEntry)->enumVal != reg) |
| return MV_ERROR; |
| |
| /* Check access type */ |
| if (accessType == funcRegR) { /* Read */ |
| if ((*pRegEntry)->accessType == asicWO) |
| return MV_ERROR; |
| } else if (accessType == funcRegW) /* Write */ |
| if ((*pRegEntry)->accessType == asicRO) |
| return MV_ERROR; |
| |
| /* Check table entry - only valid for tables */ |
| if (entry > (*pRegEntry)->tblLength) |
| return MV_ERROR; |
| |
| /* Update the access count to this register */ |
| (*pRegEntry)->accessCount++; |
| |
| return MV_OK; |
| } |
| |
| /******************************************************************************* |
| ** |
| ** asicOntGlbRegRead |
| ** ____________________________________________________________________________ |
| ** |
| ** DESCRIPTION: Read the contents of MV_U32 ASIC register |
| ** |
| ** PARAMETERS: E_asicGlobalRegs reg |
| ** MV_U32 *pValue |
| ** MV_U32 entry |
| ** |
| ** OUTPUTS: a_value_p |
| ** |
| ** RETURNS: MV_OK or error |
| ** |
| *******************************************************************************/ |
| MV_STATUS asicOntGlbRegRead(E_asicGlobalRegs reg, |
| MV_U32 *pValue, |
| MV_U32 entry) |
| { |
| MV_STATUS rcode; |
| S_asicGlobalRegDb *pRegEntry = NULL; |
| MV_U32 regAddr; |
| MV_U32 baseAddr; |
| MV_U32 regValue; |
| |
| rcode = asicOntGlbRegValidation(reg, &pRegEntry, entry, funcRegR); |
| if (rcode != MV_OK) |
| return rcode; |
| |
| baseAddr = pRegEntry->address; |
| |
| /* Absolute register address */ |
| regAddr = (baseAddr + (pRegEntry->tblEntrySize * |
| entry * |
| sizeof(MV_U32))); |
| |
| /* Read the value of the register */ |
| regValue = MV_REG_READ(ponOnuGlbAddr + regAddr); |
| |
| *pValue = ((regValue >> (pRegEntry->shift)) & (pRegEntry->mask)); |
| |
| return MV_OK; |
| } |
| |
| /******************************************************************************* |
| ** |
| ** asicOntGlbRegWrite |
| ** ____________________________________________________________________________ |
| ** |
| ** DESCRIPTION: Write the contents of MV_U32 ASIC register |
| ** |
| ** PARAMETERS: E_asicGlobalRegs reg |
| ** MV_U32 value |
| ** MV_U32 entry |
| ** |
| ** OUTPUTS: None |
| ** |
| ** RETURNS: MV_OK or error |
| ** |
| *******************************************************************************/ |
| MV_STATUS asicOntGlbRegWrite(E_asicGlobalRegs reg, |
| MV_U32 value, |
| MV_U32 entry) |
| { |
| MV_STATUS rcode; |
| S_asicGlobalRegDb *pRegEntry = NULL; |
| MV_U32 regAddr; |
| MV_U32 tempValue; |
| MV_U32 baseAddr; |
| |
| rcode = asicOntGlbRegValidation(reg, &pRegEntry, entry, funcRegW); |
| if (rcode != MV_OK) |
| return rcode; |
| |
| baseAddr = pRegEntry->address; |
| |
| /* Absolute register address */ |
| regAddr = (baseAddr + (pRegEntry->tblEntrySize * |
| entry * |
| sizeof(MV_U32))); |
| |
| tempValue = MV_REG_READ(ponOnuGlbAddr + regAddr); |
| |
| /* Clear field */ |
| tempValue &= ~((pRegEntry->mask) << (pRegEntry->shift)); |
| |
| /* Set field */ |
| tempValue |= (((value) & (pRegEntry->mask)) << (pRegEntry->shift)); |
| |
| /* Write the value of the register */ |
| MV_REG_WRITE((ponOnuGlbAddr + regAddr), tempValue); |
| |
| return MV_OK; |
| } |
| |
| /******************************************************************************* |
| ** |
| ** asicOntGlbRegReadNoCheck |
| ** ____________________________________________________________________________ |
| ** |
| ** DESCRIPTION: Read fast (with no checkings) the contents of MV_U32 ASIC register |
| ** |
| ** PARAMETERS: E_asicGlobalRegs reg |
| ** MV_U32 *pValue |
| ** MV_U32 entry |
| ** |
| ** OUTPUTS: a_value_p |
| ** |
| ** RETURNS: MV_OK or error |
| ** |
| *******************************************************************************/ |
| MV_STATUS asicOntGlbRegReadNoCheck(E_asicGlobalRegs reg, |
| MV_U32 *pValue, |
| MV_U32 entry) |
| { |
| S_asicGlobalRegDb *pRegEntry = NULL; |
| MV_U32 regAddr; |
| MV_U32 baseAddr; |
| MV_U32 regValue; |
| |
| /* Check range */ |
| if (reg >= mvAsicReg_MAX_NUM_OF_REGS) |
| return MV_ERROR; |
| |
| /* Get the register entry in DB */ |
| pRegEntry = &(asicGlbDb[reg]); |
| |
| /* Update the access count to this register */ |
| pRegEntry->accessCount++; |
| |
| baseAddr = pRegEntry->address; |
| |
| /* Absolute register address */ |
| regAddr = (baseAddr + (pRegEntry->tblEntrySize * |
| entry * |
| sizeof(MV_U32))); |
| |
| /* Read the value of the register */ |
| regValue = MV_REG_READ(ponOnuGlbAddr + regAddr); |
| |
| *pValue = ((regValue >> (pRegEntry->shift)) & (pRegEntry->mask)); |
| |
| return MV_OK; |
| } |
| |
| /******************************************************************************* |
| ** |
| ** asicOntGlbRegWriteNoCheck |
| ** ____________________________________________________________________________ |
| ** |
| ** DESCRIPTION: Write fast (with no checkings) the contents of MV_U32 ASIC register |
| ** |
| ** PARAMETERS: E_asicGlobalRegs reg |
| ** MV_U32 value |
| ** MV_U32 entry |
| ** |
| ** OUTPUTS: None |
| ** |
| ** RETURNS: MV_OK or error |
| ** |
| *******************************************************************************/ |
| MV_STATUS asicOntGlbRegWriteNoCheck(E_asicGlobalRegs reg, |
| MV_U32 value, |
| MV_U32 entry) |
| { |
| S_asicGlobalRegDb *pRegEntry = NULL; |
| MV_U32 regAddr; |
| MV_U32 tempValue; |
| MV_U32 baseAddr; |
| |
| /* Check range */ |
| if (reg >= mvAsicReg_MAX_NUM_OF_REGS) |
| return MV_ERROR; |
| |
| /* Get the register entry in DB */ |
| pRegEntry = &(asicGlbDb[reg]); |
| |
| /* Update the access count to this register */ |
| pRegEntry->accessCount++; |
| |
| baseAddr = pRegEntry->address; |
| |
| /* Absolute register address */ |
| regAddr = (baseAddr + (pRegEntry->tblEntrySize * |
| entry * |
| sizeof(MV_U32))); |
| |
| tempValue = MV_REG_READ(ponOnuGlbAddr + regAddr); |
| |
| /* Clear field */ |
| tempValue &= ~((pRegEntry->mask) << (pRegEntry->shift)); |
| |
| /* Set field */ |
| tempValue |= (((value) & (pRegEntry->mask)) << (pRegEntry->shift)); |
| |
| /* Write the value of the register */ |
| MV_REG_WRITE((ponOnuGlbAddr + regAddr), tempValue); |
| |
| return MV_OK; |
| } |
| |
| /******************************************************************************* |
| ** |
| ** asicOntGlbSerdesRegWrite |
| ** ____________________________________________________________________________ |
| ** |
| ** DESCRIPTION: Write the contents of MV_U32 ASIC register |
| ** |
| ** PARAMETERS: E_asicGlobalRegs reg |
| ** MV_U32 value |
| ** MV_U32 entry |
| ** |
| ** OUTPUTS: None |
| ** |
| ** RETURNS: MV_OK or error |
| ** |
| *******************************************************************************/ |
| MV_STATUS asicOntMiscRegWrite(E_asicGlobalRegs reg, |
| MV_U32 value, |
| MV_U32 entry) |
| { |
| MV_STATUS rcode; |
| S_asicGlobalRegDb *pRegEntry = NULL; |
| MV_U32 regAddr; |
| MV_U32 tempValue; |
| MV_U32 baseAddr; |
| |
| rcode = asicOntGlbRegValidation(reg, &pRegEntry, entry, funcRegW); |
| if (rcode != MV_OK) |
| return rcode; |
| |
| baseAddr = pRegEntry->address; |
| |
| /* Absolute register address */ |
| regAddr = (baseAddr + (pRegEntry->tblEntrySize * |
| entry * |
| sizeof(MV_U32))); |
| |
| tempValue = MV_REG_READ(regAddr); |
| |
| /* Clear field */ |
| tempValue &= ~((pRegEntry->mask) << (pRegEntry->shift)); |
| |
| /* Set field */ |
| tempValue |= (((value) & (pRegEntry->mask)) << (pRegEntry->shift)); |
| |
| /* Write the value of the register */ |
| MV_REG_WRITE(regAddr, tempValue); |
| |
| return MV_OK; |
| } |
| |
| /******************************************************************************* |
| ** |
| ** asicOntMiscRegRead |
| ** ____________________________________________________________________________ |
| ** |
| ** DESCRIPTION: Read the contents of MV_U32 ASIC register |
| ** |
| ** PARAMETERS: E_asicGlobalRegs reg |
| ** MV_U32 *pValue |
| ** MV_U32 entry |
| ** |
| ** OUTPUTS: a_value_p |
| ** |
| ** RETURNS: MV_OK or error |
| ** |
| *******************************************************************************/ |
| MV_STATUS asicOntMiscRegRead(E_asicGlobalRegs reg, |
| MV_U32 *pValue, |
| MV_U32 entry) |
| { |
| MV_STATUS rcode; |
| S_asicGlobalRegDb *pRegEntry = NULL; |
| MV_U32 regAddr; |
| MV_U32 baseAddr; |
| MV_U32 regValue; |
| |
| rcode = asicOntGlbRegValidation(reg, &pRegEntry, entry, funcRegR); |
| if (rcode != MV_OK) |
| return rcode; |
| |
| baseAddr = pRegEntry->address; |
| |
| /* Absolute register address */ |
| regAddr = (baseAddr + (pRegEntry->tblEntrySize * |
| entry * |
| sizeof(MV_U32))); |
| |
| /* Read the value of the register */ |
| regValue = MV_REG_READ(regAddr); |
| |
| *pValue = ((regValue >> (pRegEntry->shift)) & (pRegEntry->mask)); |
| |
| return MV_OK; |
| } |
| |
| /******************************************************************************* |
| ** |
| ** asicOntMiscRegAddressGet |
| ** ____________________________________________________________________________ |
| ** |
| ** DESCRIPTION: Get the address of MV_U32 ASIC register |
| ** |
| ** PARAMETERS: E_asicGlobalRegs reg |
| ** MV_U32 value |
| ** MV_U32 entry |
| ** |
| ** OUTPUTS: None |
| ** |
| ** RETURNS: MV_OK or error |
| ** |
| *******************************************************************************/ |
| MV_STATUS asicOntMiscRegAddressGet(E_asicGlobalRegs reg, |
| MV_U32 entry, |
| MV_U32 *regAddr) |
| { |
| MV_STATUS rcode; |
| S_asicGlobalRegDb *pRegEntry = NULL; |
| MV_U32 baseAddr; |
| |
| rcode = asicOntGlbRegValidation(reg, &pRegEntry, entry, funcRegW); |
| if (rcode != MV_OK) |
| return rcode; |
| |
| baseAddr = pRegEntry->address; |
| |
| /* Absolute register address */ |
| *regAddr = (baseAddr + (pRegEntry->tblEntrySize * |
| entry * |
| sizeof(MV_U32))); |
| |
| return MV_OK; |
| } |