| 1 | /*************************************************************************** |
|---|
| 2 | * Copyright (c) 2003-2012, Broadcom Corporation |
|---|
| 3 | * All Rights Reserved |
|---|
| 4 | * Confidential Property of Broadcom Corporation |
|---|
| 5 | * |
|---|
| 6 | * THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE |
|---|
| 7 | * AGREEMENT BETWEEN THE USER AND BROADCOM. YOU HAVE NO RIGHT TO USE OR |
|---|
| 8 | * EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT. |
|---|
| 9 | * |
|---|
| 10 | * $brcm_Workfile: bvdc_priv.h $ |
|---|
| 11 | * $brcm_Revision: Hydra_Software_Devel/120 $ |
|---|
| 12 | * $brcm_Date: 3/1/12 11:46a $ |
|---|
| 13 | * |
|---|
| 14 | * Module Description: |
|---|
| 15 | * |
|---|
| 16 | * Revision History: |
|---|
| 17 | * |
|---|
| 18 | * $brcm_Log: /magnum/portinginterface/vdc/7038/bvdc_priv.h $ |
|---|
| 19 | * |
|---|
| 20 | * Hydra_Software_Devel/120 3/1/12 11:46a yuxiaz |
|---|
| 21 | * SW7425-2526, SW7425-1182: Added runtime query capabilities for source |
|---|
| 22 | * in VDC. |
|---|
| 23 | * |
|---|
| 24 | * Hydra_Software_Devel/119 1/13/12 2:51p tdo |
|---|
| 25 | * SW7358-159 , SW7418-55 : Default DAC auto detection ON for |
|---|
| 26 | * 7231/7344/7346Bx |
|---|
| 27 | * |
|---|
| 28 | * Hydra_Software_Devel/118 12/1/11 4:33p yuxiaz |
|---|
| 29 | * SW7425-968, SW7344-95: Merged into mainline.: added independent source |
|---|
| 30 | * clipping of right window in 3D mode. |
|---|
| 31 | * |
|---|
| 32 | * Hydra_Software_Devel/117 11/18/11 3:09p yuxiaz |
|---|
| 33 | * SW7420-2135: Move MAX number of RULs defines to bvdc_common_priv.h |
|---|
| 34 | * |
|---|
| 35 | * Hydra_Software_Devel/116 10/14/11 2:23p tdo |
|---|
| 36 | * SW7425-1416, SW7358-159: Add feature to control automatic DAC |
|---|
| 37 | * detection. Default is currently OFF until it's fully functional. |
|---|
| 38 | * |
|---|
| 39 | * Hydra_Software_Devel/115 8/31/11 11:19a syang |
|---|
| 40 | * SW7425-1170: pxlAspRatio passed to ViCE2 is corrected to x<<16 | y |
|---|
| 41 | * format |
|---|
| 42 | * |
|---|
| 43 | * Hydra_Software_Devel/114 8/26/11 5:38p syang |
|---|
| 44 | * SW7425-1170: merge from branch SW7572-1170 |
|---|
| 45 | * |
|---|
| 46 | * Hydra_Software_Devel/SW7425-1170/2 8/26/11 4:22p syang |
|---|
| 47 | * SW7425-1170: refactor pixel aspect ratio related code |
|---|
| 48 | * |
|---|
| 49 | * Hydra_Software_Devel/SW7425-1170/1 8/23/11 6:20p vanessah |
|---|
| 50 | * SW7425-1170: Aspect ratio cleanup |
|---|
| 51 | * |
|---|
| 52 | * Hydra_Software_Devel/113 8/4/11 7:20p tdo |
|---|
| 53 | * SW7425-979: Add support for 7425B0 DAC name change |
|---|
| 54 | * |
|---|
| 55 | * Hydra_Software_Devel/112 7/22/11 4:56p tdo |
|---|
| 56 | * SW7422-194: implement 40nm vDAC scaled voltage swing and auto-detection |
|---|
| 57 | * to reduce power dissipation |
|---|
| 58 | * |
|---|
| 59 | * Hydra_Software_Devel/111 2/9/11 3:35p pntruong |
|---|
| 60 | * SW7420-1456: Initial standby power management that used chp's pm |
|---|
| 61 | * functionalities. |
|---|
| 62 | * |
|---|
| 63 | * Hydra_Software_Devel/110 11/12/10 3:56p pntruong |
|---|
| 64 | * SW7425-31: Takes bvn yuv into account for hddvi input. Fixed bad debug |
|---|
| 65 | * register read on non-mfd source. Updated scratch registers |
|---|
| 66 | * availabliity. |
|---|
| 67 | * |
|---|
| 68 | * Hydra_Software_Devel/109 10/20/10 4:11p yuxiaz |
|---|
| 69 | * SW7420-1190: Put back generic VDC drian buffer for mosaic mode. Only |
|---|
| 70 | * allocate drain buffer in window if it does not use main VDC heap. |
|---|
| 71 | * |
|---|
| 72 | * Hydra_Software_Devel/108 10/19/10 4:07p yuxiaz |
|---|
| 73 | * SW7420-1190: Make mosaic scratch buffer to be per window base. |
|---|
| 74 | * |
|---|
| 75 | * Hydra_Software_Devel/107 8/26/10 5:27p tdo |
|---|
| 76 | * SW7422-57: Add simple vdc support |
|---|
| 77 | * |
|---|
| 78 | * Hydra_Software_Devel/106 6/23/10 4:59p rpan |
|---|
| 79 | * SW7400-2808: Stop enabling BVN while aligning VECs. |
|---|
| 80 | * |
|---|
| 81 | * Hydra_Software_Devel/105 5/7/10 7:19p albertl |
|---|
| 82 | * SW7125-364: Changed dirty bits to use union structure to avoid type-pun |
|---|
| 83 | * warnings |
|---|
| 84 | * |
|---|
| 85 | * Hydra_Software_Devel/104 4/19/10 10:18p tdo |
|---|
| 86 | * SW3548-2814: Improvements to VDC ulBlackMagic. Move |
|---|
| 87 | * BDBG_OBJECT_ID_DECLARE private header files instead of .c. |
|---|
| 88 | * |
|---|
| 89 | * Hydra_Software_Devel/103 4/7/10 11:34a tdo |
|---|
| 90 | * SW3548-2814: Improvements to VDC ulBlackMagic. Rename TLA |
|---|
| 91 | * |
|---|
| 92 | * Hydra_Software_Devel/102 4/5/10 4:13p tdo |
|---|
| 93 | * SW3548-2814: Improvements to VDC ulBlackMagic |
|---|
| 94 | * |
|---|
| 95 | * Hydra_Software_Devel/101 8/21/09 2:37p tdo |
|---|
| 96 | * PR57734: Add capability for display to handle DACs re-assignment |
|---|
| 97 | * |
|---|
| 98 | * Hydra_Software_Devel/100 6/25/09 12:11p rpan |
|---|
| 99 | * PR56137, PR56138, PR56139, PR56166, PR56167, PR56168: Support for |
|---|
| 100 | * various orthogonal VEC configurations. |
|---|
| 101 | * |
|---|
| 102 | * Hydra_Software_Devel/99 6/18/09 5:54p syang |
|---|
| 103 | * PR 55812: add 7550 support |
|---|
| 104 | * |
|---|
| 105 | * Hydra_Software_Devel/98 6/5/09 3:08p pntruong |
|---|
| 106 | * PR54615: [M+T][LCD][VIDEO] Pink gargabe blinks on DTV. Ensured that |
|---|
| 107 | * the window shutdown process go thru upon destroy. |
|---|
| 108 | * |
|---|
| 109 | * Hydra_Software_Devel/97 2/17/09 2:33p rpan |
|---|
| 110 | * PR52001: Added 7420 DAC connection state for power management. |
|---|
| 111 | * |
|---|
| 112 | * Hydra_Software_Devel/96 2/10/09 4:47p rpan |
|---|
| 113 | * PR52001: Added 7420 DAC power management. |
|---|
| 114 | * |
|---|
| 115 | * Hydra_Software_Devel/95 11/12/08 3:14p tdo |
|---|
| 116 | * PR48642: Provide clipping rect for histo luma region |
|---|
| 117 | * |
|---|
| 118 | * Hydra_Software_Devel/94 9/5/08 4:43p tdo |
|---|
| 119 | * PR46484: Bringup appframework for7420 |
|---|
| 120 | * |
|---|
| 121 | * Hydra_Software_Devel/93 8/8/08 3:30p yuxiaz |
|---|
| 122 | * PR45484: Enable Dithering in VDC. |
|---|
| 123 | * |
|---|
| 124 | * Hydra_Software_Devel/92 7/23/08 7:01p tdo |
|---|
| 125 | * PR43508, PR43509: Mapping individual bandgap adjustment for each DAC |
|---|
| 126 | * |
|---|
| 127 | * Hydra_Software_Devel/91 2/29/08 4:19p yuxiaz |
|---|
| 128 | * PR39158: Implement dithering in various BVN components for 3548. |
|---|
| 129 | * |
|---|
| 130 | * Hydra_Software_Devel/90 2/21/08 5:00p pntruong |
|---|
| 131 | * PR39244: Need drain debugging hooked up to HD_DVI, VDEC, and 656in. |
|---|
| 132 | * Improved code readability. |
|---|
| 133 | * |
|---|
| 134 | * Hydra_Software_Devel/89 10/23/07 11:16a yuxiaz |
|---|
| 135 | * PR29569, PR36290: Add FGT support on 7405. |
|---|
| 136 | * |
|---|
| 137 | * Hydra_Software_Devel/PR29569/1 10/12/07 10:49a yuxiaz |
|---|
| 138 | * PR29569: Add FGT support on 7405 |
|---|
| 139 | * |
|---|
| 140 | * Hydra_Software_Devel/88 2/20/07 2:56p jessem |
|---|
| 141 | * PR25235: Removed the use of rate mask and replaced with actual value of |
|---|
| 142 | * source frame and display refresh rates. |
|---|
| 143 | * |
|---|
| 144 | * Hydra_Software_Devel/87 2/16/07 9:37a pntruong |
|---|
| 145 | * PR15284, PR27951: Graphics shimmering on HD path when video is scaled |
|---|
| 146 | * down (PIG). HW fixed. Removed software work-around to avoid bvb |
|---|
| 147 | * error interrupts from window surface. Make bvdc dbg more portable. |
|---|
| 148 | * |
|---|
| 149 | * Hydra_Software_Devel/86 1/24/07 9:07p albertl |
|---|
| 150 | * PR22237: Updated BMEM calls to use new BMEM_Heap functions. |
|---|
| 151 | * |
|---|
| 152 | * Hydra_Software_Devel/85 12/19/06 3:56p hongtaoz |
|---|
| 153 | * PR25668: added 7403 support for VDC; further consolidate chip specific |
|---|
| 154 | * ifdefs to bvdc_common_priv.h; |
|---|
| 155 | * |
|---|
| 156 | * Hydra_Software_Devel/84 12/18/06 11:19p pntruong |
|---|
| 157 | * PR22577: Merged back to mainline. |
|---|
| 158 | * |
|---|
| 159 | * Hydra_Software_Devel/Refsw_Devel_3563/4 11/22/06 3:51p syang |
|---|
| 160 | * PR 26151: re-write shared resource manager. update letter box, mad, dnr |
|---|
| 161 | * shared-scl acquire/release code accordingly |
|---|
| 162 | * |
|---|
| 163 | * Hydra_Software_Devel/Refsw_Devel_3563/3 11/16/06 1:54p hongtaoz |
|---|
| 164 | * PR25668: merge in vdc support for 7403; |
|---|
| 165 | * |
|---|
| 166 | * Hydra_Software_Devel/Refsw_Devel_3563/2 10/23/06 2:44p tdo |
|---|
| 167 | * PR 23384: Increase MAX_ENTRY_PER_RUL to acomodate 10-bits table size |
|---|
| 168 | * |
|---|
| 169 | * Hydra_Software_Devel/Refsw_Devel_3563/1 9/20/06 6:23p tdo |
|---|
| 170 | * PR 23379, PR 23380, PR 23382, PR 23384: Increase MAX entries per RUL to |
|---|
| 171 | * handle PEP table writes |
|---|
| 172 | * |
|---|
| 173 | * Hydra_Software_Devel/82 8/29/06 11:00a hongtaoz |
|---|
| 174 | * PR23246: add new QDAC support for 3563; centralize some chip-specific |
|---|
| 175 | * display macroes into bvdc_common_priv.h; |
|---|
| 176 | * |
|---|
| 177 | * Hydra_Software_Devel/81 8/22/06 5:36p pntruong |
|---|
| 178 | * PR23674: Support CSC auto detection in HDMI. Added supporting |
|---|
| 179 | * RGB/YCrCb444/YCrCb422 input colorspace. Thru eYCbCrType and |
|---|
| 180 | * eMatrixCoefficients in BAVC_VDC_HdDvi_Picture. |
|---|
| 181 | * |
|---|
| 182 | * Hydra_Software_Devel/80 8/18/06 4:24p albertl |
|---|
| 183 | * PR23117: Added 7440 support. |
|---|
| 184 | * |
|---|
| 185 | * Hydra_Software_Devel/79 8/14/06 1:54p tdo |
|---|
| 186 | * PR 23456: Moving large array of local variables into handle context |
|---|
| 187 | * |
|---|
| 188 | * Hydra_Software_Devel/78 8/7/06 5:32p pntruong |
|---|
| 189 | * PR22577: Initial bringup of VDC. |
|---|
| 190 | * |
|---|
| 191 | * Hydra_Software_Devel/77 7/13/06 10:56a jessem |
|---|
| 192 | * PR 22389: Added BVDC_P_MapSrcFrameRateToVerticalRefreshRate_isr. |
|---|
| 193 | * |
|---|
| 194 | * Hydra_Software_Devel/76 6/15/06 4:45p hongtaoz |
|---|
| 195 | * PR20716, PR21804: support individual mosaic rectangles visibility; |
|---|
| 196 | * |
|---|
| 197 | * Hydra_Software_Devel/75 6/14/06 1:42p syang |
|---|
| 198 | * PR 21689: add support for 7118 |
|---|
| 199 | * |
|---|
| 200 | * Hydra_Software_Devel/74 5/10/06 3:26p jessem |
|---|
| 201 | * PR 17530: Added BTMR_Handle and BTMR_TimerHandle to BVDC_P_Context. |
|---|
| 202 | * |
|---|
| 203 | * Hydra_Software_Devel/73 3/7/06 4:03p syang |
|---|
| 204 | * PR 19670: added 7438 support |
|---|
| 205 | * |
|---|
| 206 | * Hydra_Software_Devel/72 2/9/06 4:15p pntruong |
|---|
| 207 | * PR19270: HDCP glitches at wrap of Sarnoff 1080i DYNPICTS.TRP stream. |
|---|
| 208 | * Update hdmi rate manager in vertical blanking to avoid glitches. |
|---|
| 209 | * |
|---|
| 210 | * Hydra_Software_Devel/70 1/17/06 4:19p hongtaoz |
|---|
| 211 | * PR19082: first compiled for 7400; |
|---|
| 212 | * |
|---|
| 213 | * Hydra_Software_Devel/69 1/12/06 1:33p hongtaoz |
|---|
| 214 | * PR18233: added mosaic mode support; |
|---|
| 215 | * |
|---|
| 216 | * Hydra_Software_Devel/MosaicMode_Feature_PR18233/1 12/8/05 6:50p hongtaoz |
|---|
| 217 | * PR18233: add Mosaic mode support (single window working); |
|---|
| 218 | * |
|---|
| 219 | * Hydra_Software_Devel/68 9/20/05 4:39p pntruong |
|---|
| 220 | * PR17153: Request to implement a full SCART solution for European |
|---|
| 221 | * market. Added flag to control vec swap. |
|---|
| 222 | * |
|---|
| 223 | * Hydra_Software_Devel/67 8/18/05 1:18p pntruong |
|---|
| 224 | * PR15757, PR16391, PR16411, PR12519, PR14791, PR15535, PR15206, PR15778: |
|---|
| 225 | * Improved bandwidth for cropping/scaler/capture/playback. Unified |
|---|
| 226 | * window shutdown sequence for destroy, reconfigure mad/scaler, and/or |
|---|
| 227 | * reconfigure result of source changes. And miscellances fixes from |
|---|
| 228 | * above PRs. |
|---|
| 229 | * |
|---|
| 230 | * Hydra_Software_Devel/XVDPhase1/XVDPhase1_merge/2 8/17/05 5:01p pntruong |
|---|
| 231 | * PR12519: Take in additional fixes from mainline, no need to use crc for |
|---|
| 232 | * drain use vec takeover. |
|---|
| 233 | * |
|---|
| 234 | * Hydra_Software_Devel/XVDPhase1/XVDPhase1_merge/1 8/16/05 2:01p pntruong |
|---|
| 235 | * PR12519: Take in additional fixes from mainline. |
|---|
| 236 | * |
|---|
| 237 | * Hydra_Software_Devel/XVDPhase1/4 5/26/05 5:49p pntruong |
|---|
| 238 | * PR15321, PR15510, PR15560, PR15563: Additional hd_dvi channel change |
|---|
| 239 | * work. |
|---|
| 240 | * |
|---|
| 241 | * Hydra_Software_Devel/XVDPhase1/3 5/6/05 4:00p pntruong |
|---|
| 242 | * PR13121, PR12519: Added support for xvd hd/sd simul mode. |
|---|
| 243 | * |
|---|
| 244 | * Hydra_Software_Devel/XVDPhase1/2 5/3/05 8:34p pntruong |
|---|
| 245 | * PR15084: Additional work on hddvi input format change. |
|---|
| 246 | * |
|---|
| 247 | * Hydra_Software_Devel/XVDPhase1/1 5/2/05 4:54p pntruong |
|---|
| 248 | * PR12519, PR13121, PR15048, PR15084, PR15100: Dynamically re-allocate |
|---|
| 249 | * capture in bvn path to reduce memory consumption and bandwith. |
|---|
| 250 | * |
|---|
| 251 | * Hydra_Software_Devel/1 5/1/05 4:55p pntruong |
|---|
| 252 | * XVDPhase1 branch off. Temp storage so we can keep track of changes. |
|---|
| 253 | * |
|---|
| 254 | * Hydra_Software_Devel/65 4/8/05 3:38p pntruong |
|---|
| 255 | * PR14018, PR14011, PR14450, PR14648: Vec to generate fake trigger when |
|---|
| 256 | * source is pulled or not configured correctly or any condition that |
|---|
| 257 | * cause source to lose trigger. This vec's fake trigger enable the |
|---|
| 258 | * applychanges to go thru, and does not result in timeout. |
|---|
| 259 | * |
|---|
| 260 | * Hydra_Software_Devel/64 3/21/05 3:32p pntruong |
|---|
| 261 | * PR14494: Added reset for bvn blocks at startup. |
|---|
| 262 | * |
|---|
| 263 | * Hydra_Software_Devel/63 3/18/05 6:30p pntruong |
|---|
| 264 | * PR14494: Basic vdc up and running. Background and passed output format |
|---|
| 265 | * switch test. |
|---|
| 266 | * |
|---|
| 267 | * Hydra_Software_Devel/62 3/17/05 6:40p pntruong |
|---|
| 268 | * PR14494: Add preliminary software support to 3560 A0. |
|---|
| 269 | * |
|---|
| 270 | * Hydra_Software_Devel/61 2/22/05 12:53p pntruong |
|---|
| 271 | * PR14046: While in mirror mode with PIP, VDC times out when toggling |
|---|
| 272 | * between analog and digital channel. |
|---|
| 273 | * |
|---|
| 274 | * Hydra_Software_Devel/60 1/26/05 4:53p pntruong |
|---|
| 275 | * PR13450, PR12854, PR13549, PR13617, PR13618, PR13683, PR13321, PR13646, |
|---|
| 276 | * PR13447, PR13429: Disabled vec triggers when vec reset (e.g. format |
|---|
| 277 | * change) to prevent it from continuosly executing same register update |
|---|
| 278 | * list that cause system locked up and/or causing vec errors. |
|---|
| 279 | * |
|---|
| 280 | * Hydra_Software_Devel/59 12/10/04 2:57p pntruong |
|---|
| 281 | * PR1344: Added initial C0 Support for VDC. |
|---|
| 282 | * |
|---|
| 283 | ***************************************************************************/ |
|---|
| 284 | #ifndef BVDC_PRIV_H__ |
|---|
| 285 | #define BVDC_PRIV_H__ |
|---|
| 286 | |
|---|
| 287 | #include "bvdc.h" |
|---|
| 288 | #include "bkni.h" |
|---|
| 289 | #include "bchp_common.h" |
|---|
| 290 | #include "bvdc_common_priv.h" |
|---|
| 291 | #include "bvdc_resource_priv.h" |
|---|
| 292 | #include "bchp_misc.h" |
|---|
| 293 | #include "btmr.h" |
|---|
| 294 | |
|---|
| 295 | #ifdef __cplusplus |
|---|
| 296 | extern "C" { |
|---|
| 297 | #endif |
|---|
| 298 | |
|---|
| 299 | BDBG_OBJECT_ID_DECLARE(BVDC_VDC); |
|---|
| 300 | BDBG_OBJECT_ID_DECLARE(BVDC_SRC); |
|---|
| 301 | BDBG_OBJECT_ID_DECLARE(BVDC_CMP); |
|---|
| 302 | BDBG_OBJECT_ID_DECLARE(BVDC_WIN); |
|---|
| 303 | BDBG_OBJECT_ID_DECLARE(BVDC_DSP); |
|---|
| 304 | |
|---|
| 305 | /* B0 does not support Letterbox Detection and VBI Pass through together */ |
|---|
| 306 | #define B0_NO_LETTERBOX_DETECTION_AND_VBI_PASS_THROUGH_COMBO (1) |
|---|
| 307 | |
|---|
| 308 | /* */ |
|---|
| 309 | #define BVDC_P_SUPPORT_TDAC_VER_0 (0) /* 3563 */ |
|---|
| 310 | #define BVDC_P_SUPPORT_TDAC_VER_1 (1) /* 7401, 7403, 7118 */ |
|---|
| 311 | #define BVDC_P_SUPPORT_TDAC_VER_2 (2) /* 7400 */ |
|---|
| 312 | #define BVDC_P_SUPPORT_TDAC_VER_3 (3) /* 7405A0, 7325 */ |
|---|
| 313 | #define BVDC_P_SUPPORT_TDAC_VER_4 (4) /* 7405Bx, 7335 */ |
|---|
| 314 | #define BVDC_P_SUPPORT_TDAC_VER_5 (5) /* 3548, 3556 */ |
|---|
| 315 | #define BVDC_P_SUPPORT_TDAC_VER_6 (6) /* 7420 */ |
|---|
| 316 | #define BVDC_P_SUPPORT_TDAC_VER_7 (7) /* 7340, 7342 */ |
|---|
| 317 | #define BVDC_P_SUPPORT_TDAC_VER_8 (8) /* 7550: no DAC_BG_CTRL_1 */ |
|---|
| 318 | #define BVDC_P_SUPPORT_TDAC_VER_9 (9) /* 7422: add DAC detection */ |
|---|
| 319 | #define BVDC_P_SUPPORT_TDAC_VER_10 (10) /* 7425 B0: new DAC grouping, DAC detection logic not working */ |
|---|
| 320 | #define BVDC_P_SUPPORT_TDAC_VER_11 (11) /* DAC detection logic working */ |
|---|
| 321 | |
|---|
| 322 | #define BVDC_P_SUPPORT_QDAC_VER_0 (0) |
|---|
| 323 | #define BVDC_P_SUPPORT_QDAC_VER_1 (1) /* 7400, 3563 */ |
|---|
| 324 | |
|---|
| 325 | #ifndef BVDC_SUPPORT_BVN_DEBUG |
|---|
| 326 | #define BVDC_SUPPORT_BVN_DEBUG (0) |
|---|
| 327 | #endif |
|---|
| 328 | |
|---|
| 329 | /* Display cracking macros. */ |
|---|
| 330 | #define BVDC_P_DISP_GET_REG_IDX(reg) \ |
|---|
| 331 | ((BCHP##_##reg - BCHP_MISC_REG_START) / sizeof(uint32_t)) |
|---|
| 332 | |
|---|
| 333 | /* Get/Set reg data */ |
|---|
| 334 | #define BVDC_P_VDC_GET_MISC_REG_DATA(reg) \ |
|---|
| 335 | (hVdc->aulMiscRegs[BVDC_P_DISP_GET_REG_IDX(reg)]) |
|---|
| 336 | |
|---|
| 337 | #define BVDC_P_DISP_GET_REG_DATA(reg) \ |
|---|
| 338 | (hDisplay->hVdc->aulMiscRegs[BVDC_P_DISP_GET_REG_IDX(reg)]) |
|---|
| 339 | #define BVDC_P_DISP_SET_REG_DATA(reg, data) \ |
|---|
| 340 | (BVDC_P_DISP_GET_REG_DATA(reg) = (uint32_t)(data)) |
|---|
| 341 | |
|---|
| 342 | /* Get field */ |
|---|
| 343 | #define BVDC_P_DISP_GET_FIELD_NAME(reg, field) \ |
|---|
| 344 | (BVDC_P_GET_FIELD(BVDC_P_DISP_GET_REG_DATA(reg), reg, field)) |
|---|
| 345 | |
|---|
| 346 | /* Compare field */ |
|---|
| 347 | #define BVDC_P_DISP_COMPARE_FIELD_DATA(reg, field, data) \ |
|---|
| 348 | (BVDC_P_COMPARE_FIELD_DATA(BVDC_P_DISP_GET_REG_DATA(reg), reg, field, (data))) |
|---|
| 349 | #define BVDC_P_DISP_COMPARE_FIELD_NAME(reg, field, name) \ |
|---|
| 350 | (BVDC_P_COMPARE_FIELD_NAME(BVDC_P_DISP_GET_REG_DATA(reg), reg, field, name)) |
|---|
| 351 | |
|---|
| 352 | /* number of registers in one block. */ |
|---|
| 353 | #define BVDC_P_DISP_REGS_COUNT \ |
|---|
| 354 | BVDC_P_REGS_ENTRIES(MISC_REG_START, MISC_REG_END) |
|---|
| 355 | |
|---|
| 356 | /* This macro does a write into RUL (write, addr, data). 3 dwords. */ |
|---|
| 357 | #define BVDC_P_DISP_WRITE_TO_RUL(reg, addr_ptr) \ |
|---|
| 358 | do { \ |
|---|
| 359 | *addr_ptr++ = BRDC_OP_IMM_TO_REG(); \ |
|---|
| 360 | *addr_ptr++ = BRDC_REGISTER(BCHP##_##reg); \ |
|---|
| 361 | *addr_ptr++ = BVDC_P_DISP_GET_REG_DATA(reg); \ |
|---|
| 362 | } while(0) |
|---|
| 363 | |
|---|
| 364 | /* Max length for BVN error msg */ |
|---|
| 365 | #define BVDC_P_ERROR_MAX_MSG_LENGTH (256) |
|---|
| 366 | |
|---|
| 367 | #define BVDC_P_CLIPRECT_PERCENT (10000) |
|---|
| 368 | |
|---|
| 369 | #ifndef BVDC_UINT32_ONLY |
|---|
| 370 | #define uintAR_t uint64_t |
|---|
| 371 | #define BVDC_P_ASPR_FRAC_BITS_NUM (40) |
|---|
| 372 | #else |
|---|
| 373 | #define uintAR_t uint32_t |
|---|
| 374 | /* for well bounded value such as pixel and full aspect ratio value */ |
|---|
| 375 | #define BVDC_P_ASPR_FRAC_BITS_NUM (16) |
|---|
| 376 | #endif |
|---|
| 377 | |
|---|
| 378 | |
|---|
| 379 | /*************************************************************************** |
|---|
| 380 | * VDC Internal data structures |
|---|
| 381 | ***************************************************************************/ |
|---|
| 382 | typedef struct BVDC_P_Context |
|---|
| 383 | { |
|---|
| 384 | BDBG_OBJECT(BVDC_VDC) |
|---|
| 385 | |
|---|
| 386 | /* public fields */ |
|---|
| 387 | BVDC_Settings stSettings; |
|---|
| 388 | |
|---|
| 389 | /* handed down from app. */ |
|---|
| 390 | BCHP_Handle hChip; |
|---|
| 391 | BREG_Handle hRegister; |
|---|
| 392 | BMEM_Heap_Handle hMemory; |
|---|
| 393 | BINT_Handle hInterrupt; |
|---|
| 394 | BRDC_Handle hRdc; |
|---|
| 395 | BTMR_Handle hTmr; |
|---|
| 396 | |
|---|
| 397 | /* Created during BVDC_Open via a call to BVDC_P_InitTimer */ |
|---|
| 398 | BTMR_TimerHandle hTimer; |
|---|
| 399 | |
|---|
| 400 | /* These handle get defer allocation until used by app. */ |
|---|
| 401 | BVDC_Source_Handle ahSource[BVDC_P_MAX_SOURCE_COUNT]; |
|---|
| 402 | BVDC_Display_Handle ahDisplay[BVDC_P_MAX_DISPLAY_COUNT]; |
|---|
| 403 | BVDC_Compositor_Handle ahCompositor[BVDC_P_MAX_COMPOSITOR_COUNT]; |
|---|
| 404 | |
|---|
| 405 | BVDC_P_BufferHeap_Handle hBufferHeap; |
|---|
| 406 | |
|---|
| 407 | /* Allocated hardware resources */ |
|---|
| 408 | const BVDC_P_Features *pFeatures; |
|---|
| 409 | BVDC_P_Resource_Handle hResource; |
|---|
| 410 | |
|---|
| 411 | /* Swap compositor/vec! cmp_0 -> prim vs. cmp_0 -> sec */ |
|---|
| 412 | bool bSwapVec; |
|---|
| 413 | |
|---|
| 414 | /* Store other var that is global to VDC here. If it's has window, |
|---|
| 415 | * compositor, display, or source scope store it in respectives context. */ |
|---|
| 416 | BVDC_Compositor_Handle hCmpCheckSource; |
|---|
| 417 | |
|---|
| 418 | /* Misc register (VEC's top-level registers) */ |
|---|
| 419 | uint32_t aulMiscRegs[BVDC_P_DISP_REGS_COUNT]; |
|---|
| 420 | uint32_t ulInsideCs; |
|---|
| 421 | |
|---|
| 422 | BINT_CallbackHandle ahErrHandlerCb[BVDC_P_ERROR_INTR_CB_COUNT]; |
|---|
| 423 | |
|---|
| 424 | /* HD_DVI register shared between BVDC_P_HdDviId_eHdDvi0 and |
|---|
| 425 | * BVDC_P_HdDviId_eHdDvi1. Need to keep track of it here to |
|---|
| 426 | * work around the RDC read/modify/write problem */ |
|---|
| 427 | uint32_t ulHdDviBvbReg; |
|---|
| 428 | uint32_t ulHdDviChMapReg; |
|---|
| 429 | |
|---|
| 430 | #if BVDC_P_SUPPORT_MOSAIC_MODE |
|---|
| 431 | /* capture drain buffer for mosaic mode, shared by all captures; */ |
|---|
| 432 | void *pvVdcNullBufAddr; |
|---|
| 433 | uint32_t ulVdcNullBufOffset; |
|---|
| 434 | #endif |
|---|
| 435 | |
|---|
| 436 | /* FGT Noise Pixel Pattern Table */ |
|---|
| 437 | uint8_t *pucFgtPatTblAddr; |
|---|
| 438 | |
|---|
| 439 | /* Store the generic BVN error msg */ |
|---|
| 440 | char achBuf[BVDC_P_ERROR_MAX_MSG_LENGTH]; |
|---|
| 441 | uint32_t ulApplyCnt; |
|---|
| 442 | bool bForcePrint; |
|---|
| 443 | |
|---|
| 444 | #if BVDC_P_ORTHOGONAL_VEC |
|---|
| 445 | BVDC_DacOutput aDacOutput[BVDC_P_MAX_DACS]; |
|---|
| 446 | uint32_t aDacDisplay[BVDC_P_MAX_DACS]; |
|---|
| 447 | bool bCalibrated; |
|---|
| 448 | bool bDacDetectionEnable; |
|---|
| 449 | const uint32_t *aulDacGrouping; |
|---|
| 450 | #endif |
|---|
| 451 | |
|---|
| 452 | /* Standby state */ |
|---|
| 453 | bool bStandby; |
|---|
| 454 | |
|---|
| 455 | } BVDC_P_Context; |
|---|
| 456 | |
|---|
| 457 | |
|---|
| 458 | /*************************************************************************** |
|---|
| 459 | * VDC private functions |
|---|
| 460 | ***************************************************************************/ |
|---|
| 461 | void BVDC_P_CompositorDisplay_isr |
|---|
| 462 | ( void *pvParam1, |
|---|
| 463 | int iParam2 ); |
|---|
| 464 | |
|---|
| 465 | void BVDC_P_BuildNoOpsRul_isr |
|---|
| 466 | ( BRDC_List_Handle hList ); |
|---|
| 467 | |
|---|
| 468 | void BVDC_P_ReadListInfo_isr |
|---|
| 469 | ( BVDC_P_ListInfo *pList, |
|---|
| 470 | BRDC_List_Handle hList ); |
|---|
| 471 | |
|---|
| 472 | void BVDC_P_WriteListInfo_isr |
|---|
| 473 | ( const BVDC_P_ListInfo *pList, |
|---|
| 474 | BRDC_List_Handle hList ); |
|---|
| 475 | |
|---|
| 476 | void BVDC_P_Dither_Init |
|---|
| 477 | ( BVDC_P_DitherSetting *pDitherSetting, |
|---|
| 478 | uint32_t ulLfsrCtrlT0, |
|---|
| 479 | uint32_t ulLfsrCtrlT1, |
|---|
| 480 | uint32_t ulLfsrCtrlT2, |
|---|
| 481 | uint32_t ulLfsrValue ); |
|---|
| 482 | |
|---|
| 483 | BERR_Code BVDC_P_CreateErrCb |
|---|
| 484 | ( BVDC_P_Context *pVdc ); |
|---|
| 485 | |
|---|
| 486 | BERR_Code BVDC_P_DestroyErrCb |
|---|
| 487 | ( BVDC_P_Context *pVdc ); |
|---|
| 488 | |
|---|
| 489 | void BVDC_P_CalculateRect_isr |
|---|
| 490 | ( const BVDC_ClipRect *pClipRect, |
|---|
| 491 | uint32_t ulWidth, |
|---|
| 492 | uint32_t ulHeight, |
|---|
| 493 | bool bInterlaced, |
|---|
| 494 | BVDC_P_Rect *pRect ); |
|---|
| 495 | |
|---|
| 496 | bool BVDC_P_CbIsDirty |
|---|
| 497 | (void *pDirty, |
|---|
| 498 | uint32_t ulSize ); |
|---|
| 499 | |
|---|
| 500 | void BVDC_P_CalcuPixelAspectRatio_isr( |
|---|
| 501 | BFMT_AspectRatio eFullAspectRatio, /* full asp ratio enum */ |
|---|
| 502 | uint32_t ulSampleAspectRatioX, /* width of one sampled src pixel */ |
|---|
| 503 | uint32_t ulSampleAspectRatioY, /* height of one sampled src pixel */ |
|---|
| 504 | uint32_t ulFullWidth, /* full asp ratio width */ |
|---|
| 505 | uint32_t ulFullHeight, /* full asp ratio height */ |
|---|
| 506 | const BVDC_P_ClipRect* pAspRatCnvsClip, /* asp rat cnvs clip */ |
|---|
| 507 | uintAR_t * pulPxlAspRatio, /* PxlAspR_int.PxlAspR_frac */ |
|---|
| 508 | uint32_t * pulPxlAspRatio_x_y); /* PxlAspR_x<<16 | PxlAspR_y */ |
|---|
| 509 | |
|---|
| 510 | bool BVDC_P_IsPxlfmtSupported |
|---|
| 511 | (BPXL_Format ePxlFmt); |
|---|
| 512 | |
|---|
| 513 | #ifdef __cplusplus |
|---|
| 514 | } |
|---|
| 515 | #endif |
|---|
| 516 | |
|---|
| 517 | #endif /* #ifndef BVDC_PRIV_H__ */ |
|---|
| 518 | /* End of file. */ |
|---|