/*
 * 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 alligned 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__ */
