bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * CDDL HEADER START
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan *
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * The contents of this file are subject to the terms of the
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Common Development and Distribution License (the "License").
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * You may not use this file except in compliance with the License.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan *
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * or http://www.opensolaris.org/os/licensing.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * See the License for the specific language governing permissions
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * and limitations under the License.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan *
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * When distributing Covered Code, include this CDDL HEADER in each
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * If applicable, add the following below this CDDL HEADER, with the
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * fields enclosed by brackets "[]" replaced with your own identifying
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * information: Portions Copyright [yyyy] [name of copyright owner]
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan *
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * CDDL HEADER END
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan * Copyright 2010 QLogic Corporation. All rights reserved.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#ifndef _QLGE_HW_H
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define _QLGE_HW_H
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#ifdef __cplusplus
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanextern "C" {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#endif
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_SCHULTZ 0x8000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MB_REG_COUNT 8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MB_DATA_REG_COUNT (MB_REG_COUNT-1)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_SCHULTZ(qlge) ((qlge)->device_id == ISP_SCHULTZ)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Data bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_0 0x1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_1 0x2
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_2 0x4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_3 0x8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_4 0x10
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_5 0x20
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_6 0x40
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_7 0x80
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_8 0x100
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_9 0x200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_10 0x400
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_11 0x800
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_12 0x1000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_13 0x2000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_14 0x4000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_15 0x8000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_16 0x10000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_17 0x20000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_18 0x40000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_19 0x80000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_20 0x100000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_21 0x200000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_22 0x400000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_23 0x800000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_24 0x1000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_25 0x2000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_26 0x4000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_27 0x8000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_28 0x10000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_29 0x20000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_30 0x40000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIT_31 0x80000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct ql_stats
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan{
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t intr_type;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan /* software statics */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t intr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint64_t speed;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t duplex;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t media;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan /* TX */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint64_t obytes;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint64_t opackets;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t nocarrier;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t defer;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan /* RX */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint64_t rbytes;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint64_t rpackets;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t norcvbuf;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t frame_too_long;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t crc;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ulong_t multircv;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ulong_t brdcstrcv;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t errrcv;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t frame_too_short;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan /* statics by hw */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t errxmt;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t frame_err;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ulong_t multixmt;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ulong_t brdcstxmt;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t phy_addr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t jabber_err;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan}ql_stats_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ETHERNET_CRC_SIZE 4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Register Definitions...
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAILBOX_COUNT 16
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* System Register 0x00 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROC_ADDR_RDY BIT_31
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROC_ADDR_R BIT_30
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROC_ADDR_ERR BIT_29
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROC_ADDR_DA BIT_28
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROC_ADDR_FUNC0_MBI 0x00001180
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROC_ADDR_FUNC0_MBO (PROC_ADDR_FUNC0_MBI + MAILBOX_COUNT)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROC_ADDR_FUNC0_CTL 0x000011a1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROC_ADDR_FUNC2_MBI 0x00001280
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROC_ADDR_FUNC2_MBO (PROC_ADDR_FUNC2_MBI + MAILBOX_COUNT)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROC_ADDR_FUNC2_CTL 0x000012a1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROC_ADDR_MPI_RISC 0x00000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROC_ADDR_MDE 0x00010000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROC_ADDR_REGBLOCK 0x00020000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROC_ADDR_RISC_REG 0x00030000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* System Register 0x08 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SYSTEM_EFE_FAE 0x3u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SYSTEM_EFE_FAE_MASK (SYSTEM_EFE_FAE<<16)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanenum {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan SYS_EFE = (1 << 0),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan SYS_FAE = (1 << 1),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan SYS_MDC = (1 << 2),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan SYS_DST = (1 << 3),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan SYS_DWC = (1 << 4),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan SYS_EVW = (1 << 5),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan SYS_OMP_DLY_MASK = 0x3f000000,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan /*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * There are no values defined as of edit #15.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan SYS_ODI = (1 << 14)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Reset/Failover Register (RST_FO) bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RST_FO_TFO (1 << 0)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RST_FO_RR_MASK 0x00060000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RST_FO_RR_CQ_CAM 0x00000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RST_FO_RR_DROP 0x00000001
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RST_FO_RR_DQ 0x00000002
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RST_FO_RR_RCV_FUNC_CQ 0x00000003
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RST_FO_FRB BIT_12
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RST_FO_MOP BIT_13
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RST_FO_REG BIT_14
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RST_FO_FR 0x8000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Function Specific Control Register (FSC) bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanenum {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_DBRST_MASK = 0x00070000,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_DBRST_256 = 0x00000000,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_DBRST_512 = 0x00000001,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_DBRST_768 = 0x00000002,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_DBRST_1024 = 0x00000003,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_DBL_MASK = 0x00180000,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_DBL_DBRST = 0x00000000,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_DBL_MAX_PLD = 0x00000008,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_DBL_MAX_BRST = 0x00000010,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_DBL_128_BYTES = 0x00000018,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_EC = (1 << 5),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_EPC_MASK = 0x00c00000,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_EPC_INBOUND = (1 << 6),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_EPC_OUTBOUND = (1 << 7),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_VM_PAGESIZE_MASK = 0x07000000,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_VM_PAGE_2K = 0x00000100,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_VM_PAGE_4K = 0x00000200,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_VM_PAGE_8K = 0x00000300,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_VM_PAGE_64K = 0x00000600,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_SH = (1 << 11),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_DSB = (1 << 12),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_STE = (1 << 13),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FSC_FE = (1 << 15)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Host Command Status Register (CSR) bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CSR_ERR_STS_MASK 0x0000003f
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * There are no valued defined as of edit #15.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CSR_RR BIT_8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CSR_HRI BIT_9
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CSR_RP BIT_10
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CSR_CMD_PARM_SHIFT 22
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CSR_CMD_NOP 0x00000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CSR_CMD_SET_RST 0x1000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CSR_CMD_CLR_RST 0x20000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CSR_CMD_SET_PAUSE 0x30000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CSR_CMD_CLR_PAUSE 0x40000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CSR_CMD_SET_H2R_INT 0x50000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CSR_CMD_CLR_H2R_INT 0x60000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CSR_CMD_PAR_EN 0x70000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CSR_CMD_SET_BAD_PAR 0x80000000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CSR_CMD_CLR_BAD_PAR 0x90000000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CSR_CMD_CLR_R2PCI_INT 0xa0000000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Configuration Register (CFG) bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanenum {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CFG_LRQ = (1 << 0),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CFG_DRQ = (1 << 1),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CFG_LR = (1 << 2),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CFG_DR = (1 << 3),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CFG_LE = (1 << 5),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CFG_LCQ = (1 << 6),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CFG_DCQ = (1 << 7),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CFG_Q_SHIFT = 8,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CFG_Q_MASK = 0x7f000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Status Register (STS) bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanenum {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan STS_FE = (1 << 0),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan STS_PI = (1 << 1),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan STS_PL0 = (1 << 2),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan STS_PL1 = (1 << 3),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan STS_PI0 = (1 << 4),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan STS_PI1 = (1 << 5),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan STS_FUNC_ID_MASK = 0x000000c0,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan STS_FUNC_ID_SHIFT = 6,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan STS_F0E = (1 << 8),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan STS_F1E = (1 << 9),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan STS_F2E = (1 << 10),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan STS_F3E = (1 << 11),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan STS_NFE = (1 << 12)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Register (REV_ID) bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanenum {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan REV_ID_MASK = 0x0000000f,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan REV_ID_NICROLL_SHIFT = 0,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan REV_ID_NICREV_SHIFT = 4,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan REV_ID_XGROLL_SHIFT = 8,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan REV_ID_XGREV_SHIFT = 12,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan REV_ID_CHIPREV_SHIFT = 28
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Force ECC Error Register (FRC_ECC_ERR) bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanenum {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FRC_ECC_ERR_VW = (1 << 12),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FRC_ECC_ERR_VB = (1 << 13),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FRC_ECC_ERR_NI = (1 << 14),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FRC_ECC_ERR_NO = (1 << 15),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FRC_ECC_PFE_SHIFT = 16,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FRC_ECC_ERR_DO = (1 << 18),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan FRC_ECC_P14 = (1 << 19)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Error Status Register (ERR_STS) bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanenum {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_NOF = (1 << 0),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_NIF = (1 << 1),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_DRP = (1 << 2),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_XGP = (1 << 3),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_FOU = (1 << 4),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_FOC = (1 << 5),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_FOF = (1 << 6),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_FIU = (1 << 7),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_FIC = (1 << 8),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_FIF = (1 << 9),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_MOF = (1 << 10),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_TA = (1 << 11),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_MA = (1 << 12),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_MPE = (1 << 13),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_SCE = (1 << 14),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_STE = (1 << 15),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_FOW = (1 << 16),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_UE = (1 << 17),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_MCH = (1 << 26),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ERR_STS_LOC_SHIFT = 27
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Semaphore Register (SEM) bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Example:
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * reg = SEM_XGMAC0_MASK | (SEM_SET << SEM_XGMAC0_SHIFT)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_CLEAR 0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_SET 1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_FORCE 3
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_XGMAC0_SHIFT 0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_XGMAC1_SHIFT 2
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_ICB_SHIFT 4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_MAC_ADDR_SHIFT 6
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_FLASH_SHIFT 8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_PROBE_SHIFT 10
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_RT_IDX_SHIFT 12
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_PROC_REG_SHIFT 14
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_XGMAC0_MASK 0x00030000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_XGMAC1_MASK 0x000c0000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_ICB_MASK 0x00300000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_MAC_ADDR_MASK 0x00c00000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_FLASH_MASK 0x03000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_PROBE_MASK 0x0c000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_RT_IDX_MASK 0x30000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_PROC_REG_MASK 0xc0000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Stop CQ Processing Register (CQ_STOP) bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanenum {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CQ_STOP_QUEUE_MASK = (0x007f0000),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CQ_STOP_TYPE_MASK = (0x03000000),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CQ_STOP_TYPE_START = 0x00000100,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CQ_STOP_TYPE_STOP = 0x00000200,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CQ_STOP_TYPE_READ = 0x00000300,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CQ_STOP_EN = (1 << 15)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * MAC Protocol Address Index Register (MAC_ADDR_IDX) bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_IDX_SHIFT 4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_TYPE_SHIFT 16
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_TYPE_MASK 0x000f0000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_TYPE_CAM_MAC 0x00000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_TYPE_MULTI_MAC 0x00010000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_TYPE_VLAN 0x00020000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_TYPE_MULTI_FLTR 0x00030000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_TYPE_FC_MAC 0x00040000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_TYPE_MGMT_MAC 0x00050000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_TYPE_MGMT_VLAN 0x00060000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_TYPE_MGMT_V4 0x00070000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_TYPE_MGMT_V6 0x00080000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_TYPE_MGMT_TU_DP 0x00090000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_ADR BIT_25
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_RS BIT_26
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_E BIT_27
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_MR BIT_30
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_ADDR_MW BIT_31
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAX_MULTICAST_HW_SIZE 32
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * MAC Protocol Address Index Register (SPLT_HDR, 0xC0) bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SPLT_HDR_EP BIT_31
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * NIC Receive Configuration Register (NIC_RCV_CFG) bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanenum {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan NIC_RCV_CFG_PPE = (1 << 0),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan NIC_RCV_CFG_VLAN_MASK = 0x00060000,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan NIC_RCV_CFG_VLAN_ALL = 0x00000000,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan NIC_RCV_CFG_VLAN_MATCH_ONLY = 0x00000002,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan NIC_RCV_CFG_VLAN_MATCH_AND_NON = 0x00000004,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan NIC_RCV_CFG_VLAN_NONE_AND_NON = 0x00000006,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan NIC_RCV_CFG_RV = (1 << 3),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan NIC_RCV_CFG_DFQ_MASK = (0x7f000000),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan NIC_RCV_CFG_DFQ_SHIFT = 8,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan NIC_RCV_CFG_DFQ = 0 /* HARDCODE default queue to 0. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Routing Index Register (RT_IDX) bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_IDX_SHIFT 8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_TYPE_MASK 0x000f0000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_TYPE_RT 0x00000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_TYPE_RT_INV 0x00010000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_TYPE_NICQ 0x00020000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_TYPE_NICQ_INV 0x00030000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_DST_MASK 0x00700000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_DST_RSS 0x00000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_DST_CAM_Q 0x00100000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_DST_COS_Q 0x00200000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_DST_DFLT_Q 0x00300000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_DST_DEST_Q 0x00400000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_RS BIT_26
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_E BIT_27
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_MR BIT_30
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_MW BIT_31
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Nic Queue format - type 2 bits */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_BCAST 1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_MCAST BIT_1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_MCAST_MATCH BIT_2
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_MCAST_REG_MATCH BIT_3
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_MCAST_HASH_MATCH BIT_4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_FC_MACH BIT_5
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_ETH_FCOE BIT_6
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_CAM_HIT BIT_7
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_CAM_BIT0 BIT_8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_CAM_BIT1 BIT_9
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_VLAN_TAG BIT_10
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_VLAN_MATCH BIT_11
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_VLAN_FILTER BIT_12
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_ETH_SKIP1 BIT_13
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_ETH_SKIP2 BIT_14
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_BCAST_MCAST_MATCH BIT_15
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_802_3 BIT_16
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_LLDP BIT_17
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_UNUSED018 BIT_18
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_UNUSED019 BIT_19
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_UNUSED20 BIT_20
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_UNUSED21 BIT_21
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_ERR BIT_22
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_VALID BIT_23
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_TU_CSUM_ERR BIT_24
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_IP_CSUM_ERR BIT_25
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_MAC_ERR BIT_26
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_RSS_TCP6 BIT_27
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_RSS_TCP4 BIT_28
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_RSS_IPV6 BIT_29
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_RSS_IPV4 BIT_30
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RT_IDX_RSS_MATCH BIT_31
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Hierarchy for the NIC Queue Mask */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanenum {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_ALL_ERR_SLOT = 0,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_MAC_ERR_SLOT = 0,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_IP_CSUM_ERR_SLOT = 1,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_TCP_UDP_CSUM_ERR_SLOT = 2,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_BCAST_SLOT = 3,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_MCAST_MATCH_SLOT = 4,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_ALLMULTI_SLOT = 5,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_UNUSED6_SLOT = 6,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_UNUSED7_SLOT = 7,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_RSS_MATCH_SLOT = 8,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_RSS_IPV4_SLOT = 8,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_RSS_IPV6_SLOT = 9,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_RSS_TCP4_SLOT = 10,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_RSS_TCP6_SLOT = 11,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_CAM_HIT_SLOT = 12,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_UNUSED013 = 13,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_UNUSED014 = 14,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_PROMISCUOUS_SLOT = 15,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan RT_IDX_MAX_SLOTS = 16
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanenum {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CAM_OUT_ROUTE_FC = 0,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CAM_OUT_ROUTE_NIC = 1,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CAM_OUT_FUNC_SHIFT = 2,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CAM_OUT_RV = (1 << 4),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CAM_OUT_SH = (1 << 15),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan CAM_OUT_CQ_ID_SHIFT = 5
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Reset/Failover Register 0C */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FUNCTION_RESET 0x8000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FUNCTION_RESET_MASK (FUNCTION_RESET<<16)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Function Specific Control Register 0x10 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FSC_MASK (0x97ffu << 16)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FSC_FE 0x8000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Configuration Register 0x28 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LOAD_LCQ 0x40
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LOAD_LCQ_MASK (0x7F40u << 16)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LOAD_ICB_ERR 0x20
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LOAD_LRQ 0x01
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LOAD_LRQ_MASK (0x7F01u << 16)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FN0_NET 0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FN1_NET 1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FN0_FC 2
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FN1_FC 3
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Semaphore Register (SEM) bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_CLEAR 0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_SET 1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_FORCE 3
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_XGMAC0_SHIFT 0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_XGMAC1_SHIFT 2
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_ICB_SHIFT 4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_MAC_ADDR_SHIFT 6
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_FLASH_SHIFT 8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_PROBE_SHIFT 10
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_RT_IDX_SHIFT 12
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_PROC_REG_SHIFT 14
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_XGMAC0_MASK 0x00030000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_XGMAC1_MASK 0x000c0000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_ICB_MASK 0x00300000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_MAC_ADDR_MASK 0x00c00000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_FLASH_MASK 0x03000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_PROBE_MASK 0x0c000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_RT_IDX_MASK 0x30000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SEM_PROC_REG_MASK 0xc0000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* System Register 0x08 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SYSTEM_EFE_FAE 0x3u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SYSTEM_EFE_FAE_MASK (SYSTEM_EFE_FAE<<16)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Interrupt Status Register-1 0x3C */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ_0_NOT_EMPTY BIT_0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ_1_NOT_EMPTY BIT_1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ_2_NOT_EMPTY BIT_2
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ_3_NOT_EMPTY BIT_3
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ_4_NOT_EMPTY BIT_4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ_5_NOT_EMPTY BIT_5
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ_6_NOT_EMPTY BIT_6
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ_7_NOT_EMPTY BIT_7
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ_8_NOT_EMPTY BIT_8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ_9_NOT_EMPTY BIT_9
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ_10_NOT_EMPTY BIT_10
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ_11_NOT_EMPTY BIT_11
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ_12_NOT_EMPTY BIT_12
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ_13_NOT_EMPTY BIT_13
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ_14_NOT_EMPTY BIT_14
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ_15_NOT_EMPTY BIT_15
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ_16_NOT_EMPTY BIT_16
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Processor Address Register 0x00 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROCESSOR_ADDRESS_RDY (0x8000u<<16)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROCESSOR_ADDRESS_READ (0x4000u<<16)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Host Command/Status Register 0x14 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define HOST_CMD_SET_RISC_RESET 0x10000000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define HOST_CMD_CLEAR_RISC_RESET 0x20000000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define HOST_CMD_SET_RISC_PAUSE 0x30000000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define HOST_CMD_RELEASE_RISC_PAUSE 0x40000000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define HOST_CMD_SET_RISC_INTR 0x50000000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define HOST_CMD_CLEAR_RISC_INTR 0x60000000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define HOST_CMD_SET_PARITY_ENABLE 0x70000000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define HOST_CMD_FORCE_BAD_PARITY 0x80000000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define HOST_CMD_RELEASE_BAD_PARITY 0x90000000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define HOST_CMD_CLEAR_RISC_TO_HOST_INTR 0xA0000000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define HOST_TO_MPI_INTR_NOT_DONE 0x200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RISC_RESET BIT_8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RISC_PAUSED BIT_10
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Semaphor Register 0x64 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_SEM_BITS_BASE_CODE 0x1u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_PORT0_XGMAC_SEM_BITS (QL_SEM_BITS_BASE_CODE)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_PORT1_XGMAC_SEM_BITS (QL_SEM_BITS_BASE_CODE << 2)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_ICB_ACCESS_ADDRESS_SEM_BITS (QL_SEM_BITS_BASE_CODE << 4)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_MAC_PROTOCOL_SEM_BITS (QL_SEM_BITS_BASE_CODE << 6)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_FLASH_SEM_BITS (QL_SEM_BITS_BASE_CODE << 8)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_PROBE_MUX_SEM_BITS (QL_SEM_BITS_BASE_CODE << 10)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_ROUTING_INDEX_SEM_BITS (QL_SEM_BITS_BASE_CODE << 12)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_PROCESSOR_SEM_BITS (QL_SEM_BITS_BASE_CODE << 14)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_NIC_RECV_CONFIG_SEM_BITS (QL_SEM_BITS_BASE_CODE << 14)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_SEM_MASK_BASE_CODE 0x30000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_PORT0_XGMAC_SEM_MASK (QL_SEM_MASK_BASE_CODE)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_PORT1_XGMAC_SEM_MASK (QL_SEM_MASK_BASE_CODE << 2)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_ICB_ACCESS_ADDRESS_SEM_MASK (QL_SEM_MASK_BASE_CODE << 4)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_MAC_PROTOCOL_SEM_MASK (QL_SEM_MASK_BASE_CODE << 6)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_FLASH_SEM_MASK (QL_SEM_MASK_BASE_CODE << 8)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_PROBE_MUX_SEM_MASK (QL_SEM_MASK_BASE_CODE << 10)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_ROUTING_INDEX_SEM_MASK (QL_SEM_MASK_BASE_CODE << 12)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_PROCESSOR_SEM_MASK (QL_SEM_MASK_BASE_CODE << 14)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_NIC_RECV_CONFIG_SEM_MASK (QL_SEM_MASK_BASE_CODE << 14)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* XGMAC Address Register 0x78 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XGMAC_ADDRESS_RDY (0x8000u<<16)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XGMAC_ADDRESS_READ_TRANSACT (0x4000u<<16)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XGMAC_ADDRESS_ACCESS_ERROR (0x2000u<<16)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* XGMAC Register Set */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_GLOBAL_CONFIGURATION 0x108
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define GLOBAL_CONFIG_JUMBO_MODE 0x40
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_TX_CONFIGURATION 0x10C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XGMAC_MAC_TX_ENABLE 0x02
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_RX_CONFIGURATION 0x110
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XGMAC_MAC_RX_ENABLE 0x02
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_FLOW_CONTROL 0x11C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_TX_PARAM 0x134
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_RX_PARAM 0x138
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_TX_PKTS 0x200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_TX_OCTETS 0x208
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_TX_MULTCAST_PKTS 0x210
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_TX_BROADCAST_PKTS 0x218
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_TX_PAUSE_PKTS 0x230
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_RX_OCTETS 0x300
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_RX_OCTETS_OK 0x308
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_RX_PKTS 0x310
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_RX_PKTS_OK 0x318
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_RX_BROADCAST_PKTS 0x320
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_RX_MULTCAST_PKTS 0x328
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_RX_JABBER_PKTS 0x348
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_FCS_ERR 0x360
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_ALIGN_ERR 0x368
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_RX_SYM_ERR 0x370
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_RX_INT_ERR 0x378
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_RX_PAUSE_PKTS 0x388
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_PHY_ADDR 0x430
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_MAC_RX_FIFO_DROPS 0x5B8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* MAC Protocol Address Index Register Set 0xA8 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_PROTOCOL_ADDRESS_INDEX_MW (0x8000u<<16)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_PROTOCOL_ADDRESS_ENABLE (1 << 27)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_PROTOCOL_TYPE_CAM_MAC (0x0)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_PROTOCOL_TYPE_MULTICAST (0x10000u)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* NIC Receive Configuration Register 0xD4 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RECV_CONFIG_DEFAULT_Q_MASK (0x7F000000u)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RECV_CONFIG_VTAG_REMOVAL_MASK (0x80000u)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RECV_CONFIG_VTAG_RV 0x08
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * 10G MAC Address Register (XGMAC_ADDR) bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XGMAC_ADDR_RDY (1 << 31)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XGMAC_ADDR_R (1 << 30)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XGMAC_ADDR_XME (1 << 29)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PAUSE_SRC_LO 0x00000100
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PAUSE_SRC_HI 0x00000104
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define GLOBAL_CFG 0x00000108
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define GLOBAL_CFG_RESET (1 << 0)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define GLOBAL_CFG_JUMBO (1 << 6)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define GLOBAL_CFG_TX_STAT_EN (1 << 10)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define GLOBAL_CFG_RX_STAT_EN (1 << 11)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CFG 0x0000010c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CFG_RESET (1 << 0)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CFG_EN (1 << 1)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CFG_PREAM (1 << 2)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CFG 0x00000110
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CFG_RESET (1 << 0)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CFG_EN (1 << 1)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CFG_PREAM (1 << 2)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLOW_CTL 0x0000011c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PAUSE_OPCODE 0x00000120
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PAUSE_TIMER 0x00000124
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PAUSE_FRM_DEST_LO 0x00000128
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PAUSE_FRM_DEST_HI 0x0000012c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_TX_PARAMS 0x00000134
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_TX_PARAMS_JUMBO (1 << 31)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_TX_PARAMS_SIZE_SHIFT 16
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_RX_PARAMS 0x00000138
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_SYS_INT 0x00000144
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_SYS_INT_MASK 0x00000148
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_MGMT_INT 0x0000014c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_MGMT_IN_MASK 0x00000150
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define EXT_ARB_MODE 0x000001fc
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS 0x00000200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS_LO 0x00000204
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_BYTES 0x00000208
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_BYTES_LO 0x0000020C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_MCAST_PKTS 0x00000210
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_MCAST_PKTS_LO 0x00000214
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_BCAST_PKTS 0x00000218
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_BCAST_PKTS_LO 0x0000021C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_UCAST_PKTS 0x00000220
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_UCAST_PKTS_LO 0x00000224
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CTL_PKTS 0x00000228
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CTL_PKTS_LO 0x0000022c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PAUSE_PKTS 0x00000230
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PAUSE_PKTS_LO 0x00000234
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_64_PKT 0x00000238
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_64_PKT_LO 0x0000023c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_65_TO_127_PKT 0x00000240
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_65_TO_127_PKT_LO 0x00000244
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_128_TO_255_PKT 0x00000248
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_128_TO_255_PKT_LO 0x0000024c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_256_511_PKT 0x00000250
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_256_511_PKT_LO 0x00000254
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_512_TO_1023_PKT 0x00000258
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_512_TO_1023_PKT_LO 0x0000025c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_1024_TO_1518_PKT 0x00000260
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_1024_TO_1518_PKT_LO 0x00000264
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_1519_TO_MAX_PKT 0x00000268
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_1519_TO_MAX_PKT_LO 0x0000026c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_UNDERSIZE_PKT 0x00000270
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_UNDERSIZE_PKT_LO 0x00000274
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OVERSIZE_PKT 0x00000278
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OVERSIZE_PKT_LO 0x0000027c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_HALF_FULL_DET 0x000002a0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_HALF_FULL_DET_LO 0x000002a4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OVERFLOW_DET 0x000002a8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OVERFLOW_DET_LO 0x000002ac
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_HALF_FULL_MASK 0x000002b0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_HALF_FULL_MASK_LO 0x000002b4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OVERFLOW_MASK 0x000002b8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OVERFLOW_MASK_LO 0x000002bc
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define STAT_CNT_CTL 0x000002c0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define STAT_CNT_CTL_CLEAR_TX (1 << 0) /* Control */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define STAT_CNT_CTL_CLEAR_RX (1 << 1) /* Control */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define AUX_RX_HALF_FULL_DET 0x000002d0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define AUX_TX_HALF_FULL_DET 0x000002d4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define AUX_RX_OVERFLOW_DET 0x000002d8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define AUX_TX_OVERFLOW_DET 0x000002dc
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define AUX_RX_HALF_FULL_MASK 0x000002f0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define AUX_TX_HALF_FULL_MASK 0x000002f4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define AUX_RX_OVERFLOW_MASK 0x000002f8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define AUX_TX_OVERFLOW_MASK 0x000002fc
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_BYTES 0x00000300
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_BYTES_LO 0x00000304
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_BYTES_OK 0x00000308
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_BYTES_OK_LO 0x0000030c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS 0x00000310
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_LO 0x00000314
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_OK 0x00000318
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_OK_LO 0x0000031c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_BCAST_PKTS 0x00000320
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_BCAST_PKTS_LO 0x00000324
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_MCAST_PKTS 0x00000328
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_MCAST_PKTS_LO 0x0000032c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_UCAST_PKTS 0x00000330
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_UCAST_PKTS_LO 0x00000334
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_UNDERSIZE_PKTS 0x00000338
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_UNDERSIZE_PKTS_LO 0x0000033c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OVERSIZE_PKTS 0x00000340
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OVERSIZE_PKTS_LO 0x00000344
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_JABBER_PKTS 0x00000348
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_JABBER_PKTS_LO 0x0000034c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_UNDERSIZE_FCERR_PKTS 0x00000350
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_UNDERSIZE_FCERR_PKTS_LO 0x00000354
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DROP_EVENTS 0x00000358
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DROP_EVENTS_LO 0x0000035c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_FCERR_PKTS 0x00000360
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_FCERR_PKTS_LO 0x00000364
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_ALIGN_ERR 0x00000368
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_ALIGN_ERR_LO 0x0000036c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_SYMBOL_ERR 0x00000370
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_SYMBOL_ERR_LO 0x00000374
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_MAC_ERR 0x00000378
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_MAC_ERR_LO 0x0000037c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CTL_PKTS 0x00000380
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CTL_PKTS_LO 0x00000384
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PAUSE_PKTS 0x00000388
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PAUSE_PKTS_LO 0x0000038c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_64_PKTS 0x00000390
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_64_PKTS_LO 0x00000394
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_65_TO_127_PKTS 0x00000398
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_65_TO_127_PKTS_LO 0x0000039c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_128_255_PKTS 0x000003a0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_128_255_PKTS_LO 0x000003a4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_256_511_PKTS 0x000003a8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_256_511_PKTS_LO 0x000003ac
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_512_TO_1023_PKTS 0x000003b0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_512_TO_1023_PKTS_LO 0x000003b4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_1024_TO_1518_PKTS 0x000003b8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_1024_TO_1518_PKTS_LO 0x000003bc
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_1519_TO_MAX_PKTS 0x000003c0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_1519_TO_MAX_PKTS_LO 0x000003c4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_LEN_ERR_PKTS 0x000003c8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_LEN_ERR_PKTS_LO 0x000003cc
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MDIO_TX_DATA 0x00000400
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MDIO_RX_DATA 0x00000410
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MDIO_CMD 0x00000420
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MDIO_PHY_ADDR 0x00000430
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MDIO_PORT 0x00000440
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MDIO_STATUS 0x00000450
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CBFC_PAUSE_FRAMES0 0x00000500
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CBFC_PAUSE_FRAMES0_LO 0x00000504
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CBFC_PAUSE_FRAMES1 0x00000508
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CBFC_PAUSE_FRAMES1_LO 0x0000050C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CBFC_PAUSE_FRAMES2 0x00000510
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CBFC_PAUSE_FRAMES2_LO 0x00000514
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CBFC_PAUSE_FRAMES3 0x00000518
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CBFC_PAUSE_FRAMES3_LO 0x0000051C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CBFC_PAUSE_FRAMES4 0x00000520
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CBFC_PAUSE_FRAMES4_LO 0x00000524
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CBFC_PAUSE_FRAMES5 0x00000528
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CBFC_PAUSE_FRAMES5_LO 0x0000052C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CBFC_PAUSE_FRAMES6 0x00000530
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CBFC_PAUSE_FRAMES6_LO 0x00000534
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CBFC_PAUSE_FRAMES7 0x00000538
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_CBFC_PAUSE_FRAMES7_LO 0x0000053C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_FCOE_PKTS 0x00000540
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_FCOE_PKTS_LO 0x00000544
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_MGMT_PKTS 0x00000548
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_MGMT_PKTS_LO 0x0000054C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CBFC_PAUSE_FRAMES0 0x00000568
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CBFC_PAUSE_FRAMES0_LO 0x0000056C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CBFC_PAUSE_FRAMES1 0x00000570
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CBFC_PAUSE_FRAMES1_LO 0x00000574
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CBFC_PAUSE_FRAMES2 0x00000578
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CBFC_PAUSE_FRAMES2_LO 0x0000057C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CBFC_PAUSE_FRAMES3 0x00000580
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CBFC_PAUSE_FRAMES3_LO 0x00000584
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CBFC_PAUSE_FRAMES4 0x00000588
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CBFC_PAUSE_FRAMES4_LO 0x0000058C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CBFC_PAUSE_FRAMES5 0x00000590
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CBFC_PAUSE_FRAMES5_LO 0x00000594
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CBFC_PAUSE_FRAMES6 0x00000598
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CBFC_PAUSE_FRAMES6_LO 0x0000059C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CBFC_PAUSE_FRAMES7 0x000005A0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_CBFC_PAUSE_FRAMES7_LO 0x000005A4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_FCOE_PKTS 0x000005A8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_FCOE_PKTS_LO 0x000005AC
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_MGMT_PKTS 0x000005B0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_MGMT_PKTS_LO 0x000005B4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_NIC_FIFO_DROP 0x000005B8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_NIC_FIFO_DROP_LO 0x000005BC
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_FCOE_FIFO_DROP 0x000005C0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_FCOE_FIFO_DROP_LO 0x000005C4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_MGMT_FIFO_DROP 0x000005C8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_MGMT_FIFO_DROP_LO 0x000005CC
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_PRIORITY0 0x00000600
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_PRIORITY0_LO 0x00000604
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_PRIORITY1 0x00000608
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_PRIORITY1_LO 0x0000060C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_PRIORITY2 0x00000610
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_PRIORITY2_LO 0x00000614
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_PRIORITY3 0x00000618
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_PRIORITY3_LO 0x0000061C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_PRIORITY4 0x00000620
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_PRIORITY4_LO 0x00000624
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_PRIORITY5 0x00000628
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_PRIORITY5_LO 0x0000062C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_PRIORITY6 0x00000630
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_PRIORITY6_LO 0x00000634
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_PRIORITY7 0x00000638
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_PKTS_PRIORITY7_LO 0x0000063C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OCTETS_PRIORITY0 0x00000640
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OCTETS_PRIORITY0_LO 0x00000644
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OCTETS_PRIORITY1 0x00000648
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OCTETS_PRIORITY1_LO 0x0000064C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OCTETS_PRIORITY2 0x00000650
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OCTETS_PRIORITY2_LO 0x00000654
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OCTETS_PRIORITY3 0x00000658
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OCTETS_PRIORITY3_LO 0x0000065C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OCTETS_PRIORITY4 0x00000660
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OCTETS_PRIORITY4_LO 0x00000664
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OCTETS_PRIORITY5 0x00000668
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OCTETS_PRIORITY5_LO 0x0000066C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OCTETS_PRIORITY6 0x00000670
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OCTETS_PRIORITY6_LO 0x00000674
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OCTETS_PRIORITY7 0x00000678
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_OCTETS_PRIORITY7_LO 0x0000067C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS_PRIORITY0 0x00000680
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS_PRIORITY0_LO 0x00000684
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS_PRIORITY1 0x00000688
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS_PRIORITY1_LO 0x0000068C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS_PRIORITY2 0x00000690
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS_PRIORITY2_LO 0x00000694
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS_PRIORITY3 0x00000698
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS_PRIORITY3_LO 0x0000069C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS_PRIORITY4 0x000006A0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS_PRIORITY4_LO 0x000006A4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS_PRIORITY5 0x000006A8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS_PRIORITY5_LO 0x000006AC
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS_PRIORITY6 0x000006B0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS_PRIORITY6_LO 0x000006B4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS_PRIORITY7 0x000006B8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_PKTS_PRIORITY7_LO 0x000006BC
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OCTETS_PRIORITY0 0x000006C0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OCTETS_PRIORITY0_LO 0x000006C4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OCTETS_PRIORITY1 0x000006C8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OCTETS_PRIORITY1_LO 0x000006CC
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OCTETS_PRIORITY2 0x000006D0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OCTETS_PRIORITY2_LO 0x000006D4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OCTETS_PRIORITY3 0x000006D8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OCTETS_PRIORITY3_LO 0x000006DC
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OCTETS_PRIORITY4 0x000006E0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OCTETS_PRIORITY4_LO 0x000006E4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OCTETS_PRIORITY5 0x000006E8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OCTETS_PRIORITY5_LO 0x000006EC
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OCTETS_PRIORITY6 0x000006F0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OCTETS_PRIORITY6_LO 0x000006F4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OCTETS_PRIORITY7 0x000006F8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_OCTETS_PRIORITY7_LO 0x000006FC
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DISCARD_PRIORITY0 0x00000700
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DISCARD_PRIORITY0_LO 0x00000704
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DISCARD_PRIORITY1 0x00000708
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DISCARD_PRIORITY1_LO 0x0000070C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DISCARD_PRIORITY2 0x00000710
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DISCARD_PRIORITY2_LO 0x00000714
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DISCARD_PRIORITY3 0x00000718
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DISCARD_PRIORITY3_LO 0x0000071C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DISCARD_PRIORITY4 0x00000720
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DISCARD_PRIORITY4_LO 0x00000724
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DISCARD_PRIORITY5 0x00000728
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DISCARD_PRIORITY5_LO 0x0000072C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DISCARD_PRIORITY6 0x00000730
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DISCARD_PRIORITY6_LO 0x00000734
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DISCARD_PRIORITY7 0x00000738
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_DISCARD_PRIORITY7_LO 0x0000073C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CQ0_ID 0x0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define NIC_CORE 0x1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Routing Index Register 0xE4 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ROUTING_INDEX_MW BIT_31
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ROUTING_INDEX_DEFAULT_ENABLE_MASK (0x8320000u)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ROUTING_INDEX_DEFAULT_DISABLE_MASK (0x0320000u)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Routing Data Register 0xE8 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ROUTE_AS_CAM_HIT 0x80
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ROUTE_AS_BCAST_MCAST_MATCH 0x8000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ROUTE_AS_VALID_PKT 0x800000u /* promiscuous mode? */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanenum {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ROUTING_MASK_INDEX_CAM_HIT,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ROUTING_MASK_INDEX_BCAST_MCAST_MATCH,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ROUTING_MASK_INDEX_VALID_PKT,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ROUTING_MASK_INDEX_TOTAL
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ROUTING_MASK_INDEX_MAX 16
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * General definitions...
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Below are a number compiler switches for controlling driver behavior.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Some are not supported under certain conditions and are notated as such.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* MTU & Frame Size stuff */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define JUMBO_MTU 9000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define NORMAL_FRAME_SIZE 2500 /* ETHERMTU,1500 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define JUMBO_FRAME_SIZE 9600
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define LRG_BUF_NORMAL_SIZE NORMAL_FRAME_SIZE
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define LRG_BUF_JUMBO_SIZE JUMBO_FRAME_SIZE
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define VLAN_ID_LEN 2
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define VLAN_HEADER_LEN sizeof (struct ether_vlan_header) /* 18 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ETHER_HEADER_LEN sizeof (struct ether_header) /* 14 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define NUM_TX_RING_ENTRIES (1024)
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define NUM_RX_RING_ENTRIES (1024)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define NUM_SMALL_BUFFERS (1024)
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define NUM_LARGE_BUFFERS (1024)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RX_TX_RING_SHADOW_SPACE 2 /* 1st one is wqicb and 2nd for cqicb */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BUF_Q_PTR_SPACE ((((NUM_SMALL_BUFFERS * sizeof (uint64_t)) \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan / VM_PAGE_SIZE) + 1) + \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan (((NUM_LARGE_BUFFERS * sizeof (uint64_t)) \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan / VM_PAGE_SIZE) + 1))
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAX_CQ 128
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define DFLT_RX_COALESCE_WAIT 90 /* usec wait for coalescing */
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define DFLT_RX_INTER_FRAME_WAIT 30 /* max interframe-wait for */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan /* coalescing */
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define DFLT_TX_COALESCE_WAIT 90 /* usec wait for coalescing */
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define DFLT_TX_INTER_FRAME_WAIT 30 /* max interframe-wait for */
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan /* coalescing */
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define DFLT_RX_COALESCE_WAIT_JUMBO 40 /* usec wait for coalescing */
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define DFLT_RX_INTER_FRAME_WAIT_JUMBO 10 /* max interframe-wait for */
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan /* coalescing */
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define DFLT_TX_COALESCE_WAIT_JUMBO 40 /* usec wait for coalescing */
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define DFLT_TX_INTER_FRAME_WAIT_JUMBO 10 /* max interframe-wait for */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan /* coalescing */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define DFLT_PAYLOAD_COPY_THRESH 6 /* must be at least 6 usec */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define UDELAY_COUNT 3
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define UDELAY_DELAY 10
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAX_RX_RINGS 128
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAX_TX_RINGS 16
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Large & Small Buffers for Receives
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct lrg_buf_q_entry {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t addr0_lower;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IAL_LAST_ENTRY 0x00000001
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IAL_CONT_ENTRY 0x00000002
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IAL_FLAG_MASK 0x00000003
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t addr0_upper;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct bufq_addr_element {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t addr_low;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t addr_high;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_NO_RESET 0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_DO_RESET 1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Link must be in one of these states */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanenum link_state_t {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan LS_DOWN,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan LS_UP
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* qlge->flags definitions. */
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define INTERRUPTS_ENABLED BIT_0
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define ADAPTER_ERROR BIT_1
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define ADAPTER_SUSPENDED BIT_8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * ISP PCI Configuration Register Set structure definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef volatile struct
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan{
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint16_t vendor_id;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint16_t device_id;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint16_t command;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint16_t status;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint8_t revision;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint8_t prog_class;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint8_t sub_class;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint8_t base_class;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint8_t cache_line_size;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint8_t latency_timer;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint8_t header_type;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t io_base_address;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t pci_cntl_reg_set_mem_base_address_lower;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t pci_cntl_reg_set_mem_base_address_upper;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t pci_doorbell_mem_base_address_lower;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t pci_doorbell_mem_base_address_upper;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint16_t sub_vendor_id;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint16_t sub_device_id;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t expansion_rom;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint8_t intr_line;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint8_t intr_pin;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint8_t min_grant;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint8_t max_latency;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint16_t pcie_device_control;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint16_t link_status;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint16_t msi_msg_control;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint16_t msi_x_msg_control;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} pci_cfg_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan *
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Schultz Control Registers Index
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan *
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_PROCESSOR_ADDR 0x00
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_PROCESSOR_DATA 0x04
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_SYSTEM 0x08
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_RESET_FAILOVER 0x0C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_FUNCTION_SPECIFIC_CONTROL 0x10
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_HOST_CMD_STATUS 0x14
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_ICB_RID 0x1C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_ICB_ACCESS_ADDRESS_LOWER 0x20
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_ICB_ACCESS_ADDRESS_UPPER 0x24
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_CONFIGURATION 0x28
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_EN_INTR_MASK 0x007f0000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_EN_TYPE_MASK 0x03000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_EN_TYPE_ENABLE 0x00000100
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_EN_TYPE_DISABLE 0x00000200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_EN_TYPE_READ 0x00000300
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_EN_IHD 0x00002000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_EN_IHD_MASK (INTR_EN_IHD << 16)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_EN_EI 0x00004000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_EN_EN 0x00008000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_STATUS 0x30
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_INTERRUPT_ENABLE 0x34
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_INTERRUPT_MASK 0x38
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_INTERRUPT_STATUS_1 0x3C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_ERROR_STATUS 0x54
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_SEMAPHORE 0x64
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_ADDRESS 0x78
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XGMAC_DATA 0x7C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_NIC_ENHANCED_TX_SCHEDULE 0x80
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_CNA_ENHANCED_TX_SCHEDULE 0x84
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_FLASH_ADDRESS 0x88
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_FLASH_DATA 0x8C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_STOP_CQ_PROCESSING 0x90
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_PAGE_TABLE_RID 0x94
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_WQ_PAGE_TABLE_BASE_ADDR_LOWER 0x98
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_WQ_PAGE_TABLE_BASE_ADDR_UPPER 0x9C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_CQ_PAGE_TABLE_BASE_ADDR_LOWER 0xA0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_CQ_PAGE_TABLE_BASE_ADDR_UPPER 0xA4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_MAC_PROTOCOL_ADDRESS_INDEX 0xA8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_MAC_PROTOCOL_DATA 0xAC
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_SPLIT_HEADER 0xC0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_NIC_RECEIVE_CONFIGURATION 0xD4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_MGMT_RCV_CFG 0xE0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_ROUTING_INDEX 0xE4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_ROUTING_DATA 0xE8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_RSVD7 0xEC
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XG_SERDES_ADDR 0xF0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_XG_SERDES_DATA 0xF4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_PRB_MX_ADDR 0xF8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REG_PRB_MX_DATA 0xFC
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_MASK_PI 0x00000001
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_MASK_HL0 0x00000002
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_MASK_LH0 0x00000004
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_MASK_HL1 0x00000008
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_MASK_LH1 0x00000010
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_MASK_SE 0x00000020
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_MASK_LSC 0x00000040
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_MASK_MC 0x00000080
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_MASK_LINK_IRQS = (INTR_MASK_LSC | INTR_MASK_SE | INTR_MASK_MC)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Interrupt Enable Register 0x34 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_ENABLED 0x8000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define GLOBAL_ENABLE_INTR 0x4000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ENABLE_MSI_MULTI_INTR 0x2000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ONE_INTR_MASK 0x3FF0000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ENABLE_INTR 0x0100
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define DISABLE_INTR 0x0200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define VERIFY_INTR_ENABLED 0x0300
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_ENABLE_INTR(qlge) ql_put32(qlge, \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan REG_INTERRUPT_ENABLE,\
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan (ONE_INTR_MASK | ENABLE_INTR))
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_DISABLE_INTR(qlge) ql_put32(qlge, \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan REG_INTERRUPT_ENABLE, \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan (ONE_INTR_MASK | DISABLE_INTR))
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_ENABLE_PI_INTR(qlge) ql_put32(qlge, \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan REG_INTERRUPT_MASK, (BIT_16|1))
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_DISABLE_PI_INTR(qlge) ql_put32(qlge, \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan REG_INTERRUPT_MASK, BIT_16)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_ENABLE_GLOBAL_INTRS(qlge) { \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ql_put32(qlge, REG_INTERRUPT_ENABLE, \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan (0x40000000u | GLOBAL_ENABLE_INTR)); \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan qlge->flags |= INTERRUPTS_ENABLED; \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan }
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_DISABLE_GLOBAL_INTRS(qlge) { \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ql_put32(qlge, \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan REG_INTERRUPT_ENABLE, (0x40000000u)); \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan qlge->flags &= ~INTERRUPTS_ENABLED; \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan }
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REQ_Q_VALID 0x10
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RSP_Q_VALID 0x10
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Mailbox Registers
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MPI_REG 0x1002
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define NUM_MAILBOX_REGS 16
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FUNC_0_IN_MAILBOX_0_REG_OFFSET 0x1180
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FUNC_0_OUT_MAILBOX_0_REG_OFFSET 0x1190
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FUNC_1_IN_MAILBOX_0_REG_OFFSET 0x1280
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FUNC_1_OUT_MAILBOX_0_REG_OFFSET 0x1290
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Control Register Set definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef volatile struct
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan{
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t processor_address; /* 0x00 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t processor_data; /* 0x04 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t system_data; /* 0x08 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t reset_failover; /* 0x0C */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t function_specific_control; /* 0x10 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t host_command_status; /* 0x14 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t led; /* 0x18 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t icb_rid; /* 0x1c */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t idb_access_address_low; /* 0x20 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t idb_access_address_high; /* 0x24 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t configuration; /* 0x28 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t bios_base; /* 0x2C */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t status; /* 0x30 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t interrupt_enable; /* 0x34 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t interrupt_mask; /* 0x38 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t interrupt_status_1; /* 0x3c */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t interrupt_status_2; /* 0x40 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t interrupt_status_3; /* 0x44 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t interrupt_status_4; /* 0x48 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t rev_id; /* 0x4c */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t force_ecc_error; /* 0x50 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t error_status; /* 0x54 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t internal_ram_debug_address; /* 0x58 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t internal_ram_data; /* 0x5c */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t correctable_ecc_error; /* 0x60 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t semaphore; /* 0x64 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t gpio1; /* 0x68 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t gpio2; /* 0x6c */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t gpio3; /* 0x70 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t reserved1; /* 0x74 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t xgmac_address; /* 0x78 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t xgmac_data; /* 0x7c */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t nic_enhanced_tx_schedule; /* 0x80 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t cna_enhanced_tx_schedule; /* 0x84 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t flash_address; /* 0x88 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t flash_data; /* 0x8c */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t stop_cq; /* 0x90 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t page_table_rid; /* 0x94 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t wq_page_table_base_address_lower; /* 0x98 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t wq_page_table_base_address_upper; /* 0x9c */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t cq_page_table_base_address_lower; /* 0xA0 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t cq_page_table_base_address_upper; /* 0xA4 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t mac_protocol_address_index; /* 0xA8 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t mac_protocol_data; /* 0xAc */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t cos_default_cq_reg1; /* 0xB0 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t cos_default_cq_reg2; /* 0xB4 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t ethertype_skip_reg1; /* 0xB8 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t ethertype_skip_reg2; /* 0xBC */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t split_header; /* 0xC0 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t fcoe_pause_threshold; /* 0xC4 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t nic_pause_threshold; /* 0xC8 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t fc_ethertype; /* 0xCC */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t fcoe_recv_configuration; /* 0xD0 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t nic_recv_configuration; /* 0xD4 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t cos_tags_in_fcoe_fifo; /* 0xD8 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t cos_tags_in_nic_fifo; /* 0xDc */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t mgmt_recv_configuration; /* 0xE0 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t routing_index; /* 0xE4 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t routing_data; /* 0xE8 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t reserved2; /* 0xEc */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t xg_serdes_address; /* 0xF0 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t xg_serdes_data; /* 0xF4 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t probe_mux_address; /* 0xF8 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvolatile uint32_t probe_mux_read_data; /* 0xFc */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_PENDING (uint32_t)(CSR_COMPLETION_INTR)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} dev_reg_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef volatile struct
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan{
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan volatile uint32_t doorbell_reg_address[256]; /* 0x00 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} dev_doorbell_reg_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SET_RMASK(val) ((val & 0xffff) | (val << 16))
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CLR_RMASK(val) (0 | (val << 16))
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * DMA registers read only
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef volatile struct
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan{
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan volatile uint32_t req_q_out;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan volatile uint32_t rsp_q_in;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} iop_dmaregs_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define DMAREGS_SIZE (sizeof (iop_dmaregs_t))
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define DUMMY_SIZE (32*1024)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#ifdef QL_DEBUG
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct crash_record {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t fw_major_version; /* 00 - 01 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t fw_minor_version; /* 02 - 03 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t fw_patch_version; /* 04 - 05 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t fw_build_version; /* 06 - 07 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t build_date[16]; /* 08 - 17 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t build_time[16]; /* 18 - 27 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t build_user[16]; /* 28 - 37 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t card_serial_num[16]; /* 38 - 47 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t time_of_crash_in_secs; /* 48 - 4B */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t time_of_crash_in_ms; /* 4C - 4F */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t outb_risc_sd_num_frames; /* 50 - 51 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t oap_sd_length; /* 52 - 53 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t iap_sd_num_frames; /* 54 - 55 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t inb_risc_sd_length; /* 56 - 57 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t reserved[28]; /* 58 - 7F */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t outb_risc_reg_dump[256]; /* 80 -17F */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t inb_risc_reg_dump[256]; /* 180 -27F */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t inb_outb_risc_stack_dump[1]; /* 280 - ??? */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} crash_record_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#endif
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * I/O register access macros
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * #if QL_DEBUG & 1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RD_REG_BYTE(qlge, addr) \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ddi_get8(qlge->dev_handle, (uint8_t *)addr)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RD_REG_DWORD(qlge, addr) \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ddi_get32(qlge->dev_handle, (uint32_t *)addr)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define WRT_REG_BYTE(qlge, addr, data) \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ddi_put8(qlge->dev_handle, (uint8_t *)addr, data)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define WRT_REG_WORD(qlge, addr, data) \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ddi_put16(qlge->dev_handle, (uint16_t *)addr, data)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define WRT_REG_DWORD(qlge, addr, data) \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ddi_put32(qlge->dev_handle, (uint32_t *)addr, data)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * QLGE-specific ioctls ...
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_IOC ((((('Q' << 8) + 'L') << 8) + 'A') << 8)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Definition of ioctls commands
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_PCI_STATUS (QLA_IOC|1) /* Read all PCI registers */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_WRITE_REG (QLA_IOC|3)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_READ_PCI_REG (QLA_IOC|4)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_WRITE_PCI_REG (QLA_IOC|5)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_GET_DBGLEAVEL (QLA_IOC|6)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_SET_DBGLEAVEL (QLA_IOC|7)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_READ_CONTRL_REGISTERS (QLA_IOC|8)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_MANUAL_READ_FLASH (QLA_IOC|9)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_MANUAL_WRITE_FLASH (QLA_IOC|10)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_SUPPORTED_DUMP_TYPES (QLA_IOC|11)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_GET_BINARY_CORE_DUMP (QLA_IOC|12)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_TRIGGER_SYS_ERROR_EVENT (QLA_IOC|13)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_READ_FLASH (QLA_IOC|15)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_WRITE_FLASH (QLA_IOC|16)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_READ_VPD (QLA_IOC|17)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_GET_PROP (QLA_IOC|18)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_SHOW_REGION (QLA_IOC|19)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_LIST_ADAPTER_INFO (QLA_IOC|20)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_READ_FW_IMAGE (QLA_IOC|21)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_WRITE_FW_IMAGE_HEADERS (QLA_IOC|22)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_CONTINUE_COPY_IN (QLA_IOC|29)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_CONTINUE_COPY_OUT (QLA_IOC|30)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_SOFT_RESET (QLA_IOC|31)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_IOCTL_CMD_FIRST QLA_PCI_STATUS
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QLA_IOCTL_CMD_LAST QLA_SOFT_RESET
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Solaris IOCTL can copy in&out up to 1024 bytes each time */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IOCTL_BUFFER_SIZE 1024
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IOCTL_MAX_BUF_SIZE (IOCTL_BUFFER_SIZE*512) /* 512k */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct ioctl_header_info {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t version;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t reserved;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t option[2];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t expected_trans_times;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t payload_length;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t total_length;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} ioctl_header_info_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IOCTL_HEADER_LEN sizeof (ioctl_header_info_t)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IOCTL_MAX_DATA_LEN (IOCTL_BUFFER_SIZE - IOCTL_HEADER_LEN)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct ql_pci_reg {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t addr; /* register number [0..ff] */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t value; /* data to write/data read */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct ql_device_reg {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t addr; /* address to write/data read */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t value; /* data to write/data read */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct ql_flash_io_info {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t addr; /* register number [0..ff] */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t size; /* number of data to write/data read */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct qlnic_mpi_version_info {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t fw_version;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t phy_version;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct qlnic_link_status_info {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t link_status_info;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t additional_info;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t network_hw_info;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t dcbx_frame_counters_info;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t change_counters_info;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct qlnic_prop_info {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct qlnic_mpi_version_info mpi_version; /* MPI Version */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t fw_state; /* MPI state */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct qlnic_link_status_info link_status; /* Link Status */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct ql_adapter_info {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t pci_binding; /* /bus/dev/func number per IEEE 1277 format */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t vendor_id;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t device_id;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t sub_vendor_id;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t sub_device_id;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct ether_addr cur_addr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} ql_adapter_info_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define DUMP_DESCRIPTION_HEADER_SIGNATURE 0x42535451 /* "QTSB" */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct ql_dump_header {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t signature; /* QTSB */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t version;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t length;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t num_dumps;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t reserved;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t time_stamp_lo;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t time_stamp_hi;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} ql_dump_header_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define DUMP_IMAGE_HEADER_SIGNATURE 0x504D4451 /* "QDMP" */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct ql_dump_image_header {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t signature; /* QDMP */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t version;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t header_length;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t checksum;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t data_type;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define DUMP_TYPE_CORE_DUMP 1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define DUMP_TYPE_REGISTER_DUMP 2
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define DUMP_TYPE_DRIVER_DUMP 3
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t data_length;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} ql_dump_image_header_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* utility request */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define DUMP_REQUEST_CORE BIT_1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define DUMP_REQUEST_REGISTER BIT_2
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define DUMP_REQUEST_DRIVER BIT_3
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define DUMP_REQUEST_ALL BIT_7
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define DUMP_DESCRIPTION_FOOTER_SIGNATURE 0x45535451 /* "QTSE" */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct ql_dump_footer {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t signature; /* QTSE */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t version;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t length;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint16_t reserved;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t time_stamp_lo;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t time_stamp_hi;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} ql_dump_footer_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Solaris qlnic exit status.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QN_ERR_BASE 0x30000000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QN_ERR_OK QN_ERR_BASE | 0 /* Success */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QN_ERR_NOT_SUPPORTED QN_ERR_BASE | 1 /* Command not supported */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QN_ERR_INVALID_PARAM QN_ERR_BASE | 2 /* Invalid parameter */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QN_ERR_WRONG_NO_PARAM QN_ERR_BASE | 3 /* Wrong number of parameters */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QN_ERR_FILE_NOT_FOUND QN_ERR_BASE | 4 /* File not found */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QN_ERR_FILE_READ_ERR QN_ERR_BASE | 5 /* File read err */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QN_ERR_FILE_WRITE_ERR QN_ERR_BASE | 6 /* File write err */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QN_ERR_NO_MEMORY QN_ERR_BASE | 7 /* No Memory */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_FDT 0x1A
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FDT_ADDR 0x360000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FDT_SIZE 0x80
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_FLT 0x1C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FLT_ADDR 0x361000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FLT_SIZE 0x1000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_NIC_BOOT_CODE 0x2E
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_NIC_BOOT_CODE_ADDR 0x0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_NIC_BOOT_CODE_SIZE 0x80000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_MPI_FW_USE 0x42
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_MPI_FW_USE_ADDR 0xF0000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_MPI_FW_USE_SIZE 0x10000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_MPI_RISC_FW 0x40
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_MPI_RISC_FW_ADDR 0x100000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_MPI_RISC_FW_SIZE 0x10000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_VPD0 0x2C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_VPD0_ADDR 0x140000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_VPD0_SIZE 0x200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_NIC_PARAM0 0x46
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_NIC_PARAM0_ADDR 0x140200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_NIC_PARAM0_SIZE 0x200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_VPD1 0x2D
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_VPD1_ADDR 0x140400
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_VPD1_SIZE 0x200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_NIC_PARAM1 0x47
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_NIC_PARAM1_ADDR 0x140600
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_NIC_PARAM1_SIZE 0x200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_MPI_CFG 0x41
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_MPI_CFG_ADDR 0x150000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_MPI_CFG_SIZE 0x10000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_EDC_PHY_FW 0x45
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_EDC_PHY_FW_ADDR 0x170000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_EDC_PHY_FW_SIZE 0x20000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_FC_BOOT_CODE 0x07
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FC_BOOT_CODE_ADDR 0x200000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FC_BOOT_CODE_SIZE 0x80000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_FC_FW 0x01
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FC_FW_ADDR 0x280000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FC_FW_SIZE 0x80000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_FC_VPD0 0x14
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FC_VPD0_ADDR 0x340000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FC_VPD0_SIZE 0x200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_FC_NVRAM0 0x15
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FC_NVRAM0_ADDR 0x340200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FC_NVRAM0_SIZE 0x200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_FC_VPD1 0x16
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FC_VPD1_ADDR 0x340400
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FC_VPD1_SIZE 0x200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_FC_NVRAM1 0x17
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FC_NVRAM1_ADDR 0x340600
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FC_NVRAM1_SIZE 0x200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_FC_BOOT_CODE 0x07
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FC_BOOT_CODE_ADDR 0x200000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FC_BOOT_CODE_SIZE 0x80000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_FC_FW 0x01
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FC_FW_ADDR 0x280000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FC_FW_SIZE 0x80000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_TIME_STAMP 0x60
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* flash region for testing */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_REGION_WIN_FW_DUMP0 0x48
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_WIN_FW_DUMP0_ADDR 0x190000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_WIN_FW_DUMP0_SIZE 0x30000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FLASH_TEST_REGION_ADDR ISP_8100_WIN_FW_DUMP0_ADDR
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ISP_8100_FLASH_TEST_REGION_SIZE 0x10000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* mailbox */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define QL_8XXX_SFP_SIZE 256
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAILBOX_TOV 30 /* Default Timeout value. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * ISP mailbox commands from Host
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_NO_OPERATION 0 /* No Operation. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_LOAD_RAM 1 /* Load RAM. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_EXECUTE_FIRMWARE 2 /* Execute firmware. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_MAILBOX_REGISTER_TEST 6 /* Mailbox echo test */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_VERIFY_CHECKSUM 7 /* Verify checksum. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_ABOUT_FIRMWARE 8 /* About Firmware. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_RISC_MEMORY_COPY 0xA /* Copy RISC memory. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_LOAD_RISC_RAM 0xB /* Load RISC RAM command. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_DUMP_RISC_RAM 0xC /* Dump RISC RAM command. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_INIT_RISC_RAM 0xE
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_READ_RAM_WORD 0xF /* Read RAM */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_STOP_FIRMWARE 0x14 /* Stop firmware */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_GENERATE_SYS_ERROR 0x2A /* Generate System Error */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_WRITE_SFP 0x30 /* Write SFP. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_READ_SFP 0x31 /* Read SFP. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_INITIALIZE_FIRMWARE 0x60 /* Initialize firmware */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_GET_INIT_CTRL_BLOCK 0x61 /* Get Initialization CBLK */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_GET_FIRMWARE_STATE 0x69 /* Get firmware state. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_IDC_REQUEST 0x100 /* IDC Request. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IDC_REQ_ALL_DEST_FUNC_MASK BIT_4 /* Mailbox 1 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IDC_REQ_DEST_FUNC_0_MASK BIT_0 /* Mailbox 2 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IDC_REQ_DEST_FUNC_1_MASK BIT_1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IDC_REQ_DEST_FUNC_2_MASK BIT_2
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IDC_REQ_DEST_FUNC_3_MASK BIT_3
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanenum IDC_REQ_DEST_FUNC {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar SwaminathanIDC_REQ_DEST_FUNC_0,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar SwaminathanIDC_REQ_DEST_FUNC_1,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar SwaminathanIDC_REQ_DEST_FUNC_2,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar SwaminathanIDC_REQ_DEST_FUNC_3,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar SwaminathanIDC_REQ_DEST_FUNC_ALL = 0x0F
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IDC_REQ_TIMEOUT_MASK 0x01
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_IDC_ACK 0x101 /* IDC Acknowledge. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_IDC_TIME_EXTENDED 0x102 /* IDC Time Extended. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_SET_WAKE_ON_LANE_MODE 0x110
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_SET_WAKE_ON_LANE_FILTER 0x111
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_CLEAR_WAKE_ON_LANE_FILTER 0x112
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_SET_WAKE_ON_LANE_MAGIC_PKT 0x113
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_CLEAR_WAKE_ON_LANE_MAGIC_PKT 0x114
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_PORT_RESET 0x120
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_SET_PORT_CONFIG 0x122
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_GET_PORT_CONFIG 0x123
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ENABLE_JUMBO_FRAME_SIZE_MASK BIT_16
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_GET_LINK_STATUS 0x124
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_SET_LED_CONFIG 0x125
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBC_GET_LED_CONFIG 0x126
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * ISP mailbox command complete status codes
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBS_COMMAND_COMPLETE 0x4000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBS_INVALID_COMMAND 0x4001
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBS_HOST_INTERFACE_ERROR 0x4002
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBS_TEST_FAILED 0x4003
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBS_POST_ERROR 0x4004
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBS_COMMAND_ERROR 0x4005
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBS_COMMAND_PARAMETER_ERROR 0x4006
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBS_PORT_ID_USED 0x4007
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBS_LOOP_ID_USED 0x4008
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBS_ALL_IDS_IN_USE 0x4009
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBS_NOT_LOGGED_IN 0x400A
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBS_LOOP_DOWN 0x400B
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBS_LOOP_BACK_ERROR 0x400C
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBS_CHECKSUM_ERROR 0x4010
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Async Event Status */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBA_IDC_INTERMEDIATE_COMPLETE 0x1000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBA_ASYNC_EVENT 0x8000 /* Asynchronous event. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBA_SYSTEM_ERR 0x8002
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBA_LINK_UP 0x8011
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanenum {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan XFI_NETWORK_INTERFACE = 1,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan XAUI_NETWORK_INTERFACE,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan XFI_BACKPLANE_INTERFACE,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan XAUI_BACKPLANE_INTERFACE,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan EXT_10GBASE_T_PHY,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan EXT_EXT_EDC_PHY
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBA_LINK_DOWN 0x8012
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBA_IDC_COMPLETE 0x8100
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBA_IDC_REQUEST_NOTIFICATION 0x8101
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBA_IDC_TIME_EXTENDED 0x8102
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBA_DCBX_CONFIG_CHANGE 0x8110
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBA_NOTIFICATION_LOST 0x8120
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBA_SFT_TRANSCEIVER_INSERTION 0x8130
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBA_SFT_TRANSCEIVER_REMOVAL 0x8131
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBA_FIRMWARE_INIT_COMPLETE 0x8400
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MBA_FIRMWARE_INIT_FAILED 0x8401
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct firmware_version_info {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t reserved;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t major_version;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t minor_version;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t sub_minor_version;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} firmware_version_info_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct phy_firmware_version_info {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t reserved;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t major_version;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t minor_version;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint8_t sub_minor_version;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} phy_firmware_version_info_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ENABLE_JUMBO BIT_16
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define STD_PAUSE 0x20
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PP_PAUSE 0x40
accf27a5824ae84dfac7b089c4325917231a7d15Sukumar Swaminathan#define DCBX_ENABLE 0x10
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LOOP_INTERNAL_PARALLEL 0x02
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LOOP_INTERNAL_SERIAL 0x04
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LOOP_EXTERNAL_PHY 0x06
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct port_cfg_info {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t link_cfg;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t max_frame_size;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} port_cfg_info_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanenum {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan PAUSE_MODE_DISABLED,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan PAUSE_MODE_STANDARD, /* Standard Ethernet Pause */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan PAUSE_MODE_PER_PRIORITY /* Class Based Pause */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Mailbox command parameter structure definition. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct mbx_cmd {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t from_mpi; /* number of Incomming from MPI to driver */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t mb[NUM_MAILBOX_REGS];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanclock_t timeout; /* Timeout in seconds. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} mbx_cmd_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Returned Mailbox registers. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct mbx_data {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t from_mpi; /* number of Incomming from MPI to driver */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t mb[NUM_MAILBOX_REGS];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} mbx_data_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Address/Length pairs for the coredump. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MPI_CORE_REGS_ADDR 0x00030000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MPI_CORE_REGS_CNT 127
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MPI_CORE_SH_REGS_CNT 16
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TEST_REGS_ADDR 0x00001000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TEST_REGS_CNT 23
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RMII_REGS_ADDR 0x00001040
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RMII_REGS_CNT 64
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FCMAC1_REGS_ADDR 0x00001080
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FCMAC2_REGS_ADDR 0x000010c0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FCMAC_REGS_CNT 64
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FC1_MBX_REGS_ADDR 0x00001100
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FC2_MBX_REGS_ADDR 0x00001240
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FC_MBX_REGS_CNT 64
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IDE_REGS_ADDR 0x00001140
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IDE_REGS_CNT 64
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define NIC1_MBX_REGS_ADDR 0x00001180
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define NIC2_MBX_REGS_ADDR 0x00001280
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define NIC_MBX_REGS_CNT 64
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SMBUS_REGS_ADDR 0x00001200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SMBUS_REGS_CNT 64
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define I2C_REGS_ADDR 0x00001fc0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define I2C_REGS_CNT 64
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MEMC_REGS_ADDR 0x00003000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MEMC_REGS_CNT 256
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PBUS_REGS_ADDR 0x00007c00
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PBUS_REGS_CNT 256
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MDE_REGS_ADDR 0x00010000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MDE_REGS_CNT 6
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CODE_RAM_ADDR 0x00020000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CODE_RAM_CNT 0x2000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MEMC_RAM_ADDR 0x00100000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MEMC_RAM_CNT 0x2000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* 64 probes, 8 bytes per probe + 4 bytes to list the probe ID */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROBE_DATA_LENGTH_WORDS ((64 * 2) + 1)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define NUMBER_OF_PROBES 34
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define NUMBER_ROUTING_REG_ENTRIES 48
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define WORDS_PER_ROUTING_REG_ENTRY 4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_PROTOCOL_REGISTER_WORDS ((512 * 3) + (32 * 2) + (4096 * 1) + \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan (4096 * 1) + (4 * 2) + (8 * 2) + \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan (16 * 1) + (4 * 1) + (4 * 4) + \
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan (4 * 1))
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Save both the address and data register */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define WORDS_PER_MAC_PROT_ENTRY 2
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MPI_COREDUMP_COOKIE 0x5555aaaa
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct mpi_coredump_global_header {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t cookie;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanchar id_string[16];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t time_lo;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t time_hi;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t total_image_size;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t global_header_size;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanchar driver_info[0xE0];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan}mpi_coredump_global_header_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct mpi_coredump_segment_header {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t cookie;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t seg_number;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t seg_size;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t extra;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanchar description[16];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan}mpi_coredump_segment_header_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct ql_mpi_coredump {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_global_header_t mpi_global_header;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t core_regs_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t mpi_core_regs[MPI_CORE_REGS_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t mpi_core_sh_regs[MPI_CORE_SH_REGS_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t test_logic_regs_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t test_logic_regs[TEST_REGS_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t rmii_regs_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t rmii_regs[RMII_REGS_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t fcmac1_regs_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t fcmac1_regs[FCMAC_REGS_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t fcmac2_regs_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t fcmac2_regs[FCMAC_REGS_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t fc1_mbx_regs_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t fc1_mbx_regs[FC_MBX_REGS_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t ide_regs_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t ide_regs[IDE_REGS_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t nic1_mbx_regs_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t nic1_mbx_regs[NIC_MBX_REGS_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t smbus_regs_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t smbus_regs[SMBUS_REGS_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t fc2_mbx_regs_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t fc2_mbx_regs[FC_MBX_REGS_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t nic2_mbx_regs_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t nic2_mbx_regs[NIC_MBX_REGS_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t i2c_regs_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t i2c_regs[I2C_REGS_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t memc_regs_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t memc_regs[MEMC_REGS_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t pbus_regs_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t pbus_regs[PBUS_REGS_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t mde_regs_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t mde_regs[MDE_REGS_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t xaui_an_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t serdes_xaui_an[14];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t xaui_hss_pcs_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t serdes_xaui_hss_pcs[33];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t xfi_an_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t serdes_xfi_an[14];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t xfi_train_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t serdes_xfi_train[12];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t xfi_hss_pcs_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t serdes_xfi_hss_pcs[15];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t xfi_hss_tx_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t serdes_xfi_hss_tx[32];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t xfi_hss_rx_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t serdes_xfi_hss_rx[32];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t xfi_hss_pll_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t serdes_xfi_hss_pll[32];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t nic_regs_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t nic_regs[64];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* one interrupt state for each CQ */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t intr_states_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t intr_states[MAX_RX_RINGS];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t xgmac_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XGMAC_REGISTER_END 0x740
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t xgmac[XGMAC_REGISTER_END];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t probe_dump_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t probe_dump[PROBE_DATA_LENGTH_WORDS * NUMBER_OF_PROBES];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t routing_reg_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t routing_regs[NUMBER_ROUTING_REG_ENTRIES * WORDS_PER_ROUTING_REG_ENTRY];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t mac_prot_reg_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t mac_prot_regs[MAC_PROTOCOL_REGISTER_WORDS * WORDS_PER_MAC_PROT_ENTRY];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t ets_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t ets[8+2];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t code_ram_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t code_ram[CODE_RAM_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanmpi_coredump_segment_header_t memc_ram_seg_hdr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t memc_ram[MEMC_RAM_CNT];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} ql_mpi_coredump_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define WCS_MPI_CODE_RAM_LENGTH (0x2000*4)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MEMC_MPI_RAM_LENGTH (0x2000*4)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XG_SERDES_ADDR_RDY BIT_31
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XG_SERDES_ADDR_R BIT_30
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define CORE_SEG_NUM 1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TEST_LOGIC_SEG_NUM 2
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RMII_SEG_NUM 3
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FCMAC1_SEG_NUM 4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FCMAC2_SEG_NUM 5
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FC1_MBOX_SEG_NUM 6
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IDE_SEG_NUM 7
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define NIC1_MBOX_SEG_NUM 8
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SMBUS_SEG_NUM 9
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FC2_MBOX_SEG_NUM 10
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define NIC2_MBOX_SEG_NUM 11
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define I2C_SEG_NUM 12
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MEMC_SEG_NUM 13
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PBUS_SEG_NUM 14
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MDE_SEG_NUM 15
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define NIC1_CONTROL_SEG_NUM 16
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define NIC2_CONTROL_SEG_NUM 17
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define NIC1_XGMAC_SEG_NUM 18
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define NIC2_XGMAC_SEG_NUM 19
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define WCS_RAM_SEG_NUM 20
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MEMC_RAM_SEG_NUM 21
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XAUI_AN_SEG_NUM 22
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XAUI_HSS_PCS_SEG_NUM 23
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XFI_AN_SEG_NUM 24
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XFI_TRAIN_SEG_NUM 25
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XFI_HSS_PCS_SEG_NUM 26
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XFI_HSS_TX_SEG_NUM 27
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XFI_HSS_RX_SEG_NUM 28
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define XFI_HSS_PLL_SEG_NUM 29
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTR_STATES_SEG_NUM 31
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ETS_SEG_NUM 34
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PROBE_DUMP_SEG_NUM 35
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ROUTING_INDEX_SEG_NUM 36
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MAC_PROTOCOL_SEG_NUM 37
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Force byte packing for the following structures */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#pragma pack(1)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Work Queue (Request Queue) Initialization Control Block (WQICB)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct wqicb_t {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t len;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define Q_LEN_V (1 << 4)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define Q_LEN_CPP_CONT 0x0000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define Q_LEN_CPP_16 0x0001
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define Q_LEN_CPP_32 0x0002
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define Q_LEN_CPP_64 0x0003
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define Q_LEN_CPP_512 0x0006
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t flags;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define Q_PRI_SHIFT 1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define Q_FLAGS_LC 0x1000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define Q_FLAGS_LB 0x2000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define Q_FLAGS_LI 0x4000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define Q_FLAGS_LO 0x8000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t cq_id_rss;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define Q_CQ_ID_RSS_RV 0x8000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t rid;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t wq_addr_lo;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t wq_addr_hi;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t cnsmr_idx_addr_lo;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t cnsmr_idx_addr_hi;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Completion Queue (Response Queue) Initialization Control Block (CQICB)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct cqicb_t {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t msix_vect;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t reserved1;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t reserved2;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flags;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLAGS_LV 0x08
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLAGS_LS 0x10
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLAGS_LL 0x20
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLAGS_LI 0x40
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLAGS_LC 0x80
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t len;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LEN_V (1 << 4)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LEN_CPP_CONT 0x0000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LEN_CPP_32 0x0001
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LEN_CPP_64 0x0002
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LEN_CPP_128 0x0003
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t rid;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t cq_base_addr_lo; /* completion queue base address */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t cq_base_addr_hi;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t prod_idx_addr_lo; /* completion queue host copy */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan /* producer index host shadow */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t prod_idx_addr_hi;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t pkt_delay;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t irq_delay;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t lbq_addr_lo;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t lbq_addr_hi;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t lbq_buf_size;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t lbq_len; /* entry count */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t sbq_addr_lo;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t sbq_addr_hi;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t sbq_buf_size;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t sbq_len; /* entry count */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct ricb {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t base_cq;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RSS_L4K 0x80
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flags;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RSS_L6K 0x01
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RSS_LI 0x02
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RSS_LB 0x04
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RSS_LM 0x08
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RSS_RI4 0x10
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RSS_RT4 0x20
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RSS_RI6 0x40
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RSS_RT6 0x80
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t mask;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RSS_HASH_CQ_ID_MAX 1024
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t hash_cq_id[RSS_HASH_CQ_ID_MAX];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t ipv6_hash_key[10];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t ipv4_hash_key[4];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Host Command IOCB Formats
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OPCODE_OB_MAC_IOCB 0x01
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OPCODE_OB_MAC_OFFLOAD_IOCB 0x02
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OPCODE_IB_MAC_IOCB 0x20
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OPCODE_IB_SYS_EVENT_IOCB 0x3f
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * The following constants define control bits for buffer
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * length fields for all IOCB's.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OAL_LAST_ENTRY 0x80000000 /* Last valid buffer in list. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OAL_CONT_ENTRY 0x40000000 /* points to an OAL. (continuation) */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct oal_entry {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t buf_addr_low;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t buf_addr_high;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanuint32_t buf_len;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* 32 words, 128 bytes */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define TX_DESC_PER_IOCB 8 /* Number of descs in one TX IOCB */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct ob_mac_iocb_req {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t opcode;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flag0;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_REQ_IPv6 0x80
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_REQ_IPv4 0x40
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_REQ_D 0x08 /* disable generation of comp. msg */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_REQ_I 0x02 /* disable generation of intr at comp */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flag1;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_REQ_TC 0x80 /* enable TCP checksum offload */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_REQ_UC 0x40 /* enable UDP checksum offload */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_REQ_LSO 0x20 /* enable LSO offload */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flag2;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_REQ_VLAN_OFFSET_MASK 0xF8 /* VLAN TCI insert */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_REQ_V 0x04 /* insert VLAN TCI */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_REQ_DFP 0x02 /* Drop for Failover port */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_REQ_IC 0x01 /* enable IP checksum offload */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t unused;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t reserved_cq_tag;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t frame_len; /* max 9000,for none LSO, 16M for LSO */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t tid;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t txq_idx;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t protocol_hdr_len;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t hdr_off; /* tcp/udp hdr offset */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t vlan_tci;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t mss;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan struct oal_entry oal_entry[TX_DESC_PER_IOCB]; /* max FFFFF 1M bytes */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* 16 words, 64 bytes */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct ob_mac_iocb_rsp {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t opcode;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flags1;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_RSP_OI 0x01 /* */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_RSP_I 0x02 /* */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_RSP_E 0x08 /* */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_RSP_S 0x10 /* too Short */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_RSP_L 0x20 /* too Large */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_RSP_P 0x40 /* Padded */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flags2;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flags3;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define OB_MAC_IOCB_RSP_B 0x80
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t tid;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t txq_idx;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t reserved[13];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_VLAN_MASK 0x0ffff
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct ib_mac_iocb_rsp {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t opcode; /* 0x20 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flags1;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_OI 0x01 /* Overide intr delay */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_I 0x02 /* Disble Intr Generation */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_TE 0x04 /* Checksum error */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_NU 0x08 /* No checksum rcvd */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_IE 0x10 /* IPv4 checksum error */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_M_MASK 0x60 /* Multicast info */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_M_NONE 0x00 /* Not mcast frame */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_M_HASH 0x20 /* HASH mcast frame */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_M_REG 0x40 /* Registered mcast frame */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_M_PROM 0x60 /* Promiscuous mcast frame */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_B 0x80 /* Broadcast frame */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flags2;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_P 0x01 /* Promiscuous frame */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_V 0x02 /* Vlan tag present */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_ERR_MASK 0x1c /* */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_ERR_CODE_ERR 0x04
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_ERR_OVERSIZE 0x08
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_ERR_UNDERSIZE 0x10
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_ERR_PREAMBLE 0x14
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_ERR_FRAME_LEN 0x18
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_ERR_CRC 0x1c
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_U 0x20 /* UDP packet */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_T 0x40 /* TCP packet */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_FO 0x80 /* Failover port */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flags3;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_RSS_MASK 0x07 /* RSS mask */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_M_NONE 0x00 /* No RSS match */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_M_IPV4 0x04 /* IPv4 RSS match */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_M_IPV6 0x02 /* IPv6 RSS match */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_M_TCP_V4 0x05 /* TCP with IPv4 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_M_TCP_V6 0x03 /* TCP with IPv6 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_V4 0x08 /* IPV4 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_V6 0x10 /* IPV6 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_IH 0x20 /* Split after IP header */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_DS 0x40 /* data is in small buffer */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_DL 0x80 /* data is in large buffer */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t data_len;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint64_t data_addr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t rss;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t vlan_id; /* 12 bits */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_VLAN_ID_MASK 0xFFF
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_C 0x1000 /* VLAN CFI bit */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_COS_SHIFT 12 /* class of service value */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t reserved1;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t reserved2[6];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t reserved3[3];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flags4;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_HV 0x20
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_HS 0x40
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IB_MAC_IOCB_RSP_HL 0x80
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t hdr_len;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint64_t hdr_addr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* 16 words, 64 bytes */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct ib_sys_event_iocb_rsp {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t opcode;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flag0;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t event_type;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t q_id;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t reserved[15];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SYS_EVENT_PORT_LINK_UP 0x0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SYS_EVENT_PORT_LINK_DOWN 0x1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SYS_EVENT_MULTIPLE_CAM_HITS 0x6
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SYS_EVENT_SOFT_ECC_ERR 0x7
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SYS_EVENT_MGMT_FATAL_ERR 0x8 /* MPI_PROCESSOR */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SYS_EVENT_MAC_INTERRUPT 0x9
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SYS_EVENT_PCI_ERR_READING_SML_LRG_BUF 0x40
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Status Register (#define STATUS) bit definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define STATUS_FE (1 << 0)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define STATUS_PI (1 << 1)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define STATUS_PL0 (1 << 2),
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define STATUS_PL1 (1 << 3)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define STATUS_PI0 (1 << 4)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define STATUS_PI1 (1 << 5)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define STATUS_FUNC_ID_MASK 0x000000c0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define STATUS_FUNC_ID_SHIFT 6
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define STATUS_F0E (1 << 8)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define STATUS_F1E (1 << 9)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define STATUS_F2E (1 << 10)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define STATUS_F3E (1 << 11)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define STATUS_NFE (1 << 12)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Generic Response Queue IOCB Format which abstracts the difference between
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * IB_MAC, OB_MAC IOCBs
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanstruct net_rsp_iocb {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t opcode;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flag0;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flag1;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flag2;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t reserved[15];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Restore original packing rules */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#pragma pack()
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define RESPONSE_ENTRY_SIZE (sizeof (struct net_rsp_iocb))
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define REQUEST_ENTRY_SIZE (sizeof (struct ob_mac_iocb_req))
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* flash */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Little endian machine correction defines. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#ifdef _LITTLE_ENDIAN
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LITTLE_ENDIAN_16(x)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LITTLE_ENDIAN_24(x)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LITTLE_ENDIAN_32(x)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LITTLE_ENDIAN_64(x)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LITTLE_ENDIAN(bp, bytes)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIG_ENDIAN_16(x) ql_change_endian((uint8_t *)x, 2)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIG_ENDIAN_24(x) ql_change_endian((uint8_t *)x, 3)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIG_ENDIAN_32(x) ql_change_endian((uint8_t *)x, 4)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIG_ENDIAN_64(x) ql_change_endian((uint8_t *)x, 8)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIG_ENDIAN(bp, bytes) ql_change_endian((uint8_t *)bp, bytes)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#endif /* _LITTLE_ENDIAN */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Big endian machine correction defines. */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#ifdef _BIG_ENDIAN
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LITTLE_ENDIAN_16(x) ql_change_endian((uint8_t *)x, 2)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LITTLE_ENDIAN_24(x) ql_change_endian((uint8_t *)x, 3)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LITTLE_ENDIAN_32(x) ql_change_endian((uint8_t *)x, 4)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LITTLE_ENDIAN_64(x) ql_change_endian((uint8_t *)x, 8)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define LITTLE_ENDIAN(bp, bytes) ql_change_endian((uint8_t *)bp, bytes)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIG_ENDIAN_16(x)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIG_ENDIAN_24(x)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIG_ENDIAN_32(x)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIG_ENDIAN_64(x)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define BIG_ENDIAN(bp, bytes)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#endif /* _BIG_ENDIAN */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanvoid ql_change_endian(uint8_t *, size_t);
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Flash Address Register 0x88 */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_RDY_FLAG BIT_31
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_R_FLAG BIT_30
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_ERR_FLAG BIT_29
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_CONF_ADDR 0x7D0000u
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_ADDR_MASK 0x7F0000
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_WRSR_CMD 0x01
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_PP_CMD 0x02
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_READ_CMD 0x03
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_WRDI_CMD 0x04
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_RDSR_CMD 0x05
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_WREN_CMD 0x06
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_RDID_CMD 0x9F
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_RES_CMD 0xAB
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Flash definitions.
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct ql_flash_info {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t type; /* flash type */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t flash_size; /* length in bytes of flash */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t sec_mask; /* sector number mask */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flash_manuf; /* flash chip manufacturer id */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flash_id; /* flash chip id */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flash_cap; /* flash chip capacity */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} ql_flash_info_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/*
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan * Flash Description Table
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_DESC_VERSION 1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_DESC_VAILD 0x44494C51 /* "QLID" */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct flash_desc {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t flash_valid;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t flash_version;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t flash_len; /* flash description table length */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t flash_checksum;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t flash_unused;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flash_model[16];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t flash_manuf;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t flash_id;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t flash_flag;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t erase_cmd;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t alt_erase_cmd;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t write_enable_cmd;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t write_enable_bits;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t write_statusreg_cmd;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t unprotect_sector_cmd;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t read_manuf_cmd;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t block_size;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t alt_block_size;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t flash_size;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t write_enable_data;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t readid_address_len;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t write_disable_bits;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t read_device_id_len;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t chip_erase_cmd;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t read_timeout;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t protect_sector_cmd;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t exp_reserved[65];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} flash_desc_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* flash manufacturer id's */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define AMD_FLASH 0x01 /* AMD / Spansion */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ST_FLASH 0x20 /* ST Electronics */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SST_FLASH 0xbf /* SST Electronics */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MXIC_FLASH 0xc2 /* Macronix (MXIC) */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ATMEL_FLASH 0x1f /* Atmel (AT26DF081A) */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define WINBOND_FLASH 0xef /* Winbond (W25X16,W25X32) */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTEL_FLASH 0x89 /* Intel (QB25F016S33B8) */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* flash id defines */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define AMD_FLASHID_128K 0x6e /* 128k AMD flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define AMD_FLASHID_512K 0x4f /* 512k AMD flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define AMD_FLASHID_512Kt 0xb9 /* 512k AMD flash chip - top boot blk */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define AMD_FLASHID_512Kb 0xba /* 512k AMD flash chip - btm boot blk */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define AMD_FLASHID_1024K 0x38 /* 1 MB AMD flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ST_FLASHID_128K 0x23 /* 128k ST flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ST_FLASHID_512K 0xe3 /* 512k ST flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ST_FLASHID_M25PXX 0x20 /* M25Pxx ST flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SST_FLASHID_128K 0xd5 /* 128k SST flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SST_FLASHID_1024K 0xd8 /* 1 MB SST flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SST_FLASHID_1024K_A 0x80 /* 1 MB SST 25LF080A flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SST_FLASHID_1024K_B 0x8e /* 1 MB SST 25VF080B flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SST_FLASHID_2048K 0x25 /* 2 MB SST 25VF016B flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MXIC_FLASHID_512K 0x4f /* 512k MXIC flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MXIC_FLASHID_1024K 0x38 /* 1 MB MXIC flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define MXIC_FLASHID_25LXX 0x20 /* 25Lxx MXIC flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ATMEL_FLASHID_1024K 0x45 /* 1 MB ATMEL flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SPAN_FLASHID_2048K 0x02 /* 2 MB Spansion flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define WINBOND_FLASHID 0x30 /* Winbond W25Xxx flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define INTEL_FLASHID 0x89 /* Intel QB25F016S33B8 flash chip */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* flash type defines */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH128 BIT_0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH512 BIT_1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH512S BIT_2
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH1024 BIT_3
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH2048 BIT_4
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH4096 BIT_5
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH8192 BIT_6
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_PAGE BIT_31
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_LEGACY (FLASH128 | FLASH512S)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_FIRMWARE_IMAGE_ADDR 0x100000 /* 1M */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t signature[2];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t reserved[0x16];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t dataoffset[2];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t pad[6];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} pci_header_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t signature[4];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t vid[2];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t did[2];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t reserved0[2];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t pcidatalen[2];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t pcidatarev;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t classcode[3];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t imagelength[2]; /* In sectors */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t revisionlevel[2];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t codetype;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t indicator;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t reserved1[2];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t pad[8];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} pci_data_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PCI_HEADER0 0x55
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PCI_HEADER1 0xAA
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PCI_DATASIG "PCIR"
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PCI_SECTOR_SIZE 0x200
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PCI_CODE_X86PC 0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PCI_CODE_FCODE 1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PCI_CODE_HPPA 2
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PCI_CODE_EFI 3
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PCI_CODE_FW 0xfe
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define PCI_IND_LAST_IMAGE 0x80
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define SBUS_CODE_FCODE 0xf1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FBUFSIZE 100
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Flash Layout Table Data Structure(FLTDS) */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_FLTDS_SIGNATURE 0x544C4651 /* "QFLT" */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct ql_fltds {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t signature;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t flt_addr_lo;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t flt_addr_hi;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t version;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t reserved;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t checksum;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} ql_fltds_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Image Layout Table Data Structure(ILTDS) */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_ILTDS_SIGNATURE 0x4D494651 /* "QFIM" */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct ql_iltds_header {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t signature;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t table_version; /* version of this structure */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t length; /* length of the table */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t checksum;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t number_entries; /* Number of type/len/size entries */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t reserved;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t version; /* version of the image */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} ql_iltds_header_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IMAGE_TABLE_HEADER_LEN sizeof (ql_iltds_header_t)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ILTDS_REGION_VERSION_LEN_NA 0 /* version not applicable */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct ql_iltds_img_entry {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t region_type;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t region_version_len;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t region_version[3];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t offset_lo;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t offset_hi;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t size_lo;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t size_hi;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t swap_mode;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ILTDS_IMG_SWAP_NONE 0 /* no swap needed */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ILTDS_IMG_SWAP_WORD 1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t card_type;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ILTDS_IMG_CARD_TYPE_ALL 0 /* apply to all types */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ILTDS_IMG_CARD_TYPE_SR 1 /* apply to SR/fc cards */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ILTDS_IMG_CARD_TYPE_COPPER 2 /* apply to Copper cards */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ILTDS_IMG_CARD_TYPE_MEZZ 4 /* apply to Mezz cards */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} ql_iltds_img_entry_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IMAGE_TABLE_ENTRY_LEN sizeof (ql_iltds_img_entry_t)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct ql_iltds_time_stamp {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t region_type;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t region_version_len;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t region_version[3];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t year;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t month;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t day;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t hour;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t min;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t sec;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t reserved;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} ql_iltds_time_stamp_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IMAGE_TABLE_TIME_STAMP_LEN sizeof (ql_iltds_time_stamp_t)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define IMAGE_TABLE_IMAGE_DEFAULT_ENTRIES 5
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct ql_iltds_description_header {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ql_iltds_header_t iltds_table_header;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ql_iltds_img_entry_t img_entry[IMAGE_TABLE_IMAGE_DEFAULT_ENTRIES];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ql_iltds_time_stamp_t time_stamp;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan}ql_iltds_description_header_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define ILTDS_DESCRIPTION_HEADERS_LEN sizeof (ql_iltds_description_header_t)
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* flash layout table definition */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* header */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct ql_flt_header {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t version;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t length; /* length of the flt table,no table header */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t checksum;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t reserved;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} ql_flt_header_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* table entry */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct ql_flt_entry {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t region;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t reserved0;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t attr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_ATTR_READ_ONLY BIT_0
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_ATTR_NEED_FW_RESTART BIT_1
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLT_ATTR_NEED_DATA_REALOAD BIT_2
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t reserved1;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t size;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t begin_addr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t end_addr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} ql_flt_entry_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* flt table */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct ql_flt {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ql_flt_header_t header;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t num_entries;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan ql_flt_entry_t *ql_flt_entry_ptr;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} ql_flt_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan/* Nic Configuration Table */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#define FLASH_NIC_CONFIG_SIGNATURE 0x30303038 /* "8000" */
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathanenum {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan DATA_TYPE_NONE,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan DATA_TYPE_FACTORY_MAC_ADDR,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan DATA_TYPE_CLP_MAC_ADDR,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan DATA_TYPE_CLP_VLAN_MAC_ADDR,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan DATA_TYPE_RESERVED,
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan DATA_TYPE_LAST_ENTRY
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan};
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathantypedef struct ql_nic_config {
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint32_t signature;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t version;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t size;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t checksum;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t reserved0;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t total_data_size;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t num_of_entries;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t factory_data_type;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t factory_data_type_size;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t factory_MAC[6];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t clp_data_type;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t clp_data_type_size;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t clp_MAC[6];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t clp_vlan_data_type;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t clp_vlan_data_type_size;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t vlan_id;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t last_data_type;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t last_data_type_size;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t last_entry;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t reserved1[464];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t subsys_vendor_id;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint16_t subsys_device_id;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan uint8_t reserved2[4];
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan} ql_nic_config_t;
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#ifdef __cplusplus
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan}
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#endif
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan
bafec74292ca6805e5acb387856f4e60a5314b37Sukumar Swaminathan#endif /* _QLGE_HW_H */