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) 2006-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 #ifndef DRV_GLOBAL_H 96 #define DRV_GLOBAL_H 97 98 #include "datatype.h" 99 100 /********************************************************************************/ 101 /* Macro */ 102 /********************************************************************************/ 103 104 typedef U8 MS_REG_INIT; 105 106 #define _RV1(addr, value) (((addr) >> 8) & 0x3F), (U8)(addr), (U8)(value) 107 #define _RV2(addr, value) 0x40 + _RV1(addr, value), (U8)((value) >> 8) 108 #define _RV3(addr, value) 0x40 + _RV2(addr, value), (U8)((value) >> 16) 109 #define _RV4(addr, value) 0x40 + _RV3(addr, value), (U8)((value) >> 24) 110 111 112 #define _RV32_1(addr, value) (U8)(((addr) >> 16) & 0xFF),(U8)(((addr) >> 8) & 0xFF), (U8)(addr), (U8)(value) 113 #define _RV32_2(addr, value) 0x20 + _RV32_1(addr, value), (U8)((value) >> 8) 114 #define _RV32_3(addr, value) 0x20 + _RV32_2(addr, value), (U8)((value) >> 16) 115 #define _RV32_4(addr, value) 0x20 + _RV32_3(addr, value), (U8)((value) >> 24) 116 #define _END_OF_TBL32_ 0xFF, 0xFF, 0xFF 117 118 119 #define _RVM1(addr, value, mask) (((addr) >> 8) & 0x3F), (U8)(addr), (U8)(value), (U8)(mask) 120 #define _RVM2(addr, value, mask) 0x40 + _RVM1(addr, value, mask), (U8)((value) >> 8), (U8)((mask) >> 8) 121 #define _RVM3(addr, value, mask) 0x40 + _RVM2(addr, value, mask), (U8)((value) >> 16), (U8)((mask) >> 16) 122 #define _RVM4(addr, value, mask) 0x40 + _RVM3(addr, value, mask), (U8)((value) >> 24), (U8)((mask) >> 24) 123 124 #define _END_OF_TBL2_ 0xFF, 0xFF 125 126 /******************************************************************************/ 127 /* Function Prototypes */ 128 /******************************************************************************/ 129 130 #ifdef DRV_GLOBAL_C 131 #define INTERFACE 132 #else 133 #define INTERFACE extern 134 #endif 135 136 #define MDrv_ReadByte( u32Reg ) \ 137 (__builtin_constant_p( u32Reg ) ? \ 138 (((u32Reg) & 0x01) ? RIU8[(u32Reg) * 2 - 1] : RIU8[(u32Reg) * 2]) : \ 139 __MDrv_ReadByte( u32Reg )) 140 141 #define MDrv_Read2Byte( u32Reg ) \ 142 (__builtin_constant_p( u32Reg ) && !((u32Reg) & 0x01) ? \ 143 RIU[u32Reg] : __MDrv_Read2Byte( u32Reg )) 144 145 #define MDrv_Read3Byte( u32Reg ) __MDrv_Read3Byte( u32Reg ) 146 147 #define MDrv_Read4Byte( u32Reg ) \ 148 ({ \ 149 U32 value; \ 150 if ( __builtin_constant_p( u32Reg ) && !((u32Reg) & 0x01) ) \ 151 { \ 152 value = ((U32)RIU[(u32Reg) + 2] << 16) | RIU[u32Reg]; \ 153 } \ 154 else \ 155 { \ 156 value = __MDrv_Read4Byte( u32Reg ); \ 157 } \ 158 value; \ 159 }) 160 161 #define MDrv_ReadRegBit( u32Reg, u8Mask ) \ 162 (RIU8[(u32Reg) * 2 - ((u32Reg) & 1)] & (u8Mask)) 163 164 #define MDrv_WriteRegBit( u32Reg, bEnable, u8Mask ) \ 165 MST_MACRO_START \ 166 U32 u32Reg8 = ((u32Reg) * 2) - ((u32Reg) & 1); \ 167 RIU8[u32Reg8] = (bEnable) ? (RIU8[u32Reg8] | (u8Mask)) : \ 168 (RIU8[u32Reg8] & ~(u8Mask)); \ 169 MST_MACRO_END 170 171 #define MDrv_WriteByte( u32Reg, u8Val ) \ 172 MST_MACRO_START \ 173 if ( __builtin_constant_p( u32Reg ) ) \ 174 { \ 175 RIU8[((u32Reg) * 2) - ((u32Reg) & 1)] = u8Val; \ 176 } \ 177 else \ 178 { \ 179 __MDrv_WriteByte( u32Reg, u8Val ); \ 180 } \ 181 MST_MACRO_END 182 183 #define MDrv_Write2Byte( u32Reg, u16Val ) \ 184 MST_MACRO_START \ 185 if ( __builtin_constant_p( u32Reg ) ) \ 186 { \ 187 if ( ((u32Reg) & 0x01) ) \ 188 { \ 189 RIU8[((u32Reg) * 2) - 1] = (U8)((u16Val)); \ 190 RIU8[((u32Reg) + 1) * 2] = (U8)((u16Val) >> 8); \ 191 } \ 192 else \ 193 { \ 194 RIU[u32Reg] = u16Val; \ 195 } \ 196 } \ 197 else \ 198 { \ 199 __MDrv_Write2Byte( u32Reg, u16Val ); \ 200 } \ 201 MST_MACRO_END 202 203 #define MDrv_Write3Byte( u32Reg, u32Val ) __MDrv_Write3Byte( u32Reg, u32Val ) 204 205 #define MDrv_Write4Byte( u32Reg, u32Val ) \ 206 MST_MACRO_START \ 207 if ( __builtin_constant_p( u32Reg ) && !((u32Reg) & 0x01) ) \ 208 { \ 209 RIU[u32Reg] = (U16)(u32Val); \ 210 RIU[(u32Reg) + 2] = (U16)((u32Val) >> 16); \ 211 } \ 212 else \ 213 { \ 214 __MDrv_Write4Byte( u32Reg, u32Val ); \ 215 } \ 216 MST_MACRO_END 217 218 #define MDrv_WriteByteMask( u32Reg, u8Val, u8Msk ) \ 219 MST_MACRO_START \ 220 U32 u32Reg8 = ((u32Reg) * 2) - ((u32Reg) & 1); \ 221 RIU8[u32Reg8] = (RIU8[u32Reg8] & ~(u8Msk)) | ((u8Val) & (u8Msk)); \ 222 MST_MACRO_END 223 224 INTERFACE U8 __MDrv_ReadByte( U32 u32Reg ); 225 INTERFACE U16 __MDrv_Read2Byte( U32 u32Reg ); 226 INTERFACE U32 __MDrv_Read3Byte( U32 u32Reg ); 227 INTERFACE U32 __MDrv_Read4Byte( U32 u32Reg ); 228 229 INTERFACE void __MDrv_WriteByte( U32 u32Reg, U8 u8Val ); 230 INTERFACE void __MDrv_Write2Byte( U32 u32Reg, U16 u16Val ); 231 INTERFACE void __MDrv_Write3Byte( U32 u32Reg, U32 u32Val ); 232 INTERFACE void __MDrv_Write4Byte( U32 u32Reg, U32 u32Val ); 233 234 INTERFACE void MDrv_WriteRegTbl ( const MS_REG_INIT *pRegTable ); 235 INTERFACE void MDrv_WriteRegTbl_32 ( const MS_REG_INIT *pRegTable ); 236 237 #define MDrv_WriteRegTbl2( pRegTable ) MDrv_WriteRegTbl( pRegTable ) 238 239 #undef INTERFACE 240 241 #endif /* DRV_GLOBAL_H */ 242