misctbl.c
来自「ESS3890+SL原代码(1*16内存)」· C语言 代码 · 共 2,135 行 · 第 1/4 页
C
2,135 行
/* Copyright 1996, ESS Technology, Inc. *//* SCCSID @(#)misctbl.c 4.34 02/14/05 *//* * $Log$ */#include "common.h"#include "tdm.h"#ifndef MEMORY_DEVICE#include "servo.h"/************************************************************************ * For TDM. * ************************************************************************/#if 0/* From tdm.h *//* * Notice that endian settings for video data are just oppposit to the * real data format since transport automaticaly flips the endian. * For CDDA, endian settings are the same as data format since we * flip it again at the output of the transport. */typedef struct { unsigned short slot; /* tdmslot value */ unsigned short delay; /* tdmdelay value */ unsigned short ctl; /* tdmctl value */ unsigned short low; /* Don't turn on TDM if lower than this */} TDM_settings;typedef struct { TDM_settings cd[2];} TDM_SETTING;#endifTDM_SETTING tdmsettings[] = { /* CDROM */ /* AUDIO CD */ {{{0x0f, 0xd, 0x8060, 8}, {0x0f, 0xd, 0x8060, 24}}}, /* TOSHIBA TC9263F */ {{{0x2d, 0xd, 0x8120, 16}, {0x1b, 0xd, 0x8060, 16}}}, /* SANYO */ {{{0x2d, 0xf, 0x8060, 16}, {0x2d, 0xf, 0x8060, 16}}}, /* PHILIPS */ {{{0x1b, 0xd, 0x8060, 0}, {0x1b, 0xd, 0x8060, 0}}}, /* SONY */ {{{0x66, 0xd, 0x8060, 0}, {0x66, 0xd, 0x8060, 0}}}, /* MATSUSHITA */#if 0 {{{0x2d, 0xf, 0x8060, 16}, {0x2d, 0xf, 0x8060, 40}}}, /* MITSUBISHI */ {{{0x1b, 0xd, 0x8060, 0}, {0x2d, 0xd, 0x8060, 16}}}, /* THOMSON */ /* Technics MN6626. Outputs 32b SONY format */ {{{0x33, 0xd, 0x8060, 0}, {0x33, 0xd, 0x8060, 0}}}, /* YAMAHA */#endif};#endif /* MEMORY_DEVICE *//************************************************************************ * For IR. * ************************************************************************//* * When DSC_IRQ is defined, we use internal 3881 counters to keep * track of time. * * The counter increments at .1517ms interval (2048/13.5MHz). It only * triggers on one edge (default is falling) as oppose to the old * style where we triggers on both edge. *//* Timer values when CPU is running at full speed */unsigned int IR_powerup_tbl[] = {#if (defined DSC_IRQ || defined IO3898) /* Use 3881's internal counter to keep track of time */#ifdef IR_PHILIPS /* For Philips format */ 3, 8, 9, 16,#else /* For NEC and SANYO formats */ 85, /* Leader low+high min (12.89ms)*/ 93, /* Leader low+high max (14.10ms)*/ 12, /* Gap+data 1 minimum (1.82ms) */ 19, /* Gap+data 1 maximum (2.88ms) */ 4, /* Gap+data 0 minimum (0.61ms) */ 11, /* Gap+data 0 maximum (1.67ms) */#ifdef IRREP 70, /* Rep low+high min (10.62ms) */ 78, /* Rep low+high max (11.83ms) */#endif /* IRREP */#ifdef IR_GAMEPAD 25, /* Leader minimum */ 33, /* Leader maximum */ 3, /* Data 1 minimum */ 6, /* Data 1 maximum */ 7, /* Data 0 minimum */ 10, /* Data 0 maximum */#endif#endif /* else of IR_PHILIPS */#else /* Use CPU's timer2 to keep track of time */#ifdef IR_PHILIPS /* For Philips format */ CPUCLK * 50, /* minimum length of half bit */ CPUCLK * 130, /* maximum length of half bit */ CPUCLK * 140, /* minimum length of one bit */ CPUCLK * 240, /* maximum length of one bit */#else /* For NEC and SANYO formats */ CPUCLK * 880, /* Leader low minimum */ CPUCLK * 920, /* Leader low maximum */ CPUCLK * 430, /* Leader high minimum */ CPUCLK * 470, /* Leader high maximum */ CPUCLK * 205, /* Data 1 minimum */ CPUCLK * 245, /* Data 1 maximum */ CPUCLK * 92, /* Data 0 minimum */ CPUCLK * 132, /* Data 0 maximum */#ifdef IRREP CPUCLK * 205, /* Repeat high minimun */ CPUCLK * 245, /* Repeat high mazimun */ CPUCLK * 36, /* Repeat data minimum */ CPUCLK * 76 /* Repeat data maxmun */#endif /* IRREP */#ifdef IR_GAMEPAD CPUCLK * 380, /* Leader minimum */ CPUCLK * 420, /* Leader maximum */ CPUCLK * 64, /* Data 1 minimum */ CPUCLK * 104, /* Data 1 maximum */ CPUCLK * 110, /* Data 0 minimum */ CPUCLK * 150, /* Data 0 maximum */#endif#endif /* else of IR_PHILIPS */#endif /* else of DSC_IRQ */};#ifndef DSC_IRQ/* * Timer values when CPU is running at power-down speed. This table is * only needed only when we are not using 3881's internal counter. */unsigned int IR_powerdn_tbl[] = {#ifdef IR_PHILIPS /* For Philips format */ IDLECLK * 50, /* minimum length of half bit */ IDLECLK * 130, /* maximum length of half bit */ IDLECLK * 140, /* minimum length of one bit */ IDLECLK * 240, /* maximum length of one bit */#else /* For NEC and SANYO formats */ IDLECLK * 880, /* Leader low minimum */ IDLECLK * 920, /* Leader low maximum */ IDLECLK * 430, /* Leader high minimum */ IDLECLK * 470, /* Leader high maximum */ IDLECLK * 205, /* Data 1 minimum */ IDLECLK * 245, /* Data 1 maximum */ IDLECLK * 92, /* Data 0 minimum */ IDLECLK * 132, /* Data 0 maximum */#ifdef IRREP IDLECLK * 205, /* Repeat high minimun */ IDLECLK * 245, /* Repeat high mazimun */ IDLECLK * 36, /* Repeat data minimum */ IDLECLK * 76 /* Repeat data maxmun */#endif /* IRREP */#ifdef IR_GAMEPAD CPUCLK * 380, /* Leader minimum */ CPUCLK * 420, /* Leader maximum */ CPUCLK * 64 , /* Data 1 minimum */ CPUCLK * 104, /* Data 1 maximum */ CPUCLK * 110, /* Data 0 minimum */ CPUCLK * 150, /* Data 0 maximum */#endif#endif /* else of IR_PHILIPS */};#endif/************************************************************************ * Display palette (fancy start-up screen). * ************************************************************************/struct { unsigned char component[3];} palette_std[] = { {0x6b, 0x00, 0x00}, /*white*/ {0x27, 0x0d, 0xb2}, /*yellow*/ {0x0b, 0xb2, 0x1a}, /*cyan*/ {0xfa, 0xbf, 0xcd}, /*green*/ {0xdf, 0x41, 0x33}, /*magenta*/ {0xce, 0x4e, 0xe6}, /*red*/ {0xb2, 0xf3, 0x4e}, /*blue*/ {0x80, 0x00, 0x00}, /*black*/ {0xe4, 0xf3, 0x4e}, /*custom*/ {0xa0, 0x00, 0x00}, /*custom*/ {0xa0, 0x00, 0x00}, /*custom*/ {0xa0, 0x00, 0x00} /*custom*/};/************************************************************************ * For echo (44.1K -> 48K) * ************************************************************************/#if 0unsigned int up_samp[] = { 0x40003a2e, 0x345d2e8b, 0x28ba22e8, 0x1d171745, 0x11740ba2, 0x05d10000, 0x000005d1, 0x0ba21174, 0x17451d17, 0x22e828ba, 0x2e8b345d, 0x3a2e4000};#endif/************************************************************************ * For deemphasis. * ************************************************************************/unsigned int bp_demp[] = {#if 0 /* 5KHz sin wave -5.28dB, 16KHz sin wave -10.63dB */ 0xffe10023, 0x0005001e, 0x00070030, 0xffec0001, 0xfff30010, 0x000b008c, 0x00aa0167, 0x012004b5, 0x0e6a04b5, 0x01200167, 0x00aa008c, 0x000b0010, 0xfff30001, 0xffec0030, 0x0007001e, 0x00050023, 0xffe10000, 0x00000000 /* 5KHz sin wave -4.10dB, 16KHz sin wave -9.16dB */ 0xffe2fff8, 0xffe5001c, 0xffee000a, 0xffe9fffe, 0xffda0033, 0xffe80075, 0x009d0148, 0x0151045f, 0x108e045f, 0x01510148, 0x009d0075, 0xffe80033, 0xffdafffe, 0xffe9000a, 0xffee001c, 0xffe5fff8, 0xffe20000, 0x00000000#else /* 5KHz sin wave -4.58dB, 16KHz sin wave -9.17dB */ 0xfff90027, 0xfffd0016, 0xffe40008, 0xffe3fff8, 0xffd8003e, 0xfff9007c, 0x00a5014f, 0x0148041d, 0x1042041d, 0x0148014f, 0x00a5007c, 0xfff9003e, 0xffd8fff8, 0xffe30008, 0xffe40016, 0xfffd0027, 0xfff90000, 0x00000000#endif}; /************************************************************************ * For spatializer. * ************************************************************************/unsigned int bp_ham[] = {#ifdef SPATIAL /* first */ 0x18c320f7, 0xf6a4eb88, 0xfd81fff8, 0x00190049, 0x00060037, 0xffff0027, 0xffff0018, 0x00010009, 0x0000fff7, 0xffffffe8, 0x0001ffd9, 0x0001ffc9, 0xfffaffb7, 0xffe70008, 0x027f1478, 0x095cdf09, 0xe73d0000, 0x00000000, /* second */ 0x1ddb1616, 0xdad90072, 0x0116fdce, 0x00e8fe69, 0x00b8fea4, 0x009ffecd, 0x0087fef4, 0x006aff1e, 0x000000e2, 0xff96010c, 0xff790133, 0xff61015c, 0xff480197, 0xff180232, 0xfeeaff8e, 0x2527e9ea, 0xe2250000, 0x00000000, /* Hall (widest) */ 0x1d07249e, 0x01dbf3c1, 0xfe05fda7, 0xffcdff10, 0xffebff6b, 0xfff0ff93, 0xfff3ffa7, 0xfff4ffb1, 0x0000004f, 0x000c0059, 0x000d006d, 0x00100095, 0x001500f0, 0x00330259, 0x01fb0c3f, 0xfe25db62, 0xe2f90000, 0x00000000,#endif /* Vocal cut */ 0xfccc0799, 0x0733f833, 0x02000e33, 0x0b33fbcc, 0xff000100, 0xf3ccfd99, 0x05cc0233, 0x0b990933, 0x0b990933, 0x0b990233, 0x05ccfd99, 0xf3cc0100, 0xff00fbcc, 0x0b330e33, 0x0200f833, 0x07330799, 0xfccc0000, 0x00000000};ushort e20log[25] = { 0x0404, 0x0482, 0x050f, 0x05ad, 0x065e, 0x0725, 0x0804, 0x08ff, 0x0a18, 0x0b53, 0x0cb5, 0x0e42, 0x1000, 0x11f3, 0x1424, 0x1699, 0x195b, 0x1c73, 0x1fec, 0x23d1, 0x2830, 0x2d18, 0x3298, 0x38c5, 0x3fb2};ushort ecoeff_a[32] = { /* 44100Hz */ 0x7f96, 0x7ef4, 0x0034, 0x0082, 0xc068, 0xc104, 0xffcc, 0xff7e, 0x7d1e, 0x7846, 0x0156, 0x0340, 0xc2ae, 0xc680, 0xfeaa, 0xfcc0, 0x6ad2, 0x3f12, 0x0750, 0x0ff4, 0xce9e, 0xdfe8, 0xf8b0, 0xf00c, 0xde36, 0x0000, 0x2084, 0x0000, 0x0106, 0x0000, 0xdf7c, 0x0000};/************************************************************************ * For game sound filter * ************************************************************************/#ifdef GAMEBOYunsigned int bp_gbsnd[] = {#if 0/* 1200 - 4096 */ 0x026c04bc, 0x07900aa0, 0x0d941008, 0x11a8123c, 0x11a81008, 0x0d940aa0, 0x079004bc, 0x026c0000,/* 6K - 8K */ 0x037cfe64, 0xf7f8f760, 0x020015f4, 0x29b431f4, 0x29b415f4, 0x0200f760, 0xf7f8fe64, 0x037c0000,#endif/* 11K - 13K */ 0xfcecfb54, 0x06ac05b4, 0xf190f99c, 0x310054c0, 0x3100f99c, 0xf19005b4, 0x06acfb54, 0xfcec0000,#if 0/* 15K - 18K */ 0xfd080580, 0xfa00ffc8, 0x0ad0e828, 0x22a4756c, 0x22a4e828, 0x0ad0ffc8, 0xfad00580, 0xfd080000,/* test full pass */ 0x00000000, 0x00000000, 0x00000000, 0x00007fff, 0x00000000, 0x00000000, 0x00000000, 0x00000000#endif#if 0/* 4K - 6K */ 0xfb10f9e8, 0xfc4c0300, 0x0d201810, 0x208423b4, 0x20841810, 0x0d200300, 0xfc4cf9e8, 0xfb100000,/* 6K - 8K */ 0x037cfe64, 0xf7f8f760, 0x020015f4, 0x29b431f4, 0x29b415f4, 0x0200f760, 0xf7f8fe64, 0x037c0000,/* 8K - 10K */ 0x02880660, 0x00b0f594, 0xf62c0d94, 0x2f443f58, 0x2f440d94, 0xf62cf594, 0x00b00660, 0x02880000,/* 10K - 12K */ 0xfad40050, 0x0884ffdc, 0xf04c0028, 0x31704df8, 0x31700028, 0xf04cffdc, 0x08840050, 0xfad40000,/* test full pass */ 0x00000000, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000/* 1200 - 4096 */ 0x07f30f87, 0x18c622ce, 0x2c783486, 0x39de3bbd, 0x39de3486, 0x2c7822ce, 0x18c60f87, 0x07f30000,/* 1200 - 6000 */ 0x006401f4, 0x04d008e4, 0x0dac1234, 0x157c16ac, 0x157c1234, 0x0dac08e4, 0x04d001f4, 0x00640000,/* test */ 0xfc8cffd8, 0x04ac0a74, 0x10601580, 0x18fc1a38, 0x18fc1580, 0x10600a74, 0x04acffd8, 0xfc8c0000,/* 8820 - 13230 */ 0xfd600000, 0x06480000, 0xf1d40000, 0x30e84e20, 0x30e80000, 0xf1d40000, 0x06480000, 0xfd600000#endif};#endif#ifdef REVERBunsigned short rvb_amp[] = { /* 0 ~ 32767 */ /* A1 A2 A3 A4 B3 B4 A */ 16384, 19961, 22938, 26214, 26214, 29491, 22938 /* 6553 */};unsigned short rvb_del[] = { /* 0 ~ 44 in multiple of 4 for D1 ~ D4, 0 ~ 528 in multiple of 48 for L */ /* D1 D2 D3 D4 L */ 4, 8, 12, 24, 288};unsigned int rvb_vp_code [12][4] = { {0x50006104, 0x10e03400 ,0x80004714 ,0x00003000}, {0x50006108, 0x10e03400 ,0x80004728 ,0x00003000}, {0x5000610c, 0x10e03400 ,0x8000473c ,0x00003000}, {0x50006100, 0x10e03410 ,0x80004700 ,0x00003110}, {0x50006104, 0x10e03410 ,0x80004714 ,0x00003110}, {0x50006108, 0x10e03410 ,0x80004728 ,0x00003110}, {0x5000610c, 0x10e03410 ,0x8000473c ,0x00003110}, {0x50006100, 0x10e03420 ,0x80004700 ,0x00003220}, {0x50006104, 0x10e03420 ,0x80004714 ,0x00003220}, {0x50006108, 0x10e03420 ,0x80004728 ,0x00003220}, {0x5000610c, 0x10e03420 ,0x8000473c ,0x00003220}, {0x50006100, 0x10e03430 ,0x80004700 ,0x00003330} };unsigned short rvb_vp_offset [4][4] = { { 0x000e, 0x000f, 0x0012, 0x0013 }, { 0x0025, 0x0026, 0x0029, 0x002a }, { 0x0047, 0x0048, 0x004b, 0x004c }, { 0x006f, 0x0070, 0x0073, 0x0074 }};#endif/************************************************************************ * Key shift related. * ************************************************************************/#define Quarter_Tone#ifdef Quarter_Toneint vp_key_port[] = { 0x004c0c43, 0x004e0483, 0x00510cc4, 0x005410c6, 0x00560cc8, 0x0058094a, 0x005a05ce, 0x00000000, 0x006685ef, 0x0068896b, 0x006c90e7, 0x006f8ce5, 0x007284a4, 0x00759424, 0x0078a863};#elseint vp_key_port[] = { 0x00403821, 0x00441481, 0x00482842, 0x004c0c43, 0x00510cc4, 0x00560cc8, 0x005a05ce, 0x00000000, 0x006685ef, 0x006c90e7, 0x007284a4, 0x0078a863, 0x0080b842, 0x00888c61, 0x0090d821};#endif#ifdef DSC/************************************************************************ * DSC audio clock frequencies * ************************************************************************/typedef struct { unsigned char cnt0l; unsigned char cnt0h; unsigned char cnt1l; unsigned char cnt1h; unsigned char pllm; unsigned char plln;} DSC_AUDIO;DSC_AUDIO DSC_audiosettings[] = { /* cnt0l cnt0h cnt1l cnt1h pllm plln */ {0x20, 0xe6, 0x7a, 0x07, 0x7c, 0x30}, /* 11.2896MHz (44.1K) */ {0x00, 0xe6, 0xd1, 0x08, 0x4a, 0x1f}, /* 12.2880MHZ (48.0K) */ {0x00, 0xe4, 0xd1, 0x06, 0xe0, 0x3f}, /* 8.1920MHz (32.0K) */};#endif#ifdef SERVOunsigned short abs2trk[] = { 0, 452, 891, 1319, 1737, 2145, 2543, 2933, 3315, 3690, 4057, 4418, 4772, 5120, 5462, 5799, 6131, 6458, 6780, 7097, 7410, 7719, 8024, 8325, 8622, 8916, 9206, 9492, 9776, 10056, 10334, 10608, 10880, 11149, 11415, 11678, 11940, 12198, 12454, 12708, 12960, 13209, 13457, 13702, 13945, 14186, 14426, 14663, 14899, 15132, 15364, 15595, 15823, 16050, 16275, 16499, 16721, 16942, 17161, 17379, 17595, 17810, 18024, 18236, 18447, 18656, 18864, 19071, 19277, 19482, 19685, 19888, 20089, 20289, 20487, 20685, 20882, 21078, 21272, 21466, 21658, 21800, 21950, 22100, 22250, 22350, 22450, 22550, 22650, 22700, 22750, 22800, 22850, 22900, 22950, 23000, 23000, 23000, 23000, 23000 /* * NOTE: only 100 entries needed,i.e. for 0-99 minutes (inclusive) */};#ifdef CXDSERVOunsigned short filtertbl[] = { /* 0x34xxxx commands */#ifdef CXD3059 0x000c, 0x0510, 0x0e82, 0x105a, 0x1128, 0x1330, 0x19f1, 0x2081, 0x2153, 0x2232, 0x2330, 0x304a, 0x3800, 0x3900, 0x3a00, 0x3b00, 0x40fa, 0x436a, 0x4447, 0x456d, 0x46e9, 0xb0a0, 0xc083,#elif defined(CXD3068) 0x0080, 0x0504, 0x1140, 0x400c, 0x436a, 0x444A, 0x4572#else /* default */ 0x0080, 0x0504, 0x1140, 0x400b, 0x436a, 0x4447, 0x457d#endif};#endif /* CXDSERVO */#ifdef ESS3721 /* maor *//* don't go past CDinfo.leadout, keep lower jump level while near leadout (maor 04/03/2004)*//* seek in out */#ifdef LOAD_213Cushort ab[16] = {0x100, 0x005, 0xa0, 0x003, 0x105, 0x008, 0x105, 0x008, 0x270, 0x00a, 0x240, 0x009, 0x220, 0x009, 0x200, 0x008 };#else#ifdef LOAD_SANYOushort ab[16] = {0x180, 0x030, 0x180, 0x030, 0x1b0, 0x060, 0x1b0, 0x060, 0x270, 0x0a0, 0x240, 0x090, 0x220, 0x090, 0x200, 0x080 };#else /* LOAD_B31 */ushort ab[16] = {0x100, 0x005, 0xa0, 0x003, 0x105, 0x008, 0x105, 0x008, 0x270, 0x00a, 0x240, 0x009, 0x220, 0x009, 0x200, 0x008 };#endif#endifunsigned short sled_parameter[]= {#ifdef KA9258 /* sled in parameter */ 0xfc0, /* sled normal parameter */ 0xfe0, /* M move max in parameter direction value is 0 */ 0xfd0, /* M move min in parameter direction value is 0 */ 0xfe0, /* M move max out parameter 1 */ 0xfc0, /* M move min out parameter 1 */ 0xfe0, /* Jump 2N in parameter */ 0xffa, /* Jump 2N out parameter */ 0xffa#elif defined(KA9259) /* sled in parameter */ 0xf00, /* sled normal parameter */ 0xfe0, /* M move max in parameter direction value is 0 */ 0xfa0, /* M move min in parameter direction value is 0 */ 0xfb0, /* M move max out parameter 1 */ 0xfa0, /* M move min out parameter 1 */ 0xfb0, /* Jump 2N in parameter */ 0xfc0, /* Jump 2N out parameter */ 0xfd0#else /* default */#ifdef LOAD_SANYO /* sled in parameter */ 0xf00, /* sled normal parameter */ 0xfe0, /* M move max in parameter direction value is 0 */ 0xfa0, /* M move min in parameter direction value is 0 */ 0xfb0, /* M move max out parameter 1 */ 0xfa0,
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?