⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 au88x0_xtalk.c

📁 鼎力推荐!本程序是基于嵌入式LUNUX系统开发的源程序代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/*************************************************************************** *            au88x0_cxtalk.c * *  Wed Nov 19 16:29:47 2003 *  Copyright  2003  mjander *  mjander@users.sourceforge.org ****************************************************************************//* *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU Library General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#include "au88x0_xtalk.h"/* Data (a whole lot of data.... ) */static short const sXtalkWideKLeftEq = 0x269C;static short const sXtalkWideKRightEq = 0x269C;static short const sXtalkWideKLeftXt = 0xF25E;static short const sXtalkWideKRightXt = 0xF25E;static short const sXtalkWideShiftLeftEq = 1;static short const sXtalkWideShiftRightEq = 1;static short const sXtalkWideShiftLeftXt = 0;static short const sXtalkWideShiftRightXt = 0;static unsigned short const wXtalkWideLeftDelay = 0xd;static unsigned short const wXtalkWideRightDelay = 0xd;static short const sXtalkNarrowKLeftEq = 0x468D;static short const sXtalkNarrowKRightEq = 0x468D;static short const sXtalkNarrowKLeftXt = 0xF82E;static short const sXtalkNarrowKRightXt = 0xF82E;static short const sXtalkNarrowShiftLeftEq = 0x3;static short const sXtalkNarrowShiftRightEq = 0x3;static short const sXtalkNarrowShiftLeftXt = 0;static short const sXtalkNarrowShiftRightXt = 0;static unsigned short const wXtalkNarrowLeftDelay = 0x7;static unsigned short const wXtalkNarrowRightDelay = 0x7;static xtalk_gains_t const asXtalkGainsDefault = {	0x4000, 0x4000, 4000, 0x4000, 4000, 0x4000, 4000, 0x4000, 4000,	0x4000};static xtalk_gains_t const asXtalkGainsTest = {	0x8000, 0x7FFF, 0, 0xFFFF, 0x0001, 0xC000, 0x4000, 0xFFFE, 0x0002,	0};static xtalk_gains_t const asXtalkGains1Chan = {	0x7FFF, 0, 0, 0, 0x7FFF, 0, 0, 0, 0, 0};// Input gain for 4 A3D slices. One possible input pair is left zero.static xtalk_gains_t const asXtalkGainsAllChan = {	0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF,	0	    //0x7FFF,0x7FFF,0x7FFF,0x7FFF,0x7fff,0x7FFF,0x7FFF,0x7FFF,0x7FFF,0x7fff};static xtalk_gains_t const asXtalkGainsZeros = {	0, 0, 0, 0, 0, 0, 0, 0, 0, 0};static xtalk_dline_t const alXtalkDlineZeros = {	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	0, 0, 0,	0, 0, 0, 0, 0, 0, 0};static xtalk_dline_t const alXtalkDlineTest = {	0xFC18, 0x03E8FFFF, 0x186A0, 0x7960FFFE, 1, 0xFFFFFFFF,	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	0, 0, 0, 0};static xtalk_instate_t const asXtalkInStateZeros = { 0, 0, 0, 0 };static xtalk_instate_t const asXtalkInStateTest =    { 0xFF80, 0x0080, 0xFFFF, 0x0001 };static xtalk_state_t const asXtalkOutStateZeros = {	{0, 0, 0, 0},	{0, 0, 0, 0},	{0, 0, 0, 0},	{0, 0, 0, 0},	{0, 0, 0, 0}};static short const sDiamondKLeftEq = 0x401d;static short const sDiamondKRightEq = 0x401d;static short const sDiamondKLeftXt = 0xF90E;static short const sDiamondKRightXt = 0xF90E;static short const sDiamondShiftLeftEq = 1;	/* 0xF90E Is this a bug ??? */static short const sDiamondShiftRightEq = 1;static short const sDiamondShiftLeftXt = 0;static short const sDiamondShiftRightXt = 0;static unsigned short const wDiamondLeftDelay = 0xb;static unsigned short const wDiamondRightDelay = 0xb;static xtalk_coefs_t const asXtalkWideCoefsLeftEq = {	{0xEC4C, 0xDCE9, 0xFDC2, 0xFEEC, 0},	{0x5F60, 0xCBCB, 0xFC26, 0x0305, 0},	{0x340B, 0xf504, 0x6CE8, 0x0D23, 0x00E4},	{0xD500, 0x8D76, 0xACC7, 0x5B05, 0x00FA},	{0x7F04, 0xC0FA, 0x0263, 0xFDA2, 0}};static xtalk_coefs_t const asXtalkWideCoefsRightEq = {	{0xEC4C, 0xDCE9, 0xFDC2, 0xFEEC, 0},	{0x5F60, 0xCBCB, 0xFC26, 0x0305, 0},	{0x340B, 0xF504, 0x6CE8, 0x0D23, 0x00E4},	{0xD500, 0x8D76, 0xACC7, 0x5B05, 0x00FA},	{0x7F04, 0xC0FA, 0x0263, 0xFDA2, 0}};static xtalk_coefs_t const asXtalkWideCoefsLeftXt = {	{0x86C3, 0x7B55, 0x89C3, 0x005B, 0x0047},	{0x6000, 0x206A, 0xC6CA, 0x40FF, 0},	{0x1100, 0x1164, 0xA1D7, 0x90FC, 0x0001},	{0xDC00, 0x9E77, 0xB8C7, 0x0AFF, 0},	{0, 0, 0, 0, 0}};static xtalk_coefs_t const asXtalkWideCoefsRightXt = {	{0x86C3, 0x7B55, 0x89C3, 0x005B, 0x0047},	{0x6000, 0x206A, 0xC6CA, 0x40FF, 0},	{0x1100, 0x1164, 0xA1D7, 0x90FC, 0x0001},	{0xDC00, 0x9E77, 0xB8C7, 0x0AFF, 0},	{0, 0, 0, 0, 0}};static xtalk_coefs_t const asXtalkNarrowCoefsLeftEq = {	{0x50B5, 0xD07C, 0x026D, 0xFD21, 0},	{0x460F, 0xE44F, 0xF75E, 0xEFA6, 0},	{0x556D, 0xDCAB, 0x2098, 0xF0F2, 0},	{0x7E03, 0xC1F0, 0x007D, 0xFF89, 0},	{0x383E, 0xFD9D, 0xB278, 0x4547, 0}};static xtalk_coefs_t const asXtalkNarrowCoefsRightEq = {	{0x50B5, 0xD07C, 0x026D, 0xFD21, 0},	{0x460F, 0xE44F, 0xF75E, 0xEFA6, 0},	{0x556D, 0xDCAB, 0x2098, 0xF0F2, 0},	{0x7E03, 0xC1F0, 0x007D, 0xFF89, 0},	{0x383E, 0xFD9D, 0xB278, 0x4547, 0}};static xtalk_coefs_t const asXtalkNarrowCoefsLeftXt = {	{0x3CB2, 0xDF49, 0xF6EA, 0x095B, 0},	{0x6777, 0xC915, 0xFEAF, 0x00B1, 0},	{0x7762, 0xC7D9, 0x025B, 0xFDA6, 0},	{0x6B7A, 0xD2AA, 0xF2FB, 0x0B64, 0},	{0, 0, 0, 0, 0}};static xtalk_coefs_t const asXtalkNarrowCoefsRightXt = {	{0x3CB2, 0xDF49, 0xF6EA, 0x095B, 0},	{0x6777, 0xC915, 0xFEAF, 0x00B1, 0},	{0x7762, 0xC7D9, 0x025B, 0xFDA6, 0},	{0x6B7A, 0xD2AA, 0xF2FB, 0x0B64, 0},	{0, 0, 0, 0, 0}};static xtalk_coefs_t const asXtalkCoefsZeros = {	{0, 0, 0, 0, 0},	{0, 0, 0, 0, 0},	{0, 0, 0, 0, 0},	{0, 0, 0, 0, 0},	{0, 0, 0, 0, 0}};static xtalk_coefs_t const asXtalkCoefsPipe = {	{0, 0, 0x0FA0, 0, 0},	{0, 0, 0x0FA0, 0, 0},	{0, 0, 0x0FA0, 0, 0},	{0, 0, 0x0FA0, 0, 0},	{0, 0, 0x1180, 0, 0},};static xtalk_coefs_t const asXtalkCoefsNegPipe = {	{0, 0, 0xF380, 0, 0},	{0, 0, 0xF380, 0, 0},	{0, 0, 0xF380, 0, 0},	{0, 0, 0xF380, 0, 0},	{0, 0, 0xF200, 0, 0}};static xtalk_coefs_t const asXtalkCoefsNumTest = {	{0, 0, 0xF380, 0x8000, 0x6D60},	{0, 0, 0, 0, 0},	{0, 0, 0, 0, 0},	{0, 0, 0, 0, 0},	{0, 0, 0, 0, 0}};static xtalk_coefs_t const asXtalkCoefsDenTest = {	{0xC000, 0x2000, 0x4000, 0, 0},	{0, 0, 0, 0, 0},	{0, 0, 0, 0, 0},	{0, 0, 0, 0, 0},	{0, 0, 0, 0, 0}};static xtalk_state_t const asXtalkOutStateTest = {	{0x7FFF, 0x0004, 0xFFFC, 0},	{0xFE00, 0x0008, 0xFFF8, 0x4000},	{0x200, 0x0010, 0xFFF0, 0xC000},	{0x8000, 0x0020, 0xFFE0, 0},	{0, 0, 0, 0}};static xtalk_coefs_t const asDiamondCoefsLeftEq = {	{0x0F1E, 0x2D05, 0xF8E3, 0x07C8, 0},	{0x45E2, 0xCA51, 0x0448, 0xFCE7, 0},	{0xA93E, 0xDBD5, 0x022C, 0x028A, 0},	{0, 0, 0, 0, 0},	{0, 0, 0, 0, 0}};static xtalk_coefs_t const asDiamondCoefsRightEq = {	{0x0F1E, 0x2D05, 0xF8E3, 0x07C8, 0},	{0x45E2, 0xCA51, 0x0448, 0xFCE7, 0},	{0xA93E, 0xDBD5, 0x022C, 0x028A, 0},	{0, 0, 0, 0, 0},	{0, 0, 0, 0, 0}};static xtalk_coefs_t const asDiamondCoefsLeftXt = {	{0x3B50, 0xFE08, 0xF959, 0x0060, 0},	{0x9FCB, 0xD8F1, 0x00A2, 0x003A, 0},	{0, 0, 0, 0, 0},	{0, 0, 0, 0, 0},	{0, 0, 0, 0, 0}};static xtalk_coefs_t const asDiamondCoefsRightXt = {	{0x3B50, 0xFE08, 0xF959, 0x0060, 0},	{0x9FCB, 0xD8F1, 0x00A2, 0x003A, 0},	{0, 0, 0, 0, 0},	{0, 0, 0, 0, 0},	{0, 0, 0, 0, 0}}; /**//* XTalk EQ and XT */static voidvortex_XtalkHw_SetLeftEQ(vortex_t * vortex, short arg_0, short arg_4,			 xtalk_coefs_t const coefs){	int i;	for (i = 0; i < 5; i++) {		hwwrite(vortex->mmio, 0x24200 + i * 0x24, coefs[i][0]);		hwwrite(vortex->mmio, 0x24204 + i * 0x24, coefs[i][1]);		hwwrite(vortex->mmio, 0x24208 + i * 0x24, coefs[i][2]);		hwwrite(vortex->mmio, 0x2420c + i * 0x24, coefs[i][3]);		hwwrite(vortex->mmio, 0x24210 + i * 0x24, coefs[i][4]);	}	hwwrite(vortex->mmio, 0x24538, arg_0 & 0xffff);	hwwrite(vortex->mmio, 0x2453C, arg_4 & 0xffff);}static voidvortex_XtalkHw_SetRightEQ(vortex_t * vortex, short arg_0, short arg_4,			  xtalk_coefs_t const coefs){	int i;	for (i = 0; i < 5; i++) {		hwwrite(vortex->mmio, 0x242b4 + i * 0x24, coefs[i][0]);		hwwrite(vortex->mmio, 0x242b8 + i * 0x24, coefs[i][1]);		hwwrite(vortex->mmio, 0x242bc + i * 0x24, coefs[i][2]);		hwwrite(vortex->mmio, 0x242c0 + i * 0x24, coefs[i][3]);		hwwrite(vortex->mmio, 0x242c4 + i * 0x24, coefs[i][4]);	}	hwwrite(vortex->mmio, 0x24540, arg_0 & 0xffff);	hwwrite(vortex->mmio, 0x24544, arg_4 & 0xffff);}static voidvortex_XtalkHw_SetLeftXT(vortex_t * vortex, short arg_0, short arg_4,			 xtalk_coefs_t const coefs){	int i;	for (i = 0; i < 5; i++) {		hwwrite(vortex->mmio, 0x24368 + i * 0x24, coefs[i][0]);		hwwrite(vortex->mmio, 0x2436c + i * 0x24, coefs[i][1]);		hwwrite(vortex->mmio, 0x24370 + i * 0x24, coefs[i][2]);		hwwrite(vortex->mmio, 0x24374 + i * 0x24, coefs[i][3]);		hwwrite(vortex->mmio, 0x24378 + i * 0x24, coefs[i][4]);	}	hwwrite(vortex->mmio, 0x24548, arg_0 & 0xffff);	hwwrite(vortex->mmio, 0x2454C, arg_4 & 0xffff);}static voidvortex_XtalkHw_SetRightXT(vortex_t * vortex, short arg_0, short arg_4,			  xtalk_coefs_t const coefs){	int i;	for (i = 0; i < 5; i++) {		hwwrite(vortex->mmio, 0x2441C + i * 0x24, coefs[i][0]);		hwwrite(vortex->mmio, 0x24420 + i * 0x24, coefs[i][1]);		hwwrite(vortex->mmio, 0x24424 + i * 0x24, coefs[i][2]);		hwwrite(vortex->mmio, 0x24428 + i * 0x24, coefs[i][3]);		hwwrite(vortex->mmio, 0x2442C + i * 0x24, coefs[i][4]);	}	hwwrite(vortex->mmio, 0x24550, arg_0 & 0xffff);	hwwrite(vortex->mmio, 0x24554, arg_4 & 0xffff);}static voidvortex_XtalkHw_SetLeftEQStates(vortex_t * vortex,			       xtalk_instate_t const arg_0,			       xtalk_state_t const coefs){	int i;	for (i = 0; i < 5; i++) {		hwwrite(vortex->mmio, 0x24214 + i * 0x24, coefs[i][0]);		hwwrite(vortex->mmio, 0x24218 + i * 0x24, coefs[i][1]);		hwwrite(vortex->mmio, 0x2421C + i * 0x24, coefs[i][2]);		hwwrite(vortex->mmio, 0x24220 + i * 0x24, coefs[i][3]);	}	hwwrite(vortex->mmio, 0x244F8 + i * 0x24, arg_0[0]);	hwwrite(vortex->mmio, 0x244FC + i * 0x24, arg_0[1]);	hwwrite(vortex->mmio, 0x24500 + i * 0x24, arg_0[2]);	hwwrite(vortex->mmio, 0x24504 + i * 0x24, arg_0[3]);}static voidvortex_XtalkHw_SetRightEQStates(vortex_t * vortex,				xtalk_instate_t const arg_0,				xtalk_state_t const coefs){	int i;	for (i = 0; i < 5; i++) {		hwwrite(vortex->mmio, 0x242C8 + i * 0x24, coefs[i][0]);		hwwrite(vortex->mmio, 0x242CC + i * 0x24, coefs[i][1]);		hwwrite(vortex->mmio, 0x242D0 + i * 0x24, coefs[i][2]);		hwwrite(vortex->mmio, 0x244D4 + i * 0x24, coefs[i][3]);	}	hwwrite(vortex->mmio, 0x24508 + i * 0x24, arg_0[0]);	hwwrite(vortex->mmio, 0x2450C + i * 0x24, arg_0[1]);	hwwrite(vortex->mmio, 0x24510 + i * 0x24, arg_0[2]);	hwwrite(vortex->mmio, 0x24514 + i * 0x24, arg_0[3]);}static voidvortex_XtalkHw_SetLeftXTStates(vortex_t * vortex,			       xtalk_instate_t const arg_0,			       xtalk_state_t const coefs){	int i;	for (i = 0; i < 5; i++) {		hwwrite(vortex->mmio, 0x2437C + i * 0x24, coefs[i][0]);		hwwrite(vortex->mmio, 0x24380 + i * 0x24, coefs[i][1]);		hwwrite(vortex->mmio, 0x24384 + i * 0x24, coefs[i][2]);		hwwrite(vortex->mmio, 0x24388 + i * 0x24, coefs[i][3]);	}	hwwrite(vortex->mmio, 0x24518 + i * 0x24, arg_0[0]);	hwwrite(vortex->mmio, 0x2451C + i * 0x24, arg_0[1]);	hwwrite(vortex->mmio, 0x24520 + i * 0x24, arg_0[2]);	hwwrite(vortex->mmio, 0x24524 + i * 0x24, arg_0[3]);}static voidvortex_XtalkHw_SetRightXTStates(vortex_t * vortex,				xtalk_instate_t const arg_0,				xtalk_state_t const coefs){	int i;	for (i = 0; i < 5; i++) {		hwwrite(vortex->mmio, 0x24430 + i * 0x24, coefs[i][0]);		hwwrite(vortex->mmio, 0x24434 + i * 0x24, coefs[i][1]);		hwwrite(vortex->mmio, 0x24438 + i * 0x24, coefs[i][2]);		hwwrite(vortex->mmio, 0x2443C + i * 0x24, coefs[i][3]);	}	hwwrite(vortex->mmio, 0x24528 + i * 0x24, arg_0[0]);	hwwrite(vortex->mmio, 0x2452C + i * 0x24, arg_0[1]);	hwwrite(vortex->mmio, 0x24530 + i * 0x24, arg_0[2]);	hwwrite(vortex->mmio, 0x24534 + i * 0x24, arg_0[3]);}#if 0static voidvortex_XtalkHw_GetLeftEQ(vortex_t * vortex, short *arg_0, short *arg_4,			 xtalk_coefs_t coefs){	int i;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -