1285242Sachim/*******************************************************************************
2285242Sachim*Copyright (c) 2014 PMC-Sierra, Inc.  All rights reserved.
3285242Sachim*
4285242Sachim*Redistribution and use in source and binary forms, with or without modification, are permitted provided
5285242Sachim*that the following conditions are met:
6285242Sachim*1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
7285242Sachim*following disclaimer.
8285242Sachim*2. Redistributions in binary form must reproduce the above copyright notice,
9285242Sachim*this list of conditions and the following disclaimer in the documentation and/or other materials provided
10285242Sachim*with the distribution.
11285242Sachim*
12285242Sachim*THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
13285242Sachim*WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14285242Sachim*FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
15285242Sachim*FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16285242Sachim*NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
17285242Sachim*BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
18285242Sachim*LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
19285242Sachim*SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
20285242Sachim*
21285242Sachim* $FreeBSD: releng/11.0/sys/dev/pms/RefTisa/discovery/api/tddmapi.h 285242 2015-07-07 13:17:02Z achim $
22285242Sachim*
23285242Sachim********************************************************************************/
24285242Sachim/********************************************************************************
25285242Sachim*   tmdmapi.h
26285242Sachim*
27285242Sachim*   Abstract:   This module contains function prototype of the Discovery
28285242Sachim*               Module (DM) API callback for initiator.
29285242Sachim*******************************************************************************/
30285242Sachim
31285242Sachim#ifndef TDDMAPI_H
32285242Sachim
33285242Sachim#define TDDMAPI_H
34285242Sachim
35285242SachimosGLOBAL void tddmCacheFlush(
36285242Sachim				dmRoot_t 	*dmRoot,
37285242Sachim				void 		*tdMemHandle,
38285242Sachim				void 		*virtPtr,
39285242Sachim				bit32 		length
40285242Sachim				);
41285242Sachim
42285242SachimosGLOBAL void tddmCacheInvalidate(
43285242Sachim				dmRoot_t 	*dmRoot,
44285242Sachim				void 		*tdMemHandle,
45285242Sachim				void 		*virtPtr,
46285242Sachim				bit32 		length
47285242Sachim				);
48285242Sachim
49285242SachimosGLOBAL void tddmCachePreFlush(
50285242Sachim				dmRoot_t 	*dmRoot,
51285242Sachim				void 		*tdMemHandle,
52285242Sachim				void 		*virtPtr,
53285242Sachim				bit32 		length
54285242Sachim				);
55285242Sachim
56285242SachimosGLOBAL void tddmDiscoverCB(
57285242Sachim				dmRoot_t 		*dmRoot,
58285242Sachim				dmPortContext_t		*dmPortContext,
59285242Sachim				bit32			eventStatus
60285242Sachim				);
61285242Sachim
62285242SachimosGLOBAL void tddmQueryDiscoveryCB(
63285242Sachim				dmRoot_t 		*dmRoot,
64285242Sachim				dmPortContext_t		*dmPortContext,
65285242Sachim				bit32          		discType,
66285242Sachim				bit32			discState
67285242Sachim				);
68285242Sachim
69285242SachimosGLOBAL void tddmReportDevice(
70285242Sachim				dmRoot_t 		*dmRoot,
71285242Sachim				dmPortContext_t		*dmPortContext,
72285242Sachim				dmDeviceInfo_t		*dmDeviceInfo,
73285242Sachim                                dmDeviceInfo_t		*dmExpDeviceInfo,
74285242Sachim				bit32                   flag
75285242Sachim				);
76285242Sachim
77285242SachimosGLOBAL bit8 tddmSATADeviceTypeDecode(bit8 * pSignature);
78285242Sachim
79285242SachimosGLOBAL void tddmSingleThreadedEnter(
80285242Sachim				       dmRoot_t 		*dmRoot,
81285242Sachim				       bit32    		syncLockId
82285242Sachim				      );
83285242Sachim
84285242SachimosGLOBAL void tddmSingleThreadedLeave(
85285242Sachim				       dmRoot_t 		*dmRoot,
86285242Sachim				       bit32    		syncLockId
87285242Sachim				      );
88285242SachimosGLOBAL bit32 tddmGetTransportParam(
89285242Sachim                        dmRoot_t    *dmRoot,
90285242Sachim                        char        *key,
91285242Sachim                        char        *subkey1,
92285242Sachim                        char        *subkey2,
93285242Sachim                        char        *subkey3,
94285242Sachim                        char        *subkey4,
95285242Sachim                        char        *subkey5,
96285242Sachim                        char        *valueName,
97285242Sachim                        char        *buffer,
98285242Sachim                        bit32       bufferLen,
99285242Sachim                        bit32       *lenReceived
100285242Sachim                        );
101285242SachimosGLOBAL bit32
102285242SachimtddmRotateQnumber(
103285242Sachim                  dmRoot_t          *dmRoot,
104285242Sachim                  agsaDevHandle_t   *agDevHandle
105285242Sachim                 );
106285242Sachim#ifndef tddmLogDebugString
107285242SachimGLOBAL void tddmLogDebugString(
108285242Sachim                         dmRoot_t     *dmRoot,
109285242Sachim                         bit32        level,
110285242Sachim                         char         *string,
111285242Sachim                         void         *ptr1,
112285242Sachim                         void         *ptr2,
113285242Sachim                         bit32        value1,
114285242Sachim                         bit32        value2
115285242Sachim                         );
116285242Sachim#endif
117285242Sachim
118285242Sachim
119285242Sachim#endif  /* TDDMAPI_H */
120