xref: /dflybsd-src/sys/dev/raid/mps/mpi/mpi2_hbd.h (revision eb403c9356ce5a2d494a31e006698fd95cf594b1)
1*c12c399aSSascha Wildner /*-
2*c12c399aSSascha Wildner  * Copyright (c) 2011 LSI Corp.
3*c12c399aSSascha Wildner  * All rights reserved.
4*c12c399aSSascha Wildner  *
5*c12c399aSSascha Wildner  * Redistribution and use in source and binary forms, with or without
6*c12c399aSSascha Wildner  * modification, are permitted provided that the following conditions
7*c12c399aSSascha Wildner  * are met:
8*c12c399aSSascha Wildner  * 1. Redistributions of source code must retain the above copyright
9*c12c399aSSascha Wildner  *    notice, this list of conditions and the following disclaimer.
10*c12c399aSSascha Wildner  * 2. Redistributions in binary form must reproduce the above copyright
11*c12c399aSSascha Wildner  *    notice, this list of conditions and the following disclaimer in the
12*c12c399aSSascha Wildner  *    documentation and/or other materials provided with the distribution.
13*c12c399aSSascha Wildner  *
14*c12c399aSSascha Wildner  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15*c12c399aSSascha Wildner  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16*c12c399aSSascha Wildner  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17*c12c399aSSascha Wildner  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18*c12c399aSSascha Wildner  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19*c12c399aSSascha Wildner  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20*c12c399aSSascha Wildner  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21*c12c399aSSascha Wildner  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22*c12c399aSSascha Wildner  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23*c12c399aSSascha Wildner  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24*c12c399aSSascha Wildner  * SUCH DAMAGE.
25*c12c399aSSascha Wildner  *
26*c12c399aSSascha Wildner  * LSI MPT-Fusion Host Adapter FreeBSD
27*c12c399aSSascha Wildner  *
28*c12c399aSSascha Wildner  * $FreeBSD: src/sys/dev/mps/mpi/mpi2_hbd.h,v 1.2 2012/01/26 18:17:21 ken Exp $
29*c12c399aSSascha Wildner  */
30*c12c399aSSascha Wildner 
31*c12c399aSSascha Wildner /*
32*c12c399aSSascha Wildner  *  Copyright (c) 2009-2011 LSI Corporation.
33*c12c399aSSascha Wildner  *
34*c12c399aSSascha Wildner  *
35*c12c399aSSascha Wildner  *           Name:  mpi2_hbd.h
36*c12c399aSSascha Wildner  *          Title:  MPI Host Based Discovery messages and structures
37*c12c399aSSascha Wildner  *  Creation Date:  October 21, 2009
38*c12c399aSSascha Wildner  *
39*c12c399aSSascha Wildner  *  mpi2_hbd.h Version:  02.00.01
40*c12c399aSSascha Wildner  *
41*c12c399aSSascha Wildner  *  Version History
42*c12c399aSSascha Wildner  *  ---------------
43*c12c399aSSascha Wildner  *
44*c12c399aSSascha Wildner  *  Date      Version   Description
45*c12c399aSSascha Wildner  *  --------  --------  ------------------------------------------------------
46*c12c399aSSascha Wildner  *  10-28-09  02.00.00  Initial version.
47*c12c399aSSascha Wildner  *  08-11-10  02.00.01  Removed PortGroups, DmaGroup, and ControlGroup from
48*c12c399aSSascha Wildner  *                      HBD Action request, replaced by AdditionalInfo field.
49*c12c399aSSascha Wildner  *  --------------------------------------------------------------------------
50*c12c399aSSascha Wildner  */
51*c12c399aSSascha Wildner 
52*c12c399aSSascha Wildner #ifndef MPI2_HBD_H
53*c12c399aSSascha Wildner #define MPI2_HBD_H
54*c12c399aSSascha Wildner 
55*c12c399aSSascha Wildner /****************************************************************************
56*c12c399aSSascha Wildner *  Host Based Discovery Action messages
57*c12c399aSSascha Wildner ****************************************************************************/
58*c12c399aSSascha Wildner 
59*c12c399aSSascha Wildner /* Host Based Discovery Action Request Message */
60*c12c399aSSascha Wildner typedef struct _MPI2_HBD_ACTION_REQUEST
61*c12c399aSSascha Wildner {
62*c12c399aSSascha Wildner     U8                      Operation;          /* 0x00 */
63*c12c399aSSascha Wildner     U8                      Reserved1;          /* 0x01 */
64*c12c399aSSascha Wildner     U8                      ChainOffset;        /* 0x02 */
65*c12c399aSSascha Wildner     U8                      Function;           /* 0x03 */
66*c12c399aSSascha Wildner     U16                     DevHandle;          /* 0x04 */
67*c12c399aSSascha Wildner     U8                      Reserved2;          /* 0x06 */
68*c12c399aSSascha Wildner     U8                      MsgFlags;           /* 0x07 */
69*c12c399aSSascha Wildner     U8                      VP_ID;              /* 0x08 */
70*c12c399aSSascha Wildner     U8                      VF_ID;              /* 0x09 */
71*c12c399aSSascha Wildner     U16                     Reserved3;          /* 0x0A */
72*c12c399aSSascha Wildner     U32                     Reserved4;          /* 0x0C */
73*c12c399aSSascha Wildner     U64                     SASAddress;         /* 0x10 */
74*c12c399aSSascha Wildner     U32                     Reserved5;          /* 0x18 */
75*c12c399aSSascha Wildner     U32                     HbdDeviceInfo;      /* 0x1C */
76*c12c399aSSascha Wildner     U16                     ParentDevHandle;    /* 0x20 */
77*c12c399aSSascha Wildner     U16                     MaxQDepth;          /* 0x22 */
78*c12c399aSSascha Wildner     U8                      FirstPhyIdentifier; /* 0x24 */
79*c12c399aSSascha Wildner     U8                      Port;               /* 0x25 */
80*c12c399aSSascha Wildner     U8                      MaxConnections;     /* 0x26 */
81*c12c399aSSascha Wildner     U8                      MaxRate;            /* 0x27 */
82*c12c399aSSascha Wildner     U32                     AdditionalInfo;     /* 0x28 */
83*c12c399aSSascha Wildner     U16                     InitialAWT;         /* 0x2C */
84*c12c399aSSascha Wildner     U16                     Reserved7;          /* 0x2E */
85*c12c399aSSascha Wildner     U32                     Reserved8;          /* 0x30 */
86*c12c399aSSascha Wildner } MPI2_HBD_ACTION_REQUEST, MPI2_POINTER PTR_MPI2_HBD_ACTION_REQUEST,
87*c12c399aSSascha Wildner   Mpi2HbdActionRequest_t, MPI2_POINTER pMpi2HbdActionRequest_t;
88*c12c399aSSascha Wildner 
89*c12c399aSSascha Wildner /* values for the Operation field */
90*c12c399aSSascha Wildner #define MPI2_HBD_OP_ADD_DEVICE                  (0x01)
91*c12c399aSSascha Wildner #define MPI2_HBD_OP_REMOVE_DEVICE               (0x02)
92*c12c399aSSascha Wildner #define MPI2_HBD_OP_UPDATE_DEVICE               (0x03)
93*c12c399aSSascha Wildner 
94*c12c399aSSascha Wildner /* values for the HbdDeviceInfo field */
95*c12c399aSSascha Wildner #define MPI2_HBD_DEVICE_INFO_VIRTUAL_DEVICE     (0x00004000)
96*c12c399aSSascha Wildner #define MPI2_HBD_DEVICE_INFO_ATAPI_DEVICE       (0x00002000)
97*c12c399aSSascha Wildner #define MPI2_HBD_DEVICE_INFO_DIRECT_ATTACH      (0x00000800)
98*c12c399aSSascha Wildner #define MPI2_HBD_DEVICE_INFO_SSP_TARGET         (0x00000400)
99*c12c399aSSascha Wildner #define MPI2_HBD_DEVICE_INFO_STP_TARGET         (0x00000200)
100*c12c399aSSascha Wildner #define MPI2_HBD_DEVICE_INFO_SMP_TARGET         (0x00000100)
101*c12c399aSSascha Wildner #define MPI2_HBD_DEVICE_INFO_SATA_DEVICE        (0x00000080)
102*c12c399aSSascha Wildner #define MPI2_HBD_DEVICE_INFO_SSP_INITIATOR      (0x00000040)
103*c12c399aSSascha Wildner #define MPI2_HBD_DEVICE_INFO_STP_INITIATOR      (0x00000020)
104*c12c399aSSascha Wildner #define MPI2_HBD_DEVICE_INFO_SMP_INITIATOR      (0x00000010)
105*c12c399aSSascha Wildner #define MPI2_HBD_DEVICE_INFO_SATA_HOST          (0x00000008)
106*c12c399aSSascha Wildner 
107*c12c399aSSascha Wildner #define MPI2_HBD_DEVICE_INFO_MASK_DEVICE_TYPE   (0x00000007)
108*c12c399aSSascha Wildner #define MPI2_HBD_DEVICE_INFO_NO_DEVICE          (0x00000000)
109*c12c399aSSascha Wildner #define MPI2_HBD_DEVICE_INFO_END_DEVICE         (0x00000001)
110*c12c399aSSascha Wildner #define MPI2_HBD_DEVICE_INFO_EDGE_EXPANDER      (0x00000002)
111*c12c399aSSascha Wildner #define MPI2_HBD_DEVICE_INFO_FANOUT_EXPANDER    (0x00000003)
112*c12c399aSSascha Wildner 
113*c12c399aSSascha Wildner /* values for the MaxRate field */
114*c12c399aSSascha Wildner #define MPI2_HBD_MAX_RATE_MASK                  (0x0F)
115*c12c399aSSascha Wildner #define MPI2_HBD_MAX_RATE_1_5                   (0x08)
116*c12c399aSSascha Wildner #define MPI2_HBD_MAX_RATE_3_0                   (0x09)
117*c12c399aSSascha Wildner #define MPI2_HBD_MAX_RATE_6_0                   (0x0A)
118*c12c399aSSascha Wildner 
119*c12c399aSSascha Wildner 
120*c12c399aSSascha Wildner /* Host Based Discovery Action Reply Message */
121*c12c399aSSascha Wildner typedef struct _MPI2_HBD_ACTION_REPLY
122*c12c399aSSascha Wildner {
123*c12c399aSSascha Wildner     U8                      Operation;          /* 0x00 */
124*c12c399aSSascha Wildner     U8                      Reserved1;          /* 0x01 */
125*c12c399aSSascha Wildner     U8                      MsgLength;          /* 0x02 */
126*c12c399aSSascha Wildner     U8                      Function;           /* 0x03 */
127*c12c399aSSascha Wildner     U16                     DevHandle;          /* 0x04 */
128*c12c399aSSascha Wildner     U8                      Reserved2;          /* 0x06 */
129*c12c399aSSascha Wildner     U8                      MsgFlags;           /* 0x07 */
130*c12c399aSSascha Wildner     U8                      VP_ID;              /* 0x08 */
131*c12c399aSSascha Wildner     U8                      VF_ID;              /* 0x09 */
132*c12c399aSSascha Wildner     U16                     Reserved3;          /* 0x0A */
133*c12c399aSSascha Wildner     U16                     Reserved4;          /* 0x0C */
134*c12c399aSSascha Wildner     U16                     IOCStatus;          /* 0x0E */
135*c12c399aSSascha Wildner     U32                     IOCLogInfo;         /* 0x10 */
136*c12c399aSSascha Wildner } MPI2_HBD_ACTION_REPLY, MPI2_POINTER PTR_MPI2_HBD_ACTION_REPLY,
137*c12c399aSSascha Wildner   Mpi2HbdActionReply_t, MPI2_POINTER pMpi2HbdActionReply_t;
138*c12c399aSSascha Wildner 
139*c12c399aSSascha Wildner 
140*c12c399aSSascha Wildner #endif
141