📄 idt723v90823.c
字号:
/* idt72v90823.c - IDT 72V90823 driver source *//*modification history--------------------*/#include "idt72v90823.h"TSICTL idt90823TsiCtl;void tsiInit(){ IDT72V90823REG * pTsiReg; unsigned int i; volatile unsigned short bpeState; /* disable ODE and out of reset*/ rstTSI(0xFF); idt90823TsiCtl.tsiReg = (IDT72V90823REG *)CS_TSI90823; pTsiReg = idt90823TsiCtl.tsiReg; pTsiReg->cr = 0x0000; pTsiReg->ims = 0x0002; pTsiReg->far = 0x0000; pTsiReg->for0 = 0x0000; pTsiReg->for1 = 0x0000; pTsiReg->for2 = 0x0000; pTsiReg->for3 = 0x0000; /* block program initialize connect memory */ pTsiReg->cr |= CRMBP_CONMEM_PRG; pTsiReg->ims |= IMSBPE_PROGRAM_START; bpeState = 1; while (bpeState) { bpeState = ((volatile unsigned short)(pTsiReg->ims)) & IMSBPE; } pTsiReg->cr &= ~CRMBP_CONMEM_PRG; }void tsiChannelConnect( unsigned short srcStream, unsigned short srcSlot, unsigned short dstStream, unsigned short dstSlot){ IDT72V90823REG * pTsiReg; pTsiReg = idt90823TsiCtl.tsiReg; if (((srcStream < TSISTREAM)&& (srcSlot < TSISLOT)) && ((dstStream >= TSISTREAM) && (dstSlot >= TSISLOT))) { pTsiReg->cr = (dstStream & CRSTREAM); pTsiReg->tsiMem[dstSlot] = (CONMEM_OE | ((srcStream << CONMEM_STEAM_OFFSET) & CONMEM_STEAM) |(srcSlot & CONMEM_SLOT)); } else { logMsg("TSI slot or stream not exist\n",0,0,0,0,0,0); } }void tsiChannelDisconnect( unsigned short dstStream, unsigned short dstSlot){ IDT72V90823REG * pTsiReg; pTsiReg = idt90823TsiCtl.tsiReg; if (((dstStream < TSISTREAM)&& (dstSlot < TSISLOT))) { pTsiReg->cr = (dstStream & CRSTREAM); pTsiReg->tsiMem[dstSlot] &= ~(CONMEM_OE|CONMEM_STEAM|CONMEM_SLOT); } else { logMsg("TSI slot or stream not exist\n",0,0,0,0,0,0); } }void tsiCrossCreate( unsigned short firstStream, unsigned short firstSlot, unsigned short secondStream, unsigned short secondSlot){ tsiChannelDisconnect(firstStream,firstSlot); tsiChannelDisconnect(secondStream,secondSlot); tsiChannelConnect(firstStream,firstSlot,secondStream,secondSlot); tsiChannelConnect(secondStream,secondSlot,firstStream,firstSlot); }void tsiCrossDestroy( unsigned short firstStream, unsigned short firstSlot, unsigned short secondStream, unsigned short secondSlot){ tsiChannelDisconnect(firstStream,firstSlot); tsiChannelDisconnect(secondStream,secondSlot);}void dumpCross(){ IDT72V90823REG * pTsiReg; int i,j,first; volatile unsigned short conMemTemp; unsigned short srcStream; unsigned short srcSlot; first = 1; pTsiReg = idt90823TsiCtl.tsiReg; pTsiReg->cr = 0; for(i = 0 ;i < TSISTREAM ; i++) { pTsiReg->cr = i; for (j = 0 ; j < TSISLOT ; j++) { conMemTemp = pTsiReg->tsiMem[j]; if (conMemTemp & CONMEM_OE) { if(first == 1) { printf("\nIN(STREAM , SLOT )-->OUT(STREAM ,SLOT )\n"); first = 0; } srcStream = (conMemTemp & CONMEM_STEAM)>>CONMEM_STEAM_OFFSET; srcSlot = conMemTemp & CONMEM_SLOT; printf("IN( %d, %d)-->OUT( %d, %d)\n",srcStream,srcSlot,i,j); } } } printf("\n TimeSlot Dump OK\n");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -