/*
 * Linux network driver for Brocade Converged Network Adapter.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License (GPL) Version 2 as
 * published by the Free Software Foundation
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 */
/*
 * Copyright (c) 2005-2010 Brocade Communications Systems, Inc.
 * All rights reserved
 * www.brocade.com
 *
 * File for interrupt macros and functions
 */

#ifndef __BNA_HW_H__
#define __BNA_HW_H__

#include "bfi_ctreg.h"

/**
 *
 * SW imposed limits
 *
 */

#ifndef BNA_BIOS_BUILD

#define BFI_MAX_TXQ			64
#define BFI_MAX_RXQ			64
#define	BFI_MAX_RXF			64
#define BFI_MAX_IB			128
#define	BFI_MAX_RIT_SIZE		256
#define	BFI_RSS_RIT_SIZE		64
#define	BFI_NONRSS_RIT_SIZE		1
#define BFI_MAX_UCMAC			256
#define BFI_MAX_MCMAC			512
#define BFI_IBIDX_SIZE			4
#define BFI_MAX_VLAN			4095

/**
 * There are 2 free IB index pools:
 *	pool1: 120 segments of 1 index each
 *	pool8: 1 segment of 8 indexes
 */
#define BFI_IBIDX_POOL1_SIZE		116
#define	BFI_IBIDX_POOL1_ENTRY_SIZE	1
#define BFI_IBIDX_POOL2_SIZE		2
#define	BFI_IBIDX_POOL2_ENTRY_SIZE	2
#define	BFI_IBIDX_POOL8_SIZE		1
#define	BFI_IBIDX_POOL8_ENTRY_SIZE	8
#define	BFI_IBIDX_TOTAL_POOLS		3
#define	BFI_IBIDX_TOTAL_SEGS		119 /* (POOL1 + POOL2 + POOL8)_SIZE */
#define	BFI_IBIDX_MAX_SEGSIZE		8
#define init_ibidx_pool(name)						\
static struct bna_ibidx_pool name[BFI_IBIDX_TOTAL_POOLS] =		\
{									\
	{ BFI_IBIDX_POOL1_SIZE, BFI_IBIDX_POOL1_ENTRY_SIZE },		\
	{ BFI_IBIDX_POOL2_SIZE, BFI_IBIDX_POOL2_ENTRY_SIZE },		\
	{ BFI_IBIDX_POOL8_SIZE, BFI_IBIDX_POOL8_ENTRY_SIZE }		\
}

/**
 * There are 2 free RIT segment pools:
 * 	Pool1: 192 segments of 1 RIT entry each
 *	Pool2: 1 segment of 64 RIT entry
 */
#define BFI_RIT_SEG_POOL1_SIZE		192
#define BFI_RIT_SEG_POOL1_ENTRY_SIZE	1
#define BFI_RIT_SEG_POOLRSS_SIZE	1
#define BFI_RIT_SEG_POOLRSS_ENTRY_SIZE	64
#define BFI_RIT_SEG_TOTAL_POOLS		2
#define BFI_RIT_TOTAL_SEGS		193 /* POOL1_SIZE + POOLRSS_SIZE */
#define init_ritseg_pool(name)						\
static struct bna_ritseg_pool_cfg name[BFI_RIT_SEG_TOTAL_POOLS] =	\
{									\
	{ BFI_RIT_SEG_POOL1_SIZE, BFI_RIT_SEG_POOL1_ENTRY_SIZE },	\
	{ BFI_RIT_SEG_POOLRSS_SIZE, BFI_RIT_SEG_POOLRSS_ENTRY_SIZE }	\
}

#else /* BNA_BIOS_BUILD */

#define BFI_MAX_TXQ			1
#define BFI_MAX_RXQ			1
#define	BFI_MAX_RXF			1
#define BFI_MAX_IB			2
#define	BFI_MAX_RIT_SIZE		2
#define	BFI_RSS_RIT_SIZE		64
#define	BFI_NONRSS_RIT_SIZE		1
#define BFI_MAX_UCMAC			1
#define BFI_MAX_MCMAC			8
#define BFI_IBIDX_SIZE			4
#define BFI_MAX_VLAN			4095
/* There is one free pool: 2 segments of 1 index each */
#define BFI_IBIDX_POOL1_SIZE		2
#define	BFI_IBIDX_POOL1_ENTRY_SIZE	1
#define	BFI_IBIDX_TOTAL_POOLS		1
#define	BFI_IBIDX_TOTAL_SEGS		2 /* POOL1_SIZE */
#define	BFI_IBIDX_MAX_SEGSIZE		1
#define init_ibidx_pool(name)						\
static struct bna_ibidx_pool name[BFI_IBIDX_TOTAL_POOLS] =		\
{									\
	{ BFI_IBIDX_POOL1_SIZE, BFI_IBIDX_POOL1_ENTRY_SIZE }		\
}

#define BFI_RIT_SEG_POOL1_SIZE		1
#define BFI_RIT_SEG_POOL1_ENTRY_SIZE	1
#define BFI_RIT_SEG_TOTAL_POOLS		1
#define BFI_RIT_TOTAL_SEGS		1 /* POOL1_SIZE */
#define init_ritseg_pool(name)						\
static struct bna_ritseg_pool_cfg name[BFI_RIT_SEG_TOTAL_POOLS] =	\
{									\
	{ BFI_RIT_SEG_POOL1_SIZE, BFI_RIT_SEG_POOL1_ENTRY_SIZE }	\
}

#endif /* BNA_BIOS_BUILD */

#define BFI_RSS_HASH_KEY_LEN		10

#define BFI_COALESCING_TIMER_UNIT	5	/* 5us */
#define BFI_MAX_COALESCING_TIMEO	0xFF	/* in 5us units */
#define BFI_MAX_INTERPKT_COUNT		0xFF
#define BFI_MAX_INTERPKT_TIMEO		0xF	/* in 0.5us units */
#define BFI_TX_COALESCING_TIMEO		20	/* 20 * 5 = 100us */
#define BFI_TX_INTERPKT_COUNT		32
#define	BFI_RX_COALESCING_TIMEO		12	/* 12 * 5 = 60us */
#define	BFI_RX_INTERPKT_COUNT		6	/* Pkt Cnt = 6 */
#define	BFI_RX_INTERPKT_TIMEO		3	/* 3 * 0.5 = 1.5us */

#define BFI_TXQ_WI_SIZE			64	/* bytes */
#define BFI_RXQ_WI_SIZE			8	/* bytes */
#define BFI_CQ_WI_SIZE			16	/* bytes */
#define BFI_TX_MAX_WRR_QUOTA		0xFFF

#define BFI_TX_MAX_VECTORS_PER_WI	4
#define BFI_TX_MAX_VECTORS_PER_PKT	0xFF
#define BFI_TX_MAX_DATA_PER_VECTOR	0xFFFF
#define BFI_TX_MAX_DATA_PER_PKT		0xFFFFFF

/* Small Q buffer size */
#define BFI_SMALL_RXBUF_SIZE		128

/* Defined separately since BFA_FLASH_DMA_BUF_SZ is in bfa_flash.c */
#define BFI_FLASH_DMA_BUF_SZ		0x010000 /* 64K DMA */
#define BFI_HW_STATS_SIZE		0x4000 /* 16K DMA */

/**
 *
 * HW register offsets, macros
 *
 */

/* DMA Block Register Host Window Start Address */
#define DMA_BLK_REG_ADDR		0x00013000

/* DMA Block Internal Registers */
#define DMA_CTRL_REG0			(DMA_BLK_REG_ADDR + 0x000)
#define DMA_CTRL_REG1			(DMA_BLK_REG_ADDR + 0x004)
#define DMA_ERR_INT_STATUS		(DMA_BLK_REG_ADDR + 0x008)
#define DMA_ERR_INT_ENABLE		(DMA_BLK_REG_ADDR + 0x00c)
#define DMA_ERR_INT_STATUS_SET		(DMA_BLK_REG_ADDR + 0x010)

/* APP Block Register Address Offset from BAR0 */
#define APP_BLK_REG_ADDR		0x00014000

/* Host Function Interrupt Mask Registers */
#define HOSTFN0_INT_MASK		(APP_BLK_REG_ADDR + 0x004)
#define HOSTFN1_INT_MASK		(APP_BLK_REG_ADDR + 0x104)
#define HOSTFN2_INT_MASK		(APP_BLK_REG_ADDR + 0x304)
#define HOSTFN3_INT_MASK		(APP_BLK_REG_ADDR + 0x404)

/**
 * Host Function PCIe Error Registers
 * Duplicates "Correctable" & "Uncorrectable"
 * registers in PCIe Config space.
 */
#define FN0_PCIE_ERR_REG		(APP_BLK_REG_ADDR + 0x014)
#define FN1_PCIE_ERR_REG		(APP_BLK_REG_ADDR + 0x114)
#define FN2_PCIE_ERR_REG		(APP_BLK_REG_ADDR + 0x314)
#define FN3_PCIE_ERR_REG		(APP_BLK_REG_ADDR + 0x414)

/* Host Function Error Type Status Registers */
#define FN0_ERR_TYPE_STATUS_REG		(APP_BLK_REG_ADDR + 0x018)
#define FN1_ERR_TYPE_STATUS_REG		(APP_BLK_REG_ADDR + 0x118)
#define FN2_ERR_TYPE_STATUS_REG		(APP_BLK_REG_ADDR + 0x318)
#define FN3_ERR_TYPE_STATUS_REG		(APP_BLK_REG_ADDR + 0x418)

/* Host Function Error Type Mask Registers */
#define FN0_ERR_TYPE_MSK_STATUS_REG	(APP_BLK_REG_ADDR + 0x01c)
#define FN1_ERR_TYPE_MSK_STATUS_REG	(APP_BLK_REG_ADDR + 0x11c)
#define FN2_ERR_TYPE_MSK_STATUS_REG	(APP_BLK_REG_ADDR + 0x31c)
#define FN3_ERR_TYPE_MSK_STATUS_REG	(APP_BLK_REG_ADDR + 0x41c)

/* Catapult Host Semaphore Status Registers (App block) */
#define HOST_SEM_STS0_REG		(APP_BLK_REG_ADDR + 0x630)
#define HOST_SEM_STS1_REG		(APP_BLK_REG_ADDR + 0x634)
#define HOST_SEM_STS2_REG		(APP_BLK_REG_ADDR + 0x638)
#define HOST_SEM_STS3_REG		(APP_BLK_REG_ADDR + 0x63c)
#define HOST_SEM_STS4_REG		(APP_BLK_REG_ADDR + 0x640)
#define HOST_SEM_STS5_REG		(APP_BLK_REG_ADDR + 0x644)
#define HOST_SEM_STS6_REG		(APP_BLK_REG_ADDR + 0x648)
#define HOST_SEM_STS7_REG		(APP_BLK_REG_ADDR + 0x64c)

/* PCIe Misc Register */
#define PCIE_MISC_REG			(APP_BLK_REG_ADDR + 0x200)

/* Temp Sensor Control Registers */
#define TEMPSENSE_CNTL_REG		(APP_BLK_REG_ADDR + 0x250)
#define TEMPSENSE_STAT_REG		(APP_BLK_REG_ADDR + 0x254)

/* APP Block local error registers */
#define APP_LOCAL_ERR_STAT		(APP_BLK_REG_ADDR + 0x258)
#define APP_LOCAL_ERR_MSK		(APP_BLK_REG_ADDR + 0x25c)

/* PCIe Link Error registers */
#define PCIE_LNK_ERR_STAT		(APP_BLK_REG_ADDR + 0x260)
#define PCIE_LNK_ERR_MSK		(APP_BLK_REG_ADDR + 0x264)

/**
 * FCoE/FIP Ethertype Register
 * 31:16 -- Chip wide value for FIP type
 * 15:0  -- Chip wide value for FCoE type
 */
#define FCOE_FIP_ETH_TYPE		(APP_BLK_REG_ADDR + 0x280)

/**
 * Reserved Ethertype Register
 * 31:16 -- Reserved
 * 15:0  -- Other ethertype
 */
#define RESV_ETH_TYPE			(APP_BLK_REG_ADDR + 0x284)

/**
 * Host Command Status Registers
 * Each set consists of 3 registers :
 * clear, set, cmd
 * 16 such register sets in all
 * See catapult_spec.pdf for detailed functionality
 * Put each type in a single macro accessed by _num ?
 */
#define HOST_CMDSTS0_CLR_REG		(APP_BLK_REG_ADDR + 0x500)
#define HOST_CMDSTS0_SET_REG		(APP_BLK_REG_ADDR + 0x504)
#define HOST_CMDSTS0_REG		(APP_BLK_REG_ADDR + 0x508)
#define HOST_CMDSTS1_CLR_REG		(APP_BLK_REG_ADDR + 0x510)
#define HOST_CMDSTS1_SET_REG		(APP_BLK_REG_ADDR + 0x514)
#define HOST_CMDSTS1_REG		(APP_BLK_REG_ADDR + 0x518)
#define HOST_CMDSTS2_CLR_REG		(APP_BLK_REG_ADDR + 0x520)
#define HOST_CMDSTS2_SET_REG		(APP_BLK_REG_ADDR + 0x524)
#define HOST_CMDSTS2_REG		(APP_BLK_REG_ADDR + 0x528)
#define HOST_CMDSTS3_CLR_REG		(APP_BLK_REG_ADDR + 0x530)
#define HOST_CMDSTS3_SET_REG		(APP_BLK_REG_ADDR + 0x534)
#define HOST_CMDSTS3_REG		(APP_BLK_REG_ADDR + 0x538)
#define HOST_CMDSTS4_CLR_REG		(APP_BLK_REG_ADDR + 0x540)
#define HOST_CMDSTS4_SET_REG		(APP_BLK_REG_ADDR + 0x544)
#define HOST_CMDSTS4_REG		(APP_BLK_REG_ADDR + 0x548)
#define HOST_CMDSTS5_CLR_REG		(APP_BLK_REG_ADDR + 0x550)
#define HOST_CMDSTS5_SET_REG		(APP_BLK_REG_ADDR + 0x554)
#define HOST_CMDSTS5_REG		(APP_BLK_REG_ADDR + 0x558)
#define HOST_CMDSTS6_CLR_REG		(APP_BLK_REG_ADDR + 0x560)
#define HOST_CMDSTS6_SET_REG		(APP_BLK_REG_ADDR + 0x564)
#define HOST_CMDSTS6_REG		(APP_BLK_REG_ADDR + 0x568)
#define HOST_CMDSTS7_CLR_REG		(APP_BLK_REG_ADDR + 0x570)
#define HOST_CMDSTS7_SET_REG		(APP_BLK_REG_ADDR + 0x574)
#define HOST_CMDSTS7_REG		(APP_BLK_REG_ADDR + 0x578)
#define HOST_CMDSTS8_CLR_REG		(APP_BLK_REG_ADDR + 0x580)
#define HOST_CMDSTS8_SET_REG		(APP_BLK_REG_ADDR + 0x584)
#define HOST_CMDSTS8_REG		(APP_BLK_REG_ADDR + 0x588)
#define HOST_CMDSTS9_CLR_REG		(APP_BLK_REG_ADDR + 0x590)
#define HOST_CMDSTS9_SET_REG		(APP_BLK_REG_ADDR + 0x594)
#define HOST_CMDSTS9_REG		(APP_BLK_REG_ADDR + 0x598)
#define HOST_CMDSTS10_CLR_REG		(APP_BLK_REG_ADDR + 0x5A0)
#define HOST_CMDSTS10_SET_REG		(APP_BLK_REG_ADDR + 0x5A4)
#define HOST_CMDSTS10_REG		(APP_BLK_REG_ADDR + 0x5A8)
#define HOST_CMDSTS11_CLR_REG		(APP_BLK_REG_ADDR + 0x5B0)
#define HOST_CMDSTS11_SET_REG		(APP_BLK_REG_ADDR + 0x5B4)
#define HOST_CMDSTS11_REG		(APP_BLK_REG_ADDR + 0x5B8)
#define HOST_CMDSTS12_CLR_REG		(APP_BLK_REG_ADDR + 0x5C0)
#define HOST_CMDSTS12_SET_REG		(APP_BLK_REG_ADDR + 0x5C4)
#define HOST_CMDSTS12_REG		(APP_BLK_REG_ADDR + 0x5C8)
#define HOST_CMDSTS13_CLR_REG		(APP_BLK_REG_ADDR + 0x5D0)
#define HOST_CMDSTS13_SET_REG		(APP_BLK_REG_ADDR + 0x5D4)
#define HOST_CMDSTS13_REG		(APP_BLK_REG_ADDR + 0x5D8)
#define HOST_CMDSTS14_CLR_REG		(APP_BLK_REG_ADDR + 0x5E0)
#define HOST_CMDSTS14_SET_REG		(APP_BLK_REG_ADDR + 0x5E4)
#define HOST_CMDSTS14_REG		(APP_BLK_REG_ADDR + 0x5E8)
#define HOST_CMDSTS15_CLR_REG		(APP_BLK_REG_ADDR + 0x5F0)
#define HOST_CMDSTS15_SET_REG		(APP_BLK_REG_ADDR + 0x5F4)
#define HOST_CMDSTS15_REG		(APP_BLK_REG_ADDR + 0x5F8)

/**
 * LPU0 Block Register Address Offset from BAR0
 * Range 0x18000 - 0x18033
 */
#define LPU0_BLK_REG_ADDR		0x00018000

/**
 * LPU0 Registers
 * Should they be directly used from host,
 * except for diagnostics ?
 * CTL_REG : Control register
 * CMD_REG : Triggers exec. of cmd. in
 *           Mailbox memory
 */
#define LPU0_MBOX_CTL_REG		(LPU0_BLK_REG_ADDR + 0x000)
#define LPU0_MBOX_CMD_REG		(LPU0_BLK_REG_ADDR + 0x004)
#define LPU0_MBOX_LINK_0REG		(LPU0_BLK_REG_ADDR + 0x008)
#define LPU1_MBOX_LINK_0REG		(LPU0_BLK_REG_ADDR + 0x00c)
#define LPU0_MBOX_STATUS_0REG		(LPU0_BLK_REG_ADDR + 0x010)
#define LPU1_MBOX_STATUS_0REG		(LPU0_BLK_REG_ADDR + 0x014)
#define LPU0_ERR_STATUS_REG		(LPU0_BLK_REG_ADDR + 0x018)
#define LPU0_ERR_SET_REG		(LPU0_BLK_REG_ADDR + 0x020)

/**
 * LPU1 Block Register Address Offset from BAR0
 * Range 0x18400 - 0x18433
 */
#define LPU1_BLK_REG_ADDR		0x00018400

/**
 * LPU1 Registers
 * Same as LPU0 registers above
 */
#define LPU1_MBOX_CTL_REG		(LPU1_BLK_REG_ADDR + 0x000)
#define LPU1_MBOX_CMD_REG		(LPU1_BLK_REG_ADDR + 0x004)
#define LPU0_MBOX_LINK_1REG		(LPU1_BLK_REG_ADDR + 0x008)
#define LPU1_MBOX_LINK_1REG		(LPU1_BLK_REG_ADDR + 0x00c)
#define LPU0_MBOX_STATUS_1REG		(LPU1_BLK_REG_ADDR + 0x010)
#define LPU1_MBOX_STATUS_1REG		(LPU1_BLK_REG_ADDR + 0x014)
#define LPU1_ERR_STATUS_REG		(LPU1_BLK_REG_ADDR + 0x018)
#define LPU1_ERR_SET_REG		(LPU1_BLK_REG_ADDR + 0x020)

/**
 * PSS Block Register Address Offset from BAR0
 * Range 0x18800 - 0x188DB
 */
#define PSS_BLK_REG_ADDR		0x00018800

/**
 * PSS Registers
 * For details, see catapult_spec.pdf
 * ERR_STATUS_REG : Indicates error in PSS module
 * RAM_ERR_STATUS_REG : Indicates RAM module that detected error
 */
#define ERR_STATUS_SET			(PSS_BLK_REG_ADDR + 0x018)
#define PSS_RAM_ERR_STATUS_REG		(PSS_BLK_REG_ADDR + 0x01C)

/**
 * PSS Semaphore Lock Registers, total 16
 * First read when unlocked returns 0,
 * and is set to 1, atomically.
 * Subsequent reads returns 1.
 * To clear set the value to 0.
 * Range : 0x20 to 0x5c
 */
#define PSS_SEM_LOCK_REG(_num) 		\
	(PSS_BLK_REG_ADDR + 0x020 + ((_num) << 2))

/**
 * PSS Semaphore Status Registers,
 * corresponding to the lock registers above
 */
#define PSS_SEM_STATUS_REG(_num) 		\
	(PSS_BLK_REG_ADDR + 0x060 + ((_num) << 2))

/**
 * Catapult CPQ Registers
 * Defines for Mailbox Registers
 * Used to send mailbox commands to firmware from
 * host. The data part is written to the MBox
 * memory, registers are used to indicate that
 * a commnad is resident in memory.
 *
 * Note : LPU0<->LPU1 mailboxes are not listed here
 */
#define CPQ_BLK_REG_ADDR		0x00019000

#define HOSTFN0_LPU0_MBOX1_CMD_STAT	(CPQ_BLK_REG_ADDR + 0x130)
#define HOSTFN0_LPU1_MBOX1_CMD_STAT	(CPQ_BLK_REG_ADDR + 0x134)
#define LPU0_HOSTFN0_MBOX1_CMD_STAT	(CPQ_BLK_REG_ADDR + 0x138)
#define LPU1_HOSTFN0_MBOX1_CMD_STAT	(CPQ_BLK_REG_ADDR + 0x13C)

#define HOSTFN1_LPU0_MBOX1_CMD_STAT	(CPQ_BLK_REG_ADDR + 0x140)
#define HOSTFN1_LPU1_MBOX1_CMD_STAT	(CPQ_BLK_REG_ADDR + 0x144)
#define LPU0_HOSTFN1_MBOX1_CMD_STAT	(CPQ_BLK_REG_ADDR + 0x148)
#define LPU1_HOSTFN1_MBOX1_CMD_STAT	(CPQ_BLK_REG_ADDR + 0x14C)

#define HOSTFN2_LPU0_MBOX1_CMD_STAT	(CPQ_BLK_REG_ADDR + 0x170)
#define HOSTFN2_LPU1_MBOX1_CMD_STAT	(CPQ_BLK_REG_ADDR + 0x174)
#define LPU0_HOSTFN2_MBOX1_CMD_STAT	(CPQ_BLK_REG_ADDR + 0x178)
#define LPU1_HOSTFN2_MBOX1_CMD_STAT	(CPQ_BLK_REG_ADDR + 0x17C)

#define HOSTFN3_LPU0_MBOX1_CMD_STAT	(CPQ_BLK_REG_ADDR + 0x180)
#define HOSTFN3_LPU1_MBOX1_CMD_STAT	(CPQ_BLK_REG_ADDR + 0x184)
#define LPU0_HOSTFN3_MBOX1_CMD_STAT	(CPQ_BLK_REG_ADDR + 0x188)
#define LPU1_HOSTFN3_MBOX1_CMD_STAT	(CPQ_BLK_REG_ADDR + 0x18C)

/* Host Function Force Parity Error Registers */
#define HOSTFN0_LPU_FORCE_PERR		(CPQ_BLK_REG_ADDR + 0x120)
#define HOSTFN1_LPU_FORCE_PERR		(CPQ_BLK_REG_ADDR + 0x124)
#define HOSTFN2_LPU_FORCE_PERR		(CPQ_BLK_REG_ADDR + 0x128)
#define HOSTFN3_LPU_FORCE_PERR		(CPQ_BLK_REG_ADDR + 0x12C)

/* LL Port[0|1] Halt Mask Registers */
#define LL_HALT_MSK_P0			(CPQ_BLK_REG_ADDR + 0x1A0)
#define LL_HALT_MSK_P1			(CPQ_BLK_REG_ADDR + 0x1B0)

/* LL Port[0|1] Error Mask Registers */
#define LL_ERR_MSK_P0			(CPQ_BLK_REG_ADDR + 0x1D0)
#define LL_ERR_MSK_P1			(CPQ_BLK_REG_ADDR + 0x1D4)

/* EMC FLI (Flash Controller) Block Register Address Offset from BAR0 */
#define FLI_BLK_REG_ADDR		0x0001D000

/* EMC FLI Registers */
#define FLI_CMD_REG			(FLI_BLK_REG_ADDR + 0x000)
#define FLI_ADDR_REG			(FLI_BLK_REG_ADDR + 0x004)
#define FLI_CTL_REG			(FLI_BLK_REG_ADDR + 0x008)
#define FLI_WRDATA_REG			(FLI_BLK_REG_ADDR + 0x00C)
#define FLI_RDDATA_REG			(FLI_BLK_REG_ADDR + 0x010)
#define FLI_DEV_STATUS_REG		(FLI_BLK_REG_ADDR + 0x014)
#define FLI_SIG_WD_REG			(FLI_BLK_REG_ADDR + 0x018)

/**
 * RO register
 * 31:16 -- Vendor Id
 * 15:0  -- Device Id
 */
#define FLI_DEV_VENDOR_REG		(FLI_BLK_REG_ADDR + 0x01C)
#define FLI_ERR_STATUS_REG		(FLI_BLK_REG_ADDR + 0x020)

/**
 * RAD (RxAdm) Block Register Address Offset from BAR0
 * RAD0 Range : 0x20000 - 0x203FF
 * RAD1 Range : 0x20400 - 0x207FF
 */
#define RAD0_BLK_REG_ADDR		0x00020000
#define RAD1_BLK_REG_ADDR		0x00020400

/* RAD0 Registers */
#define RAD0_CTL_REG			(RAD0_BLK_REG_ADDR + 0x000)
#define RAD0_PE_PARM_REG		(RAD0_BLK_REG_ADDR + 0x004)
#define RAD0_BCN_REG			(RAD0_BLK_REG_ADDR + 0x008)

/* Default function ID register */
#define RAD0_DEFAULT_REG		(RAD0_BLK_REG_ADDR + 0x00C)

/* Default promiscuous ID register */
#define RAD0_PROMISC_REG		(RAD0_BLK_REG_ADDR + 0x010)

#define RAD0_BCNQ_REG			(RAD0_BLK_REG_ADDR + 0x014)

/*
 * This register selects 1 of 8 PM Q's using
 * VLAN pri, for non-BCN packets without a VLAN tag
 */
#define RAD0_DEFAULTQ_REG		(RAD0_BLK_REG_ADDR + 0x018)

#define RAD0_ERR_STS			(RAD0_BLK_REG_ADDR + 0x01C)
#define RAD0_SET_ERR_STS		(RAD0_BLK_REG_ADDR + 0x020)
#define RAD0_ERR_INT_EN			(RAD0_BLK_REG_ADDR + 0x024)
#define RAD0_FIRST_ERR			(RAD0_BLK_REG_ADDR + 0x028)
#define RAD0_FORCE_ERR			(RAD0_BLK_REG_ADDR + 0x02C)

#define RAD0_IF_RCVD			(RAD0_BLK_REG_ADDR + 0x030)
#define RAD0_IF_RCVD_OCTETS_HIGH	(RAD0_BLK_REG_ADDR + 0x034)
#define RAD0_IF_RCVD_OCTETS_LOW		(RAD0_BLK_REG_ADDR + 0x038)
#define RAD0_IF_RCVD_VLAN		(RAD0_BLK_REG_ADDR + 0x03C)
#define RAD0_IF_RCVD_UCAST		(RAD0_BLK_REG_ADDR + 0x040)
#define RAD0_IF_RCVD_UCAST_OCTETS_HIGH	(RAD0_BLK_REG_ADDR + 0x044)
#define RAD0_IF_RCVD_UCAST_OCTETS_LOW   (RAD0_BLK_REG_ADDR + 0x048)
#define RAD0_IF_RCVD_UCAST_VLAN		(RAD0_BLK_REG_ADDR + 0x04C)
#define RAD0_IF_RCVD_MCAST		(RAD0_BLK_REG_ADDR + 0x050)
#define RAD0_IF_RCVD_MCAST_OCTETS_HIGH  (RAD0_BLK_REG_ADDR + 0x054)
#define RAD0_IF_RCVD_MCAST_OCTETS_LOW   (RAD0_BLK_REG_ADDR + 0x058)
#define RAD0_IF_RCVD_MCAST_VLAN		(RAD0_BLK_REG_ADDR + 0x05C)
#define RAD0_IF_RCVD_BCAST		(RAD0_BLK_REG_ADDR + 0x060)
#define RAD0_IF_RCVD_BCAST_OCTETS_HIGH  (RAD0_BLK_REG_ADDR + 0x064)
#define RAD0_IF_RCVD_BCAST_OCTETS_LOW   (RAD0_BLK_REG_ADDR + 0x068)
#define RAD0_IF_RCVD_BCAST_VLAN		(RAD0_BLK_REG_ADDR + 0x06C)
#define RAD0_DROPPED_FRAMES		(RAD0_BLK_REG_ADDR + 0x070)

#define RAD0_MAC_MAN_1H			(RAD0_BLK_REG_ADDR + 0x080)
#define RAD0_MAC_MAN_1L			(RAD0_BLK_REG_ADDR + 0x084)
#define RAD0_MAC_MAN_2H			(RAD0_BLK_REG_ADDR + 0x088)
#define RAD0_MAC_MAN_2L			(RAD0_BLK_REG_ADDR + 0x08C)
#define RAD0_MAC_MAN_3H			(RAD0_BLK_REG_ADDR + 0x090)
#define RAD0_MAC_MAN_3L			(RAD0_BLK_REG_ADDR + 0x094)
#define RAD0_MAC_MAN_4H			(RAD0_BLK_REG_ADDR + 0x098)
#define RAD0_MAC_MAN_4L			(RAD0_BLK_REG_ADDR + 0x09C)

#define RAD0_LAST4_IP			(RAD0_BLK_REG_ADDR + 0x100)

/* RAD1 Registers */
#define RAD1_CTL_REG			(RAD1_BLK_REG_ADDR + 0x000)
#define RAD1_PE_PARM_REG		(RAD1_BLK_REG_ADDR + 0x004)
#define RAD1_BCN_REG			(RAD1_BLK_REG_ADDR + 0x008)

/* Default function ID register */
#define RAD1_DEFAULT_REG		(RAD1_BLK_REG_ADDR + 0x00C)

/* Promiscuous function ID register */
#define RAD1_PROMISC_REG		(RAD1_BLK_REG_ADDR + 0x010)

#define RAD1_BCNQ_REG			(RAD1_BLK_REG_ADDR + 0x014)

/*
 * This register selects 1 of 8 PM Q's using
 * VLAN pri, for non-BCN packets without a VLAN tag
 */
#define RAD1_DEFAULTQ_REG		(RAD1_BLK_REG_ADDR + 0x018)

#define RAD1_ERR_STS			(RAD1_BLK_REG_ADDR + 0x01C)
#define RAD1_SET_ERR_STS		(RAD1_BLK_REG_ADDR + 0x020)
#define RAD1_ERR_INT_EN			(RAD1_BLK_REG_ADDR + 0x024)

/**
 * TXA Block Register Address Offset from BAR0
 * TXA0 Range : 0x21000 - 0x213FF
 * TXA1 Range : 0x21400 - 0x217FF
 */
#define TXA0_BLK_REG_ADDR		0x00021000
#define TXA1_BLK_REG_ADDR		0x00021400

/* TXA Registers */
#define TXA0_CTRL_REG			(TXA0_BLK_REG_ADDR + 0x000)
#define TXA1_CTRL_REG			(TXA1_BLK_REG_ADDR + 0x000)

/**
 * TSO Sequence # Registers (RO)
 * Total 8 (for 8 queues)
 * Holds the last seq.# for TSO frames
 * See catapult_spec.pdf for more details
 */
#define TXA0_TSO_TCP_SEQ_REG(_num)		\
	(TXA0_BLK_REG_ADDR + 0x020 + ((_num) << 2))

#define TXA1_TSO_TCP_SEQ_REG(_num)		\
	(TXA1_BLK_REG_ADDR + 0x020 + ((_num) << 2))

/**
 * TSO IP ID # Registers (RO)
 * Total 8 (for 8 queues)
 * Holds the last IP ID for TSO frames
 * See catapult_spec.pdf for more details
 */
#define TXA0_TSO_IP_INFO_REG(_num)		\
	(TXA0_BLK_REG_ADDR + 0x040 + ((_num) << 2))

#define TXA1_TSO_IP_INFO_REG(_num)		\
	(TXA1_BLK_REG_ADDR + 0x040 + ((_num) << 2))

/**
 * RXA Block Register Address Offset from BAR0
 * RXA0 Range : 0x21800 - 0x21BFF
 * RXA1 Range : 0x21C00 - 0x21FFF
 */
#define RXA0_BLK_REG_ADDR		0x00021800
#define RXA1_BLK_REG_ADDR		0x00021C00

/* RXA Registers */
#define RXA0_CTL_REG			(RXA0_BLK_REG_ADDR + 0x040)
#define RXA1_CTL_REG			(RXA1_BLK_REG_ADDR + 0x040)

/**
 * PPLB Block Register Address Offset from BAR0
 * PPLB0 Range : 0x22000 - 0x223FF
 * PPLB1 Range : 0x22400 - 0x227FF
 */
#define PLB0_BLK_REG_ADDR		0x00022000
#define PLB1_BLK_REG_ADDR		0x00022400

/**
 * PLB Registers
 * Holds RL timer used time stamps in RLT tagged frames
 */
#define PLB0_ECM_TIMER_REG		(PLB0_BLK_REG_ADDR + 0x05C)
#define PLB1_ECM_TIMER_REG		(PLB1_BLK_REG_ADDR + 0x05C)

/* Controls the rate-limiter on each of the priority class */
#define PLB0_RL_CTL			(PLB0_BLK_REG_ADDR + 0x060)
#define PLB1_RL_CTL			(PLB1_BLK_REG_ADDR + 0x060)

/**
 * Max byte register, total 8, 0-7
 * see catapult_spec.pdf for details
 */
#define PLB0_RL_MAX_BC(_num)			\
	(PLB0_BLK_REG_ADDR + 0x064 + ((_num) << 2))
#define PLB1_RL_MAX_BC(_num)			\
	(PLB1_BLK_REG_ADDR + 0x064 + ((_num) << 2))

/**
 * RL Time Unit Register for priority 0-7
 * 4 bits per priority
 * (2^rl_unit)*1us is the actual time period
 */
#define PLB0_RL_TU_PRIO			(PLB0_BLK_REG_ADDR + 0x084)
#define PLB1_RL_TU_PRIO			(PLB1_BLK_REG_ADDR + 0x084)

/**
 * RL byte count register,
 * bytes transmitted in (rl_unit*1)us time period
 * 1 per priority, 8 in all, 0-7.
 */
#define PLB0_RL_BYTE_CNT(_num)			\
	(PLB0_BLK_REG_ADDR + 0x088 + ((_num) << 2))
#define PLB1_RL_BYTE_CNT(_num)			\
	(PLB1_BLK_REG_ADDR + 0x088 + ((_num) << 2))

/**
 * RL Min factor register
 * 2 bits per priority,
 * 4 factors possible: 1, 0.5, 0.25, 0
 * 2'b00 - 0; 2'b01 - 0.25; 2'b10 - 0.5; 2'b11 - 1
 */
#define PLB0_RL_MIN_REG			(PLB0_BLK_REG_ADDR + 0x0A8)
#define PLB1_RL_MIN_REG			(PLB1_BLK_REG_ADDR + 0x0A8)

/**
 * RL Max factor register
 * 2 bits per priority,
 * 4 factors possible: 1, 0.5, 0.25, 0
 * 2'b00 - 0; 2'b01 - 0.25; 2'b10 - 0.5; 2'b11 - 1
 */
#define PLB0_RL_MAX_REG			(PLB0_BLK_REG_ADDR + 0x0AC)
#define PLB1_RL_MAX_REG			(PLB1_BLK_REG_ADDR + 0x0AC)

/* MAC SERDES Address Paging register */
#define PLB0_EMS_ADD_REG		(PLB0_BLK_REG_ADDR + 0xD0)
#define PLB1_EMS_ADD_REG		(PLB1_BLK_REG_ADDR + 0xD0)

/* LL EMS Registers */
#define LL_EMS0_BLK_REG_ADDR		0x00026800
#define LL_EMS1_BLK_REG_ADDR		0x00026C00

/**
 * BPC Block Register Address Offset from BAR0
 * BPC0 Range : 0x23000 - 0x233FF
 * BPC1 Range : 0x23400 - 0x237FF
 */
#define BPC0_BLK_REG_ADDR		0x00023000
#define BPC1_BLK_REG_ADDR		0x00023400

/**
 * PMM Block Register Address Offset from BAR0
 * PMM0 Range : 0x23800 - 0x23BFF
 * PMM1 Range : 0x23C00 - 0x23FFF
 */
#define PMM0_BLK_REG_ADDR		0x00023800
#define PMM1_BLK_REG_ADDR		0x00023C00

/**
 * HQM Block Register Address Offset from BAR0
 * HQM0 Range : 0x24000 - 0x243FF
 * HQM1 Range : 0x24400 - 0x247FF
 */
#define HQM0_BLK_REG_ADDR		0x00024000
#define HQM1_BLK_REG_ADDR		0x00024400

/**
 * HQM Control Register
 * Controls some aspects of IB
 * See catapult_spec.pdf for details
 */
#define HQM0_CTL_REG			(HQM0_BLK_REG_ADDR + 0x000)
#define HQM1_CTL_REG			(HQM1_BLK_REG_ADDR + 0x000)

/**
 * HQM Stop Q Semaphore Registers.
 * Only one Queue resource can be stopped at
 * any given time. This register controls access
 * to the single stop Q resource.
 * See catapult_spec.pdf for details
 */
#define HQM0_RXQ_STOP_SEM		(HQM0_BLK_REG_ADDR + 0x028)
#define HQM0_TXQ_STOP_SEM		(HQM0_BLK_REG_ADDR + 0x02C)
#define HQM1_RXQ_STOP_SEM		(HQM1_BLK_REG_ADDR + 0x028)
#define HQM1_TXQ_STOP_SEM		(HQM1_BLK_REG_ADDR + 0x02C)

/**
 * LUT Block Register Address Offset from BAR0
 * LUT0 Range : 0x25800 - 0x25BFF
 * LUT1 Range : 0x25C00 - 0x25FFF
 */
#define LUT0_BLK_REG_ADDR		0x00025800
#define LUT1_BLK_REG_ADDR		0x00025C00

/**
 * LUT Registers
 * See catapult_spec.pdf for details
 */
#define LUT0_ERR_STS			(LUT0_BLK_REG_ADDR + 0x000)
#define LUT1_ERR_STS			(LUT1_BLK_REG_ADDR + 0x000)
#define LUT0_SET_ERR_STS		(LUT0_BLK_REG_ADDR + 0x004)
#define LUT1_SET_ERR_STS		(LUT1_BLK_REG_ADDR + 0x004)

/**
 * TRC (Debug/Trace) Register Offset from BAR0
 * Range : 0x26000 -- 0x263FFF
 */
#define TRC_BLK_REG_ADDR		0x00026000

/**
 * TRC Registers
 * See catapult_spec.pdf for details of each
 */
#define TRC_CTL_REG			(TRC_BLK_REG_ADDR + 0x000)
#define TRC_MODS_REG			(TRC_BLK_REG_ADDR + 0x004)
#define TRC_TRGC_REG			(TRC_BLK_REG_ADDR + 0x008)
#define TRC_CNT1_REG			(TRC_BLK_REG_ADDR + 0x010)
#define TRC_CNT2_REG			(TRC_BLK_REG_ADDR + 0x014)
#define TRC_NXTS_REG			(TRC_BLK_REG_ADDR + 0x018)
#define TRC_DIRR_REG			(TRC_BLK_REG_ADDR + 0x01C)

/**
 * TRC Trigger match filters, total 10
 * Determines the trigger condition
 */
#define TRC_TRGM_REG(_num)		\
	(TRC_BLK_REG_ADDR + 0x040 + ((_num) << 2))

/**
 * TRC Next State filters, total 10
 * Determines the next state conditions
 */
#define TRC_NXTM_REG(_num)		\
	(TRC_BLK_REG_ADDR + 0x080 + ((_num) << 2))

/**
 * TRC Store Match filters, total 10
 * Determines the store conditions
 */
#define TRC_STRM_REG(_num)		\
	(TRC_BLK_REG_ADDR + 0x0C0 + ((_num) << 2))

/* DOORBELLS ACCESS */

/**
 * Catapult doorbells
 * Each doorbell-queue set has
 * 1 RxQ, 1 TxQ, 2 IBs in that order
 * Size of each entry in 32 bytes, even though only 1 word
 * is used. For Non-VM case each doorbell-q set is
 * separated by 128 bytes, for VM case it is separated
 * by 4K bytes
 * Non VM case Range : 0x38000 - 0x39FFF
 * VM case Range     : 0x100000 - 0x11FFFF
 * The range applies to both HQMs
 */
#define HQM_DOORBELL_BLK_BASE_ADDR	0x00038000
#define HQM_DOORBELL_VM_BLK_BASE_ADDR	0x00100000

/* MEMORY ACCESS */

/**
 * Catapult H/W Block Memory Access Address
 * To the host a memory space of 32K (page) is visible
 * at a time. The address range is from 0x08000 to 0x0FFFF
 */
#define HW_BLK_HOST_MEM_ADDR		0x08000

/**
 * Catapult LUT Memory Access Page Numbers
 * Range : LUT0 0xa0-0xa1
 *         LUT1 0xa2-0xa3
 */
#define LUT0_MEM_BLK_BASE_PG_NUM	0x000000A0
#define LUT1_MEM_BLK_BASE_PG_NUM	0x000000A2

/**
 * Catapult RxFn Database Memory Block Base Offset
 *
 * The Rx function database exists in LUT block.
 * In PCIe space this is accessible as a 256x32
 * bit block. Each entry in this database is 4
 * (4 byte) words. Max. entries is 64.
 * Address of an entry corresponding to a function
 * = base_addr + (function_no. * 16)
 */
#define RX_FNDB_RAM_BASE_OFFSET		0x0000B400

/**
 * Catapult TxFn Database Memory Block Base Offset Address
 *
 * The Tx function database exists in LUT block.
 * In PCIe space this is accessible as a 64x32
 * bit block. Each entry in this database is 1
 * (4 byte) word. Max. entries is 64.
 * Address of an entry corresponding to a function
 * = base_addr + (function_no. * 4)
 */
#define TX_FNDB_RAM_BASE_OFFSET		0x0000B800

/**
 * Catapult Unicast CAM Base Offset Address
 *
 * Exists in LUT memory space.
 * Shared by both the LL & FCoE driver.
 * Size is 256x48 bits; mapped to PCIe space
 * 512x32 bit blocks. For each address, bits
 * are written in the order : [47:32] and then
 * [31:0].
 */
#define UCAST_CAM_BASE_OFFSET		0x0000A800

/**
 * Catapult Unicast RAM Base Offset Address
 *
 * Exists in LUT memory space.
 * Shared by both the LL & FCoE driver.
 * Size is 256x9 bits.
 */
#define UCAST_RAM_BASE_OFFSET		0x0000B000

/**
 * Catapult Mulicast CAM Base Offset Address
 *
 * Exists in LUT memory space.
 * Shared by both the LL & FCoE driver.
 * Size is 256x48 bits; mapped to PCIe space
 * 512x32 bit blocks. For each address, bits
 * are written in the order : [47:32] and then
 * [31:0].
 */
#define MCAST_CAM_BASE_OFFSET		0x0000A000

/**
 * Catapult VLAN RAM Base Offset Address
 *
 * Exists in LUT memory space.
 * Size is 4096x66 bits; mapped to PCIe space as
 * 8192x32 bit blocks.
 * All the 4K entries are within the address range
 * 0x0000 to 0x8000, so in the first LUT page.
 */
#define VLAN_RAM_BASE_OFFSET		0x00000000

/**
 * Catapult Tx Stats RAM Base Offset Address
 *
 * Exists in LUT memory space.
 * Size is 1024x33 bits;
 * Each Tx function has 64 bytes of space
 */
#define TX_STATS_RAM_BASE_OFFSET	0x00009000

/**
 * Catapult Rx Stats RAM Base Offset Address
 *
 * Exists in LUT memory space.
 * Size is 1024x33 bits;
 * Each Rx function has 64 bytes of space
 */
#define RX_STATS_RAM_BASE_OFFSET	0x00008000

/* Catapult RXA Memory Access Page Numbers */
#define RXA0_MEM_BLK_BASE_PG_NUM	0x0000008C
#define RXA1_MEM_BLK_BASE_PG_NUM	0x0000008D

/**
 * Catapult Multicast Vector Table Base Offset Address
 *
 * Exists in RxA memory space.
 * Organized as 512x65 bit block.
 * However for each entry 16 bytes allocated (power of 2)
 * Total size 512*16 bytes.
 * There are two logical divisions, 256 entries each :
 * a) Entries 0x00 to 0xff (256) -- Approx. MVT
 *    Offset 0x000 to 0xFFF
 * b) Entries 0x100 to 0x1ff (256) -- Exact MVT
 *    Offsets 0x1000 to 0x1FFF
 */
#define MCAST_APPROX_MVT_BASE_OFFSET	0x00000000
#define MCAST_EXACT_MVT_BASE_OFFSET	0x00001000

/**
 * Catapult RxQ Translate Table (RIT) Base Offset Address
 *
 * Exists in RxA memory space
 * Total no. of entries 64
 * Each entry is 1 (4 byte) word.
 * 31:12 -- Reserved
 * 11:0  -- Two 6 bit RxQ Ids
 */
#define FUNCTION_TO_RXQ_TRANSLATE	0x00002000

/* Catapult RxAdm (RAD) Memory Access Page Numbers */
#define RAD0_MEM_BLK_BASE_PG_NUM	0x00000086
#define RAD1_MEM_BLK_BASE_PG_NUM	0x00000087

/**
 * Catapult RSS Table Base Offset Address
 *
 * Exists in RAD memory space.
 * Each entry is 352 bits, but aligned on
 * 64 byte (512 bit) boundary. Accessed
 * 4 byte words, the whole entry can be
 * broken into 11 word accesses.
 */
#define RSS_TABLE_BASE_OFFSET		0x00000800

/**
 * Catapult CPQ Block Page Number
 * This value is written to the page number registers
 * to access the memory associated with the mailboxes.
 */
#define CPQ_BLK_PG_NUM			0x00000005

/**
 * Clarification :
 * LL functions are 2 & 3; can HostFn0/HostFn1
 * <-> LPU0/LPU1 memories be used ?
 */
/**
 * Catapult HostFn0/HostFn1 to LPU0/LPU1 Mbox memory
 * Per catapult_spec.pdf, the offset of the mbox
 * memory is in the register space at an offset of 0x200
 */
#define CPQ_BLK_REG_MBOX_ADDR		(CPQ_BLK_REG_ADDR + 0x200)

#define HOSTFN_LPU_MBOX			(CPQ_BLK_REG_MBOX_ADDR + 0x000)

/* Catapult LPU0/LPU1 to HostFn0/HostFn1 Mbox memory */
#define LPU_HOSTFN_MBOX			(CPQ_BLK_REG_MBOX_ADDR + 0x080)

/**
 * Catapult HQM Block Page Number
 * This is written to the page number register for
 * the appropriate function to access the memory
 * associated with HQM
 */
#define HQM0_BLK_PG_NUM			0x00000096
#define HQM1_BLK_PG_NUM			0x00000097

/**
 * Note that TxQ and RxQ entries are interlaced
 * the HQM memory, i.e RXQ0, TXQ0, RXQ1, TXQ1.. etc.
 */

#define HQM_RXTX_Q_RAM_BASE_OFFSET	0x00004000

/**
 * CQ Memory
 * Exists in HQM Memory space
 * Each entry is 16 (4 byte) words of which
 * only 12 words are used for configuration
 * Total 64 entries per HQM memory space
 */
#define HQM_CQ_RAM_BASE_OFFSET		0x00006000

/**
 * Interrupt Block (IB) Memory
 * Exists in HQM Memory space
 * Each entry is 8 (4 byte) words of which
 * only 5 words are used for configuration
 * Total 128 entries per HQM memory space
 */
#define HQM_IB_RAM_BASE_OFFSET		0x00001000

/**
 * Index Table (IT) Memory
 * Exists in HQM Memory space
 * Each entry is 1 (4 byte) word which
 * is used for configuration
 * Total 128 entries per HQM memory space
 */
#define HQM_INDX_TBL_RAM_BASE_OFFSET	0x00002000

/**
 * PSS Block Memory Page Number
 * This is written to the appropriate page number
 * register to access the CPU memory.
 * Also known as the PSS secondary memory (SMEM).
 * Range : 0x180 to 0x1CF
 * See catapult_spec.pdf for details
 */
#define PSS_BLK_PG_NUM			0x00000180

/**
 * Offsets of different instances of PSS SMEM
 * 2.5M of continuous 1T memory space : 2 blocks
 * of 1M each (32 pages each, page=32KB) and 4 smaller
 * blocks of 128K each (4 pages each, page=32KB)
 * PSS_LMEM_INST0 is used for firmware download
 */
#define PSS_LMEM_INST0			0x00000000
#define PSS_LMEM_INST1			0x00100000
#define PSS_LMEM_INST2			0x00200000
#define PSS_LMEM_INST3			0x00220000
#define PSS_LMEM_INST4			0x00240000
#define PSS_LMEM_INST5			0x00260000

#define BNA_PCI_REG_CT_ADDRSZ		(0x40000)

#define BNA_GET_PAGE_NUM(_base_page, _offset)   \
	((_base_page) + ((_offset) >> 15))

#define BNA_GET_PAGE_OFFSET(_offset)    \
	((_offset) & 0x7fff)

#define BNA_GET_MEM_BASE_ADDR(_bar0, _base_offset)	\
	((_bar0) + HW_BLK_HOST_MEM_ADDR		\
	  + BNA_GET_PAGE_OFFSET((_base_offset)))

#define BNA_GET_VLAN_MEM_ENTRY_ADDR(_bar0, _fn_id, _vlan_id)\
	(_bar0 + (HW_BLK_HOST_MEM_ADDR)  \
	+ (BNA_GET_PAGE_OFFSET(VLAN_RAM_BASE_OFFSET))	\
	+ (((_fn_id) & 0x3f) << 9)	  \
	+ (((_vlan_id) & 0xfe0) >> 3))

/**
 *
 *  Interrupt related bits, flags and macros
 *
 */

#define __LPU02HOST_MBOX0_STATUS_BITS 0x00100000
#define __LPU12HOST_MBOX0_STATUS_BITS 0x00200000
#define __LPU02HOST_MBOX1_STATUS_BITS 0x00400000
#define __LPU12HOST_MBOX1_STATUS_BITS 0x00800000

#define __LPU02HOST_MBOX0_MASK_BITS	0x00100000
#define __LPU12HOST_MBOX0_MASK_BITS	0x00200000
#define __LPU02HOST_MBOX1_MASK_BITS	0x00400000
#define __LPU12HOST_MBOX1_MASK_BITS	0x00800000

#define __LPU2HOST_MBOX_MASK_BITS			 \
	(__LPU02HOST_MBOX0_MASK_BITS | __LPU02HOST_MBOX1_MASK_BITS |	\
	  __LPU12HOST_MBOX0_MASK_BITS | __LPU12HOST_MBOX1_MASK_BITS)

#define __LPU2HOST_IB_STATUS_BITS	0x0000ffff

#define BNA_IS_LPU0_MBOX_INTR(_intr_status) \
	((_intr_status) & (__LPU02HOST_MBOX0_STATUS_BITS | \
			__LPU02HOST_MBOX1_STATUS_BITS))

#define BNA_IS_LPU1_MBOX_INTR(_intr_status) \
	((_intr_status) & (__LPU12HOST_MBOX0_STATUS_BITS | \
		__LPU12HOST_MBOX1_STATUS_BITS))

#define BNA_IS_MBOX_INTR(_intr_status)		\
	((_intr_status) &  			\
	(__LPU02HOST_MBOX0_STATUS_BITS |	\
	 __LPU02HOST_MBOX1_STATUS_BITS |	\
	 __LPU12HOST_MBOX0_STATUS_BITS |	\
	 __LPU12HOST_MBOX1_STATUS_BITS))

#define __EMC_ERROR_STATUS_BITS		0x00010000
#define __LPU0_ERROR_STATUS_BITS	0x00020000
#define __LPU1_ERROR_STATUS_BITS	0x00040000
#define __PSS_ERROR_STATUS_BITS		0x00080000

#define __HALT_STATUS_BITS		0x01000000

#define __EMC_ERROR_MASK_BITS		0x00010000
#define __LPU0_ERROR_MASK_BITS		0x00020000
#define __LPU1_ERROR_MASK_BITS		0x00040000
#define __PSS_ERROR_MASK_BITS		0x00080000

#define __HALT_MASK_BITS		0x01000000

#define __ERROR_MASK_BITS		\
	(__EMC_ERROR_MASK_BITS | __LPU0_ERROR_MASK_BITS | \
	  __LPU1_ERROR_MASK_BITS | __PSS_ERROR_MASK_BITS | \
	  __HALT_MASK_BITS)

#define BNA_IS_ERR_INTR(_intr_status)	\
	((_intr_status) &  		\
	(__EMC_ERROR_STATUS_BITS |  	\
	 __LPU0_ERROR_STATUS_BITS | 	\
	 __LPU1_ERROR_STATUS_BITS | 	\
	 __PSS_ERROR_STATUS_BITS  | 	\
	 __HALT_STATUS_BITS))

#define BNA_IS_MBOX_ERR_INTR(_intr_status)	\
	(BNA_IS_MBOX_INTR((_intr_status)) |	\
	 BNA_IS_ERR_INTR((_intr_status)))

#define BNA_IS_INTX_DATA_INTR(_intr_status)	\
	((_intr_status) & __LPU2HOST_IB_STATUS_BITS)

#define BNA_INTR_STATUS_MBOX_CLR(_intr_status)			\
do {								\
	(_intr_status) &= ~(__LPU02HOST_MBOX0_STATUS_BITS |	\
			__LPU02HOST_MBOX1_STATUS_BITS | 	\
			__LPU12HOST_MBOX0_STATUS_BITS | 	\
			__LPU12HOST_MBOX1_STATUS_BITS); 	\
} while (0)

#define BNA_INTR_STATUS_ERR_CLR(_intr_status)		\
do {							\
	(_intr_status) &= ~(__EMC_ERROR_STATUS_BITS |	\
		__LPU0_ERROR_STATUS_BITS |		\
		__LPU1_ERROR_STATUS_BITS |		\
		__PSS_ERROR_STATUS_BITS  |		\
		__HALT_STATUS_BITS);			\
} while (0)

#define bna_intx_disable(_bna, _cur_mask)		\
{							\
	(_cur_mask) = readl((_bna)->regs.fn_int_mask);\
	writel(0xffffffff, (_bna)->regs.fn_int_mask);\
}

#define bna_intx_enable(bna, new_mask) 			\
	writel((new_mask), (bna)->regs.fn_int_mask)

#define bna_mbox_intr_disable(bna)		\
	writel((readl((bna)->regs.fn_int_mask) | \
	     (__LPU2HOST_MBOX_MASK_BITS | __ERROR_MASK_BITS)), \
	     (bna)->regs.fn_int_mask)

#define bna_mbox_intr_enable(bna)		\
	writel((readl((bna)->regs.fn_int_mask) & \
	     ~(__LPU2HOST_MBOX_MASK_BITS | __ERROR_MASK_BITS)), \
	     (bna)->regs.fn_int_mask)

#define bna_intr_status_get(_bna, _status)				\
{									\
	(_status) = readl((_bna)->regs.fn_int_status);		\
	if ((_status)) {						\
		writel((_status) & ~(__LPU02HOST_MBOX0_STATUS_BITS |\
					  __LPU02HOST_MBOX1_STATUS_BITS |\
					  __LPU12HOST_MBOX0_STATUS_BITS |\
					  __LPU12HOST_MBOX1_STATUS_BITS), \
			      (_bna)->regs.fn_int_status);\
	}								\
}

#define bna_intr_status_get_no_clr(_bna, _status)		\
	(_status) = readl((_bna)->regs.fn_int_status)

#define bna_intr_mask_get(bna, mask)		\
	(*mask) = readl((bna)->regs.fn_int_mask)

#define bna_intr_ack(bna, intr_bmap)		\
	writel((intr_bmap), (bna)->regs.fn_int_status)

#define bna_ib_intx_disable(bna, ib_id)		\
	writel(readl((bna)->regs.fn_int_mask) | \
	    (1 << (ib_id)), \
	    (bna)->regs.fn_int_mask)

#define bna_ib_intx_enable(bna, ib_id)		\
	writel(readl((bna)->regs.fn_int_mask) & \
	    ~(1 << (ib_id)), \
	    (bna)->regs.fn_int_mask)

#define bna_mbox_msix_idx_set(_device) \
do {\
	writel(((_device)->vector & 0x000001FF), \
		(_device)->bna->pcidev.pci_bar_kva + \
		reg_offset[(_device)->bna->pcidev.pci_func].msix_idx);\
} while (0)

/**
 *
 * TxQ, RxQ, CQ related bits, offsets, macros
 *
 */

#define	BNA_Q_IDLE_STATE	0x00008001

#define BNA_GET_DOORBELL_BASE_ADDR(_bar0)	\
	((_bar0) + HQM_DOORBELL_BLK_BASE_ADDR)

#define BNA_GET_DOORBELL_ENTRY_OFFSET(_entry)		\
	((HQM_DOORBELL_BLK_BASE_ADDR)		\
	+ (_entry << 7))

#define BNA_DOORBELL_IB_INT_ACK(_timeout, _events) \
		(0x80000000 | ((_timeout) << 16) | (_events))

#define BNA_DOORBELL_IB_INT_DISABLE		(0x40000000)

/* TxQ Entry Opcodes */
#define BNA_TXQ_WI_SEND 		(0x402)	/* Single Frame Transmission */
#define BNA_TXQ_WI_SEND_LSO 		(0x403)	/* Multi-Frame Transmission */
#define BNA_TXQ_WI_EXTENSION		(0x104)	/* Extension WI */

/* TxQ Entry Control Flags */
#define BNA_TXQ_WI_CF_FCOE_CRC  	(1 << 8)
#define BNA_TXQ_WI_CF_IPID_MODE 	(1 << 5)
#define BNA_TXQ_WI_CF_INS_PRIO  	(1 << 4)
#define BNA_TXQ_WI_CF_INS_VLAN  	(1 << 3)
#define BNA_TXQ_WI_CF_UDP_CKSUM 	(1 << 2)
#define BNA_TXQ_WI_CF_TCP_CKSUM 	(1 << 1)
#define BNA_TXQ_WI_CF_IP_CKSUM  	(1 << 0)

#define BNA_TXQ_WI_L4_HDR_N_OFFSET(_hdr_size, _offset) \
		(((_hdr_size) << 10) | ((_offset) & 0x3FF))

/*
 * Completion Q defines
 */
/* CQ Entry Flags */
#define	BNA_CQ_EF_MAC_ERROR 	(1 <<  0)
#define	BNA_CQ_EF_FCS_ERROR 	(1 <<  1)
#define	BNA_CQ_EF_TOO_LONG  	(1 <<  2)
#define	BNA_CQ_EF_FC_CRC_OK 	(1 <<  3)

#define	BNA_CQ_EF_RSVD1 	(1 <<  4)
#define	BNA_CQ_EF_L4_CKSUM_OK	(1 <<  5)
#define	BNA_CQ_EF_L3_CKSUM_OK	(1 <<  6)
#define	BNA_CQ_EF_HDS_HEADER	(1 <<  7)

#define	BNA_CQ_EF_UDP   	(1 <<  8)
#define	BNA_CQ_EF_TCP   	(1 <<  9)
#define	BNA_CQ_EF_IP_OPTIONS	(1 << 10)
#define	BNA_CQ_EF_IPV6  	(1 << 11)

#define	BNA_CQ_EF_IPV4  	(1 << 12)
#define	BNA_CQ_EF_VLAN  	(1 << 13)
#define	BNA_CQ_EF_RSS   	(1 << 14)
#define	BNA_CQ_EF_RSVD2 	(1 << 15)

#define	BNA_CQ_EF_MCAST_MATCH   (1 << 16)
#define	BNA_CQ_EF_MCAST 	(1 << 17)
#define BNA_CQ_EF_BCAST 	(1 << 18)
#define	BNA_CQ_EF_REMOTE 	(1 << 19)

#define	BNA_CQ_EF_LOCAL		(1 << 20)

/**
 *
 * Data structures
 *
 */

enum txf_flags {
	BFI_TXF_CF_ENABLE		= 1 << 0,
	BFI_TXF_CF_VLAN_FILTER		= 1 << 8,
	BFI_TXF_CF_VLAN_ADMIT		= 1 << 9,
	BFI_TXF_CF_VLAN_INSERT		= 1 << 10,
	BFI_TXF_CF_RSVD1		= 1 << 11,
	BFI_TXF_CF_MAC_SA_CHECK		= 1 << 12,
	BFI_TXF_CF_VLAN_WI_BASED	= 1 << 13,
	BFI_TXF_CF_VSWITCH_MCAST	= 1 << 14,
	BFI_TXF_CF_VSWITCH_UCAST	= 1 << 15,
	BFI_TXF_CF_RSVD2		= 0x7F << 1
};

enum ib_flags {
	BFI_IB_CF_MASTER_ENABLE		= (1 << 0),
	BFI_IB_CF_MSIX_MODE		= (1 << 1),
	BFI_IB_CF_COALESCING_MODE	= (1 << 2),
	BFI_IB_CF_INTER_PKT_ENABLE	= (1 << 3),
	BFI_IB_CF_INT_ENABLE		= (1 << 4),
	BFI_IB_CF_INTER_PKT_DMA		= (1 << 5),
	BFI_IB_CF_ACK_PENDING		= (1 << 6),
	BFI_IB_CF_RESERVED1		= (1 << 7)
};

enum rss_hash_type {
	BFI_RSS_T_V4_TCP    		= (1 << 11),
	BFI_RSS_T_V4_IP     		= (1 << 10),
	BFI_RSS_T_V6_TCP    		= (1 <<  9),
	BFI_RSS_T_V6_IP     		= (1 <<  8)
};
enum hds_header_type {
	BNA_HDS_T_V4_TCP	= (1 << 11),
	BNA_HDS_T_V4_UDP	= (1 << 10),
	BNA_HDS_T_V6_TCP	= (1 << 9),
	BNA_HDS_T_V6_UDP	= (1 << 8),
	BNA_HDS_FORCED		= (1 << 7),
};
enum rxf_flags {
	BNA_RXF_CF_SM_LG_RXQ			= (1 << 15),
	BNA_RXF_CF_DEFAULT_VLAN			= (1 << 14),
	BNA_RXF_CF_DEFAULT_FUNCTION_ENABLE	= (1 << 13),
	BNA_RXF_CF_VLAN_STRIP			= (1 << 12),
	BNA_RXF_CF_RSS_ENABLE			= (1 <<  8)
};
struct bna_chip_regs_offset {
	u32 page_addr;
	u32 fn_int_status;
	u32 fn_int_mask;
	u32 msix_idx;
};

struct bna_chip_regs {
	void __iomem *page_addr;
	void __iomem *fn_int_status;
	void __iomem *fn_int_mask;
};

struct bna_txq_mem {
	u32 pg_tbl_addr_lo;
	u32 pg_tbl_addr_hi;
	u32 cur_q_entry_lo;
	u32 cur_q_entry_hi;
	u32 reserved1;
	u32 reserved2;
	u32 pg_cnt_n_prd_ptr;	/* 31:16->total page count */
					/* 15:0 ->producer pointer (index?) */
	u32 entry_n_pg_size; 	/* 31:16->entry size */
					/* 15:0 ->page size */
	u32 int_blk_n_cns_ptr;	/* 31:24->Int Blk Id;  */
					/* 23:16->Int Blk Offset */
					/* 15:0 ->consumer pointer(index?) */
	u32 cns_ptr2_n_q_state;	/* 31:16->cons. ptr 2; 15:0-> Q state */
	u32 nxt_qid_n_fid_n_pri;	/* 17:10->next */
					/* QId;9:3->FID;2:0->Priority */
	u32 wvc_n_cquota_n_rquota; /* 31:24->WI Vector Count; */
					/* 23:12->Cfg Quota; */
					/* 11:0 ->Run Quota */
	u32 reserved3[4];
};

struct bna_rxq_mem {
	u32 pg_tbl_addr_lo;
	u32 pg_tbl_addr_hi;
	u32 cur_q_entry_lo;
	u32 cur_q_entry_hi;
	u32 reserved1;
	u32 reserved2;
	u32 pg_cnt_n_prd_ptr;	/* 31:16->total page count */
					/* 15:0 ->producer pointer (index?) */
	u32 entry_n_pg_size;	/* 31:16->entry size */
					/* 15:0 ->page size */
	u32 sg_n_cq_n_cns_ptr;	/* 31:28->reserved; 27:24->sg count */
					/* 23:16->CQ; */
					/* 15:0->consumer pointer(index?) */
	u32 buf_sz_n_q_state; 	/* 31:16->buffer size; 15:0-> Q state */
	u32 next_qid;		/* 17:10->next QId */
	u32 reserved3;
	u32 reserved4[4];
};

struct bna_rxtx_q_mem {
	struct bna_rxq_mem rxq;
	struct bna_txq_mem txq;
};

struct bna_cq_mem {
	u32 pg_tbl_addr_lo;
	u32 pg_tbl_addr_hi;
	u32 cur_q_entry_lo;
	u32 cur_q_entry_hi;

	u32 reserved1;
	u32 reserved2;
	u32 pg_cnt_n_prd_ptr;	/* 31:16->total page count */
					/* 15:0 ->producer pointer (index?) */
	u32 entry_n_pg_size;	/* 31:16->entry size */
					/* 15:0 ->page size */
	u32 int_blk_n_cns_ptr;	/* 31:24->Int Blk Id; */
					/* 23:16->Int Blk Offset */
					/* 15:0 ->consumer pointer(index?) */
	u32 q_state;		/* 31:16->reserved; 15:0-> Q state */
	u32 reserved3[2];
	u32 reserved4[4];
};

struct bna_ib_blk_mem {
	u32 host_addr_lo;
	u32 host_addr_hi;
	u32 clsc_n_ctrl_n_msix;	/* 31:24->coalescing; */
					/* 23:16->coalescing cfg; */
					/* 15:8 ->control; */
					/* 7:0 ->msix; */
	u32 ipkt_n_ent_n_idxof;
	u32 ipkt_cnt_cfg_n_unacked;

	u32 reserved[3];
};

struct bna_idx_tbl_mem {
	u32 idx;	  /* !< 31:16->res;15:0->idx; */
};

struct bna_doorbell_qset {
	u32 rxq[0x20 >> 2];
	u32 txq[0x20 >> 2];
	u32 ib0[0x20 >> 2];
	u32 ib1[0x20 >> 2];
};

struct bna_rx_fndb_ram {
	u32 rss_prop;
	u32 size_routing_props;
	u32 rit_hds_mcastq;
	u32 control_flags;
};

struct bna_tx_fndb_ram {
	u32 vlan_n_ctrl_flags;
};

/**
 * @brief
 *  Structure which maps to RxFn Indirection Table (RIT)
 *  Size : 1 word
 *  See catapult_spec.pdf, RxA for details
 */
struct bna_rit_mem {
	u32 rxq_ids;	/* !< 31:12->res;11:0->two 6 bit RxQ Ids */
};

/**
 * @brief
 *  Structure which maps to RSS Table entry
 *  Size : 16 words
 *  See catapult_spec.pdf, RAD for details
 */
struct bna_rss_mem {
	/*
	 * 31:12-> res
	 * 11:8 -> protocol type
	 *  7:0 -> hash index
	 */
	u32 type_n_hash;
	u32 hash_key[10];  /* !< 40 byte Toeplitz hash key */
	u32 reserved[5];
};

/* TxQ Vector (a.k.a. Tx-Buffer Descriptor) */
struct bna_dma_addr {
	u32		msb;
	u32		lsb;
};

struct bna_txq_wi_vector {
	u16 		reserved;
	u16 		length;		/* Only 14 LSB are valid */
	struct bna_dma_addr host_addr; /* Tx-Buf DMA addr */
};

typedef u16 bna_txq_wi_opcode_t;

typedef u16 bna_txq_wi_ctrl_flag_t;

/**
 *  TxQ Entry Structure
 *
 *  BEWARE:  Load values into this structure with correct endianess.
 */
struct bna_txq_entry {
	union {
		struct {
			u8 reserved;
			u8 num_vectors;	/* number of vectors present */
			bna_txq_wi_opcode_t opcode; /* Either */
						    /* BNA_TXQ_WI_SEND or */
						    /* BNA_TXQ_WI_SEND_LSO */
			bna_txq_wi_ctrl_flag_t flags; /* OR of all the flags */
			u16 l4_hdr_size_n_offset;
			u16 vlan_tag;
			u16 lso_mss;	/* Only 14 LSB are valid */
			u32 frame_length;	/* Only 24 LSB are valid */
		} wi;

		struct {
			u16 reserved;
			bna_txq_wi_opcode_t opcode; /* Must be */
						    /* BNA_TXQ_WI_EXTENSION */
			u32 reserved2[3];	/* Place holder for */
						/* removed vector (12 bytes) */
		} wi_ext;
	} hdr;
	struct bna_txq_wi_vector vector[4];
};
#define wi_hdr  	hdr.wi
#define wi_ext_hdr  hdr.wi_ext

/* RxQ Entry Structure */
struct bna_rxq_entry {		/* Rx-Buffer */
	struct bna_dma_addr host_addr; /* Rx-Buffer DMA address */
};

typedef u32 bna_cq_e_flag_t;

/* CQ Entry Structure */
struct bna_cq_entry {
	bna_cq_e_flag_t flags;
	u16 vlan_tag;
	u16 length;
	u32 rss_hash;
	u8 valid;
	u8 reserved1;
	u8 reserved2;
	u8 rxq_id;
};

#endif /* __BNA_HW_H__ */
