| /******************************************************************************* |
| Copyright (C) Marvell International Ltd. and its affiliates |
| |
| This software file (the "File") is owned and distributed by Marvell |
| International Ltd. and/or its affiliates ("Marvell") under the following |
| alternative licensing terms. Once you have made an election to distribute the |
| File under one of the following license alternatives, please (i) delete this |
| introductory statement regarding license alternatives, (ii) delete the two |
| license alternatives that you have not elected to use and (iii) preserve the |
| Marvell copyright notice above. |
| |
| ******************************************************************************** |
| Marvell Commercial License Option |
| |
| If you received this File from Marvell and you have entered into a commercial |
| license agreement (a "Commercial License") with Marvell, the File is licensed |
| to you under the terms of the applicable Commercial License. |
| |
| ******************************************************************************** |
| Marvell GPL License Option |
| |
| If you received this File from Marvell, you may opt to use, redistribute and/or |
| modify this File in accordance with the terms and conditions of the General |
| Public License Version 2, June 1991 (the "GPL License"), a copy of which is |
| available along with the File in the license.txt file or by writing to the Free |
| Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or |
| on the worldwide web at http://www.gnu.org/licenses/gpl.txt. |
| |
| THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED |
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY |
| DISCLAIMED. The GPL License provides additional details about this warranty |
| disclaimer. |
| ******************************************************************************** |
| Marvell BSD License Option |
| |
| If you received this File from Marvell, you may opt to use, redistribute and/or |
| modify this File under the following licensing terms. |
| Redistribution and use in source and binary forms, with or without modification, |
| are permitted provided that the following conditions are met: |
| |
| * Redistributions of source code must retain the above copyright notice, |
| this list of conditions and the following disclaimer. |
| |
| * Redistributions in binary form must reproduce the above copyright |
| notice, this list of conditions and the following disclaimer in the |
| documentation and/or other materials provided with the distribution. |
| |
| * Neither the name of Marvell nor the names of its contributors may be |
| used to endorse or promote products derived from this software without |
| specific prior written permission. |
| |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR |
| ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
| ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| *******************************************************************************/ |
| |
| #ifndef __MV_PP2_GBE_REGS_H__ |
| #define __MV_PP2_GBE_REGS_H__ |
| |
| #ifdef CONFIG_ARCH_MVEBU |
| #include "mvNetConfig.h" |
| #else |
| #include "mvSysEthConfig.h" |
| #endif |
| |
| /************************** PPv2 HW Configuration ***********************/ |
| |
| /************************** TX General Registers ******************************/ |
| #define MV_PP2_TX_SNOOP_REG (MV_PP2_REG_BASE + 0x8800) |
| #define MV_PP2_TX_FIFO_THRESH_REG (MV_PP2_REG_BASE + 0x8804) |
| |
| /* Indirect access */ |
| #define MV_PP2_TX_PKT_LEN_IDX_REG (MV_PP2_REG_BASE + 0x8808) |
| #define MV_PP2_TX_PKT_LEN_CHANGE_REG (MV_PP2_REG_BASE + 0x880C) |
| |
| #define MV_PP2_TX_PORT_FLUSH_REG (MV_PP2_REG_BASE + 0x8810) |
| |
| #define MV_PP2_TX_PORT_FLUSH_OFFS 0 |
| #define MV_PP2_TX_PORT_FLUSH_BITS 7 |
| #define MV_PP2_TX_PORT_FLUSH_ALL_MASK (((1 << MV_PP2_TX_PORT_FLUSH_BITS) - 1) << MV_PP2_TX_PORT_FLUSH_OFFS) |
| #define MV_PP2_TX_PORT_FLUSH_MASK(p) ((1 << (p)) << MV_PP2_TX_PORT_FLUSH_OFFS) |
| |
| /* Registers per egress port */ |
| #define MV_PP2_TXP_BAD_CRC_CNTR_REG(txp) (MV_PP2_REG_BASE + 0x8900) |
| #define MV_PP2_TXP_DROP_CNTR_REG(txp) (MV_PP2_REG_BASE + 0x8980) |
| #define MV_PP2_TXP_DEQUEUE_THRESH_REG(txp) (MV_PP2_REG_BASE + 0x88A0) |
| |
| /************************** RX Fifo Registers ******************************/ |
| #define MV_PP2_RX_DATA_FIFO_SIZE_REG(port) (MV_PP2_REG_BASE + 0x00 + 4 * (port)) |
| #define MV_PP2_RX_ATTR_FIFO_SIZE_REG(port) (MV_PP2_REG_BASE + 0x20 + 4 * (port)) |
| #define MV_PP2_RX_MIN_PKT_SIZE_REG (MV_PP2_REG_BASE + 0x60) |
| #define MV_PP2_RX_FIFO_INIT_REG (MV_PP2_REG_BASE + 0x64) |
| |
| /************************** Top Reg file ******************************/ |
| #define MV_PP2_MH_REG(port) (MV_PP2_REG_BASE + 0x5040 + 4 * (port)) |
| |
| #define MV_PP2_MH_EN_OFFS 0 |
| #define MV_PP2_MH_EN_MASK (1 << MV_PP2_MH_EN_OFFS) |
| |
| #define MV_PP2_DSA_EN_OFFS 4 |
| #define MV_PP2_DSA_EN_MASK (0x3 << MV_PP2_DSA_EN_OFFS) |
| #define MV_PP2_DSA_DISABLE 0 |
| #define MV_PP2_DSA_NON_EXTENDED (0x1 << MV_PP2_DSA_EN_OFFS) |
| #define MV_PP2_DSA_EXTENDED (0x2 << MV_PP2_DSA_EN_OFFS) |
| |
| /************************** RX DMA Top Registers ******************************/ |
| #define MV_PP2_RX_CTRL_REG(port) (MV_PP2_REG_BASE + 0x140 + 4 * (port)) |
| |
| #define MV_PP2_POOL_BUF_SIZE_REG(pool) (MV_PP2_REG_BASE + 0x180 + 4 * (pool)) |
| |
| #define MV_PP2_POOL_BUF_SIZE_OFFSET 5 |
| #define MV_PP2_POOL_BUF_SIZE_MASK (0xFFFE) |
| /*-------------------------------------------------------------------------------*/ |
| |
| |
| #define MV_PP2_RX_STATUS (MV_PP2_REG_BASE + 0x174) |
| |
| #define MV_PP2_DISABLE_IN_PROG_OFFS 0 |
| #define MV_PP2_DISABLE_IN_PROG_MASK (0x1 << MV_PP2_DISABLE_IN_PROG_OFFS) |
| /*-------------------------------------------------------------------------------*/ |
| |
| #define MV_PP2_RXQ_CONFIG_REG(rxq) (MV_PP2_REG_BASE + 0x800 + 4 * (rxq)) |
| |
| #define MV_PP2_SNOOP_PKT_SIZE_OFFS 0 |
| #define MV_PP2_SNOOP_PKT_SIZE_MASK (0x1FF << MV_PP2_SNOOP_PKT_SIZE_OFFS) |
| |
| #define MV_PP2_SNOOP_BUF_HDR_OFFS 9 |
| #define MV_PP2_SNOOP_BUF_HDR_MASK (0x1 << MV_PP2_SNOOP_BUF_HDR_OFFS) |
| |
| #define MV_PP2_L2_DEPOSIT_PKT_SIZE_OFFS 12 |
| #define MV_PP2_L2_DEPOSIT_PKT_SIZE_MASK (0xF << MV_PP2_L2_DEPOSIT_PKT_SIZE_OFFS) |
| |
| #define MV_PP2_L2_DEPOSIT_BUF_HDR_OFFS 16 |
| #define MV_PP2_L2_DEPOSIT_BUF_HDR_MASK (0x1 << MV_PP2_L2_DEPOSIT_BUF_HDR_OFFS) |
| |
| #define MV_PP2_RXQ_POOL_SHORT_OFFS 20 |
| #define MV_PP2_RXQ_POOL_SHORT_MASK (0x7 << MV_PP2_RXQ_POOL_SHORT_OFFS) |
| |
| #define MV_PP2_RXQ_POOL_LONG_OFFS 24 |
| #define MV_PP2_RXQ_POOL_LONG_MASK (0x7 << MV_PP2_RXQ_POOL_LONG_OFFS) |
| |
| #define MV_PP2_RXQ_PACKET_OFFSET_OFFS 28 |
| #define MV_PP2_RXQ_PACKET_OFFSET_MASK (0x7 << MV_PP2_RXQ_PACKET_OFFSET_OFFS) |
| |
| #define MV_PP2_RXQ_DISABLE_BIT 31 |
| #define MV_PP2_RXQ_DISABLE_MASK (0x1 << MV_PP2_RXQ_DISABLE_BIT) |
| /*-------------------------------------------------------------------------------*/ |
| |
| #define MV_PP2_HWF_TXQ_CONFIG_REG(txq) (MV_PP2_REG_BASE + 0xc00 + 4 * (txq)) |
| |
| #define MV_PP2_HWF_TXQ_POOL_SHORT_OFFS 0 |
| #define MV_PP2_HWF_TXQ_POOL_SHORT_MASK (0x7 << MV_PP2_HWF_TXQ_POOL_SHORT_OFFS) |
| |
| #define MV_PP2_HWF_TXQ_POOL_LONG_OFFS 4 |
| #define MV_PP2_HWF_TXQ_POOL_LONG_MASK (0x7 << MV_PP2_HWF_TXQ_POOL_LONG_OFFS) |
| |
| #define MV_PP2_HWF_TXQ_DISABLE_BIT 31 |
| #define MV_PP2_HWF_TXQ_DISABLE_MASK (0x1 << MV_PP2_HWF_TXQ_DISABLE_BIT) |
| /*-------------------------------------------------------------------------------*/ |
| |
| #define MV_PP2_RX_GEMPID_SRC_OFFS 8 |
| #define MV_PP2_RX_GEMPID_SRC_MASK (0x7 << MV_PP2_RX_GEMPID_SRC_OFFS) |
| |
| #define MV_PP2_RX_LOW_LATENCY_PKT_SIZE_OFFS 16 |
| #define MV_PP2_RX_LOW_LATENCY_PKT_SIZE_BITS 12 |
| #define MV_PP2_RX_LOW_LATENCY_PKT_SIZE_MAX ((1 << MV_PP2_RX_LOW_LATENCY_PKT_SIZE_BITS) - 1) |
| #define MV_PP2_RX_LOW_LATENCY_PKT_SIZE_MASK(s) (((s) & MV_PP2_RX_LOW_LATENCY_PKT_SIZE_MAX) << \ |
| MV_PP2_RX_LOW_LATENCY_PKT_SIZE_OFFS) |
| |
| #define MV_PP2_RX_DROP_ON_CSUM_ERR_BIT 30 |
| #define MV_PP2_RX_DROP_ON_CSUM_ERR_MASK (1 << MV_PP2_RX_DROP_ON_CSUM_ERR_BIT) |
| |
| #define MV_PP2_RX_USE_PSEUDO_FOR_CSUM_BIT 31 |
| #define MV_PP2_RX_USE_PSEUDO_FOR_CSUM_MASK (1 << MV_PP2_RX_USE_PSEUDO_FOR_CSUM_BIT) |
| /*-------------------------------------------------------------------------------*/ |
| |
| /************************** Descriptor Manager Top Registers ******************************/ |
| |
| #define MV_PP2_RXQ_NUM_REG (MV_PP2_REG_BASE + 0x2040) |
| |
| #define MV_PP2_RXQ_NUM_OFFSET 0 |
| #define MV_PP2_RXQ_NUM_MASK (0xFF << MV_PP2_RXQ_NUM_OFFSET) |
| /*-------------------------------------------------------------------------------*/ |
| #define MV_PP2_RXQ_DESC_ADDR_REG (MV_PP2_REG_BASE + 0x2044) |
| |
| #define MV_PP2_RXQ_DESC_SIZE_REG (MV_PP2_REG_BASE + 0x2048) |
| |
| #define MV_PP2_RXQ_DESC_SIZE_OFFSET 4 |
| #define MV_PP2_RXQ_DESC_SIZE_MASK (0x3FF << MV_PP2_RXQ_DESC_SIZE_OFFSET) |
| |
| #define MV_PP2_RXQ_L2_DEPOSIT_OFFSET 16 |
| #define MV_PP2_RXQ_L2_DEPOSIT_MASK (0x1 << MV_PP2_RXQ_L2_DEPOSIT_OFFSET) |
| /*-------------------------------------------------------------------------------*/ |
| #define MV_PP2_RXQ_STATUS_UPDATE_REG(rxq) (MV_PP2_REG_BASE + 0x3000 + 4 * (rxq)) |
| |
| #define MV_PP2_RXQ_NUM_PROCESSED_OFFSET 0 |
| #define MV_PP2_RXQ_NUM_PROCESSED_MASK (0x3FFF << MV_PP2_RXQ_NUM_PROCESSED_OFFSET) |
| #define MV_PP2_RXQ_NUM_NEW_OFFSET 16 |
| #define MV_PP2_RXQ_NUM_NEW_MASK (0x3FFF << MV_PP2_RXQ_NUM_NEW_OFFSET) |
| /*-------------------------------------------------------------------------------*/ |
| #define MV_PP2_RXQ_STATUS_REG(rxq) (MV_PP2_REG_BASE + 0x3400 + 4 * (rxq)) |
| |
| #define MV_PP2_RXQ_OCCUPIED_OFFSET 0 |
| #define MV_PP2_RXQ_OCCUPIED_MASK (0x3FFF << MV_PP2_RXQ_OCCUPIED_OFFSET) |
| #define MV_PP2_RXQ_NON_OCCUPIED_OFFSET 16 |
| #define MV_PP2_RXQ_NON_OCCUPIED_MASK (0x3FFF << MV_PP2_RXQ_NON_OCCUPIED_OFFSET) |
| /*-------------------------------------------------------------------------------*/ |
| #define MV_PP2_RXQ_THRESH_REG (MV_PP2_REG_BASE + 0x204c) |
| |
| #define MV_PP2_OCCUPIED_THRESH_OFFSET 0 |
| #define MV_PP2_OCCUPIED_THRESH_MASK (0x3FFF << MV_PP2_OCCUPIED_THRESH_OFFSET) |
| |
| #define MV_PP2_NON_OCCUPIED_THRESH_OFFSET 16 |
| #define MV_PP2_NON_OCCUPIED_THRESH_MASK (0x3FFF << MV_PP2_NON_OCCUPIED_THRESH_OFFSET) |
| /*-------------------------------------------------------------------------------*/ |
| |
| #define MV_PP2_RXQ_INDEX_REG (MV_PP2_REG_BASE + 0x2050) |
| /*-------------------------------------------------------------------------------*/ |
| |
| /*-------------------------------------------------------------------------------*/ |
| #define MV_PP2_TXQ_NUM_REG (MV_PP2_REG_BASE + 0x2080) |
| |
| #define MV_PP2_TXQ_NUM_OFFSET 0 |
| #define MV_PP2_TXQ_NUM_MASK (0xFF << MV_PP2_RXQ_NUM_OFFSET) |
| /*-------------------------------------------------------------------------------*/ |
| #define MV_PP2_TXQ_DESC_ADDR_REG (MV_PP2_REG_BASE + 0x2084) |
| |
| #define MV_PP2_TXQ_DESC_SIZE_REG (MV_PP2_REG_BASE + 0x2088) |
| |
| #define MV_PP2_TXQ_DESC_SIZE_OFFSET 4 |
| #define MV_PP2_TXQ_DESC_SIZE_MASK (0x3FF << MV_PP2_TXQ_DESC_SIZE_OFFSET) |
| /*-------------------------------------------------------------------------------*/ |
| #define MV_PP2_TXQ_DESC_HWF_SIZE_REG (MV_PP2_REG_BASE + 0x208c) |
| |
| #define MV_PP2_TXQ_DESC_HWF_SIZE_OFFSET 4 |
| #define MV_PP2_TXQ_DESC_HWF_SIZE_MASK (0x3FF << MV_PP2_TXQ_DESC_HWF_SIZE_OFFSET) |
| /*-------------------------------------------------------------------------------*/ |
| |
| /* Aggregated (per CPU) TXQ - WO */ |
| #define MV_PP2_AGGR_TXQ_UPDATE_REG (MV_PP2_REG_BASE + 0x2090) |
| /*-------------------------------------------------------------------------------*/ |
| |
| /* Each CPU has own copy */ |
| #define MV_PP2_TXQ_THRESH_REG (MV_PP2_REG_BASE + 0x2094) |
| |
| #define MV_PP2_TRANSMITTED_THRESH_OFFSET 16 |
| #define MV_PP2_TRANSMITTED_THRESH_MASK (0x3FFF << MV_PP2_TRANSMITTED_THRESH_OFFSET) |
| /*-------------------------------------------------------------------------------*/ |
| |
| #define MV_PP2_TXQ_INDEX_REG (MV_PP2_REG_BASE + 0x2098) |
| /*-------------------------------------------------------------------------------*/ |
| |
| #define MV_PP2_TXQ_PREF_BUF_REG (MV_PP2_REG_BASE + 0x209c) |
| |
| #define MV_PP2_PREF_BUF_PTR_OFFS 0 |
| #define MV_PP2_PREF_BUF_PTR_MASK (0xFFF << MV_PP2_PREF_BUF_PTR_OFFS) |
| #define MV_PP2_PREF_BUF_PTR(desc) (((desc) << MV_PP2_PREF_BUF_PTR_OFFS) & MV_PP2_PREF_BUF_PTR_MASK) |
| |
| #define MV_PP2_PREF_BUF_SIZE_OFFS 12 |
| #define MV_PP2_PREF_BUF_SIZE_MASK (0x7 << MV_PP2_PREF_BUF_SIZE_OFFS) |
| #define MV_PP2_PREF_BUF_SIZE_NONE (0 << MV_PP2_PREF_BUF_SIZE_OFFS) |
| #define MV_PP2_PREF_BUF_SIZE_1 (1 << MV_PP2_PREF_BUF_SIZE_OFFS) |
| #define MV_PP2_PREF_BUF_SIZE_2 (2 << MV_PP2_PREF_BUF_SIZE_OFFS) |
| #define MV_PP2_PREF_BUF_SIZE_4 (3 << MV_PP2_PREF_BUF_SIZE_OFFS) |
| #define MV_PP2_PREF_BUF_SIZE_8 (4 << MV_PP2_PREF_BUF_SIZE_OFFS) |
| #define MV_PP2_PREF_BUF_SIZE_16 (5 << MV_PP2_PREF_BUF_SIZE_OFFS) |
| #define MV_PP2_PREF_BUF_SIZE_32 (6 << MV_PP2_PREF_BUF_SIZE_OFFS) |
| #define MV_PP2_PREF_BUF_SIZE_64 (7 << MV_PP2_PREF_BUF_SIZE_OFFS) |
| |
| #define MV_PP2_PREF_BUF_THRESH_OFFS 17 |
| #define MV_PP2_PREF_BUF_THRESH_MASK (0xF << MV_PP2_PREF_BUF_THRESH_OFFS) |
| #define MV_PP2_PREF_BUF_THRESH(val) ((val) << MV_PP2_PREF_BUF_THRESH_OFFS) |
| |
| /* new field for PPV2.1 - A0 only */ |
| #define MV_PP2_TXQ_DRAIN_EN_BIT 31 |
| #define MV_PP2_TXQ_DRAIN_EN_MASK (1 << MV_PP2_TXQ_DRAIN_EN_BIT) |
| /*-------------------------------------------------------------------------------*/ |
| |
| #define MV_PP2_TXQ_PENDING_REG (MV_PP2_REG_BASE + 0x20a0) |
| |
| #define MV_PP2_TXQ_PENDING_OFFSET 0 |
| #define MV_PP2_TXQ_PENDING_MASK (0x3FFF << MV_PP2_TXQ_PENDING_OFFSET) |
| |
| #define MV_PP2_TXQ_RESERVED_OFFSET 16 |
| #define MV_PP2_TXQ_RESERVED_MASK (0x3FFF << MV_PP2_TXQ_RESERVED_OFFSET) |
| /*-------------------------------------------------------------------------------*/ |
| |
| /* |
| ppv2.1 field MV_PP2_TXQ_HWF_PENDING_OFFSET changed to MV_PP2_TXQ_RESERVED_DESC_OFFSET |
| MAS 3.16 |
| */ |
| #define MV_PP2_TXQ_HWF_PENDING_OFFSET 16 |
| #define MV_PP2_TXQ_HWF_PENDING_MASK (0x3FFF << MV_PP2_TXQ_HWF_PENDING_OFFSET) |
| |
| #define MV_PP2_TXQ_RSVD_DESC_OFFSET 16 |
| #define MV_PP2_TXQ_RSVD_DESC_MASK (0x3FFF << MV_PP2_TXQ_RSVD_DESC_MASK) |
| |
| /*-------------------------------------------------------------------------------*/ |
| |
| #define MV_PP2_TXQ_INT_STATUS_REG (MV_PP2_REG_BASE + 0x20a4) |
| /*-------------------------------------------------------------------------------*/ |
| /* |
| ppv2.1- new register 0x20b0, not exist ip ppv2.0 |
| MAS 3.16 |
| */ |
| #define MV_PP2_TXQ_RSVD_REQ_REG (MV_PP2_REG_BASE + 0x20b0) |
| |
| #define MV_PP2_TXQ_RSVD_REQ_DESC_OFFSET 0 |
| #define MV_PP2_TXQ_RSVD_REQ_DESC_MASK (0x3FFF << MV_PP2_TXQ_RSVD_REQ_DESC_OFFSET) |
| |
| #define MV_PP2_TXQ_RSVD_REQ_Q_OFFSET 16 |
| #define MV_PP2_TXQ_RSVD_REQ_Q_MASK (0xFF << MV_PP2_TXQ_RSVD_REQ_Q_OFFSET) |
| /*-------------------------------------------------------------------------------*/ |
| /* |
| ppv2.1- new register 0x20b4, not exist ip ppv2.0 |
| MAS 3.16 |
| */ |
| #define MV_PP2_TXQ_RSVD_RSLT_REG (MV_PP2_REG_BASE + 0x20b4) |
| |
| #define MV_PP2_TXQ_RSVD_RSLT_OFFSET 0 |
| #define MV_PP2_TXQ_RSVD_RSLT_MASK (0x3FFF << MV_PP2_TXQ_RSVD_RSLT_OFFSET) |
| |
| /*-------------------------------------------------------------------------------*/ |
| /* |
| ppv2.1- new register 0x20b8, not exist ip ppv2.0 |
| MAS 3.22 |
| */ |
| #define MV_PP2_TXQ_RSVD_CLR_REG (MV_PP2_REG_BASE + 0x20b8) |
| |
| #define MV_PP2_TXQ_RSVD_CLR_Q_OFFSET 16 |
| #define MV_PP2_TXQ_RSVD_CLR_Q_MASK (0xFF << MV_PP2_TXQ_RSVD_CLR_Q_OFFSET) |
| /*-------------------------------------------------------------------------------*/ |
| |
| /* Direct access - per TXQ, per CPU */ |
| #define MV_PP2_TXQ_SENT_REG(txq) (MV_PP2_REG_BASE + 0x3c00 + 4 * (txq)) |
| |
| #define MV_PP2_TRANSMITTED_COUNT_OFFSET 16 |
| #define MV_PP2_TRANSMITTED_COUNT_MASK (0x3FFF << MV_PP2_TRANSMITTED_COUNT_OFFSET) |
| /*-------------------------------------------------------------------------------*/ |
| |
| #define MV_PP2_AGGR_TXQ_DESC_ADDR_REG(cpu) (MV_PP2_REG_BASE + 0x2100 + 4 * (cpu)) |
| |
| #define MV_PP2_AGGR_TXQ_DESC_SIZE_REG(cpu) (MV_PP2_REG_BASE + 0x2140 + 4 * (cpu)) |
| #define MV_PP2_AGGR_TXQ_DESC_SIZE_OFFSET 4 |
| #define MV_PP2_AGGR_TXQ_DESC_SIZE_MASK (0x3FF << MV_PP2_AGGR_TXQ_DESC_SIZE_OFFSET) |
| /*-------------------------------------------------------------------------------*/ |
| #define MV_PP2_AGGR_TXQ_STATUS_REG(cpu) (MV_PP2_REG_BASE + 0x2180 + 4 * (cpu)) |
| |
| #define MV_PP2_AGGR_TXQ_PENDING_OFFSET 0 |
| #define MV_PP2_AGGR_TXQ_PENDING_MASK (0x3FFF << MV_PP2_AGGR_TXQ_PENDING_OFFSET) |
| /*-------------------------------------------------------------------------------*/ |
| |
| #define MV_PP2_AGGR_TXQ_INDEX_REG(cpu) (MV_PP2_REG_BASE + 0x21c0 + 4 * (cpu)) |
| /*-------------------------------------------------------------------------------*/ |
| |
| /* Registers for HWF to SWF switching */ |
| #define MV_PP2_FWD_SWITCH_FLOW_ID_REG (MV_PP2_REG_BASE + 0x2200) |
| |
| #define MV_PP2_FWD_SWITCH_CTRL_REG (MV_PP2_REG_BASE + 0x2204) |
| |
| #define MV_PP2_FWD_SWITCH_TXQ_OFFS 0 |
| #define MV_PP2_FWD_SWITCH_TXQ_MAX 255 |
| #define MV_PP2_FWD_SWITCH_TXQ_MASK (255 << MV_PP2_FWD_SWITCH_TXQ_OFFS) |
| #define MV_PP2_FWD_SWITCH_TXQ_VAL(txq) (((txq) << MV_PP2_FWD_SWITCH_TXQ_OFFS) & \ |
| MV_PP2_FWD_SWITCH_TXQ_MASK) |
| |
| #define MV_PP2_FWD_SWITCH_RXQ_OFFS 8 |
| #define MV_PP2_FWD_SWITCH_RXQ_MAX 255 |
| #define MV_PP2_FWD_SWITCH_RXQ_MASK (255 << MV_PP2_FWD_SWITCH_RXQ_OFFS) |
| #define MV_PP2_FWD_SWITCH_RXQ_VAL(rxq) (((rxq) << MV_PP2_FWD_SWITCH_RXQ_OFFS) & \ |
| MV_PP2_FWD_SWITCH_RXQ_MASK) |
| |
| #define MV_PP2_FWD_SWITCH_TIMEOUT_OFFS 16 |
| #define MV_PP2_FWD_SWITCH_TIMEOUT_BITS 10 |
| #define MV_PP2_FWD_SWITCH_TIMEOUT_MAX ((1 << MV_PP2_FWD_SWITCH_TIMEOUT_BITS) - 1) |
| #define MV_PP2_FWD_SWITCH_TIMEOUT_MASK (MV_PP2_FWD_SWITCH_TIMEOUT_MAX << MV_PP2_FWD_SWITCH_TIMEOUT_OFFS) |
| #define MV_PP2_FWD_SWITCH_TIMEOUT_VAL(time) (((time) << MV_PP2_FWD_SWITCH_TIMEOUT_OFFS) & \ |
| MV_PP2_FWD_SWITCH_TIMEOUT_MASK) |
| |
| #define MV_PP2_FWD_SWITCH_STATUS_REG (MV_PP2_REG_BASE + 0x2208) |
| |
| #define MV_PP2_FWD_SWITCH_STATE_OFFS 0 |
| #define MV_PP2_FWD_SWITCH_STATE_MASK (0x7 << MV_PP2_FWD_SWITCH_STATE_OFFS) |
| |
| #define MV_PP2_FWD_SWITCH_STATUS_OFFS 4 |
| #define MV_PP2_FWD_SWITCH_STATUS_MASK (0x3 << MV_PP2_FWD_SWITCH_STATUS_OFFS) |
| |
| #define MV_PP2_FWD_SWITCH_TIMER_OFFS 16 |
| #define MV_PP2_FWD_SWITCH_TIMER_BITS 10 |
| #define MV_PP2_FWD_SWITCH_TIMER_MAX ((1 << MV_PP2_FWD_SWITCH_TIMER_BITS) - 1) |
| #define MV_PP2_FWD_SWITCH_TIMER_MASK (MV_PP2_FWD_SWITCH_TIMER_MAX << MV_PP2_FWD_SWITCH_TIMER_OFFS) |
| /*-------------------------------------------------------------------------------*/ |
| |
| /* Unused registers */ |
| #define MV_PP2_INTERNAL_BUF_CTRL_REG (MV_PP2_REG_BASE + 0x2220) |
| |
| /* No CPU access to Physcal TXQ descriptors, so Snoop doesn't needed */ |
| #define MV_PP2_TX_DESC_SNOOP_REG (MV_PP2_REG_BASE + 0x2224) |
| /*-------------------------------------------------------------------------------*/ |
| |
| |
| /************************** Interrupt Cause and Mask registers ******************/ |
| #define MV_PP2_ISR_RX_THRESHOLD_REG(port) (MV_PP2_REG_BASE + 0x5200 + 4 * (port)) |
| |
| #define MV_PP2_ISR_RX_THRESHOLD_OFFS 4 |
| #define MV_PP2_ISR_RX_THRESHOLD_MASK 0xFFFFF0 |
| |
| #define MV_PP2_ISR_RXQ_GROUP_REG(port) (MV_PP2_REG_BASE + 0x5400 + 4 * (port)) |
| |
| #define MV_PP2_ISR_ENABLE_REG(port) (MV_PP2_REG_BASE + 0x5420 + 4 * (port)) |
| |
| #define MV_PP2_ISR_ENABLE_INTERRUPT_OFFS 0 |
| #define MV_PP2_ISR_ENABLE_INTERRUPT_MASK 0xFFFF |
| #define MV_PP2_ISR_ENABLE_INTERRUPT(cpuMask) (((cpuMask) << MV_PP2_ISR_ENABLE_INTERRUPT_OFFS)\ |
| & MV_PP2_ISR_ENABLE_INTERRUPT_MASK) |
| |
| #define MV_PP2_ISR_DISABLE_INTERRUPT_OFFS 16 |
| #define MV_PP2_ISR_DISABLE_INTERRUPT_MASK (0xFFFF << MV_PP2_ISR_DISABLE_INTERRUPT_OFFS) |
| #define MV_PP2_ISR_DISABLE_INTERRUPT(cpuMask) (((cpuMask) << MV_PP2_ISR_DISABLE_INTERRUPT_OFFS)\ |
| & MV_PP2_ISR_DISABLE_INTERRUPT_MASK) |
| |
| |
| #define MV_PP2_ISR_RX_TX_CAUSE_REG(port) (MV_PP2_REG_BASE + 0x5480 + 4 * (port)) |
| #define MV_PP2_ISR_RX_TX_MASK_REG(port) (MV_PP2_REG_BASE + 0x54a0 + 4 * (port)) |
| |
| #define MV_PP2_CAUSE_RXQ_OCCUP_DESC_OFFS 0 |
| #define MV_PP2_CAUSE_RXQ_OCCUP_DESC_BIT(q) (MV_PP2_CAUSE_RXQ_OCCUP_DESC_OFFS + (q)) |
| #define MV_PP2_CAUSE_RXQ_OCCUP_DESC_ALL_MASK (0xFFFF << MV_PP2_CAUSE_RXQ_OCCUP_DESC_OFFS) |
| #define MV_PP2_CAUSE_RXQ_OCCUP_DESC_MASK(q) (1 << (MV_PP2_CAUSE_RXQ_OCCUP_DESC_BIT(q))) |
| |
| #define MV_PP2_CAUSE_TXQ_OCCUP_DESC_OFFS 16 |
| #define MV_PP2_CAUSE_TXQ_OCCUP_DESC_BIT(q) (MV_PP2_CAUSE_TXQ_OCCUP_DESC_OFFS + (q)) |
| #define MV_PP2_CAUSE_TXQ_OCCUP_DESC_ALL_MASK (0xFF << MV_PP2_CAUSE_TXQ_OCCUP_DESC_OFFS) |
| #define MV_PP2_CAUSE_TXQ_OCCUP_DESC_MASK(q) (1 << (MV_PP2_CAUSE_TXQ_SENT_DESC_BIT(q))) |
| |
| #define MV_PP2_CAUSE_RX_FIFO_OVERRUN_BIT 24 |
| #define MV_PP2_CAUSE_RX_FIFO_OVERRUN_MASK (1 << MV_PP2_CAUSE_RX_FIFO_OVERRUN_BIT) |
| |
| #define MV_PP2_CAUSE_FCS_ERR_BIT 25 |
| #define MV_PP2_CAUSE_FCS_ERR_MASK (1 << MV_PP2_CAUSE_FCS_ERR_BIT) |
| |
| #define MV_PP2_CAUSE_TX_FIFO_UNDERRUN_BIT 26 |
| #define MV_PP2_CAUSE_TX_FIFO_UNDERRUN_MASK (1 << MV_PP2_CAUSE_TX_FIFO_UNDERRUN_BIT) |
| |
| #define MV_PP2_CAUSE_TX_EXCEPTION_SUM_BIT 29 |
| #define MV_PP2_CAUSE_TX_EXCEPTION_SUM_MASK (1 << MV_PP2_CAUSE_TX_EXCEPTION_SUM_BIT) |
| |
| #define MV_PP2_CAUSE_RX_EXCEPTION_SUM_BIT 30 |
| #define MV_PP2_CAUSE_RX_EXCEPTION_SUM_MASK (1 << MV_PP2_CAUSE_RX_EXCEPTION_SUM_BIT) |
| |
| #define MV_PP2_CAUSE_MISC_SUM_BIT 31 |
| #define MV_PP2_CAUSE_MISC_SUM_MASK (1 << MV_PP2_CAUSE_MISC_SUM_BIT) |
| |
| #define MV_PP2_CAUSE_MISC_ERR_SUM_MASK (0xE7000000) |
| |
| |
| #define MV_PP2_ISR_PON_RX_TX_CAUSE_REG (MV_PP2_REG_BASE + 0x549c) |
| #define MV_PP2_ISR_PON_RX_TX_MASK_REG (MV_PP2_REG_BASE + 0x54bc) |
| |
| #define MV_PP2_PON_CAUSE_RXQ_OCCUP_DESC_OFFS 0 |
| #define MV_PP2_PON_CAUSE_RXQ_OCCUP_DESC_BIT(q) (MV_PP2_PON_CAUSE_RXQ_OCCUP_DESC_OFFS + (q)) |
| #define MV_PP2_PON_CAUSE_RXQ_OCCUP_DESC_ALL_MASK (0xFFFF << MV_PP2_PON_CAUSE_RXQ_OCCUP_DESC_OFFS) |
| #define MV_PP2_PON_CAUSE_RXQ_OCCUP_DESC_MASK(q) (1 << (MV_PP2_PON_CAUSE_RXQ_OCCUP_DESC_BIT(q))) |
| |
| #define MV_PP2_PON_CAUSE_RX_FIFO_OVERRUN_BIT 16 |
| #define MV_PP2_PON_CAUSE_RX_FIFO_OVERRUN_MASK (1 << MV_PP2_CAUSE_RX_FIFO_OVERRUN_BIT) |
| |
| #define MV_PP2_PON_CAUSE_FCS_ERR_BIT 17 |
| #define MV_PP2_PON_CAUSE_FCS_ERR_MASK (1 << MV_PP2_PON_CAUSE_FCS_ERR_BIT) |
| |
| #define MV_PP2_PON_BYTE_COUNT_ERR_BIT 18 |
| #define MV_PP2_PON_BYTE_COUNT_ERR_MASK (1 << MV_PP2_PON_BYTE_COUNT_ERR_BIT) |
| |
| #define MV_PP2_PON_CAUSE_TX_FIFO_UNDERRUN_BIT 21 |
| #define MV_PP2_PON_CAUSE_TX_FIFO_UNDERRUN_MASK (1 << MV_PP2_PON_CAUSE_TX_FIFO_UNDERRUN_BIT) |
| |
| #define MV_PP2_PON_CAUSE_TXP_OCCUP_DESC_OFFS 22 |
| #define MV_PP2_PON_CAUSE_TXP_OCCUP_DESC_ALL_MASK (0xFF << MV_PP2_PON_CAUSE_TXP_OCCUP_DESC_OFFS) |
| |
| #define MV_PP2_PON_CAUSE_TX_EXCEPTION_SUM_BIT 29 |
| #define MV_PP2_PON_CAUSE_TX_EXCEPTION_SUM_MASK (1 << MV_PP2_PON_CAUSE_TX_EXCEPTION_SUM_BIT) |
| |
| #define MV_PP2_PON_CAUSE_RX_EXCEPTION_SUM_BIT 30 |
| #define MV_PP2_PON_CAUSE_RX_EXCEPTION_SUM_MASK (1 << MV_PP2_PON_CAUSE_RX_EXCEPTION_SUM_BIT) |
| |
| #define MV_PP2_PON_CAUSE_MISC_SUM_BIT 31 |
| #define MV_PP2_PON_CAUSE_MISC_SUM_MASK (1 << MV_PP2_PON_CAUSE_MISC_SUM_BIT) |
| |
| #define MV_PP2_PON_CAUSE_MISC_ERR_SUM_MASK (0xC0270000) |
| |
| |
| /* TCONT Cause registers 54c0 - 54cc */ |
| /* TCONT Mask registers 54d0 - 54dc */ |
| #define MV_PP2_ISR_RX_ERR_CAUSE_REG(port) (MV_PP2_REG_BASE + 0x5500 + 4 * (port)) |
| #define MV_PP2_ISR_RX_ERR_MASK_REG(port) (MV_PP2_REG_BASE + 0x5520 + 4 * (port)) |
| #define MV_PP2_ISR_TX_ERR_CAUSE_REG(port) (MV_PP2_REG_BASE + 0x5500 + 4 * (port)) |
| #define MV_PP2_ISR_TX_ERR_MASK_REG(port) (MV_PP2_REG_BASE + 0x5520 + 4 * (port)) |
| /* TCONT TX exception Cause registers 5580 - 558c */ |
| /* TCONT TX exception Mask registers 5590 - 559c */ |
| #define MV_PP2_ISR_PON_TX_UNDR_CAUSE_REG (MV_PP2_REG_BASE + 0x55a0) |
| #define MV_PP2_ISR_PON_TX_UNDR_MASK_REG (MV_PP2_REG_BASE + 0x55a4) |
| |
| #define MV_PP2_ISR_MISC_CAUSE_REG (MV_PP2_REG_BASE + 0x55b0) |
| #define MV_PP2_ISR_MISC_MASK_REG (MV_PP2_REG_BASE + 0x55b4) |
| /*-------------------------------------------------------------------------------*/ |
| |
| #define MV_PP2_OVERRUN_DROP_REG(port) (MV_PP2_REG_BASE + 0x7000 + 4 * (port)) |
| #define MV_PP2_CLS_DROP_REG(port) (MV_PP2_REG_BASE + 0x7020 + 4 * (port)) |
| |
| /******************************** Port Drop counters ppv2.0*****************************/ |
| |
| #define MV_PP2_V0_POLICER_DROP_REG(plcr) (MV_PP2_REG_BASE + 0x7040 + 4 * (plcr)) |
| #define MV_PP2_V0_TX_EARLY_DROP_REG(eport) (MV_PP2_REG_BASE + 0x7080 + 4 * (eport)) |
| #define MV_PP2_V0_TX_DESC_DROP_REG(eport) (MV_PP2_REG_BASE + 0x7100 + 4 * (eport)) |
| #define MV_PP2_V0_RX_EARLY_DROP_REG(rxq) (MV_PP2_REG_BASE + 0x7200 + 4 * (rxq)) |
| #define MV_PP2_V0_RX_DESC_DROP_REG(rxq) (MV_PP2_REG_BASE + 0x7400 + 4 * (rxq)) |
| |
| /************************************ counters ppv2.1 **********************************/ |
| |
| |
| #define MV_PP2_V1_CNT_IDX_REG (MV_PP2_REG_BASE + 0x7040) |
| /* TX counters index */ |
| #define TX_CNT_IDX_TXP 3 |
| #define TX_CNT_IDX_TXQ 0 |
| |
| #define TX_CNT_IDX(port, txp, txq) ((MV_PPV2_TXP_PHYS(port, txp) << 3) | (txq)) |
| |
| #define MV_PP2_V1_TX_DESC_ENQ_REG (MV_PP2_REG_BASE + 0x7100) |
| #define MV_PP2_V1_TX_DESC_ENQ_TO_DRAM_REG (MV_PP2_REG_BASE + 0x7104) |
| #define MV_PP2_V1_TX_BUF_ENQ_TO_DRAM_REG (MV_PP2_REG_BASE + 0x7108) |
| #define MV_PP2_V1_TX_DESC_HWF_ENQ_REG (MV_PP2_REG_BASE + 0x710c) |
| #define MV_PP2_V1_TX_PKT_DQ_REG (MV_PP2_REG_BASE + 0x7130) |
| #define MV_PP2_V1_TX_PKT_FULLQ_DROP_REG (MV_PP2_REG_BASE + 0x7200) |
| #define MV_PP2_V1_TX_PKT_EARLY_DROP_REG (MV_PP2_REG_BASE + 0x7204) |
| #define MV_PP2_V1_TX_PKT_BM_DROP_REG (MV_PP2_REG_BASE + 0x7208) |
| #define MV_PP2_V1_TX_PKT_BM_MC_DROP_REG (MV_PP2_REG_BASE + 0x720c) |
| |
| #define MV_PP2_V1_RX_PKT_FULLQ_DROP_REG (MV_PP2_REG_BASE + 0x7220) |
| #define MV_PP2_V1_RX_PKT_EARLY_DROP_REG (MV_PP2_REG_BASE + 0x7224) |
| #define MV_PP2_V1_RX_PKT_BM_DROP_REG (MV_PP2_REG_BASE + 0x7228) |
| #define MV_PP2_V1_RX_DESC_ENQ_REG (MV_PP2_REG_BASE + 0x7120) |
| |
| #define MV_PP2_V1_OVERFLOW_MC_DROP_REG (MV_PP2_REG_BASE + 0x770c) |
| |
| |
| |
| |
| /*-------------------------------------------------------------------------------*/ |
| |
| |
| /************************** TX Scheduler Registers ******************************/ |
| /* Indirect access */ |
| #define MV_PP2_TXP_SCHED_PORT_INDEX_REG (MV_PP2_REG_BASE + 0x8000) |
| |
| #define MV_PP2_TXP_SCHED_Q_CMD_REG (MV_PP2_REG_BASE + 0x8004) |
| |
| #define MV_PP2_TXP_SCHED_ENQ_OFFSET 0 |
| #define MV_PP2_TXP_SCHED_ENQ_MASK (0xFF << MV_PP2_TXP_SCHED_ENQ_OFFSET) |
| #define MV_PP2_TXP_SCHED_DISQ_OFFSET 8 |
| #define MV_PP2_TXP_SCHED_DISQ_MASK (0xFF << MV_PP2_TXP_SCHED_DISQ_OFFSET) |
| /*-----------------------------------------------------------------------------------------------*/ |
| |
| #define MV_PP2_TXP_SCHED_CMD_1_REG (MV_PP2_REG_BASE + 0x8010) |
| |
| #define MV_PP2_TXP_SCHED_RESET_BIT 0 |
| #define MV_PP2_TXP_SCHED_RESET_MASK (1 << MV_PP2_TXP_SCHED_RESET_BIT) |
| |
| #define MV_PP2_TXP_SCHED_PTP_SYNC_BIT 1 |
| #define MV_PP2_TXP_SCHED_PTP_SYNC_MASK (1 << MV_PP2_TXP_SCHED_PTP_SYNC_BIT) |
| |
| #define MV_PP2_TXP_SCHED_EJP_ENABLE_BIT 2 |
| #define MV_PP2_TXP_SCHED_EJP_ENABLE_MASK (1 << MV_PP2_TXP_SCHED_EJP_ENABLE_BIT) |
| /*-----------------------------------------------------------------------------------------------*/ |
| |
| /* Transmit Queue Fixed Priority Configuration (TQFPC) */ |
| #define MV_PP2_TXP_SCHED_FIXED_PRIO_REG (MV_PP2_REG_BASE + 0x8014) |
| |
| #define MV_PP2_TXP_FIXED_PRIO_OFFS 0 |
| #define MV_PP2_TXP_FIXED_PRIO_MASK (0xFF << MV_PP2_TX_FIXED_PRIO_OFFS) |
| /*-----------------------------------------------------------------------------------------------*/ |
| |
| /* Basic Refill No of Clocks (BRC) */ |
| #define MV_PP2_TXP_SCHED_PERIOD_REG (MV_PP2_REG_BASE + 0x8018) |
| |
| #define MV_PP2_TXP_REFILL_CLOCKS_OFFS 0 |
| #define MV_PP2_TXP_REFILL_CLOCKS_MIN 16 |
| #define MV_PP2_TXP_REFILL_CLOCKS_MASK (0xFFFF << MV_PP2_TXP_REFILL_CLOCKS_OFFS) |
| /*-----------------------------------------------------------------------------------------------*/ |
| |
| /* Port Maximum Transmit Unit (PMTU) */ |
| #define MV_PP2_TXP_SCHED_MTU_REG (MV_PP2_REG_BASE + 0x801c) |
| #define MV_PP2_TXP_MTU_OFFS 0 |
| #define MV_PP2_TXP_MTU_MAX 0x7FFFF |
| #define MV_PP2_TXP_MTU_ALL_MASK (MV_PP2_TXP_MTU_MAX << MV_PP2_TXP_MTU_OFFS) |
| #define MV_PP2_TXP_MTU_MASK(mtu) ((mtu) << MV_PP2_TXP_MTU_OFFS) |
| /*-----------------------------------------------------------------------------------------------*/ |
| |
| /* Port Bucket Refill (PRefill) */ |
| #define MV_PP2_TXP_SCHED_REFILL_REG (MV_PP2_REG_BASE + 0x8020) |
| #define MV_PP2_TXP_REFILL_TOKENS_OFFS 0 |
| #define MV_PP2_TXP_REFILL_TOKENS_MAX 0x7FFFF |
| #define MV_PP2_TXP_REFILL_TOKENS_ALL_MASK (MV_PP2_TXP_REFILL_TOKENS_MAX << MV_PP2_TXP_REFILL_TOKENS_OFFS) |
| #define MV_PP2_TXP_REFILL_TOKENS_MASK(val) ((val) << MV_PP2_TXP_REFILL_TOKENS_OFFS) |
| |
| #define MV_PP2_TXP_REFILL_PERIOD_OFFS 20 |
| #define MV_PP2_TXP_REFILL_PERIOD_MAX 0x3FF |
| #define MV_PP2_TXP_REFILL_PERIOD_ALL_MASK (MV_PP2_TXP_REFILL_PERIOD_MAX << MV_PP2_TXP_REFILL_PERIOD_OFFS) |
| #define MV_PP2_TXP_REFILL_PERIOD_MASK(val) ((val) << MV_PP2_TXP_REFILL_PERIOD_OFFS) |
| /*-----------------------------------------------------------------------------------------------*/ |
| |
| /* Port Maximum Token Bucket Size (PMTBS) */ |
| #define MV_PP2_TXP_SCHED_TOKEN_SIZE_REG (MV_PP2_REG_BASE + 0x8024) |
| #define MV_PP2_TXP_TOKEN_SIZE_MAX 0xFFFFFFFF |
| /*-----------------------------------------------------------------------------------------------*/ |
| |
| /* Port Token Bucket Counter (PMTBS) */ |
| #define MV_PP2_TXP_SCHED_TOKEN_CNTR_REG (MV_PP2_REG_BASE + 0x8028) |
| #define MV_PP2_TXP_TOKEN_CNTR_MAX 0xFFFFFFFF |
| /*-----------------------------------------------------------------------------------------------*/ |
| |
| /* Queue Bucket Refill (QRefill) */ |
| #define MV_PP2_TXQ_SCHED_REFILL_REG(q) (MV_PP2_REG_BASE + 0x8040 + ((q) << 2)) |
| |
| #define MV_PP2_TXQ_REFILL_TOKENS_OFFS 0 |
| #define MV_PP2_TXQ_REFILL_TOKENS_MAX 0x7FFFF |
| #define MV_PP2_TXQ_REFILL_TOKENS_ALL_MASK (MV_PP2_TXQ_REFILL_TOKENS_MAX << MV_PP2_TXQ_REFILL_TOKENS_OFFS) |
| #define MV_PP2_TXQ_REFILL_TOKENS_MASK(val) ((val) << MV_PP2_TXQ_REFILL_TOKENS_OFFS) |
| |
| #define MV_PP2_TXQ_REFILL_PERIOD_OFFS 20 |
| #define MV_PP2_TXQ_REFILL_PERIOD_MAX 0x3FF |
| #define MV_PP2_TXQ_REFILL_PERIOD_ALL_MASK (MV_PP2_TXQ_REFILL_PERIOD_MAX << MV_PP2_TXQ_REFILL_PERIOD_OFFS) |
| #define MV_PP2_TXQ_REFILL_PERIOD_MASK(val) ((val) << MV_PP2_TXQ_REFILL_PERIOD_OFFS) |
| /*-----------------------------------------------------------------------------------------------*/ |
| |
| /* Queue Maximum Token Bucket Size (QMTBS) */ |
| #define MV_PP2_TXQ_SCHED_TOKEN_SIZE_REG(q) (MV_PP2_REG_BASE + 0x8060 + ((q) << 2)) |
| #define MV_PP2_TXQ_TOKEN_SIZE_MAX 0x7FFFFFFF |
| /*-----------------------------------------------------------------------------------------------*/ |
| |
| /* Queue Token Bucket Counter (PMTBS) */ |
| #define MV_PP2_TXQ_SCHED_TOKEN_CNTR_REG(q) (MV_PP2_REG_BASE + 0x8080 + ((q) << 2)) |
| #define MV_PP2_TXQ_TOKEN_CNTR_MAX 0xFFFFFFFF |
| /*-----------------------------------------------------------------------------------------------*/ |
| |
| /* Transmit Queue Arbiter Configuration (TQxAC) */ |
| #define MV_PP2_TXQ_SCHED_WRR_REG(q) (MV_PP2_REG_BASE + 0x80A0 + ((q) << 2)) |
| |
| #define MV_PP2_TXQ_WRR_WEIGHT_OFFS 0 |
| #define MV_PP2_TXQ_WRR_WEIGHT_MAX 0xFF |
| #define MV_PP2_TXQ_WRR_WEIGHT_ALL_MASK (MV_PP2_TXQ_WRR_WEIGHT_MAX << MV_PP2_TXQ_WRR_WEIGHT_OFFS) |
| #define MV_PP2_TXQ_WRR_WEIGHT_MASK(weigth) ((weigth) << MV_PP2_TXQ_WRR_WEIGHT_OFFS) |
| |
| #define MV_PP2_TXQ_WRR_BYTE_COUNT_OFFS 8 |
| #define MV_PP2_TXQ_WRR_BYTE_COUNT_MASK (0x3FFFF << MV_PP2_TXQ_WRR_BYTE_COUNT_OFFS) |
| |
| /************************** PPv2 HW defines ******************************/ |
| #define MV_PP2_RX_FIFO_PORT_DATA_SIZE 0x2000 |
| #define MV_PP2_RX_FIFO_PORT_ATTR_SIZE 0x80 |
| #define MV_PP2_RX_FIFO_PORT_MIN_PKT 0x80 |
| |
| #define MV_PP2_MAX_PORTS 8 /* Maximum number of ports supported by PPv2 HW */ |
| #define MV_PP2_MAX_RXQS_TOTAL 256 /* Maximum number of RXQs supported by PPv2 HW for all ports */ |
| |
| #define MV_PP2_DESC_ALIGNED_SIZE 32 |
| #define MV_PP2_DESC_Q_ALIGN 512 |
| /************************** RX/TX Descriptor defines and inlines ******************************/ |
| /* RXQ */ |
| typedef struct pp2_rx_desc { |
| MV_U32 status; |
| MV_U16 parserInfo; |
| MV_U16 dataSize; |
| MV_U32 bufPhysAddr; |
| MV_U32 bufCookie; |
| MV_U16 gemPortIdPktColor; |
| MV_U16 csumL4; |
| MV_U8 bmQset; |
| MV_U8 reserved; |
| MV_U16 classifyInfo; |
| MV_U32 flowId; |
| MV_U32 reserved2; |
| } PP2_RX_DESC; |
| |
| /* Bits of "status" field */ |
| #define PP2_RX_L3_OFFSET_OFFS 0 |
| #define PP2_RX_L3_OFFSET_MASK (0x7F << PP2_RX_L3_OFFSET_OFFS) |
| |
| #define PP2_RX_IP_HLEN_OFFS 8 |
| #define PP2_RX_IP_HLEN_MASK (0x1F << PP2_RX_IP_HLEN_OFFS) |
| |
| #define PP2_RX_ERR_CODE_OFFS 13 |
| #define PP2_RX_ERR_CODE_MASK (3 << PP2_RX_ERR_CODE_OFFS) |
| #define PP2_RX_ERR_CRC (0 << PP2_RX_ERR_CODE_OFFS) |
| #define PP2_RX_ERR_OVERRUN (1 << PP2_RX_ERR_CODE_OFFS) |
| #define PP2_RX_RESERVED (2 << PP2_RX_ERR_CODE_OFFS) |
| #define PP2_RX_ERR_RESOURCE (3 << PP2_RX_ERR_CODE_OFFS) |
| |
| #define PP2_RX_ES_BIT 15 |
| #define PP2_RX_ES_MASK (1 << PP2_RX_ES_BIT) |
| |
| #define PP2_RX_BM_POOL_ID_OFFS 16 |
| #define PP2_RX_BM_POOL_ALL_MASK (0x7 << PP2_RX_BM_POOL_ID_OFFS) |
| #define PP2_RX_BM_POOL_ID_MASK(pool) ((pool) << PP2_RX_BM_POOL_ID_OFFS) |
| |
| #define PP2_RX_HWF_SYNC_BIT 21 |
| #define PP2_RX_HWF_SYNC_MASK (1 << PP2_RX_HWF_SYNC_BIT) |
| |
| #define PP2_RX_L4_CHK_OK_BIT 22 |
| #define PP2_RX_L4_CHK_OK_MASK (1 << PP2_RX_L4_CHK_OK_BIT) |
| |
| #define PP2_RX_IP_FRAG_BIT 23 |
| #define PP2_RX_IP_FRAG_MASK (1 << PP2_RX_IP_FRAG_BIT) |
| |
| #define PP2_RX_IP4_HEADER_ERR_BIT 24 |
| #define PP2_RX_IP4_HEADER_ERR_MASK (1 << PP2_RX_IP4_HEADER_ERR_BIT) |
| |
| #define PP2_RX_L4_OFFS 25 |
| #define PP2_RX_L4_MASK (7 << PP2_RX_L4_OFFS) |
| /* Value 0 - N/A, 3-7 - User Defined */ |
| #define PP2_RX_L4_TCP (1 << PP2_RX_L4_OFFS) |
| #define PP2_RX_L4_UDP (2 << PP2_RX_L4_OFFS) |
| |
| #define PP2_RX_L3_OFFS 28 |
| #define PP2_RX_L3_MASK (7 << PP2_RX_L3_OFFS) |
| /* Value 0 - N/A, 6-7 - User Defined */ |
| #define PP2_RX_L3_IP4 (1 << PP2_RX_L3_OFFS) |
| #define PP2_RX_L3_IP4_OPT (2 << PP2_RX_L3_OFFS) |
| #define PP2_RX_L3_IP4_OTHER (3 << PP2_RX_L3_OFFS) |
| #define PP2_RX_L3_IP6 (4 << PP2_RX_L3_OFFS) |
| #define PP2_RX_L3_IP6_EXT (5 << PP2_RX_L3_OFFS) |
| |
| #define PP2_RX_BUF_HDR_BIT 31 |
| #define PP2_RX_BUF_HDR_MASK (1 << PP2_RX_BUF_HDR_BIT) |
| |
| /* status field MACROs */ |
| #define PP2_RX_L3_IS_IP4(status) (((status) & PP2_RX_L3_MASK) == PP2_RX_L3_IP4) |
| #define PP2_RX_L3_IS_IP4_OPT(status) (((status) & PP2_RX_L3_MASK) == PP2_RX_L3_IP4_OPT) |
| #define PP2_RX_L3_IS_IP4_OTHER(status) (((status) & PP2_RX_L3_MASK) == PP2_RX_L3_IP4_OTHER) |
| #define PP2_RX_L3_IS_IP6(status) (((status) & PP2_RX_L3_MASK) == PP2_RX_L3_IP6) |
| #define PP2_RX_L3_IS_IP6_EXT(status) (((status) & PP2_RX_L3_MASK) == PP2_RX_L3_IP6_EXT) |
| #define PP2_RX_L4_IS_UDP(status) (((status) & PP2_RX_L4_MASK) == PP2_RX_L4_UDP) |
| #define PP2_RX_L4_IS_TCP(status) (((status) & PP2_RX_L4_MASK) == PP2_RX_L4_TCP) |
| #define PP2_RX_IP4_HDR_ERR(status) ((status) & PP2_RX_IP4_HEADER_ERR_MASK) |
| #define PP2_RX_IP4_FRG(status) ((status) & PP2_RX_IP_FRAG_MASK) |
| #define PP2_RX_L4_CHK_OK(status) ((status) & PP2_RX_L4_CHK_OK_MASK) |
| |
| /* Sub fields of "parserInfo" field */ |
| #define PP2_RX_LKP_ID_OFFS 0 |
| #define PP2_RX_LKP_ID_BITS 6 |
| #define PP2_RX_LKP_ID_MASK (((1 << PP2_RX_LKP_ID_BITS) - 1) << PP2_RX_LKP_ID_OFFS) |
| |
| #define PP2_RX_CPU_CODE_OFFS 6 |
| #define PP2_RX_CPU_CODE_BITS 3 |
| #define PP2_RX_CPU_CODE_MASK (((1 << PP2_RX_CPU_CODE_BITS) - 1) << PP2_RX_CPU_CODE_OFFS) |
| |
| #define PP2_RX_PPPOE_BIT 9 |
| #define PP2_RX_PPPOE_MASK (1 << PP2_RX_PPPOE_BIT) |
| |
| #define PP2_RX_L3_CAST_OFFS 10 |
| #define PP2_RX_L3_CAST_BITS 2 |
| #define PP2_RX_L3_CAST_MASK (((1 << PP2_RX_L3_CAST_BITS) - 1) << PP2_RX_L3_CAST_OFFS) |
| |
| #define PP2_RX_L2_CAST_OFFS 12 |
| #define PP2_RX_L2_CAST_BITS 2 |
| #define PP2_RX_L2_CAST_MASK (((1 << PP2_RX_L2_CAST_BITS) - 1) << PP2_RX_L2_CAST_OFFS) |
| |
| #define PP2_RX_VLAN_INFO_OFFS 14 |
| #define PP2_RX_VLAN_INFO_BITS 2 |
| #define PP2_RX_VLAN_INFO_MASK (((1 << PP2_RX_VLAN_INFO_BITS) - 1) << PP2_RX_VLAN_INFO_OFFS) |
| |
| /* Bits of "bmQset" field */ |
| #define PP2_RX_BUFF_QSET_NUM_OFFS 0 |
| #define PP2_RX_BUFF_QSET_NUM_MASK (0x7f << PP2_RX_BUFF_QSET_NUM_OFFS) |
| |
| #define PP2_RX_BUFF_TYPE_OFFS 7 |
| #define PP2_RX_BUFF_TYPE_MASK (0x1 << PP2_RX_BUFF_TYPE_OFFS) |
| /*-------------------------------------------------------------------------------*/ |
| |
| /* TXQ */ |
| typedef struct pp2_tx_desc { |
| MV_U32 command; |
| MV_U8 pktOffset; |
| MV_U8 physTxq; |
| MV_U16 dataSize; |
| MV_U32 bufPhysAddr; |
| MV_U32 bufCookie; |
| MV_U32 hwCmd[3]; |
| MV_U32 reserved; |
| } PP2_TX_DESC; |
| |
| /* Bits of "command" field */ |
| #define PP2_TX_L3_OFFSET_OFFS 0 |
| #define PP2_TX_L3_OFFSET_MASK (0x7F << PP2_TX_L3_OFFSET_OFFS) |
| |
| #define PP2_TX_BUF_RELEASE_MODE_BIT 7 |
| #define PP2_TX_BUF_RELEASE_MODE_MASK (1 << PP2_TX_BUF_RELEASE_MODE_BIT) |
| |
| #define PP2_TX_IP_HLEN_OFFS 8 |
| #define PP2_TX_IP_HLEN_MASK (0x1F << PP2_TX_IP_HLEN_OFFS) |
| |
| #define PP2_TX_L4_CSUM_OFFS 13 |
| #define PP2_TX_L4_CSUM_MASK (3 << PP2_TX_L4_CSUM_OFFS) |
| #define PP2_TX_L4_CSUM (0 << PP2_TX_L4_CSUM_OFFS) |
| #define PP2_TX_L4_CSUM_FRG (1 << PP2_TX_L4_CSUM_OFFS) |
| #define PP2_TX_L4_CSUM_NOT (2 << PP2_TX_L4_CSUM_OFFS) |
| |
| #define PP2_TX_IP_CSUM_DISABLE_BIT 15 |
| #define PP2_TX_IP_CSUM_DISABLE_MASK (1 << PP2_TX_IP_CSUM_DISABLE_BIT) |
| |
| /* 3 bits: 16..18 */ |
| #define PP2_TX_POOL_INDEX_OFFS 16 |
| #define PP2_TX_POOL_INDEX_MASK (7 << PP2_TX_POOL_INDEX_OFFS) |
| |
| /* bit 19 - Reserved */ |
| |
| #define PP2_TX_PKT_OFFS_9_BIT 20 |
| #define PP2_TX_PKT_OFFS_9_MASK (1 << PP2_TX__PKT_OFFS_9_BIT) |
| |
| #define PP2_TX_HWF_SYNC_BIT 21 |
| #define PP2_TX_HWF_SYNC_MASK (1 << PP2_TX_HWF_SYNC_BIT) |
| |
| #define PP2_TX_HWF_BIT 22 |
| #define PP2_TX_HWF_MASK (1 << PP2_TX_HWF_BIT) |
| |
| #define PP2_TX_PADDING_DISABLE_BIT 23 |
| #define PP2_TX_PADDING_DISABLE_MASK (1 << PP2_TX_PADDING_DISABLE_BIT) |
| |
| #define PP2_TX_L4_OFFS 24 |
| #define PP2_TX_L4_TCP (0 << PP2_TX_L4_OFFS) |
| #define PP2_TX_L4_UDP (1 << PP2_TX_L4_OFFS) |
| |
| #define PP2_TX_L3_OFFS 26 |
| #define PP2_TX_L3_IP4 (0 << PP2_TX_L3_OFFS) |
| #define PP2_TX_L3_IP6 (1 << PP2_TX_L3_OFFS) |
| |
| #define PP2_TX_L_DESC_BIT 28 |
| #define PP2_TX_L_DESC_MASK (1 << PP2_TX_L_DESC_BIT) |
| |
| #define PP2_TX_F_DESC_BIT 29 |
| #define PP2_TX_F_DESC_MASK (1 << PP2_TX_F_DESC_BIT) |
| |
| #define PP2_TX_DESC_FRMT_BIT 30 |
| #define PP2_TX_DESC_FRMT_MASK (1 << PP2_TX_DESC_FRMT_BIT) |
| #define PP2_TX_DESC_PER_BUF (0 << PP2_TX_DESC_FRMT_BIT) |
| #define PP2_TX_DESC_PER_PKT (1 << PP2_TX_DESC_FRMT_BIT) |
| |
| #define PP2_TX_BUF_HDR_BIT 31 |
| #define PP2_TX_BUF_HDR_MASK (1 << PP2_TX_BUF_HDR_BIT) |
| |
| /* Bits of "hwCmd[0]" field - offset 0x10 */ |
| #define PP2_TX_GEMPID_OFFS 0 |
| #define PP2_TX_GEMPID_BITS 12 |
| #define PP2_TX_GEMPID_ALL_MASK (((1 << PP2_TX_GEMPID_BITS) - 1) << PP2_TX_GEMPID_OFFS) |
| #define PP2_TX_GEMPID_MASK(gpid) (((gpid) & PP2_TX_GEMPID_ALL_MASK) << PP2_TX_GEMPID_OFFS) |
| |
| #define PP2_TX_COLOR_OFFS 12 |
| #define PP2_TX_COLOR_ALL_MASK (0x3 << PP2_TX_COLOR_OFFS) |
| #define PP2_TX_COLOR_GREEN 0 |
| #define PP2_TX_COLOR_YELLOW 1 |
| #define PP2_TX_COLOR_MASK(col) (((col) & PP2_TX_COLOR_ALL_MASK) << PP2_TX_COLOR_OFFS) |
| |
| #define PP2_TX_DSA_OFFS 14 |
| #define PP2_TX_DSA_ALL_MASK (0x3 << PP2_TX_DSA_OFFS) |
| #define PP2_TX_DSA_NONE 0 |
| #define PP2_TX_DSA_TAG 1 |
| #define PP2_TX_EDSA_TAG 2 |
| #define PP2_TX_DSA_MASK(dsa) (((dsa) & PP2_TX_DSA_ALL_MASK) << PP2_TX_DSA_OFFS) |
| |
| #define PP2_TX_L4_CSUM_INIT_OFFS 16 |
| #define PP2_TX_L4_CSUM_INIT_MASK (0xffff << PP2_TX_L4_CSUM_INIT_OFFS) |
| |
| /* Bits of "hwCmd[1]" field - offset 0x14 */ |
| |
| #define PP2_TX_MOD_QSET_OFFS 0 |
| #define PP2_TX_MOD_QSET_BITS 7 |
| #define PP2_TX_MOD_QSET_MASK (((1 << PP2_TX_MOD_QSET_BITS) - 1) << PP2_TX_MOD_QSET_OFFS) |
| |
| #define PP2_TX_MOD_GRNTD_BIT 7 |
| #define PP2_TX_MOD_GRNTD_MASK (1 << PP2_TX_MOD_GRNTD_BIT) |
| |
| /* bits 8..15 are reserved */ |
| |
| #define PP2_TX_MOD_DSCP_OFFS 16 |
| #define PP2_TX_MOD_DSCP_BITS 6 |
| #define PP2_TX_MOD_DSCP_MASK (((1 << PP2_TX_MOD_DSCP_BITS) - 1) << PP2_TX_MOD_DSCP_OFFS) |
| |
| #define PP2_TX_MOD_PRIO_OFFS 22 |
| #define PP2_TX_MOD_PRIO_BITS 3 |
| #define PP2_TX_MOD_PRIO_MASK (((1 << PP2_TX_MOD_PRIO_BITS) - 1) << PP2_TX_MOD_PRIO_OFFS) |
| |
| #define PP2_TX_MOD_DSCP_EN_BIT 25 |
| #define PP2_TX_MOD_DSCP_EN_MASK (1 << PP2_TX_MOD_DSCP_EN_BIT) |
| |
| #define PP2_TX_MOD_PRIO_EN_BIT 26 |
| #define PP2_TX_MOD_PRIO_EN_MASK (1 << PP2_TX_MOD_PRIO_EN_BIT) |
| |
| #define PP2_TX_MOD_GEMPID_EN_BIT 27 |
| #define PP2_TX_MOD_GEMPID_EN_MASK (1 << PP2_TX_MOD_GEMPID_EN_BIT) |
| |
| /* Bits of "hwCmd[2]" field - offset 0x18 */ |
| #define PP2_TX_PME_DPTR_OFFS 0 |
| #define PP2_TX_PME_DPTR_ALL_MASK (0xffff << PP2_TX_PME_DPTR_OFFS) |
| #define PP2_TX_PME_DPTR_MASK(val) (((val) & PP2_TX_PME_DPTR_ALL_MASK) << PP2_TX_PME_DPTR_OFFS) |
| |
| #define PP2_TX_PME_IPTR_OFFS 16 |
| #define PP2_TX_PME_IPTR_ALL_MASK (0xff << PP2_TX_PME_IPTR_OFFS) |
| #define PP2_TX_PME_IPTR_MASK(val) (((val) & PP2_TX_PME_IPTR_ALL_MASK) << PP2_TX_PME_IPTR_OFFS) |
| |
| /* Bit 24 - HWF_IDB is for HWF usage only */ |
| |
| #define PP2_TX_GEM_OEM_BIT 25 |
| #define PP2_TX_GEM_OEM_MASK (1 << PP2_TX_GEM_OEM_BIT) |
| |
| /* Bit 26 - ERROR_SUM is for HWF usage only */ |
| |
| #define PP2_TX_PON_FEC_BIT 27 |
| #define PP2_TX_PON_FEC_MASK (1 << PP2_TX_PON_FEC_BIT) |
| |
| #define PP2_TX_CPU_MAP_OFFS 28 |
| #define PP2_TX_CPU_MAP_BITS 4 |
| #define PP2_TX_CPU_MAP_MASK (((1 << PP2_TX_CPU_MAP_BITS) - 1) << PP2_TX_CPU_MAP_OFFS) |
| |
| |
| /************************** Buffer Header defines ******************************/ |
| typedef struct pp2_buff_hdr { |
| MV_U32 nextBuffPhysAddr; |
| MV_U32 nextBuffVirtAddr; |
| MV_U16 byteCount; |
| MV_U16 info; |
| MV_U8 bmQset; |
| } PP2_BUFF_HDR; |
| |
| |
| |
| /* info bits */ |
| #define PP2_BUFF_HDR_INFO_MC_ID_OFFS 0 |
| #define PP2_BUFF_HDR_INFO_MC_ID_MASK (0xfff << PP2_BUFF_HDR_INFO_MC_ID_OFFS) |
| #define PP2_BUFF_HDR_INFO_MC_ID(info) ((info & PP2_BUFF_HDR_INFO_MC_ID_MASK) >> PP2_BUFF_HDR_INFO_MC_ID_OFFS) |
| |
| #define PP2_BUFF_HDR_INFO_LAST_OFFS 12 |
| #define PP2_BUFF_HDR_INFO_LAST_MASK (0x1 << PP2_BUFF_HDR_INFO_LAST_OFFS) |
| #define PP2_BUFF_HDR_INFO_IS_LAST(info) ((info & PP2_BUFF_HDR_INFO_LAST_MASK) >> PP2_BUFF_HDR_INFO_LAST_OFFS) |
| |
| /* bmQset bits */ |
| #define PP2_BUFF_HDR_BM_QSET_NUM_OFFS 0 |
| #define PP2_BUFF_HDR_BM_QSET_NUM_MASK (0x7f << PP2_BUFF_HDR_BM_QSET_NUM_OFFS) |
| |
| #define PP2_BUFF_HDR_BM_QSET_TYPE_OFFS 7 |
| #define PP2_BUFF_HDR_BM_QSET_TYPE_MASK (0x1 << PP2_BUFF_HDR_BM_QSET_TYPE_OFFS) |
| |
| /************************** Ethernet misc ******************************/ |
| |
| #define ETH_MAX_DECODE_WIN 6 |
| #define ETH_MAX_HIGH_ADDR_REMAP_WIN 4 |
| |
| /**** Address decode registers ****/ |
| |
| #define ETH_WIN_BASE_REG(win) (MV_PP2_REG_BASE + 0x4000 + ((win) << 2)) |
| #define ETH_WIN_SIZE_REG(win) (MV_PP2_REG_BASE + 0x4020 + ((win) << 2)) |
| #define ETH_WIN_REMAP_REG(win) (MV_PP2_REG_BASE + 0x4040 + ((win) << 2)) |
| #define ETH_BASE_ADDR_ENABLE_REG (MV_PP2_REG_BASE + 0x4060) |
| |
| /* The target associated with this window*/ |
| #define ETH_WIN_TARGET_OFFS 0 |
| #define ETH_WIN_TARGET_MASK (0xf << ETH_WIN_TARGET_OFFS) |
| /* The target attributes associated with window */ |
| #define ETH_WIN_ATTR_OFFS 8 |
| #define ETH_WIN_ATTR_MASK (0xff << ETH_WIN_ATTR_OFFS) |
| |
| /* The Base address associated with window */ |
| #define ETH_WIN_BASE_OFFS 16 |
| #define ETH_WIN_BASE_MASK (0xFFFF << ETH_WIN_BASE_OFFS) |
| |
| #define ETH_WIN_SIZE_OFFS 16 |
| #define ETH_WIN_SIZE_MASK (0xFFFF << ETH_WIN_SIZE_OFFS) |
| /*-----------------------------------------------------------------------------------------------*/ |
| |
| #define ETH_TARGET_DEF_ADDR_REG (MV_PP2_REG_BASE + 0x4064) |
| #define ETH_TARGET_DEF_ID_REG (MV_PP2_REG_BASE + 0x4068) |
| /*-----------------------------------------------------------------------------------------------*/ |
| |
| #endif /* __MV_PP2_GBE_REGS_H__ */ |