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