ixj.c
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:316k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

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