1 /*******************************************************************************
2 **
3 *Copyright (c) 2014 PMC-Sierra, Inc. All rights reserved.
4 *
5 *Redistribution and use in source and binary forms, with or without modification, are permitted provided
6 *that the following conditions are met:
7 *1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
8 *following disclaimer.
9 *2. Redistributions in binary form must reproduce the above copyright notice,
10 *this list of conditions and the following disclaimer in the documentation and/or other materials provided
11 *with the distribution.
12 *
13 *THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
14 *WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
15 *FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16 *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17 *NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
18 *BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
19 *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
20 *SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
21 *
22 * $FreeBSD$
23 *
24 ********************************************************************************/
25 /********************************************************************************
26 **
27 * dm.h
28 *
29 * Abstract: This module defines the contants, enum and #define definition used
30 * by Discovery Moduled (DM).
31 *
32 ********************************************************************************/
33
34 #ifndef DM_H
35
36 #define DM_H
37
38 /*************************************************
39 * constants for type field in agsaMem_t
40 *************************************************/
41 #define DM_CACHED_MEM 0x00 /**< CACHED memory type */
42 #define DM_DMA_MEM 0x01 /**< DMA memory type */
43 #define DM_CACHED_DMA_MEM 0x02 /**< CACHED DMA memory type */
44
45 /*************************************************
46 * constants for API return values
47 *************************************************/
48 #define DM_RC_SUCCESS 0x00 /**< Successful function return value */
49 #define DM_RC_FAILURE 0x01 /**< Failed function return value */
50 #define DM_RC_BUSY 0x02 /**< Busy function return value */
51 #define DM_RC_VERSION_INCOMPATIBLE 0x03 /**< Version miss match */
52 #define DM_RC_VERSION_UNTESTED 0x04 /**< Version not tested */
53
54
55
56 /*************************************************
57 * Discovery option
58 *************************************************/
59 #define DM_DISCOVERY_OPTION_FULL_START 0x00 /**< Full discovery */
60 #define DM_DISCOVERY_OPTION_INCREMENTAL_START 0x01 /**< Incremental discovery */
61 #define DM_DISCOVERY_OPTION_ABORT 0x02 /**< Discovery abort */
62
63
64 /*************************************************
65 * Discovery status
66 *************************************************/
67 enum dmDiscoveryState_e
68 {
69 dmDiscCompleted = 0,
70 dmDiscFailed,
71 dmDiscAborted,
72 dmDiscAbortFailed,
73 dmDiscInProgress,
74 dmDiscAbortInvalid, /* no discovery to abort */
75 dmDiscAbortInProgress, /* abort in progress */
76
77 };
78
79 /*************************************************
80 * Device status
81 *************************************************/
82 enum dmDeviceState_e
83 {
84 dmDeviceNoChange = 0,
85 dmDeviceArrival,
86 dmDeviceRemoval,
87 dmDeviceMCNChange,
88 dmDeviceRateChange,
89 };
90
91 typedef struct dmContext_s {
92 void *tdData;
93 void *dmData;
94 } dmContext_t;
95
96 typedef struct{
97 bit16 smpTimeout;
98 bit16 it_NexusTimeout;
99 bit16 firstBurstSize;
100 bit8 flag;
101 bit8 devType_S_Rate;
102 bit8 sasAddressHi[4];
103 bit8 sasAddressLo[4];
104 bit8 initiator_ssp_stp_smp;
105 bit8 target_ssp_stp_smp;
106 /* bit8 - bit14 are set by the user of DM such as TDM for directly attached expander
107 0 - 7; PhyID
108 8: non SMP or not
109 9 - 10: types of expander, valid only when bit8 is set
110 10b (2): edge expander
111 11b (3): fanout expander
112 11 - 14: MCN
113 */
114 bit16 ext;
115 bit8 sataDeviceType;
116 bit8 reserved;
117 } dmDeviceInfo_t;
118
119
120 typedef struct{
121 void *virtPtr;
122 void *osHandle;
123 bit32 physAddrUpper;
124 bit32 physAddrLower;
125 bit32 totalLength;
126 bit32 numElements;
127 bit32 singleElementLength;
128 bit32 alignment;
129 bit32 type;
130 bit32 reserved;
131 } dmMem_t;
132
133 #define DM_NUM_MEM_CHUNKS 8
134
135 typedef struct{
136 bit32 count;
137 dmMem_t dmMemory[DM_NUM_MEM_CHUNKS];
138 } dmMemoryRequirement_t;
139
140 typedef dmContext_t dmPortContext_t;
141
142 typedef dmContext_t dmRoot_t;
143
144 typedef struct{
145 bit32 numDevHandles;
146 bit32 tbd1;
147 bit32 tbd2;
148 #ifdef DM_DEBUG
149 bit32 DMDebugLevel;
150 #endif
151 bit32 itNexusTimeout;
152 } dmSwConfig_t;
153
154 typedef struct{
155 bit8 sasRemoteAddressHi[4];
156 bit8 sasRemoteAddressLo[4];
157 bit8 sasLocalAddressHi[4];
158 bit8 sasLocalAddressLo[4];
159 bit32 flag;
160 } dmPortInfo_t;
161
162
163 #endif /* DM_H */
Cache object: 8f39a291db741228e5b2e7384e4c7c29
|