source: svn/newcon3bcm2_21bu/magnum/portinginterface/rfm/7552/brfm_scripts.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: 74.7 KB
Line 
1/***************************************************************************
2 *     Copyright (c) 2005-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: brfm_scripts.c $
11 * $brcm_Revision: Hydra_Software_Devel/37 $
12 * $brcm_Date: 2/17/12 11:32a $
13 *
14 * Module Description:
15 *
16 * Revision History:
17 *
18 * $brcm_Log: /magnum/portinginterface/rfm/7401/brfm_scripts.c $
19 *
20 * Hydra_Software_Devel/37   2/17/12 11:32a jtna
21 * SW7552-209: update ntsc filter coefficients for rev 5.1 B0 and up
22 *
23 * Hydra_Software_Devel/36   9/27/11 11:54a jtna
24 * SW7429-22: add 7429 support
25 *
26 * Hydra_Software_Devel/35   5/19/11 3:35p jtna
27 * SW7552-26: add 7552 compile support
28 *
29 * Hydra_Software_Devel/34   1/18/11 6:19p jtna
30 * SW7550-660: make brfm_scripts.c more stand-alone
31 *
32 * Hydra_Software_Devel/33   1/17/11 3:10p jtna
33 * SW7550-660: refactored RFM conditional compile definitions
34 *
35 * Hydra_Software_Devel/32   1/14/11 10:41a jtna
36 * SW7550-660: initial code clean-up
37 *
38 * Hydra_Software_Devel/31   8/26/10 3:10p jtna
39 * SW7420-16: better debug logs
40 *
41 * Hydra_Software_Devel/30   7/23/10 4:01p jtna
42 * SW7420-811: Set DACCTL.TC_OBB_2 = 1 and rate manager changes
43 *
44 * Hydra_Software_Devel/29   5/6/10 3:49p jtna
45 * SW7420-730: added SW workaround for noise spur
46 *
47 * Hydra_Software_Devel/28   3/24/10 3:08p jtna
48 * SW7405-4109: added BRFM_AudioEncoding_eStereoExtDeviation
49 *
50 * Hydra_Software_Devel/27   7/8/09 3:35p jtna
51 * PR43336: clean up CRC BIST
52 *
53 * Hydra_Software_Devel/26   6/24/09 11:56a jtna
54 * PR56333: set RFM_SYSCLK_OUTSCL uniform for all video formats
55 *
56 * Hydra_Software_Devel/25   3/3/09 4:46p jtna
57 * PR52387: Fix Pal-N init script
58 *
59 * Hydra_Software_Devel/24   3/3/09 10:36a jtna
60 * PR52387: Add Pal-M and Pal-N support
61 *
62 * Hydra_Software_Devel/23   2/6/09 5:50p jtna
63 * PR45633: add new volume table for 7420
64 *
65 * Hydra_Software_Devel/22   12/1/08 2:03p jtna
66 * PR45633: add 7420 support for compilation
67 *
68 * Hydra_Software_Devel/21   8/13/08 2:06p jtna
69 * PR45633: Add 7420 support
70 *
71 * Hydra_Software_Devel/20   7/30/08 5:53p jtna
72 * PR45157: Move register write before variable declaration
73 *
74 * Hydra_Software_Devel/19   7/30/08 5:09p jtna
75 * PR45157: Move register write before variable declaration
76 *
77 * Hydra_Software_Devel/18   7/11/08 10:52a jtna
78 * PR43336: Merge CRC BIST for 65nm platforms
79 *
80 * Hydra_Software_Devel/PR43336/3   7/11/08 10:11a jtna
81 * PR43336: Upgrade MSG->WRN for CRC failures
82 *
83 * Hydra_Software_Devel/PR43336/2   7/1/08 5:59p jtna
84 * PR43336: Void unused variables
85 *
86 * Hydra_Software_Devel/PR43336/1   6/13/08 6:53p jtna
87 * PR43336: Update CRC BIST
88 *
89 * Hydra_Software_Devel/16   6/11/08 11:07a jtna
90 * PR43336: Fix compiler warning. CRC BIST return value defaults to
91 * success.
92 *
93 * Hydra_Software_Devel/15   6/6/08 2:35p jtna
94 * PR43336: Add built-in self-test for correcting bad startup states
95 *
96 * Hydra_Software_Devel/13   4/29/08 4:05p jtna
97 * PR42156: Update RFM_SYSCLK.MISC registers to optimal values
98 *
99 * Hydra_Software_Devel/12   1/25/08 11:28a jtna
100 * PR34667: Merge SIF & dualBTSC support
101 *
102 ***************************************************************************/
103
104#include "bstd.h"
105#include "brsp.h"
106
107#ifndef VEC_GRPD_RFM
108#include "bchp_rfm_clk27.h"
109#include "bchp_rfm_sysclk.h"
110#include "brfm.h"
111#include "brfm_priv.h"
112#include "brfm_scripts.h"
113#else
114
115#endif
116
117/*******************************************************************************
118Sub RFM_Audio_Trap_95Taps_DEFAULT_NTSC()
119' Audio Trap filter: symmetric FIR (95-tap design for TRAP00-TRAP23).
120'    Designed for Rev. 3.0/4.0 RFM core (e.g. Bcm74xx).
121' NTSC M/N version (4-MHz bandwidth, audio carrier at 4.5 MHz).
122*******************************************************************************/
123static const uint32_t BRFM_P_AudioTrapScrNtsc[] =
124{
125#if (BCHP_CHIP==7118)
126    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP00, 0x004cff38,
127    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP01, 0x00ecffb0,
128    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP02, 0xff2001ac,
129    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP03, 0xfea80004,
130    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP04, 0x013cfeb0,
131    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP05, 0x00380104,
132    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP06, 0xfeb4008c,
133    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP07, 0x0068ff38,
134    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP08, 0x0088ffec,
135    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP09, 0xffb400a4,
136    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP10, 0xff300058,
137    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP11, 0x00d4fe14,
138    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP12, 0x016800dc,
139    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP13, 0xfd1c0244,
140    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP14, 0x010cfc08,
141    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP15, 0x0324015c,
142    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP16, 0xfae003e0,
143    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP17, 0x01c8f9cc,
144    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP18, 0x046c0248,
145    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP19, 0xf8d404d0,
146    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP20, 0x02d0f814,
147    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP21, 0x04fc0338,
148    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP22, 0xf7ac052c,
149    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP23, 0x02c4791c,
150#elif (BRFM_REVID==51 && BCHP_VER>=BCHP_VER_B0)
151    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP00, 0xfff40014, /* -0.0003662109375/ 0.0006103515625 (   -3/    5) */
152    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP01, 0xfff8fff4, /* -0.0002441406250/-0.0003662109375 (   -2/   -3) */
153    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP02, 0x00180000, /*  0.0007324218750/ 0.0             (    6/    0) */
154    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP03, 0xffe4001c, /* -0.0008544921875/ 0.0008544921875 (   -7/    7) */
155    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP04, 0x0010ffd0, /*  0.0004882812500/-0.0014648437500 (    4/  -12) */
156    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP05, 0x00140030, /*  0.0006103515625/ 0.0014648437500 (    5/   12) */
157    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP06, 0xffc0fff8, /* -0.0019531250000/-0.0002441406250 (  -16/   -2) */
158    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP07, 0x0058ffc0, /*  0.0026855468750/-0.0019531250000 (   22/  -16) */
159    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP08, 0xffc8007c, /* -0.0017089843750/ 0.0037841796875 (  -14/   31) */
160    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP09, 0xffe0ff80, /* -0.0009765625000/-0.0039062500000 (   -8/  -32) */
161    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP10, 0x00900028, /*  0.0043945312500/ 0.0012207031250 (   36/   10) */
162    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP11, 0xff300074, /* -0.0063476562500/ 0.0035400390625 (  -52/   29) */
163    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP12, 0x00a0fef4, /*  0.0048828125000/-0.0081787109375 (   40/  -67) */
164    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP13, 0x00180134, /*  0.0007324218750/ 0.0093994140625 (    6/   77) */
165    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP14, 0xfef0ff68, /* -0.0083007812500/-0.0046386718750 (  -68/  -38) */
166    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP15, 0x01c4ff50, /*  0.0137939453125/-0.0053710937500 (  113/  -44) */
167    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP16, 0xfe68021c, /* -0.0124511718750/ 0.0164794921875 ( -102/  135) */
168    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP17, 0x0044fd30, /*  0.0020751953125/-0.0219726562500 (   17/ -180) */
169    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP18, 0x01f401f4, /*  0.0152587890625/ 0.0152587890625 (  125/  125) */
170    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP19, 0xfbe800dc, /* -0.0319824218750/ 0.0067138671875 ( -262/   55) */
171    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP20, 0x04b8fac8, /*  0.0368652343750/-0.0407714843750 (  302/ -334) */
172    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP21, 0xfdd009fc, /* -0.0170898437500/ 0.0780029296875 ( -140/  639) */
173    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP22, 0xfa04f254, /* -0.0467529296875/-0.1068115234375 ( -383/ -875) */
174    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP23, 0x25f44f14, /*  0.2965087890625/ 0.6177978515625 ( 2429/ 5061) */
175#else
176    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP00, 0x0004fffc,
177    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP01, 0xfffc0008,
178    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP02, 0x0000fff4,
179    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP03, 0x00080008,
180    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP04, 0xffec0004,
181    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP05, 0x0018ffe4,
182    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP06, 0xfff00030,
183    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP07, 0xfff4ffc8,
184    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP08, 0x003c001c,
185    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP09, 0xff9c0020,
186    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP10, 0x0068ff88,
187    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP11, 0xffd000b8,
188    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP12, 0xffb8ff4c,
189    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP13, 0x00dc0044,
190    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP14, 0xfebc0094,
191    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP15, 0x012cfe74,
192    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP16, 0xffa8022c,
193    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP17, 0xfee0fe14,
194    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP18, 0x02d00068,
195    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP19, 0xfc0c0260,
196    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP20, 0x038cfa04,
197    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP21, 0xff8c099c,
198    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP22, 0xf880f3b8,
199    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP23, 0x268c4d48,
200#endif
201    BRSP_ScriptType_eEndOfScript, 0x00,              0x00000000
202};
203
204/*******************************************************************************
205Sub RFM_Audio_Trap_95Taps_PAL_D()
206' Audio Trap filter: symmetric FIR (95-tap design for TRAP00-TRAP23).
207'    Designed for Rev. 3.0/4.0 RFM core.
208' PAL-D version (6-MHz bandwidth, audio carrier at 6.5 MHz).
209*******************************************************************************/
210static const uint32_t BRFM_P_AudioTrapScrPalD[] =
211{
212    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP00, 0xffd80018,
213    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP01, 0xffe00024,
214    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP02, 0xffdc0020,
215    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP03, 0xffec0004,
216    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP04, 0x0010ffd8,
217    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP05, 0x004cff90,
218    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP06, 0x0094ff48,
219    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP07, 0x00d4ff18,
220    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP08, 0x00f0ff18,
221    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP09, 0x00ccff64,
222    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP10, 0x00580004,
223    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP11, 0xff9000e4,
224    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP12, 0xfea001dc,
225    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP13, 0xfdbc029c,
226    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP14, 0xfd3402d4,
227    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP15, 0xfd5c0238,
228    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP16, 0xfe7400a0,
229    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP17, 0x008cfe18,
230    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP18, 0x036cfb00,
231    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP19, 0x0690f808,
232    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP20, 0x08fcf668,
233    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP21, 0x0998f7c4,
234    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP22, 0x06d4fa90,
235    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP23, 0x042c7c00,
236    BRSP_ScriptType_eEndOfScript, 0x00,              0x00000000
237};
238
239/*******************************************************************************
240Sub RFM_Audio_Trap_95Taps_PAL_B()
241' Audio Trap filter: symmetric FIR (95-tap design for TRAP00-TRAP23).
242'    Designed for Rev. 3.0/4.0 RFM core (e.g. Bcm74xx).
243' PAL-B/G/H version (5-MHz bandwidth, audio carrier at 5.5 MHz).
244*******************************************************************************/
245static const uint32_t BRFM_P_AudioTrapScrPalBG[] =
246{
247    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP00, 0x000c0004, /*  0.0003662109375 / 0.0001220703125 (   3 /    1) */
248    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP01, 0xffec0028, /* -0.0006103515625 / 0.0012207031250 (  -5 /   10) */
249    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP02, 0xffc4003c, /* -0.0018310546875 / 0.0018310546875 ( -15 /   15) */
250    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP03, 0xffd80000, /* -0.0012207031250 / 0.0             ( -10 /    0) */
251    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP04, 0x002cffb8, /*  0.0013427734375 /-0.0021972656250 (  11 /  -18) */
252    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP05, 0x0044ffe8, /*  0.0020751953125 /-0.0007324218750 (  17 /   -6) */
253    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP06, 0xffd80064, /* -0.0012207031250 / 0.0030517578125 ( -10 /   25) */
254    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP07, 0xff8c004c, /* -0.0035400390625 / 0.0023193359375 ( -29 /   19) */
255    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP08, 0x000cff90, /*  0.0003662109375 /-0.0034179687500 (   3 /  -28) */
256    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP09, 0x00b0ff64, /*  0.0053710937500 /-0.0047607421875 (  44 /  -39) */
257    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP10, 0x00340064, /*  0.0015869140625 / 0.0030517578125 (  13 /   25) */
258    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP11, 0xff1c0100, /* -0.0069580078125 / 0.0078125000000 ( -57 /   64) */
259    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP12, 0xff64ffd4, /* -0.0047607421875 /-0.0013427734375 ( -39 /  -11) */
260    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP13, 0x0100fe88, /*  0.0078125000000 /-0.0114746093750 (  64 /  -94) */
261    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP14, 0x013cffb0, /*  0.0096435546875 /-0.0024414062500 (  79 /  -20) */
262    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP15, 0xff0c01f4, /* -0.0074462890625 / 0.0152587890625 ( -61 /  125) */
263    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP16, 0xfde4012c, /* -0.0164794921875 / 0.0091552734375 (-135 /   75) */
264    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP17, 0x0098fd98, /*  0.0046386718750 /-0.0187988281250 (  38 / -154) */
265    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP18, 0x035cfd4c, /*  0.0262451171875 /-0.0211181640625 ( 215 / -173) */
266    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP19, 0x006402cc, /*  0.0030517578125 / 0.0218505859375 (  25 /  179) */
267    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP20, 0xfa9405e8, /* -0.0423583984375 / 0.0461425781250 (-347 /  378) */
268    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP21, 0xfce0fcf4, /* -0.0244140625000 /-0.0238037109375 (-200 / -195) */
269    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP22, 0x0b74ebf0, /*  0.0894775390625 /-0.1567382812500 ( 733 /-1284) */
270    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP23, 0x1a806320, /*  0.2070312500000 / 0.7744140625000 (1696 / 6344) */
271    BRSP_ScriptType_eEndOfScript, 0x00,              0x00000000
272};
273
274/*******************************************************************************
275Sub RFM_Audio_Trap_95Taps_PAL_I()
276' Audio Trap filter: symmetric FIR (95-tap design for TRAP00-TRAP23).
277'    Designed for Rev. 3.0/4.0 RFM core (e.g. Bcm74xx).
278' PAL-I version (5.5-MHz bandwidth, audio carrier at 6.0 MHz).
279*******************************************************************************/
280static const uint32_t BRFM_P_AudioTrapScrPalI[] =
281{
282    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP00, 0x0000fff4, /*  0.0              -0.0003662109375 (   0 /   -3) */
283    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP01, 0x0010ffe8, /*  0.0004882812500 /-0.0007324218750 (   4 /   -6) */
284    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP02, 0x0020ffe0, /*  0.0009765625000 /-0.0009765625000 (   8 /   -8) */
285    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP03, 0x001cfff4, /*  0.0008544921875 /-0.0003662109375 (   7 /   -3) */
286    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP04, 0xfff40028, /* -0.0003662109375 / 0.0012207031250 (  -3 /   10) */
287    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP05, 0xffbc0050, /* -0.0020751953125 / 0.0024414062500 ( -17 /   20) */
288    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP06, 0xffb00038, /* -0.0024414062500 / 0.0017089843750 ( -20 /   14) */
289    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP07, 0xfff8ffcc, /* -0.0002441406250 /-0.0015869140625 (  -2 /  -13) */
290    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP08, 0x0070ff60, /*  0.0034179687500 /-0.0048828125000 (  28 /  -40) */
291    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP09, 0x00b0ff6c, /*  0.0053710937500 /-0.0045166015625 (  44 /  -37) */
292    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP10, 0x0050001c, /*  0.0024414062500 / 0.0008544921875 (  20 /    7) */
293    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP11, 0xff680104, /* -0.0046386718750 / 0.0079345703125 ( -38 /   65) */
294    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP12, 0xfebc0140, /* -0.0098876953125 / 0.0097656250000 ( -81 /   80) */
295    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP13, 0xff1c003c, /* -0.0069580078125 / 0.0018310546875 ( -57 /   15) */
296    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP14, 0x009cfe88, /*  0.0047607421875 /-0.0114746093750 (  39 /  -94) */
297    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP15, 0x0220fda4, /*  0.0166015625000 /-0.0184326171875 ( 136 / -151) */
298    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP16, 0x0208fee8, /*  0.0158691406250 /-0.0085449218750 ( 130 /  -70) */
299    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP17, 0xffac01f8, /* -0.0025634765625 / 0.0153808593750 ( -21 /  126) */
300    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP18, 0xfc84046c, /* -0.0272216796875 / 0.0345458984375 (-223 /  283) */
301    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP19, 0xfb9c0328, /* -0.0343017578125 / 0.0246582031250 (-281 /  202) */
302    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP20, 0xff3cfd44, /* -0.0059814453125 /-0.0213623046875 ( -49 / -175) */
303    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP21, 0x06d4f5c8, /*  0.0533447265625 /-0.0798339843750 ( 437 / -654) */
304    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP22, 0x0d8cefd0, /*  0.1058349609375 /-0.1264648437500 ( 867 /-1036) */
305    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TRAP23, 0x11a06d9c, /*  0.1376953125000 / 0.8563232421875 (1128 / 7015) */
306    BRSP_ScriptType_eEndOfScript, 0x00,              0x00000000
307};
308
309/*******************************************************************************
310Sub RFM_Group_Delay_FCC_M()
311' Group-delay filter: symmetric FIR (40-tap design for GRP00-GRP19).
312'    Originally designed for Rev. 2.0 RFM core, also works for 3.0 and 4.0.
313' NTSC-M version (audio carrier at 4.5 MHz).
314'
315' ** RFM Group Delay DC gain = 0.9990234375 = 2046/2^11 = 0x7FE/2^11
316'
317' Designed to "FCC, EIA 1977" specification:
318'
319'           Nominal
320'    Freq.  G.Delay  Tolerance
321'    (MHz)   (ns)      (ns)
322'    -----  -------- ---------
323'     0         0      +/-25
324'     0.1       0    Reference
325'    >0.1       0      +/-25
326'     1.0       0      +/-25
327'     2.0       0      +/-25
328'     3.0       0      +/-25
329'     3.58   -170      +/-25
330'     4.0    -293      +/-50
331'     4.18   -346      +/-100
332*******************************************************************************/
333static const uint32_t BRFM_P_GroupDelayFCCScrNtsc[] =
334{
335    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP00, 0x00000180,
336    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP01, 0xf8d010e0,
337    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP02, 0xe2202920,
338    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP03, 0xd6601650,
339    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP04, 0x0a80e140,
340    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP05, 0x10c011a0,
341    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP06, 0xe1e0fd80,
342    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP07, 0x3e904110,
343    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP08, 0x1600fbb0,
344    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP09, 0xfbc00110,
345    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP10, 0x01a0ffc0,
346    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP11, 0xff200000,
347    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP12, 0x00800010,
348    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP13, 0xffc00010,
349    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP14, 0x00500020,
350    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP15, 0xfff0ffe0,
351    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP16, 0x00000000,
352    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP17, 0x00000000,
353    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP18, 0x00000000,
354    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP19, 0x00000000,
355    BRSP_ScriptType_eEndOfScript, 0x00,             0x00000000
356};
357
358/*******************************************************************************
359Sub RFM_Group_Delay_PAL_D__CCIR_Rpt_308()
360' Group-delay filter: symmetric FIR (40-tap design for GRP00-GRP19).
361'    Designed for Rev. 3.0/4.0 RFM core (also works with 2.x cores).
362' PAL-D version (audio carrier at 6.5 MHz).
363'
364'  ** RFM Group Delay DC gain = 0.9951171875 = 2038/2^11 = 0x7F6/2^11
365'
366' Designed to "CCIR Report 308" specification:
367'
368'           Nominal
369'    Freq.  G.Delay  Tolerance
370'    (MHz)   (ns)      (ns)
371'    -----  -------- ---------
372'     0        0    Reference
373'     0.25   + 5      +/-12
374'     1.0    +53      +/-12
375'     2.0    +87      +/-12
376'     3.0    +85      +/-12
377'     4.0    +50      +/-12
378'     4.43     0      +/-12
379'     0      -90      +/-30
380*******************************************************************************/
381static const uint32_t BRFM_P_GroupDelayScrPalD[] =
382{
383    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP00, 0x00000000,
384    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP01, 0xffe00020,
385    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP02, 0xffd00050,
386    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP03, 0xff7000e0,
387    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP04, 0xfeb00210,
388    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP05, 0xfcd00520,
389    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP06, 0xf8500c60,
390    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP07, 0xee401a80,
391    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP08, 0xe3102060,
392    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP09, 0xf7f0fa80,
393    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP10, 0x66d02940,
394    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP11, 0xf610f3b0,
395    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP12, 0x0240fd00,
396    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP13, 0x0100fea0,
397    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP14, 0x0120ff10,
398    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP15, 0x0090ff90,
399    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP16, 0x0040ffd0,
400    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP17, 0x0010fff0,
401    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP18, 0xfff00000,
402    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP19, 0xffe00010,
403    BRSP_ScriptType_eEndOfScript, 0x00,             0x00000000
404};
405
406/*******************************************************************************
407Sub RFM_Group_Delay_PAL_D__China_Flat()
408' Group-delay filter: symmetric FIR (40-tap design for GRP00-GRP19).
409'
410' Impulse (delay-only) filter with DC gain matched to filter above
411'    [RFM_Group_Delay_PAL_D__CCIR_Rpt_308()].
412'
413'  ** RFM Group Delay DC gain = 0.9951171875 = 2038/2^11 = 0x7F6/2^11
414*******************************************************************************/
415static const uint32_t BRFM_P_GroupDelayScrPalD_China[] =
416{
417    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP00, 0x00000000,
418    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP01, 0x00000000,
419    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP02, 0x00000000,
420    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP03, 0x00000000,
421    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP04, 0x00000000,
422    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP05, 0x00000000,
423    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP06, 0x00000000,
424    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP07, 0x00000000,
425    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP08, 0x00000000,
426    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP09, 0x00000000,
427    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP10, 0x7f600000,
428    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP11, 0x00000000,
429    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP12, 0x00000000,
430    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP13, 0x00000000,
431    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP14, 0x00000000,
432    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP15, 0x00000000,
433    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP16, 0x00000000,
434    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP17, 0x00000000,
435    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP18, 0x00000000,
436    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP19, 0x00000000, 
437    BRSP_ScriptType_eEndOfScript, 0x00,             0x00000000
438};
439
440/*******************************************************************************
441Sub RFM_Group_Delay_PAL_B__General()
442' Group-delay filter: symmetric FIR (40-tap design for GRP00-GRP19).
443'    Designed for Rev. 3.0/4.0 RFM core (also works with 2.x cores).
444' PAL-B version (audio carrier at 5.5 MHz).
445'
446' Designed to following specification:
447' (see Rohde & Schwarz Sound and TV Broadcasting's "CCIR and FCC TV Standards"
448'  document, "GROUP DELAY" section, "Standard B/G" table, "general"
449'  pre-correction column of table)
450'
451'           Nominal
452'    Freq.  G.Delay  Tolerance
453'    (MHz)   (ns)      (ns)
454'    -----  -------- ---------
455'     0.1      0    Reference
456'     0.25   + 5      +/-12
457'     1.0    +53      +/-12
458'     2.0    +90      +/-12
459'     3.0    +75      +/-12
460'     3.75     0      +/-12
461'     4.43  -170      +/-25
462'     4.8   -400      +/-90
463*******************************************************************************/
464static const uint32_t BRFM_P_GroupDelayScrPalBG[] =
465{
466    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP00, 0xffc0ffb0, /* -0.00195312500 /-0.00244140625 (  -4 /   -5) */
467    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP01, 0x01f0fa80, /*  0.01513671875 /-0.04296875000 (  31 /  -88) */
468    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP02, 0x0b10ee50, /*  0.08642578125 /-0.13818359375 ( 177 / -283) */
469    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP03, 0x1710e7c0, /*  0.18017578125 /-0.18945312500 ( 369 / -388) */
470    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP04, 0x1310f820, /*  0.14892578125 /-0.06152343750 ( 305 / -126) */
471    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP05, 0xfab00e90, /* -0.04150390625 / 0.11376953125 ( -85 /  233) */
472    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP06, 0xf21003e0, /* -0.10888671875 / 0.03027343750 (-223 /   62) */
473    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP07, 0x0ba0eeb0, /*  0.09082031250 /-0.13525390625 ( 186 / -277) */
474    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP08, 0x09101480, /*  0.07080078125 / 0.16015625000 ( 145 /  328) */
475    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP09, 0xe9401180, /* -0.17773437500 / 0.13671875000 (-364 /  280) */
476    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP10, 0x5a602840, /*  0.70605468750 / 0.31445312500 (1446 /  644) */
477    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP11, 0xf9e0f530, /* -0.04785156250 /-0.08447265625 ( -98 / -173) */
478    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP12, 0xfcd00050, /* -0.02490234375 / 0.00244140625 ( -51 /    5) */
479    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP13, 0x0130fc60, /*  0.00927734375 /-0.02832031250 (  19 /  -58) */
480    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP14, 0x0560f930, /*  0.04199218750 /-0.05322265625 (  86 / -109) */
481    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP15, 0x0680fb20, /*  0.05078125000 /-0.03808593750 ( 104 /  -78) */
482    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP16, 0x02a0ff60, /*  0.02050781250 /-0.00488281250 (  42 /  -10) */
483    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP17, 0xff200180, /* -0.00683593750 / 0.01171875000 ( -14 /   24) */
484    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP18, 0xfe700110, /* -0.01220703125 / 0.00830078125 ( -25 /   17) */
485    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP19, 0xff500040, /* -0.00537109375 / 0.00195312500 ( -11 /    4) */
486    BRSP_ScriptType_eEndOfScript, 0x00,             0x00000000
487};
488
489/*******************************************************************************
490Sub RFM_Group_Delay_PAL_I__BBC_Flat()
491'Sub RFM_Group_Delay_PAL_I__Flat()
492' Group-delay filter: symmetric FIR (40-tap design for GRP00-GRP19).
493'    Designed for Rev. 3.0/4.0 RFM core (also works with 2.x cores).
494' PAL-I version (audio carrier at 6.0 MHz).
495'
496' Designed to following specification:
497' (see Rohde & Schwarz Sound and TV Broadcasting's "CCIR and FCC TV Standards"
498'  document, "GROUP DELAY" section, "Standard I" table, "BBC system without
499'  receiver precorrection" column of table)
500'
501'           Nominal
502'    Freq.  G.Delay  Tolerance
503'    (MHz)   (ns)      (ns)
504'    -----  -------- ---------
505'     0.01     0     Reference
506'     0.1      0      +/-40
507'     0.2      0      +/-40
508'    <3.6      0      +/-40
509'    >3.6      0      +/-20
510'     4.0      0      +/-20
511'     4.43     0      +/-20
512'     4.8      0      +/-20
513'    <5.2      0      +/-20
514'    >5.2      0      +/-80
515'     5.5      0      +/-80
516*******************************************************************************/
517static const uint32_t BRFM_P_GroupDelayScrPalI[] =
518{
519    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP00, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
520    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP01, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
521    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP02, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
522    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP03, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
523    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP04, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
524    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP05, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
525    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP06, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
526    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP07, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
527    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP08, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
528    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP09, 0x00007ff0, /* 0.0            / 0.99951171875 (   0 / 2047) */
529    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP10, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
530    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP11, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
531    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP12, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
532    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP13, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
533    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP14, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
534    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP15, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
535    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP16, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
536    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP17, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
537    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP18, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
538    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP19, 0x00000000, /* 0.0            / 0.0           (   0 /    0) */
539    BRSP_ScriptType_eEndOfScript, 0x00,             0x00000000
540};
541
542/*******************************************************************************
543Sub RFM_Group_Delay_PAL_L__TDF()
544' Group-delay filter: symmetric FIR (40-tap design for GRP00-GRP19).
545'    Designed for Rev. 3.0/4.0 RFM core (also works with 2.x cores).
546' PAL-L version (AM audio carrier at 6.5 MHz).
547'
548' Designed to following specification:
549' (see Rohde & Schwarz Sound and TV Broadcasting's "CCIR and FCC TV Standards"
550'  document, "GROUP DELAY" section, "Standard L, K1, K'" table, "TDF"
551'  pre-correction column of table)
552'
553'           Nominal
554'    Freq.  G.Delay  Tolerance
555'    (MHz)   (ns)      (ns)
556'    -----  -------- ---------
557'     0.1      0     Reference
558'     0.2      0      +/-15
559'     2.0      0      +/-15
560'     4.0      0      +/-15
561'     4.43     0      +/-15
562'     4.6      0      +/-15
563'     4.8    -20      +/-35
564'     5.0    -57.5    +/-42.5
565'     5.25  -100      +/-42.5
566'     5.5  <-100
567*******************************************************************************/
568static const uint32_t BRFM_P_GroupDelayScrPalL[] =
569{
570    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP00, 0x0030ffd0, /*  0.00146484375 /-0.00146484375 (   3/   -3) */
571    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP01, 0x0040ff80, /*  0.00195312500 /-0.00390625000 (   4/   -8) */
572    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP02, 0x00c0fef0, /*  0.00585937500 /-0.00830078125 (  12/  -17) */
573    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP03, 0x0160fe30, /*  0.01074218750 /-0.01416015625 (  22/  -29) */
574    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP04, 0x0240fd00, /*  0.01757812500 /-0.02343750000 (  36/  -48) */
575    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP05, 0x03f0fb10, /*  0.03076171875 /-0.03857421875 (  63/  -79) */
576    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP06, 0x0580fb00, /*  0.04296875000 /-0.03906250000 (  88/  -80) */
577    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP07, 0x02800280, /*  0.01953125000 / 0.01953125000 (  40/   40) */
578    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP08, 0xf59015b0, /* -0.08154296875 / 0.16943359375 (-167/  347) */
579    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP09, 0xd8d062c0, /* -0.30615234375 / 0.77148437500 (-627/ 1580) */
580    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP10, 0x3d40f940, /*  0.47851562500 /-0.05273437500 ( 980/ -108) */
581    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP11, 0xfdf00340, /* -0.01611328125 / 0.02539062500 ( -33/   52) */
582    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP12, 0xfdd000b0, /* -0.01708984375 / 0.00537109375 ( -35/   11) */
583    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP13, 0x0050ff40, /*  0.00244140625 /-0.00585937500 (   5/  -12) */
584    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP14, 0x00b0ff80, /*  0.00537109375 /-0.00390625000 (  11/   -8) */
585    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP15, 0x0060ffa0, /*  0.00292968750 /-0.00292968750 (   6/   -6) */
586    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP16, 0x0070ff90, /*  0.00341796875 /-0.00341796875 (   7/   -7) */
587    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP17, 0x0070ffb0, /*  0.00341796875 /-0.00244140625 (   7/   -5) */
588    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP18, 0x0040ffe0, /*  0.00195312500 /-0.00097656250 (   4/   -2) */
589    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_GRP19, 0x0010ffe0, /*  0.00048828125 /-0.00097656250 (   1/   -2) */
590    BRSP_ScriptType_eEndOfScript, 0x00,                 0x00000000
591};
592
593/*******************************************************************************
594*******************************************************************************/
595/* 15 kHz left-input/output lowpass filters */
596static const uint32_t BRFM_P_BTSCSetup15kHzLeft[] = 
597{
598    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_LCF1A1, 0x000C6E58,
599    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_LCF1B1, 0x00089C12,
600    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_LCF1B2, 0x0003989C,
601    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_LCF1C1, 0x000868F2,
602    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_LCF1C2, 0x0003EA90,
603    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_LCF2A1, 0x0008C660,
604    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_LCF2A2, 0x000353A4,
605    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_LCF2B1, 0x00087B92,
606    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_LCF2B2, 0x0003CD46,
607    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_LCF2C1, 0x00085DAE,
608    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_LCF2C2, 0x0003FA34,
609    BRSP_ScriptType_eEndOfScript, 0x00,              0x00000000
610};
611
612/* 15 kHz right-input/output lowpass filters (currently not in use) */
613static const uint32_t BRFM_P_BTSCSetup15kHzRight[] = 
614{
615    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1A1, 0x000c6e58,
616    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1B1, 0x00089c12,
617    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1B2, 0x0003989c,
618    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1C1, 0x000868f2,
619    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1C2, 0x0003ea90,
620    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2A1, 0x0008c660,
621    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2A2, 0x000353a4,
622    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2B1, 0x00087b92,
623    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2B2, 0x0003cd46,
624    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2C1, 0x00085dae,
625    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2C2, 0x0003fa34,
626    BRSP_ScriptType_eEndOfScript, 0x00,              0x00000000
627};
628
629/*******************************************************************************
630Sub RFM_7038_Audio_Setup_Stereo()
631BTSC Stereo
632*******************************************************************************/
633static const uint32_t BRFM_P_AudioSetupStereo[] = 
634{
635    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMCTL,      0x00010fff,
636    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMSCL,      0x08cb9000,
637    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_VOLCTL,     0x000000c5,
638    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_CLK27_AUDIOTONE, SEL_TPVID, 0),
639    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MODPLT,     0x802630c4,
640    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLPLT,     0x00002312,
641    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLLPR,     0x000057AC,
642    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLLMR,     0x0000af58,
643    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLAM,      0x00010000,
644    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SATLR,      0xaf5857ac,
645    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SATSUM,     0x0000af58,
646    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_OVRSPCB0,   0x000fffff,
647    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_OVRSPCB1,   0x00090001,
648    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_OVRSPCA1,   0x00000300,
649    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGRCTL1,   0xb1810F0F,
650    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGRCTL1,   0x91810F0F,
651#if (BRFM_REVID>=50) /* override */
652    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGRCTL1,   0x91812020,
653    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGRCTL2,   0x004C1D81,
654    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGROFFSAT, 0x005D34EE, /* +/-150 Hz saturation limit */
655#endif
656    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1A1,     0x000c6e58, 
657    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1B1,     0x00089c12,
658    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1B2,     0x0003989c,
659    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1C1,     0x000868f2,
660    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1C2,     0x0003ea90,
661    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2A1,     0x0008c660,
662    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2A2,     0x000353a4,
663    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2B1,     0x00087b92,
664    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2B2,     0x0003cd46,
665    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2C1,     0x00085dae,
666    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2C2,     0x0003fa34,
667    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREA1,     0x0003f5c2,
668    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB0,     0x0002f996,
669    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB1,     0x000d25e8,
670    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_AUDIOBYP,   0x00800300, 
671    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SPREA1,     0x000b7678,
672    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SPREA2,     0x0000d732,
673    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SPREB0,     0x0001b7f4,
674    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SPREB1,     0x000ca668,
675    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SPREB2,     0x0001a1ca,
676    BRSP_ScriptType_eEndOfScript, 0x00,                  0x00000000
677};
678
679static const uint32_t BRFM_P_AudioSetupStereoExtDeviation[] = 
680{
681    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMCTL,      0x00010fff,
682    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMSCL,      0x08cb9000,
683    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_VOLCTL,     0x000000c5,
684    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_CLK27_AUDIOTONE, SEL_TPVID, 0),
685    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MODPLT,     0x802630c4,
686    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLPLT,     0x00002312,
687    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLLPR,     0x000057AC,
688    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLLMR,     0x0000af58,
689    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLAM,      0x00010000,
690    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SATLR,      0xffffffff,
691    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SATSUM,     0x0000ffff,
692    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_OVRSPCB0,   0x000fffff,
693    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_OVRSPCB1,   0x00090001,
694    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_OVRSPCA1,   0x00000300,
695    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGRCTL1,   0xb1810F0F,
696    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGRCTL1,   0x91810F0F,
697#if (BRFM_REVID>=50) /* override */
698    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGRCTL1,   0x91812020,
699    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGRCTL2,   0x004C1D81,
700    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGROFFSAT, 0x005D34EE, /* +/-150 Hz saturation limit */
701#endif
702    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1A1,     0x000c6e58, 
703    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1B1,     0x00089c12,
704    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1B2,     0x0003989c,
705    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1C1,     0x000868f2,
706    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1C2,     0x0003ea90,
707    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2A1,     0x0008c660,
708    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2A2,     0x000353a4,
709    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2B1,     0x00087b92,
710    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2B2,     0x0003cd46,
711    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2C1,     0x00085dae,
712    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2C2,     0x0003fa34,
713    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREA1,     0x0003f5c2,
714    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB0,     0x0005f32c,
715    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB1,     0x000a4bd0,
716    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_AUDIOBYP,   0x00800300,
717    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SPREA1,     0x000b7678,
718    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SPREA2,     0x0000d732,
719    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SPREB0,     0x00036fe8,
720    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SPREB1,     0x00094cd0,
721    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SPREB2,     0x00034394,
722    BRSP_ScriptType_eEndOfScript, 0x00,                  0x00000000
723};
724
725static const uint32_t BRFM_P_AudioEncodingScrStereo[] =
726{
727    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_AudioSetupStereo,   0x00000000,
728    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_BTSCSetup15kHzLeft, 0x00000000,
729    BRSP_ScriptType_eEndOfScript,  0x00,                                0x00000000 
730};     
731
732static const uint32_t BRFM_P_AudioEncodingScrStereoExtDeviation[] =
733{
734    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_AudioSetupStereoExtDeviation, 0x00000000,
735    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_BTSCSetup15kHzLeft,           0x00000000,
736    BRSP_ScriptType_eEndOfScript,  0x00,                                          0x00000000 
737};
738
739/*******************************************************************************
740Sub RFM_7038_Audio_Setup_Mono75us()
741Mono (M,N): 75 us pre-emphasis, 25 kHz deviation
742*******************************************************************************/
743static const uint32_t BRFM_P_AudioEncodingScrMonoCommon[] =
744{
745    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_VOLCTL,   0x000000c5,
746    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_CLK27_AUDIOTONE, SEL_TPVID, 0),
747    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MODPLT,   0x002630c4,
748    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLPLT,   0x00000000,
749    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLLPR,   0x000057AC,
750    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLLMR,   0x00000000,
751    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLAM,    0x00000000,
752    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SATLR,    0xffffffff,
753    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SATSUM,   0x0000ffff,
754    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1A1,   0x000c6e58,
755    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1B1,   0x00089c12,
756    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1B2,   0x0003989c,
757    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1C1,   0x000868f2,
758    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1C2,   0x0003ea90,
759    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2A1,   0x0008c660,
760    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2A2,   0x000353a4,
761    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2B1,   0x00087b92,
762    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2B2,   0x0003cd46,
763    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2C1,   0x00085dae,
764    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2C2,   0x0003fa34,
765    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_AUDIOBYP, 0x00000300,
766    BRSP_ScriptType_eEndOfScript, 0x00,                0x00000000
767};
768
769static const uint32_t BRFM_P_AudioEncodingScrMonoNtsc[] =
770{
771    /* NTSC Mono Script, uses 75us Pre-emphasis Filter */
772    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMCTL,  0x00010fff,
773    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMSCL,  0x08cb9000,
774    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_AudioEncodingScrMonoCommon, 0x00000000,
775    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREA1, 0x0003f5c2,
776    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB0, 0x0002f996,
777    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB1, 0x000d25e8,
778    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_BTSCSetup15kHzLeft, 0x00000000,
779    BRSP_ScriptType_eEndOfScript, 0x00,              0x00000000
780};
781
782static const uint32_t BRFM_P_AudioEncodingScrMonoPalSecam[] =
783{
784    /* Pal/Secam Mono Script, uses 50us Pre-emphasis Filter */
785    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMCTL,  0x00010fff,
786    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMSCL,  0x11973000,
787    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_AudioEncodingScrMonoCommon, 0x00000000,
788    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREA1, 0x0003F5C2,
789    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB0, 0x000200FA,
790    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB1, 0x000E1E84,
791    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_BTSCSetup15kHzLeft, 0x00000000,
792    BRSP_ScriptType_eEndOfScript, 0x00,              0x00000000
793};
794
795static const uint32_t BRFM_P_AudioEncodingScrMonoPalD[] =
796{
797    /* PalD Mono Script, uses 50us Pre-emphasis Filter */
798    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMCTL,  0x00010fff,
799    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMSCL,  0x11973000,
800    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_AudioEncodingScrMonoCommon, 0x00000000,
801    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREA1, 0x0003F5C2,
802    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB0, 0x000200FA,
803    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB1, 0x000E1E84,
804    BRSP_ScriptType_eEndOfScript, 0x00,              0x00000000
805};
806
807static const uint32_t BRFM_P_AudioEncodingScrNicam[] =
808{
809    /* Nicam Stereo script, uses 50us Pre-emphasis Filter */
810    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_AudioEncodingScrMonoCommon, 0x00000000,
811    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMCTL,  0x00010fff,
812    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMSCL,  0x11973000,
813    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREA1, 0x0003F5C2,
814    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB0, 0x000200FA,
815    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB1, 0x000E1E84,
816    BRSP_ScriptType_eEndOfScript, 0x00,              0x00000000
817};
818
819static const uint32_t BRFM_P_AudioEncodingScrNicamPalD[] =
820{
821    /* Nicam Stereo script, uses 50us Pre-emphasis Filter */
822    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_AudioEncodingScrMonoCommon, 0x00000000,
823    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMCTL,  0x00010fff,
824    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMSCL,  0x11973000,
825    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREA1, 0x0003F5C2,
826    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB0, 0x000200FA,
827    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB1, 0x000E1E84,
828
829    /* Need a lower-bandwidth audio trap because of NICAM at 5.85MHz
830    (FM carrier at 6.5MHz). PAL-D filter has a 6.4MHz stopband edge, so use
831    the PAL-B filter (5.4MHz stopband edge) instead of PAL-D filter  */
832    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_AudioTrapScrPalBG, 0x00000000,
833    BRSP_ScriptType_eEndOfScript, 0x00,              0x00000000
834};
835
836/*******************************************************************************
837Sub RFM_7038_Audio_Setup_MonoAndSAP()
838Mono and SAP (BTSC)
839*******************************************************************************/
840static const uint32_t BRFM_P_AudioEncodingScrSap[] =
841{
842    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMCTL,      0x00010fff,
843    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMSCL,      0x08cb9000,
844    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_VOLCTL,     0x0000018a,
845    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_CLK27_AUDIOTONE, SEL_TPVID, 0),
846    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MODPLT,     0x002630c4,
847    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLPLT,     0x00000000,
848    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLLPR,     0x000057AC,
849    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLLMR,     0x0000349A,
850    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLAM,      0x00006117,
851    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SATLR,      0xaf58af58,
852    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SATSUM,     0x0000af58,
853    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGRCTL1,   0xb1810F0F,
854    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGRCTL1,   0x91810F0F,
855#if (BRFM_REVID>=50) /* override */
856    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGRCTL1,   0x91812020,
857    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGRCTL2,   0x004C1D81,
858    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGROFFSAT, 0x005D34EE, /* +/-150 Hz saturation limit */
859#endif
860    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1A1,     0x000C55F2,
861    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1B1,     0x00086E6A,
862    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1B2,     0x0003AE16,
863    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1C1,     0x00083DE0,
864    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF1C2,     0x0003EEC0,
865    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2A1,     0x000896A0,
866    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2A2,     0x000377F8,
867    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2B1,     0x00084F92,
868    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2B2,     0x0003D776,
869    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2C1,     0x000833A4,
870    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RCF2C2,     0x0003FB48,
871    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREA1,     0x0003f5c2,
872    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB0,     0x0002f996,
873    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB1,     0x000d25e8,
874    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_OVRSPCB0,   0x00000000,
875    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_OVRSPCB1,   0x00020000,
876    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_OVRSPCA1,   0x00000000,
877    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_AUDIOBYP,   0x01800380,
878    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SPREA1,     0x000b7678, 
879    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SPREA2,     0x0000d732, 
880    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SPREB0,     0x0001b7f4, 
881    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SPREB1,     0x000ca668, 
882    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SPREB2,     0x0001a1ca, 
883    BRSP_ScriptType_eEndOfScript, 0x00,                  0x00000000
884};
885
886static const uint32_t BRFM_P_AudioEncodingScrSapMono[] =
887{
888    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_AudioEncodingScrSap, 0x00000000,
889    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_BTSCSetup15kHzLeft,  0x00000000,
890};
891
892/*******************************************************************************
893Sub RFM_7038_Audio_Setup_JMono1()
894Single-input (left channel) mono for Japan: 75 us pre-emphasis, 25 kHz deviation
895*******************************************************************************/
896static const uint32_t BRFM_P_AudioEncodingScrJpMono1[] =
897{
898    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMCTL,      0x00010fff,
899    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMSCL,      0x08cb9000,
900    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_VOLCTL,     0x0000018a,
901    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_CLK27_AUDIOTONE, SEL_TPVID, 0),
902    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MODPLT,     0x002630c4,
903    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLPLT,     0x00000000,
904    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLLPR,     0x000057AC,
905    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLLMR,     0x00000000,
906    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SCLAM,      0x00000000,
907    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SATLR,      0xffffffff,
908    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_SATSUM,     0x0000ffff,
909    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGRCTL1,   0xb1810F0F,
910    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGRCTL1,   0x91810F0F,
911#if (BRFM_REVID>=50) /* override */
912    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGRCTL1,   0x91812020,
913    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGRCTL2,   0x004C1D81,
914    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_RMGROFFSAT, 0x005D34EE, /* +/-150 Hz saturation limit */
915#endif
916    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREA1,     0x0003f5c2,
917    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB0,     0x0002f996,
918    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_MPREB1,     0x000d25e8,
919    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_OVRSPCB0,   0x00000000,
920    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_OVRSPCB1,   0x00000000,
921    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_OVRSPCA1,   0x00000000,
922    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_AUDIOBYP,   0x00000380, 
923    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_BTSCSetup15kHzLeft, 0x00000000,
924    BRSP_ScriptType_eEndOfScript, 0x00,                  0x00000000
925};
926
927/*******************************************************************************
928*******************************************************************************/
929static const uint32_t BRFM_P_ChScrNtscOpenCableRF[] =
930{
931    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_CLK27_FILSCL, AUDSCL, 0x300),
932    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_VIDEOSCL, 0x30002000,
933    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_SYSCLK_MODBYP, BYP_MIX, 0),
934    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_SYSCLK_MODBYP, SEL_MIX, 0),
935    BRSP_ScriptType_eEndOfScript, 0x00, 0x00000000
936};
937
938static const uint32_t BRFM_P_ChScrNtscOpenCableCh3[] =
939{
940    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_AMFREQ, ((61.25/BRFM_PLL_FS)*0xFFFFFFFF),
941    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_ChScrNtscOpenCableRF, 0x00000000,
942    BRSP_ScriptType_eEndOfScript, 0x00, 0x00000000
943};
944
945static const uint32_t BRFM_P_ChScrNtscOpenCableCh4[] =
946{
947    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_AMFREQ, ((67.25/BRFM_PLL_FS)*0xFFFFFFFF),
948    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_ChScrNtscOpenCableRF, 0x00000000,
949    BRSP_ScriptType_eEndOfScript, 0x00, 0x00000000
950};
951
952static const uint32_t BRFM_P_ChScrNtscOpenCableBaseband[] =
953{
954    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_CLK27_FILSCL, AUDSCL, 0xfff),
955    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_VIDEOSCL, 0x00002000,
956    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_SYSCLK_MODBYP, BYP_MIX, 1),
957    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_SYSCLK_MODBYP, SEL_MIX, 1),
958    BRSP_ScriptType_eEndOfScript, 0x00, 0x00000000
959};
960
961/* Keep in mind that ChScrSIF and ChScrNtscOpenCableBaseband are not identical.
962   BYP_FM=0x0 for SIF and 0x1 for Baseband, which is set in BRFM_SetAudioEncoding() */
963static const uint32_t BRFM_P_ChScrSIF[] =
964{
965    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_CLK27_FILSCL, AUDSCL, 0xfff),
966    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_VIDEOSCL, 0x00002000,
967    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_SYSCLK_MODBYP, BYP_MIX, 1),
968    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_SYSCLK_MODBYP, SEL_MIX, 1),
969    BRSP_ScriptType_eEndOfScript, 0x00, 0x00000000
970};
971
972static const uint32_t BRFM_P_InitScrNtscOpenCableConfig[] =
973{
974    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMFREQ,     0x2AAAAAAB, /* 4.5MHz audio carrier*/
975    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_GroupDelayFCCScrNtsc, 0x00000000,
976    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_AudioTrapScrNtsc,     0x00000000,
977    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_CLKCTL,    (0x11000000 | BRFM_PLL_MULT),
978#if BRFM_SPUR_WORKAROUND
979    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_CLKCTL,    (0x11000000 | BRFM_PLL_MULT | 0x800000), /* bit 23, PLL_MN_OVERRIDE */
980#endif
981    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_CLIP1,      0x7ff88000,
982    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_CLIP2,      0x7ffc8000,
983    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_CLIPBYP,    0x00010001,
984    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_VIDEOSCL,   0x30002000,
985    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_AMCTL1,     0x12E401B0,
986    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_AMCTL2,     0x70000001,
987    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_MODTST,    0x00000504,
988    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_MODBYP,    0x00000000,
989    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_OUTSCL,    0x0000003f,
990    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_VIDEOBYP,   0x00000000,
991   
992#if (BRFM_REVID==40 || BRFM_REVID==50)
993    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_TSTCNTL,   0x00000000,
994    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,    0x28408001,
995    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_PLL_MISC1, 0x00000020,
996#elif (BRFM_REVID==51)
997    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_TSTCNTL,   0x00000000,
998    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,    0x28408001,
999    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DPLL_MISC1, 0x00000020,
1000#else
1001    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TSTCNTL,    0x00000000,
1002    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,    0x3f000001,
1003#endif
1004#if (BRFM_REVID>=50)
1005    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,    0x28408009, /* override TC_OBB_2 = 1 */
1006#endif
1007    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_MISC,      BRFM_PLL_MISC,
1008
1009#if BRFM_SPUR_WORKAROUND
1010    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_PLL_DIV1,  0x1c0101, /* reset value is 0x510102 */
1011#endif
1012    BRSP_ScriptType_eEndOfScript, 0x00,                  0x00000000
1013};
1014
1015static const uint32_t BRFM_P_ChScrPalICh3[] =
1016{
1017    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_CLKCTL, (0x11000000 | BRFM_PLL_MULT),
1018    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_AMFREQ, ((53.75/BRFM_PLL_FS)*0xFFFFFFFF),
1019    BRSP_ScriptType_eEndOfScript, 0x00,               0x00000000
1020};
1021
1022static const uint32_t BRFM_P_ChScrPalICh4[] =
1023{
1024    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_CLKCTL, (0x11000000 | BRFM_PLL_MULT),
1025    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_AMFREQ, ((61.75/BRFM_PLL_FS)*0xFFFFFFFF),
1026    BRSP_ScriptType_eEndOfScript, 0x00,               0x00000000
1027};
1028
1029static const uint32_t BRFM_P_ChScrPalIBaseband[] =
1030{
1031    BRSP_ScriptType_eEndOfScript, 0x00, 0x00000000
1032};
1033
1034static const uint32_t BRFM_P_InitScrPalIConfig[] =
1035{
1036    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMFREQ,   0x38E38E39, /* 6.0 MHz audio carrier*/
1037    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FILSCL,   0x46D00000,
1038    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_AudioTrapScrPalI,  0x00000000,
1039    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_GroupDelayScrPalI, 0x00000000,
1040#if (BRFM_REVID>=40)
1041    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,  0x28408001,
1042    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_AMCTL2,   0x70000001,
1043    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_VIDEOSCL, 0x20002000,
1044    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_OUTSCL,  0x0000003f,
1045    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_SYSCLK_MODBYP, BYP_MIX, 0),
1046    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_SYSCLK_MODBYP, SEL_MIX, 0),
1047#else
1048    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,  0x3f000001,
1049#endif
1050#if (BRFM_REVID>=50)
1051    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,  0x28408009, /* override TC_OBB_2 = 1 */
1052#endif
1053    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_MISC,    BRFM_PLL_MISC,
1054    BRSP_ScriptType_eEndOfScript, 0x00,                0x00000000
1055};
1056
1057static const uint32_t BRFM_P_ChScrPalDCh3[] =
1058{
1059    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_CLKCTL, (0x11000000 | BRFM_PLL_MULT),
1060    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_AMFREQ, ((65.75/BRFM_PLL_FS)*0xFFFFFFFF),
1061    BRSP_ScriptType_eEndOfScript, 0x00,               0x00000000
1062};
1063
1064static const uint32_t BRFM_P_ChScrPalDCh4[] =
1065{
1066    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_CLKCTL, (0x11000000 | BRFM_PLL_MULT),
1067    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_AMFREQ, ((77.25/BRFM_PLL_FS)*0xFFFFFFFF),
1068    BRSP_ScriptType_eEndOfScript, 0x00,               0x00000000
1069};
1070
1071static const uint32_t BRFM_P_ChScrPalDBaseband[] =
1072{
1073    BRSP_ScriptType_eEndOfScript, 0x00, 0x00000000
1074};
1075
1076static const uint32_t BRFM_P_InitScrPalDConfig[] =
1077{
1078    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMFREQ,   0x3DA12F68, /* 6.5 MHz audio carrier*/
1079    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FILSCL,   0x32200000,
1080    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_AudioTrapScrPalD,  0x00000000,
1081    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_GroupDelayScrPalD, 0x00000000,
1082#if (BRFM_REVID>=40)
1083    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,  0x28408001,
1084    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_AMCTL2,   0x70000001,
1085    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_VIDEOSCL, 0x20002000,
1086    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_OUTSCL,  0x0000003f,
1087    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_SYSCLK_MODBYP, BYP_MIX, 0),
1088    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_SYSCLK_MODBYP, SEL_MIX, 0),
1089#else
1090    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,  0x3f000001,
1091#endif
1092#if (BRFM_REVID>=50)
1093    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,  0x28408009, /* override TC_OBB_2 = 1 */
1094#endif
1095    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_MISC,    BRFM_PLL_MISC,
1096    BRSP_ScriptType_eEndOfScript, 0x00,                0x00000000
1097};
1098
1099static const uint32_t BRFM_P_ChScrPalDChinaCh3[] =
1100{   
1101    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_CLKCTL, (0x11000000 | BRFM_PLL_MULT),
1102    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_AMFREQ, ((65.75/BRFM_PLL_FS)*0xFFFFFFFF),
1103    BRSP_ScriptType_eEndOfScript, 0x00,               0x00000000
1104};
1105
1106static const uint32_t BRFM_P_ChScrPalDChinaCh4[] =
1107{
1108    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_CLKCTL, (0x11000000 | BRFM_PLL_MULT),
1109    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_AMFREQ, ((77.25/BRFM_PLL_FS)*0xFFFFFFFF),
1110    BRSP_ScriptType_eEndOfScript, 0x00,               0x00000000
1111};
1112
1113static const uint32_t BRFM_P_ChScrPalDChinaBaseband[] =
1114{
1115    BRSP_ScriptType_eEndOfScript, 0x00, 0x00000000
1116};
1117
1118static const uint32_t BRFM_P_InitScrPalDChinaConfig[] =
1119{
1120    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMFREQ,   0x3DA12F68, /* 6.5 MHz audio carrier*/
1121    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FILSCL,   0x32200000,
1122    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_AudioTrapScrPalD,        0x00000000,
1123    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_GroupDelayScrPalD_China, 0x00000000,
1124#if (BRFM_REVID>=40)
1125    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,  0x28408001,
1126    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_AMCTL2,   0x70000001,
1127    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_VIDEOSCL, 0x20002000,
1128    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_OUTSCL,  0x0000003f,
1129    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_SYSCLK_MODBYP, BYP_MIX, 0),
1130    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_SYSCLK_MODBYP, SEL_MIX, 0),
1131#else
1132    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,  0x3f000001,
1133#endif
1134#if (BRFM_REVID>=50)
1135    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,  0x28408009, /* override TC_OBB_2 = 1 */
1136#endif
1137    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_MISC,    BRFM_PLL_MISC,
1138    BRSP_ScriptType_eEndOfScript, 0x00,                0x00000000
1139};
1140
1141static const uint32_t BRFM_P_ChScrPalBGCh3[] =
1142{
1143    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_CLKCTL, (0x11000000 | BRFM_PLL_MULT),
1144    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_AMFREQ, ((55.25/BRFM_PLL_FS)*0xFFFFFFFF),
1145    BRSP_ScriptType_eEndOfScript, 0x00,               0x00000000
1146};
1147
1148static const uint32_t BRFM_P_ChScrPalBGCh4[] =
1149{
1150    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_CLKCTL, (0x11000000 | BRFM_PLL_MULT),
1151    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_AMFREQ, ((62.25/BRFM_PLL_FS)*0xFFFFFFFF),
1152    BRSP_ScriptType_eEndOfScript, 0x00,               0x00000000
1153};
1154
1155static const uint32_t BRFM_P_ChScrPalBGBaseband[] =
1156{
1157    BRSP_ScriptType_eEndOfScript, 0x00, 0x00000000
1158};
1159
1160static const uint32_t BRFM_P_InitScrPalBGConfig[] =
1161{
1162    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMFREQ,   0x3425ED09, /* 5.5 MHz audio carrier*/
1163    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FILSCL,   0x32200000,
1164    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_AudioTrapScrPalBG,  0x00000000,
1165    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_GroupDelayScrPalBG, 0x00000000,
1166#if (BRFM_REVID>=40)
1167    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,  0x28408001,
1168    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_AMCTL2,   0x70000001,
1169    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_VIDEOSCL, 0x20002000,
1170    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_OUTSCL,  0x0000003f,
1171    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_SYSCLK_MODBYP, BYP_MIX, 0),
1172    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_SYSCLK_MODBYP, SEL_MIX, 0),
1173#else
1174    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,  0x3f000001,
1175#endif
1176#if (BRFM_REVID>=50)
1177    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,  0x28408009, /* override TC_OBB_2 = 1 */
1178#endif
1179    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_MISC,    BRFM_PLL_MISC,
1180    BRSP_ScriptType_eEndOfScript, 0x00,                0x00000000
1181};
1182
1183static const uint32_t BRFM_P_ChScrPalMCh3[] =
1184{
1185    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_ChScrNtscOpenCableCh3, 0x00000000,
1186    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_CLK27_FILSCL, AUDSCL, 0x3bc), /* override to -15dB A/V ratio */
1187    BRSP_ScriptType_eEndOfScript, 0x00, 0x00000000
1188};
1189
1190static const uint32_t BRFM_P_ChScrPalMCh4[] =
1191{
1192    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_ChScrNtscOpenCableCh4, 0x00000000,
1193    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_CLK27_FILSCL, AUDSCL, 0x3bc),/* override to -15dB A/V ratio */
1194    BRSP_ScriptType_eEndOfScript, 0x00, 0x00000000
1195};
1196
1197static const uint32_t BRFM_P_ChScrPalNCh3[] =
1198{
1199    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_ChScrNtscOpenCableCh3, 0x00000000,
1200    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_CLK27_FILSCL, AUDSCL, 0x3bc), /* override to -15dB A/V ratio */
1201    BRSP_ScriptType_eEndOfScript, 0x00, 0x00000000
1202};
1203
1204static const uint32_t BRFM_P_ChScrPalNCh4[] =
1205{
1206    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_ChScrNtscOpenCableCh4, 0x00000000,
1207    BRSP_ScriptType_eRdModWr32, BRSP_RD_MOD_WR_32(RFM_CLK27_FILSCL, AUDSCL, 0x3bc), /* override to -15dB A/V ratio */
1208    BRSP_ScriptType_eEndOfScript, 0x00, 0x00000000
1209};
1210
1211static const uint32_t BRFM_P_InitScrPalNConfig[] =
1212{
1213    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FMFREQ,     0x2AAAAAAB, /* 4.5MHz audio carrier*/
1214    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_FILSCL,     0x3bc00000, /* override to -15dB A/V ratio */
1215    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_AudioTrapScrNtsc,        0x00000000,
1216    BRSP_ScriptType_eNestedScript, (uint32_t)BRFM_P_GroupDelayScrPalD_China, 0x00000000,
1217    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_CLKCTL,    (0x11000000 | BRFM_PLL_MULT),
1218    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_CLIP1,      0x7ff88000,
1219    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_CLIP2,      0x7ffc8000,
1220    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_CLIPBYP,    0x00010001,
1221    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_VIDEOSCL,   0x30002000,
1222    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_AMCTL1,     0x12E401B0,
1223    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_AMCTL2,     0x70000001,
1224    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_MODTST,    0x00000504,
1225    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_MODBYP,    0x00000000,
1226    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_OUTSCL,    0x0000003f,
1227    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_VIDEOBYP,   0x00000000,
1228   
1229#if (BRFM_REVID==40 || BRFM_REVID==50)
1230    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_TSTCNTL,   0x00000000,
1231    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,    0x28408001,
1232    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_PLL_MISC1, 0x00000020,
1233#elif (BRFM_REVID==51)
1234    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_TSTCNTL,   0x00000000,
1235    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,    0x28408001,
1236    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DPLL_MISC1, 0x00000020,
1237#else
1238    BRSP_ScriptType_eWrite32, BCHP_RFM_CLK27_TSTCNTL,    0x00000000,
1239    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,    0x3f000001,
1240#endif
1241#if (BRFM_REVID>=50)
1242    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_DACCTL,    0x28408009, /* override TC_OBB_2 = 1 */
1243#endif
1244    BRSP_ScriptType_eWrite32, BCHP_RFM_SYSCLK_MISC,      BRFM_PLL_MISC,
1245    BRSP_ScriptType_eEndOfScript, 0x00,                  0x00000000
1246};
1247
1248#ifndef VEC_GRPD_RFM
1249
1250static const BRFM_P_ModulationInfo BRFM_P_ModInfo[] =
1251{
1252    {
1253        BRFM_ModulationType_eNtscOpenCable,
1254        {
1255            BRFM_P_ChScrNtscOpenCableBaseband,
1256            BRFM_P_ChScrNtscOpenCableCh3,
1257            BRFM_P_ChScrNtscOpenCableCh4,
1258            BRFM_P_ChScrSIF,
1259        },
1260        {
1261            BRFM_P_AudioEncodingScrMonoNtsc,
1262            BRFM_P_AudioEncodingScrStereo,
1263            BRFM_P_AudioEncodingScrStereoExtDeviation,
1264            BRFM_P_AudioEncodingScrSap,      /* SAP only, same as Sap/Mono, but volume for Mono is diabled */
1265            BRFM_P_AudioEncodingScrSapMono,  /* Sap/Mono */
1266            BRFM_P_AudioEncodingScrJpMono1,  /* Japan Mono1 */
1267            BRFM_P_AudioEncodingScrMonoNtsc, /* Japan Mono2, Same as Mono */
1268            NULL,                            /* No NICAM support on NTSC */
1269            NULL,
1270            NULL
1271        },
1272        BRFM_P_InitScrNtscOpenCableConfig
1273    },
1274    {
1275        BRFM_ModulationType_ePalI,
1276        {
1277            BRFM_P_ChScrPalIBaseband,
1278            BRFM_P_ChScrPalICh3,
1279            BRFM_P_ChScrPalICh4,
1280            BRFM_P_ChScrSIF,
1281        },
1282        {
1283            BRFM_P_AudioEncodingScrMonoPalSecam, /* PAL only supports Mono */
1284            BRFM_P_AudioEncodingScrMonoPalSecam,
1285            NULL,
1286            BRFM_P_AudioEncodingScrMonoPalSecam,
1287            BRFM_P_AudioEncodingScrMonoPalSecam,
1288            BRFM_P_AudioEncodingScrMonoPalSecam,
1289            BRFM_P_AudioEncodingScrMonoPalSecam,
1290            BRFM_P_AudioEncodingScrNicam,        /* NICAM support */
1291            BRFM_P_AudioEncodingScrNicam,
1292            BRFM_P_AudioEncodingScrNicam
1293        },
1294        BRFM_P_InitScrPalIConfig
1295    },
1296    {
1297        BRFM_ModulationType_ePalD,
1298        {
1299            BRFM_P_ChScrPalDBaseband,
1300            BRFM_P_ChScrPalDCh3,
1301            BRFM_P_ChScrPalDCh4,
1302            BRFM_P_ChScrSIF,
1303        },
1304        {
1305            BRFM_P_AudioEncodingScrMonoPalD,  /* PAL-D only supports Mono */
1306            BRFM_P_AudioEncodingScrMonoPalD,
1307            NULL,
1308            BRFM_P_AudioEncodingScrMonoPalD,
1309            BRFM_P_AudioEncodingScrMonoPalD,
1310            BRFM_P_AudioEncodingScrMonoPalD,
1311            BRFM_P_AudioEncodingScrMonoPalD,
1312            BRFM_P_AudioEncodingScrNicamPalD, /* NICAM support */
1313            BRFM_P_AudioEncodingScrNicamPalD,
1314            BRFM_P_AudioEncodingScrNicamPalD
1315        },
1316        BRFM_P_InitScrPalDConfig
1317    },
1318    {
1319        BRFM_ModulationType_ePalDChina,
1320        {
1321            BRFM_P_ChScrPalDChinaBaseband,
1322            BRFM_P_ChScrPalDChinaCh3,
1323            BRFM_P_ChScrPalDChinaCh4,
1324            BRFM_P_ChScrSIF,
1325        },
1326        {
1327            BRFM_P_AudioEncodingScrMonoPalD,  /* PAL-D only supports Mono */
1328            BRFM_P_AudioEncodingScrMonoPalD,
1329            NULL,
1330            BRFM_P_AudioEncodingScrMonoPalD,
1331            BRFM_P_AudioEncodingScrMonoPalD,
1332            BRFM_P_AudioEncodingScrMonoPalD,
1333            BRFM_P_AudioEncodingScrMonoPalD,
1334            BRFM_P_AudioEncodingScrNicamPalD, /* NICAM support */
1335            BRFM_P_AudioEncodingScrNicamPalD,
1336            BRFM_P_AudioEncodingScrNicamPalD
1337        },
1338        BRFM_P_InitScrPalDChinaConfig
1339    },
1340    {
1341        BRFM_ModulationType_ePalBG,
1342        {
1343            BRFM_P_ChScrPalBGBaseband,
1344            BRFM_P_ChScrPalBGCh3,
1345            BRFM_P_ChScrPalBGCh4,
1346            BRFM_P_ChScrSIF,
1347        },
1348        {
1349            BRFM_P_AudioEncodingScrMonoPalSecam, /* PAL-D only supports Mono */
1350            BRFM_P_AudioEncodingScrMonoPalSecam,
1351            NULL,
1352            BRFM_P_AudioEncodingScrMonoPalSecam,
1353            BRFM_P_AudioEncodingScrMonoPalSecam,
1354            BRFM_P_AudioEncodingScrMonoPalSecam,
1355            BRFM_P_AudioEncodingScrMonoPalSecam,
1356            BRFM_P_AudioEncodingScrNicam,        /* NICAM support */
1357            BRFM_P_AudioEncodingScrNicam,
1358            BRFM_P_AudioEncodingScrNicam
1359        },
1360        BRFM_P_InitScrPalBGConfig
1361    },
1362    {
1363        BRFM_ModulationType_ePalM, /* Pal-M is very similar to NTSC, with one override for A/V ratio */
1364        {
1365            BRFM_P_ChScrNtscOpenCableBaseband,
1366            BRFM_P_ChScrPalMCh3,
1367            BRFM_P_ChScrPalMCh4,
1368            BRFM_P_ChScrSIF,
1369        },
1370        {
1371            BRFM_P_AudioEncodingScrMonoNtsc, /* PAL-M only supports Mono */
1372            BRFM_P_AudioEncodingScrMonoNtsc,
1373            NULL,
1374            BRFM_P_AudioEncodingScrMonoNtsc,
1375            BRFM_P_AudioEncodingScrMonoNtsc,
1376            BRFM_P_AudioEncodingScrMonoNtsc,
1377            BRFM_P_AudioEncodingScrMonoNtsc,
1378            NULL,
1379            NULL,
1380            NULL
1381        },
1382        BRFM_P_InitScrNtscOpenCableConfig /* Pal-M uses the NTSC open cable init script with some overrides */
1383    },
1384    {
1385        BRFM_ModulationType_ePalN,
1386        {
1387            BRFM_P_ChScrNtscOpenCableBaseband,
1388            BRFM_P_ChScrPalNCh3, /* Pal-N uses the NTSC open cable scripts with some overrides */
1389            BRFM_P_ChScrPalNCh4,
1390            BRFM_P_ChScrSIF,
1391        },
1392        {
1393            BRFM_P_AudioEncodingScrMonoNtsc, /* PAL-N only supports Mono */
1394            BRFM_P_AudioEncodingScrMonoNtsc,
1395            NULL,
1396            BRFM_P_AudioEncodingScrMonoNtsc,
1397            BRFM_P_AudioEncodingScrMonoNtsc,
1398            BRFM_P_AudioEncodingScrMonoNtsc,
1399            BRFM_P_AudioEncodingScrMonoNtsc,
1400            NULL,
1401            NULL,
1402            NULL
1403        },
1404        BRFM_P_InitScrPalNConfig
1405    }
1406};
1407
1408const BRFM_P_ModulationInfo *BRFM_P_GetModInfoPtr(
1409    BRFM_ModulationType modType /* [in] Requested modulation type */
1410    )
1411{
1412    unsigned idx;
1413    const BRFM_P_ModulationInfo *retVal = NULL;
1414
1415    for (idx=0; idx<(sizeof(BRFM_P_ModInfo)/sizeof(BRFM_P_ModulationInfo)); idx++) {
1416        if (BRFM_P_ModInfo[idx].modType == modType) {
1417            retVal = &BRFM_P_ModInfo[idx];
1418            break;
1419        }
1420    }
1421    return retVal;
1422}
1423
1424#endif /* #ifndef VEC_GRPD_RFM */
Note: See TracBrowser for help on using the repository browser.