156b2bdd1SGireesh Nagabhushana /*
256b2bdd1SGireesh Nagabhushana  * This file and its contents are supplied under the terms of the
356b2bdd1SGireesh Nagabhushana  * Common Development and Distribution License ("CDDL"), version 1.0.
456b2bdd1SGireesh Nagabhushana  * You may only use this file in accordance with the terms of version
556b2bdd1SGireesh Nagabhushana  * 1.0 of the CDDL.
656b2bdd1SGireesh Nagabhushana  *
756b2bdd1SGireesh Nagabhushana  * A full copy of the text of the CDDL should have accompanied this
856b2bdd1SGireesh Nagabhushana  * source. A copy of the CDDL is also available via the Internet at
956b2bdd1SGireesh Nagabhushana  * http://www.illumos.org/license/CDDL.
1056b2bdd1SGireesh Nagabhushana  */
1156b2bdd1SGireesh Nagabhushana 
1256b2bdd1SGireesh Nagabhushana /*
133dde7c95SVishal Kulkarni  * This file is part of the Chelsio T4/T5/T6 Ethernet driver.
1456b2bdd1SGireesh Nagabhushana  *
15*7e6ad469SVishal Kulkarni  * Copyright (C) 2009-2019 Chelsio Communications.  All rights reserved.
1656b2bdd1SGireesh Nagabhushana  *
1756b2bdd1SGireesh Nagabhushana  * This program is distributed in the hope that it will be useful, but WITHOUT
1856b2bdd1SGireesh Nagabhushana  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1956b2bdd1SGireesh Nagabhushana  * FITNESS FOR A PARTICULAR PURPOSE.  See the LICENSE file included in this
2056b2bdd1SGireesh Nagabhushana  * release for licensing terms and conditions.
2156b2bdd1SGireesh Nagabhushana  */
2256b2bdd1SGireesh Nagabhushana 
233dde7c95SVishal Kulkarni #ifndef __T4_HW_H
243dde7c95SVishal Kulkarni #define __T4_HW_H
2556b2bdd1SGireesh Nagabhushana 
2656b2bdd1SGireesh Nagabhushana #include "osdep.h"
2756b2bdd1SGireesh Nagabhushana 
2856b2bdd1SGireesh Nagabhushana enum {
293dde7c95SVishal Kulkarni 	NCHAN           = 4,     /* # of HW channels */
303dde7c95SVishal Kulkarni 	MAX_MTU         = 9600,  /* max MAC MTU, excluding header + FCS */
313dde7c95SVishal Kulkarni 	EEPROMSIZE      = 17408, /* Serial EEPROM physical size */
323dde7c95SVishal Kulkarni 	EEPROMVSIZE     = 32768, /* Serial EEPROM virtual address space size */
333dde7c95SVishal Kulkarni 	EEPROMPFSIZE    = 1024,  /* EEPROM writable area size for PFn, n>0 */
343dde7c95SVishal Kulkarni 	RSS_NENTRIES    = 2048,  /* # of entries in RSS mapping table */
35*7e6ad469SVishal Kulkarni 	T6_RSS_NENTRIES = 4096,  /* # of entries in RSS mapping table */
363dde7c95SVishal Kulkarni 	TCB_SIZE        = 128,   /* TCB size */
373dde7c95SVishal Kulkarni 	NMTUS           = 16,    /* size of MTU table */
383dde7c95SVishal Kulkarni 	NCCTRL_WIN      = 32,    /* # of congestion control windows */
393dde7c95SVishal Kulkarni 	NTX_SCHED       = 8,     /* # of HW Tx scheduling queues */
403dde7c95SVishal Kulkarni 	PM_NSTATS       = 5,     /* # of PM stats */
413dde7c95SVishal Kulkarni 	T6_PM_NSTATS    = 7,     /* # of PM stats in T6 */
423dde7c95SVishal Kulkarni 	MBOX_LEN        = 64,    /* mailbox size in bytes */
433dde7c95SVishal Kulkarni 	TRACE_LEN       = 112,   /* length of trace data and mask */
443dde7c95SVishal Kulkarni 	FILTER_OPT_LEN  = 36,    /* filter tuple width of optional components */
453dde7c95SVishal Kulkarni 	UDBS_SEG_SIZE   = 128,   /* segment size for BAR2 user doorbells */
4656b2bdd1SGireesh Nagabhushana };
4756b2bdd1SGireesh Nagabhushana 
4856b2bdd1SGireesh Nagabhushana enum {
493dde7c95SVishal Kulkarni 	CIM_NUM_IBQ    = 6,     /* # of CIM IBQs */
503dde7c95SVishal Kulkarni 	CIM_NUM_OBQ    = 6,     /* # of CIM OBQs */
513dde7c95SVishal Kulkarni 	CIM_NUM_OBQ_T5 = 8,     /* # of CIM OBQs for T5 adapter */
523dde7c95SVishal Kulkarni 	CIMLA_SIZE     = 2048,  /* # of 32-bit words in CIM LA */
533dde7c95SVishal Kulkarni 	CIM_PIFLA_SIZE = 64,    /* # of 192-bit words in CIM PIF LA */
543dde7c95SVishal Kulkarni 	CIM_MALA_SIZE  = 64,    /* # of 160-bit words in CIM MA LA */
553dde7c95SVishal Kulkarni 	CIM_IBQ_SIZE   = 128,   /* # of 128-bit words in a CIM IBQ */
563dde7c95SVishal Kulkarni 	CIM_OBQ_SIZE   = 128,   /* # of 128-bit words in a CIM OBQ */
573dde7c95SVishal Kulkarni 	TPLA_SIZE      = 128,   /* # of 64-bit words in TP LA */
583dde7c95SVishal Kulkarni 	ULPRX_LA_SIZE  = 512,   /* # of 256-bit words in ULP_RX LA */
5956b2bdd1SGireesh Nagabhushana };
6056b2bdd1SGireesh Nagabhushana 
6156b2bdd1SGireesh Nagabhushana enum {
623dde7c95SVishal Kulkarni 	SF_PAGE_SIZE = 256,           /* serial flash page size */
633dde7c95SVishal Kulkarni 	SF_SEC_SIZE = 64 * 1024,      /* serial flash sector size */
6456b2bdd1SGireesh Nagabhushana };
6556b2bdd1SGireesh Nagabhushana 
6656b2bdd1SGireesh Nagabhushana /* SGE context types */
6756b2bdd1SGireesh Nagabhushana enum ctxt_type { CTXT_EGRESS, CTXT_INGRESS, CTXT_FLM, CTXT_CNM };
6856b2bdd1SGireesh Nagabhushana 
6956b2bdd1SGireesh Nagabhushana enum { RSP_TYPE_FLBUF, RSP_TYPE_CPL, RSP_TYPE_INTR }; /* response entry types */
7056b2bdd1SGireesh Nagabhushana 
7156b2bdd1SGireesh Nagabhushana enum { MBOX_OWNER_NONE, MBOX_OWNER_FW, MBOX_OWNER_DRV };    /* mailbox owners */
7256b2bdd1SGireesh Nagabhushana 
7356b2bdd1SGireesh Nagabhushana enum {
743dde7c95SVishal Kulkarni 	SGE_MAX_WR_LEN = 512,     /* max WR size in bytes */
753dde7c95SVishal Kulkarni 	SGE_CTXT_SIZE = 24,       /* size of SGE context */
763dde7c95SVishal Kulkarni 	SGE_NTIMERS = 6,          /* # of interrupt holdoff timer values */
773dde7c95SVishal Kulkarni 	SGE_NCOUNTERS = 4,        /* # of interrupt packet counter values */
78*7e6ad469SVishal Kulkarni 	SGE_NDBQTIMERS = 8,       /* # of Doorbell Queue Timer values */
79de483253SVishal Kulkarni 	SGE_MAX_IQ_SIZE = 65520,
8056b2bdd1SGireesh Nagabhushana };
8156b2bdd1SGireesh Nagabhushana 
823dde7c95SVishal Kulkarni /* PCI-e memory window access */
833dde7c95SVishal Kulkarni enum pcie_memwin {
843dde7c95SVishal Kulkarni 	MEMWIN_NIC      = 0,
853dde7c95SVishal Kulkarni 	MEMWIN_RSVD1    = 1,
863dde7c95SVishal Kulkarni 	MEMWIN_RSVD2    = 2,
873dde7c95SVishal Kulkarni 	MEMWIN_RDMA     = 3,
883dde7c95SVishal Kulkarni 	MEMWIN_RSVD4    = 4,
893dde7c95SVishal Kulkarni 	MEMWIN_FOISCSI  = 5,
903dde7c95SVishal Kulkarni 	MEMWIN_CSIOSTOR = 6,
913dde7c95SVishal Kulkarni 	MEMWIN_RSVD7    = 7,
9256b2bdd1SGireesh Nagabhushana };
9356b2bdd1SGireesh Nagabhushana 
943dde7c95SVishal Kulkarni struct sge_qstat {                /* data written to SGE queue status entries */
953dde7c95SVishal Kulkarni 	__be32 qid;
963dde7c95SVishal Kulkarni 	__be16 cidx;
973dde7c95SVishal Kulkarni 	__be16 pidx;
983dde7c95SVishal Kulkarni };
993dde7c95SVishal Kulkarni 
1003dde7c95SVishal Kulkarni #define S_QSTAT_PIDX    0
1013dde7c95SVishal Kulkarni #define M_QSTAT_PIDX    0xffff
1023dde7c95SVishal Kulkarni #define G_QSTAT_PIDX(x) (((x) >> S_QSTAT_PIDX) & M_QSTAT_PIDX)
10356b2bdd1SGireesh Nagabhushana 
1043dde7c95SVishal Kulkarni #define S_QSTAT_CIDX    16
1053dde7c95SVishal Kulkarni #define M_QSTAT_CIDX    0xffff
1063dde7c95SVishal Kulkarni #define G_QSTAT_CIDX(x) (((x) >> S_QSTAT_CIDX) & M_QSTAT_CIDX)
10756b2bdd1SGireesh Nagabhushana 
10856b2bdd1SGireesh Nagabhushana /*
10956b2bdd1SGireesh Nagabhushana  * Structure for last 128 bits of response descriptors
11056b2bdd1SGireesh Nagabhushana  */
11156b2bdd1SGireesh Nagabhushana struct rsp_ctrl {
11256b2bdd1SGireesh Nagabhushana 	__be32 hdrbuflen_pidx;
11356b2bdd1SGireesh Nagabhushana 	__be32 pldbuflen_qid;
11456b2bdd1SGireesh Nagabhushana 	union {
11556b2bdd1SGireesh Nagabhushana 		u8 type_gen;
11656b2bdd1SGireesh Nagabhushana 		__be64 last_flit;
11756b2bdd1SGireesh Nagabhushana 	} u;
11856b2bdd1SGireesh Nagabhushana };
11956b2bdd1SGireesh Nagabhushana 
1203dde7c95SVishal Kulkarni #define S_RSPD_NEWBUF    31
1213dde7c95SVishal Kulkarni #define V_RSPD_NEWBUF(x) ((x) << S_RSPD_NEWBUF)
1223dde7c95SVishal Kulkarni #define F_RSPD_NEWBUF    V_RSPD_NEWBUF(1U)
12356b2bdd1SGireesh Nagabhushana 
1243dde7c95SVishal Kulkarni #define S_RSPD_LEN    0
1253dde7c95SVishal Kulkarni #define M_RSPD_LEN    0x7fffffff
1263dde7c95SVishal Kulkarni #define V_RSPD_LEN(x) ((x) << S_RSPD_LEN)
1273dde7c95SVishal Kulkarni #define G_RSPD_LEN(x) (((x) >> S_RSPD_LEN) & M_RSPD_LEN)
12856b2bdd1SGireesh Nagabhushana 
1293dde7c95SVishal Kulkarni #define S_RSPD_QID    S_RSPD_LEN
1303dde7c95SVishal Kulkarni #define M_RSPD_QID    M_RSPD_LEN
1313dde7c95SVishal Kulkarni #define V_RSPD_QID(x) V_RSPD_LEN(x)
1323dde7c95SVishal Kulkarni #define G_RSPD_QID(x) G_RSPD_LEN(x)
13356b2bdd1SGireesh Nagabhushana 
1343dde7c95SVishal Kulkarni #define S_RSPD_GEN    7
1353dde7c95SVishal Kulkarni #define V_RSPD_GEN(x) ((x) << S_RSPD_GEN)
1363dde7c95SVishal Kulkarni #define F_RSPD_GEN    V_RSPD_GEN(1U)
13756b2bdd1SGireesh Nagabhushana 
1383dde7c95SVishal Kulkarni #define S_RSPD_QOVFL    6
1393dde7c95SVishal Kulkarni #define V_RSPD_QOVFL(x) ((x) << S_RSPD_QOVFL)
1403dde7c95SVishal Kulkarni #define F_RSPD_QOVFL    V_RSPD_QOVFL(1U)
14156b2bdd1SGireesh Nagabhushana 
1423dde7c95SVishal Kulkarni #define S_RSPD_TYPE    4
1433dde7c95SVishal Kulkarni #define M_RSPD_TYPE    0x3
1443dde7c95SVishal Kulkarni #define V_RSPD_TYPE(x) ((x) << S_RSPD_TYPE)
1453dde7c95SVishal Kulkarni #define G_RSPD_TYPE(x) (((x) >> S_RSPD_TYPE) & M_RSPD_TYPE)
14656b2bdd1SGireesh Nagabhushana 
14756b2bdd1SGireesh Nagabhushana /* Rx queue interrupt deferral fields: counter enable and timer index */
1483dde7c95SVishal Kulkarni #define S_QINTR_CNT_EN    0
1493dde7c95SVishal Kulkarni #define V_QINTR_CNT_EN(x) ((x) << S_QINTR_CNT_EN)
1503dde7c95SVishal Kulkarni #define F_QINTR_CNT_EN    V_QINTR_CNT_EN(1U)
15156b2bdd1SGireesh Nagabhushana 
1523dde7c95SVishal Kulkarni #define S_QINTR_TIMER_IDX    1
1533dde7c95SVishal Kulkarni #define M_QINTR_TIMER_IDX    0x7
1543dde7c95SVishal Kulkarni #define V_QINTR_TIMER_IDX(x) ((x) << S_QINTR_TIMER_IDX)
1553dde7c95SVishal Kulkarni #define G_QINTR_TIMER_IDX(x) (((x) >> S_QINTR_TIMER_IDX) & M_QINTR_TIMER_IDX)
15656b2bdd1SGireesh Nagabhushana 
15756b2bdd1SGireesh Nagabhushana /* # of pages a pagepod can hold without needing another pagepod */
1583dde7c95SVishal Kulkarni #define PPOD_PAGES 4U
15956b2bdd1SGireesh Nagabhushana 
16056b2bdd1SGireesh Nagabhushana struct pagepod {
16156b2bdd1SGireesh Nagabhushana 	__be64 vld_tid_pgsz_tag_color;
16256b2bdd1SGireesh Nagabhushana 	__be64 len_offset;
16356b2bdd1SGireesh Nagabhushana 	__be64 rsvd;
16456b2bdd1SGireesh Nagabhushana 	__be64 addr[PPOD_PAGES + 1];
16556b2bdd1SGireesh Nagabhushana };
16656b2bdd1SGireesh Nagabhushana 
1673dde7c95SVishal Kulkarni #define S_PPOD_COLOR    0
1683dde7c95SVishal Kulkarni #define M_PPOD_COLOR    0x3F
1693dde7c95SVishal Kulkarni #define V_PPOD_COLOR(x) ((x) << S_PPOD_COLOR)
17056b2bdd1SGireesh Nagabhushana 
1713dde7c95SVishal Kulkarni #define S_PPOD_TAG    6
1723dde7c95SVishal Kulkarni #define M_PPOD_TAG    0xFFFFFF
1733dde7c95SVishal Kulkarni #define V_PPOD_TAG(x) ((x) << S_PPOD_TAG)
17456b2bdd1SGireesh Nagabhushana 
1753dde7c95SVishal Kulkarni #define S_PPOD_PGSZ    30
1763dde7c95SVishal Kulkarni #define M_PPOD_PGSZ    0x3
1773dde7c95SVishal Kulkarni #define V_PPOD_PGSZ(x) ((x) << S_PPOD_PGSZ)
17856b2bdd1SGireesh Nagabhushana 
1793dde7c95SVishal Kulkarni #define S_PPOD_TID    32
1803dde7c95SVishal Kulkarni #define M_PPOD_TID    0xFFFFFF
1813dde7c95SVishal Kulkarni #define V_PPOD_TID(x) ((__u64)(x) << S_PPOD_TID)
18256b2bdd1SGireesh Nagabhushana 
1833dde7c95SVishal Kulkarni #define S_PPOD_VALID    56
1843dde7c95SVishal Kulkarni #define V_PPOD_VALID(x) ((__u64)(x) << S_PPOD_VALID)
1853dde7c95SVishal Kulkarni #define F_PPOD_VALID    V_PPOD_VALID(1ULL)
18656b2bdd1SGireesh Nagabhushana 
1873dde7c95SVishal Kulkarni #define S_PPOD_LEN    32
1883dde7c95SVishal Kulkarni #define M_PPOD_LEN    0xFFFFFFFF
1893dde7c95SVishal Kulkarni #define V_PPOD_LEN(x) ((__u64)(x) << S_PPOD_LEN)
19056b2bdd1SGireesh Nagabhushana 
1913dde7c95SVishal Kulkarni #define S_PPOD_OFST    0
1923dde7c95SVishal Kulkarni #define M_PPOD_OFST    0xFFFFFFFF
1933dde7c95SVishal Kulkarni #define V_PPOD_OFST(x) ((x) << S_PPOD_OFST)
19456b2bdd1SGireesh Nagabhushana 
19556b2bdd1SGireesh Nagabhushana /*
19656b2bdd1SGireesh Nagabhushana  * Flash layout.
19756b2bdd1SGireesh Nagabhushana  */
1983dde7c95SVishal Kulkarni #define FLASH_START(start)	((start) * SF_SEC_SIZE)
1993dde7c95SVishal Kulkarni #define FLASH_MAX_SIZE(nsecs)	((nsecs) * SF_SEC_SIZE)
20056b2bdd1SGireesh Nagabhushana 
20156b2bdd1SGireesh Nagabhushana enum {
20256b2bdd1SGireesh Nagabhushana 	/*
20356b2bdd1SGireesh Nagabhushana 	 * Various Expansion-ROM boot images, etc.
20456b2bdd1SGireesh Nagabhushana 	 */
20556b2bdd1SGireesh Nagabhushana 	FLASH_EXP_ROM_START_SEC = 0,
20656b2bdd1SGireesh Nagabhushana 	FLASH_EXP_ROM_NSECS = 6,
20756b2bdd1SGireesh Nagabhushana 	FLASH_EXP_ROM_START = FLASH_START(FLASH_EXP_ROM_START_SEC),
20856b2bdd1SGireesh Nagabhushana 	FLASH_EXP_ROM_MAX_SIZE = FLASH_MAX_SIZE(FLASH_EXP_ROM_NSECS),
20956b2bdd1SGireesh Nagabhushana 
21056b2bdd1SGireesh Nagabhushana 	/*
21156b2bdd1SGireesh Nagabhushana 	 * iSCSI Boot Firmware Table (iBFT) and other driver-related
21256b2bdd1SGireesh Nagabhushana 	 * parameters ...
21356b2bdd1SGireesh Nagabhushana 	 */
21456b2bdd1SGireesh Nagabhushana 	FLASH_IBFT_START_SEC = 6,
21556b2bdd1SGireesh Nagabhushana 	FLASH_IBFT_NSECS = 1,
21656b2bdd1SGireesh Nagabhushana 	FLASH_IBFT_START = FLASH_START(FLASH_IBFT_START_SEC),
21756b2bdd1SGireesh Nagabhushana 	FLASH_IBFT_MAX_SIZE = FLASH_MAX_SIZE(FLASH_IBFT_NSECS),
21856b2bdd1SGireesh Nagabhushana 
21956b2bdd1SGireesh Nagabhushana 	/*
22056b2bdd1SGireesh Nagabhushana 	 * Boot configuration data.
22156b2bdd1SGireesh Nagabhushana 	 */
22256b2bdd1SGireesh Nagabhushana 	FLASH_BOOTCFG_START_SEC = 7,
22356b2bdd1SGireesh Nagabhushana 	FLASH_BOOTCFG_NSECS = 1,
22456b2bdd1SGireesh Nagabhushana 	FLASH_BOOTCFG_START = FLASH_START(FLASH_BOOTCFG_START_SEC),
22556b2bdd1SGireesh Nagabhushana 	FLASH_BOOTCFG_MAX_SIZE = FLASH_MAX_SIZE(FLASH_BOOTCFG_NSECS),
22656b2bdd1SGireesh Nagabhushana 
22756b2bdd1SGireesh Nagabhushana 	/*
22856b2bdd1SGireesh Nagabhushana 	 * Location of firmware image in FLASH.
22956b2bdd1SGireesh Nagabhushana 	 */
23056b2bdd1SGireesh Nagabhushana 	FLASH_FW_START_SEC = 8,
231de483253SVishal Kulkarni 	FLASH_FW_NSECS = 16,
23256b2bdd1SGireesh Nagabhushana 	FLASH_FW_START = FLASH_START(FLASH_FW_START_SEC),
23356b2bdd1SGireesh Nagabhushana 	FLASH_FW_MAX_SIZE = FLASH_MAX_SIZE(FLASH_FW_NSECS),
2343dde7c95SVishal Kulkarni 
235de483253SVishal Kulkarni 	/*
236de483253SVishal Kulkarni 	 * Location of bootstrap firmware image in FLASH.
237de483253SVishal Kulkarni 	 */
238de483253SVishal Kulkarni 	FLASH_FWBOOTSTRAP_START_SEC = 27,
239de483253SVishal Kulkarni 	FLASH_FWBOOTSTRAP_NSECS = 1,
240de483253SVishal Kulkarni 	FLASH_FWBOOTSTRAP_START = FLASH_START(FLASH_FWBOOTSTRAP_START_SEC),
241de483253SVishal Kulkarni 	FLASH_FWBOOTSTRAP_MAX_SIZE = FLASH_MAX_SIZE(FLASH_FWBOOTSTRAP_NSECS),
242de483253SVishal Kulkarni 
24356b2bdd1SGireesh Nagabhushana 	/*
24456b2bdd1SGireesh Nagabhushana 	 * iSCSI persistent/crash information.
24556b2bdd1SGireesh Nagabhushana 	 */
24656b2bdd1SGireesh Nagabhushana 	FLASH_ISCSI_CRASH_START_SEC = 29,
24756b2bdd1SGireesh Nagabhushana 	FLASH_ISCSI_CRASH_NSECS = 1,
24856b2bdd1SGireesh Nagabhushana 	FLASH_ISCSI_CRASH_START = FLASH_START(FLASH_ISCSI_CRASH_START_SEC),
24956b2bdd1SGireesh Nagabhushana 	FLASH_ISCSI_CRASH_MAX_SIZE = FLASH_MAX_SIZE(FLASH_ISCSI_CRASH_NSECS),
25056b2bdd1SGireesh Nagabhushana 
25156b2bdd1SGireesh Nagabhushana 	/*
25256b2bdd1SGireesh Nagabhushana 	 * FCoE persistent/crash information.
25356b2bdd1SGireesh Nagabhushana 	 */
25456b2bdd1SGireesh Nagabhushana 	FLASH_FCOE_CRASH_START_SEC = 30,
25556b2bdd1SGireesh Nagabhushana 	FLASH_FCOE_CRASH_NSECS = 1,
25656b2bdd1SGireesh Nagabhushana 	FLASH_FCOE_CRASH_START = FLASH_START(FLASH_FCOE_CRASH_START_SEC),
25756b2bdd1SGireesh Nagabhushana 	FLASH_FCOE_CRASH_MAX_SIZE = FLASH_MAX_SIZE(FLASH_FCOE_CRASH_NSECS),
25856b2bdd1SGireesh Nagabhushana 
25956b2bdd1SGireesh Nagabhushana 	/*
2603dde7c95SVishal Kulkarni 	 * Location of Firmware Configuration File in FLASH.
26156b2bdd1SGireesh Nagabhushana 	 */
26256b2bdd1SGireesh Nagabhushana 	FLASH_CFG_START_SEC = 31,
26356b2bdd1SGireesh Nagabhushana 	FLASH_CFG_NSECS = 1,
26456b2bdd1SGireesh Nagabhushana 	FLASH_CFG_START = FLASH_START(FLASH_CFG_START_SEC),
26556b2bdd1SGireesh Nagabhushana 	FLASH_CFG_MAX_SIZE = FLASH_MAX_SIZE(FLASH_CFG_NSECS),
26656b2bdd1SGireesh Nagabhushana 
2673dde7c95SVishal Kulkarni 	/*
2683dde7c95SVishal Kulkarni 	 * We don't support FLASH devices which can't support the full
2693dde7c95SVishal Kulkarni 	 * standard set of sections which we need for normal operations.
2703dde7c95SVishal Kulkarni 	 */
2713dde7c95SVishal Kulkarni 	FLASH_MIN_SIZE = FLASH_CFG_START + FLASH_CFG_MAX_SIZE,
27256b2bdd1SGireesh Nagabhushana 
27356b2bdd1SGireesh Nagabhushana 	/*
2743dde7c95SVishal Kulkarni 	 * Sectors 32-63 for CUDBG.
27556b2bdd1SGireesh Nagabhushana 	 */
2763dde7c95SVishal Kulkarni 	FLASH_CUDBG_START_SEC = 32,
2773dde7c95SVishal Kulkarni 	FLASH_CUDBG_NSECS = 32,
2783dde7c95SVishal Kulkarni 	FLASH_CUDBG_START = FLASH_START(FLASH_CUDBG_START_SEC),
2793dde7c95SVishal Kulkarni 	FLASH_CUDBG_MAX_SIZE = FLASH_MAX_SIZE(FLASH_CUDBG_NSECS),
2803dde7c95SVishal Kulkarni 
2813dde7c95SVishal Kulkarni 	/*
2823dde7c95SVishal Kulkarni 	 * Size of defined FLASH regions.
2833dde7c95SVishal Kulkarni 	 */
2843dde7c95SVishal Kulkarni 	FLASH_END_SEC = 64,
28556b2bdd1SGireesh Nagabhushana };
28656b2bdd1SGireesh Nagabhushana 
28756b2bdd1SGireesh Nagabhushana #undef FLASH_START
28856b2bdd1SGireesh Nagabhushana #undef FLASH_MAX_SIZE
28956b2bdd1SGireesh Nagabhushana 
2903dde7c95SVishal Kulkarni #define S_SGE_TIMESTAMP 0
2913dde7c95SVishal Kulkarni #define M_SGE_TIMESTAMP 0xfffffffffffffffULL
2923dde7c95SVishal Kulkarni #define V_SGE_TIMESTAMP(x) ((__u64)(x) << S_SGE_TIMESTAMP)
2933dde7c95SVishal Kulkarni #define G_SGE_TIMESTAMP(x) (((__u64)(x) >> S_SGE_TIMESTAMP) & M_SGE_TIMESTAMP)
2943dde7c95SVishal Kulkarni 
295*7e6ad469SVishal Kulkarni #define I2C_DEV_ADDR_A0		0xa0
296*7e6ad469SVishal Kulkarni #define I2C_DEV_ADDR_A2		0xa2
297*7e6ad469SVishal Kulkarni #define I2C_PAGE_SIZE		0x100
298*7e6ad469SVishal Kulkarni #define SFP_DIAG_TYPE_ADDR	0x5c
299*7e6ad469SVishal Kulkarni #define SFP_DIAG_TYPE_LEN	0x1
300*7e6ad469SVishal Kulkarni #define SFF_8472_COMP_ADDR	0x5e
301*7e6ad469SVishal Kulkarni #define SFF_8472_COMP_LEN	0x1
302*7e6ad469SVishal Kulkarni #define SFF_REV_ADDR		0x1
303*7e6ad469SVishal Kulkarni #define SFF_REV_LEN		0x1
304*7e6ad469SVishal Kulkarni 
3053dde7c95SVishal Kulkarni #endif /* __T4_HW_H */
306