Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) // SPDX-License-Identifier: GPL-2.0-or-later
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  *            au88x0_cxtalk.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  *  Wed Nov 19 16:29:47 2003
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  *  Copyright  2003  mjander
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  *  mjander@users.sourceforge.org
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  ****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #include "au88x0_xtalk.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) /* Data (a whole lot of data.... ) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) static short const sXtalkWideKLeftEq = 0x269C;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) static short const sXtalkWideKRightEq = 0x269C;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) static short const sXtalkWideKLeftXt = 0xF25E;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) static __maybe_unused short const sXtalkWideKRightXt = 0xF25E;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) static short const sXtalkWideShiftLeftEq = 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) static short const sXtalkWideShiftRightEq = 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) static short const sXtalkWideShiftLeftXt = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) static __maybe_unused short const sXtalkWideShiftRightXt = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) static unsigned short const wXtalkWideLeftDelay = 0xd;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) static unsigned short const wXtalkWideRightDelay = 0xd;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) static short const sXtalkNarrowKLeftEq = 0x468D;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) static short const sXtalkNarrowKRightEq = 0x468D;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) static short const sXtalkNarrowKLeftXt = 0xF82E;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) static __maybe_unused short const sXtalkNarrowKRightXt = 0xF82E;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) static short const sXtalkNarrowShiftLeftEq = 0x3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) static short const sXtalkNarrowShiftRightEq = 0x3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) static short const sXtalkNarrowShiftLeftXt = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) static __maybe_unused short const sXtalkNarrowShiftRightXt = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) static unsigned short const wXtalkNarrowLeftDelay = 0x7;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) static unsigned short const wXtalkNarrowRightDelay = 0x7;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) static __maybe_unused xtalk_gains_t const asXtalkGainsDefault = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 	0x4000, 0x4000, 0x4000, 0x4000, 0x4000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 	0x4000, 0x4000, 0x4000, 0x4000,	0x4000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) static __maybe_unused xtalk_gains_t const asXtalkGainsTest = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	0x7fff, 0x8000, 0x0000, 0x0000, 0x0001,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	0xffff, 0x4000, 0xc000, 0x0002, 0xfffe
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) static __maybe_unused xtalk_gains_t const asXtalkGains1Chan = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	0x7FFF, 0, 0, 0, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	0x7FFF, 0, 0, 0, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) // Input gain for 4 A3D slices. One possible input pair is left zero.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) static xtalk_gains_t const asXtalkGainsAllChan = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF,	0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) static xtalk_gains_t const asXtalkGainsZeros = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) static xtalk_dline_t const alXtalkDlineZeros = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) static __maybe_unused xtalk_dline_t const alXtalkDlineTest = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	0x0000fc18, 0xfff03e8, 0x000186a0, 0xfffe7960, 1, 0xffffffff, 0, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	0, 0, 0, 0, 0, 0, 0, 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) static xtalk_instate_t const asXtalkInStateZeros = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	0, 0, 0, 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) static __maybe_unused xtalk_instate_t const asXtalkInStateTest = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	0x0080, 0xff80, 0x0001, 0xffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) static xtalk_state_t const asXtalkOutStateZeros = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	{0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 	{0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	{0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 	{0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 	{0, 0, 0, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) static short const sDiamondKLeftEq = 0x401d;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) static short const sDiamondKRightEq = 0x401d;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) static short const sDiamondKLeftXt = 0xF90E;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) static __maybe_unused short const sDiamondKRightXt = 0xF90E;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) static short const sDiamondShiftLeftEq = 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) static short const sDiamondShiftRightEq = 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) static short const sDiamondShiftLeftXt = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) static __maybe_unused short const sDiamondShiftRightXt = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) static unsigned short const wDiamondLeftDelay = 0xb;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) static unsigned short const wDiamondRightDelay = 0xb;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) static xtalk_coefs_t const asXtalkWideCoefsLeftEq = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 	{0xEC4C, 0xDCE9, 0xFDC2, 0xFEEC, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 	{0x5F60, 0xCBCB, 0xFC26, 0x0305, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	{0x340B, 0xe8f5, 0x236c, 0xe40d, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	{0x76d5, 0xc78d, 0x05ac, 0xfa5b, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	{0x7F04, 0xC0FA, 0x0263, 0xFDA2, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) static xtalk_coefs_t const asXtalkWideCoefsRightEq = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	{0xEC4C, 0xDCE9, 0xFDC2, 0xFEEC, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 	{0x5F60, 0xCBCB, 0xFC26, 0x0305, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 	{0x340B, 0xe8f5, 0x236c, 0xe40d, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 	{0x76d5, 0xc78d, 0x05ac, 0xfa5b, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 	{0x7F04, 0xC0FA, 0x0263, 0xFDA2, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) static xtalk_coefs_t const asXtalkWideCoefsLeftXt = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 	{0x55c6, 0xc97b, 0x005b, 0x0047, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 	{0x6a60, 0xca20, 0xffc6, 0x0040, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 	{0x6411, 0xd711, 0xfca1, 0x0190, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	{0x77dc, 0xc79e, 0xffb8, 0x000a, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 	{0, 0, 0, 0, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) static __maybe_unused xtalk_coefs_t const asXtalkWideCoefsRightXt = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 	{0x55c6, 0xc97b, 0x005b, 0x0047, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 	{0x6a60, 0xca20, 0xffc6, 0x0040, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 	{0x6411, 0xd711, 0xfca1, 0x0190, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 	{0x77dc, 0xc79e, 0xffb8, 0x000a, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 	{0, 0, 0, 0, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) static xtalk_coefs_t const asXtalkNarrowCoefsLeftEq = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 	{0x50B5, 0xD07C, 0x026D, 0xFD21, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 	{0x460F, 0xE44F, 0xF75E, 0xEFA6, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 	{0x556D, 0xDCAB, 0x2098, 0xF0F2, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 	{0x7E03, 0xC1F0, 0x007D, 0xFF89, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 	{0x383E, 0xFD9D, 0xB278, 0x4547, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) static xtalk_coefs_t const asXtalkNarrowCoefsRightEq = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 	{0x50B5, 0xD07C, 0x026D, 0xFD21, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 	{0x460F, 0xE44F, 0xF75E, 0xEFA6, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 	{0x556D, 0xDCAB, 0x2098, 0xF0F2, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 	{0x7E03, 0xC1F0, 0x007D, 0xFF89, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 	{0x383E, 0xFD9D, 0xB278, 0x4547, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) static xtalk_coefs_t const asXtalkNarrowCoefsLeftXt = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 	{0x3CB2, 0xDF49, 0xF6EA, 0x095B, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 	{0x6777, 0xC915, 0xFEAF, 0x00B1, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 	{0x7762, 0xC7D9, 0x025B, 0xFDA6, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 	{0x6B7A, 0xD2AA, 0xF2FB, 0x0B64, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 	{0, 0, 0, 0, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) static __maybe_unused xtalk_coefs_t const asXtalkNarrowCoefsRightXt = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 	{0x3CB2, 0xDF49, 0xF6EA, 0x095B, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 	{0x6777, 0xC915, 0xFEAF, 0x00B1, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 	{0x7762, 0xC7D9, 0x025B, 0xFDA6, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 	{0x6B7A, 0xD2AA, 0xF2FB, 0x0B64, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 	{0, 0, 0, 0, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) static xtalk_coefs_t const asXtalkCoefsZeros = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 	{0, 0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 	{0, 0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 	{0, 0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 	{0, 0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 	{0, 0, 0, 0, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) static xtalk_coefs_t const asXtalkCoefsPipe = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 	{0, 0, 0x0FA0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 	{0, 0, 0x0FA0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 	{0, 0, 0x0FA0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 	{0, 0, 0x0FA0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 	{0, 0, 0x1180, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) static __maybe_unused xtalk_coefs_t const asXtalkCoefsNegPipe = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 	{0, 0, 0xF380, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 	{0, 0, 0xF380, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 	{0, 0, 0xF380, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 	{0, 0, 0xF380, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 	{0, 0, 0xF200, 0, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) static __maybe_unused xtalk_coefs_t const asXtalkCoefsNumTest = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 	{0, 0, 0xF380, 0x8000, 0x6D60},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 	{0, 0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 	{0, 0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 	{0, 0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 	{0, 0, 0, 0, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) static __maybe_unused xtalk_coefs_t const asXtalkCoefsDenTest = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) 	{0xC000, 0x2000, 0x4000, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 	{0, 0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 	{0, 0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 	{0, 0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 	{0, 0, 0, 0, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) static __maybe_unused xtalk_state_t const asXtalkOutStateTest = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) 	{0x7FFF, 0x0004, 0xFFFC, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) 	{0xFE00, 0x0008, 0xFFF8, 0x4000},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) 	{0x0200, 0x0010, 0xFFF0, 0xC000},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 	{0x8000, 0x0020, 0xFFE0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) 	{0, 0, 0, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) static xtalk_coefs_t const asDiamondCoefsLeftEq = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 	{0x0F1E, 0x2D05, 0xF8E3, 0x07C8, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 	{0x45E2, 0xCA51, 0x0448, 0xFCE7, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 	{0xA93E, 0xDBD5, 0x022C, 0x028A, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 	{0, 0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 	{0, 0, 0, 0, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) static xtalk_coefs_t const asDiamondCoefsRightEq = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) 	{0x0F1E, 0x2D05, 0xF8E3, 0x07C8, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) 	{0x45E2, 0xCA51, 0x0448, 0xFCE7, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 	{0xA93E, 0xDBD5, 0x022C, 0x028A, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) 	{0, 0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 	{0, 0, 0, 0, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) static xtalk_coefs_t const asDiamondCoefsLeftXt = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) 	{0x3B50, 0xFE08, 0xF959, 0x0060, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) 	{0x9FCB, 0xD8F1, 0x00A2, 0x003A, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) 	{0, 0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) 	{0, 0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) 	{0, 0, 0, 0, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) static __maybe_unused xtalk_coefs_t const asDiamondCoefsRightXt = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) 	{0x3B50, 0xFE08, 0xF959, 0x0060, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) 	{0x9FCB, 0xD8F1, 0x00A2, 0x003A, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) 	{0, 0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) 	{0, 0, 0, 0, 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) 	{0, 0, 0, 0, 0}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239)  /**/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) /* XTalk EQ and XT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) vortex_XtalkHw_SetLeftEQ(vortex_t * vortex, short arg_0, short arg_4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) 			 xtalk_coefs_t const coefs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) 	for (i = 0; i < 5; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) 		hwwrite(vortex->mmio, 0x24200 + i * 0x24, coefs[i][0]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) 		hwwrite(vortex->mmio, 0x24204 + i * 0x24, coefs[i][1]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) 		hwwrite(vortex->mmio, 0x24208 + i * 0x24, coefs[i][2]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) 		hwwrite(vortex->mmio, 0x2420c + i * 0x24, coefs[i][3]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) 		hwwrite(vortex->mmio, 0x24210 + i * 0x24, coefs[i][4]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) 	hwwrite(vortex->mmio, 0x24538, arg_0 & 0xffff);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) 	hwwrite(vortex->mmio, 0x2453C, arg_4 & 0xffff);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) vortex_XtalkHw_SetRightEQ(vortex_t * vortex, short arg_0, short arg_4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) 			  xtalk_coefs_t const coefs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) 	for (i = 0; i < 5; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) 		hwwrite(vortex->mmio, 0x242b4 + i * 0x24, coefs[i][0]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) 		hwwrite(vortex->mmio, 0x242b8 + i * 0x24, coefs[i][1]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) 		hwwrite(vortex->mmio, 0x242bc + i * 0x24, coefs[i][2]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) 		hwwrite(vortex->mmio, 0x242c0 + i * 0x24, coefs[i][3]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) 		hwwrite(vortex->mmio, 0x242c4 + i * 0x24, coefs[i][4]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) 	hwwrite(vortex->mmio, 0x24540, arg_0 & 0xffff);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) 	hwwrite(vortex->mmio, 0x24544, arg_4 & 0xffff);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) vortex_XtalkHw_SetLeftXT(vortex_t * vortex, short arg_0, short arg_4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) 			 xtalk_coefs_t const coefs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) 	for (i = 0; i < 5; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) 		hwwrite(vortex->mmio, 0x24368 + i * 0x24, coefs[i][0]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) 		hwwrite(vortex->mmio, 0x2436c + i * 0x24, coefs[i][1]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) 		hwwrite(vortex->mmio, 0x24370 + i * 0x24, coefs[i][2]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) 		hwwrite(vortex->mmio, 0x24374 + i * 0x24, coefs[i][3]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) 		hwwrite(vortex->mmio, 0x24378 + i * 0x24, coefs[i][4]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) 	hwwrite(vortex->mmio, 0x24548, arg_0 & 0xffff);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) 	hwwrite(vortex->mmio, 0x2454C, arg_4 & 0xffff);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) vortex_XtalkHw_SetRightXT(vortex_t * vortex, short arg_0, short arg_4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) 			  xtalk_coefs_t const coefs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) 	for (i = 0; i < 5; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) 		hwwrite(vortex->mmio, 0x2441C + i * 0x24, coefs[i][0]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) 		hwwrite(vortex->mmio, 0x24420 + i * 0x24, coefs[i][1]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) 		hwwrite(vortex->mmio, 0x24424 + i * 0x24, coefs[i][2]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) 		hwwrite(vortex->mmio, 0x24428 + i * 0x24, coefs[i][3]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) 		hwwrite(vortex->mmio, 0x2442C + i * 0x24, coefs[i][4]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) 	hwwrite(vortex->mmio, 0x24550, arg_0 & 0xffff);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) 	hwwrite(vortex->mmio, 0x24554, arg_4 & 0xffff);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) vortex_XtalkHw_SetLeftEQStates(vortex_t * vortex,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) 			       xtalk_instate_t const arg_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) 			       xtalk_state_t const coefs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) 	for (i = 0; i < 5; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) 		hwwrite(vortex->mmio, 0x24214 + i * 0x24, coefs[i][0]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) 		hwwrite(vortex->mmio, 0x24218 + i * 0x24, coefs[i][1]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) 		hwwrite(vortex->mmio, 0x2421C + i * 0x24, coefs[i][2]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) 		hwwrite(vortex->mmio, 0x24220 + i * 0x24, coefs[i][3]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) 	hwwrite(vortex->mmio, 0x244F8, arg_0[0]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) 	hwwrite(vortex->mmio, 0x244FC, arg_0[1]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) 	hwwrite(vortex->mmio, 0x24500, arg_0[2]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) 	hwwrite(vortex->mmio, 0x24504, arg_0[3]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) vortex_XtalkHw_SetRightEQStates(vortex_t * vortex,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) 				xtalk_instate_t const arg_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) 				xtalk_state_t const coefs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) 	for (i = 0; i < 5; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) 		hwwrite(vortex->mmio, 0x242C8 + i * 0x24, coefs[i][0]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) 		hwwrite(vortex->mmio, 0x242CC + i * 0x24, coefs[i][1]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) 		hwwrite(vortex->mmio, 0x242D0 + i * 0x24, coefs[i][2]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) 		hwwrite(vortex->mmio, 0x244D4 + i * 0x24, coefs[i][3]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) 	hwwrite(vortex->mmio, 0x24508, arg_0[0]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) 	hwwrite(vortex->mmio, 0x2450C, arg_0[1]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) 	hwwrite(vortex->mmio, 0x24510, arg_0[2]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) 	hwwrite(vortex->mmio, 0x24514, arg_0[3]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) vortex_XtalkHw_SetLeftXTStates(vortex_t * vortex,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) 			       xtalk_instate_t const arg_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) 			       xtalk_state_t const coefs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) 	for (i = 0; i < 5; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) 		hwwrite(vortex->mmio, 0x2437C + i * 0x24, coefs[i][0]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) 		hwwrite(vortex->mmio, 0x24380 + i * 0x24, coefs[i][1]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) 		hwwrite(vortex->mmio, 0x24384 + i * 0x24, coefs[i][2]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) 		hwwrite(vortex->mmio, 0x24388 + i * 0x24, coefs[i][3]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) 	hwwrite(vortex->mmio, 0x24518, arg_0[0]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) 	hwwrite(vortex->mmio, 0x2451C, arg_0[1]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) 	hwwrite(vortex->mmio, 0x24520, arg_0[2]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) 	hwwrite(vortex->mmio, 0x24524, arg_0[3]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) vortex_XtalkHw_SetRightXTStates(vortex_t * vortex,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) 				xtalk_instate_t const arg_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) 				xtalk_state_t const coefs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) 	for (i = 0; i < 5; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) 		hwwrite(vortex->mmio, 0x24430 + i * 0x24, coefs[i][0]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) 		hwwrite(vortex->mmio, 0x24434 + i * 0x24, coefs[i][1]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) 		hwwrite(vortex->mmio, 0x24438 + i * 0x24, coefs[i][2]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) 		hwwrite(vortex->mmio, 0x2443C + i * 0x24, coefs[i][3]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) 	hwwrite(vortex->mmio, 0x24528, arg_0[0]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) 	hwwrite(vortex->mmio, 0x2452C, arg_0[1]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) 	hwwrite(vortex->mmio, 0x24530, arg_0[2]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) 	hwwrite(vortex->mmio, 0x24534, arg_0[3]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) #if 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) vortex_XtalkHw_GetLeftEQ(vortex_t * vortex, short *arg_0, short *arg_4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) 			 xtalk_coefs_t coefs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) 	for (i = 0; i < 5; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) 		coefs[i][0] = hwread(vortex->mmio, 0x24200 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) 		coefs[i][1] = hwread(vortex->mmio, 0x24204 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) 		coefs[i][2] = hwread(vortex->mmio, 0x24208 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) 		coefs[i][3] = hwread(vortex->mmio, 0x2420c + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) 		coefs[i][4] = hwread(vortex->mmio, 0x24210 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) 	*arg_0 = hwread(vortex->mmio, 0x24538) & 0xffff;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) 	*arg_4 = hwread(vortex->mmio, 0x2453c) & 0xffff;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) vortex_XtalkHw_GetRightEQ(vortex_t * vortex, short *arg_0, short *arg_4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) 			  xtalk_coefs_t coefs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) 	for (i = 0; i < 5; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) 		coefs[i][0] = hwread(vortex->mmio, 0x242b4 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) 		coefs[i][1] = hwread(vortex->mmio, 0x242b8 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) 		coefs[i][2] = hwread(vortex->mmio, 0x242bc + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) 		coefs[i][3] = hwread(vortex->mmio, 0x242c0 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) 		coefs[i][4] = hwread(vortex->mmio, 0x242c4 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) 	*arg_0 = hwread(vortex->mmio, 0x24540) & 0xffff;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) 	*arg_4 = hwread(vortex->mmio, 0x24544) & 0xffff;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) vortex_XtalkHw_GetLeftXT(vortex_t * vortex, short *arg_0, short *arg_4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) 			 xtalk_coefs_t coefs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) 	for (i = 0; i < 5; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) 		coefs[i][0] = hwread(vortex->mmio, 0x24368 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) 		coefs[i][1] = hwread(vortex->mmio, 0x2436C + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) 		coefs[i][2] = hwread(vortex->mmio, 0x24370 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) 		coefs[i][3] = hwread(vortex->mmio, 0x24374 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) 		coefs[i][4] = hwread(vortex->mmio, 0x24378 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) 	*arg_0 = hwread(vortex->mmio, 0x24548) & 0xffff;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) 	*arg_4 = hwread(vortex->mmio, 0x2454C) & 0xffff;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) vortex_XtalkHw_GetRightXT(vortex_t * vortex, short *arg_0, short *arg_4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) 			  xtalk_coefs_t coefs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) 	for (i = 0; i < 5; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) 		coefs[i][0] = hwread(vortex->mmio, 0x2441C + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) 		coefs[i][1] = hwread(vortex->mmio, 0x24420 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) 		coefs[i][2] = hwread(vortex->mmio, 0x24424 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) 		coefs[i][3] = hwread(vortex->mmio, 0x24428 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) 		coefs[i][4] = hwread(vortex->mmio, 0x2442C + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) 	*arg_0 = hwread(vortex->mmio, 0x24550) & 0xffff;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) 	*arg_4 = hwread(vortex->mmio, 0x24554) & 0xffff;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) vortex_XtalkHw_GetLeftEQStates(vortex_t * vortex, xtalk_instate_t arg_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) 			       xtalk_state_t coefs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) 	for (i = 0; i < 5; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) 		coefs[i][0] = hwread(vortex->mmio, 0x24214 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) 		coefs[i][1] = hwread(vortex->mmio, 0x24218 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) 		coefs[i][2] = hwread(vortex->mmio, 0x2421C + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) 		coefs[i][3] = hwread(vortex->mmio, 0x24220 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) 	arg_0[0] = hwread(vortex->mmio, 0x244F8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) 	arg_0[1] = hwread(vortex->mmio, 0x244FC);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) 	arg_0[2] = hwread(vortex->mmio, 0x24500);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) 	arg_0[3] = hwread(vortex->mmio, 0x24504);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) vortex_XtalkHw_GetRightEQStates(vortex_t * vortex, xtalk_instate_t arg_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) 				xtalk_state_t coefs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) 	for (i = 0; i < 5; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) 		coefs[i][0] = hwread(vortex->mmio, 0x242C8 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) 		coefs[i][1] = hwread(vortex->mmio, 0x242CC + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) 		coefs[i][2] = hwread(vortex->mmio, 0x242D0 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) 		coefs[i][3] = hwread(vortex->mmio, 0x242D4 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) 	arg_0[0] = hwread(vortex->mmio, 0x24508);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) 	arg_0[1] = hwread(vortex->mmio, 0x2450C);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) 	arg_0[2] = hwread(vortex->mmio, 0x24510);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) 	arg_0[3] = hwread(vortex->mmio, 0x24514);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) vortex_XtalkHw_GetLeftXTStates(vortex_t * vortex, xtalk_instate_t arg_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) 			       xtalk_state_t coefs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) 	for (i = 0; i < 5; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) 		coefs[i][0] = hwread(vortex->mmio, 0x2437C + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) 		coefs[i][1] = hwread(vortex->mmio, 0x24380 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) 		coefs[i][2] = hwread(vortex->mmio, 0x24384 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) 		coefs[i][3] = hwread(vortex->mmio, 0x24388 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) 	arg_0[0] = hwread(vortex->mmio, 0x24518);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) 	arg_0[1] = hwread(vortex->mmio, 0x2451C);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) 	arg_0[2] = hwread(vortex->mmio, 0x24520);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) 	arg_0[3] = hwread(vortex->mmio, 0x24524);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) vortex_XtalkHw_GetRightXTStates(vortex_t * vortex, xtalk_instate_t arg_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) 				xtalk_state_t coefs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) 	for (i = 0; i < 5; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) 		coefs[i][0] = hwread(vortex->mmio, 0x24430 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) 		coefs[i][1] = hwread(vortex->mmio, 0x24434 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) 		coefs[i][2] = hwread(vortex->mmio, 0x24438 + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) 		coefs[i][3] = hwread(vortex->mmio, 0x2443C + i * 0x24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) 	arg_0[0] = hwread(vortex->mmio, 0x24528);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) 	arg_0[1] = hwread(vortex->mmio, 0x2452C);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) 	arg_0[2] = hwread(vortex->mmio, 0x24530);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) 	arg_0[3] = hwread(vortex->mmio, 0x24534);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) /* Gains */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) vortex_XtalkHw_SetGains(vortex_t * vortex, xtalk_gains_t const gains)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) 	for (i = 0; i < XTGAINS_SZ; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) 		hwwrite(vortex->mmio, 0x244D0 + (i * 4), gains[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) vortex_XtalkHw_SetGainsAllChan(vortex_t * vortex)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) 	vortex_XtalkHw_SetGains(vortex, asXtalkGainsAllChan);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) #if 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) static void vortex_XtalkHw_GetGains(vortex_t * vortex, xtalk_gains_t gains)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) 	for (i = 0; i < XTGAINS_SZ; i++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) 		gains[i] = hwread(vortex->mmio, 0x244D0 + i * 4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) /* Delay parameters */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) vortex_XtalkHw_SetDelay(vortex_t * vortex, unsigned short right,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) 			unsigned short left)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) 	u32 esp0 = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) 	esp0 &= 0x1FFFFFFF;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) 	esp0 |= 0xA0000000;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) 	esp0 = (esp0 & 0xffffE0ff) | ((right & 0x1F) << 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) 	esp0 = (esp0 & 0xfffc1fff) | ((left & 0x1F) << 0xd);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568) 	hwwrite(vortex->mmio, 0x24660, esp0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) vortex_XtalkHw_SetLeftDline(vortex_t * vortex, xtalk_dline_t const dline)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) 	for (i = 0; i < 0x20; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) 		hwwrite(vortex->mmio, 0x24000 + (i << 2), dline[i] & 0xffff);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) 		hwwrite(vortex->mmio, 0x24080 + (i << 2), dline[i] >> 0x10);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) vortex_XtalkHw_SetRightDline(vortex_t * vortex, xtalk_dline_t const dline)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) 	for (i = 0; i < 0x20; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) 		hwwrite(vortex->mmio, 0x24100 + (i << 2), dline[i] & 0xffff);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589) 		hwwrite(vortex->mmio, 0x24180 + (i << 2), dline[i] >> 0x10);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) #if 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595) vortex_XtalkHw_GetDelay(vortex_t * vortex, unsigned short *right,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) 			unsigned short *left)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) 	int esp0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600) 	esp0 = hwread(vortex->mmio, 0x24660);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) 	*right = (esp0 >> 8) & 0x1f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) 	*left = (esp0 >> 0xd) & 0x1f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) static void vortex_XtalkHw_GetLeftDline(vortex_t * vortex, xtalk_dline_t dline)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) 	for (i = 0; i < 0x20; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) 		dline[i] =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) 		    (hwread(vortex->mmio, 0x24000 + (i << 2)) & 0xffff) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) 		    (hwread(vortex->mmio, 0x24080 + (i << 2)) << 0x10);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) static void vortex_XtalkHw_GetRightDline(vortex_t * vortex, xtalk_dline_t dline)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) 	for (i = 0; i < 0x20; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) 		dline[i] =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) 		    (hwread(vortex->mmio, 0x24100 + (i << 2)) & 0xffff) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) 		    (hwread(vortex->mmio, 0x24180 + (i << 2)) << 0x10);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) /* Control/Global stuff */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) #if 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) static void vortex_XtalkHw_SetControlReg(vortex_t * vortex, u32 ctrl)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) 	hwwrite(vortex->mmio, 0x24660, ctrl);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) static void vortex_XtalkHw_GetControlReg(vortex_t * vortex, u32 *ctrl)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) 	*ctrl = hwread(vortex->mmio, 0x24660);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) static void vortex_XtalkHw_SetSampleRate(vortex_t * vortex, u32 sr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) 	u32 temp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) 	temp = (hwread(vortex->mmio, 0x24660) & 0x1FFFFFFF) | 0xC0000000;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) 	temp = (temp & 0xffffff07) | ((sr & 0x1f) << 3);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) 	hwwrite(vortex->mmio, 0x24660, temp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) #if 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650) static void vortex_XtalkHw_GetSampleRate(vortex_t * vortex, u32 *sr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) 	*sr = (hwread(vortex->mmio, 0x24660) >> 3) & 0x1f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) static void vortex_XtalkHw_Enable(vortex_t * vortex)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) 	u32 temp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) 	temp = (hwread(vortex->mmio, 0x24660) & 0x1FFFFFFF) | 0xC0000000;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) 	temp |= 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) 	hwwrite(vortex->mmio, 0x24660, temp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) static void vortex_XtalkHw_Disable(vortex_t * vortex)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) 	u32 temp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) 	temp = (hwread(vortex->mmio, 0x24660) & 0x1FFFFFFF) | 0xC0000000;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) 	temp &= 0xfffffffe;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) 	hwwrite(vortex->mmio, 0x24660, temp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) static void vortex_XtalkHw_ZeroIO(vortex_t * vortex)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680) 	for (i = 0; i < 20; i++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) 		hwwrite(vortex->mmio, 0x24600 + (i << 2), 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) 	for (i = 0; i < 4; i++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) 		hwwrite(vortex->mmio, 0x24650 + (i << 2), 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686) static void vortex_XtalkHw_ZeroState(vortex_t * vortex)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688) 	vortex_XtalkHw_ZeroIO(vortex);	// inlined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) 	vortex_XtalkHw_SetLeftEQ(vortex, 0, 0, asXtalkCoefsZeros);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) 	vortex_XtalkHw_SetRightEQ(vortex, 0, 0, asXtalkCoefsZeros);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693) 	vortex_XtalkHw_SetLeftXT(vortex, 0, 0, asXtalkCoefsZeros);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) 	vortex_XtalkHw_SetRightXT(vortex, 0, 0, asXtalkCoefsZeros);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696) 	vortex_XtalkHw_SetGains(vortex, asXtalkGainsZeros);	// inlined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) 	vortex_XtalkHw_SetDelay(vortex, 0, 0);	// inlined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) 	vortex_XtalkHw_SetLeftDline(vortex, alXtalkDlineZeros);	// inlined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701) 	vortex_XtalkHw_SetRightDline(vortex, alXtalkDlineZeros);	// inlined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) 	vortex_XtalkHw_SetLeftDline(vortex, alXtalkDlineZeros);	// inlined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703) 	vortex_XtalkHw_SetRightDline(vortex, alXtalkDlineZeros);	// inlined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) 	vortex_XtalkHw_SetLeftEQStates(vortex, asXtalkInStateZeros,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) 				       asXtalkOutStateZeros);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707) 	vortex_XtalkHw_SetRightEQStates(vortex, asXtalkInStateZeros,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708) 					asXtalkOutStateZeros);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709) 	vortex_XtalkHw_SetLeftXTStates(vortex, asXtalkInStateZeros,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710) 				       asXtalkOutStateZeros);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711) 	vortex_XtalkHw_SetRightXTStates(vortex, asXtalkInStateZeros,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712) 					asXtalkOutStateZeros);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) static void vortex_XtalkHw_ProgramPipe(vortex_t * vortex)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718) 	vortex_XtalkHw_SetLeftEQ(vortex, 0, 1, asXtalkCoefsPipe);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719) 	vortex_XtalkHw_SetRightEQ(vortex, 0, 1, asXtalkCoefsPipe);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720) 	vortex_XtalkHw_SetLeftXT(vortex, 0, 0, asXtalkCoefsZeros);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) 	vortex_XtalkHw_SetRightXT(vortex, 0, 0, asXtalkCoefsZeros);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723) 	vortex_XtalkHw_SetDelay(vortex, 0, 0);	// inlined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726) static void vortex_XtalkHw_ProgramXtalkWide(vortex_t * vortex)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729) 	vortex_XtalkHw_SetLeftEQ(vortex, sXtalkWideKLeftEq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) 				 sXtalkWideShiftLeftEq, asXtalkWideCoefsLeftEq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731) 	vortex_XtalkHw_SetRightEQ(vortex, sXtalkWideKRightEq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732) 				  sXtalkWideShiftRightEq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733) 				  asXtalkWideCoefsRightEq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734) 	vortex_XtalkHw_SetLeftXT(vortex, sXtalkWideKLeftXt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735) 				 sXtalkWideShiftLeftXt, asXtalkWideCoefsLeftXt);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 736) 	vortex_XtalkHw_SetRightXT(vortex, sXtalkWideKLeftXt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 737) 				  sXtalkWideShiftLeftXt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 738) 				  asXtalkWideCoefsLeftXt);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 739) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 740) 	vortex_XtalkHw_SetDelay(vortex, wXtalkWideRightDelay, wXtalkWideLeftDelay);	// inlined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 741) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 742) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 743) static void vortex_XtalkHw_ProgramXtalkNarrow(vortex_t * vortex)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 744) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 745) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 746) 	vortex_XtalkHw_SetLeftEQ(vortex, sXtalkNarrowKLeftEq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 747) 				 sXtalkNarrowShiftLeftEq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 748) 				 asXtalkNarrowCoefsLeftEq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 749) 	vortex_XtalkHw_SetRightEQ(vortex, sXtalkNarrowKRightEq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 750) 				  sXtalkNarrowShiftRightEq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 751) 				  asXtalkNarrowCoefsRightEq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 752) 	vortex_XtalkHw_SetLeftXT(vortex, sXtalkNarrowKLeftXt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 753) 				 sXtalkNarrowShiftLeftXt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 754) 				 asXtalkNarrowCoefsLeftXt);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 755) 	vortex_XtalkHw_SetRightXT(vortex, sXtalkNarrowKLeftXt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 756) 				  sXtalkNarrowShiftLeftXt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 757) 				  asXtalkNarrowCoefsLeftXt);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 758) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 759) 	vortex_XtalkHw_SetDelay(vortex, wXtalkNarrowRightDelay, wXtalkNarrowLeftDelay);	// inlined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 760) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 761) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 762) static void vortex_XtalkHw_ProgramDiamondXtalk(vortex_t * vortex)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 763) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 764) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 765) 	//sDiamondKLeftEq,sDiamondKRightXt,asDiamondCoefsLeftEq
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 766) 	vortex_XtalkHw_SetLeftEQ(vortex, sDiamondKLeftEq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 767) 				 sDiamondShiftLeftEq, asDiamondCoefsLeftEq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 768) 	vortex_XtalkHw_SetRightEQ(vortex, sDiamondKRightEq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 769) 				  sDiamondShiftRightEq, asDiamondCoefsRightEq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 770) 	vortex_XtalkHw_SetLeftXT(vortex, sDiamondKLeftXt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 771) 				 sDiamondShiftLeftXt, asDiamondCoefsLeftXt);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 772) 	vortex_XtalkHw_SetRightXT(vortex, sDiamondKLeftXt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 773) 				  sDiamondShiftLeftXt, asDiamondCoefsLeftXt);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 774) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 775) 	vortex_XtalkHw_SetDelay(vortex, wDiamondRightDelay, wDiamondLeftDelay);	// inlined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 776) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 777) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 778) static void vortex_XtalkHw_init(vortex_t * vortex)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 779) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 780) 	vortex_XtalkHw_ZeroState(vortex);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 781) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 782) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 783) /* End of file */