/*******************************************************************************
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_TCAM_H__
#define __MV_TCAM_H__

/************************** NETA PNC Registers ******************************/

#define MV_PNC_LOOP_CTRL_REG 				(MV_PNC_REG_BASE + 0x00)

#define MV_PNC_TCAM_CTRL_REG 				(MV_PNC_REG_BASE + 0x04)

#define MV_PNC_TCAM_POWER_UP_OFFS			0
#define MV_PNC_TCAM_POWER_UP(array)			(1 << ((array) + MV_PNC_TCAM_POWER_UP_OFFS))
/*-------------------------------------------------------------------------------*/

#define MV_PNC_INIT_OFFS_REG 				(MV_PNC_REG_BASE + 0x08)

#define MV_PNC_PORT_BUF_INIT_BITS			6
#define MV_PNC_PORT_BUF_INIT_MAX			((1 << MV_PNC_PORT_BUF_INIT_BITS) - 1)
#define MV_PNC_PORT_BUF_INIT_MASK(port)		(MV_PNC_PORT_BUF_INIT_MAX << ((port) * MV_PNC_PORT_BUF_INIT_BITS))
#define MV_PNC_PORT_BUF_INIT_VAL(port, val)	((val) << ((port) * MV_PNC_PORT_BUF_INIT_BITS))
/*-------------------------------------------------------------------------------*/

#define MV_PNC_INIT_LOOKUP_REG 				(MV_PNC_REG_BASE + 0x0C)

#define MV_PNC_PORT_LU_INIT_BITS			4
#define MV_PNC_PORT_LU_INIT_MAX				((1 << MV_PNC_PORT_LU_INIT_BITS) - 1)
#define MV_PNC_PORT_LU_INIT_MASK(port)		(MV_PNC_PORT_BUF_INIT_MAX << ((port) * MV_PNC_PORT_LU_INIT_BITS))
#define MV_PNC_PORT_LU_INIT_VAL(port, val)	((val) << ((port) * MV_PNC_PORT_LU_INIT_BITS))
/*-------------------------------------------------------------------------------*/

#define MV_PNC_CAUSE_REG 					(MV_PNC_REG_BASE + 0x10)
#define MV_PNC_MASK_REG 					(MV_PNC_REG_BASE + 0x14)

#define MV_PNC_HIT_SEQ0_REG					(MV_PNC_REG_BASE + 0x18)

#define MV_PNC_HIT_ENABLE_BIT				0
#define MV_PNC_HIT_ENABLE_MASK				(1 << MV_PNC_HIT_ENABLE_BIT)

#define MV_PNC_HIT_PORT_OFFS				1
#define MV_PNC_HIT_PORT_BITS				3
#define MV_PNC_HIT_PORT_MAX					((1 << MV_PNC_HIT_PORT_BITS) - 1)
#define MV_PNC_HIT_PORT_MASK				(MV_PNC_HIT_PORT_MAX << MV_PNC_HIT_PORT_OFFS)
#define MV_PNC_HIT_PORT(port)				(port << MV_PNC_HIT_PORT_OFFS)
/*-------------------------------------------------------------------------------*/

#define MV_PNC_HIT_SEQ1_REG					(MV_PNC_REG_BASE + 0x1C)
#define MV_PNC_HIT_SEQ2_REG					(MV_PNC_REG_BASE + 0x20)
#define MV_PNC_XBAR_RET_REG					(MV_PNC_REG_BASE + 0x24)
/*-------------------------------------------------------------------------------*/


#ifdef MV_ETH_PNC_AGING
#define PNC_AGING_CNTRS_ADDR_MASK       (0 << 12)
#define PNC_AGING_GROUPS_ADDR_MASK      (1 << 12)
#define PNC_AGING_SCANNER_ADDR_MASK     (2 << 12)

#define PNC_AGING_CNTR_IDX_ADDR_OFFS    2
#define PNC_AGING_GROUP_ADDR_OFFS       2
#define PNC_AGING_LOG_ADDR_OFFS         5

#define PNC_AGING_CNTR_OFFS             0
#define PNC_AGING_CNTR_MAX              0x3ffffff
#define PNC_AGING_CNTR_MASK             (PNC_AGING_CNTR_MAX << PNC_AGING_CNTR_OFFS)

#define PNC_AGING_GROUP_OFFS            26
#define PNC_AGING_GROUP_ALL_MASK        (0x3 << PNC_AGING_GROUP_OFFS)
#define PNC_AGING_GROUP_MASK(gr)        ((gr) << PNC_AGING_GROUP_OFFS)

#define PNC_AGING_READ_LU_LOG_BIT       28
#define PNC_AGING_READ_LU_LOG_MASK      (1 << PNC_AGING_READ_LU_LOG_BIT)

#define PNC_AGING_READ_MU_LOG_BIT       29
#define PNC_AGING_READ_MU_LOG_MASK      (1 << PNC_AGING_READ_MU_LOG_BIT)

#define PNC_AGING_SKIP_LU_SCAN_BIT      30
#define PNC_AGING_SKIP_LU_SCAN_MASK     (1 << PNC_AGING_SKIP_LU_SCAN_BIT)

#define PNC_AGING_SKIP_MU_SCAN_BIT      31
#define PNC_AGING_SKIP_MU_SCAN_MASK     (1 << PNC_AGING_SKIP_MU_SCAN_BIT)

#define PNC_AGING_LOG_CNTR_IDX_OFFS     0
#define PNC_AGING_LOG_CNTR_IDX_MASK     (0x3FF << PNC_AGING_LOG_CNTR_IDX_OFFS)

#define PNC_AGING_LOG_VALID_BIT         31
#define PNC_AGING_LOG_VALID_MASK        (1 << PNC_AGING_LOG_VALID_BIT)

#define MV_PNC_AGING_MAX_GROUP              4

/* Aging Control register */
#define MV_PNC_AGING_CTRL_REG               (MV_PNC_REG_BASE + 0x28)

#define MV_PNC_AGING_RESET_ON_READ_BIT      0
#define MV_PNC_AGING_RESET_ON_READ_MASK     (1 << MV_PNC_AGING_RESET_ON_READ_BIT)

#define MV_PNC_AGING_SCAN_VALID_BIT         1
#define MV_PNC_AGING_SCAN_VALID_MASK        (1 << MV_PNC_AGING_SCAN_VALID_BIT)

#define MV_PNC_AGING_GROUP_RESET_OFFS       2
#define MV_PNC_AGING_GROUP_RESET_MASK       (0xF << MV_PNC_AGING_GROUP_RESET_OFFS)
#define MV_PNC_AGING_GROUP_RESET(gr)        (1 << (gr + MV_PNC_AGING_GROUP_RESET_OFFS))

#define MV_PNC_AGING_SCAN_START_BIT         6
#define MV_PNC_AGING_SCAN_START_MASK        (1 << MV_PNC_AGING_SCAN_START_BIT)

#define MV_PNC_AGING_SCAN_DISABLE_BIT       7
#define MV_PNC_AGING_SCAN_DISABLE_MASK      (1 << MV_PNC_AGING_SCAN_DISABLE_BIT)
/*-------------------------------------------------------------------------------*/

#define MV_PNC_AGING_LO_THRESH_REG(gr)      (MV_PNC_REG_BASE + 0x2C + ((gr) << 2))
#define MV_PNC_AGING_HI_THRESH_REG          (MV_PNC_REG_BASE + 0x3C)
/*-------------------------------------------------------------------------------*/
#endif /* MV_ETH_PNC_AGING */

#ifdef MV_ETH_PNC_LB

#define MV_PNC_LB_TBL_ACCESS_REG            (MV_PNC_REG_BASE + 0x40)

#define MV_PNC_LB_TBL_ADDR_OFFS             0
#define MV_PNC_LB_TBL_ADDR_MASK             (0x3F << MV_PNC_LB_TBL_ADDR_OFFS)

#define MV_PNC_LB_TBL_DATA_OFFS             6
#define MV_PNC_LB_TBL_DATA_MASK             (0xFFF << MV_PNC_LB_TBL_DATA_OFFS)

#define MV_PNC_LB_TBL_WRITE_TRIG_BIT        18
#define MV_PNC_LB_TBL_WRITE_TRIG_MASK       (1 << MV_PNC_LB_TBL_WRITE_TRIG_BIT)
/*-------------------------------------------------------------------------------*/

#define MV_PNC_LB_CRC_INIT_REG              (MV_PNC_REG_BASE + 0x44)
#endif /* MV_ETH_PNC_LB */


#define MV_PNC_TCAM_ARRAY_SIZE		256
#define MV_PNC_TOTAL_DATA_SIZE		120
#define MV_PNC_LOOKUP_DATA_SIZE		24

#ifdef MV_ETH_PNC_NEW
#define PNC_TCAM_ACCESS_MASK        (BIT18)
#define PNC_SRAM_ACCESS_MASK        (BIT18 | BIT16)
#define PNC_AGING_ACCESS_MASK       (BIT18 | BIT17)
#define SRAM_LEN                    5 /* SRAM in words */
#define SRAM_FMT                    "%5.5x %8.8x %8.8x %8.8x %8.8x"
#define SRAM_VAL(p)                 p[4] & 0xFFFFF, p[3], p[2], p[1], p[0]
#else
#define PNC_TCAM_ACCESS_MASK        (BIT17)
#define PNC_SRAM_ACCESS_MASK        (BIT17 | BIT16)
#define SRAM_LEN                    4 /* SRAM in words */
#define SRAM_FMT                    "%8.8x %8.8x %8.8x %8.8x"
#define SRAM_VAL(p)                 p[3], p[2], p[1], p[0]
#endif /* MV_ETH_PNC_NEW */

#define TCAM_LEN                    7 /* TCAM key/mask in words */

#define TCAM_LINE_INDEX_OFFS	6
#define TCAM_WORD_ENTRY_OFFS	2

#define AI_WORD					6
#define AI_OFFS					0
#define AI_BITS  				7
#define AI_MASK					((1 << AI_BITS) - 1)

#define PORT_WORD				6
#define PORT_OFFS				7
#define PORT_BITS  				5
#define PORT_MASK				((1 << PORT_BITS) - 1)

#define LU_WORD					6
#define LU_OFFS					12
#define LU_BITS  				4
#define LU_MASK					((1 << LU_BITS) - 1)

#ifdef MV_ETH_PNC_NEW
#define RI_EXTRA_BITS  		    12
#define RI_EXTRA_MASK			((1 << RI_EXTRA_BITS) - 1)

#define FLOW_CTRL_BITS          8
#define FLOW_PART_BITS          4
#else
#define FLOW_CTRL_BITS          2
#define FLOW_PART_BITS          16
#endif /* MV_ETH_PNC_NEW */
#define NEXT_LU_SHIFT_BITS	3
#define NEXT_LU_SHIFT_MASK	((1 << NEXT_LU_SHIFT_BITS) - 1)

#define LU_DONE_BITS		1
#define LU_DONE_MASK		((1 << LU_DONE_BITS) - 1)

#define FLOW_CTRL_MASK          ((1 << FLOW_CTRL_BITS) - 1)
#define FLOW_CTRL_HALF_MASK     ((1 << (FLOW_CTRL_BITS / 2)) - 1)
#define FLOW_PART_MASK          ((1 << FLOW_PART_BITS) - 1)
#define FLOW_VALUE_MASK         0xFFFFFFFF


#define RI_BITS  				24
#define RI_MASK					((1 << RI_BITS) - 1)

#define SHIFT_VAL_BITS			7
#define SHIFT_VAL_MASK			((1 << SHIFT_VAL_BITS) - 1)
#define SHIFT_IDX_BITS			3
#define SHIFT_IDX_MASK			((1 << SHIFT_IDX_BITS) - 1)
#define RXQ_BITS				3
#define RXQ_MASK				((1 << RXQ_BITS) - 1)

#define LB_QUEUE_BITS           2
#define LB_QUEUE_MASK			((1 << LB_QUEUE_BITS) - 1)
#define LB_DISABLE_VALUE		0
#define LB_2_TUPLE_VALUE		1
#define LB_4_TUPLE_VALUE		2

#define FLOW_VALUE_OFFS 		0   /* 32 bits */
#define FLOW_CTRL_OFFS			32  /* 8 bits */

/* PNC SRAM Layout */
#ifdef MV_ETH_PNC_NEW
#define RI_VALUE_OFFS 			40  /* 24 bits */
#define RI_MASK_OFFS  			64  /* 24 bits */
#define RI_VALUE_15_0_MASK		0xFFFF
#define RI_VALUE_23_16_MASK		0xFF

#define RI_EXTRA_VALUE_OFFS 	88  /* 12 bits */
#define RI_EXTRA_CTRL_OFFS  	100 /* 6 bits */

#define SHIFT_VAL_OFFS 			106	/* 7 bits - shift update value offset */
#define SHIFT_IDX_OFFS 			113	/* 3 bits - shift update index offset */
#define RXQ_INFO_OFFS  			116 /* 1 bit */
#define RXQ_QUEUE_OFFS 			117 /* 3 bits */
#define LB_QUEUE_OFFS           120 /* 2 bits - load balancing queue info */
#define NEXT_LU_SHIFT_OFFS  	122 /* 3 bits */
#define LU_DONE_OFFS  			125 /* 1 bit */
#define KEY_TYPE_OFFS           126 /* 4 bits */
#define AI_VALUE_OFFS 			130 /* 7 bits */
#define AI_MASK_OFFS  			137 /* 7 bits */
#define LU_ID_OFFS  			144 /* 4 bits */
#else /* Old PNC version (z1) */
#define RI_VALUE_OFFS 			34
#define RI_MASK_OFFS  			58
#define SHIFT_VAL_OFFS 			82	/* shift update value offset */
#define SHIFT_IDX_OFFS 			89	/* shift update index offset */
#define RXQ_INFO_OFFS  			92
#define RXQ_QUEUE_OFFS 			93
#define NEXT_LU_SHIFT_OFFS  	96
#define LU_DONE_OFFS  			99
#define AI_VALUE_OFFS 			104
#define AI_MASK_OFFS  			111
#define LU_ID_OFFS  			118
#endif /* MV_ETH_PNC_NEW */

#define SHIFT_IP4_HLEN			126 /* IPv4 dynamic shift index */
#define SHIFT_IP6_HLEN			127 /* IPv6 dynamic shift index */

/*
 * TCAM misc/control
 */
#define TCAM_F_INV 				1
#define TCAM_TEXT				16

/*
 * TCAM control
 */
struct tcam_ctrl {
	unsigned int index;
	unsigned int flags;
	unsigned char text[TCAM_TEXT];
};

/*
 * TCAM key
 */
struct tcam_data {
	union {
		unsigned int word[TCAM_LEN];
		unsigned char byte[TCAM_LEN*4];
	} u;
};

/*
 * TCAM mask
 */
struct tcam_mask {
	union {
		unsigned int word[TCAM_LEN];
		unsigned char byte[TCAM_LEN*4];
	} u;
};

/*
 * SRAM entry
 */
struct sram_entry {
	unsigned int word[SRAM_LEN];
};

/*
 * TCAM entry
 */
struct tcam_entry {
	struct tcam_data data;
	struct tcam_mask mask;
	struct sram_entry sram;
	struct tcam_ctrl ctrl;
}  __attribute__((packed));

/*
 * TCAM Low Level API
 */
#ifdef MV_ETH_PNC_NEW
void sram_sw_set_rinfo_extra(struct tcam_entry *te, unsigned int ri_extra);
void sram_sw_set_load_balance(struct tcam_entry *te, unsigned int value);
#endif /* MV_ETH_PNC_NEW */

struct tcam_entry *tcam_sw_alloc(unsigned int section);
void tcam_sw_free(struct tcam_entry *te);
int tcam_sw_dump(struct tcam_entry *te, char *buf);
void tcam_sw_clear(struct tcam_entry *te);

void tcam_sw_set_port(struct tcam_entry *te, unsigned int port, unsigned int mask);
void tcam_sw_get_port(struct tcam_entry *te, unsigned int *port, unsigned int *mask);

void tcam_sw_set_lookup_all(struct tcam_entry *te);
void tcam_sw_set_lookup(struct tcam_entry *te, unsigned int lookup);
void tcam_sw_get_lookup(struct tcam_entry *te, unsigned int *lookup, unsigned int *mask);
void tcam_sw_set_ainfo(struct tcam_entry *te, unsigned int bits, unsigned int mask);
void tcam_sw_get_ainfo(struct tcam_entry *te, int *data, int *mask);
void tcam_sw_set_byte(struct tcam_entry *te, unsigned int offset, unsigned char data);

int  tcam_sw_cmp_byte(struct tcam_entry *te, unsigned int offset, unsigned char data);
int  tcam_sw_cmp_bytes(struct tcam_entry *te, unsigned int offset, unsigned int size, unsigned char *data);

void tcam_sw_set_mask(struct tcam_entry *te, unsigned int offset, unsigned char mask);
void sram_sw_clear(struct sram_entry *se);
void sram_sw_set_rinfo(struct tcam_entry *te, unsigned int rinfo, unsigned int mask);
void sram_sw_set_shift_update(struct tcam_entry *te, unsigned int index, unsigned int value);
void sram_sw_set_rxq(struct tcam_entry *te, unsigned int rxq, unsigned int force);

unsigned int sram_sw_get_rxq(struct tcam_entry *te, unsigned int *force);

void sram_sw_set_next_lookup_shift(struct tcam_entry *te, unsigned int index);
void sram_sw_set_lookup_done(struct tcam_entry *te, unsigned int value);
void sram_sw_set_next_lookup_shift(struct tcam_entry *te, unsigned int value);
void sram_sw_set_ainfo(struct tcam_entry *te, unsigned int bits, unsigned int mask);
void sram_sw_set_next_lookup(struct tcam_entry *te, unsigned int lookup);
void sram_sw_set_flowid(struct tcam_entry *te, unsigned int flowid, unsigned int mask);
void sram_sw_set_flowid_partial(struct tcam_entry *te, unsigned int flowid, unsigned int idx);
void tcam_sw_text(struct tcam_entry *te, char *text);
int tcam_hw_write(struct tcam_entry *te, int tid);
int tcam_hw_read(struct tcam_entry *te, int tid);
void tcam_hw_inv(int tid);
void tcam_hw_inv_all(void);
void tcam_hw_debug(int);
int tcam_hw_dump(int);
int tcam_hw_hits(char *buf);
void tcam_hw_record(int);
int tcam_hw_init(void);

#endif

