source: svn/newcon3bcm2_21bu/magnum/portinginterface/grc/7552/bgrc_coeff_private.c

Last change on this file was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 40.5 KB
Line 
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: bgrc_coeff_private.c $
11 * $brcm_Revision: Hydra_Software_Devel/27 $
12 * $brcm_Date: 1/6/12 1:30p $
13 *
14 * Module Description:
15 *
16 * Revision History:
17 *
18 * $brcm_Log: /magnum/portinginterface/grc/7435/bgrc_coeff_private.c $
19 *
20 * Hydra_Software_Devel/27   1/6/12 1:30p nissen
21 * SW7435-13 : Fixed support for 7435 A0.
22 *
23 * Hydra_Software_Devel/26   12/15/11 6:44p nissen
24 * SW7435-13 : Added support for 7435 A0.
25 *
26 * Hydra_Software_Devel/25   6/9/09 4:13p nissen
27 * PR 52504: Changed global and static variables to constants.
28 *
29 * Hydra_Software_Devel/24   4/7/09 2:45p nissen
30 * PR 52976: Added support for 7635/7630 and future chips using RDB
31 * defines.
32 *
33 * Hydra_Software_Devel/23   2/4/09 10:52a jrubio
34 * PR51629: add more 7336 support
35 *
36 * Hydra_Software_Devel/22   12/3/08 7:04p nissen
37 * PR 47763: Added support for 7420.
38 *
39 * Hydra_Software_Devel/21   7/30/08 8:21p nissen
40 * PR 33687: Added support for the 7601.
41 *
42 * Hydra_Software_Devel/20   4/4/08 12:02p nissen
43 * PR 39460: Added support for the 3556.
44 *
45 * Hydra_Software_Devel/19   2/8/08 2:13p nissen
46 * PR 38945: Added support for the 3548.
47 *
48 * Hydra_Software_Devel/18   2/7/08 12:50p nissen
49 * PR 24618: Added sharper anti-flutter filter coefficient table.
50 *
51 * Hydra_Software_Devel/17   12/4/07 5:25p nissen
52 * PR 36878: Added support for the 7335.
53 *
54 * Hydra_Software_Devel/16   9/19/07 11:30a nissen
55 * PR 34538: Added support for building for the 7325.
56 *
57 * Hydra_Software_Devel/15   9/18/07 1:37p nissen
58 * PR 34852: Added support for building for the 3573.
59 *
60 * Hydra_Software_Devel/14   5/2/07 11:43a nissen
61 * PR 29724: Added support for 7405 A0 including new MacroBlock strip
62 * width setting.
63 *
64 * Hydra_Software_Devel/13   11/15/06 11:45a nissen
65 * PR 25668: Added support for 7403.
66 *
67 * Hydra_Software_Devel/12   9/29/06 10:09a nissen
68 * PR 24618: Added support for second blurryer anti-flutter filter
69 * coefficient table.
70 *
71 * Hydra_Software_Devel/11   9/8/06 3:58p nissen
72 * PR 23517: Added support for 7440.
73 *
74 * Hydra_Software_Devel/10   8/17/06 11:42a nissen
75 * PR 21940: Fixed filter table support for 7118.
76 *
77 * Hydra_Software_Devel/9   8/17/06 11:30a nissen
78 * PR 23179: Added support for building and running on the 3563.
79 *
80 * Hydra_Software_Devel/8   4/20/06 9:57a nissen
81 * PR 20352: Adjusted sharp filter coefficients for 7400 and 7401.
82 *
83 * Hydra_Software_Devel/7   4/13/06 3:37p nissen
84 * PR 20352: Added support for all filter coefficients for 7400 and 7401.
85 *
86 * Hydra_Software_Devel/6   2/21/06 4:40p nissen
87 * PR 19553: Added support for point sample and bilinear filtering for
88 * 7400.
89 *
90 * Hydra_Software_Devel/5   2/1/06 5:36p nissen
91 * PR 19084: Added support for building for the 7400 A0.
92 *
93 * Hydra_Software_Devel/4   1/12/06 6:08p nissen
94 * PR 18761: Added support for BCHP_VER macro.
95 *
96 * Hydra_Software_Devel/3   10/25/05 1:41p nissen
97 * PR 17518: Added new 6-tap 2-phase filter coefficient tables for 7401
98 * (just sharp for now).
99 *
100 * Hydra_Software_Devel/2   2/24/05 1:39p nissen
101 * PR 14207: Added bstd.h include.
102 *
103 * Hydra_Software_Devel/1   9/23/04 2:29p nissen
104 * PR 12729: Filter coefficient tables.
105 *
106 ***************************************************************************/
107
108#include "bstd.h"
109#include "bstd_defs.h"
110#include "berr.h"
111#include "bkni.h"
112
113#if (BCHP_CHIP==7435)
114#include "bchp_m2mc.h"
115#include "bchp_m2mc1.h"
116#else
117#include "bchp_m2mc.h"
118#endif
119
120#include "bgrc.h"
121#include "bgrc_private.h"
122
123/***************************************************************************/
124#define BGRC_M2MC_ENUM(val)   M2MC_##val
125
126/***************************************************************************/
127/* POINT SAMPLE FILTER COEFFICENT TABLE                                    */
128/* Single closest pixel (1 tap) is used, resulting in no filtering.        */
129/* Generates blocky scales.                                                */
130/***************************************************************************/
131const uint32_t BGRC_P_FIRCOEFF_POINTSAMPLE[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
132{
133#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
134        {
135                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0000 ) |
136                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0000 ),
137                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0100 )
138        },
139        {
140                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0000 ) |
141                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x0000 ),
142                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0100 ) 
143        }
144#else
145        { 0x00000000, 0x00000000, 0x10000000, 0x00000000 },
146        { 0x00000000, 0x00000000, 0x10000000, 0x00000000 },
147        { 0x00000000, 0x00000000, 0x10000000, 0x00000000 },
148        { 0x00000000, 0x00000000, 0x10000000, 0x00000000 },
149        { 0x00000000, 0x00000000, 0x10000000, 0x00000000 },
150        { 0x00000000, 0x00000000, 0x10000000, 0x00000000 },
151        { 0x00000000, 0x00000000, 0x10000000, 0x00000000 },
152        { 0x00000000, 0x00000000, 0x10000000, 0x00000000 }
153#endif
154};
155
156/***************************************************************************/
157/* BILINEAR FILTER COEFFICENT TABLE                                        */
158/* Closest pixel is filtered with its neighbor (2 taps) using coefficients */
159/* derived from the pixel position. Generates slightly blurry up-scales.   */
160/***************************************************************************/
161const uint32_t BGRC_P_FIRCOEFF_BILINEAR[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
162{
163#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
164        {
165                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0000 ) |
166                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0000 ),
167                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0100 )
168        },
169        {
170                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0000 ) |
171                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x0000 ),
172                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0080 ) 
173        }
174#else
175        { 0x00000000, 0x00000000, 0x10000000, 0x00000000 }, 
176        { 0x00000000, 0x00000200, 0x0E000000, 0x00000000 }, 
177        { 0x00000000, 0x00000400, 0x0C000000, 0x00000000 }, 
178        { 0x00000000, 0x00000600, 0x0A000000, 0x00000000 }, 
179        { 0x00000000, 0x00000800, 0x08000000, 0x00000000 }, 
180        { 0x00000000, 0x00000A00, 0x06000000, 0x00000000 }, 
181        { 0x00000000, 0x00000C00, 0x04000000, 0x00000000 }, 
182        { 0x00000000, 0x00000E00, 0x02000000, 0x00000000 }
183#endif
184};
185
186/***************************************************************************/
187/* BLURRY FILTER COEFFICENT TABLE                                          */
188/* Closest pixel is filtered with two closet neighbors (3-4 tap).          */
189/* Similar to bilinear except blurryer.                                    */
190/***************************************************************************/
191const uint32_t BGRC_P_FIRCOEFF_BLURRY_3to1[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
192{
193#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
194        {
195                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0000 ) |
196                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0055 ),
197                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0056 )
198        },
199        {
200                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0000 ) |
201                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x002b ),
202                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0055 ) 
203        }
204#else
205        { 0x00000000, 0x00000554, 0x05580554, 0x00000000 }, 
206        { 0x00000000, 0x00AC0554, 0x055404AC, 0x00000000 }, 
207        { 0x00000000, 0x01540554, 0x05580400, 0x00000000 }, 
208        { 0x00000000, 0x02000554, 0x05580354, 0x00000000 }, 
209        { 0x00000000, 0x02AC0554, 0x055402AC, 0x00000000 }, 
210        { 0x00000000, 0x03540554, 0x05580200, 0x00000000 }, 
211        { 0x00000000, 0x04000554, 0x05580154, 0x00000000 }, 
212        { 0x00000000, 0x04AC0554, 0x055400AC, 0x00000000 }
213#endif
214};
215
216/***************************************************************************/
217/* ANISOTROPIC FILTER COEFFICENT TABLES                                    */
218/* Closest pixel is area filtered with its neighbors (up to 8 taps).       */
219/* This filter is the same as bilinear when up-scaling.                    */
220/* When down-scaling, the amount of taps used depends on the scale factor. */
221/***************************************************************************/
222const uint32_t BGRC_P_FIRCOEFF_ANISOTROPIC_1to1[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
223{
224#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
225        {
226                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0000 ) |
227                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0000 ),
228                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0100 )
229        },
230        {
231                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0000 ) |
232                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x0000 ),
233                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0080 ) 
234        }
235#else
236        { 0x00000000, 0x00000000, 0x10000000, 0x00000000 }, 
237        { 0x00000000, 0x00000200, 0x0E000000, 0x00000000 }, 
238        { 0x00000000, 0x00000400, 0x0C000000, 0x00000000 }, 
239        { 0x00000000, 0x00000600, 0x0A000000, 0x00000000 }, 
240        { 0x00000000, 0x00000800, 0x08000000, 0x00000000 }, 
241        { 0x00000000, 0x00000A00, 0x06000000, 0x00000000 }, 
242        { 0x00000000, 0x00000C00, 0x04000000, 0x00000000 }, 
243        { 0x00000000, 0x00000E00, 0x02000000, 0x00000000 }
244#endif
245};
246
247const uint32_t BGRC_P_FIRCOEFF_ANISOTROPIC_2to1[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
248{
249#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
250        {
251                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0000 ) |
252                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0000 ),
253                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0100 )
254        },
255        {
256                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0000 ) |
257                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x0000 ),
258                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0080 ) 
259        }
260#else
261        { 0x00000000, 0x00000000, 0x08000800, 0x00000000 }, 
262        { 0x00000000, 0x00000100, 0x08000700, 0x00000000 }, 
263        { 0x00000000, 0x00000200, 0x08000600, 0x00000000 }, 
264        { 0x00000000, 0x00000300, 0x08000500, 0x00000000 }, 
265        { 0x00000000, 0x00000400, 0x08000400, 0x00000000 }, 
266        { 0x00000000, 0x00000500, 0x08000300, 0x00000000 }, 
267        { 0x00000000, 0x00000600, 0x08000200, 0x00000000 }, 
268        { 0x00000000, 0x00000700, 0x08000100, 0x00000000 }
269#endif
270};
271
272const uint32_t BGRC_P_FIRCOEFF_ANISOTROPIC_3to1[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
273{
274#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
275        {
276                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0000 ) |
277                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0055 ),
278                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0056 )
279        },
280        {
281                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0000 ) |
282                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x002b ),
283                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0055 ) 
284        }
285#else
286        { 0x00000000, 0x00000554, 0x05580554, 0x00000000 }, 
287        { 0x00000000, 0x00AC0554, 0x055404AC, 0x00000000 }, 
288        { 0x00000000, 0x01540554, 0x05580400, 0x00000000 }, 
289        { 0x00000000, 0x02000554, 0x05580354, 0x00000000 }, 
290        { 0x00000000, 0x02AC0554, 0x055402AC, 0x00000000 }, 
291        { 0x00000000, 0x03540554, 0x05580200, 0x00000000 }, 
292        { 0x00000000, 0x04000554, 0x05580154, 0x00000000 }, 
293        { 0x00000000, 0x04AC0554, 0x055400AC, 0x00000000 }
294#endif
295};
296
297const uint32_t BGRC_P_FIRCOEFF_ANISOTROPIC_4to1[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
298{
299#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
300        {
301                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0000 ) |
302                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0055 ),
303                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0056 )
304        },
305        {
306                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0000 ) |
307                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x002b ),
308                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0055 ) 
309        }
310#else
311        { 0x00000000, 0x00000400, 0x04000400, 0x04000000 }, 
312        { 0x00000000, 0x00800400, 0x04000400, 0x03800000 }, 
313        { 0x00000000, 0x01000400, 0x04000400, 0x03000000 }, 
314        { 0x00000000, 0x01800400, 0x04000400, 0x02800000 }, 
315        { 0x00000000, 0x02000400, 0x04000400, 0x02000000 }, 
316        { 0x00000000, 0x02800400, 0x04000400, 0x01800000 }, 
317        { 0x00000000, 0x03000400, 0x04000400, 0x01000000 }, 
318        { 0x00000000, 0x03800400, 0x04000400, 0x00800000 }
319#endif
320};
321
322const uint32_t BGRC_P_FIRCOEFF_ANISOTROPIC_5to1[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
323{
324#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
325        {
326                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0033 ) |
327                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0033 ),
328                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0034 )
329        },
330        {
331                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x001a ) |
332                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x0033 ),
333                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0033 ) 
334        }
335#else
336        { 0x00000000, 0x03340334, 0x03340334, 0x03300000 }, 
337        { 0x00000068, 0x03340334, 0x03340334, 0x02C80000 }, 
338        { 0x000000CC, 0x03340334, 0x03340334, 0x02640000 }, 
339        { 0x00000134, 0x03340334, 0x03340334, 0x01FC0000 }, 
340        { 0x00000198, 0x03340334, 0x03340334, 0x01980000 }, 
341        { 0x00000200, 0x03340334, 0x03340334, 0x01340000 }, 
342        { 0x00000264, 0x03340334, 0x03340334, 0x00CC0000 }, 
343        { 0x000002C8, 0x03340334, 0x03340334, 0x00680000 }
344#endif
345};
346
347const uint32_t BGRC_P_FIRCOEFF_ANISOTROPIC_6to1[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
348{
349#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
350        {
351                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0033 ) |
352                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0033 ),
353                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0034 )
354        },
355        {
356                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x002a ) |
357                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x002b ),
358                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x002b ) 
359        }
360#else
361        { 0x00000000, 0x02A802AC, 0x02AC02AC, 0x02AC02A8 }, 
362        { 0x00000054, 0x02AC02AC, 0x02AC02AC, 0x02AC0250 }, 
363        { 0x000000A8, 0x02AC02AC, 0x02AC02AC, 0x02AC01FC }, 
364        { 0x000000FC, 0x02AC02AC, 0x02AC02AC, 0x02AC01A8 }, 
365        { 0x00000154, 0x02AC02AC, 0x02AC02AC, 0x02AC0150 }, 
366        { 0x000001A8, 0x02AC02AC, 0x02AC02AC, 0x02AC00FC }, 
367        { 0x000001FC, 0x02AC02AC, 0x02AC02AC, 0x02AC00A8 }, 
368        { 0x00000250, 0x02AC02AC, 0x02AC02AC, 0x02AC0054 }
369#endif
370};
371
372const uint32_t BGRC_P_FIRCOEFF_ANISOTROPIC_7to1[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
373{
374#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
375        {
376                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0033 ) |
377                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0033 ),
378                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0034 )
379        },
380        {
381                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x002a ) |
382                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x002b ),
383                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x002b ) 
384        }
385#else
386        { 0x00000248, 0x0248024C, 0x024C0248, 0x02480248 }, 
387        { 0x00480248, 0x0248024C, 0x024C0248, 0x02480200 }, 
388        { 0x00940248, 0x02480248, 0x024C0248, 0x024801B8 }, 
389        { 0x00DC0248, 0x0248024C, 0x024C0248, 0x0248016C }, 
390        { 0x01240248, 0x0248024C, 0x024C0248, 0x02480124 }, 
391        { 0x016C0248, 0x0248024C, 0x024C0248, 0x024800DC }, 
392        { 0x01B80248, 0x02480248, 0x024C0248, 0x02480094 }, 
393        { 0x02000248, 0x0248024C, 0x024C0248, 0x02480048 }
394#endif
395};
396
397const uint32_t BGRC_P_FIRCOEFF_ANISOTROPIC_8to1[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
398{
399#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
400        {
401                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0033 ) |
402                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0033 ),
403                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0034 )
404        },
405        {
406                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x002a ) |
407                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x002b ),
408                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x002b ) 
409        }
410#else
411        { 0x02000200, 0x02000200, 0x02000200, 0x02000200 }, 
412        { 0x02000200, 0x02000200, 0x02000200, 0x02000200 }, 
413        { 0x02000200, 0x02000200, 0x02000200, 0x02000200 }, 
414        { 0x02000200, 0x02000200, 0x02000200, 0x02000200 }, 
415        { 0x02000200, 0x02000200, 0x02000200, 0x02000200 }, 
416        { 0x02000200, 0x02000200, 0x02000200, 0x02000200 }, 
417        { 0x02000200, 0x02000200, 0x02000200, 0x02000200 }, 
418        { 0x02000200, 0x02000200, 0x02000200, 0x02000200 }
419#endif
420};
421
422/***************************************************************************/
423/* SHARP FILTER COEFFICENT TABLES                                          */
424/* Closet pixel is area filtered with its neighbors using filter           */
425/* coefficents generated with a sin wave formula (all 8 taps). Each scale  */
426/* factor has its own table of filter coeffs up to a scale of 8 to 9.      */
427/* Up-scales larger than 8 to 9 use a 1 to N coefficent table.             */
428/***************************************************************************/
429const uint32_t BGRC_P_FIRCOEFF_SHARP_8to9[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
430{
431#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
432        {
433                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0000 ) |
434                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0xffff ),
435                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0102 )
436        },
437        {
438                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0002 ) |
439                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0xffeb ),
440                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0093 ) 
441        }
442#else
443        { 0x00003FB4, 0x00EC3E54, 0x12143E54, 0x00EC3FB4 }, 
444        { 0x00183FC0, 0x00840040, 0x11583D40, 0x010C3FC0 }, 
445        { 0x00103FE0, 0x3FD402EC, 0x0F983CF4, 0x00F43FD0 }, 
446        { 0x00080014, 0x3EF40628, 0x0CE43D48, 0x00B03FE8 }, 
447        { 0x3FFC0060, 0x3E08099C, 0x099C3E08, 0x00603FFC }, 
448        { 0x3FE800B0, 0x3D480CE4, 0x06283EF4, 0x00140008 }, 
449        { 0x3FD000F4, 0x3CF40F98, 0x02EC3FD4, 0x3FE00010 }, 
450        { 0x3FC0010C, 0x3D401158, 0x00400084, 0x3FC00018 }
451#endif
452};
453
454const uint32_t BGRC_P_FIRCOEFF_SHARP_8to8[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
455{
456#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
457        {
458                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0000 ) |
459                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0000 ),
460                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0100 )
461        },
462        {
463                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0002 ) |
464                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0xffeb ),
465                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0093 ) 
466        }
467#else
468        { 0x00000000, 0x00000000, 0x10000000, 0x00000000 }, 
469        { 0x3FF80024, 0x3F6C01F8, 0x0F943E94, 0x006C3FE8 }, 
470        { 0x3FEC0054, 0x3EC00468, 0x0E503DC0, 0x00AC3FDC }, 
471        { 0x3FE40088, 0x3E1C071C, 0x0C503D74, 0x00C03FD8 }, 
472        { 0x3FDC00B0, 0x3DA009D4, 0x09D43DA0, 0x00B03FDC }, 
473        { 0x3FD800C0, 0x3D740C50, 0x071C3E1C, 0x00883FE4 }, 
474        { 0x3FDC00AC, 0x3DC00E50, 0x04683EC0, 0x00543FEC }, 
475        { 0x3FE8006C, 0x3E940F94, 0x01F83F6C, 0x00243FF8 }
476#endif
477};
478
479const uint32_t BGRC_P_FIRCOEFF_SHARP_8to7[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
480{
481#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
482        {
483                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0xfffc ) |
484                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0014 ),
485                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x00e0 )
486        },
487        {
488                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0002 ) |
489                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0xffee ),
490                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0090 ) 
491        }
492#else
493        { 0x0000004C, 0x3F1401A8, 0x0DEC01A8, 0x3F14004C }, 
494        { 0x3FE80064, 0x3EA00378, 0x0DB4002C, 0x3F880030 }, 
495        { 0x3FEC0074, 0x3E3C0580, 0x0CD03F14, 0x3FE80018 }, 
496        { 0x3FF00074, 0x3E040798, 0x0B683E60, 0x00300004 }, 
497        { 0x3FFC0060, 0x3E08099C, 0x099C3E08, 0x00603FFC }, 
498        { 0x00040030, 0x3E600B68, 0x07983E04, 0x00743FF0 }, 
499        { 0x00183FE8, 0x3F140CD0, 0x05803E3C, 0x00743FEC }, 
500        { 0x00303F88, 0x002C0DB4, 0x03783EA0, 0x00643FE8 }
501#endif
502};
503
504const uint32_t BGRC_P_FIRCOEFF_SHARP_8to6[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
505{
506#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
507        {
508                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0xfff9 ) |
509                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0026 ),
510                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x00c2 )
511        },
512        {
513                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0xffff ) |
514                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0xfff7 ),
515                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x008a ) 
516        }
517#else
518        { 0x00000038, 0x3EB40314, 0x0C000314, 0x3EB40038 }, 
519        { 0x0008002C, 0x3E8C048C, 0x0BC801C0, 0x3EF00038 }, 
520        { 0x00100018, 0x3E880618, 0x0B2C009C, 0x3F380034 }, 
521        { 0x00183FF4, 0x3EB4079C, 0x0A3C3FBC, 0x3F80002C }, 
522        { 0x00203FC0, 0x3F180908, 0x09083F18, 0x3FC00020 }, 
523        { 0x002C3F80, 0x3FBC0A3C, 0x079C3EB4, 0x3FF40018 }, 
524        { 0x00343F38, 0x009C0B2C, 0x06183E88, 0x00180010 }, 
525        { 0x00383EF0, 0x01C00BC8, 0x048C3E8C, 0x002C0008 }
526#endif
527};
528
529const uint32_t BGRC_P_FIRCOEFF_SHARP_8to5[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
530{
531#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
532        {
533                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0xfffb ) |
534                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0033 ),
535                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x00a4 )
536        },
537        {
538                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0xfffd ) |
539                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x0003 ),
540                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0080 ) 
541        }
542#else
543        { 0x00003FE4, 0x3F140408, 0x0A040408, 0x3F143FE4 }, 
544        { 0x00183FC8, 0x3F380518, 0x09D402F8, 0x3F0C3FF8 }, 
545        { 0x00183FA4, 0x3F80062C, 0x09780204, 0x3F180004 }, 
546        { 0x00183F7C, 0x3FE80734, 0x08E4012C, 0x3F34000C }, 
547        { 0x00143F58, 0x00740820, 0x08200074, 0x3F580014 }, 
548        { 0x000C3F34, 0x012C08E4, 0x07343FE8, 0x3F7C0018 }, 
549        { 0x00043F18, 0x02040978, 0x062C3F80, 0x3FA40018 }, 
550        { 0x3FF83F0C, 0x02F809D4, 0x05183F38, 0x3FC80018 }
551#endif
552};
553
554const uint32_t BGRC_P_FIRCOEFF_SHARP_8to4[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
555{
556#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
557        {
558                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0000 ) |
559                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x003b ),
560                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x008a )
561        },
562        {
563                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0xfffe ) |
564                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x0010 ),
565                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0072 ) 
566        }
567#else
568        { 0x00003FB0, 0x00000454, 0x07F40454, 0x00003FB0 }, 
569        { 0x3FFC3FA0, 0x004C050C, 0x07E403A0, 0x3FC83FC0 }, 
570        { 0x3FF83F90, 0x00AC05BC, 0x07B002F0, 0x3FA43FD0 }, 
571        { 0x3FF03F88, 0x0120065C, 0x075C0244, 0x3F903FDC }, 
572        { 0x3FE83F84, 0x01AC06E8, 0x06E801AC, 0x3F843FE8 }, 
573        { 0x3FDC3F90, 0x0244075C, 0x065C0120, 0x3F883FF0 }, 
574        { 0x3FD03FA4, 0x02F007B0, 0x05BC00AC, 0x3F903FF8 }, 
575        { 0x3FC03FC8, 0x03A007E4, 0x050C004C, 0x3FA03FFC }
576#endif
577};
578
579const uint32_t BGRC_P_FIRCOEFF_SHARP_8to3[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
580{
581#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
582        {
583                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0006 ) |
584                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x003f ),
585                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0076 )
586        },
587        {
588                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0000 ) |
589                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x001a ),
590                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0066 ) 
591        }
592#else
593        { 0x00003FE4, 0x00F0041C, 0x0620041C, 0x00F03FE4 }, 
594        { 0x3FE83FE8, 0x0140048C, 0x062003B4, 0x00B03FE0 }, 
595        { 0x3FE83FF8, 0x019804F0, 0x06040340, 0x00743FE0 }, 
596        { 0x3FE40004, 0x01FC054C, 0x05D402D0, 0x00483FE0 }, 
597        { 0x3FE40020, 0x02640598, 0x05980264, 0x00203FE4 }, 
598        { 0x3FE00048, 0x02D005D4, 0x054C01FC, 0x00043FE4 }, 
599        { 0x3FE00074, 0x03400604, 0x04F00198, 0x3FF83FE8 }, 
600        { 0x3FE000B0, 0x03B40620, 0x048C0140, 0x3FE83FE8 }
601#endif
602};
603
604const uint32_t BGRC_P_FIRCOEFF_SHARP_8to2[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
605{
606#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
607        {
608                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x000b ) |
609                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0040 ),
610                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x006a )
611        },
612        {
613                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0004 ) |
614                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x0020 ),
615                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x005c ) 
616        }
617#else
618        { 0x00000048, 0x019803B8, 0x04D403B8, 0x01980048 }, 
619        { 0x00040060, 0x01D403F4, 0x04CC0378, 0x015C0034 }, 
620        { 0x0008007C, 0x0218042C, 0x04C00334, 0x01240024 }, 
621        { 0x000C009C, 0x0260045C, 0x04A802EC, 0x00F00018 }, 
622        { 0x001000C4, 0x02A40488, 0x048802A4, 0x00C40010 }, 
623        { 0x001800F0, 0x02EC04A8, 0x045C0260, 0x009C000C }, 
624        { 0x00240124, 0x033404C0, 0x042C0218, 0x007C0008 }, 
625        { 0x0034015C, 0x037804CC, 0x03F401D4, 0x00600004 }
626#endif
627};
628
629const uint32_t BGRC_P_FIRCOEFF_SHARP_8to1[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
630{
631#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
632        {
633                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x000f ) |
634                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0041 ),
635                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0060 )
636        },
637        {
638                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0006 ) |
639                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x0024 ),
640                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0056 ) 
641        }
642#else
643        { 0x0000009C, 0x01E8036C, 0x041C036C, 0x01E8009C }, 
644        { 0x003800B8, 0x02140388, 0x04080338, 0x01B00080 }, 
645        { 0x003800DC, 0x024803A8, 0x0400030C, 0x0180006C }, 
646        { 0x00400100, 0x027C03C8, 0x03F402DC, 0x01540058 }, 
647        { 0x004C0128, 0x02AC03E0, 0x03E002AC, 0x0128004C }, 
648        { 0x00580154, 0x02DC03F4, 0x03C8027C, 0x01000040 }, 
649        { 0x006C0180, 0x030C0400, 0x03A80248, 0x00DC0038 }, 
650        { 0x008001B0, 0x03380408, 0x03880214, 0x00B80038 }
651#endif
652};
653
654/***************************************************************************/
655/* SHARP & SHARPER (1toN) FILTER COEFFICENT TABLES                         */
656/* These tables are used when with sharp or sharper filtering and          */
657/* up-scaling greater than 8 to 9.                                         */
658/***************************************************************************/
659const uint32_t BGRC_P_FIRCOEFF_SHARP_1toN[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
660{
661#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
662        {
663                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0xfffa ) |
664                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x001f ),
665                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x00ce )
666        },
667        {
668                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0000 ) |
669                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0xfff3 ),
670                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x008d ) 
671        }
672#else
673        { 0x00000030, 0x3EE00320, 0x0CE001A0, 0x3F200030 }, 
674        { 0x00000030, 0x3EA004D0, 0x0C600070, 0x3F700020 }, 
675        { 0x00000030, 0x3E8006A0, 0x0B603F80, 0x3FB00020 }, 
676        { 0x00100010, 0x3E900860, 0x0A103EE0, 0x3FF00010 }, 
677        { 0x00103FF0, 0x3EE00A10, 0x08603E90, 0x00100010 }, 
678        { 0x00203FB0, 0x3F800B60, 0x06A03E80, 0x00300000 }, 
679        { 0x00203F70, 0x00700C60, 0x04D03EA0, 0x00300000 }, 
680        { 0x00303F20, 0x01A00CE0, 0x03203EE0, 0x00300000 }
681#endif
682};
683
684const uint32_t BGRC_P_FIRCOEFF_SHARPER_1toN[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
685{
686#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
687        {
688                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0000 ) |
689                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0000 ),
690                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0100 )
691        },
692        {
693                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0003 ) |
694                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0xffeb ),
695                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0092 ) 
696        }
697#else
698        { 0x00000000, 0x00000000, 0x10000000, 0x00000000 }, 
699        { 0x3FD00060, 0x3F300220, 0x0FC03E60, 0x00B03FB0 }, 
700        { 0x3FA000D0, 0x3E5004B0, 0x0EA03D50, 0x01303F70 }, 
701        { 0x3F700130, 0x3D800780, 0x0CC03CE0, 0x01703F50 }, 
702        { 0x3F600170, 0x3CF00A40, 0x0A403CF0, 0x01703F60 }, 
703        { 0x3F500170, 0x3CE00CC0, 0x07803D80, 0x01303F70 }, 
704        { 0x3F700130, 0x3D500EA0, 0x04B03E50, 0x00D03FA0 }, 
705        { 0x3FB000B0, 0x3E600FC0, 0x02203F30, 0x00603FD0 }
706#endif
707};
708
709/***************************************************************************/
710/* ANTI-FLUTTER FILTER COEFFICENT TABLES                                   */
711/* Non-scale filter meant to elimiate flickering problems related to       */
712/* interlaced displays.                                                    */
713/***************************************************************************/
714#if 1
715/* Most amount of softening */
716const uint32_t BGRC_P_FIRCOEFF_ANTIFLUTTER[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
717{
718#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
719        {
720                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0000 ) |
721                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0040 ),
722                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0080 )
723        },
724        {
725                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0000 ) |
726                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x0000 ),
727                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0080 ) 
728        }
729#else
730        { 0x00000000, 0x00000400, 0x08000400, 0x00000000 }, 
731        { 0x00000000, 0x00000400, 0x08000400, 0x00000000 }, 
732        { 0x00000000, 0x00000400, 0x08000400, 0x00000000 }, 
733        { 0x00000000, 0x00000400, 0x08000400, 0x00000000 }, 
734        { 0x00000000, 0x00000400, 0x08000400, 0x00000000 }, 
735        { 0x00000000, 0x00000400, 0x08000400, 0x00000000 }, 
736        { 0x00000000, 0x00000400, 0x08000400, 0x00000000 }, 
737        { 0x00000000, 0x00000400, 0x08000400, 0x00000000 }
738#endif
739};
740#endif
741
742#if 0
743/* Medium amount of softening */
744const uint32_t BGRC_P_FIRCOEFF_ANTIFLUTTER[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] =
745{
746        { 0x00000000, 0x00000800, 0x08000000, 0x00000000 },
747        { 0x00000000, 0x00000800, 0x08000000, 0x00000000 },
748        { 0x00000000, 0x00000800, 0x08000000, 0x00000000 },
749        { 0x00000000, 0x00000800, 0x08000000, 0x00000000 },
750        { 0x00000000, 0x00000800, 0x08000000, 0x00000000 },
751        { 0x00000000, 0x00000800, 0x08000000, 0x00000000 },
752        { 0x00000000, 0x00000800, 0x08000000, 0x00000000 },
753        { 0x00000000, 0x00000800, 0x08000000, 0x00000000 }
754};
755#endif
756
757#if 0
758/* Small amount of softening */
759const uint32_t BGRC_P_FIRCOEFF_ANTIFLUTTER[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] =
760{
761        { 0x00000000, 0x00000300, 0x0A000300, 0x00000000 },
762        { 0x00000000, 0x00000300, 0x0A000300, 0x00000000 },
763        { 0x00000000, 0x00000300, 0x0A000300, 0x00000000 },
764        { 0x00000000, 0x00000300, 0x0A000300, 0x00000000 },
765        { 0x00000000, 0x00000300, 0x0A000300, 0x00000000 },
766        { 0x00000000, 0x00000300, 0x0A000300, 0x00000000 },
767        { 0x00000000, 0x00000300, 0x0A000300, 0x00000000 },
768        { 0x00000000, 0x00000300, 0x0A000300, 0x00000000 }
769};
770#endif
771
772#if 0
773/* Least amount of softening */
774const uint32_t BGRC_P_FIRCOEFF_ANTIFLUTTER[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] =
775{
776        { 0x00000000, 0x00000280, 0x0B000280, 0x00000000 },
777        { 0x00000000, 0x00000280, 0x0B000280, 0x00000000 },
778        { 0x00000000, 0x00000280, 0x0B000280, 0x00000000 },
779        { 0x00000000, 0x00000280, 0x0B000280, 0x00000000 },
780        { 0x00000000, 0x00000280, 0x0B000280, 0x00000000 },
781        { 0x00000000, 0x00000280, 0x0B000280, 0x00000000 },
782        { 0x00000000, 0x00000280, 0x0B000280, 0x00000000 },
783        { 0x00000000, 0x00000280, 0x0B000280, 0x00000000 }
784};
785#endif
786
787/***************************************************************************/
788/* ANTI-FLUTTER SCALE FILTER COEFFICENT TABLES                             */
789/* Scale filter meant to elimiate flickering problems related to           */
790/* interlaced displays.                                                    */
791/***************************************************************************/
792#if 1
793/* This filter can be used to do anti-fluttering for pictures that contain
794   very thin/fine (e.g., 1-pixel thick) horizontal lines. Examples are web
795   browser window images, graphics pictures with thin horizontal lines.
796   The picture will be softened vertically. */
797const uint32_t BGRC_P_FIRCOEFF_ANTIFLUTTERSCALE[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
798{
799#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
800        {
801                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0000 ) |
802                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0040 ),
803                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0080 )
804        },
805        {
806                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0000 ) |
807                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x0018 ),
808                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0068 ) 
809        }
810#else
811        { 0x00000000, 0x003004C0, 0x07B00360, 0x00000000 }, 
812        { 0x00000000, 0x00900560, 0x076002B0, 0x00000000 }, 
813        { 0x00000000, 0x00F00600, 0x07100200, 0x00000000 }, 
814        { 0x00000000, 0x01780688, 0x06880170, 0x00000000 }, 
815        { 0x00000000, 0x02000710, 0x060000F0, 0x00000000 }, 
816        { 0x00000000, 0x02B00760, 0x05600090, 0x00000000 }, 
817        { 0x00000000, 0x036007B0, 0x04C00030, 0x00000000 }, 
818        { 0x00000000, 0x01C80638, 0x063801C8, 0x00000000 }
819#endif
820};
821#endif
822
823#if 0
824/* This filter has less softening effect compared to the above one. It can
825   be used to do anti-fluttering for pictures that contain thin horizontal
826   line graphics pictures. */
827const uint32_t BGRC_P_FIRCOEFF_ANTIFLUTTERSCALE[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] =
828{
829        { 0x00000000, 0x3FD004B0, 0x089002F0, 0x00000000 },
830        { 0x00000000, 0x00200588, 0x08280230, 0x00000000 },
831        { 0x00000000, 0x00700660, 0x07C00170, 0x00000000 },
832        { 0x00000000, 0x00F00710, 0x07100070, 0x00000000 },
833        { 0x00000000, 0x017007C0, 0x06600070, 0x00000000 },
834        { 0x00000000, 0x02300828, 0x05880020, 0x00000000 },
835        { 0x00000000, 0x02F00890, 0x04B03FD0, 0x00000000 },
836        { 0x00000000, 0x016006A0, 0x06A00160, 0x00000000 }
837};
838#endif
839
840#if 0
841/* This filter has least softening effect compared to the above two. It can
842   be used to do anti-fluttering for pictures that contain TEXT or natural
843   scenes if they need anti-fluttering at all. */
844const uint32_t BGRC_P_FIRCOEFF_ANTIFLUTTERSCALE[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] =
845{
846        { 0x00000000, 0x3E800480, 0x0B3001D0, 0x00000000 },
847        { 0x00000000, 0x3E980600, 0x0A9800D0, 0x00000000 },
848        { 0x00000000, 0x3EB00780, 0x0A003FD0, 0x00000000 },
849        { 0x00000000, 0x3F4008C0, 0x08C03F40, 0x00000000 },
850        { 0x00000000, 0x3FD00A00, 0x07803EB0, 0x00000000 },
851        { 0x00000000, 0x00D00A98, 0x06003E98, 0x00000000 },
852        { 0x00000000, 0x01D00B30, 0x04803E80, 0x00000000 },
853        { 0x00000000, 0x002807D8, 0x07D80028, 0x00000000 }
854};
855#endif
856
857#if 0
858/* This filter is similar to the first one specified and can be used to do
859   anti-fluttering for pictures that contain very thin/fine horizontal lines.
860   It softens the picture vertically. It gives the uniform gray for an input
861   picture consisting of alternative black/white 1-pixel wide horizontal
862   lines when the aspect ratio is kept. */
863const uint32_t BGRC_P_FIRCOEFF_ANTIFLUTTERSCALE[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] =
864{
865        { 0x00000000, 0x00000400, 0x08000400, 0x00000000 },
866        { 0x00000000, 0x004004B8, 0x07B80350, 0x00000000 },
867        { 0x00000000, 0x00800570, 0x077002A0, 0x00000000 },
868        { 0x00000000, 0x00F80600, 0x07000208, 0x00000000 },
869        { 0x00000000, 0x01700690, 0x06900170, 0x00000000 },
870        { 0x00000000, 0x02080700, 0x060000F8, 0x00000000 },
871        { 0x00000000, 0x02A00770, 0x05700080, 0x00000000 },
872        { 0x00000000, 0x015005B8, 0x06B80240, 0x00000000 }
873};
874#endif
875
876/***************************************************************************/
877/* ANTI-FLUTTER BLURRY FILTER COEFFICENT TABLES                            */
878/* Non-scale filter meant to elimiate flickering problems related to       */
879/* interlaced displays. Blurryer than previous anti-flutter table.         */
880/***************************************************************************/
881const uint32_t BGRC_P_FIRCOEFF_ANTIFLUTTERBLURRY[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
882{
883#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
884        {
885                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0000 ) |
886                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0050 ),
887                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x0060 )
888        },
889        {
890                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0000 ) |
891                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x0020 ),
892                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0060 ) 
893        }
894#else
895        { 0x00000000, 0x00000500, 0x06000500, 0x00000000 }, 
896        { 0x00000000, 0x00000500, 0x06000500, 0x00000000 }, 
897        { 0x00000000, 0x00000500, 0x06000500, 0x00000000 }, 
898        { 0x00000000, 0x00000500, 0x06000500, 0x00000000 }, 
899        { 0x00000000, 0x00000500, 0x06000500, 0x00000000 }, 
900        { 0x00000000, 0x00000500, 0x06000500, 0x00000000 }, 
901        { 0x00000000, 0x00000500, 0x06000500, 0x00000000 }, 
902        { 0x00000000, 0x00000500, 0x06000500, 0x00000000 }
903#endif
904};
905
906/***************************************************************************/
907/* ANTI-FLUTTER SHARP FILTER COEFFICENT TABLES                             */
908/* Non-scale filter meant to elimiate flickering problems related to       */
909/* interlaced displays. Sharper than previous anti-flutter table.          */
910/***************************************************************************/
911const uint32_t BGRC_P_FIRCOEFF_ANTIFLUTTERSHARP[BGRC_P_FIR_PHASE_COUNT][BGRC_P_FIR_TAP_COUNT / 2] = 
912{
913#if defined(BCHP_M2MC_HORIZ_FIR_COEFF_PHASE0_2_COEFF_2_SHIFT)
914        {
915                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_0, 0x0000 ) |
916                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_01), COEFF_1, 0x0028 ),
917                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE0_2),  COEFF_2, 0x00B0 )
918        },
919        {
920                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_0, 0x0000 ) |
921                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_01), COEFF_1, 0x0000 ),
922                BCHP_FIELD_DATA( BGRC_M2MC_ENUM(HORIZ_FIR_COEFF_PHASE1_2),  COEFF_2, 0x0080 ) 
923        }
924#else
925        { 0x00000000, 0x00000280, 0x0B000280, 0x00000000 }, 
926        { 0x00000000, 0x00000280, 0x0B000280, 0x00000000 }, 
927        { 0x00000000, 0x00000280, 0x0B000280, 0x00000000 }, 
928        { 0x00000000, 0x00000280, 0x0B000280, 0x00000000 }, 
929        { 0x00000000, 0x00000280, 0x0B000280, 0x00000000 }, 
930        { 0x00000000, 0x00000280, 0x0B000280, 0x00000000 }, 
931        { 0x00000000, 0x00000280, 0x0B000280, 0x00000000 }, 
932        { 0x00000000, 0x00000280, 0x0B000280, 0x00000000 }
933#endif
934};
935
936/* End of File */
Note: See TracBrowser for help on using the repository browser.