/* *********************************************************************
* BCM1280/BCM1480 Board Support Package
*
* Hash and Route Block constants File: bcm1480_hr.h
*
* This module contains constants and macros useful for
* programming the hash and route block of each rx port.
*
* BCM1400 specification level: 1X55_1X80-UM100-D4 (11/24/03)
*
*********************************************************************
*
* Copyright 2000,2001,2002,2003,2004
* Broadcom Corporation. All rights reserved.
*
* This software is furnished under license and may be used and
* copied only in accordance with the following terms and
* conditions. Subject to these conditions, you may download,
* copy, install, use, modify and distribute modified or unmodified
* copies of this software in source and/or binary form. No title
* or ownership is transferred hereby.
*
* 1) Any source code used, modified or distributed must reproduce
* and retain this copyright notice and list of conditions
* as they appear in the source file.
*
* 2) No right is granted to use any trade name, trademark, or
* logo of Broadcom Corporation. The "Broadcom Corporation"
* name may not be used to endorse or promote products derived
* from this software without the prior written permission of
* Broadcom Corporation.
*
* 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED
* WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT
* SHALL BROADCOM BE LIABLE FOR ANY DAMAGES WHATSOEVER, AND IN
* PARTICULAR, BROADCOM SHALL NOT BE LIABLE FOR 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), EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
********************************************************************* */
#ifndef _BCM1480_HR_H
#define _BCM1480_HR_H
#include "sb1250_defs.h"
/*
* H&R to PMI mapping register
*/
#define S_BCM1480_HR_RX2PMI_MAP_LO 0
#define M_BCM1480_HR_RX2PMI_MAP_LO _SB_MAKEMASK(4,S_BCM1480_HR_RX2PMI_MAP_LO)
#define V_BCM1480_HR_RX2PMI_MAP_LO(x) _SB_MAKEVALUE(x,S_BCM1480_HR_RX2PMI_MAP_LO)
#define G_BCM1480_HR_RX2PMI_MAP_LO(x) _SB_GETVALUE(x,S_BCM1480_HR_RX2PMI_MAP_LO,M_BCM1480_HR_RX2PMI_MAP_LO)
#define K_BCM1480_HR_RX2PMI_MAP_7_0 0
#define K_BCM1480_HR_RX2PMI_MAP_15_8 1
#define K_BCM1480_HR_RX2PMI_MAP_23_16 2
#define K_BCM1480_HR_RX2PMI_MAP_31_24 3
#define S_BCM1480_HR_RX2PMI_MAP_HI 4
#define M_BCM1480_HR_RX2PMI_MAP_HI _SB_MAKEMASK(4,S_BCM1480_HR_RX2PMI_MAP_HI)
#define V_BCM1480_HR_RX2PMI_MAP_HI(x) _SB_MAKEVALUE(x,S_BCM1480_HR_RX2PMI_MAP_HI)
#define G_BCM1480_HR_RX2PMI_MAP_HI(x) _SB_GETVALUE(x,S_BCM1480_HR_RX2PMI_MAP_HI,M_BCM1480_HR_RX2PMI_MAP_HI)
/*
* H&R Configuration Register (Table 283)
*/
#define S_BCM1480_HR_HEADER_PTR 0
#define M_BCM1480_HR_HEADER_PTR _SB_MAKEMASK(8,S_BCM1480_HR_HEADER_PTR)
#define V_BCM1480_HR_HEADER_PTR(x) _SB_MAKEVALUE(x,S_BCM1480_HR_HEADER_PTR)
#define G_BCM1480_HR_HEADER_PTR(x) _SB_GETVALUE(x,S_BCM1480_HR_HEADER_PTR,M_BCM1480_HR_HEADER_PTR)
#define M_BCM1480_HR_HDR_PTR_IMMD _SB_MAKEMASK1(8)
#define M_BCM1480_HR_SELECT_PTNUM_TO_TAG _SB_MAKEMASK1(9)
#define M_BCM1480_HR_PT_UNMATCH_ENABLE _SB_MAKEMASK1(10)
#define M_BCM1480_HR_PT_MULTIMATCH_ENABLE _SB_MAKEMASK1(11)
/* XXX The following have field name clashes. Resolution deferred. */
/*
* Rule Operand Configuration Entry (Table 284)
*/
#define S_BCM1480_HR_RULE_OP_OPERAND_3 0
#define M_BCM1480_HR_RULE_OP_OPERAND_3 _SB_MAKEMASK(8,S_BCM1480_HR_RULE_OP_OPERAND_3)
#define V_BCM1480_HR_RULE_OP_OPERAND_3(x) _SB_MAKEVALUE(x,S_BCM1480_HR_RULE_OP_OPERAND_3)
#define G_BCM1480_HR_RULE_OP_OPERAND_3(x) _SB_GETVALUE(x,S_BCM1480_HR_RULE_OP_OPERAND_3,M_BCM1480_HR_RULE_OP_OPERAND_3)
#define S_BCM1480_HR_RULE_OP_OPERAND_2 8
#define M_BCM1480_HR_RULE_OP_OPERAND_2 _SB_MAKEMASK(8,S_BCM1480_HR_RULE_OP_OPERAND_2)
#define V_BCM1480_HR_RULE_OP_OPERAND_2(x) _SB_MAKEVALUE(x,S_BCM1480_HR_RULE_OP_OPERAND_2)
#define G_BCM1480_HR_RULE_OP_OPERAND_2(x) _SB_GETVALUE(x,S_BCM1480_HR_RULE_OP_OPERAND_2,M_BCM1480_HR_RULE_OP_OPERAND_2)
#define S_BCM1480_HR_RULE_OP_OPERAND_1 16
#define M_BCM1480_HR_RULE_OP_OPERAND_1 _SB_MAKEMASK(8,S_BCM1480_HR_RULE_OP_OPERAND_1)
#define V_BCM1480_HR_RULE_OP_OPERAND_1(x) _SB_MAKEVALUE(x,S_BCM1480_HR_RULE_OP_OPERAND_1)
#define G_BCM1480_HR_RULE_OP_OPERAND_1(x) _SB_GETVALUE(x,S_BCM1480_HR_RULE_OP_OPERAND_1,M_BCM1480_HR_RULE_OP_OPERAND_1)
#define S_BCM1480_HR_RULE_OP_OPERAND_0 24
#define M_BCM1480_HR_RULE_OP_OPERAND_0 _SB_MAKEMASK(8,S_BCM1480_HR_RULE_OP_OPERAND_0)
#define V_BCM1480_HR_RULE_OP_OPERAND_0(x) _SB_MAKEVALUE(x,S_BCM1480_HR_RULE_OP_OPERAND_0)
#define G_BCM1480_HR_RULE_OP_OPERAND_0(x) _SB_GETVALUE(x,S_BCM1480_HR_RULE_OP_OPERAND_0,M_BCM1480_HR_RULE_OP_OPERAND_0)
#define S_BCM1480_HR_RULE_OP_ENABLE_3 32
#define M_BCM1480_HR_RULE_OP_ENABLE_3 _SB_MAKEMASK(8,S_BCM1480_HR_RULE_OP_ENABLE_3)
#define V_BCM1480_HR_RULE_OP_ENABLE_3(x) _SB_MAKEVALUE(x,S_BCM1480_HR_RULE_OP_ENABLE_3)
#define G_BCM1480_HR_RULE_OP_ENABLE_3(x) _SB_GETVALUE(x,S_BCM1480_HR_RULE_OP_ENABLE_3,M_BCM1480_HR_RULE_OP_ENABLE_3)
#define S_BCM1480_HR_RULE_OP_ENABLE_2 40
#define M_BCM1480_HR_RULE_OP_ENABLE_2 _SB_MAKEMASK(8,S_BCM1480_HR_RULE_OP_ENABLE_2)
#define V_BCM1480_HR_RULE_OP_ENABLE_2(x) _SB_MAKEVALUE(x,S_BCM1480_HR_RULE_OP_ENABLE_2)
#define G_BCM1480_HR_RULE_OP_ENABLE_2(x) _SB_GETVALUE(x,S_BCM1480_HR_RULE_OP_ENABLE_2,M_BCM1480_HR_RULE_OP_ENABLE_2)
#define S_BCM1480_HR_RULE_OP_ENABLE_1 48
#define M_BCM1480_HR_RULE_OP_ENABLE_1 _SB_MAKEMASK(8,S_BCM1480_HR_RULE_OP_ENABLE_1)
#define V_BCM1480_HR_RULE_OP_ENABLE_1(x) _SB_MAKEVALUE(x,S_BCM1480_HR_RULE_OP_ENABLE_1)
#define G_BCM1480_HR_RULE_OP_ENABLE_1(x) _SB_GETVALUE(x,S_BCM1480_HR_RULE_OP_ENABLE_1,M_BCM1480_HR_RULE_OP_ENABLE_1)
#define S_BCM1480_HR_RULE_OP_ENABLE_0 56
#define M_BCM1480_HR_RULE_OP_ENABLE_0 _SB_MAKEMASK(8,S_BCM1480_HR_RULE_OP_ENABLE_0)
#define V_BCM1480_HR_RULE_OP_ENABLE_0(x) _SB_MAKEVALUE(x,S_BCM1480_HR_RULE_OP_ENABLE_0)
#define G_BCM1480_HR_RULE_OP_ENABLE_0(x) _SB_GETVALUE(x,S_BCM1480_HR_RULE_OP_ENABLE_0,M_BCM1480_HR_RULE_OP_ENABLE_0)
/*
* Rule Type Configuration Entry (Table 285)
*/
/* XXX WORD_OFFSET - clashes */
#define S_BCM1480_HR_RULE_TYPE_WORD_OFST_0 0
#define M_BCM1480_HR_RULE_TYPE_WORD_OFST_0 _SB_MAKEMASK(6,S_BCM1480_HR_RULE_TYPE_WORD_OFST_0)
#define V_BCM1480_HR_RULE_TYPE_WORD_OFST_0(x) _SB_MAKEVALUE(x,S_BCM1480_HR_RULE_TYPE_WORD_OFST_0)
#define G_BCM1480_HR_RULE_TYPE_WORD_OFST_0(x) _SB_GETVALUE(x,S_BCM1480_HR_RULE_TYPE_WORD_OFST_0,M_BCM1480_HR_RULE_TYPE_WORD_OFST_0)
/* XXX SELECT - clashes */
#define M_BCM1480_HR_RULE_TYPE_SEL_0 _SB_MAKEMASK1(8)
/*
* Path Definition Entry (Table 286)
*/
#define S_BCM1480_HR_ENABLE 0
#define M_BCM1480_HR_ENABLE _SB_MAKEMASK(16,S_BCM1480_HR_ENABLE)
#define V_BCM1480_HR_ENABLE(x) _SB_MAKEVALUE(x,S_BCM1480_HR_ENABLE)
#define G_BCM1480_HR_ENABLE(x) _SB_GETVALUE(x,S_BCM1480_HR_ENABLE,M_BCM1480_HR_ENABLE)
#define S_BCM1480_HR_TEST 16
#define M_BCM1480_HR_TEST _SB_MAKEMASK(16,S_BCM1480_HR_TEST)
#define V_BCM1480_HR_TEST(x) _SB_MAKEVALUE(x,S_BCM1480_HR_TEST)
#define G_BCM1480_HR_TEST(x) _SB_GETVALUE(x,S_BCM1480_HR_TEST,M_BCM1480_HR_TEST)
#define S_BCM1480_HR_PATH_DATA 32
#define M_BCM1480_HR_PATH_DATA _SB_MAKEMASK(16,S_BCM1480_HR_PATH_DATA)
#define V_BCM1480_HR_PATH_DATA(x) _SB_MAKEVALUE(x,S_BCM1480_HR_PATH_DATA)
#define G_BCM1480_HR_PATH_DATA(x) _SB_GETVALUE(x,S_BCM1480_HR_PATH_DATA,M_BCM1480_HR_PATH_DATA)
#define S_BCM1480_HR_PATH_DATA_DEST 44
#define M_BCM1480_HR_PATH_DATA_DEST _SB_MAKEMASK(2,S_BCM1480_HR_PATH_DATA_DEST)
#define V_BCM1480_HR_PATH_DATA_DEST(x) _SB_MAKEVALUE(x,S_BCM1480_HR_PATH_DATA_DEST)
#define G_BCM1480_HR_PATH_DATA_DEST(x) _SB_GETVALUE(x,S_BCM1480_HR_PATH_DATA_DEST,M_BCM1480_HR_PATH_DATA_DEST)
#define S_BCM1480_HR_PATH_DATA_VC 36
#define M_BCM1480_HR_PATH_DATA_VC _SB_MAKEMASK(4,S_BCM1480_HR_PATH_DATA_VC)
#define V_BCM1480_HR_PATH_DATA_VC(x) _SB_MAKEVALUE(x,S_BCM1480_HR_PATH_DATA_VC)
#define G_BCM1480_HR_PATH_DATA_VC(x) _SB_GETVALUE(x,S_BCM1480_HR_PATH_DATA_VC,M_BCM1480_HR_PATH_DATA_VC)
#define S_BCM1480_HR_PATH_DATA_NDEST 32
#define M_BCM1480_HR_PATH_DATA_NDEST _SB_MAKEMASK(4,S_BCM1480_HR_PATH_DATA_NDEST)
#define V_BCM1480_HR_PATH_DATA_NDEST(x) _SB_MAKEVALUE(x,S_BCM1480_HR_PATH_DATA_NDEST)
#define G_BCM1480_HR_PATH_DATA_NDEST(x) _SB_GETVALUE(x,S_BCM1480_HR_PATH_DATA_NDEST,M_BCM1480_HR_PATH_DATA_NDEST)
#define S_BCM1480_HR_PATH_TYPE 48
#define M_BCM1480_HR_PATH_TYPE _SB_MAKEMASK(3,S_BCM1480_HR_PATH_TYPE)
#define V_BCM1480_HR_PATH_TYPE(x) _SB_MAKEVALUE(x,S_BCM1480_HR_PATH_TYPE)
#define G_BCM1480_HR_PATH_TYPE(x) _SB_GETVALUE(x,S_BCM1480_HR_PATH_TYPE,M_BCM1480_HR_PATH_TYPE)
#define K_BCM1480_HR_PATH_TYPE_OVC 0x0
#define K_BCM1480_HR_PATH_TYPE_RTI 0x1
#define K_BCM1480_HR_PATH_TYPE_HA_LEAF0 0x2
#define K_BCM1480_HR_PATH_TYPE_EX_LEAF0 0x4
/* end of clashes */
/*
* Hash leaf0 Data Word Definition Entry (Table 287)
*/
#define S_BCM1480_HR_ENABLE_3 0
#define M_BCM1480_HR_ENABLE_3 _SB_MAKEMASK(8,S_BCM1480_HR_ENABLE_3)
#define V_BCM1480_HR_ENABLE_3(x) _SB_MAKEVALUE(x,S_BCM1480_HR_ENABLE_3)
#define G_BCM1480_HR_ENABLE_3(x) _SB_GETVALUE(x,S_BCM1480_HR_ENABLE_3,M_BCM1480_HR_ENABLE_3)
#define S_BCM1480_HR_ENABLE_2 8
#define M_BCM1480_HR_ENABLE_2 _SB_MAKEMASK(8,S_BCM1480_HR_ENABLE_2)
#define V_BCM1480_HR_ENABLE_2(x) _SB_MAKEVALUE(x,S_BCM1480_HR_ENABLE_2)
#define G_BCM1480_HR_ENABLE_2(x) _SB_GETVALUE(x,S_BCM1480_HR_ENABLE_2,M_BCM1480_HR_ENABLE_2)
#define S_BCM1480_HR_ENABLE_1 16
#define M_BCM1480_HR_ENABLE_1 _SB_MAKEMASK(8,S_BCM1480_HR_ENABLE_1)
#define V_BCM1480_HR_ENABLE_1(x) _SB_MAKEVALUE(x,S_BCM1480_HR_ENABLE_1)
#define G_BCM1480_HR_ENABLE_1(x) _SB_GETVALUE(x,S_BCM1480_HR_ENABLE_1,M_BCM1480_HR_ENABLE_1)
#define S_BCM1480_HR_ENABLE_0 24
#define M_BCM1480_HR_ENABLE_0 _SB_MAKEMASK(8,S_BCM1480_HR_ENABLE_0)
#define V_BCM1480_HR_ENABLE_0(x) _SB_MAKEVALUE(x,S_BCM1480_HR_ENABLE_0)
#define G_BCM1480_HR_ENABLE_0(x) _SB_GETVALUE(x,S_BCM1480_HR_ENABLE_0,M_BCM1480_HR_ENABLE_0)
#define S_BCM1480_HR_WORD_OFFSET 32
#define M_BCM1480_HR_WORD_OFFSET _SB_MAKEMASK(6,S_BCM1480_HR_WORD_OFFSET)
#define V_BCM1480_HR_WORD_OFFSET(x) _SB_MAKEVALUE(x,S_BCM1480_HR_WORD_OFFSET)
#define G_BCM1480_HR_WORD_OFFSET(x) _SB_GETVALUE(x,S_BCM1480_HR_WORD_OFFSET,M_BCM1480_HR_WORD_OFFSET)
#define M_BCM1480_HR_SELECT _SB_MAKEMASK1(40)
/*
* Extract leaf0 Extract Definition Register (Table 288)
*/
#define S_BCM1480_HR_WORD_OFFSET_LOW 0
#define M_BCM1480_HR_WORD_OFFSET_LOW _SB_MAKEMASK(6,S_BCM1480_HR_WORD_OFFSET_LOW)
#define V_BCM1480_HR_WORD_OFFSET_LOW(x) _SB_MAKEVALUE(x,S_BCM1480_HR_WORD_OFFSET_LOW)
#define G_BCM1480_HR_WORD_OFFSET_LOW(x) _SB_GETVALUE(x,S_BCM1480_HR_WORD_OFFSET_LOW,M_BCM1480_HR_WORD_OFFSET_LOW)
#define M_BCM1480_HR_SELECT_LOW _SB_MAKEMASK1(8)
#define S_BCM1480_HR_ENABLE_LOW 16
#define M_BCM1480_HR_ENABLE_LOW _SB_MAKEMASK(4,S_BCM1480_HR_ENABLE_LOW)
#define V_BCM1480_HR_ENABLE_LOW(x) _SB_MAKEVALUE(x,S_BCM1480_HR_ENABLE_LOW)
#define G_BCM1480_HR_ENABLE_LOW(x) _SB_GETVALUE(x,S_BCM1480_HR_ENABLE_LOW,M_BCM1480_HR_ENABLE_LOW)
#define S_BCM1480_HR_NIB_OFFSET_LOW 20
#define M_BCM1480_HR_NIB_OFFSET_LOW _SB_MAKEMASK(3,S_BCM1480_HR_NIB_OFFSET_LOW)
#define V_BCM1480_HR_NIB_OFFSET_LOW(x) _SB_MAKEVALUE(x,S_BCM1480_HR_NIB_OFFSET_LOW)
#define G_BCM1480_HR_NIB_OFFSET_LOW(x) _SB_GETVALUE(x,S_BCM1480_HR_NIB_OFFSET_LOW,M_BCM1480_HR_NIB_OFFSET_LOW)
#define S_BCM1480_HR_WORD_OFFSET_HIGH 32
#define M_BCM1480_HR_WORD_OFFSET_HIGH _SB_MAKEMASK(6,S_BCM1480_HR_WORD_OFFSET_HIGH)
#define V_BCM1480_HR_WORD_OFFSET_HIGH(x) _SB_MAKEVALUE(x,S_BCM1480_HR_WORD_OFFSET_HIGH)
#define G_BCM1480_HR_WORD_OFFSET_HIGH(x) _SB_GETVALUE(x,S_BCM1480_HR_WORD_OFFSET_HIGH,M_BCM1480_HR_WORD_OFFSET_HIGH)
#define M_BCM1480_HR_SELECT_HIGH _SB_MAKEMASK1(40)
#define S_BCM1480_HR_ENABLE_HIGH 48
#define M_BCM1480_HR_ENABLE_HIGH _SB_MAKEMASK(4,S_BCM1480_HR_ENABLE_HIGH)
#define V_BCM1480_HR_ENABLE_HIGH(x) _SB_MAKEVALUE(x,S_BCM1480_HR_ENABLE_HIGH)
#define G_BCM1480_HR_ENABLE_HIGH(x) _SB_GETVALUE(x,S_BCM1480_HR_ENABLE_HIGH,M_BCM1480_HR_ENABLE_HIGH)
#define S_BCM1480_HR_NIB_OFFSET_HIGH 52
#define M_BCM1480_HR_NIB_OFFSET_HIGH _SB_MAKEMASK(3,S_BCM1480_HR_NIB_OFFSET_HIGH)
#define V_BCM1480_HR_NIB_OFFSET_HIGH(x) _SB_MAKEVALUE(x,S_BCM1480_HR_NIB_OFFSET_HIGH)
#define G_BCM1480_HR_NIB_OFFSET_HIGH(x) _SB_GETVALUE(x,S_BCM1480_HR_NIB_OFFSET_HIGH,M_BCM1480_HR_NIB_OFFSET_HIGH)
/*
* RX0 Route Table Definition Entry (Table 289)
*/
#define S_BCM1480_HR_NEXT_DEST 0
#define M_BCM1480_HR_NEXT_DEST _SB_MAKEMASK(4,S_BCM1480_HR_NEXT_DEST)
#define V_BCM1480_HR_NEXT_DEST(x) _SB_MAKEVALUE(x,S_BCM1480_HR_NEXT_DEST)
#define G_BCM1480_HR_NEXT_DEST(x) _SB_GETVALUE(x,S_BCM1480_HR_NEXT_DEST,M_BCM1480_HR_NEXT_DEST)
#define S_BCM1480_HR_OVC_IQ 4
#define M_BCM1480_HR_OVC_IQ _SB_MAKEMASK(4,S_BCM1480_HR_OVC_IQ)
#define V_BCM1480_HR_OVC_IQ(x) _SB_MAKEVALUE(x,S_BCM1480_HR_OVC_IQ)
#define G_BCM1480_HR_OVC_IQ(x) _SB_GETVALUE(x,S_BCM1480_HR_OVC_IQ,M_BCM1480_HR_OVC_IQ)
#define S_BCM1480_HR_DEST 12
#define M_BCM1480_HR_DEST _SB_MAKEMASK(2,S_BCM1480_HR_DEST)
#define V_BCM1480_HR_DEST(x) _SB_MAKEVALUE(x,S_BCM1480_HR_DEST)
#define G_BCM1480_HR_DEST(x) _SB_GETVALUE(x,S_BCM1480_HR_DEST,M_BCM1480_HR_DEST)
#define K_BCM1480_HR_DEST_TX0 0x0
#define K_BCM1480_HR_DEST_TX1 0x1
#define K_BCM1480_HR_DEST_TX2 0x2
#define K_BCM1480_HR_DEST_PMI 0x3
/*
* Default Path Register (Table 290)
*/
/* Uses PATH_DATA and PATH_TYPE fields from Path Definition (Table 286) */
#endif /* _BCM1480_HR_H */