ixj.c
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:316k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. } else {
  2. if (j->cardtype == QTI_PHONECARD) {
  3. ixj_WriteDSPCommand(0xCF07, j);
  4. ixj_WriteDSPCommand(0x00B0, j);
  5. ixj_set_port(j, PORT_SPEAKER);
  6. } else {
  7. ixj_set_port(j, PORT_POTS);
  8. SLIC_SetState(PLD_SLIC_STATE_STANDBY, j);
  9. /* SLIC_SetState(PLD_SLIC_STATE_ACTIVE, j); */
  10. }
  11. }
  12. }
  13. j->intercom = -1;
  14. j->framesread = j->frameswritten = 0;
  15. j->read_wait = j->write_wait = 0;
  16. j->rxreadycheck = j->txreadycheck = 0;
  17. /* initialise the DTMF prescale to a sensible value */
  18. if (j->cardtype == QTI_LINEJACK) {
  19. set_dtmf_prescale(j, 0x10); 
  20. } else {
  21. set_dtmf_prescale(j, 0x40); 
  22. }
  23. set_play_volume(j, 0x100);
  24. set_rec_volume(j, 0x100);
  25. if (ixj_WriteDSPCommand(0x0000, j)) /* Write IDLE to Software Control Register */
  26. return -1;
  27. /* The read values of the SSR should be 0x00 for the IDLE command */
  28. if (j->ssr.low || j->ssr.high)
  29. return -1;
  30. if (ixjdebug & 0x0002)
  31. printk(KERN_INFO "Enable Line Monitorn");
  32. if (ixjdebug & 0x0002)
  33. printk(KERN_INFO "Set Line Monitor to Asyncronous Moden");
  34. if (ixj_WriteDSPCommand(0x7E01, j)) /* Asynchronous Line Monitor */
  35. return -1;
  36. if (ixjdebug & 0x002)
  37. printk(KERN_INFO "Enable DTMF Detectorsn");
  38. if (ixj_WriteDSPCommand(0x5151, j)) /* Enable DTMF detection */
  39. return -1;
  40. if (ixj_WriteDSPCommand(0x6E01, j)) /* Set Asyncronous Tone Generation */
  41. return -1;
  42. set_rec_depth(j, 2); /* Set Record Channel Limit to 2 frames */
  43. set_play_depth(j, 2); /* Set Playback Channel Limit to 2 frames */
  44. j->ex.bits.dtmf_ready = 0;
  45. j->dtmf_state = 0;
  46. j->dtmf_wp = j->dtmf_rp = 0;
  47. j->rec_mode = j->play_mode = -1;
  48. j->flags.ringing = 0;
  49. j->maxrings = MAXRINGS;
  50. j->ring_cadence = USA_RING_CADENCE;
  51. j->drybuffer = 0;
  52. j->winktime = 320;
  53. j->flags.dtmf_oob = 0;
  54. for (cnt = 0; cnt < 4; cnt++)
  55. j->cadence_f[cnt].enable = 0;
  56. /* must be a device on the specified address */
  57. ixj_WriteDSPCommand(0x0FE3, j); /* Put the DSP in 1/5 power mode. */
  58. /* Set up the default signals for events */
  59. for (cnt = 0; cnt < 35; cnt++)
  60. j->ixj_signals[cnt] = SIGIO;
  61. /* Set the excetion signal enable flags */
  62. j->ex_sig.bits.dtmf_ready = j->ex_sig.bits.hookstate = j->ex_sig.bits.flash = j->ex_sig.bits.pstn_ring = 
  63. j->ex_sig.bits.caller_id = j->ex_sig.bits.pstn_wink = j->ex_sig.bits.f0 = j->ex_sig.bits.f1 = j->ex_sig.bits.f2 = 
  64. j->ex_sig.bits.f3 = j->ex_sig.bits.fc0 = j->ex_sig.bits.fc1 = j->ex_sig.bits.fc2 = j->ex_sig.bits.fc3 = 1;
  65. #ifdef IXJ_DYN_ALLOC
  66. j->fskdata = NULL;
  67. #endif
  68. j->fskdcnt = 0;
  69. j->cidcw_wait = 0;
  70.  
  71. /* Register with the Telephony for Linux subsystem */
  72. j->p.f_op = &ixj_fops;
  73. j->p.open = ixj_open;
  74. j->p.board = j->board;
  75. phone_register_device(&j->p, PHONE_UNIT_ANY);
  76. ixj_init_timer(j);
  77. ixj_add_timer(j);
  78. return 0;
  79. }
  80. /*
  81.  * Exported service for pcmcia card handling
  82.  */
  83.  
  84. IXJ *ixj_pcmcia_probe(unsigned long dsp, unsigned long xilinx)
  85. {
  86. IXJ *j = ixj_alloc();
  87. j->board = 0;
  88. j->DSPbase = dsp;
  89. j->XILINXbase = xilinx;
  90. j->cardtype = QTI_PHONECARD;
  91. ixj_selfprobe(j);
  92. return j;
  93. }
  94. EXPORT_SYMBOL(ixj_pcmcia_probe); /* Fpr PCMCIA */
  95. static int ixj_get_status_proc(char *buf)
  96. {
  97. int len;
  98. int cnt;
  99. IXJ *j;
  100. len = 0;
  101. len += sprintf(buf + len, "%s", ixj_c_rcsid);
  102. len += sprintf(buf + len, "n%s", ixj_h_rcsid);
  103. len += sprintf(buf + len, "n%s", ixjuser_h_rcsid);
  104. len += sprintf(buf + len, "nDriver version %i.%i.%i", IXJ_VER_MAJOR, IXJ_VER_MINOR, IXJ_BLD_VER);
  105. len += sprintf(buf + len, "nsizeof IXJ struct %d bytes", sizeof(IXJ));
  106. len += sprintf(buf + len, "nsizeof DAA struct %d bytes", sizeof(DAA_REGS));
  107. len += sprintf(buf + len, "nUsing old telephony API");
  108. len += sprintf(buf + len, "nDebug Level %dn", ixjdebug);
  109. for (cnt = 0; cnt < IXJMAX; cnt++) {
  110. j = get_ixj(cnt);
  111. if(j==NULL)
  112. continue;
  113. if (j->DSPbase) {
  114. len += sprintf(buf + len, "nCard Num %d", cnt);
  115. len += sprintf(buf + len, "nDSP Base Address 0x%4.4x", j->DSPbase);
  116. if (j->cardtype != QTI_PHONEJACK)
  117. len += sprintf(buf + len, "nXILINX Base Address 0x%4.4x", j->XILINXbase);
  118. len += sprintf(buf + len, "nDSP Type %2.2x%2.2x", j->dsp.high, j->dsp.low);
  119. len += sprintf(buf + len, "nDSP Version %2.2x.%2.2x", j->ver.high, j->ver.low);
  120. len += sprintf(buf + len, "nSerial Number %8.8x", j->serial);
  121. switch (j->cardtype) {
  122. case (QTI_PHONEJACK):
  123. len += sprintf(buf + len, "nCard Type = Internet PhoneJACK");
  124. break;
  125. case (QTI_LINEJACK):
  126. len += sprintf(buf + len, "nCard Type = Internet LineJACK");
  127. if (j->flags.g729_loaded)
  128. len += sprintf(buf + len, " w/G.729 A/B");
  129. len += sprintf(buf + len, " Country = %d", j->daa_country);
  130. break;
  131. case (QTI_PHONEJACK_LITE):
  132. len += sprintf(buf + len, "nCard Type = Internet PhoneJACK Lite");
  133. if (j->flags.g729_loaded)
  134. len += sprintf(buf + len, " w/G.729 A/B");
  135. break;
  136. case (QTI_PHONEJACK_PCI):
  137. len += sprintf(buf + len, "nCard Type = Internet PhoneJACK PCI");
  138. if (j->flags.g729_loaded)
  139. len += sprintf(buf + len, " w/G.729 A/B");
  140. break;
  141. case (QTI_PHONECARD):
  142. len += sprintf(buf + len, "nCard Type = Internet PhoneCARD");
  143. if (j->flags.g729_loaded)
  144. len += sprintf(buf + len, " w/G.729 A/B");
  145. len += sprintf(buf + len, "nSmart Cable %spresent", j->pccr1.bits.drf ? "not " : "");
  146. if (!j->pccr1.bits.drf)
  147. len += sprintf(buf + len, "nSmart Cable type %d", j->flags.pcmciasct);
  148. len += sprintf(buf + len, "nSmart Cable state %d", j->flags.pcmciastate);
  149. break;
  150. default:
  151. len += sprintf(buf + len, "nCard Type = %d", j->cardtype);
  152. break;
  153. }
  154. len += sprintf(buf + len, "nReaders %d", j->readers);
  155. len += sprintf(buf + len, "nWriters %d", j->writers);
  156. add_caps(j);
  157. len += sprintf(buf + len, "nCapabilities %d", j->caps);
  158. if (j->dsp.low != 0x20)
  159. len += sprintf(buf + len, "nDSP Processor load %d", j->proc_load);
  160. if (j->flags.cidsent)
  161. len += sprintf(buf + len, "nCaller ID data sent");
  162. else
  163. len += sprintf(buf + len, "nCaller ID data not sent");
  164. len += sprintf(buf + len, "nPlay CODEC ");
  165. switch (j->play_codec) {
  166. case G723_63:
  167. len += sprintf(buf + len, "G.723.1 6.3");
  168. break;
  169. case G723_53:
  170. len += sprintf(buf + len, "G.723.1 5.3");
  171. break;
  172. case TS85:
  173. len += sprintf(buf + len, "TrueSpeech 8.5");
  174. break;
  175. case TS48:
  176. len += sprintf(buf + len, "TrueSpeech 4.8");
  177. break;
  178. case TS41:
  179. len += sprintf(buf + len, "TrueSpeech 4.1");
  180. break;
  181. case G728:
  182. len += sprintf(buf + len, "G.728");
  183. break;
  184. case G729:
  185. len += sprintf(buf + len, "G.729");
  186. break;
  187. case G729B:
  188. len += sprintf(buf + len, "G.729B");
  189. break;
  190. case ULAW:
  191. len += sprintf(buf + len, "uLaw");
  192. break;
  193. case ALAW:
  194. len += sprintf(buf + len, "aLaw");
  195. break;
  196. case LINEAR16:
  197. len += sprintf(buf + len, "16 bit Linear");
  198. break;
  199. case LINEAR8:
  200. len += sprintf(buf + len, "8 bit Linear");
  201. break;
  202. case WSS:
  203. len += sprintf(buf + len, "Windows Sound System");
  204. break;
  205. default:
  206. len += sprintf(buf + len, "NO CODEC CHOSEN");
  207. break;
  208. }
  209. len += sprintf(buf + len, "nRecord CODEC ");
  210. switch (j->rec_codec) {
  211. case G723_63:
  212. len += sprintf(buf + len, "G.723.1 6.3");
  213. break;
  214. case G723_53:
  215. len += sprintf(buf + len, "G.723.1 5.3");
  216. break;
  217. case TS85:
  218. len += sprintf(buf + len, "TrueSpeech 8.5");
  219. break;
  220. case TS48:
  221. len += sprintf(buf + len, "TrueSpeech 4.8");
  222. break;
  223. case TS41:
  224. len += sprintf(buf + len, "TrueSpeech 4.1");
  225. break;
  226. case G728:
  227. len += sprintf(buf + len, "G.728");
  228. break;
  229. case G729:
  230. len += sprintf(buf + len, "G.729");
  231. break;
  232. case G729B:
  233. len += sprintf(buf + len, "G.729B");
  234. break;
  235. case ULAW:
  236. len += sprintf(buf + len, "uLaw");
  237. break;
  238. case ALAW:
  239. len += sprintf(buf + len, "aLaw");
  240. break;
  241. case LINEAR16:
  242. len += sprintf(buf + len, "16 bit Linear");
  243. break;
  244. case LINEAR8:
  245. len += sprintf(buf + len, "8 bit Linear");
  246. break;
  247. case WSS:
  248. len += sprintf(buf + len, "Windows Sound System");
  249. break;
  250. default:
  251. len += sprintf(buf + len, "NO CODEC CHOSEN");
  252. break;
  253. }
  254. len += sprintf(buf + len, "nAEC ");
  255. switch (j->aec_level) {
  256. case AEC_OFF:
  257. len += sprintf(buf + len, "Off");
  258. break;
  259. case AEC_LOW:
  260. len += sprintf(buf + len, "Low");
  261. break;
  262. case AEC_MED:
  263. len += sprintf(buf + len, "Med");
  264. break;
  265. case AEC_HIGH:
  266. len += sprintf(buf + len, "High");
  267. break;
  268. case AEC_AUTO:
  269. len += sprintf(buf + len, "Auto");
  270. break;
  271. case AEC_AGC:
  272. len += sprintf(buf + len, "AEC/AGC");
  273. break;
  274. default:
  275. len += sprintf(buf + len, "unknown(%i)", j->aec_level);
  276. break;
  277. }
  278. len += sprintf(buf + len, "nRec volume 0x%x", get_rec_volume(j));
  279. len += sprintf(buf + len, "nPlay volume 0x%x", get_play_volume(j));
  280. len += sprintf(buf + len, "nDTMF prescale 0x%x", get_dtmf_prescale(j));
  281. len += sprintf(buf + len, "nHook state %d", j->hookstate); /* j->r_hook); */
  282. if (j->cardtype == QTI_LINEJACK) {
  283. len += sprintf(buf + len, "nPOTS Correct %d", j->flags.pots_correct);
  284. len += sprintf(buf + len, "nPSTN Present %d", j->flags.pstn_present);
  285. len += sprintf(buf + len, "nPSTN Check %d", j->flags.pstncheck);
  286. len += sprintf(buf + len, "nPOTS to PSTN %d", j->flags.pots_pstn);
  287. switch (j->daa_mode) {
  288. case SOP_PU_SLEEP:
  289. len += sprintf(buf + len, "nDAA PSTN On Hook");
  290. break;
  291. case SOP_PU_RINGING:
  292. len += sprintf(buf + len, "nDAA PSTN Ringing");
  293. len += sprintf(buf + len, "nRinging state = %d", j->cadence_f[4].state);
  294. break;
  295. case SOP_PU_CONVERSATION:
  296. len += sprintf(buf + len, "nDAA PSTN Off Hook");
  297. break;
  298. case SOP_PU_PULSEDIALING:
  299. len += sprintf(buf + len, "nDAA PSTN Pulse Dialing");
  300. break;
  301. }
  302. len += sprintf(buf + len, "nDAA RMR = %d", j->m_DAAShadowRegs.SOP_REGS.SOP.cr1.bitreg.RMR);
  303. len += sprintf(buf + len, "nDAA VDD OK = %d", j->m_DAAShadowRegs.XOP_REGS.XOP.xr0.bitreg.VDD_OK);
  304. len += sprintf(buf + len, "nDAA CR0 = 0x%02x", j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg);
  305. len += sprintf(buf + len, "nDAA CR1 = 0x%02x", j->m_DAAShadowRegs.SOP_REGS.SOP.cr1.reg);
  306. len += sprintf(buf + len, "nDAA CR2 = 0x%02x", j->m_DAAShadowRegs.SOP_REGS.SOP.cr2.reg);
  307. len += sprintf(buf + len, "nDAA CR3 = 0x%02x", j->m_DAAShadowRegs.SOP_REGS.SOP.cr3.reg);
  308. len += sprintf(buf + len, "nDAA CR4 = 0x%02x", j->m_DAAShadowRegs.SOP_REGS.SOP.cr4.reg);
  309. len += sprintf(buf + len, "nDAA CR5 = 0x%02x", j->m_DAAShadowRegs.SOP_REGS.SOP.cr5.reg);
  310. len += sprintf(buf + len, "nDAA XR0 = 0x%02x", j->m_DAAShadowRegs.XOP_REGS.XOP.xr0.reg);
  311. len += sprintf(buf + len, "nDAA ringstop %ld - jiffies %ld", j->pstn_ring_stop, jiffies);
  312. }
  313. switch (j->port) {
  314. case PORT_POTS:
  315. len += sprintf(buf + len, "nPort POTS");
  316. break;
  317. case PORT_PSTN:
  318. len += sprintf(buf + len, "nPort PSTN");
  319. break;
  320. case PORT_SPEAKER:
  321. len += sprintf(buf + len, "nPort SPEAKER/MIC");
  322. break;
  323. case PORT_HANDSET:
  324. len += sprintf(buf + len, "nPort HANDSET");
  325. break;
  326. }
  327. if (j->dsp.low == 0x21 || j->dsp.low == 0x22) {
  328. len += sprintf(buf + len, "nSLIC state ");
  329. switch (SLIC_GetState(j)) {
  330. case PLD_SLIC_STATE_OC:
  331. len += sprintf(buf + len, "OC");
  332. break;
  333. case PLD_SLIC_STATE_RINGING:
  334. len += sprintf(buf + len, "RINGING");
  335. break;
  336. case PLD_SLIC_STATE_ACTIVE:
  337. len += sprintf(buf + len, "ACTIVE");
  338. break;
  339. case PLD_SLIC_STATE_OHT: /* On-hook transmit */
  340. len += sprintf(buf + len, "OHT");
  341. break;
  342. case PLD_SLIC_STATE_TIPOPEN:
  343. len += sprintf(buf + len, "TIPOPEN");
  344. break;
  345. case PLD_SLIC_STATE_STANDBY:
  346. len += sprintf(buf + len, "STANDBY");
  347. break;
  348. case PLD_SLIC_STATE_APR: /* Active polarity reversal */
  349. len += sprintf(buf + len, "APR");
  350. break;
  351. case PLD_SLIC_STATE_OHTPR: /* OHT polarity reversal */
  352. len += sprintf(buf + len, "OHTPR");
  353. break;
  354. default:
  355. len += sprintf(buf + len, "%d", SLIC_GetState(j));
  356. break;
  357. }
  358. }
  359. len += sprintf(buf + len, "nBase Frame %2.2x.%2.2x", j->baseframe.high, j->baseframe.low);
  360. len += sprintf(buf + len, "nCID Base Frame %2d", j->cid_base_frame_size);
  361. #ifdef PERFMON_STATS
  362. len += sprintf(buf + len, "nTimer Checks %ld", j->timerchecks);
  363. len += sprintf(buf + len, "nRX Ready Checks %ld", j->rxreadycheck);
  364. len += sprintf(buf + len, "nTX Ready Checks %ld", j->txreadycheck);
  365. len += sprintf(buf + len, "nFrames Read %ld", j->framesread);
  366. len += sprintf(buf + len, "nFrames Written %ld", j->frameswritten);
  367. len += sprintf(buf + len, "nDry Buffer %ld", j->drybuffer);
  368. len += sprintf(buf + len, "nRead Waits %ld", j->read_wait);
  369. len += sprintf(buf + len, "nWrite Waits %ld", j->write_wait);
  370.                         len += sprintf(buf + len, "nStatus Waits %ld", j->statuswait);
  371.                         len += sprintf(buf + len, "nStatus Wait Fails %ld", j->statuswaitfail);
  372.                         len += sprintf(buf + len, "nPControl Waits %ld", j->pcontrolwait);
  373.                         len += sprintf(buf + len, "nPControl Wait Fails %ld", j->pcontrolwaitfail);
  374.                         len += sprintf(buf + len, "nIs Control Ready Checks %ld", j->iscontrolready);
  375.                         len += sprintf(buf + len, "nIs Control Ready Check failures %ld", j->iscontrolreadyfail);
  376.  
  377. #endif
  378. len += sprintf(buf + len, "n");
  379. }
  380. }
  381. return len;
  382. }
  383. static int ixj_read_proc(char *page, char **start, off_t off,
  384.                               int count, int *eof, void *data)
  385. {
  386.         int len = ixj_get_status_proc(page);
  387.         if (len <= off+count) *eof = 1;
  388.         *start = page + off;
  389.         len -= off;
  390.         if (len>count) len = count;
  391.         if (len<0) len = 0;
  392.         return len;
  393. }
  394. static void cleanup(void)
  395. {
  396. int cnt;
  397. IXJ *j;
  398. for (cnt = 0; cnt < IXJMAX; cnt++) {
  399. j = get_ixj(cnt);
  400. if(j != NULL && j->DSPbase) {
  401. if (ixjdebug & 0x0002)
  402. printk(KERN_INFO "IXJ: Deleting timer for /dev/phone%dn", cnt);
  403. del_timer(&j->timer);
  404. if (j->cardtype == QTI_LINEJACK) {
  405. j->pld_scrw.bits.daafsyncen = 0; /* Turn off DAA Frame Sync */
  406. outb_p(j->pld_scrw.byte, j->XILINXbase);
  407. j->pld_slicw.bits.rly1 = 0;
  408. j->pld_slicw.bits.rly2 = 0;
  409. j->pld_slicw.bits.rly3 = 0;
  410. outb_p(j->pld_slicw.byte, j->XILINXbase + 0x01);
  411. LED_SetState(0x0, j);
  412. if (ixjdebug & 0x0002)
  413. printk(KERN_INFO "IXJ: Releasing XILINX address for /dev/phone%dn", cnt);
  414. release_region(j->XILINXbase, 8);
  415. } else if (j->cardtype == QTI_PHONEJACK_LITE || j->cardtype == QTI_PHONEJACK_PCI) {
  416. if (ixjdebug & 0x0002)
  417. printk(KERN_INFO "IXJ: Releasing XILINX address for /dev/phone%dn", cnt);
  418. release_region(j->XILINXbase, 4);
  419. }
  420. if (j->read_buffer)
  421. kfree(j->read_buffer);
  422. if (j->write_buffer)
  423. kfree(j->write_buffer);
  424. if (j->dev && j->dev->deactivate)
  425. j->dev->deactivate(j->dev);
  426. if (ixjdebug & 0x0002)
  427. printk(KERN_INFO "IXJ: Unregistering /dev/phone%d from LTAPIn", cnt);
  428. phone_unregister_device(&j->p);
  429. if (ixjdebug & 0x0002)
  430. printk(KERN_INFO "IXJ: Releasing DSP address for /dev/phone%dn", cnt);
  431. release_region(j->DSPbase, 16);
  432. #ifdef IXJ_DYN_ALLOC
  433. if (ixjdebug & 0x0002)
  434. printk(KERN_INFO "IXJ: Freeing memory for /dev/phone%dn", cnt);
  435. kfree(j);
  436. ixj[cnt] = NULL;
  437. #endif
  438. }
  439. }
  440. if (ixjdebug & 0x0002)
  441. printk(KERN_INFO "IXJ: Removing /proc/ixjn");
  442. remove_proc_entry ("ixj", NULL);
  443. }
  444. /* Typedefs */
  445. typedef struct {
  446. BYTE length;
  447. DWORD bits;
  448. } DATABLOCK;
  449. static void PCIEE_WriteBit(WORD wEEPROMAddress, BYTE lastLCC, BYTE byData)
  450. {
  451. lastLCC = lastLCC & 0xfb;
  452. lastLCC = lastLCC | (byData ? 4 : 0);
  453. outb(lastLCC, wEEPROMAddress); /*set data out bit as appropriate */
  454. mdelay(1);
  455. lastLCC = lastLCC | 0x01;
  456. outb(lastLCC, wEEPROMAddress); /*SK rising edge */
  457. byData = byData << 1;
  458. lastLCC = lastLCC & 0xfe;
  459. mdelay(1);
  460. outb(lastLCC, wEEPROMAddress); /*after delay, SK falling edge */
  461. }
  462. static BYTE PCIEE_ReadBit(WORD wEEPROMAddress, BYTE lastLCC)
  463. {
  464. mdelay(1);
  465. lastLCC = lastLCC | 0x01;
  466. outb(lastLCC, wEEPROMAddress); /*SK rising edge */
  467. lastLCC = lastLCC & 0xfe;
  468. mdelay(1);
  469. outb(lastLCC, wEEPROMAddress); /*after delay, SK falling edge */
  470. return ((inb(wEEPROMAddress) >> 3) & 1);
  471. }
  472. static BOOL PCIEE_ReadWord(WORD wAddress, WORD wLoc, WORD * pwResult)
  473. {
  474. BYTE lastLCC;
  475. WORD wEEPROMAddress = wAddress + 3;
  476. DWORD i;
  477. BYTE byResult;
  478. *pwResult = 0;
  479. lastLCC = inb(wEEPROMAddress);
  480. lastLCC = lastLCC | 0x02;
  481. lastLCC = lastLCC & 0xfe;
  482. outb(lastLCC, wEEPROMAddress); /* CS hi, SK lo */
  483. mdelay(1); /* delay */
  484. PCIEE_WriteBit(wEEPROMAddress, lastLCC, 1);
  485. PCIEE_WriteBit(wEEPROMAddress, lastLCC, 1);
  486. PCIEE_WriteBit(wEEPROMAddress, lastLCC, 0);
  487. for (i = 0; i < 8; i++) {
  488. PCIEE_WriteBit(wEEPROMAddress, lastLCC, wLoc & 0x80 ? 1 : 0);
  489. wLoc <<= 1;
  490. }
  491. for (i = 0; i < 16; i++) {
  492. byResult = PCIEE_ReadBit(wEEPROMAddress, lastLCC);
  493. *pwResult = (*pwResult << 1) | byResult;
  494. }
  495. mdelay(1); /* another delay */
  496. lastLCC = lastLCC & 0xfd;
  497. outb(lastLCC, wEEPROMAddress); /* negate CS */
  498. return 0;
  499. }
  500. static DWORD PCIEE_GetSerialNumber(WORD wAddress)
  501. {
  502. WORD wLo, wHi;
  503. if (PCIEE_ReadWord(wAddress, 62, &wLo))
  504. return 0;
  505. if (PCIEE_ReadWord(wAddress, 63, &wHi))
  506. return 0;
  507. return (((DWORD) wHi << 16) | wLo);
  508. }
  509. static int dspio[IXJMAX + 1] =
  510. {
  511. 0,
  512. };
  513. static int xio[IXJMAX + 1] =
  514. {
  515. 0,
  516. };
  517. MODULE_PARM(dspio, "1-" __MODULE_STRING(IXJMAX) "i");
  518. MODULE_PARM(xio, "1-" __MODULE_STRING(IXJMAX) "i");
  519. MODULE_DESCRIPTION("Quicknet VoIP Telephony card module - www.quicknet.net");
  520. MODULE_AUTHOR("Ed Okerson <eokerson@quicknet.net>");
  521. MODULE_LICENSE("GPL");
  522. void ixj_exit(void)
  523. {
  524.         cleanup();
  525. }
  526. int __init ixj_probe_isapnp(int *cnt)
  527. {               
  528. int probe = 0;
  529. int func = 0x110;
  530.         struct pci_dev *dev = NULL, *old_dev = NULL;
  531. while (1) {
  532. do {
  533. IXJ *j;
  534. int result;
  535. old_dev = dev;
  536. dev = isapnp_find_dev(NULL, ISAPNP_VENDOR('Q', 'T', 'I'),
  537.  ISAPNP_FUNCTION(func), old_dev);
  538. if (!dev)
  539. break;
  540. result = dev->prepare(dev);
  541. if (result < 0) {
  542. printk("preparing failed %d n", result);
  543. break;
  544. }
  545. if (!(dev->resource[0].flags & IORESOURCE_IO))
  546. return -ENODEV;
  547. dev->resource[0].flags |= IORESOURCE_AUTO;
  548. if (func != 0x110)
  549. dev->resource[1].flags |= IORESOURCE_AUTO;
  550. if (dev->activate(dev) < 0) {
  551. printk("isapnp configure failed (out of resources?)n");
  552. return -ENOMEM;
  553. }
  554. result = check_region(dev->resource[0].start, 16);
  555. if (result) {
  556. printk(KERN_INFO "ixj: can't get I/O address 0x%lxn", dev->resource[0].start);
  557. break;
  558. }
  559. j = ixj_alloc();
  560. request_region(j->DSPbase, 16, "ixj DSP");
  561. if (func != 0x110)
  562. j->XILINXbase = dev->resource[1].start; /* get real port */
  563. switch (func) {
  564. case (0x110):
  565. j->cardtype = QTI_PHONEJACK;
  566. break;
  567. case (0x310):
  568. j->cardtype = QTI_LINEJACK;
  569. break;
  570. case (0x410):
  571. j->cardtype = QTI_PHONEJACK_LITE;
  572. break;
  573. }
  574. j->board = *cnt;
  575. probe = ixj_selfprobe(j);
  576. if(!probe) {
  577. j->serial = dev->bus->serial;
  578. j->dev = dev;
  579. switch (func) {
  580. case 0x110:
  581. printk(KERN_INFO "ixj: found Internet PhoneJACK at 0x%xn", j->DSPbase);
  582. break;
  583. case 0x310:
  584. printk(KERN_INFO "ixj: found Internet LineJACK at 0x%xn", j->DSPbase);
  585. break;
  586. case 0x410:
  587. printk(KERN_INFO "ixj: found Internet PhoneJACK Lite at 0x%xn", j->DSPbase);
  588. break;
  589. }
  590. }
  591. ++*cnt;
  592. } while (dev);
  593. if (func == 0x410)
  594. break;
  595. if (func == 0x310)
  596. func = 0x410;
  597. if (func == 0x110)
  598. func = 0x310;
  599. dev = NULL;
  600. }
  601. return probe;
  602. }
  603.                         
  604. int __init ixj_probe_isa(int *cnt)
  605. {
  606. int i, result, probe;
  607. /* Use passed parameters for older kernels without PnP */
  608. for (i = 0; i < IXJMAX; i++) {
  609. if (dspio[i]) {
  610. IXJ *j;
  611. if ((result = check_region(ixj[*cnt].DSPbase, 16)) < 0) {
  612. printk(KERN_INFO "ixj: can't get I/O address 0x%xn", ixj[*cnt].DSPbase);
  613. break;
  614. }
  615. j = ixj_alloc();
  616. j->DSPbase = dspio[i];
  617. request_region(j->DSPbase, 16, "ixj DSP");
  618. j->XILINXbase = xio[i];
  619. j->cardtype = 0;
  620. j->board = *cnt;
  621. probe = ixj_selfprobe(j);
  622. j->dev = NULL;
  623. ++*cnt;
  624. }
  625. }
  626. return 0;
  627. }
  628. int __init ixj_probe_pci(int *cnt)
  629. {
  630. struct pci_dev *pci = NULL;   
  631. int i, probe = 0;
  632. IXJ *j = NULL;
  633. int result;
  634. if(!pci_present())
  635. return 0;
  636. for (i = 0; i < IXJMAX - *cnt; i++) {
  637. pci = pci_find_device(0x15E2, 0x0500, pci);
  638. if (!pci)
  639. break;
  640. if (pci_enable_device(pci))
  641. break;
  642. if ((result = check_region(pci_resource_start(pci, 0), 16)) < 0) {
  643. printk(KERN_INFO "ixj: can't get I/O addressn");
  644. break;
  645. }
  646. /* Grab a device slot */
  647. j = ixj_alloc();
  648. if(j == NULL)
  649. break;
  650. j->DSPbase = pci_resource_start(pci, 0);
  651. j->serial = (PCIEE_GetSerialNumber)pci_resource_start(pci, 2);
  652. j->XILINXbase = j->DSPbase + 0x10;
  653. request_region(j->DSPbase, 16, "ixj DSP");
  654. j->cardtype = QTI_PHONEJACK_PCI;
  655. j->board = *cnt;
  656. probe = ixj_selfprobe(j);
  657. if (!probe)
  658. printk(KERN_INFO "ixj: found Internet PhoneJACK PCI at 0x%xn", j->DSPbase);
  659. ++*cnt;
  660. }
  661. return probe;
  662. }
  663. int __init ixj_init(void)
  664. {
  665. int cnt = 0;
  666. int probe = 0;   
  667. cnt = 0;
  668. /* These might be no-ops, see above. */
  669. if ((probe = ixj_probe_isapnp(&cnt)) < 0) {
  670. return probe;
  671. }
  672. if ((probe = ixj_probe_isa(&cnt)) < 0) {
  673. return probe;
  674. }
  675. if (pci_present()) {
  676. if ((probe = ixj_probe_pci(&cnt)) < 0) {
  677. return probe;
  678. }
  679. }
  680. printk("%sn", ixj_c_rcsid);
  681. create_proc_read_entry ("ixj", 0, NULL, ixj_read_proc, NULL);
  682. return probe;
  683. }
  684. module_init(ixj_init);
  685. module_exit(ixj_exit);
  686. static void DAA_Coeff_US(IXJ *j)
  687. {
  688. int i;
  689. j->daa_country = DAA_US;
  690. /*----------------------------------------------- */
  691. /* CAO */
  692. for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
  693. j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
  694. }
  695. /* Bytes for IM-filter part 1 (04): 0E,32,E2,2F,C2,5A,C0,00 */
  696. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x03;
  697. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[6] = 0x4B;
  698. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[5] = 0x5D;
  699. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[4] = 0xCD;
  700. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[3] = 0x24;
  701. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[2] = 0xC5;
  702. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[1] = 0xA0;
  703. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[0] = 0x00;
  704. /* Bytes for IM-filter part 2 (05): 72,85,00,0E,2B,3A,D0,08 */
  705. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[7] = 0x71;
  706. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[6] = 0x1A;
  707. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[5] = 0x00;
  708. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[4] = 0x0A;
  709. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[3] = 0xB5;
  710. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[2] = 0x33;
  711. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[1] = 0xE0;
  712. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[0] = 0x08;
  713. /* Bytes for FRX-filter       (08): 03,8F,48,F2,8F,48,70,08 */
  714. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[7] = 0x05;
  715. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[6] = 0xA3;
  716. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[5] = 0x72;
  717. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[4] = 0x34;
  718. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[3] = 0x3F;
  719. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[2] = 0x3B;
  720. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[1] = 0x30;
  721. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[0] = 0x08;
  722. /* Bytes for FRR-filter       (07): 04,8F,38,7F,9B,EA,B0,08 */
  723. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[7] = 0x05;
  724. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[6] = 0x87;
  725. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[5] = 0xF9;
  726. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[4] = 0x3E;
  727. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[3] = 0x32;
  728. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[2] = 0xDA;
  729. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[1] = 0xB0;
  730. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[0] = 0x08;
  731. /* Bytes for AX-filter        (0A): 16,55,DD,CA */
  732. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[3] = 0x41;
  733. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[2] = 0xB5;
  734. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[1] = 0xDD;
  735. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[0] = 0xCA;
  736. /* Bytes for AR-filter        (09): 52,D3,11,42 */
  737. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[3] = 0x25;
  738. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[2] = 0xC7;
  739. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[1] = 0x10;
  740. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[0] = 0xD6;
  741. /* Bytes for TH-filter part 1 (00): 00,42,48,81,B3,80,00,98 */
  742. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[7] = 0x00;
  743. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[6] = 0x42;
  744. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[5] = 0x48;
  745. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[4] = 0x81;
  746. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[3] = 0xA5;
  747. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[2] = 0x80;
  748. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[1] = 0x00;
  749. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[0] = 0x98;
  750. /* Bytes for TH-filter part 2 (01): 02,F2,33,A0,68,AB,8A,AD */
  751. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[7] = 0x02;
  752. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[6] = 0xA2;
  753. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[5] = 0x2B;
  754. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[4] = 0xB0;
  755. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[3] = 0xE8;
  756. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[2] = 0xAB;
  757. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[1] = 0x81;
  758. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[0] = 0xCC;
  759. /* Bytes for TH-filter part 3 (02): 00,88,DA,54,A4,BA,2D,BB */
  760. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[7] = 0x00;
  761. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[6] = 0x88;
  762. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[5] = 0xD2;
  763. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[4] = 0x24;
  764. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[3] = 0xBA;
  765. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[2] = 0xA9;
  766. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[1] = 0x3B;
  767. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0xA6;
  768. /* ;  (10K, 0.68uF) */
  769. /*  */
  770. /* Bytes for Ringing part 1 (03):1B,3B,9B,BA,D4,1C,B3,23 */
  771. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
  772. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3C;
  773. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x93;
  774. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0x3A;
  775. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0x22;
  776. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x12;
  777. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xA3;
  778. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
  779. /* Bytes for Ringing part 2 (06):13,42,A6,BA,D4,73,CA,D5 */
  780. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x12;
  781. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0xA2;
  782. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
  783. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
  784. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0x22;
  785. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7A;
  786. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A;
  787. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
  788. /* Levelmetering Ringing        (0D):B2,45,0F,8E       */
  789. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0xAA;
  790. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x35;
  791. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0x0F;
  792. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x8E;
  793. /* Bytes for Ringing part 1 (03):1B,3B,9B,BA,D4,1C,B3,23 */
  794. /* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1C; */
  795. /* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0xB3; */
  796. /* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0xAB; */
  797. /* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0xAB; */
  798. /* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0x54; */
  799. /* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x2D; */
  800. /* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0x62; */
  801. /* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x2D; */
  802. /* Bytes for Ringing part 2 (06):13,42,A6,BA,D4,73,CA,D5 */ 
  803. /* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x2D; */
  804. /* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0x62; */
  805. /* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6; */
  806. /* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBB; */
  807. /* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0x2A; */
  808. /* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7D; */
  809. /* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A; */
  810. /* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD4; */
  811. /* */
  812. /* Levelmetering Ringing        (0D):B2,45,0F,8E       */
  813. /* j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0xAA; */
  814. /* j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x05; */
  815. /* j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0x0F; */
  816. /* j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x8E; */
  817. /* Caller ID 1st Tone           (0E):CA,0E,CA,09,99,99,99,99 */
  818. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
  819. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
  820. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
  821. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
  822. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
  823. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
  824. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
  825. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
  826. /* Caller ID 2nd Tone           (0F):FD,B5,BA,07,DA,00,00,00 */
  827. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
  828. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
  829. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
  830. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
  831. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
  832. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
  833. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
  834. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
  835. /*  */
  836. /* ;CR Registers */
  837. /* Config. Reg. 0 (filters)       (cr0):FE ; CLK gen. by crystal */
  838. j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg = 0xFF;
  839. /* Config. Reg. 1 (dialing)       (cr1):05 */
  840. j->m_DAAShadowRegs.SOP_REGS.SOP.cr1.reg = 0x05;
  841. /* Config. Reg. 2 (caller ID)     (cr2):04 */
  842. j->m_DAAShadowRegs.SOP_REGS.SOP.cr2.reg = 0x04;
  843. /* Config. Reg. 3 (testloops)     (cr3):03 ; SEL Bit==0, HP-disabled */
  844. j->m_DAAShadowRegs.SOP_REGS.SOP.cr3.reg = 0x00;
  845. /* Config. Reg. 4 (analog gain)   (cr4):02 */
  846. j->m_DAAShadowRegs.SOP_REGS.SOP.cr4.reg = 0x02;
  847. /* Config. Reg. 5 (Version)       (cr5):02 */
  848. /* Config. Reg. 6 (Reserved)      (cr6):00 */
  849. /* Config. Reg. 7 (Reserved)      (cr7):00 */
  850. /*  */
  851. /* ;xr Registers */
  852. /* Ext. Reg. 0 (Interrupt Reg.)   (xr0):02 */
  853. j->m_DAAShadowRegs.XOP_xr0_W.reg = 0x02; /* SO_1 set to '1' because it is inverted. */
  854. /* Ext. Reg. 1 (Interrupt enable) (xr1):3C Cadence, RING, Caller ID, VDD_OK */
  855. j->m_DAAShadowRegs.XOP_REGS.XOP.xr1.reg = 0x3C;
  856. /* Ext. Reg. 2 (Cadence Time Out) (xr2):7D */
  857. j->m_DAAShadowRegs.XOP_REGS.XOP.xr2.reg = 0x7D;
  858. /* Ext. Reg. 3 (DC Char)          (xr3):32 ; B-Filter Off == 1 */
  859. j->m_DAAShadowRegs.XOP_REGS.XOP.xr3.reg = 0x3B; /*0x32; */
  860. /* Ext. Reg. 4 (Cadence)          (xr4):00 */
  861. j->m_DAAShadowRegs.XOP_REGS.XOP.xr4.reg = 0x00;
  862. /* Ext. Reg. 5 (Ring timer)       (xr5):22 */
  863. j->m_DAAShadowRegs.XOP_REGS.XOP.xr5.reg = 0x22;
  864. /* Ext. Reg. 6 (Power State)      (xr6):00 */
  865. j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
  866. /* Ext. Reg. 7 (Vdd)              (xr7):40 */
  867. j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x40; /* 0x40 ??? Should it be 0x00? */
  868. /*  */
  869. /* DTMF Tone 1                     (0B): 11,B3,5A,2C ;   697 Hz   */
  870. /*                                       12,33,5A,C3 ;  770 Hz   */
  871. /*                                       13,3C,5B,32 ;  852 Hz   */
  872. /*                                       1D,1B,5C,CC ;  941 Hz   */
  873. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
  874. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
  875. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
  876. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
  877. /* DTMF Tone 2                     (0C): 32,32,52,B3 ;  1209 Hz   */
  878. /*                                       EC,1D,52,22 ;  1336 Hz   */
  879. /*                                       AA,AC,51,D2 ;  1477 Hz   */
  880. /*                                       9B,3B,51,25 ;  1633 Hz   */
  881. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
  882. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
  883. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
  884. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
  885. }
  886. static void DAA_Coeff_UK(IXJ *j)
  887. {
  888. int i;
  889. j->daa_country = DAA_UK;
  890. /*----------------------------------------------- */
  891. /* CAO */
  892. for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
  893. j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
  894. }
  895. /*  Bytes for IM-filter part 1 (04): 00,C2,BB,A8,CB,81,A0,00 */
  896. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x00;
  897. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[6] = 0xC2;
  898. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[5] = 0xBB;
  899. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[4] = 0xA8;
  900. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[3] = 0xCB;
  901. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[2] = 0x81;
  902. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[1] = 0xA0;
  903. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[0] = 0x00;
  904. /* Bytes for IM-filter part 2 (05): 40,00,00,0A,A4,33,E0,08 */
  905. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[7] = 0x40;
  906. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[6] = 0x00;
  907. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[5] = 0x00;
  908. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[4] = 0x0A;
  909. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[3] = 0xA4;
  910. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[2] = 0x33;
  911. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[1] = 0xE0;
  912. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[0] = 0x08;
  913. /* Bytes for FRX-filter       (08): 07,9B,ED,24,B2,A2,A0,08 */
  914. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[7] = 0x07;
  915. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[6] = 0x9B;
  916. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[5] = 0xED;
  917. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[4] = 0x24;
  918. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[3] = 0xB2;
  919. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[2] = 0xA2;
  920. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[1] = 0xA0;
  921. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[0] = 0x08;
  922. /* Bytes for FRR-filter       (07): 0F,92,F2,B2,87,D2,30,08 */
  923. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[7] = 0x0F;
  924. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[6] = 0x92;
  925. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[5] = 0xF2;
  926. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[4] = 0xB2;
  927. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[3] = 0x87;
  928. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[2] = 0xD2;
  929. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[1] = 0x30;
  930. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[0] = 0x08;
  931. /* Bytes for AX-filter        (0A): 1B,A5,DD,CA */
  932. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[3] = 0x1B;
  933. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[2] = 0xA5;
  934. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[1] = 0xDD;
  935. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[0] = 0xCA;
  936. /* Bytes for AR-filter        (09): E2,27,10,D6 */
  937. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[3] = 0xE2;
  938. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[2] = 0x27;
  939. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[1] = 0x10;
  940. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[0] = 0xD6;
  941. /* Bytes for TH-filter part 1 (00): 80,2D,38,8B,D0,00,00,98 */
  942. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[7] = 0x80;
  943. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[6] = 0x2D;
  944. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[5] = 0x38;
  945. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[4] = 0x8B;
  946. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[3] = 0xD0;
  947. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[2] = 0x00;
  948. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[1] = 0x00;
  949. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[0] = 0x98;
  950. /* Bytes for TH-filter part 2 (01): 02,5A,53,F0,0B,5F,84,D4 */
  951. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[7] = 0x02;
  952. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[6] = 0x5A;
  953. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[5] = 0x53;
  954. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[4] = 0xF0;
  955. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[3] = 0x0B;
  956. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[2] = 0x5F;
  957. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[1] = 0x84;
  958. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[0] = 0xD4;
  959. /* Bytes for TH-filter part 3 (02): 00,88,6A,A4,8F,52,F5,32 */
  960. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[7] = 0x00;
  961. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[6] = 0x88;
  962. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[5] = 0x6A;
  963. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[4] = 0xA4;
  964. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[3] = 0x8F;
  965. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[2] = 0x52;
  966. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[1] = 0xF5;
  967. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0x32;
  968. /* ; idle */
  969. /* Bytes for Ringing part 1 (03):1B,3C,93,3A,22,12,A3,23 */
  970. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
  971. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3C;
  972. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x93;
  973. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0x3A;
  974. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0x22;
  975. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x12;
  976. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xA3;
  977. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
  978. /* Bytes for Ringing part 2 (06):12,A2,A6,BA,22,7A,0A,D5 */
  979. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x12;
  980. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0xA2;
  981. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
  982. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
  983. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0x22;
  984. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7A;
  985. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A;
  986. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
  987. /* Levelmetering Ringing           (0D):AA,35,0F,8E     ; 25Hz 30V less possible? */
  988. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0xAA;
  989. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x35;
  990. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0x0F;
  991. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x8E;
  992. /* Caller ID 1st Tone              (0E):CA,0E,CA,09,99,99,99,99 */
  993. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
  994. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
  995. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
  996. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
  997. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
  998. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
  999. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
  1000. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
  1001. /* Caller ID 2nd Tone              (0F):FD,B5,BA,07,DA,00,00,00 */
  1002. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
  1003. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
  1004. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
  1005. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
  1006. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
  1007. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
  1008. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
  1009. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
  1010. /* ;CR Registers */
  1011. /* Config. Reg. 0 (filters)        (cr0):FF */
  1012. j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg = 0xFF;
  1013. /* Config. Reg. 1 (dialing)        (cr1):05 */
  1014. j->m_DAAShadowRegs.SOP_REGS.SOP.cr1.reg = 0x05;
  1015. /* Config. Reg. 2 (caller ID)      (cr2):04 */
  1016. j->m_DAAShadowRegs.SOP_REGS.SOP.cr2.reg = 0x04;
  1017. /* Config. Reg. 3 (testloops)      (cr3):00        ;  */
  1018. j->m_DAAShadowRegs.SOP_REGS.SOP.cr3.reg = 0x00;
  1019. /* Config. Reg. 4 (analog gain)    (cr4):02 */
  1020. j->m_DAAShadowRegs.SOP_REGS.SOP.cr4.reg = 0x02;
  1021. /* Config. Reg. 5 (Version)        (cr5):02 */
  1022. /* Config. Reg. 6 (Reserved)       (cr6):00 */
  1023. /* Config. Reg. 7 (Reserved)       (cr7):00 */
  1024. /* ;xr Registers */
  1025. /* Ext. Reg. 0 (Interrupt Reg.)    (xr0):02 */
  1026. j->m_DAAShadowRegs.XOP_xr0_W.reg = 0x02; /* SO_1 set to '1' because it is inverted. */
  1027. /* Ext. Reg. 1 (Interrupt enable)  (xr1):1C */
  1028. j->m_DAAShadowRegs.XOP_REGS.XOP.xr1.reg = 0x1C; /* RING, Caller ID, VDD_OK */
  1029. /* Ext. Reg. 2 (Cadence Time Out)  (xr2):7D */
  1030. j->m_DAAShadowRegs.XOP_REGS.XOP.xr2.reg = 0x7D;
  1031. /* Ext. Reg. 3 (DC Char)           (xr3):36        ;  */
  1032. j->m_DAAShadowRegs.XOP_REGS.XOP.xr3.reg = 0x36;
  1033. /* Ext. Reg. 4 (Cadence)           (xr4):00 */
  1034. j->m_DAAShadowRegs.XOP_REGS.XOP.xr4.reg = 0x00;
  1035. /* Ext. Reg. 5 (Ring timer)        (xr5):22 */
  1036. j->m_DAAShadowRegs.XOP_REGS.XOP.xr5.reg = 0x22;
  1037. /* Ext. Reg. 6 (Power State)       (xr6):00 */
  1038. j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
  1039. /* Ext. Reg. 7 (Vdd)               (xr7):46 */
  1040. j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x46; /* 0x46 ??? Should it be 0x00? */
  1041. /* DTMF Tone 1                     (0B): 11,B3,5A,2C    ;   697 Hz   */
  1042. /*                                       12,33,5A,C3    ;  770 Hz   */
  1043. /*                                       13,3C,5B,32    ;  852 Hz   */
  1044. /*                                       1D,1B,5C,CC    ;  941 Hz   */
  1045. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
  1046. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
  1047. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
  1048. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
  1049. /* DTMF Tone 2                     (0C): 32,32,52,B3    ;  1209 Hz   */
  1050. /*                                       EC,1D,52,22    ;  1336 Hz   */
  1051. /*                                       AA,AC,51,D2    ;  1477 Hz   */
  1052. /*                                       9B,3B,51,25    ;  1633 Hz   */
  1053. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
  1054. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
  1055. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
  1056. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
  1057. }
  1058. static void DAA_Coeff_France(IXJ *j)
  1059. {
  1060. int i;
  1061. j->daa_country = DAA_FRANCE;
  1062. /*----------------------------------------------- */
  1063. /* CAO */
  1064. for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
  1065. j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
  1066. }
  1067. /* Bytes for IM-filter part 1 (04): 02,A2,43,2C,22,AF,A0,00 */
  1068. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x02;
  1069. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[6] = 0xA2;
  1070. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[5] = 0x43;
  1071. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[4] = 0x2C;
  1072. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[3] = 0x22;
  1073. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[2] = 0xAF;
  1074. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[1] = 0xA0;
  1075. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[0] = 0x00;
  1076. /* Bytes for IM-filter part 2 (05): 67,CE,00,0C,22,33,E0,08 */
  1077. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[7] = 0x67;
  1078. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[6] = 0xCE;
  1079. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[5] = 0x00;
  1080. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[4] = 0x2C;
  1081. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[3] = 0x22;
  1082. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[2] = 0x33;
  1083. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[1] = 0xE0;
  1084. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[0] = 0x08;
  1085. /* Bytes for FRX-filter       (08): 07,9A,28,F6,23,4A,B0,08 */
  1086. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[7] = 0x07;
  1087. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[6] = 0x9A;
  1088. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[5] = 0x28;
  1089. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[4] = 0xF6;
  1090. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[3] = 0x23;
  1091. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[2] = 0x4A;
  1092. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[1] = 0xB0;
  1093. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[0] = 0x08;
  1094. /* Bytes for FRR-filter       (07): 03,8F,F9,2F,9E,FA,20,08 */
  1095. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[7] = 0x03;
  1096. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[6] = 0x8F;
  1097. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[5] = 0xF9;
  1098. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[4] = 0x2F;
  1099. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[3] = 0x9E;
  1100. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[2] = 0xFA;
  1101. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[1] = 0x20;
  1102. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[0] = 0x08;
  1103. /* Bytes for AX-filter        (0A): 16,B5,DD,CA */
  1104. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[3] = 0x16;
  1105. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[2] = 0xB5;
  1106. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[1] = 0xDD;
  1107. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[0] = 0xCA;
  1108. /* Bytes for AR-filter        (09): 52,C7,10,D6 */
  1109. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[3] = 0xE2;
  1110. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[2] = 0xC7;
  1111. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[1] = 0x10;
  1112. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[0] = 0xD6;
  1113. /* Bytes for TH-filter part 1 (00): 00,42,48,81,A6,80,00,98 */
  1114. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[7] = 0x00;
  1115. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[6] = 0x42;
  1116. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[5] = 0x48;
  1117. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[4] = 0x81;
  1118. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[3] = 0xA6;
  1119. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[2] = 0x80;
  1120. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[1] = 0x00;
  1121. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[0] = 0x98;
  1122. /* Bytes for TH-filter part 2 (01): 02,AC,2A,30,78,AC,8A,2C */
  1123. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[7] = 0x02;
  1124. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[6] = 0xAC;
  1125. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[5] = 0x2A;
  1126. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[4] = 0x30;
  1127. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[3] = 0x78;
  1128. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[2] = 0xAC;
  1129. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[1] = 0x8A;
  1130. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[0] = 0x2C;
  1131. /* Bytes for TH-filter part 3 (02): 00,88,DA,A5,22,BA,2C,45 */
  1132. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[7] = 0x00;
  1133. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[6] = 0x88;
  1134. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[5] = 0xDA;
  1135. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[4] = 0xA5;
  1136. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[3] = 0x22;
  1137. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[2] = 0xBA;
  1138. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[1] = 0x2C;
  1139. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0x45;
  1140. /* ; idle */
  1141. /* Bytes for Ringing part 1 (03):1B,3C,93,3A,22,12,A3,23 */
  1142. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
  1143. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3C;
  1144. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x93;
  1145. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0x3A;
  1146. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0x22;
  1147. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x12;
  1148. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xA3;
  1149. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
  1150. /* Bytes for Ringing part 2 (06):12,A2,A6,BA,22,7A,0A,D5 */
  1151. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x12;
  1152. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0xA2;
  1153. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
  1154. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
  1155. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0x22;
  1156. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7A;
  1157. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A;
  1158. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
  1159. /* Levelmetering Ringing           (0D):32,45,B5,84     ; 50Hz 20V */
  1160. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0x32;
  1161. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x45;
  1162. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0xB5;
  1163. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x84;
  1164. /* Caller ID 1st Tone              (0E):CA,0E,CA,09,99,99,99,99 */
  1165. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
  1166. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
  1167. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
  1168. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
  1169. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
  1170. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
  1171. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
  1172. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
  1173. /* Caller ID 2nd Tone              (0F):FD,B5,BA,07,DA,00,00,00 */
  1174. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
  1175. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
  1176. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
  1177. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
  1178. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
  1179. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
  1180. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
  1181. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
  1182. /* ;CR Registers */
  1183. /* Config. Reg. 0 (filters)        (cr0):FF */
  1184. j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg = 0xFF;
  1185. /* Config. Reg. 1 (dialing)        (cr1):05 */
  1186. j->m_DAAShadowRegs.SOP_REGS.SOP.cr1.reg = 0x05;
  1187. /* Config. Reg. 2 (caller ID)      (cr2):04 */
  1188. j->m_DAAShadowRegs.SOP_REGS.SOP.cr2.reg = 0x04;
  1189. /* Config. Reg. 3 (testloops)      (cr3):00        ;  */
  1190. j->m_DAAShadowRegs.SOP_REGS.SOP.cr3.reg = 0x00;
  1191. /* Config. Reg. 4 (analog gain)    (cr4):02 */
  1192. j->m_DAAShadowRegs.SOP_REGS.SOP.cr4.reg = 0x02;
  1193. /* Config. Reg. 5 (Version)        (cr5):02 */
  1194. /* Config. Reg. 6 (Reserved)       (cr6):00 */
  1195. /* Config. Reg. 7 (Reserved)       (cr7):00 */
  1196. /* ;xr Registers */
  1197. /* Ext. Reg. 0 (Interrupt Reg.)    (xr0):02 */
  1198. j->m_DAAShadowRegs.XOP_xr0_W.reg = 0x02; /* SO_1 set to '1' because it is inverted. */
  1199. /* Ext. Reg. 1 (Interrupt enable)  (xr1):1C */
  1200. j->m_DAAShadowRegs.XOP_REGS.XOP.xr1.reg = 0x1C; /* RING, Caller ID, VDD_OK */
  1201. /* Ext. Reg. 2 (Cadence Time Out)  (xr2):7D */
  1202. j->m_DAAShadowRegs.XOP_REGS.XOP.xr2.reg = 0x7D;
  1203. /* Ext. Reg. 3 (DC Char)           (xr3):36        ;  */
  1204. j->m_DAAShadowRegs.XOP_REGS.XOP.xr3.reg = 0x36;
  1205. /* Ext. Reg. 4 (Cadence)           (xr4):00 */
  1206. j->m_DAAShadowRegs.XOP_REGS.XOP.xr4.reg = 0x00;
  1207. /* Ext. Reg. 5 (Ring timer)        (xr5):22 */
  1208. j->m_DAAShadowRegs.XOP_REGS.XOP.xr5.reg = 0x22;
  1209. /* Ext. Reg. 6 (Power State)       (xr6):00 */
  1210. j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
  1211. /* Ext. Reg. 7 (Vdd)               (xr7):46 */
  1212. j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x46; /* 0x46 ??? Should it be 0x00? */
  1213. /* DTMF Tone 1                     (0B): 11,B3,5A,2C    ;   697 Hz   */
  1214. /*                                       12,33,5A,C3    ;  770 Hz   */
  1215. /*                                       13,3C,5B,32    ;  852 Hz   */
  1216. /*                                       1D,1B,5C,CC    ;  941 Hz   */
  1217. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
  1218. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
  1219. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
  1220. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
  1221. /* DTMF Tone 2                     (0C): 32,32,52,B3    ;  1209 Hz   */
  1222. /*                                       EC,1D,52,22    ;  1336 Hz   */
  1223. /*                                       AA,AC,51,D2    ;  1477 Hz   */
  1224. /*                                       9B,3B,51,25    ;  1633 Hz   */
  1225. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
  1226. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
  1227. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
  1228. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
  1229. }
  1230. static void DAA_Coeff_Germany(IXJ *j)
  1231. {
  1232. int i;
  1233. j->daa_country = DAA_GERMANY;
  1234. /*----------------------------------------------- */
  1235. /* CAO */
  1236. for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
  1237. j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
  1238. }
  1239. /* Bytes for IM-filter part 1 (04): 00,CE,BB,B8,D2,81,B0,00 */
  1240. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x00;
  1241. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[6] = 0xCE;
  1242. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[5] = 0xBB;
  1243. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[4] = 0xB8;
  1244. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[3] = 0xD2;
  1245. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[2] = 0x81;
  1246. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[1] = 0xB0;
  1247. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[0] = 0x00;
  1248. /* Bytes for IM-filter part 2 (05): 45,8F,00,0C,D2,3A,D0,08 */
  1249. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[7] = 0x45;
  1250. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[6] = 0x8F;
  1251. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[5] = 0x00;
  1252. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[4] = 0x0C;
  1253. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[3] = 0xD2;
  1254. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[2] = 0x3A;
  1255. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[1] = 0xD0;
  1256. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[0] = 0x08;
  1257. /* Bytes for FRX-filter       (08): 07,AA,E2,34,24,89,20,08 */
  1258. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[7] = 0x07;
  1259. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[6] = 0xAA;
  1260. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[5] = 0xE2;
  1261. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[4] = 0x34;
  1262. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[3] = 0x24;
  1263. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[2] = 0x89;
  1264. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[1] = 0x20;
  1265. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[0] = 0x08;
  1266. /* Bytes for FRR-filter       (07): 02,87,FA,37,9A,CA,B0,08 */
  1267. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[7] = 0x02;
  1268. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[6] = 0x87;
  1269. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[5] = 0xFA;
  1270. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[4] = 0x37;
  1271. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[3] = 0x9A;
  1272. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[2] = 0xCA;
  1273. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[1] = 0xB0;
  1274. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[0] = 0x08;
  1275. /* Bytes for AX-filter        (0A): 72,D5,DD,CA */
  1276. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[3] = 0x72;
  1277. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[2] = 0xD5;
  1278. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[1] = 0xDD;
  1279. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[0] = 0xCA;
  1280. /* Bytes for AR-filter        (09): 72,42,13,4B */
  1281. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[3] = 0x72;
  1282. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[2] = 0x42;
  1283. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[1] = 0x13;
  1284. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[0] = 0x4B;
  1285. /* Bytes for TH-filter part 1 (00): 80,52,48,81,AD,80,00,98 */
  1286. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[7] = 0x80;
  1287. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[6] = 0x52;
  1288. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[5] = 0x48;
  1289. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[4] = 0x81;
  1290. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[3] = 0xAD;
  1291. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[2] = 0x80;
  1292. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[1] = 0x00;
  1293. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[0] = 0x98;
  1294. /* Bytes for TH-filter part 2 (01): 02,42,5A,20,E8,1A,81,27 */
  1295. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[7] = 0x02;
  1296. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[6] = 0x42;
  1297. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[5] = 0x5A;
  1298. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[4] = 0x20;
  1299. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[3] = 0xE8;
  1300. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[2] = 0x1A;
  1301. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[1] = 0x81;
  1302. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[0] = 0x27;
  1303. /* Bytes for TH-filter part 3 (02): 00,88,63,26,BD,4B,A3,C2 */
  1304. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[7] = 0x00;
  1305. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[6] = 0x88;
  1306. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[5] = 0x63;
  1307. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[4] = 0x26;
  1308. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[3] = 0xBD;
  1309. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[2] = 0x4B;
  1310. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[1] = 0xA3;
  1311. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0xC2;
  1312. /* ;  (10K, 0.68uF) */
  1313. /* Bytes for Ringing part 1 (03):1B,3B,9B,BA,D4,1C,B3,23 */
  1314. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
  1315. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3B;
  1316. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x9B;
  1317. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0xBA;
  1318. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0xD4;
  1319. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x1C;
  1320. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xB3;
  1321. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
  1322. /* Bytes for Ringing part 2 (06):13,42,A6,BA,D4,73,CA,D5 */
  1323. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x13;
  1324. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0x42;
  1325. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
  1326. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
  1327. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0xD4;
  1328. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x73;
  1329. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0xCA;
  1330. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
  1331. /* Levelmetering Ringing        (0D):B2,45,0F,8E       */
  1332. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0xB2;
  1333. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x45;
  1334. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0x0F;
  1335. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x8E;
  1336. /* Caller ID 1st Tone           (0E):CA,0E,CA,09,99,99,99,99 */
  1337. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
  1338. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
  1339. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
  1340. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
  1341. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
  1342. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
  1343. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
  1344. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
  1345. /* Caller ID 2nd Tone           (0F):FD,B5,BA,07,DA,00,00,00 */
  1346. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
  1347. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
  1348. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
  1349. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
  1350. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
  1351. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
  1352. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
  1353. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
  1354. /* ;CR Registers */
  1355. /* Config. Reg. 0 (filters)        (cr0):FF ; all Filters enabled, CLK from ext. source */
  1356. j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg = 0xFF;
  1357. /* Config. Reg. 1 (dialing)        (cr1):05 ; Manual Ring, Ring metering enabled */
  1358. j->m_DAAShadowRegs.SOP_REGS.SOP.cr1.reg = 0x05;
  1359. /* Config. Reg. 2 (caller ID)      (cr2):04 ; Analog Gain 0dB, FSC internal */
  1360. j->m_DAAShadowRegs.SOP_REGS.SOP.cr2.reg = 0x04;
  1361. /* Config. Reg. 3 (testloops)      (cr3):00 ; SEL Bit==0, HP-enabled */
  1362. j->m_DAAShadowRegs.SOP_REGS.SOP.cr3.reg = 0x00;
  1363. /* Config. Reg. 4 (analog gain)    (cr4):02 */
  1364. j->m_DAAShadowRegs.SOP_REGS.SOP.cr4.reg = 0x02;
  1365. /* Config. Reg. 5 (Version)        (cr5):02 */
  1366. /* Config. Reg. 6 (Reserved)       (cr6):00 */
  1367. /* Config. Reg. 7 (Reserved)       (cr7):00 */
  1368. /* ;xr Registers */
  1369. /* Ext. Reg. 0 (Interrupt Reg.)    (xr0):02 */
  1370. j->m_DAAShadowRegs.XOP_xr0_W.reg = 0x02; /* SO_1 set to '1' because it is inverted. */
  1371. /* Ext. Reg. 1 (Interrupt enable)  (xr1):1C ; Ring, CID, VDDOK Interrupts enabled */
  1372. j->m_DAAShadowRegs.XOP_REGS.XOP.xr1.reg = 0x1C; /* RING, Caller ID, VDD_OK */
  1373. /* Ext. Reg. 2 (Cadence Time Out)  (xr2):7D */
  1374. j->m_DAAShadowRegs.XOP_REGS.XOP.xr2.reg = 0x7D;
  1375. /* Ext. Reg. 3 (DC Char)           (xr3):32 ; B-Filter Off==1, U0=3.5V, R=200Ohm */
  1376. j->m_DAAShadowRegs.XOP_REGS.XOP.xr3.reg = 0x32;
  1377. /* Ext. Reg. 4 (Cadence)           (xr4):00 */
  1378. j->m_DAAShadowRegs.XOP_REGS.XOP.xr4.reg = 0x00;
  1379. /* Ext. Reg. 5 (Ring timer)        (xr5):22 */
  1380. j->m_DAAShadowRegs.XOP_REGS.XOP.xr5.reg = 0x22;
  1381. /* Ext. Reg. 6 (Power State)       (xr6):00 */
  1382. j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
  1383. /* Ext. Reg. 7 (Vdd)               (xr7):40 ; VDD=4.25 V */
  1384. j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x40; /* 0x40 ??? Should it be 0x00? */
  1385. /* DTMF Tone 1                     (0B): 11,B3,5A,2C    ;   697 Hz   */
  1386. /*                                       12,33,5A,C3    ;  770 Hz   */
  1387. /*                                       13,3C,5B,32    ;  852 Hz   */
  1388. /*                                       1D,1B,5C,CC    ;  941 Hz   */
  1389. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
  1390. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
  1391. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
  1392. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
  1393. /* DTMF Tone 2                     (0C): 32,32,52,B3    ;  1209 Hz   */
  1394. /*                                       EC,1D,52,22    ;  1336 Hz   */
  1395. /*                                       AA,AC,51,D2    ;  1477 Hz   */
  1396. /*                                       9B,3B,51,25    ;  1633 Hz   */
  1397. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
  1398. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
  1399. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
  1400. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
  1401. }
  1402. static void DAA_Coeff_Australia(IXJ *j)
  1403. {
  1404. int i;
  1405. j->daa_country = DAA_AUSTRALIA;
  1406. /*----------------------------------------------- */
  1407. /* CAO */
  1408. for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
  1409. j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
  1410. }
  1411. /* Bytes for IM-filter part 1 (04): 00,A3,AA,28,B3,82,D0,00 */
  1412. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x00;
  1413. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[6] = 0xA3;
  1414. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[5] = 0xAA;
  1415. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[4] = 0x28;
  1416. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[3] = 0xB3;
  1417. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[2] = 0x82;
  1418. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[1] = 0xD0;
  1419. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[0] = 0x00;
  1420. /* Bytes for IM-filter part 2 (05): 70,96,00,09,32,6B,C0,08 */
  1421. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[7] = 0x70;
  1422. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[6] = 0x96;
  1423. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[5] = 0x00;
  1424. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[4] = 0x09;
  1425. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[3] = 0x32;
  1426. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[2] = 0x6B;
  1427. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[1] = 0xC0;
  1428. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[0] = 0x08;
  1429. /* Bytes for FRX-filter       (08): 07,96,E2,34,32,9B,30,08 */
  1430. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[7] = 0x07;
  1431. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[6] = 0x96;
  1432. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[5] = 0xE2;
  1433. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[4] = 0x34;
  1434. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[3] = 0x32;
  1435. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[2] = 0x9B;
  1436. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[1] = 0x30;
  1437. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[0] = 0x08;
  1438. /* Bytes for FRR-filter       (07): 0F,9A,E9,2F,22,CC,A0,08 */
  1439. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[7] = 0x0F;
  1440. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[6] = 0x9A;
  1441. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[5] = 0xE9;
  1442. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[4] = 0x2F;
  1443. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[3] = 0x22;
  1444. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[2] = 0xCC;
  1445. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[1] = 0xA0;
  1446. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[0] = 0x08;
  1447. /* Bytes for AX-filter        (0A): CB,45,DD,CA */
  1448. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[3] = 0xCB;
  1449. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[2] = 0x45;
  1450. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[1] = 0xDD;
  1451. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[0] = 0xCA;
  1452. /* Bytes for AR-filter        (09): 1B,67,10,D6 */
  1453. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[3] = 0x1B;
  1454. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[2] = 0x67;
  1455. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[1] = 0x10;
  1456. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[0] = 0xD6;
  1457. /* Bytes for TH-filter part 1 (00): 80,52,48,81,AF,80,00,98 */
  1458. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[7] = 0x80;
  1459. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[6] = 0x52;
  1460. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[5] = 0x48;
  1461. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[4] = 0x81;
  1462. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[3] = 0xAF;
  1463. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[2] = 0x80;
  1464. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[1] = 0x00;
  1465. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[0] = 0x98;
  1466. /* Bytes for TH-filter part 2 (01): 02,DB,52,B0,38,01,82,AC */
  1467. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[7] = 0x02;
  1468. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[6] = 0xDB;
  1469. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[5] = 0x52;
  1470. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[4] = 0xB0;
  1471. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[3] = 0x38;
  1472. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[2] = 0x01;
  1473. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[1] = 0x82;
  1474. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[0] = 0xAC;
  1475. /* Bytes for TH-filter part 3 (02): 00,88,4A,3E,2C,3B,24,46 */
  1476. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[7] = 0x00;
  1477. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[6] = 0x88;
  1478. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[5] = 0x4A;
  1479. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[4] = 0x3E;
  1480. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[3] = 0x2C;
  1481. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[2] = 0x3B;
  1482. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[1] = 0x24;
  1483. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0x46;
  1484. /* ;  idle */
  1485. /* Bytes for Ringing part 1 (03):1B,3C,93,3A,22,12,A3,23 */
  1486. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
  1487. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3C;
  1488. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x93;
  1489. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0x3A;
  1490. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0x22;
  1491. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x12;
  1492. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xA3;
  1493. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
  1494. /* Bytes for Ringing part 2 (06):12,A2,A6,BA,22,7A,0A,D5 */
  1495. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x12;
  1496. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0xA2;
  1497. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
  1498. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
  1499. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0x22;
  1500. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7A;
  1501. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A;
  1502. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
  1503. /* Levelmetering Ringing           (0D):32,45,B5,84   ; 50Hz 20V */
  1504. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0x32;
  1505. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x45;
  1506. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0xB5;
  1507. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x84;
  1508. /* Caller ID 1st Tone              (0E):CA,0E,CA,09,99,99,99,99 */
  1509. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
  1510. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
  1511. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
  1512. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
  1513. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
  1514. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
  1515. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
  1516. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
  1517. /* Caller ID 2nd Tone              (0F):FD,B5,BA,07,DA,00,00,00 */
  1518. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
  1519. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
  1520. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
  1521. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
  1522. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
  1523. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
  1524. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
  1525. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
  1526. /* ;CR Registers */
  1527. /* Config. Reg. 0 (filters)        (cr0):FF */
  1528. j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg = 0xFF;
  1529. /* Config. Reg. 1 (dialing)        (cr1):05 */
  1530. j->m_DAAShadowRegs.SOP_REGS.SOP.cr1.reg = 0x05;
  1531. /* Config. Reg. 2 (caller ID)      (cr2):04 */
  1532. j->m_DAAShadowRegs.SOP_REGS.SOP.cr2.reg = 0x04;
  1533. /* Config. Reg. 3 (testloops)      (cr3):00        ;  */
  1534. j->m_DAAShadowRegs.SOP_REGS.SOP.cr3.reg = 0x00;
  1535. /* Config. Reg. 4 (analog gain)    (cr4):02 */
  1536. j->m_DAAShadowRegs.SOP_REGS.SOP.cr4.reg = 0x02;
  1537. /* Config. Reg. 5 (Version)        (cr5):02 */
  1538. /* Config. Reg. 6 (Reserved)       (cr6):00 */
  1539. /* Config. Reg. 7 (Reserved)       (cr7):00 */
  1540. /* ;xr Registers */
  1541. /* Ext. Reg. 0 (Interrupt Reg.)    (xr0):02 */
  1542. j->m_DAAShadowRegs.XOP_xr0_W.reg = 0x02; /* SO_1 set to '1' because it is inverted. */
  1543. /* Ext. Reg. 1 (Interrupt enable)  (xr1):1C */
  1544. j->m_DAAShadowRegs.XOP_REGS.XOP.xr1.reg = 0x1C; /* RING, Caller ID, VDD_OK */
  1545. /* Ext. Reg. 2 (Cadence Time Out)  (xr2):7D */
  1546. j->m_DAAShadowRegs.XOP_REGS.XOP.xr2.reg = 0x7D;
  1547. /* Ext. Reg. 3 (DC Char)           (xr3):2B      ;  */
  1548. j->m_DAAShadowRegs.XOP_REGS.XOP.xr3.reg = 0x2B;
  1549. /* Ext. Reg. 4 (Cadence)           (xr4):00 */
  1550. j->m_DAAShadowRegs.XOP_REGS.XOP.xr4.reg = 0x00;
  1551. /* Ext. Reg. 5 (Ring timer)        (xr5):22 */
  1552. j->m_DAAShadowRegs.XOP_REGS.XOP.xr5.reg = 0x22;
  1553. /* Ext. Reg. 6 (Power State)       (xr6):00 */
  1554. j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
  1555. /* Ext. Reg. 7 (Vdd)               (xr7):40 */
  1556. j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x40; /* 0x40 ??? Should it be 0x00? */
  1557. /* DTMF Tone 1                     (0B): 11,B3,5A,2C    ;  697 Hz   */
  1558. /*                                       12,33,5A,C3    ;  770 Hz   */
  1559. /*                                       13,3C,5B,32    ;  852 Hz   */
  1560. /*                                       1D,1B,5C,CC    ;  941 Hz   */
  1561. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
  1562. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
  1563. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
  1564. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
  1565. /* DTMF Tone 2                     (0C): 32,32,52,B3    ;  1209 Hz   */
  1566. /*                                       EC,1D,52,22    ;  1336 Hz   */
  1567. /*                                       AA,AC,51,D2    ;  1477 Hz   */
  1568. /*                                       9B,3B,51,25    ;  1633 Hz   */
  1569. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
  1570. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
  1571. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
  1572. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
  1573. }
  1574. static void DAA_Coeff_Japan(IXJ *j)
  1575. {
  1576. int i;
  1577. j->daa_country = DAA_JAPAN;
  1578. /*----------------------------------------------- */
  1579. /* CAO */
  1580. for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
  1581. j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
  1582. }
  1583. /* Bytes for IM-filter part 1 (04): 06,BD,E2,2D,BA,F9,A0,00 */
  1584. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x06;
  1585. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[6] = 0xBD;
  1586. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[5] = 0xE2;
  1587. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[4] = 0x2D;
  1588. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[3] = 0xBA;
  1589. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[2] = 0xF9;
  1590. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[1] = 0xA0;
  1591. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[0] = 0x00;
  1592. /* Bytes for IM-filter part 2 (05): 6F,F7,00,0E,34,33,E0,08 */
  1593. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[7] = 0x6F;
  1594. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[6] = 0xF7;
  1595. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[5] = 0x00;
  1596. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[4] = 0x0E;
  1597. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[3] = 0x34;
  1598. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[2] = 0x33;
  1599. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[1] = 0xE0;
  1600. j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[0] = 0x08;
  1601. /* Bytes for FRX-filter       (08): 02,8F,68,77,9C,58,F0,08 */
  1602. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[7] = 0x02;
  1603. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[6] = 0x8F;
  1604. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[5] = 0x68;
  1605. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[4] = 0x77;
  1606. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[3] = 0x9C;
  1607. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[2] = 0x58;
  1608. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[1] = 0xF0;
  1609. j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[0] = 0x08;
  1610. /* Bytes for FRR-filter       (07): 03,8F,38,73,87,EA,20,08 */
  1611. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[7] = 0x03;
  1612. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[6] = 0x8F;
  1613. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[5] = 0x38;
  1614. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[4] = 0x73;
  1615. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[3] = 0x87;
  1616. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[2] = 0xEA;
  1617. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[1] = 0x20;
  1618. j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[0] = 0x08;
  1619. /* Bytes for AX-filter        (0A): 51,C5,DD,CA */
  1620. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[3] = 0x51;
  1621. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[2] = 0xC5;
  1622. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[1] = 0xDD;
  1623. j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[0] = 0xCA;
  1624. /* Bytes for AR-filter        (09): 25,A7,10,D6 */
  1625. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[3] = 0x25;
  1626. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[2] = 0xA7;
  1627. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[1] = 0x10;
  1628. j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[0] = 0xD6;
  1629. /* Bytes for TH-filter part 1 (00): 00,42,48,81,AE,80,00,98 */
  1630. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[7] = 0x00;
  1631. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[6] = 0x42;
  1632. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[5] = 0x48;
  1633. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[4] = 0x81;
  1634. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[3] = 0xAE;
  1635. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[2] = 0x80;
  1636. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[1] = 0x00;
  1637. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[0] = 0x98;
  1638. /* Bytes for TH-filter part 2 (01): 02,AB,2A,20,99,5B,89,28 */
  1639. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[7] = 0x02;
  1640. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[6] = 0xAB;
  1641. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[5] = 0x2A;
  1642. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[4] = 0x20;
  1643. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[3] = 0x99;
  1644. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[2] = 0x5B;
  1645. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[1] = 0x89;
  1646. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[0] = 0x28;
  1647. /* Bytes for TH-filter part 3 (02): 00,88,DA,25,34,C5,4C,BA */
  1648. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[7] = 0x00;
  1649. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[6] = 0x88;
  1650. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[5] = 0xDA;
  1651. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[4] = 0x25;
  1652. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[3] = 0x34;
  1653. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[2] = 0xC5;
  1654. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[1] = 0x4C;
  1655. j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0xBA;
  1656. /* ;  idle */
  1657. /* Bytes for Ringing part 1 (03):1B,3C,93,3A,22,12,A3,23 */
  1658. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
  1659. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3C;
  1660. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x93;
  1661. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0x3A;
  1662. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0x22;
  1663. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x12;
  1664. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xA3;
  1665. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
  1666. /* Bytes for Ringing part 2 (06):12,A2,A6,BA,22,7A,0A,D5 */
  1667. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x12;
  1668. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0xA2;
  1669. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
  1670. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
  1671. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0x22;
  1672. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7A;
  1673. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A;
  1674. j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
  1675. /* Levelmetering Ringing           (0D):AA,35,0F,8E    ; 25Hz 30V ????????? */
  1676. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0xAA;
  1677. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x35;
  1678. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0x0F;
  1679. j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x8E;
  1680. /* Caller ID 1st Tone              (0E):CA,0E,CA,09,99,99,99,99 */
  1681. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
  1682. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
  1683. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
  1684. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
  1685. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
  1686. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
  1687. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
  1688. j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
  1689. /* Caller ID 2nd Tone              (0F):FD,B5,BA,07,DA,00,00,00 */
  1690. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
  1691. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
  1692. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
  1693. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
  1694. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
  1695. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
  1696. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
  1697. j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
  1698. /* ;CR Registers */
  1699. /* Config. Reg. 0 (filters)        (cr0):FF */
  1700. j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg = 0xFF;
  1701. /* Config. Reg. 1 (dialing)        (cr1):05 */
  1702. j->m_DAAShadowRegs.SOP_REGS.SOP.cr1.reg = 0x05;
  1703. /* Config. Reg. 2 (caller ID)      (cr2):04 */
  1704. j->m_DAAShadowRegs.SOP_REGS.SOP.cr2.reg = 0x04;
  1705. /* Config. Reg. 3 (testloops)      (cr3):00        ;  */
  1706. j->m_DAAShadowRegs.SOP_REGS.SOP.cr3.reg = 0x00;
  1707. /* Config. Reg. 4 (analog gain)    (cr4):02 */
  1708. j->m_DAAShadowRegs.SOP_REGS.SOP.cr4.reg = 0x02;
  1709. /* Config. Reg. 5 (Version)        (cr5):02 */
  1710. /* Config. Reg. 6 (Reserved)       (cr6):00 */
  1711. /* Config. Reg. 7 (Reserved)       (cr7):00 */
  1712. /* ;xr Registers */
  1713. /* Ext. Reg. 0 (Interrupt Reg.)    (xr0):02 */
  1714. j->m_DAAShadowRegs.XOP_xr0_W.reg = 0x02; /* SO_1 set to '1' because it is inverted. */
  1715. /* Ext. Reg. 1 (Interrupt enable)  (xr1):1C */
  1716. j->m_DAAShadowRegs.XOP_REGS.XOP.xr1.reg = 0x1C; /* RING, Caller ID, VDD_OK */
  1717. /* Ext. Reg. 2 (Cadence Time Out)  (xr2):7D */
  1718. j->m_DAAShadowRegs.XOP_REGS.XOP.xr2.reg = 0x7D;
  1719. /* Ext. Reg. 3 (DC Char)           (xr3):22        ;  */
  1720. j->m_DAAShadowRegs.XOP_REGS.XOP.xr3.reg = 0x22;
  1721. /* Ext. Reg. 4 (Cadence)           (xr4):00 */
  1722. j->m_DAAShadowRegs.XOP_REGS.XOP.xr4.reg = 0x00;
  1723. /* Ext. Reg. 5 (Ring timer)        (xr5):22 */
  1724. j->m_DAAShadowRegs.XOP_REGS.XOP.xr5.reg = 0x22;
  1725. /* Ext. Reg. 6 (Power State)       (xr6):00 */
  1726. j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
  1727. /* Ext. Reg. 7 (Vdd)               (xr7):40 */
  1728. j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x40; /* 0x40 ??? Should it be 0x00? */
  1729. /* DTMF Tone 1                     (0B): 11,B3,5A,2C    ;   697 Hz   */
  1730. /*                                       12,33,5A,C3    ;  770 Hz   */
  1731. /*                                       13,3C,5B,32    ;  852 Hz   */
  1732. /*                                       1D,1B,5C,CC    ;  941 Hz   */
  1733. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
  1734. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
  1735. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
  1736. j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
  1737. /* DTMF Tone 2                     (0C): 32,32,52,B3    ;  1209 Hz   */
  1738. /*                                       EC,1D,52,22    ;  1336 Hz   */
  1739. /*                                       AA,AC,51,D2    ;  1477 Hz   */
  1740. /*                                       9B,3B,51,25    ;  1633 Hz   */
  1741. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
  1742. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
  1743. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
  1744. j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
  1745. }
  1746. static s16 tone_table[][19] =
  1747. {
  1748. { /* f20_50[] 11 */
  1749. 32538, /* A1 = 1.985962 */
  1750.  -32325, /* A2 = -0.986511 */
  1751.  -343, /* B2 = -0.010493 */
  1752.  0, /* B1 = 0 */
  1753.  343, /* B0 = 0.010493 */
  1754.  32619, /* A1 = 1.990906 */
  1755.  -32520, /* A2 = -0.992462 */
  1756.  19179, /* B2 = 0.585327 */
  1757.  -19178, /* B1 = -1.170593 */
  1758.  19179, /* B0 = 0.585327 */
  1759.  32723, /* A1 = 1.997314 */
  1760.  -32686, /* A2 = -0.997528 */
  1761.  9973, /* B2 = 0.304352 */
  1762.  -9955, /* B1 = -0.607605 */
  1763.  9973, /* B0 = 0.304352 */
  1764.  7, /* Internal filter scaling */
  1765.  159, /* Minimum in-band energy threshold */
  1766.  21, /* 21/32 in-band to broad-band ratio */
  1767.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  1768. },
  1769. { /* f133_200[] 12 */
  1770. 32072, /* A1 = 1.95752 */
  1771.  -31896, /* A2 = -0.973419 */
  1772.  -435, /* B2 = -0.013294 */
  1773.  0, /* B1 = 0 */
  1774.  435, /* B0 = 0.013294 */
  1775.  32188, /* A1 = 1.9646 */
  1776.  -32400, /* A2 = -0.98877 */
  1777.  15139, /* B2 = 0.462036 */
  1778.  -14882, /* B1 = -0.908356 */
  1779.  15139, /* B0 = 0.462036 */
  1780.  32473, /* A1 = 1.981995 */
  1781.  -32524, /* A2 = -0.992584 */
  1782.  23200, /* B2 = 0.708008 */
  1783.  -23113, /* B1 = -1.410706 */
  1784.  23200, /* B0 = 0.708008 */
  1785.  7, /* Internal filter scaling */
  1786.  159, /* Minimum in-band energy threshold */
  1787.  21, /* 21/32 in-band to broad-band ratio */
  1788.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  1789. },
  1790. { /* f300 13 */
  1791. 31769, /* A1 = -1.939026 */
  1792.  -32584, /* A2 = 0.994385 */
  1793.  -475, /* B2 = -0.014522 */
  1794.  0, /* B1 = 0.000000 */
  1795.  475, /* B0 = 0.014522 */
  1796.  31789, /* A1 = -1.940247 */
  1797.  -32679, /* A2 = 0.997284 */
  1798.  17280, /* B2 = 0.527344 */
  1799.  -16865, /* B1 = -1.029358 */
  1800.  17280, /* B0 = 0.527344 */
  1801.  31841, /* A1 = -1.943481 */
  1802.  -32681, /* A2 = 0.997345 */
  1803.  543, /* B2 = 0.016579 */
  1804.  -525, /* B1 = -0.032097 */
  1805.  543, /* B0 = 0.016579 */
  1806.  5, /* Internal filter scaling */
  1807.  159, /* Minimum in-band energy threshold */
  1808.  21, /* 21/32 in-band to broad-band ratio */
  1809.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  1810. },
  1811. { /* f300_420[] 14 */
  1812. 30750, /* A1 = 1.876892 */
  1813.  -31212, /* A2 = -0.952515 */
  1814.  -804, /* B2 = -0.024541 */
  1815.  0, /* B1 = 0 */
  1816.  804, /* B0 = 0.024541 */
  1817.  30686, /* A1 = 1.872925 */
  1818.  -32145, /* A2 = -0.980988 */
  1819.  14747, /* B2 = 0.450043 */
  1820.  -13703, /* B1 = -0.836395 */
  1821.  14747, /* B0 = 0.450043 */
  1822.  31651, /* A1 = 1.931824 */
  1823.  -32321, /* A2 = -0.986389 */
  1824.  24425, /* B2 = 0.745422 */
  1825.  -23914, /* B1 = -1.459595 */
  1826.  24427, /* B0 = 0.745483 */
  1827.  7, /* Internal filter scaling */
  1828.  159, /* Minimum in-band energy threshold */
  1829.  21, /* 21/32 in-band to broad-band ratio */
  1830.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  1831. },
  1832. { /* f330 15 */
  1833. 31613, /* A1 = -1.929565 */
  1834.  -32646, /* A2 = 0.996277 */
  1835.  -185, /* B2 = -0.005657 */
  1836.  0, /* B1 = 0.000000 */
  1837.  185, /* B0 = 0.005657 */
  1838.  31620, /* A1 = -1.929932 */
  1839.  -32713, /* A2 = 0.998352 */
  1840.  19253, /* B2 = 0.587585 */
  1841.  -18566, /* B1 = -1.133179 */
  1842.  19253, /* B0 = 0.587585 */
  1843.  31674, /* A1 = -1.933228 */
  1844.  -32715, /* A2 = 0.998413 */
  1845.  2575, /* B2 = 0.078590 */
  1846.  -2495, /* B1 = -0.152283 */
  1847.  2575, /* B0 = 0.078590 */
  1848.  5, /* Internal filter scaling */
  1849.  159, /* Minimum in-band energy threshold */
  1850.  21, /* 21/32 in-band to broad-band ratio */
  1851.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  1852. },
  1853. { /* f300_425[] 16 */
  1854. 30741, /* A1 = 1.876282 */
  1855.  -31475, /* A2 = -0.960541 */
  1856.  -703, /* B2 = -0.021484 */
  1857.  0, /* B1 = 0 */
  1858.  703, /* B0 = 0.021484 */
  1859.  30688, /* A1 = 1.873047 */
  1860.  -32248, /* A2 = -0.984161 */
  1861.  14542, /* B2 = 0.443787 */
  1862.  -13523, /* B1 = -0.825439 */
  1863.  14542, /* B0 = 0.443817 */
  1864.  31494, /* A1 = 1.922302 */
  1865.  -32366, /* A2 = -0.987762 */
  1866.  21577, /* B2 = 0.658508 */
  1867.  -21013, /* B1 = -1.282532 */
  1868.  21577, /* B0 = 0.658508 */
  1869.  7, /* Internal filter scaling */
  1870.  159, /* Minimum in-band energy threshold */
  1871.  21, /* 21/32 in-band to broad-band ratio */
  1872.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  1873. },
  1874. { /* f330_440[] 17 */
  1875. 30627, /* A1 = 1.869324 */
  1876.  -31338, /* A2 = -0.95636 */
  1877.  -843, /* B2 = -0.025749 */
  1878.  0, /* B1 = 0 */
  1879.  843, /* B0 = 0.025749 */
  1880.  30550, /* A1 = 1.864685 */
  1881.  -32221, /* A2 = -0.983337 */
  1882.  13594, /* B2 = 0.414886 */
  1883.  -12589, /* B1 = -0.768402 */
  1884.  13594, /* B0 = 0.414886 */
  1885.  31488, /* A1 = 1.921936 */
  1886.  -32358, /* A2 = -0.987518 */
  1887.  24684, /* B2 = 0.753296 */
  1888.  -24029, /* B1 = -1.466614 */
  1889.  24684, /* B0 = 0.753296 */
  1890.  7, /* Internal filter scaling */
  1891.  159, /* Minimum in-band energy threshold */
  1892.  21, /* 21/32 in-band to broad-band ratio */
  1893.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  1894. },
  1895. { /* f340 18 */
  1896. 31546, /* A1 = -1.925476 */
  1897.  -32646, /* A2 = 0.996277 */
  1898.  -445, /* B2 = -0.013588 */
  1899.  0, /* B1 = 0.000000 */
  1900.  445, /* B0 = 0.013588 */
  1901.  31551, /* A1 = -1.925781 */
  1902.  -32713, /* A2 = 0.998352 */
  1903.  23884, /* B2 = 0.728882 */
  1904.  -22979, /* B1 = -1.402527 */
  1905.  23884, /* B0 = 0.728882 */
  1906.  31606, /* A1 = -1.929138 */
  1907.  -32715, /* A2 = 0.998413 */
  1908.  863, /* B2 = 0.026367 */
  1909.  -835, /* B1 = -0.050985 */
  1910.  863, /* B0 = 0.026367 */
  1911.  5, /* Internal filter scaling */
  1912.  159, /* Minimum in-band energy threshold */
  1913.  21, /* 21/32 in-band to broad-band ratio */
  1914.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  1915. },
  1916. { /* f350_400[] 19 */
  1917. 31006, /* A1 = 1.892517 */
  1918.  -32029, /* A2 = -0.977448 */
  1919.  -461, /* B2 = -0.014096 */
  1920.  0, /* B1 = 0 */
  1921.  461, /* B0 = 0.014096 */
  1922.  30999, /* A1 = 1.892029 */
  1923.  -32487, /* A2 = -0.991455 */
  1924.  11325, /* B2 = 0.345612 */
  1925.  -10682, /* B1 = -0.651978 */
  1926.  11325, /* B0 = 0.345612 */
  1927.  31441, /* A1 = 1.919067 */
  1928.  -32526, /* A2 = -0.992615 */
  1929.  24324, /* B2 = 0.74231 */
  1930.  -23535, /* B1 = -1.436523 */
  1931.  24324, /* B0 = 0.74231 */
  1932.  7, /* Internal filter scaling */
  1933.  159, /* Minimum in-band energy threshold */
  1934.  21, /* 21/32 in-band to broad-band ratio */
  1935.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  1936. },
  1937. { /* f350_440[] */
  1938. 30634, /* A1 = 1.869751 */
  1939.  -31533, /* A2 = -0.962341 */
  1940.  -680, /* B2 = -0.020782 */
  1941.  0, /* B1 = 0 */
  1942.  680, /* B0 = 0.020782 */
  1943.  30571, /* A1 = 1.865906 */
  1944.  -32277, /* A2 = -0.985016 */
  1945.  12894, /* B2 = 0.393524 */
  1946.  -11945, /* B1 = -0.729065 */
  1947.  12894, /* B0 = 0.393524 */
  1948.  31367, /* A1 = 1.91449 */
  1949.  -32379, /* A2 = -0.988129 */
  1950.  23820, /* B2 = 0.726929 */
  1951.  -23104, /* B1 = -1.410217 */
  1952.  23820, /* B0 = 0.726929 */
  1953.  7, /* Internal filter scaling */
  1954.  159, /* Minimum in-band energy threshold */
  1955.  21, /* 21/32 in-band to broad-band ratio */
  1956.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  1957. },
  1958. { /* f350_450[] */
  1959. 30552, /* A1 = 1.864807 */
  1960.  -31434, /* A2 = -0.95929 */
  1961.  -690, /* B2 = -0.021066 */
  1962.  0, /* B1 = 0 */
  1963.  690, /* B0 = 0.021066 */
  1964.  30472, /* A1 = 1.859924 */
  1965.  -32248, /* A2 = -0.984161 */
  1966.  13385, /* B2 = 0.408478 */
  1967.  -12357, /* B1 = -0.754242 */
  1968.  13385, /* B0 = 0.408478 */
  1969.  31358, /* A1 = 1.914001 */
  1970.  -32366, /* A2 = -0.987732 */
  1971.  26488, /* B2 = 0.80835 */
  1972.  -25692, /* B1 = -1.568176 */
  1973.  26490, /* B0 = 0.808411 */
  1974.  7, /* Internal filter scaling */
  1975.  159, /* Minimum in-band energy threshold */
  1976.  21, /* 21/32 in-band to broad-band ratio */
  1977.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  1978. },
  1979. { /* f360 */
  1980. 31397, /* A1 = -1.916321 */
  1981.  -32623, /* A2 = 0.995605 */
  1982.  -117, /* B2 = -0.003598 */
  1983.  0, /* B1 = 0.000000 */
  1984.  117, /* B0 = 0.003598 */
  1985.  31403, /* A1 = -1.916687 */
  1986.  -32700, /* A2 = 0.997925 */
  1987.  3388, /* B2 = 0.103401 */
  1988.  -3240, /* B1 = -0.197784 */
  1989.  3388, /* B0 = 0.103401 */
  1990.  31463, /* A1 = -1.920410 */
  1991.  -32702, /* A2 = 0.997986 */
  1992.  13346, /* B2 = 0.407288 */
  1993.  -12863, /* B1 = -0.785126 */
  1994.  13346, /* B0 = 0.407288 */
  1995.  5, /* Internal filter scaling */
  1996.  159, /* Minimum in-band energy threshold */
  1997.  21, /* 21/32 in-band to broad-band ratio */
  1998.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  1999. },
  2000. { /* f380_420[] */
  2001. 30831, /* A1 = 1.881775 */
  2002.  -32064, /* A2 = -0.978546 */
  2003.  -367, /* B2 = -0.01122 */
  2004.  0, /* B1 = 0 */
  2005.  367, /* B0 = 0.01122 */
  2006.  30813, /* A1 = 1.880737 */
  2007.  -32456, /* A2 = -0.990509 */
  2008.  11068, /* B2 = 0.337769 */
  2009.  -10338, /* B1 = -0.631042 */
  2010.  11068, /* B0 = 0.337769 */
  2011.  31214, /* A1 = 1.905212 */
  2012.  -32491, /* A2 = -0.991577 */
  2013.  16374, /* B2 = 0.499695 */
  2014.  -15781, /* B1 = -0.963196 */
  2015.  16374, /* B0 = 0.499695 */
  2016.  7, /* Internal filter scaling */
  2017.  159, /* Minimum in-band energy threshold */
  2018.  21, /* 21/32 in-band to broad-band ratio */
  2019.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2020. },
  2021. { /* f392 */
  2022. 31152, /* A1 = -1.901428 */
  2023.  -32613, /* A2 = 0.995300 */
  2024.  -314, /* B2 = -0.009605 */
  2025.  0, /* B1 = 0.000000 */
  2026.  314, /* B0 = 0.009605 */
  2027.  31156, /* A1 = -1.901672 */
  2028.  -32694, /* A2 = 0.997742 */
  2029.  28847, /* B2 = 0.880371 */
  2030.  -2734, /* B1 = -0.166901 */
  2031.  28847, /* B0 = 0.880371 */
  2032.  31225, /* A1 = -1.905823 */
  2033.  -32696, /* A2 = 0.997803 */
  2034.  462, /* B2 = 0.014108 */
  2035.  -442, /* B1 = -0.027019 */
  2036.  462, /* B0 = 0.014108 */
  2037.  5, /* Internal filter scaling */
  2038.  159, /* Minimum in-band energy threshold */
  2039.  21, /* 21/32 in-band to broad-band ratio */
  2040.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2041. },
  2042. { /* f400_425[] */
  2043. 30836, /* A1 = 1.882141 */
  2044.  -32296, /* A2 = -0.985596 */
  2045.  -324, /* B2 = -0.009903 */
  2046.  0, /* B1 = 0 */
  2047.  324, /* B0 = 0.009903 */
  2048.  30825, /* A1 = 1.881409 */
  2049.  -32570, /* A2 = -0.993958 */
  2050.  16847, /* B2 = 0.51416 */
  2051.  -15792, /* B1 = -0.963898 */
  2052.  16847, /* B0 = 0.51416 */
  2053.  31106, /* A1 = 1.89856 */
  2054.  -32584, /* A2 = -0.994415 */
  2055.  9579, /* B2 = 0.292328 */
  2056.  -9164, /* B1 = -0.559357 */
  2057.  9579, /* B0 = 0.292328 */
  2058.  7, /* Internal filter scaling */
  2059.  159, /* Minimum in-band energy threshold */
  2060.  21, /* 21/32 in-band to broad-band ratio */
  2061.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2062. },
  2063. { /* f400_440[] */
  2064. 30702, /* A1 = 1.873962 */
  2065.  -32134, /* A2 = -0.980682 */
  2066.  -517, /* B2 = -0.015793 */
  2067.  0, /* B1 = 0 */
  2068.  517, /* B0 = 0.015793 */
  2069.  30676, /* A1 = 1.872375 */
  2070.  -32520, /* A2 = -0.992462 */
  2071.  8144, /* B2 = 0.24855 */
  2072.  -7596, /* B1 = -0.463684 */
  2073.  8144, /* B0 = 0.24855 */
  2074.  31084, /* A1 = 1.897217 */
  2075.  -32547, /* A2 = -0.993256 */
  2076.  22713, /* B2 = 0.693176 */
  2077.  -21734, /* B1 = -1.326599 */
  2078.  22713, /* B0 = 0.693176 */
  2079.  7, /* Internal filter scaling */
  2080.  159, /* Minimum in-band energy threshold */
  2081.  21, /* 21/32 in-band to broad-band ratio */
  2082.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2083. },
  2084. { /* f400_450[] */
  2085. 30613, /* A1 = 1.86853 */
  2086.  -32031, /* A2 = -0.977509 */
  2087.  -618, /* B2 = -0.018866 */
  2088.  0, /* B1 = 0 */
  2089.  618, /* B0 = 0.018866 */
  2090.  30577, /* A1 = 1.866272 */
  2091.  -32491, /* A2 = -0.991577 */
  2092.  9612, /* B2 = 0.293335 */
  2093.  -8935, /* B1 = -0.54541 */
  2094.  9612, /* B0 = 0.293335 */
  2095.  31071, /* A1 = 1.896484 */
  2096.  -32524, /* A2 = -0.992584 */
  2097.  21596, /* B2 = 0.659058 */
  2098.  -20667, /* B1 = -1.261414 */
  2099.  21596, /* B0 = 0.659058 */
  2100.  7, /* Internal filter scaling */
  2101.  159, /* Minimum in-band energy threshold */
  2102.  21, /* 21/32 in-band to broad-band ratio */
  2103.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2104. },
  2105. { /* f420 */
  2106. 30914, /* A1 = -1.886841 */
  2107.  -32584, /* A2 = 0.994385 */
  2108.  -426, /* B2 = -0.013020 */
  2109.  0, /* B1 = 0.000000 */
  2110.  426, /* B0 = 0.013020 */
  2111.  30914, /* A1 = -1.886841 */
  2112.  -32679, /* A2 = 0.997314 */
  2113.  17520, /* B2 = 0.534668 */
  2114.  -16471, /* B1 = -1.005310 */
  2115.  17520, /* B0 = 0.534668 */
  2116.  31004, /* A1 = -1.892334 */
  2117.  -32683, /* A2 = 0.997406 */
  2118.  819, /* B2 = 0.025023 */
  2119.  -780, /* B1 = -0.047619 */
  2120.  819, /* B0 = 0.025023 */
  2121.  5, /* Internal filter scaling */
  2122.  159, /* Minimum in-band energy threshold */
  2123.  21, /* 21/32 in-band to broad-band ratio */
  2124.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2125. },
  2126. #if 0
  2127. { /* f425 */
  2128. 30881, /* A1 = -1.884827 */
  2129.  -32603, /* A2 = 0.994965 */
  2130.  -496, /* B2 = -0.015144 */
  2131.  0, /* B1 = 0.000000 */
  2132.  496, /* B0 = 0.015144 */
  2133.  30880, /* A1 = -1.884766 */
  2134.  -32692, /* A2 = 0.997711 */
  2135.  24767, /* B2 = 0.755859 */
  2136.  -23290, /* B1 = -1.421509 */
  2137.  24767, /* B0 = 0.755859 */
  2138.  30967, /* A1 = -1.890076 */
  2139.  -32694, /* A2 = 0.997772 */
  2140.  728, /* B2 = 0.022232 */
  2141.  -691, /* B1 = -0.042194 */
  2142.  728, /* B0 = 0.022232 */
  2143.  5, /* Internal filter scaling */
  2144.  159, /* Minimum in-band energy threshold */
  2145.  21, /* 21/32 in-band to broad-band ratio */
  2146.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2147. },
  2148. #else
  2149. {
  2150. 30850,
  2151. -32534,
  2152. -504,
  2153. 0,
  2154. 504,
  2155. 30831,
  2156. -32669,
  2157. 24303,
  2158. -22080,
  2159. 24303,
  2160. 30994,
  2161. -32673,
  2162. 1905,
  2163. -1811,
  2164. 1905,
  2165. 5,
  2166. 129,
  2167. 17,
  2168. 0xff5
  2169. },
  2170. #endif
  2171. { /* f425_450[] */
  2172. 30646, /* A1 = 1.870544 */
  2173.  -32327, /* A2 = -0.986572 */
  2174.  -287, /* B2 = -0.008769 */
  2175.  0, /* B1 = 0 */
  2176.  287, /* B0 = 0.008769 */
  2177.  30627, /* A1 = 1.869324 */
  2178.  -32607, /* A2 = -0.995087 */
  2179.  13269, /* B2 = 0.404968 */
  2180.  -12376, /* B1 = -0.755432 */
  2181.  13269, /* B0 = 0.404968 */
  2182.  30924, /* A1 = 1.887512 */
  2183.  -32619, /* A2 = -0.995453 */
  2184.  19950, /* B2 = 0.608826 */
  2185.  -18940, /* B1 = -1.156006 */
  2186.  19950, /* B0 = 0.608826 */
  2187.  7, /* Internal filter scaling */
  2188.  159, /* Minimum in-band energy threshold */
  2189.  21, /* 21/32 in-band to broad-band ratio */
  2190.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2191. },
  2192. { /* f425_475[] */
  2193. 30396, /* A1 = 1.855225 */
  2194.  -32014, /* A2 = -0.97699 */
  2195.  -395, /* B2 = -0.012055 */
  2196.  0, /* B1 = 0 */
  2197.  395, /* B0 = 0.012055 */
  2198.  30343, /* A1 = 1.85199 */
  2199.  -32482, /* A2 = -0.991302 */
  2200.  17823, /* B2 = 0.543945 */
  2201.  -16431, /* B1 = -1.002869 */
  2202.  17823, /* B0 = 0.543945 */
  2203.  30872, /* A1 = 1.884338 */
  2204.  -32516, /* A2 = -0.99231 */
  2205.  18124, /* B2 = 0.553101 */
  2206.  -17246, /* B1 = -1.052673 */
  2207.  18124, /* B0 = 0.553101 */
  2208.  7, /* Internal filter scaling */
  2209.  159, /* Minimum in-band energy threshold */
  2210.  21, /* 21/32 in-band to broad-band ratio */
  2211.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2212. },
  2213. { /* f435 */
  2214. 30796, /* A1 = -1.879639 */
  2215.  -32603, /* A2 = 0.994965 */
  2216.  -254, /* B2 = -0.007762 */
  2217.  0, /* B1 = 0.000000 */
  2218.  254, /* B0 = 0.007762 */
  2219.  30793, /* A1 = -1.879456 */
  2220.  -32692, /* A2 = 0.997711 */
  2221.  18934, /* B2 = 0.577820 */
  2222.  -17751, /* B1 = -1.083496 */
  2223.  18934, /* B0 = 0.577820 */
  2224.  30882, /* A1 = -1.884888 */
  2225.  -32694, /* A2 = 0.997772 */
  2226.  1858, /* B2 = 0.056713 */
  2227.  -1758, /* B1 = -0.107357 */
  2228.  1858, /* B0 = 0.056713 */
  2229.  5, /* Internal filter scaling */
  2230.  159, /* Minimum in-band energy threshold */
  2231.  21, /* 21/32 in-band to broad-band ratio */
  2232.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2233. },
  2234. { /* f440_450[] */
  2235. 30641, /* A1 = 1.870239 */
  2236.  -32458, /* A2 = -0.99057 */
  2237.  -155, /* B2 = -0.004735 */
  2238.  0, /* B1 = 0 */
  2239.  155, /* B0 = 0.004735 */
  2240.  30631, /* A1 = 1.869568 */
  2241.  -32630, /* A2 = -0.995789 */
  2242.  11453, /* B2 = 0.349548 */
  2243.  -10666, /* B1 = -0.651001 */
  2244.  11453, /* B0 = 0.349548 */
  2245.  30810, /* A1 = 1.880554 */
  2246.  -32634, /* A2 = -0.995941 */
  2247.  12237, /* B2 = 0.373474 */
  2248.  -11588, /* B1 = -0.707336 */
  2249.  12237, /* B0 = 0.373474 */
  2250.  7, /* Internal filter scaling */
  2251.  159, /* Minimum in-band energy threshold */
  2252.  21, /* 21/32 in-band to broad-band ratio */
  2253.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2254. },
  2255. { /* f440_480[] */
  2256. 30367, /* A1 = 1.853455 */
  2257.  -32147, /* A2 = -0.981079 */
  2258.  -495, /* B2 = -0.015113 */
  2259.  0, /* B1 = 0 */
  2260.  495, /* B0 = 0.015113 */
  2261.  30322, /* A1 = 1.850769 */
  2262.  -32543, /* A2 = -0.993134 */
  2263.  10031, /* B2 = 0.306152 */
  2264.  -9252, /* B1 = -0.564728 */
  2265.  10031, /* B0 = 0.306152 */
  2266.  30770, /* A1 = 1.878052 */
  2267.  -32563, /* A2 = -0.993774 */
  2268.  22674, /* B2 = 0.691956 */
  2269.  -21465, /* B1 = -1.31012 */
  2270.  22674, /* B0 = 0.691956 */
  2271.  7, /* Internal filter scaling */
  2272.  159, /* Minimum in-band energy threshold */
  2273.  21, /* 21/32 in-band to broad-band ratio */
  2274.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2275. },
  2276. { /* f445 */
  2277. 30709, /* A1 = -1.874329 */
  2278.  -32603, /* A2 = 0.994965 */
  2279.  -83, /* B2 = -0.002545 */
  2280.  0, /* B1 = 0.000000 */
  2281.  83, /* B0 = 0.002545 */
  2282.  30704, /* A1 = -1.874084 */
  2283.  -32692, /* A2 = 0.997711 */
  2284.  10641, /* B2 = 0.324738 */
  2285.  -9947, /* B1 = -0.607147 */
  2286.  10641, /* B0 = 0.324738 */
  2287.  30796, /* A1 = -1.879639 */
  2288.  -32694, /* A2 = 0.997772 */
  2289.  10079, /* B2 = 0.307587 */
  2290.  9513, /* B1 = 0.580688 */
  2291.  10079, /* B0 = 0.307587 */
  2292.  5, /* Internal filter scaling */
  2293.  159, /* Minimum in-band energy threshold */
  2294.  21, /* 21/32 in-band to broad-band ratio */
  2295.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2296. },
  2297. { /* f450 */
  2298. 30664, /* A1 = -1.871643 */
  2299.  -32603, /* A2 = 0.994965 */
  2300.  -164, /* B2 = -0.005029 */
  2301.  0, /* B1 = 0.000000 */
  2302.  164, /* B0 = 0.005029 */
  2303.  30661, /* A1 = -1.871399 */
  2304.  -32692, /* A2 = 0.997711 */
  2305.  15294, /* B2 = 0.466736 */
  2306.  -14275, /* B1 = -0.871307 */
  2307.  15294, /* B0 = 0.466736 */
  2308.  30751, /* A1 = -1.876953 */
  2309.  -32694, /* A2 = 0.997772 */
  2310.  3548, /* B2 = 0.108284 */
  2311.  -3344, /* B1 = -0.204155 */
  2312.  3548, /* B0 = 0.108284 */
  2313.  5, /* Internal filter scaling */
  2314.  159, /* Minimum in-band energy threshold */
  2315.  21, /* 21/32 in-band to broad-band ratio */
  2316.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2317. },
  2318. { /* f452 */
  2319. 30653, /* A1 = -1.870911 */
  2320.  -32615, /* A2 = 0.995361 */
  2321.  -209, /* B2 = -0.006382 */
  2322.  0, /* B1 = 0.000000 */
  2323.  209, /* B0 = 0.006382 */
  2324.  30647, /* A1 = -1.870605 */
  2325.  -32702, /* A2 = 0.997986 */
  2326.  18971, /* B2 = 0.578979 */
  2327.  -17716, /* B1 = -1.081299 */
  2328.  18971, /* B0 = 0.578979 */
  2329.  30738, /* A1 = -1.876099 */
  2330.  -32702, /* A2 = 0.998016 */
  2331.  2967, /* B2 = 0.090561 */
  2332.  -2793, /* B1 = -0.170502 */
  2333.  2967, /* B0 = 0.090561 */
  2334.  5, /* Internal filter scaling */
  2335.  159, /* Minimum in-band energy threshold */
  2336.  21, /* 21/32 in-band to broad-band ratio */
  2337.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2338. },
  2339. { /* f475 */
  2340. 30437, /* A1 = -1.857727 */
  2341.  -32603, /* A2 = 0.994965 */
  2342.  -264, /* B2 = -0.008062 */
  2343.  0, /* B1 = 0.000000 */
  2344.  264, /* B0 = 0.008062 */
  2345.  30430, /* A1 = -1.857300 */
  2346.  -32692, /* A2 = 0.997711 */
  2347.  21681, /* B2 = 0.661682 */
  2348.  -20082, /* B1 = -1.225708 */
  2349.  21681, /* B0 = 0.661682 */
  2350.  30526, /* A1 = -1.863220 */
  2351.  -32694, /* A2 = 0.997742 */
  2352.  1559, /* B2 = 0.047600 */
  2353.  -1459, /* B1 = -0.089096 */
  2354.  1559, /* B0 = 0.047600 */
  2355.  5, /* Internal filter scaling */
  2356.  159, /* Minimum in-band energy threshold */
  2357.  21, /* 21/32 in-band to broad-band ratio */
  2358.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2359. },
  2360. { /* f480_620[] */
  2361. 28975, /* A1 = 1.768494 */
  2362.  -30955, /* A2 = -0.944672 */
  2363.  -1026, /* B2 = -0.03133 */
  2364.  0, /* B1 = 0 */
  2365.  1026, /* B0 = 0.03133 */
  2366.  28613, /* A1 = 1.746399 */
  2367.  -32089, /* A2 = -0.979309 */
  2368.  14214, /* B2 = 0.433807 */
  2369.  -12202, /* B1 = -0.744812 */
  2370.  14214, /* B0 = 0.433807 */
  2371.  30243, /* A1 = 1.845947 */
  2372.  -32238, /* A2 = -0.983856 */
  2373.  24825, /* B2 = 0.757629 */
  2374.  -23402, /* B1 = -1.428345 */
  2375.  24825, /* B0 = 0.757629 */
  2376.  7, /* Internal filter scaling */
  2377.  159, /* Minimum in-band energy threshold */
  2378.  21, /* 21/32 in-band to broad-band ratio */
  2379.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2380. },
  2381. { /* f494 */
  2382. 30257, /* A1 = -1.846741 */
  2383.  -32605, /* A2 = 0.995056 */
  2384.  -249, /* B2 = -0.007625 */
  2385.  0, /* B1 = 0.000000 */
  2386.  249, /* B0 = 0.007625 */
  2387.  30247, /* A1 = -1.846191 */
  2388.  -32694, /* A2 = 0.997772 */
  2389.  18088, /* B2 = 0.552002 */
  2390.  -16652, /* B1 = -1.016418 */
  2391.  18088, /* B0 = 0.552002 */
  2392.  30348, /* A1 = -1.852295 */
  2393.  -32696, /* A2 = 0.997803 */
  2394.  2099, /* B2 = 0.064064 */
  2395.  -1953, /* B1 = -0.119202 */
  2396.  2099, /* B0 = 0.064064 */
  2397.  5, /* Internal filter scaling */
  2398.  159, /* Minimum in-band energy threshold */
  2399.  21, /* 21/32 in-band to broad-band ratio */
  2400.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2401. },
  2402. { /* f500 */
  2403. 30202, /* A1 = -1.843431 */
  2404.  -32624, /* A2 = 0.995622 */
  2405.  -413, /* B2 = -0.012622 */
  2406.  0, /* B1 = 0.000000 */
  2407.  413, /* B0 = 0.012622 */
  2408.  30191, /* A1 = -1.842721 */
  2409.  -32714, /* A2 = 0.998364 */
  2410.  25954, /* B2 = 0.792057 */
  2411.  -23890, /* B1 = -1.458131 */
  2412.  25954, /* B0 = 0.792057 */
  2413.  30296, /* A1 = -1.849172 */
  2414.  -32715, /* A2 = 0.998397 */
  2415.  2007, /* B2 = 0.061264 */
  2416.  -1860, /* B1 = -0.113568 */
  2417.  2007, /* B0 = 0.061264 */
  2418.  5, /* Internal filter scaling */
  2419.  159, /* Minimum in-band energy threshold */
  2420.  21, /* 21/32 in-band to broad-band ratio */
  2421.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2422. },
  2423. { /* f520 */
  2424. 30001, /* A1 = -1.831116 */
  2425.  -32613, /* A2 = 0.995270 */
  2426.  -155, /* B2 = -0.004750 */
  2427.  0, /* B1 = 0.000000 */
  2428.  155, /* B0 = 0.004750 */
  2429.  29985, /* A1 = -1.830200 */
  2430.  -32710, /* A2 = 0.998260 */
  2431.  6584, /* B2 = 0.200928 */
  2432.  -6018, /* B1 = -0.367355 */
  2433.  6584, /* B0 = 0.200928 */
  2434.  30105, /* A1 = -1.837524 */
  2435.  -32712, /* A2 = 0.998291 */
  2436.  23812, /* B2 = 0.726685 */
  2437.  -21936, /* B1 = -1.338928 */
  2438.  23812, /* B0 = 0.726685 */
  2439.  5, /* Internal filter scaling */
  2440.  159, /* Minimum in-band energy threshold */
  2441.  21, /* 21/32 in-band to broad-band ratio */
  2442.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2443. },
  2444. { /* f523 */
  2445. 29964, /* A1 = -1.828918 */
  2446.  -32601, /* A2 = 0.994904 */
  2447.  -101, /* B2 = -0.003110 */
  2448.  0, /* B1 = 0.000000 */
  2449.  101, /* B0 = 0.003110 */
  2450.  29949, /* A1 = -1.827942 */
  2451.  -32700, /* A2 = 0.997925 */
  2452.  11041, /* B2 = 0.336975 */
  2453.  -10075, /* B1 = -0.614960 */
  2454.  11041, /* B0 = 0.336975 */
  2455.  30070, /* A1 = -1.835388 */
  2456.  -32702, /* A2 = 0.997986 */
  2457.  16762, /* B2 = 0.511536 */
  2458.  -15437, /* B1 = -0.942230 */
  2459.  16762, /* B0 = 0.511536 */
  2460.  5, /* Internal filter scaling */
  2461.  159, /* Minimum in-band energy threshold */
  2462.  21, /* 21/32 in-band to broad-band ratio */
  2463.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2464. },
  2465. { /* f525 */
  2466. 29936, /* A1 = -1.827209 */
  2467.  -32584, /* A2 = 0.994415 */
  2468.  -91, /* B2 = -0.002806 */
  2469.  0, /* B1 = 0.000000 */
  2470.  91, /* B0 = 0.002806 */
  2471.  29921, /* A1 = -1.826233 */
  2472.  -32688, /* A2 = 0.997559 */
  2473.  11449, /* B2 = 0.349396 */
  2474.  -10426, /* B1 = -0.636383 */
  2475.  11449, /* B0 = 0.349396 */
  2476.  30045, /* A1 = -1.833862 */
  2477.  -32688, /* A2 = 0.997589 */
  2478.  13055, /* B2 = 0.398407 */
  2479.  -12028, /* B1 = -0.734161 */
  2480.  13055, /* B0 = 0.398407 */
  2481.  5, /* Internal filter scaling */
  2482.  159, /* Minimum in-band energy threshold */
  2483.  21, /* 21/32 in-band to broad-band ratio */
  2484.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2485. },
  2486. { /* f540_660[] */
  2487. 28499, /* A1 = 1.739441 */
  2488.  -31129, /* A2 = -0.949982 */
  2489.  -849, /* B2 = -0.025922 */
  2490.  0, /* B1 = 0 */
  2491.  849, /* B0 = 0.025922 */
  2492.  28128, /* A1 = 1.716797 */
  2493.  -32130, /* A2 = -0.98056 */
  2494.  14556, /* B2 = 0.444214 */
  2495.  -12251, /* B1 = -0.747772 */
  2496.  14556, /* B0 = 0.444244 */
  2497.  29667, /* A1 = 1.81073 */
  2498.  -32244, /* A2 = -0.984039 */
  2499.  23038, /* B2 = 0.703064 */
  2500.  -21358, /* B1 = -1.303589 */
  2501.  23040, /* B0 = 0.703125 */
  2502.  7, /* Internal filter scaling */
  2503.  159, /* Minimum in-band energy threshold */
  2504.  21, /* 21/32 in-band to broad-band ratio */
  2505.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2506. },
  2507. { /* f587 */
  2508. 29271, /* A1 = -1.786560 */
  2509.  -32599, /* A2 = 0.994873 */
  2510.  -490, /* B2 = -0.014957 */
  2511.  0, /* B1 = 0.000000 */
  2512.  490, /* B0 = 0.014957 */
  2513.  29246, /* A1 = -1.785095 */
  2514.  -32700, /* A2 = 0.997925 */
  2515.  28961, /* B2 = 0.883850 */
  2516.  -25796, /* B1 = -1.574463 */
  2517.  28961, /* B0 = 0.883850 */
  2518.  29383, /* A1 = -1.793396 */
  2519.  -32700, /* A2 = 0.997955 */
  2520.  1299, /* B2 = 0.039650 */
  2521.  -1169, /* B1 = -0.071396 */
  2522.  1299, /* B0 = 0.039650 */
  2523.  5, /* Internal filter scaling */
  2524.  159, /* Minimum in-band energy threshold */
  2525.  21, /* 21/32 in-band to broad-band ratio */
  2526.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2527. },
  2528. { /* f590 */
  2529. 29230, /* A1 = -1.784058 */
  2530.  -32584, /* A2 = 0.994415 */
  2531.  -418, /* B2 = -0.012757 */
  2532.  0, /* B1 = 0.000000 */
  2533.  418, /* B0 = 0.012757 */
  2534.  29206, /* A1 = -1.782593 */
  2535.  -32688, /* A2 = 0.997559 */
  2536.  36556, /* B2 = 1.115601 */
  2537.  -32478, /* B1 = -1.982300 */
  2538.  36556, /* B0 = 1.115601 */
  2539.  29345, /* A1 = -1.791077 */
  2540.  -32688, /* A2 = 0.997589 */
  2541.  897, /* B2 = 0.027397 */
  2542.  -808, /* B1 = -0.049334 */
  2543.  897, /* B0 = 0.027397 */
  2544.  5, /* Internal filter scaling */
  2545.  159, /* Minimum in-band energy threshold */
  2546.  21, /* 21/32 in-band to broad-band ratio */
  2547.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2548. },
  2549. { /* f600 */
  2550. 29116, /* A1 = -1.777100 */
  2551.  -32603, /* A2 = 0.994965 */
  2552.  -165, /* B2 = -0.005039 */
  2553.  0, /* B1 = 0.000000 */
  2554.  165, /* B0 = 0.005039 */
  2555.  29089, /* A1 = -1.775452 */
  2556.  -32708, /* A2 = 0.998199 */
  2557.  6963, /* B2 = 0.212494 */
  2558.  -6172, /* B1 = -0.376770 */
  2559.  6963, /* B0 = 0.212494 */
  2560.  29237, /* A1 = -1.784485 */
  2561.  -32710, /* A2 = 0.998230 */
  2562.  24197, /* B2 = 0.738464 */
  2563.  -21657, /* B1 = -1.321899 */
  2564.  24197, /* B0 = 0.738464 */
  2565.  5, /* Internal filter scaling */
  2566.  159, /* Minimum in-band energy threshold */
  2567.  21, /* 21/32 in-band to broad-band ratio */
  2568.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2569. },
  2570. { /* f660 */
  2571. 28376, /* A1 = -1.731934 */
  2572.  -32567, /* A2 = 0.993896 */
  2573.  -363, /* B2 = -0.011102 */
  2574.  0, /* B1 = 0.000000 */
  2575.  363, /* B0 = 0.011102 */
  2576.  28337, /* A1 = -1.729614 */
  2577.  -32683, /* A2 = 0.997434 */
  2578.  21766, /* B2 = 0.664246 */
  2579.  -18761, /* B1 = -1.145081 */
  2580.  21766, /* B0 = 0.664246 */
  2581.  28513, /* A1 = -1.740356 */
  2582.  -32686, /* A2 = 0.997498 */
  2583.  2509, /* B2 = 0.076584 */
  2584.  -2196, /* B1 = -0.134041 */
  2585.  2509, /* B0 = 0.076584 */
  2586.  5, /* Internal filter scaling */
  2587.  159, /* Minimum in-band energy threshold */
  2588.  21, /* 21/32 in-band to broad-band ratio */
  2589.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2590. },
  2591. { /* f700 */
  2592. 27844, /* A1 = -1.699463 */
  2593.  -32563, /* A2 = 0.993744 */
  2594.  -366, /* B2 = -0.011187 */
  2595.  0, /* B1 = 0.000000 */
  2596.  366, /* B0 = 0.011187 */
  2597.  27797, /* A1 = -1.696655 */
  2598.  -32686, /* A2 = 0.997498 */
  2599.  22748, /* B2 = 0.694214 */
  2600.  -19235, /* B1 = -1.174072 */
  2601.  22748, /* B0 = 0.694214 */
  2602.  27995, /* A1 = -1.708740 */
  2603.  -32688, /* A2 = 0.997559 */
  2604.  2964, /* B2 = 0.090477 */
  2605.  -2546, /* B1 = -0.155449 */
  2606.  2964, /* B0 = 0.090477 */
  2607.  5, /* Internal filter scaling */
  2608.  159, /* Minimum in-band energy threshold */
  2609.  21, /* 21/32 in-band to broad-band ratio */
  2610.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2611. },
  2612. { /* f740 */
  2613. 27297, /* A1 = -1.666077 */
  2614.  -32551, /* A2 = 0.993408 */
  2615.  -345, /* B2 = -0.010540 */
  2616.  0, /* B1 = 0.000000 */
  2617.  345, /* B0 = 0.010540 */
  2618.  27240, /* A1 = -1.662598 */
  2619.  -32683, /* A2 = 0.997406 */
  2620.  22560, /* B2 = 0.688477 */
  2621.  -18688, /* B1 = -1.140625 */
  2622.  22560, /* B0 = 0.688477 */
  2623.  27461, /* A1 = -1.676147 */
  2624.  -32684, /* A2 = 0.997467 */
  2625.  3541, /* B2 = 0.108086 */
  2626.  -2985, /* B1 = -0.182220 */
  2627.  3541, /* B0 = 0.108086 */
  2628.  5, /* Internal filter scaling */
  2629.  159, /* Minimum in-band energy threshold */
  2630.  21, /* 21/32 in-band to broad-band ratio */
  2631.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2632. },
  2633. { /* f750 */
  2634. 27155, /* A1 = -1.657410 */
  2635.  -32551, /* A2 = 0.993408 */
  2636.  -462, /* B2 = -0.014117 */
  2637.  0, /* B1 = 0.000000 */
  2638.  462, /* B0 = 0.014117 */
  2639.  27097, /* A1 = -1.653870 */
  2640.  -32683, /* A2 = 0.997406 */
  2641.  32495, /* B2 = 0.991699 */
  2642.  -26776, /* B1 = -1.634338 */
  2643.  32495, /* B0 = 0.991699 */
  2644.  27321, /* A1 = -1.667542 */
  2645.  -32684, /* A2 = 0.997467 */
  2646.  1835, /* B2 = 0.056007 */
  2647.  -1539, /* B1 = -0.093948 */
  2648.  1835, /* B0 = 0.056007 */
  2649.  5, /* Internal filter scaling */
  2650.  159, /* Minimum in-band energy threshold */
  2651.  21, /* 21/32 in-band to broad-band ratio */
  2652.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2653. },
  2654. { /* f750_1450[] */
  2655. 19298, /* A1 = 1.177917 */
  2656.  -24471, /* A2 = -0.746796 */
  2657.  -4152, /* B2 = -0.126709 */
  2658.  0, /* B1 = 0 */
  2659.  4152, /* B0 = 0.126709 */
  2660.  12902, /* A1 = 0.787476 */
  2661.  -29091, /* A2 = -0.887817 */
  2662.  12491, /* B2 = 0.38121 */
  2663.  -1794, /* B1 = -0.109528 */
  2664.  12494, /* B0 = 0.381317 */
  2665.  26291, /* A1 = 1.604736 */
  2666.  -30470, /* A2 = -0.929901 */
  2667.  28859, /* B2 = 0.880737 */
  2668.  -26084, /* B1 = -1.592102 */
  2669.  28861, /* B0 = 0.880798 */
  2670.  7, /* Internal filter scaling */
  2671.  159, /* Minimum in-band energy threshold */
  2672.  21, /* 21/32 in-band to broad-band ratio */
  2673.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2674. },
  2675. { /* f770 */
  2676. 26867, /* A1 = -1.639832 */
  2677.  -32551, /* A2 = 0.993408 */
  2678.  -123, /* B2 = -0.003755 */
  2679.  0, /* B1 = 0.000000 */
  2680.  123, /* B0 = 0.003755 */
  2681.  26805, /* A1 = -1.636108 */
  2682.  -32683, /* A2 = 0.997406 */
  2683.  17297, /* B2 = 0.527863 */
  2684.  -14096, /* B1 = -0.860382 */
  2685.  17297, /* B0 = 0.527863 */
  2686.  27034, /* A1 = -1.650085 */
  2687.  -32684, /* A2 = 0.997467 */
  2688.  12958, /* B2 = 0.395477 */
  2689.  -10756, /* B1 = -0.656525 */
  2690.  12958, /* B0 = 0.395477 */
  2691.  5, /* Internal filter scaling */
  2692.  159, /* Minimum in-band energy threshold */
  2693.  21, /* 21/32 in-band to broad-band ratio */
  2694.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2695. },
  2696. { /* f800 */
  2697. 26413, /* A1 = -1.612122 */
  2698.  -32547, /* A2 = 0.993286 */
  2699.  -223, /* B2 = -0.006825 */
  2700.  0, /* B1 = 0.000000 */
  2701.  223, /* B0 = 0.006825 */
  2702.  26342, /* A1 = -1.607849 */
  2703.  -32686, /* A2 = 0.997498 */
  2704.  6391, /* B2 = 0.195053 */
  2705.  -5120, /* B1 = -0.312531 */
  2706.  6391, /* B0 = 0.195053 */
  2707.  26593, /* A1 = -1.623108 */
  2708.  -32688, /* A2 = 0.997559 */
  2709.  23681, /* B2 = 0.722717 */
  2710.  -19328, /* B1 = -1.179688 */
  2711.  23681, /* B0 = 0.722717 */
  2712.  5, /* Internal filter scaling */
  2713.  159, /* Minimum in-band energy threshold */
  2714.  21, /* 21/32 in-band to broad-band ratio */
  2715.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2716. },
  2717. { /* f816 */
  2718. 26168, /* A1 = -1.597209 */
  2719.  -32528, /* A2 = 0.992706 */
  2720.  -235, /* B2 = -0.007182 */
  2721.  0, /* B1 = 0.000000 */
  2722.  235, /* B0 = 0.007182 */
  2723.  26092, /* A1 = -1.592590 */
  2724.  -32675, /* A2 = 0.997192 */
  2725.  20823, /* B2 = 0.635498 */
  2726.  -16510, /* B1 = -1.007751 */
  2727.  20823, /* B0 = 0.635498 */
  2728.  26363, /* A1 = -1.609070 */
  2729.  -32677, /* A2 = 0.997253 */
  2730.  6739, /* B2 = 0.205688 */
  2731.  -5459, /* B1 = -0.333206 */
  2732.  6739, /* B0 = 0.205688 */
  2733.  5, /* Internal filter scaling */
  2734.  159, /* Minimum in-band energy threshold */
  2735.  21, /* 21/32 in-band to broad-band ratio */
  2736.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2737. },
  2738. { /* f850 */
  2739. 25641, /* A1 = -1.565063 */
  2740.  -32536, /* A2 = 0.992950 */
  2741.  -121, /* B2 = -0.003707 */
  2742.  0, /* B1 = 0.000000 */
  2743.  121, /* B0 = 0.003707 */
  2744.  25560, /* A1 = -1.560059 */
  2745.  -32684, /* A2 = 0.997437 */
  2746.  18341, /* B2 = 0.559753 */
  2747.  -14252, /* B1 = -0.869904 */
  2748.  18341, /* B0 = 0.559753 */
  2749.  25837, /* A1 = -1.577026 */
  2750.  -32684, /* A2 = 0.997467 */
  2751.  16679, /* B2 = 0.509003 */
  2752.  -13232, /* B1 = -0.807648 */
  2753.  16679, /* B0 = 0.509003 */
  2754.  5, /* Internal filter scaling */
  2755.  159, /* Minimum in-band energy threshold */
  2756.  21, /* 21/32 in-band to broad-band ratio */
  2757.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2758. },
  2759. { /* f857_1645[] */
  2760. 16415, /* A1 = 1.001953 */
  2761.  -23669, /* A2 = -0.722321 */
  2762.  -4549, /* B2 = -0.138847 */
  2763.  0, /* B1 = 0 */
  2764.  4549, /* B0 = 0.138847 */
  2765.  8456, /* A1 = 0.516174 */
  2766.  -28996, /* A2 = -0.884918 */
  2767.  13753, /* B2 = 0.419724 */
  2768.  -12, /* B1 = -0.000763 */
  2769.  13757, /* B0 = 0.419846 */
  2770.  24632, /* A1 = 1.503418 */
  2771.  -30271, /* A2 = -0.923828 */
  2772.  29070, /* B2 = 0.887146 */
  2773.  -25265, /* B1 = -1.542114 */
  2774.  29073, /* B0 = 0.887268 */
  2775.  7, /* Internal filter scaling */
  2776.  159, /* Minimum in-band energy threshold */
  2777.  21, /* 21/32 in-band to broad-band ratio */
  2778.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2779. },
  2780. { /* f900 */
  2781. 24806, /* A1 = -1.514099 */
  2782.  -32501, /* A2 = 0.991852 */
  2783.  -326, /* B2 = -0.009969 */
  2784.  0, /* B1 = 0.000000 */
  2785.  326, /* B0 = 0.009969 */
  2786.  24709, /* A1 = -1.508118 */
  2787.  -32659, /* A2 = 0.996674 */
  2788.  20277, /* B2 = 0.618835 */
  2789.  -15182, /* B1 = -0.926636 */
  2790.  20277, /* B0 = 0.618835 */
  2791.  25022, /* A1 = -1.527222 */
  2792.  -32661, /* A2 = 0.996735 */
  2793.  4320, /* B2 = 0.131836 */
  2794.  -3331, /* B1 = -0.203339 */
  2795.  4320, /* B0 = 0.131836 */
  2796.  5, /* Internal filter scaling */
  2797.  159, /* Minimum in-band energy threshold */
  2798.  21, /* 21/32 in-band to broad-band ratio */
  2799.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2800. },
  2801. { /* f900_1300[] */
  2802. 19776, /* A1 = 1.207092 */
  2803.  -27437, /* A2 = -0.837341 */
  2804.  -2666, /* B2 = -0.081371 */
  2805.  0, /* B1 = 0 */
  2806.  2666, /* B0 = 0.081371 */
  2807.  16302, /* A1 = 0.995026 */
  2808.  -30354, /* A2 = -0.926361 */
  2809.  10389, /* B2 = 0.317062 */
  2810.  -3327, /* B1 = -0.203064 */
  2811.  10389, /* B0 = 0.317062 */
  2812.  24299, /* A1 = 1.483154 */
  2813.  -30930, /* A2 = -0.943909 */
  2814.  25016, /* B2 = 0.763428 */
  2815.  -21171, /* B1 = -1.292236 */
  2816.  25016, /* B0 = 0.763428 */
  2817.  7, /* Internal filter scaling */
  2818.  159, /* Minimum in-band energy threshold */
  2819.  21, /* 21/32 in-band to broad-band ratio */
  2820.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2821. },
  2822. { /* f935_1215[] */
  2823. 20554, /* A1 = 1.254517 */
  2824.  -28764, /* A2 = -0.877838 */
  2825.  -2048, /* B2 = -0.062515 */
  2826.  0, /* B1 = 0 */
  2827.  2048, /* B0 = 0.062515 */
  2828.  18209, /* A1 = 1.11145 */
  2829.  -30951, /* A2 = -0.94458 */
  2830.  9390, /* B2 = 0.286575 */
  2831.  -3955, /* B1 = -0.241455 */
  2832.  9390, /* B0 = 0.286575 */
  2833.  23902, /* A1 = 1.458923 */
  2834.  -31286, /* A2 = -0.954803 */
  2835.  23252, /* B2 = 0.709595 */
  2836.  -19132, /* B1 = -1.167725 */
  2837.  23252, /* B0 = 0.709595 */
  2838.  7, /* Internal filter scaling */
  2839.  159, /* Minimum in-band energy threshold */
  2840.  21, /* 21/32 in-band to broad-band ratio */
  2841.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2842. },
  2843. { /* f941_1477[] */
  2844. 17543, /* A1 = 1.07074 */
  2845.  -26220, /* A2 = -0.800201 */
  2846.  -3298, /* B2 = -0.100647 */
  2847.  0, /* B1 = 0 */
  2848.  3298, /* B0 = 0.100647 */
  2849.  12423, /* A1 = 0.75827 */
  2850.  -30036, /* A2 = -0.916626 */
  2851.  12651, /* B2 = 0.386078 */
  2852.  -2444, /* B1 = -0.14917 */
  2853.  12653, /* B0 = 0.386154 */
  2854.  23518, /* A1 = 1.435425 */
  2855.  -30745, /* A2 = -0.938293 */
  2856.  27282, /* B2 = 0.832581 */
  2857.  -22529, /* B1 = -1.375122 */
  2858.  27286, /* B0 = 0.832703 */
  2859.  7, /* Internal filter scaling */
  2860.  159, /* Minimum in-band energy threshold */
  2861.  21, /* 21/32 in-band to broad-band ratio */
  2862.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2863. },
  2864. { /* f942 */
  2865. 24104, /* A1 = -1.471252 */
  2866.  -32507, /* A2 = 0.992065 */
  2867.  -351, /* B2 = -0.010722 */
  2868.  0, /* B1 = 0.000000 */
  2869.  351, /* B0 = 0.010722 */
  2870.  23996, /* A1 = -1.464600 */
  2871.  -32671, /* A2 = 0.997040 */
  2872.  22848, /* B2 = 0.697266 */
  2873.  -16639, /* B1 = -1.015564 */
  2874.  22848, /* B0 = 0.697266 */
  2875.  24332, /* A1 = -1.485168 */
  2876.  -32673, /* A2 = 0.997101 */
  2877.  4906, /* B2 = 0.149727 */
  2878.  -3672, /* B1 = -0.224174 */
  2879.  4906, /* B0 = 0.149727 */
  2880.  5, /* Internal filter scaling */
  2881.  159, /* Minimum in-band energy threshold */
  2882.  21, /* 21/32 in-band to broad-band ratio */
  2883.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2884. },
  2885. { /* f950 */
  2886. 23967, /* A1 = -1.462830 */
  2887.  -32507, /* A2 = 0.992065 */
  2888.  -518, /* B2 = -0.015821 */
  2889.  0, /* B1 = 0.000000 */
  2890.  518, /* B0 = 0.015821 */
  2891.  23856, /* A1 = -1.456055 */
  2892.  -32671, /* A2 = 0.997040 */
  2893.  26287, /* B2 = 0.802246 */
  2894.  -19031, /* B1 = -1.161560 */
  2895.  26287, /* B0 = 0.802246 */
  2896.  24195, /* A1 = -1.476746 */
  2897.  -32673, /* A2 = 0.997101 */
  2898.  2890, /* B2 = 0.088196 */
  2899.  -2151, /* B1 = -0.131317 */
  2900.  2890, /* B0 = 0.088196 */
  2901.  5, /* Internal filter scaling */
  2902.  159, /* Minimum in-band energy threshold */
  2903.  21, /* 21/32 in-band to broad-band ratio */
  2904.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2905. },
  2906. { /* f950_1400[] */
  2907. 18294, /* A1 = 1.116638 */
  2908.  -26962, /* A2 = -0.822845 */
  2909.  -2914, /* B2 = -0.088936 */
  2910.  0, /* B1 = 0 */
  2911.  2914, /* B0 = 0.088936 */
  2912.  14119, /* A1 = 0.861786 */
  2913.  -30227, /* A2 = -0.922455 */
  2914.  11466, /* B2 = 0.349945 */
  2915.  -2833, /* B1 = -0.172943 */
  2916.  11466, /* B0 = 0.349945 */
  2917.  23431, /* A1 = 1.430115 */
  2918.  -30828, /* A2 = -0.940796 */
  2919.  25331, /* B2 = 0.773071 */
  2920.  -20911, /* B1 = -1.276367 */
  2921.  25331, /* B0 = 0.773071 */
  2922.  7, /* Internal filter scaling */
  2923.  159, /* Minimum in-band energy threshold */
  2924.  21, /* 21/32 in-band to broad-band ratio */
  2925.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2926. },
  2927. { /* f975 */
  2928. 23521, /* A1 = -1.435608 */
  2929.  -32489, /* A2 = 0.991516 */
  2930.  -193, /* B2 = -0.005915 */
  2931.  0, /* B1 = 0.000000 */
  2932.  193, /* B0 = 0.005915 */
  2933.  23404, /* A1 = -1.428467 */
  2934.  -32655, /* A2 = 0.996582 */
  2935.  17740, /* B2 = 0.541412 */
  2936.  -12567, /* B1 = -0.767029 */
  2937.  17740, /* B0 = 0.541412 */
  2938.  23753, /* A1 = -1.449829 */
  2939.  -32657, /* A2 = 0.996613 */
  2940.  9090, /* B2 = 0.277405 */
  2941.  -6662, /* B1 = -0.406647 */
  2942.  9090, /* B0 = 0.277405 */
  2943.  5, /* Internal filter scaling */
  2944.  159, /* Minimum in-band energy threshold */
  2945.  21, /* 21/32 in-band to broad-band ratio */
  2946.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2947. },
  2948. { /* f1000 */
  2949. 23071, /* A1 = -1.408203 */
  2950.  -32489, /* A2 = 0.991516 */
  2951.  -293, /* B2 = -0.008965 */
  2952.  0, /* B1 = 0.000000 */
  2953.  293, /* B0 = 0.008965 */
  2954.  22951, /* A1 = -1.400818 */
  2955.  -32655, /* A2 = 0.996582 */
  2956.  5689, /* B2 = 0.173645 */
  2957.  -3951, /* B1 = -0.241150 */
  2958.  5689, /* B0 = 0.173645 */
  2959.  23307, /* A1 = -1.422607 */
  2960.  -32657, /* A2 = 0.996613 */
  2961.  18692, /* B2 = 0.570435 */
  2962.  -13447, /* B1 = -0.820770 */
  2963.  18692, /* B0 = 0.570435 */
  2964.  5, /* Internal filter scaling */
  2965.  159, /* Minimum in-band energy threshold */
  2966.  21, /* 21/32 in-band to broad-band ratio */
  2967.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2968. },
  2969. { /* f1020 */
  2970. 22701, /* A1 = -1.385620 */
  2971.  -32474, /* A2 = 0.991058 */
  2972.  -292, /* B2 = -0.008933 */
  2973.  0, /*163840      , B1 = 10.000000 */
  2974.  292, /* B0 = 0.008933 */
  2975.  22564, /* A1 = -1.377258 */
  2976.  -32655, /* A2 = 0.996552 */
  2977.  20756, /* B2 = 0.633423 */
  2978.  -14176, /* B1 = -0.865295 */
  2979.  20756, /* B0 = 0.633423 */
  2980.  22960, /* A1 = -1.401428 */
  2981.  -32657, /* A2 = 0.996613 */
  2982.  6520, /* B2 = 0.198990 */
  2983.  -4619, /* B1 = -0.281937 */
  2984.  6520, /* B0 = 0.198990 */
  2985.  5, /* Internal filter scaling */
  2986.  159, /* Minimum in-band energy threshold */
  2987.  21, /* 21/32 in-band to broad-band ratio */
  2988.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  2989. },
  2990. { /* f1050 */
  2991. 22142, /* A1 = -1.351501 */
  2992.  -32474, /* A2 = 0.991058 */
  2993.  -147, /* B2 = -0.004493 */
  2994.  0, /* B1 = 0.000000 */
  2995.  147, /* B0 = 0.004493 */
  2996.  22000, /* A1 = -1.342834 */
  2997.  -32655, /* A2 = 0.996552 */
  2998.  15379, /* B2 = 0.469360 */
  2999.  -10237, /* B1 = -0.624847 */
  3000.  15379, /* B0 = 0.469360 */
  3001.  22406, /* A1 = -1.367554 */
  3002.  -32657, /* A2 = 0.996613 */
  3003.  17491, /* B2 = 0.533783 */
  3004.  -12096, /* B1 = -0.738312 */
  3005.  17491, /* B0 = 0.533783 */
  3006.  5, /* Internal filter scaling */
  3007.  159, /* Minimum in-band energy threshold */
  3008.  21, /* 21/32 in-band to broad-band ratio */
  3009.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  3010. },
  3011. { /* f1100_1750[] */
  3012. 12973, /* A1 = 0.79184 */
  3013.  -24916, /* A2 = -0.760376 */
  3014.  6655, /* B2 = 0.203102 */
  3015.  367, /* B1 = 0.0224 */
  3016.  6657, /* B0 = 0.203171 */
  3017.  5915, /* A1 = 0.361053 */
  3018.  -29560, /* A2 = -0.90213 */
  3019.  -7777, /* B2 = -0.23735 */
  3020.  0, /* B1 = 0 */
  3021.  7777, /* B0 = 0.23735 */
  3022.  20510, /* A1 = 1.251892 */
  3023.  -30260, /* A2 = -0.923462 */
  3024.  26662, /* B2 = 0.81366 */
  3025.  -20573, /* B1 = -1.255737 */
  3026.  26668, /* B0 = 0.813843 */
  3027.  7, /* Internal filter scaling */
  3028.  159, /* Minimum in-band energy threshold */
  3029.  21, /* 21/32 in-band to broad-band ratio */
  3030.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  3031. },
  3032. { /* f1140 */
  3033. 20392, /* A1 = -1.244629 */
  3034.  -32460, /* A2 = 0.990601 */
  3035.  -270, /* B2 = -0.008240 */
  3036.  0, /* B1 = 0.000000 */
  3037.  270, /* B0 = 0.008240 */
  3038.  20218, /* A1 = -1.234009 */
  3039.  -32655, /* A2 = 0.996582 */
  3040.  21337, /* B2 = 0.651154 */
  3041.  -13044, /* B1 = -0.796143 */
  3042.  21337, /* B0 = 0.651154 */
  3043.  20684, /* A1 = -1.262512 */
  3044.  -32657, /* A2 = 0.996643 */
  3045.  8572, /* B2 = 0.261612 */
  3046.  -5476, /* B1 = -0.334244 */
  3047.  8572, /* B0 = 0.261612 */
  3048.  5, /* Internal filter scaling */
  3049.  159, /* Minimum in-band energy threshold */
  3050.  21, /* 21/32 in-band to broad-band ratio */
  3051.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  3052. },
  3053. { /* f1200 */
  3054. 19159, /* A1 = -1.169373 */
  3055.  -32456, /* A2 = 0.990509 */
  3056.  -335, /* B2 = -0.010252 */
  3057.  0, /* B1 = 0.000000 */
  3058.  335, /* B0 = 0.010252 */
  3059.  18966, /* A1 = -1.157593 */
  3060.  -32661, /* A2 = 0.996735 */
  3061.  6802, /* B2 = 0.207588 */
  3062.  -3900, /* B1 = -0.238098 */
  3063.  6802, /* B0 = 0.207588 */
  3064.  19467, /* A1 = -1.188232 */
  3065.  -32661, /* A2 = 0.996765 */
  3066.  25035, /* B2 = 0.764008 */
  3067.  -15049, /* B1 = -0.918579 */
  3068.  25035, /* B0 = 0.764008 */
  3069.  5, /* Internal filter scaling */
  3070.  159, /* Minimum in-band energy threshold */
  3071.  21, /* 21/32 in-band to broad-band ratio */
  3072.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  3073. },
  3074. { /* f1209 */
  3075. 18976, /* A1 = -1.158264 */
  3076.  -32439, /* A2 = 0.989990 */
  3077.  -183, /* B2 = -0.005588 */
  3078.  0, /* B1 = 0.000000 */
  3079.  183, /* B0 = 0.005588 */
  3080.  18774, /* A1 = -1.145874 */
  3081.  -32650, /* A2 = 0.996429 */
  3082.  15468, /* B2 = 0.472076 */
  3083.  -8768, /* B1 = -0.535217 */
  3084.  15468, /* B0 = 0.472076 */
  3085.  19300, /* A1 = -1.177979 */
  3086.  -32652, /* A2 = 0.996490 */
  3087.  19840, /* B2 = 0.605499 */
  3088.  -11842, /* B1 = -0.722809 */
  3089.  19840, /* B0 = 0.605499 */
  3090.  5, /* Internal filter scaling */
  3091.  159, /* Minimum in-band energy threshold */
  3092.  21, /* 21/32 in-band to broad-band ratio */
  3093.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  3094. },
  3095. { /* f1330 */
  3096. 16357, /* A1 = -0.998413 */
  3097.  -32368, /* A2 = 0.987793 */
  3098.  -217, /* B2 = -0.006652 */
  3099.  0, /* B1 = 0.000000 */
  3100.  217, /* B0 = 0.006652 */
  3101.  16107, /* A1 = -0.983126 */
  3102.  -32601, /* A2 = 0.994904 */
  3103.  11602, /* B2 = 0.354065 */
  3104.  -5555, /* B1 = -0.339111 */
  3105.  11602, /* B0 = 0.354065 */
  3106.  16722, /* A1 = -1.020630 */
  3107.  -32603, /* A2 = 0.994965 */
  3108.  15574, /* B2 = 0.475311 */
  3109.  -8176, /* B1 = -0.499069 */
  3110.  15574, /* B0 = 0.475311 */
  3111.  5, /* Internal filter scaling */
  3112.  159, /* Minimum in-band energy threshold */
  3113.  21, /* 21/32 in-band to broad-band ratio */
  3114.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  3115. },
  3116. { /* f1336 */
  3117. 16234, /* A1 = -0.990875 */
  3118.  32404, /* A2 = -0.988922 */
  3119.  -193, /* B2 = -0.005908 */
  3120.  0, /* B1 = 0.000000 */
  3121.  193, /* B0 = 0.005908 */
  3122.  15986, /* A1 = -0.975769 */
  3123.  -32632, /* A2 = 0.995880 */
  3124.  18051, /* B2 = 0.550903 */
  3125.  -8658, /* B1 = -0.528473 */
  3126.  18051, /* B0 = 0.550903 */
  3127.  16591, /* A1 = -1.012695 */
  3128.  -32634, /* A2 = 0.995941 */
  3129.  15736, /* B2 = 0.480240 */
  3130.  -8125, /* B1 = -0.495926 */
  3131.  15736, /* B0 = 0.480240 */
  3132.  5, /* Internal filter scaling */
  3133.  159, /* Minimum in-band energy threshold */
  3134.  21, /* 21/32 in-band to broad-band ratio */
  3135.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  3136. },
  3137. { /* f1366 */
  3138. 15564, /* A1 = -0.949982 */
  3139.  -32404, /* A2 = 0.988922 */
  3140.  -269, /* B2 = -0.008216 */
  3141.  0, /* B1 = 0.000000 */
  3142.  269, /* B0 = 0.008216 */
  3143.  15310, /* A1 = -0.934479 */
  3144.  -32632, /* A2 = 0.995880 */
  3145.  10815, /* B2 = 0.330063 */
  3146.  -4962, /* B1 = -0.302887 */
  3147.  10815, /* B0 = 0.330063 */
  3148.  15924, /* A1 = -0.971924 */
  3149.  -32634, /* A2 = 0.995941 */
  3150.  18880, /* B2 = 0.576172 */
  3151.  -9364, /* B1 = -0.571594 */
  3152.  18880, /* B0 = 0.576172 */
  3153.  5, /* Internal filter scaling */
  3154.  159, /* Minimum in-band energy threshold */
  3155.  21, /* 21/32 in-band to broad-band ratio */
  3156.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  3157. },
  3158. { /* f1380 */
  3159. 15247, /* A1 = -0.930603 */
  3160.  -32397, /* A2 = 0.988708 */
  3161.  -244, /* B2 = -0.007451 */
  3162.  0, /* B1 = 0.000000 */
  3163.  244, /* B0 = 0.007451 */
  3164.  14989, /* A1 = -0.914886 */
  3165.  -32627, /* A2 = 0.995697 */
  3166.  18961, /* B2 = 0.578644 */
  3167.  -8498, /* B1 = -0.518707 */
  3168.  18961, /* B0 = 0.578644 */
  3169.  15608, /* A1 = -0.952667 */
  3170.  -32628, /* A2 = 0.995758 */
  3171.  11145, /* B2 = 0.340134 */
  3172.  -5430, /* B1 = -0.331467 */
  3173.  11145, /* B0 = 0.340134 */
  3174.  5, /* Internal filter scaling */
  3175.  159, /* Minimum in-band energy threshold */
  3176.  21, /* 21/32 in-band to broad-band ratio */
  3177.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  3178. },
  3179. { /* f1400 */
  3180. 14780, /* A1 = -0.902130 */
  3181.  -32393, /* A2 = 0.988586 */
  3182.  -396, /* B2 = -0.012086 */
  3183.  0, /* B1 = 0.000000 */
  3184.  396, /* B0 = 0.012086 */
  3185.  14510, /* A1 = -0.885651 */
  3186.  -32630, /* A2 = 0.995819 */
  3187.  6326, /* B2 = 0.193069 */
  3188.  -2747, /* B1 = -0.167671 */
  3189.  6326, /* B0 = 0.193069 */
  3190.  15154, /* A1 = -0.924957 */
  3191.  -32632, /* A2 = 0.995850 */
  3192.  23235, /* B2 = 0.709076 */
  3193.  -10983, /* B1 = -0.670380 */
  3194.  23235, /* B0 = 0.709076 */
  3195.  5, /* Internal filter scaling */
  3196.  159, /* Minimum in-band energy threshold */
  3197.  21, /* 21/32 in-band to broad-band ratio */
  3198.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  3199. },
  3200. { /* f1477 */
  3201. 13005, /* A1 = -0.793793 */
  3202.  -32368, /* A2 = 0.987823 */
  3203.  -500, /* B2 = -0.015265 */
  3204.  0, /* B1 = 0.000000 */
  3205.  500, /* B0 = 0.015265 */
  3206.  12708, /* A1 = -0.775665 */
  3207.  -32615, /* A2 = 0.995331 */
  3208.  11420, /* B2 = 0.348526 */
  3209.  -4306, /* B1 = -0.262833 */
  3210.  11420, /* B0 = 0.348526 */
  3211.  13397, /* A1 = -0.817688 */
  3212.  -32615, /* A2 = 0.995361 */
  3213.  9454, /* B2 = 0.288528 */
  3214.  -3981, /* B1 = -0.243027 */
  3215.  9454, /* B0 = 0.288528 */
  3216.  5, /* Internal filter scaling */
  3217.  159, /* Minimum in-band energy threshold */
  3218.  21, /* 21/32 in-band to broad-band ratio */
  3219.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  3220. },
  3221. { /* f1600 */
  3222. 10046, /* A1 = -0.613190 */
  3223.  -32331, /* A2 = 0.986694 */
  3224.  -455, /* B2 = -0.013915 */
  3225.  0, /* B1 = 0.000000 */
  3226.  455, /* B0 = 0.013915 */
  3227.  9694, /* A1 = -0.591705 */
  3228.  -32601, /* A2 = 0.994934 */
  3229.  6023, /* B2 = 0.183815 */
  3230.  -1708, /* B1 = -0.104279 */
  3231.  6023, /* B0 = 0.183815 */
  3232.  10478, /* A1 = -0.639587 */
  3233.  -32603, /* A2 = 0.994965 */
  3234.  22031, /* B2 = 0.672333 */
  3235.  -7342, /* B1 = -0.448151 */
  3236.  22031, /* B0 = 0.672333 */
  3237.  5, /* Internal filter scaling */
  3238.  159, /* Minimum in-band energy threshold */
  3239.  21, /* 21/32 in-band to broad-band ratio */
  3240.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  3241. },
  3242. { /* f1633_1638[] */
  3243. 9181, /* A1 = 0.560394 */
  3244.  -32256, /* A2 = -0.984375 */
  3245.  -556, /* B2 = -0.016975 */
  3246.  0, /* B1 = 0 */
  3247.  556, /* B0 = 0.016975 */
  3248.  8757, /* A1 = 0.534515 */
  3249.  -32574, /* A2 = -0.99408 */
  3250.  8443, /* B2 = 0.25769 */
  3251.  -2135, /* B1 = -0.130341 */
  3252.  8443, /* B0 = 0.25769 */
  3253.  9691, /* A1 = 0.591522 */
  3254.  -32574, /* A2 = -0.99411 */
  3255.  15446, /* B2 = 0.471375 */
  3256.  -4809, /* B1 = -0.293579 */
  3257.  15446, /* B0 = 0.471375 */
  3258.  7, /* Internal filter scaling */
  3259.  159, /* Minimum in-band energy threshold */
  3260.  21, /* 21/32 in-band to broad-band ratio */
  3261.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  3262. },
  3263. { /* f1800 */
  3264. 5076, /* A1 = -0.309875 */
  3265.  -32304, /* A2 = 0.985840 */
  3266.  -508, /* B2 = -0.015503 */
  3267.  0, /* B1 = 0.000000 */
  3268.  508, /* B0 = 0.015503 */
  3269.  4646, /* A1 = -0.283600 */
  3270.  -32605, /* A2 = 0.995026 */
  3271.  6742, /* B2 = 0.205780 */
  3272.  -878, /* B1 = -0.053635 */
  3273.  6742, /* B0 = 0.205780 */
  3274.  5552, /* A1 = -0.338928 */
  3275.  -32605, /* A2 = 0.995056 */
  3276.  23667, /* B2 = 0.722260 */
  3277.  -4297, /* B1 = -0.262329 */
  3278.  23667, /* B0 = 0.722260 */
  3279.  5, /* Internal filter scaling */
  3280.  159, /* Minimum in-band energy threshold */
  3281.  21, /* 21/32 in-band to broad-band ratio */
  3282.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  3283. },
  3284. { /* f1860 */
  3285. 3569, /* A1 = -0.217865 */
  3286.  -32292, /* A2 = 0.985504 */
  3287.  -239, /* B2 = -0.007322 */
  3288.  0, /* B1 = 0.000000 */
  3289.  239, /* B0 = 0.007322 */
  3290.  3117, /* A1 = -0.190277 */
  3291.  -32603, /* A2 = 0.994965 */
  3292.  18658, /* B2 = 0.569427 */
  3293.  -1557, /* B1 = -0.095032 */
  3294.  18658, /* B0 = 0.569427 */
  3295.  4054, /* A1 = -0.247437 */
  3296.  -32603, /* A2 = 0.994965 */
  3297.  18886, /* B2 = 0.576385 */
  3298.  -2566, /* B1 = -0.156647 */
  3299.  18886, /* B0 = 0.576385 */
  3300.  5, /* Internal filter scaling */
  3301.  159, /* Minimum in-band energy threshold */
  3302.  21, /* 21/32 in-band to broad-band ratio */
  3303.  0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
  3304. },
  3305. };
  3306. static int ixj_init_filter(IXJ *j, IXJ_FILTER * jf)
  3307. {
  3308. unsigned short cmd;
  3309. int cnt, max;
  3310. if (jf->filter > 3) {
  3311. return -1;
  3312. }
  3313. if (ixj_WriteDSPCommand(0x5154 + jf->filter, j)) /* Select Filter */
  3314. return -1;
  3315. if (!jf->enable) {
  3316. if (ixj_WriteDSPCommand(0x5152, j)) /* Disable Filter */
  3317. return -1;
  3318. else
  3319. return 0;
  3320. } else {
  3321. if (ixj_WriteDSPCommand(0x5153, j)) /* Enable Filter */
  3322. return -1;
  3323. /* Select the filter (f0 - f3) to use. */
  3324. if (ixj_WriteDSPCommand(0x5154 + jf->filter, j))
  3325. return -1;
  3326. }
  3327. if (jf->freq < 12 && jf->freq > 3) {
  3328. /* Select the frequency for the selected filter. */
  3329. if (ixj_WriteDSPCommand(0x5170 + jf->freq, j))
  3330. return -1;
  3331. } else if (jf->freq > 11) {
  3332. /* We need to load a programmable filter set for undefined */
  3333. /* frequencies.  So we will point the filter to a programmable set. */
  3334. /* Since there are only 4 filters and 4 programmable sets, we will */
  3335. /* just point the filter to the same number set and program it for the */
  3336. /* frequency we want. */
  3337. if (ixj_WriteDSPCommand(0x5170 + jf->filter, j))
  3338. return -1;
  3339. if (j->ver.low != 0x12) {
  3340. cmd = 0x515B;
  3341. max = 19;
  3342. } else {
  3343. cmd = 0x515E;
  3344. max = 15;
  3345. }
  3346. if (ixj_WriteDSPCommand(cmd, j))
  3347. return -1;
  3348. for (cnt = 0; cnt < max; cnt++) {
  3349. if (ixj_WriteDSPCommand(tone_table[jf->freq - 12][cnt], j))
  3350. return -1;
  3351. }
  3352. }
  3353. j->filter_en[jf->filter] = jf->enable;
  3354. return 0;
  3355. }
  3356. static int ixj_init_filter_raw(IXJ *j, IXJ_FILTER_RAW * jfr)
  3357. {
  3358. unsigned short cmd;
  3359. int cnt, max;
  3360. if (jfr->filter > 3) {
  3361. return -1;
  3362. }
  3363. if (ixj_WriteDSPCommand(0x5154 + jfr->filter, j)) /* Select Filter */
  3364. return -1;
  3365. if (!jfr->enable) {
  3366. if (ixj_WriteDSPCommand(0x5152, j)) /* Disable Filter */
  3367. return -1;
  3368. else
  3369. return 0;
  3370. } else {
  3371. if (ixj_WriteDSPCommand(0x5153, j)) /* Enable Filter */
  3372. return -1;
  3373. /* Select the filter (f0 - f3) to use. */
  3374. if (ixj_WriteDSPCommand(0x5154 + jfr->filter, j))
  3375. return -1;
  3376. }
  3377. /* We need to load a programmable filter set for undefined */
  3378. /* frequencies.  So we will point the filter to a programmable set. */
  3379. /* Since there are only 4 filters and 4 programmable sets, we will */
  3380. /* just point the filter to the same number set and program it for the */
  3381. /* frequency we want. */
  3382. if (ixj_WriteDSPCommand(0x5170 + jfr->filter, j))
  3383. return -1;
  3384. if (j->ver.low != 0x12) {
  3385. cmd = 0x515B;
  3386. max = 19;
  3387. } else {
  3388. cmd = 0x515E;
  3389. max = 15;
  3390. }
  3391. if (ixj_WriteDSPCommand(cmd, j))
  3392. return -1;
  3393. for (cnt = 0; cnt < max; cnt++) {
  3394. if (ixj_WriteDSPCommand(jfr->coeff[cnt], j))
  3395. return -1;
  3396. }
  3397. j->filter_en[jfr->filter] = jfr->enable;
  3398. return 0;
  3399. }
  3400. static int ixj_init_tone(IXJ *j, IXJ_TONE * ti)
  3401. {
  3402. int freq0, freq1;
  3403. unsigned short data;
  3404. if (ti->freq0) {
  3405. freq0 = ti->freq0;
  3406. } else {
  3407. freq0 = 0x7FFF;
  3408. }
  3409. if (ti->freq1) {
  3410. freq1 = ti->freq1;
  3411. } else {
  3412. freq1 = 0x7FFF;
  3413. }
  3414. if(ti->tone_index > 12 && ti->tone_index < 28)
  3415. {
  3416. if (ixj_WriteDSPCommand(0x6800 + ti->tone_index, j))
  3417. return -1;
  3418. if (ixj_WriteDSPCommand(0x6000 + (ti->gain1 << 4) + ti->gain0, j))
  3419. return -1;
  3420. data = freq0;
  3421. if (ixj_WriteDSPCommand(data, j))
  3422. return -1;
  3423. data = freq1;
  3424. if (ixj_WriteDSPCommand(data, j))
  3425. return -1;
  3426. }
  3427. return freq0;
  3428. }