rename target/linux/generic-2.6 to generic
[15.05/openwrt.git] / target / linux / generic / files / crypto / ocf / kirkwood / mvHal / common / mvTypes.h
1 /*******************************************************************************
2 Copyright (C) Marvell International Ltd. and its affiliates
3
4 This software file (the "File") is owned and distributed by Marvell
5 International Ltd. and/or its affiliates ("Marvell") under the following
6 alternative licensing terms.  Once you have made an election to distribute the
7 File under one of the following license alternatives, please (i) delete this
8 introductory statement regarding license alternatives, (ii) delete the two
9 license alternatives that you have not elected to use and (iii) preserve the
10 Marvell copyright notice above.
11
12 ********************************************************************************
13 Marvell Commercial License Option
14
15 If you received this File from Marvell and you have entered into a commercial
16 license agreement (a "Commercial License") with Marvell, the File is licensed
17 to you under the terms of the applicable Commercial License.
18
19 ********************************************************************************
20 Marvell GPL License Option
21
22 If you received this File from Marvell, you may opt to use, redistribute and/or
23 modify this File in accordance with the terms and conditions of the General
24 Public License Version 2, June 1991 (the "GPL License"), a copy of which is
25 available along with the File in the license.txt file or by writing to the Free
26 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
27 on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
28
29 THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
30 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
31 DISCLAIMED.  The GPL License provides additional details about this warranty
32 disclaimer.
33 ********************************************************************************
34 Marvell BSD License Option
35
36 If you received this File from Marvell, you may opt to use, redistribute and/or
37 modify this File under the following licensing terms.
38 Redistribution and use in source and binary forms, with or without modification,
39 are permitted provided that the following conditions are met:
40
41     *   Redistributions of source code must retain the above copyright notice,
42             this list of conditions and the following disclaimer.
43
44     *   Redistributions in binary form must reproduce the above copyright
45         notice, this list of conditions and the following disclaimer in the
46         documentation and/or other materials provided with the distribution.
47
48     *   Neither the name of Marvell nor the names of its contributors may be
49         used to endorse or promote products derived from this software without
50         specific prior written permission.
51
52 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
53 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
54 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
55 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
56 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
57 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
58 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
59 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
60 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
61 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
62
63 *******************************************************************************/
64
65
66 #ifndef __INCmvTypesh
67 #define __INCmvTypesh
68
69 /* Defines */
70
71 /* The following is a list of Marvell status    */
72 #define MV_ERROR                    (-1)
73 #define MV_OK                       (0x00)  /* Operation succeeded                   */
74 #define MV_FAIL                     (0x01)      /* Operation failed                      */
75 #define MV_BAD_VALUE        (0x02)  /* Illegal value (general)               */
76 #define MV_OUT_OF_RANGE     (0x03)  /* The value is out of range             */
77 #define MV_BAD_PARAM        (0x04)  /* Illegal parameter in function called  */
78 #define MV_BAD_PTR          (0x05)  /* Illegal pointer value                 */
79 #define MV_BAD_SIZE         (0x06)  /* Illegal size                          */
80 #define MV_BAD_STATE        (0x07)  /* Illegal state of state machine        */
81 #define MV_SET_ERROR        (0x08)  /* Set operation failed                  */
82 #define MV_GET_ERROR        (0x09)  /* Get operation failed                  */
83 #define MV_CREATE_ERROR     (0x0A)  /* Fail while creating an item           */
84 #define MV_NOT_FOUND        (0x0B)  /* Item not found                        */
85 #define MV_NO_MORE          (0x0C)  /* No more items found                   */
86 #define MV_NO_SUCH          (0x0D)  /* No such item                          */
87 #define MV_TIMEOUT          (0x0E)  /* Time Out                              */
88 #define MV_NO_CHANGE        (0x0F)  /* Parameter(s) is already in this value */
89 #define MV_NOT_SUPPORTED    (0x10)  /* This request is not support           */
90 #define MV_NOT_IMPLEMENTED  (0x11)  /* Request supported but not implemented */
91 #define MV_NOT_INITIALIZED  (0x12)  /* The item is not initialized           */
92 #define MV_NO_RESOURCE      (0x13)  /* Resource not available (memory ...)   */
93 #define MV_FULL             (0x14)  /* Item is full (Queue or table etc...)  */
94 #define MV_EMPTY            (0x15)  /* Item is empty (Queue or table etc...) */
95 #define MV_INIT_ERROR       (0x16)  /* Error occured while INIT process      */
96 #define MV_HW_ERROR         (0x17)  /* Hardware error                        */
97 #define MV_TX_ERROR         (0x18)  /* Transmit operation not succeeded      */
98 #define MV_RX_ERROR         (0x19)  /* Recieve operation not succeeded       */
99 #define MV_NOT_READY        (0x1A)      /* The other side is not ready yet       */
100 #define MV_ALREADY_EXIST    (0x1B)  /* Tried to create existing item         */
101 #define MV_OUT_OF_CPU_MEM   (0x1C)  /* Cpu memory allocation failed.         */
102 #define MV_NOT_STARTED      (0x1D)  /* Not started yet         */
103 #define MV_BUSY             (0x1E)  /* Item is busy.                         */
104 #define MV_TERMINATE        (0x1F)  /* Item terminates it's work.            */
105 #define MV_NOT_ALIGNED      (0x20)  /* Wrong alignment                       */
106 #define MV_NOT_ALLOWED      (0x21)  /* Operation NOT allowed                 */
107 #define MV_WRITE_PROTECT    (0x22)  /* Write protected                       */
108
109
110 #define MV_INVALID  (int)(-1)
111
112 #define MV_FALSE        0
113 #define MV_TRUE     (!(MV_FALSE))
114
115
116 #ifndef NULL
117 #define NULL ((void*)0)
118 #endif
119
120
121 #ifndef MV_ASMLANGUAGE
122 /* typedefs */
123
124 typedef char  MV_8;
125 typedef unsigned char   MV_U8;
126
127 typedef int             MV_32;
128 typedef unsigned int    MV_U32;
129
130 typedef short           MV_16;
131 typedef unsigned short  MV_U16;
132
133 #ifdef MV_PPC64
134 typedef long            MV_64;
135 typedef unsigned long   MV_U64;
136 #else
137 typedef long long               MV_64;
138 typedef unsigned long long      MV_U64;
139 #endif
140
141 typedef long            MV_LONG;        /* 32/64 */
142 typedef unsigned long   MV_ULONG;       /* 32/64 */
143
144 typedef int     MV_STATUS;
145 typedef int     MV_BOOL;
146 typedef void    MV_VOID;
147 typedef float   MV_FLOAT;
148
149 typedef int     (*MV_FUNCPTR) (void);     /* ptr to function returning int   */
150 typedef void    (*MV_VOIDFUNCPTR) (void); /* ptr to function returning void  */
151 typedef double  (*MV_DBLFUNCPTR) (void);  /* ptr to function returning double*/
152 typedef float   (*MV_FLTFUNCPTR) (void);  /* ptr to function returning float */
153
154 typedef MV_U32 MV_KHZ;
155 typedef MV_U32 MV_MHZ;
156 typedef MV_U32 MV_HZ;
157
158
159 /* This enumerator describes the set of commands that can be applied on         */
160 /* an engine (e.g. IDMA, XOR). Appling a comman depends on the current          */
161 /* status (see MV_STATE enumerator)                                                             */
162 /* Start can be applied only when status is IDLE                         */
163 /* Stop can be applied only when status is IDLE, ACTIVE or PAUSED        */
164 /* Pause can be applied only when status is ACTIVE                          */
165 /* Restart can be applied only when status is PAUSED                        */
166 typedef enum _mvCommand
167 {
168     MV_START,              /* Start     */
169     MV_STOP,               /* Stop     */
170     MV_PAUSE,              /* Pause    */
171     MV_RESTART             /* Restart  */
172 } MV_COMMAND;
173
174 /* This enumerator describes the set of state conditions.                                       */
175 /* Moving from one state to other is stricted.                                                          */
176 typedef enum _mvState
177 {
178     MV_IDLE,
179     MV_ACTIVE,
180     MV_PAUSED,
181     MV_UNDEFINED_STATE
182 } MV_STATE;
183
184
185 /* This structure describes address space window. Window base can be        */
186 /* 64 bit, window size up to 4GB                                            */
187 typedef struct _mvAddrWin
188 {
189     MV_U32      baseLow;    /* 32bit base low       */
190     MV_U32      baseHigh;   /* 32bit base high      */
191     MV_U32      size;       /* 32bit size           */
192 }MV_ADDR_WIN;
193
194 /* This binary enumerator describes protection attribute status             */
195 typedef enum _mvProtRight
196 {
197     ALLOWED,        /* Protection attribute allowed                         */
198     FORBIDDEN       /* Protection attribute forbidden                       */
199 }MV_PROT_RIGHT;
200
201 /* Unified struct for Rx and Tx packet operations. The user is required to      */
202 /* be familier only with Tx/Rx descriptor command status.                       */
203 typedef struct _bufInfo
204 {
205     MV_U32   cmdSts;        /* Tx/Rx command status                                     */
206         MV_U16   byteCnt;       /* Size of valid data in the buffer     */
207     MV_U16   bufSize;       /* Total size of the buffer             */
208     MV_U8    *pBuff;            /* Pointer to Buffer                    */
209     MV_U8    *pData;            /* Pointer to data in the Buffer        */
210     MV_U32   userInfo1;         /* Tx/Rx attached user information 1    */
211     MV_U32   userInfo2;         /* Tx/Rx attached user information 2    */
212     struct _bufInfo *pNextBufInfo;  /* Next buffer in packet            */
213 } BUF_INFO;
214
215 /* This structure contains information describing one of buffers
216  * (fragments) they are built Ethernet packet.
217  */
218 typedef struct
219 {
220      MV_U8*         bufVirtPtr;
221      MV_ULONG   bufPhysAddr;
222      MV_U32     bufSize;
223      MV_U32     dataSize;
224      MV_U32             memHandle;
225          MV_32      bufAddrShift;
226 } MV_BUF_INFO;
227
228 /* This structure contains information describing Ethernet packet.
229  * The packet can be divided for few buffers (fragments)
230  */
231 typedef struct
232 {
233     MV_ULONG    osInfo;
234     MV_BUF_INFO *pFrags;
235     MV_U32      status;
236     MV_U16      pktSize;
237     MV_U16      numFrags;
238     MV_U32      ownerId;
239     MV_U32      fragIP;
240 } MV_PKT_INFO;
241
242 #endif /* MV_ASMLANGUAGE */
243
244 #endif /* __INCmvTypesh */
245