xref: /freebsd/sys/dev/pms/RefTisa/sallsdk/spc/sadefs.h (revision 2ff63af9b88c7413b7d71715b5532625752a248e)
1*4e1bc9a0SAchim Leubner /*******************************************************************************
2*4e1bc9a0SAchim Leubner *Copyright (c) 2014 PMC-Sierra, Inc.  All rights reserved.
3*4e1bc9a0SAchim Leubner *
4*4e1bc9a0SAchim Leubner *Redistribution and use in source and binary forms, with or without modification, are permitted provided
5*4e1bc9a0SAchim Leubner *that the following conditions are met:
6*4e1bc9a0SAchim Leubner *1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
7*4e1bc9a0SAchim Leubner *following disclaimer.
8*4e1bc9a0SAchim Leubner *2. Redistributions in binary form must reproduce the above copyright notice,
9*4e1bc9a0SAchim Leubner *this list of conditions and the following disclaimer in the documentation and/or other materials provided
10*4e1bc9a0SAchim Leubner *with the distribution.
11*4e1bc9a0SAchim Leubner *
12*4e1bc9a0SAchim Leubner *THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
13*4e1bc9a0SAchim Leubner *WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14*4e1bc9a0SAchim Leubner *FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
15*4e1bc9a0SAchim Leubner *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16*4e1bc9a0SAchim Leubner *NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
17*4e1bc9a0SAchim Leubner *BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
18*4e1bc9a0SAchim Leubner *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
19*4e1bc9a0SAchim Leubner *SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
20*4e1bc9a0SAchim Leubner *
21*4e1bc9a0SAchim Leubner *
22*4e1bc9a0SAchim Leubner ********************************************************************************/
23*4e1bc9a0SAchim Leubner /*******************************************************************************/
24*4e1bc9a0SAchim Leubner /*! \file  sadefs.h
25*4e1bc9a0SAchim Leubner  *  \brief The file defines the constants used by LL layer
26*4e1bc9a0SAchim Leubner  */
27*4e1bc9a0SAchim Leubner 
28*4e1bc9a0SAchim Leubner /*******************************************************************************/
29*4e1bc9a0SAchim Leubner 
30*4e1bc9a0SAchim Leubner #ifndef  __SADEFS_H__
31*4e1bc9a0SAchim Leubner 
32*4e1bc9a0SAchim Leubner #define __SADEFS_H__
33*4e1bc9a0SAchim Leubner 
34*4e1bc9a0SAchim Leubner #define SA_LL_IBQ_PROTECT
35*4e1bc9a0SAchim Leubner 
36*4e1bc9a0SAchim Leubner #define AGSA_MAX_VALID_PORTS                      AGSA_MAX_VALID_PHYS     /**< defines the maximum number of ports */
37*4e1bc9a0SAchim Leubner 
38*4e1bc9a0SAchim Leubner #define NUM_TIMERS                                2                       /**< defines the maximum number of timers */
39*4e1bc9a0SAchim Leubner #define SA_USECS_PER_TICK                         1000000                 /**< defines the heart beat of the LL layer 1us */
40*4e1bc9a0SAchim Leubner #define MAX_ACTIVE_IO_REQUESTS                    4096                    /**< Maximum Active IO Requests */
41*4e1bc9a0SAchim Leubner #define SMP_RESPONSE_FRAMES                       AGSA_MAX_VALID_PHYS     /**< SMP Response Frame Buffer */
42*4e1bc9a0SAchim Leubner #define MAX_NUM_VECTOR                            64                      /**< Maximum Number of Interrupt Vectors */
43*4e1bc9a0SAchim Leubner #define REGISTER_DUMP_BUFF_SIZE                   0x4000                  /**< Maximum Fatal Error Register Dump Buffer Size */
44*4e1bc9a0SAchim Leubner #define KBYTES                                    1024
45*4e1bc9a0SAchim Leubner 
46*4e1bc9a0SAchim Leubner /* number of IQ/OQ */
47*4e1bc9a0SAchim Leubner #define IQ_NUM_32                                 32
48*4e1bc9a0SAchim Leubner #define OQ_NUM_32                                 32
49*4e1bc9a0SAchim Leubner 
50*4e1bc9a0SAchim Leubner /* default value of Inbound/Outbound element size */
51*4e1bc9a0SAchim Leubner #define INBOUND_DEPTH_SIZE                        512
52*4e1bc9a0SAchim Leubner #define OUTBOUND_DEPTH_SIZE                       512
53*4e1bc9a0SAchim Leubner 
54*4e1bc9a0SAchim Leubner /* Priority of Queue */
55*4e1bc9a0SAchim Leubner #define MPI_QUEUE_NORMAL                          0
56*4e1bc9a0SAchim Leubner #define MPI_QUEUE_PRIORITY                        1
57*4e1bc9a0SAchim Leubner 
58*4e1bc9a0SAchim Leubner /* size of IOMB - multiple with 32 bytes */
59*4e1bc9a0SAchim Leubner #define IOMB_SIZE64                               64
60*4e1bc9a0SAchim Leubner #define IOMB_SIZE96                               96
61*4e1bc9a0SAchim Leubner #define IOMB_SIZE128                              128
62*4e1bc9a0SAchim Leubner #define IOMB_SIZE256                              256
63*4e1bc9a0SAchim Leubner 
64*4e1bc9a0SAchim Leubner /* DIR bit of IOMB for SSP read/write command */
65*4e1bc9a0SAchim Leubner #define DIR_NODATA                                0x000
66*4e1bc9a0SAchim Leubner #define DIR_READ                                  0x100
67*4e1bc9a0SAchim Leubner #define DIR_WRITE                                 0x200
68*4e1bc9a0SAchim Leubner 
69*4e1bc9a0SAchim Leubner /* TLR bits mask */
70*4e1bc9a0SAchim Leubner #define TLR_MASK                                  0x00000003
71*4e1bc9a0SAchim Leubner /* port and phy Id bits Mask */
72*4e1bc9a0SAchim Leubner 
73*4e1bc9a0SAchim Leubner 
74*4e1bc9a0SAchim Leubner #define PORTID_MASK                               0x0000000F
75*4e1bc9a0SAchim Leubner #define PORTID_V_MASK                             0x000000FF
76*4e1bc9a0SAchim Leubner #define PHYID_MASK                                0x0000000F
77*4e1bc9a0SAchim Leubner #define PHYID_V_MASK                              0x000000FF
78*4e1bc9a0SAchim Leubner #define PORT_STATE_MASK                           0x0000000F
79*4e1bc9a0SAchim Leubner #define PHY_IN_PORT_MASK                          0x000000F0
80*4e1bc9a0SAchim Leubner 
81*4e1bc9a0SAchim Leubner #define SM_PHYID_MASK   (smIS_SPC(agRoot) ? PHYID_MASK  : PHYID_V_MASK )
82*4e1bc9a0SAchim Leubner #define SM_PORTID_MASK  (smIS_SPC(agRoot) ? PORTID_MASK : PORTID_V_MASK )
83*4e1bc9a0SAchim Leubner 
84*4e1bc9a0SAchim Leubner /* the index for memory requirement, must be continious */
85*4e1bc9a0SAchim Leubner #define LLROOT_MEM_INDEX                          0              /**< the index of root memory */
86*4e1bc9a0SAchim Leubner #define DEVICELINK_MEM_INDEX         (LLROOT_MEM_INDEX + 1)      /**< the index of device descriptors memory */
87*4e1bc9a0SAchim Leubner #define IOREQLINK_MEM_INDEX          (DEVICELINK_MEM_INDEX+1)    /**< the index of IO requests memory */
88*4e1bc9a0SAchim Leubner 
89*4e1bc9a0SAchim Leubner #ifdef SA_ENABLE_HDA_FUNCTIONS
90*4e1bc9a0SAchim Leubner #define  HDA_DMA_BUFFER              (IOREQLINK_MEM_INDEX+1)     /** HDA Buffer */
91*4e1bc9a0SAchim Leubner #else  /* SA_ENABLE_HDA_FUNCTIONS */
92*4e1bc9a0SAchim Leubner #define  HDA_DMA_BUFFER              (IOREQLINK_MEM_INDEX)       /** HDA Buffer */
93*4e1bc9a0SAchim Leubner #endif /* SA_ENABLE_HDA_FUNCTIONS */
94*4e1bc9a0SAchim Leubner 
95*4e1bc9a0SAchim Leubner #ifdef SA_ENABLE_TRACE_FUNCTIONS
96*4e1bc9a0SAchim Leubner #define  LL_FUNCTION_TRACE              (HDA_DMA_BUFFER+1)      /**TraceLog */
97*4e1bc9a0SAchim Leubner #else /* SA_ENABLE_TRACE_FUNCTIONS */
98*4e1bc9a0SAchim Leubner #define  LL_FUNCTION_TRACE               HDA_DMA_BUFFER         /**TraceLog */
99*4e1bc9a0SAchim Leubner #endif /* END SA_ENABLE_TRACE_FUNCTIONS */
100*4e1bc9a0SAchim Leubner 
101*4e1bc9a0SAchim Leubner #define TIMERLINK_MEM_INDEX              (LL_FUNCTION_TRACE+1)   /**< the index of timers memory */
102*4e1bc9a0SAchim Leubner 
103*4e1bc9a0SAchim Leubner #ifdef FAST_IO_TEST
104*4e1bc9a0SAchim Leubner #define LL_FAST_IO                        (TIMERLINK_MEM_INDEX+1)
105*4e1bc9a0SAchim Leubner #define MPI_IBQ_OBQ_INDEX                    (LL_FAST_IO + 1)
106*4e1bc9a0SAchim Leubner 
107*4e1bc9a0SAchim Leubner #else /* FAST_IO_TEST */
108*4e1bc9a0SAchim Leubner 
109*4e1bc9a0SAchim Leubner #define LL_FAST_IO                         TIMERLINK_MEM_INDEX
110*4e1bc9a0SAchim Leubner #define MPI_IBQ_OBQ_INDEX                     (LL_FAST_IO + 1)
111*4e1bc9a0SAchim Leubner #endif /* FAST_IO_TEST */
112*4e1bc9a0SAchim Leubner 
113*4e1bc9a0SAchim Leubner #define MPI_MEM_INDEX                             (MPI_IBQ_OBQ_INDEX - LLROOT_MEM_INDEX)
114*4e1bc9a0SAchim Leubner 
115*4e1bc9a0SAchim Leubner #define MPI_EVENTLOG_INDEX                        0
116*4e1bc9a0SAchim Leubner #define MPI_IOP_EVENTLOG_INDEX                    1
117*4e1bc9a0SAchim Leubner #define MPI_CI_INDEX                              2
118*4e1bc9a0SAchim Leubner /* The following is a reference index */
119*4e1bc9a0SAchim Leubner #define MPI_PI_INDEX                              (MPI_CI_INDEX + 1)
120*4e1bc9a0SAchim Leubner #define MPI_IBQ_INDEX                             (MPI_PI_INDEX + 1)
121*4e1bc9a0SAchim Leubner #define MPI_OBQ_INDEX                             (MPI_IBQ_INDEX + MPI_MAX_INBOUND_QUEUES)
122*4e1bc9a0SAchim Leubner 
123*4e1bc9a0SAchim Leubner #define TOTAL_MPI_MEM_CHUNKS                      (MPI_MAX_INBOUND_QUEUES * 2) + MPI_IBQ_INDEX
124*4e1bc9a0SAchim Leubner 
125*4e1bc9a0SAchim Leubner 
126*4e1bc9a0SAchim Leubner #define LL_DEVICE_LOCK 0
127*4e1bc9a0SAchim Leubner #define LL_PORT_LOCK          (LL_DEVICE_LOCK+1)
128*4e1bc9a0SAchim Leubner #define LL_TIMER_LOCK         (LL_PORT_LOCK+1)
129*4e1bc9a0SAchim Leubner #define LL_IOREQ_LOCKEQ_LOCK  (LL_TIMER_LOCK+1)
130*4e1bc9a0SAchim Leubner 
131*4e1bc9a0SAchim Leubner #ifdef FAST_IO_TEST
132*4e1bc9a0SAchim Leubner #define LL_FAST_IO_LOCK       (LL_IOREQ_LOCKEQ_LOCK+1)
133*4e1bc9a0SAchim Leubner #else /* FAST_IO_TEST   */
134*4e1bc9a0SAchim Leubner #define LL_FAST_IO_LOCK       (LL_IOREQ_LOCKEQ_LOCK)
135*4e1bc9a0SAchim Leubner #endif /* FAST_IO_TEST   */
136*4e1bc9a0SAchim Leubner 
137*4e1bc9a0SAchim Leubner #ifdef SA_ENABLE_TRACE_FUNCTIONS
138*4e1bc9a0SAchim Leubner #define LL_TRACE_LOCK       (LL_FAST_IO_LOCK+1)
139*4e1bc9a0SAchim Leubner #else /* SA_ENABLE_TRACE_FUNCTIONS   */
140*4e1bc9a0SAchim Leubner #define LL_TRACE_LOCK       (LL_FAST_IO_LOCK)
141*4e1bc9a0SAchim Leubner #endif /* SA_ENABLE_TRACE_FUNCTIONS   */
142*4e1bc9a0SAchim Leubner 
143*4e1bc9a0SAchim Leubner #ifdef  MPI_DEBUG_TRACE_ENABLE
144*4e1bc9a0SAchim Leubner #define LL_IOMB_TRACE_LOCK (LL_TRACE_LOCK+1)
145*4e1bc9a0SAchim Leubner #else /* MPI_DEBUG_TRACE_ENABLE */
146*4e1bc9a0SAchim Leubner #define LL_IOMB_TRACE_LOCK (LL_TRACE_LOCK)
147*4e1bc9a0SAchim Leubner #endif /* MPI_DEBUG_TRACE_ENABLE */
148*4e1bc9a0SAchim Leubner 
149*4e1bc9a0SAchim Leubner #define LL_IOREQ_OBQ_LOCK     (LL_IOMB_TRACE_LOCK+1)
150*4e1bc9a0SAchim Leubner 
151*4e1bc9a0SAchim Leubner #define LL_IOREQ_IBQ_LOCK      (LL_IOREQ_OBQ_LOCK +1)
152*4e1bc9a0SAchim Leubner #define LL_IOREQ_IBQ_LOCK_PARM (LL_IOREQ_OBQ_LOCK + queueConfig->numOutboundQueues  +1)
153*4e1bc9a0SAchim Leubner #define LL_IOREQ_IBQ0_LOCK     (LL_IOREQ_OBQ_LOCK + saRoot->QueueConfig.numOutboundQueues  +1)
154*4e1bc9a0SAchim Leubner 
155*4e1bc9a0SAchim Leubner 
156*4e1bc9a0SAchim Leubner 
157*4e1bc9a0SAchim Leubner /* define phy states */
158*4e1bc9a0SAchim Leubner #define PHY_STOPPED                               0x00000000              /**< flag indicates phy stopped */
159*4e1bc9a0SAchim Leubner #define PHY_UP                                    0x00000001              /**< flag indicates phy up */
160*4e1bc9a0SAchim Leubner #define PHY_DOWN                                  0x00000002              /**< flag indicates phy down */
161*4e1bc9a0SAchim Leubner 
162*4e1bc9a0SAchim Leubner /* define port states */
163*4e1bc9a0SAchim Leubner #define PORT_NORMAL                               0x0000
164*4e1bc9a0SAchim Leubner #define PORT_INVALIDATING                         0x0002
165*4e1bc9a0SAchim Leubner 
166*4e1bc9a0SAchim Leubner /* define chip status */
167*4e1bc9a0SAchim Leubner #define CHIP_NORMAL                               0x0000
168*4e1bc9a0SAchim Leubner #define CHIP_SHUTDOWN                             0x0001
169*4e1bc9a0SAchim Leubner #define CHIP_RESETTING                            0x0002
170*4e1bc9a0SAchim Leubner #define CHIP_RESET_FW                             0x0004
171*4e1bc9a0SAchim Leubner #define CHIP_FATAL_ERROR                          0x0008
172*4e1bc9a0SAchim Leubner 
173*4e1bc9a0SAchim Leubner /* define device types */
174*4e1bc9a0SAchim Leubner #define SAS_SATA_UNKNOWN_DEVICE                   0xFF       /**< SAS SATA unknown device type */
175*4e1bc9a0SAchim Leubner 
176*4e1bc9a0SAchim Leubner #define STP_DEVICE                                0x00       /**< SATA device behind an expander */
177*4e1bc9a0SAchim Leubner #define SSP_SMP_DEVICE                            0x01       /**< SSP or SMP device type */
178*4e1bc9a0SAchim Leubner #define DIRECT_SATA_DEVICE                        0x02       /**< SATA direct device type */
179*4e1bc9a0SAchim Leubner 
180*4e1bc9a0SAchim Leubner /* SATA */
181*4e1bc9a0SAchim Leubner #define SATA_FIS_MASK                             0x00000001
182*4e1bc9a0SAchim Leubner #define MAX_SATARESP_SUPPORT_BYTES                44
183*4e1bc9a0SAchim Leubner 
184*4e1bc9a0SAchim Leubner #define MARK_OFF                                  0xFFFFFFFF
185*4e1bc9a0SAchim Leubner #define PORT_MARK_OFF                             0xFFFFFFFF
186*4e1bc9a0SAchim Leubner #define NO_FATAL_ERROR_VECTOR                     0xFFFFFFFF
187*4e1bc9a0SAchim Leubner 
188*4e1bc9a0SAchim Leubner #define SATA_PROTOCOL_RSRT_ASSERT                 0x01
189*4e1bc9a0SAchim Leubner #define SATA_PROTOCOL_RSRT_DEASSERT               0x02
190*4e1bc9a0SAchim Leubner #define SATA_NON_DATA_PROTOCOL                    0x0d
191*4e1bc9a0SAchim Leubner #define SATA_PIO_READ_PROTOCOL                    0x0e
192*4e1bc9a0SAchim Leubner #define SATA_DMA_READ_PROTOCOL                    0x0f
193*4e1bc9a0SAchim Leubner #define SATA_FPDMA_READ_PROTOCOL                  0x10
194*4e1bc9a0SAchim Leubner #define SATA_PIO_WRITE_PROTOCOL                   0x11
195*4e1bc9a0SAchim Leubner #define SATA_DMA_WRITE_PROTOCOL                   0x12
196*4e1bc9a0SAchim Leubner #define SATA_FPDMA_WRITE_PROTOCOL                 0x13
197*4e1bc9a0SAchim Leubner #define SATA_DEVICE_RESET_PROTOCOL                0x14
198*4e1bc9a0SAchim Leubner 
199*4e1bc9a0SAchim Leubner /* Definition for bit shift */
200*4e1bc9a0SAchim Leubner #define SHIFT0                                    0
201*4e1bc9a0SAchim Leubner #define SHIFT1                                    1
202*4e1bc9a0SAchim Leubner #define SHIFT2                                    2
203*4e1bc9a0SAchim Leubner #define SHIFT3                                    3
204*4e1bc9a0SAchim Leubner #define SHIFT4                                    4
205*4e1bc9a0SAchim Leubner #define SHIFT5                                    5
206*4e1bc9a0SAchim Leubner #define SHIFT6                                    6
207*4e1bc9a0SAchim Leubner #define SHIFT7                                    7
208*4e1bc9a0SAchim Leubner #define SHIFT8                                    8
209*4e1bc9a0SAchim Leubner #define SHIFT9                                    9
210*4e1bc9a0SAchim Leubner #define SHIFT10                                   10
211*4e1bc9a0SAchim Leubner #define SHIFT11                                   11
212*4e1bc9a0SAchim Leubner #define SHIFT12                                   12
213*4e1bc9a0SAchim Leubner #define SHIFT13                                   13
214*4e1bc9a0SAchim Leubner #define SHIFT14                                   14
215*4e1bc9a0SAchim Leubner #define SHIFT15                                   15
216*4e1bc9a0SAchim Leubner #define SHIFT16                                   16
217*4e1bc9a0SAchim Leubner #define SHIFT17                                   17
218*4e1bc9a0SAchim Leubner #define SHIFT18                                   18
219*4e1bc9a0SAchim Leubner #define SHIFT19                                   19
220*4e1bc9a0SAchim Leubner #define SHIFT20                                   20
221*4e1bc9a0SAchim Leubner #define SHIFT21                                   21
222*4e1bc9a0SAchim Leubner #define SHIFT22                                   22
223*4e1bc9a0SAchim Leubner #define SHIFT23                                   23
224*4e1bc9a0SAchim Leubner #define SHIFT24                                   24
225*4e1bc9a0SAchim Leubner #define SHIFT25                                   25
226*4e1bc9a0SAchim Leubner #define SHIFT26                                   26
227*4e1bc9a0SAchim Leubner #define SHIFT27                                   27
228*4e1bc9a0SAchim Leubner #define SHIFT28                                   28
229*4e1bc9a0SAchim Leubner #define SHIFT29                                   29
230*4e1bc9a0SAchim Leubner #define SHIFT30                                   30
231*4e1bc9a0SAchim Leubner #define SHIFT31                                   31
232*4e1bc9a0SAchim Leubner 
233*4e1bc9a0SAchim Leubner /* These flags used for saSSPAbort(), saSATAAbort() */
234*4e1bc9a0SAchim Leubner #define ABORT_MASK                                0x3
235*4e1bc9a0SAchim Leubner #define ABORT_SINGLE                              0x0
236*4e1bc9a0SAchim Leubner #define ABORT_SCOPE                               0x3 /* bits 0-1*/
237*4e1bc9a0SAchim Leubner #define ABORT_ALL                                 0x1
238*4e1bc9a0SAchim Leubner #define ABORT_TSDK_QUARANTINE                     0x4
239*4e1bc9a0SAchim Leubner #define ABORT_QUARANTINE_SPC                      0x4
240*4e1bc9a0SAchim Leubner #define ABORT_QUARANTINE_SPCV                     0x8
241*4e1bc9a0SAchim Leubner 
242*4e1bc9a0SAchim Leubner /* These flags used for saGetRegDump() */
243*4e1bc9a0SAchim Leubner #define REG_DUMP_NUM0                             0x0
244*4e1bc9a0SAchim Leubner #define REG_DUMP_NUM1                             0x1
245*4e1bc9a0SAchim Leubner #define REG_DUMP_NONFLASH                         0x0
246*4e1bc9a0SAchim Leubner #define REG_DUMP_FLASH                            0x1
247*4e1bc9a0SAchim Leubner 
248*4e1bc9a0SAchim Leubner /* MSIX Interupts */
249*4e1bc9a0SAchim Leubner #define MSIX_TABLE_OFFSET                         0x2000
250*4e1bc9a0SAchim Leubner #define MSIX_TABLE_ELEMENT_SIZE                   0x10
251*4e1bc9a0SAchim Leubner #define MSIX_INTERRUPT_CONTROL_OFFSET             0xC
252*4e1bc9a0SAchim Leubner #define MSIX_TABLE_BASE                   (MSIX_TABLE_OFFSET+MSIX_INTERRUPT_CONTROL_OFFSET)
253*4e1bc9a0SAchim Leubner #define MSIX_INTERRUPT_DISABLE                    0x1
254*4e1bc9a0SAchim Leubner #define MSIX_INTERRUPT_ENABLE                     0x0
255*4e1bc9a0SAchim Leubner 
256*4e1bc9a0SAchim Leubner #define MAX_QUEUE_EACH_MEM                        8
257*4e1bc9a0SAchim Leubner 
258*4e1bc9a0SAchim Leubner #define NUM_MEM_CHUNKS(Q, rem) ((((bit32)Q % rem) > 0) ? (bit32)(Q/rem+1) : (bit32)(Q/rem))
259*4e1bc9a0SAchim Leubner #define NUM_QUEUES_IN_MEM(Q, rem) ((((bit32)Q % rem) > 0) ? (bit32)(Q%rem) : (bit32)(MAX_QUEUE_EACH_MEM))
260*4e1bc9a0SAchim Leubner 
261*4e1bc9a0SAchim Leubner #define MAX_DEV_BITS                              0xFFFF0000
262*4e1bc9a0SAchim Leubner #define PHY_COUNT_BITS                            0x01f80000
263*4e1bc9a0SAchim Leubner #define Q_SUPPORT_BITS                            0x0007ffff
264*4e1bc9a0SAchim Leubner #define SAS_SPEC_BITS                             0xfe000000
265*4e1bc9a0SAchim Leubner #define HP_SUPPORT_BIT                            0x00010000
266*4e1bc9a0SAchim Leubner #define INT_COL_BIT                               0x00040000
267*4e1bc9a0SAchim Leubner #define INT_DELAY_BITS                            0xFFFF
268*4e1bc9a0SAchim Leubner #define INT_THR_BITS                              0xFF
269*4e1bc9a0SAchim Leubner #define INT_VEC_BITS                              0xFF
270*4e1bc9a0SAchim Leubner 
271*4e1bc9a0SAchim Leubner #define AUTO_HARD_RESET_DEREG_FLAG                0x00000001
272*4e1bc9a0SAchim Leubner #define AUTO_FW_CLEANUP_DEREG_FLAG                0x00000002
273*4e1bc9a0SAchim Leubner 
274*4e1bc9a0SAchim Leubner #define BYTE_MASK                                 0xff
275*4e1bc9a0SAchim Leubner 
276*4e1bc9a0SAchim Leubner #define INT_OPTION                                0x7FFF
277*4e1bc9a0SAchim Leubner #define SMP_TO_DEFAULT                            100
278*4e1bc9a0SAchim Leubner #define ITL_TO_DEFAULT                            0xFFFF
279*4e1bc9a0SAchim Leubner 
280*4e1bc9a0SAchim Leubner 
281*4e1bc9a0SAchim Leubner /*
282*4e1bc9a0SAchim Leubner agsaHwConfig_s  hwOption
283*4e1bc9a0SAchim Leubner */
284*4e1bc9a0SAchim Leubner #define HW_CFG_PICI_EFFECTIVE_ADDRESS             0x1
285*4e1bc9a0SAchim Leubner 
286*4e1bc9a0SAchim Leubner /* SPC or SPCv ven dev Id */
287*4e1bc9a0SAchim Leubner 
288*4e1bc9a0SAchim Leubner #define SUBID_SPC                                 0x00000000
289*4e1bc9a0SAchim Leubner #define SUBID_SPCV                                0x56781234
290*4e1bc9a0SAchim Leubner 
291*4e1bc9a0SAchim Leubner #define VEN_DEV_SPC                               0x80010000
292*4e1bc9a0SAchim Leubner #define VEN_DEV_HIL                               0x80810000
293*4e1bc9a0SAchim Leubner 
294*4e1bc9a0SAchim Leubner #define VEN_DEV_SPCV                              0x80080000
295*4e1bc9a0SAchim Leubner #define VEN_DEV_SPCVE                             0x80090000
296*4e1bc9a0SAchim Leubner #define VEN_DEV_SPCVP                             0x80180000
297*4e1bc9a0SAchim Leubner #define VEN_DEV_SPCVEP                            0x80190000
298*4e1bc9a0SAchim Leubner 
299*4e1bc9a0SAchim Leubner #define VEN_DEV_SPC12V                            0x80700000
300*4e1bc9a0SAchim Leubner #define VEN_DEV_SPC12VE                           0x80710000
301*4e1bc9a0SAchim Leubner #define VEN_DEV_SPC12VP                           0x80720000
302*4e1bc9a0SAchim Leubner #define VEN_DEV_SPC12VEP                          0x80730000
303*4e1bc9a0SAchim Leubner #define VEN_DEV_9015                              0x90150000
304*4e1bc9a0SAchim Leubner #define VEN_DEV_9060                              0x90600000
305*4e1bc9a0SAchim Leubner 
306*4e1bc9a0SAchim Leubner #define VEN_DEV_ADAPVEP                           0x80890000
307*4e1bc9a0SAchim Leubner #define VEN_DEV_ADAPVP                            0x80880000
308*4e1bc9a0SAchim Leubner 
309*4e1bc9a0SAchim Leubner 
310*4e1bc9a0SAchim Leubner #define VEN_DEV_SFC                               0x80250000
311*4e1bc9a0SAchim Leubner 
312*4e1bc9a0SAchim Leubner /*DelRay PCIid */
313*4e1bc9a0SAchim Leubner #define VEN_DEV_SPC12ADP                          0x80740000 /* 8 ports */
314*4e1bc9a0SAchim Leubner #define VEN_DEV_SPC12ADPE                         0x80750000 /* 8 ports encrypt */
315*4e1bc9a0SAchim Leubner #define VEN_DEV_SPC12ADPP                         0x80760000 /* 16 ports  */
316*4e1bc9a0SAchim Leubner #define VEN_DEV_SPC12ADPEP                        0x80770000 /* 16 ports encrypt */
317*4e1bc9a0SAchim Leubner #define VEN_DEV_SPC12SATA                         0x80060000 /* SATA HBA */
318*4e1bc9a0SAchim Leubner 
319*4e1bc9a0SAchim Leubner #endif  /*__SADEFS_H__ */
320