xref: /utopia/UTPA2-700.0.x/modules/mbx/hal/mooney/mbx/halMBX.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 //<MStar Software>
2 //******************************************************************************
3 // MStar Software
4 // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5 // All software, firmware and related documentation herein ("MStar Software") are
6 // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7 // law, including, but not limited to, copyright law and international treaties.
8 // Any use, modification, reproduction, retransmission, or republication of all
9 // or part of MStar Software is expressly prohibited, unless prior written
10 // permission has been granted by MStar.
11 //
12 // By accessing, browsing and/or using MStar Software, you acknowledge that you
13 // have read, understood, and agree, to be bound by below terms ("Terms") and to
14 // comply with all applicable laws and regulations:
15 //
16 // 1. MStar shall retain any and all right, ownership and interest to MStar
17 //    Software and any modification/derivatives thereof.
18 //    No right, ownership, or interest to MStar Software and any
19 //    modification/derivatives thereof is transferred to you under Terms.
20 //
21 // 2. You understand that MStar Software might include, incorporate or be
22 //    supplied together with third party`s software and the use of MStar
23 //    Software may require additional licenses from third parties.
24 //    Therefore, you hereby agree it is your sole responsibility to separately
25 //    obtain any and all third party right and license necessary for your use of
26 //    such third party`s software.
27 //
28 // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29 //    MStar`s confidential information and you agree to keep MStar`s
30 //    confidential information in strictest confidence and not disclose to any
31 //    third party.
32 //
33 // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34 //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35 //    without limitation, any warranties of merchantability, non-infringement of
36 //    intellectual property rights, fitness for a particular purpose, error free
37 //    and in conformity with any international standard.  You agree to waive any
38 //    claim against MStar for any loss, damage, cost or expense that you may
39 //    incur related to your use of MStar Software.
40 //    In no event shall MStar be liable for any direct, indirect, incidental or
41 //    consequential damages, including without limitation, lost of profit or
42 //    revenues, lost or damage of data, and unauthorized system use.
43 //    You agree that this Section 4 shall still apply without being affected
44 //    even if MStar Software has been modified by MStar in accordance with your
45 //    request or instruction for your use, except otherwise agreed by both
46 //    parties in writing.
47 //
48 // 5. If requested, MStar may from time to time provide technical supports or
49 //    services in relation with MStar Software to you for your use of
50 //    MStar Software in conjunction with your or your customer`s product
51 //    ("Services").
52 //    You understand and agree that, except otherwise agreed by both parties in
53 //    writing, Services are provided on an "AS IS" basis and the warranty
54 //    disclaimer set forth in Section 4 above shall apply.
55 //
56 // 6. Nothing contained herein shall be construed as by implication, estoppels
57 //    or otherwise:
58 //    (a) conferring any license or right to use MStar name, trademark, service
59 //        mark, symbol or any other identification;
60 //    (b) obligating MStar or any of its affiliates to furnish any person,
61 //        including without limitation, you and your customers, any assistance
62 //        of any kind whatsoever, or any information; or
63 //    (c) conferring any license or right under any intellectual property right.
64 //
65 // 7. These terms shall be governed by and construed in accordance with the laws
66 //    of Taiwan, R.O.C., excluding its conflict of law rules.
67 //    Any and all dispute arising out hereof or related hereto shall be finally
68 //    settled by arbitration referred to the Chinese Arbitration Association,
69 //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70 //    Rules of the Association by three (3) arbitrators appointed in accordance
71 //    with the said Rules.
72 //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73 //    be English.
74 //    The arbitration award shall be final and binding to both parties.
75 //
76 //******************************************************************************
77 //<MStar Software>
78 ////////////////////////////////////////////////////////////////////////////////
79 //
80 // Copyright (c) 2008-2009 MStar Semiconductor, Inc.
81 // All rights reserved.
82 //
83 // Unless otherwise stipulated in writing, any and all information contained
84 // herein regardless in any format shall remain the sole proprietary of
85 // MStar Semiconductor Inc. and be kept in strict confidence
86 // ("MStar Confidential Information") by the recipient.
87 // Any unauthorized act including without limitation unauthorized disclosure,
88 // copying, use, reproduction, sale, distribution, modification, disassembling,
89 // reverse engineering and compiling of the contents of MStar Confidential
90 // Information is unlawful and strictly prohibited. MStar hereby reserves the
91 // rights to any and all damages, losses, costs and expenses resulting therefrom.
92 //
93 ////////////////////////////////////////////////////////////////////////////////
94 
95 ///////////////////////////////////////////////////////////////////////////////////////////////////
96 /// @file   halMBX.h
97 /// @brief  MStar Mailbox HAL Driver DDI
98 /// @author MStar Semiconductor Inc.
99 /// @attention
100 /// <b><em></em></b>
101 ///////////////////////////////////////////////////////////////////////////////////////////////////
102 
103 #ifndef _HAL_MBX_H
104 #define _HAL_MBX_H
105 
106 #ifdef _HAL_MBX_C
107 #define INTERFACE
108 #else
109 #define INTERFACE extern
110 #endif
111 
112 //=============================================================================
113 // Includs
114 //=============================================================================
115 
116 //=============================================================================
117 // Defines & Macros
118 
119 //=============================================================================
120 //busy bit Set/Clear/Get
121 #define   _BUSY_S(arg)  {\
122                             MS_U8 val; \
123                             val = REG8_MBX_GROUP(arg, REG8_MBX_STATE_1);\
124                             REG8_MBX_GROUP(arg, REG8_MBX_STATE_1) = val | MBX_STATE1_BUSY;\
125                          }
126 
127 #define   _BUSY_C(arg)  {\
128                             MS_U8 val; \
129                             val = REG8_MBX_GROUP(arg, REG8_MBX_STATE_1);\
130                             REG8_MBX_GROUP(arg, REG8_MBX_STATE_1) = val & ~MBX_STATE1_BUSY;\
131                          }
132 
133 #define   _BUSY(arg)    (REG8_MBX_GROUP(arg, REG8_MBX_STATE_1) & MBX_STATE1_BUSY);
134 
135 //////////////////////////////////////////////////////////////
136 //error bit Set/Clear/Get
137 #define   _ERR_S(arg)   {\
138                             MS_U8 val;\
139                             val = REG8_MBX_GROUP(arg, REG8_MBX_STATE_1);\
140                             REG8_MBX_GROUP(arg, REG8_MBX_STATE_1) = val | MBX_STATE1_ERROR;\
141                          }
142 
143 #define   _ERR_C(arg)   {\
144                             MS_U8 val;\
145                             val = REG8_MBX_GROUP(arg, REG8_MBX_STATE_1);\
146                             REG8_MBX_GROUP(arg, REG8_MBX_STATE_1) = val & ~MBX_STATE1_ERROR;\
147                          }
148 
149 #define   _ERR(arg)    (REG8_MBX_GROUP(arg, REG8_MBX_STATE_1) & MBX_STATE1_ERROR)
150 
151 //////////////////////////////////////////////////////////////
152 //disabled bit Set/Clear/Get
153 #define   _DISABLED_S(arg)   {\
154                             MS_U8 val;\
155                             val = REG8_MBX_GROUP(arg, REG8_MBX_STATE_1);\
156                             REG8_MBX_GROUP(arg, REG8_MBX_STATE_1) = val | MBX_STATE1_DISABLED;\
157                          }
158 
159 #define   _DISABLED_C(arg)   {\
160                             MS_U8 val;\
161                             val = REG8_MBX_GROUP(arg, REG8_MBX_STATE_1);\
162                             REG8_MBX_GROUP(arg, REG8_MBX_STATE_1) = val & ~MBX_STATE1_DISABLED;\
163                          }
164 
165 #define   _DISABLED(arg)    (REG8_MBX_GROUP(arg, REG8_MBX_STATE_1) & MBX_STATE1_DISABLED)
166 
167 ////////////////////////////////////////////////////////////////////////
168 //overflow bit Set/Clear/Get
169 #define   _OVERFLOW_S(arg)  {\
170                                 MS_U8 val;\
171                                 val = REG8_MBX_GROUP(arg, REG8_MBX_STATE_1);\
172                                 REG8_MBX_GROUP(arg, REG8_MBX_STATE_1) = val | MBX_STATE1_OVERFLOW;\
173                               }
174 
175 #define   _OVERFLOW_C(arg)  {\
176                                 MS_U8 val;\
177                                 val = REG8_MBX_GROUP(arg, REG8_MBX_STATE_1);\
178                                 REG8_MBX_GROUP(arg, REG8_MBX_STATE_1) = val & ~MBX_STATE1_OVERFLOW;\
179                               }
180 
181 #define   _OVERFLOW(arg)   (REG8_MBX_GROUP(arg, REG8_MBX_STATE_1) & MBX_STATE1_OVERFLOW)
182 
183 ////////////////////////////////////////////////////////////////////////
184 //status bit clear
185 #define   _S1_C(arg)   {\
186                             MS_U8 val;\
187                             val = REG8_MBX_GROUP(arg, REG8_MBX_STATE_1);\
188                             REG8_MBX_GROUP(arg, REG8_MBX_STATE_1) = val & ~(MBX_STATE1_DISABLED | MBX_STATE1_OVERFLOW | MBX_STATE1_ERROR | MBX_STATE1_BUSY);\
189                         }
190 
191 ////////////////////////////////////////////////////////////////////////
192 //fire bit Set/Clear/Get
193 #define   _FIRE_S(arg)  {\
194                             MS_U8 val;\
195                             val = REG8_MBX_GROUP(arg, REG8_MBX_CTRL);\
196                             REG8_MBX_GROUP(arg, REG8_MBX_CTRL) = val | MBX_CTRL_FIRE;\
197                          }
198 
199 #define   _FIRE_C(arg)  {\
200                             MS_U8 val;\
201                             val = REG8_MBX_GROUP(arg, REG8_MBX_CTRL);\
202                             REG8_MBX_GROUP(arg, REG8_MBX_CTRL) = val & ~MBX_CTRL_FIRE;\
203                          }
204 
205 #define   _FIRE(arg)   (REG8_MBX_GROUP(arg, REG8_MBX_CTRL) & MBX_CTRL_FIRE)
206 
207 ////////////////////////////////////////////////////////////////////////
208 //readback bit Set/Clear/Get
209 #define   _READBACK_S(arg)   {\
210                                   MS_U8 val;\
211                                   val = REG8_MBX_GROUP(arg, REG8_MBX_CTRL);\
212                                   REG8_MBX_GROUP(arg, REG8_MBX_CTRL) = val | MBX_CTRL_READBACK;\
213                                }
214 
215 #define   _READBACK_C(arg)   {\
216                                   MS_U8 val;\
217                                   val = REG8_MBX_GROUP(arg, REG8_MBX_CTRL);\
218                                   REG8_MBX_GROUP(arg, REG8_MBX_CTRL) = val & ~MBX_CTRL_READBACK;\
219                                }
220 
221 #define   _READBACK(arg)   (REG8_MBX_GROUP(arg, REG8_MBX_CTRL) & MBX_CTRL_READBACK)
222 
223 ////////////////////////////////////////////////////////////////////////
224 //instant bit Set/Clear/Get
225 #define   _INSTANT_S(arg)   {\
226                                   MS_U8 val;\
227                                   val = REG8_MBX_GROUP(arg, REG8_MBX_CTRL);\
228                                   REG8_MBX_GROUP(arg, REG8_MBX_CTRL) = val | MBX_CTRL_INSTANT;\
229                               }
230 
231 #define   _INSTANT_C(arg)   {\
232                                   MS_U8 val;\
233                                   val = REG8_MBX_GROUP(arg, REG8_MBX_CTRL);\
234                                   REG8_MBX_GROUP(arg, REG8_MBX_CTRL) = val & ~MBX_CTRL_INSTANT;\
235                               }
236 
237 #define   _INSTANT(arg)   (REG8_MBX_GROUP(arg, REG8_MBX_CTRL) & MBX_CTRL_INSTANT)
238 
239 //=============================================================================
240 // Type and Structure Declaration
241 //=============================================================================
242 
243 //=============================================================================
244 // Enums
245 /// MBX HAL Recv Status Define
246 typedef enum
247 {
248     /// Recv Success
249     E_MBXHAL_RECV_SUCCESS = 0,
250     /// Recv Error: OverFlow
251     E_MBXHAL_RECV_OVERFLOW = 1,
252     /// Recv Error: Not Enabled
253     E_MBXHAL_RECV_DISABLED = 2,
254 } MBXHAL_Recv_Status;
255 
256 /// MBX HAL Fire Status Define
257 typedef enum
258 {
259     /// Fire Success
260     E_MBXHAL_FIRE_SUCCESS = 0,
261     /// Still Firing
262     E_MBXHAL_FIRE_ONGOING = 1,
263     /// Fire Error: Overflow:
264     E_MBXHAL_FIRE_OVERFLOW = 2,
265     /// Fire Error: Not Enabled
266     E_MBXHAL_FIRE_DISABLED = 3,
267 } MBXHAL_Fire_Status;
268 
269 //=============================================================================
270 // Mailbox HAL Driver Function
271 //=============================================================================
272 
273 INTERFACE MBX_Result MHAL_MBX_ClearAll (MBX_Msg* pMbxMsg, MBX_ROLE_ID eSrcRole);
274 
275 INTERFACE MBX_Result MHAL_MBX_Init(MBX_ROLE_ID eHostRole, MS_VIRT virtRIUBaseAddrMBX);
276 INTERFACE MBX_Result MHAL_MBX_SetConfig(MBX_ROLE_ID eHostRole);
277 
278 INTERFACE MBX_Result MHAL_MBX_SetInformation(MBX_ROLE_ID eTargetRole, MS_VIRT virtRIUBaseAddrMBX, MS_U8 *pU8Info, MS_U8 u8Size);
279 INTERFACE MBX_Result MHAL_MBX_GetInformation(MBX_ROLE_ID eTargetRole, MS_VIRT virtRIUBaseAddrMBX, MS_U8 *pU8Info, MS_U8 u8Size);
280 
281 INTERFACE MBX_Result MHAL_MBX_Fire(MBX_Msg* pMbxMsg, MBX_ROLE_ID eSrcRole);
282 INTERFACE MBX_Result MHAL_MBX_GetFireStatus(MBX_ROLE_ID eSrcRole, MBX_ROLE_ID eDstRole, MBXHAL_Fire_Status *pFireStatus);
283 
284 INTERFACE MBX_Result MHAL_MBX_Recv(MBX_Msg* pMbxMsg, MBX_ROLE_ID eDstRole);
285 INTERFACE MBX_Result MHAL_MBX_RecvEnd(MBX_ROLE_ID eSrcRole, MBX_ROLE_ID eDstRole, MBXHAL_Recv_Status eRecvSatus);
286 
287 #undef INTERFACE
288 #endif //_HAL_MBX_H
289 
290