📄 spdif.c
字号:
/* SCCSID @(#)spdif.c 1.5 6/16/97 */#ifdef SPDIF#include "common.h"#include "mvd.h"#include "vcxi.h"#include "ioport.h"#include "spdif.h"#include "buffer.h"#define tdmxmtslots tdmxmtslots0#define PRINTF(a)#ifdef OUT32BITS#define XMTSLOTS 0xff#else#define XMTSLOTS 0x66#endif#define RCVSLOTS 0x66/****************************************************************************** Initialise S/PDIF input. ******************************************************************************/void SPDIF_in_init(void){ int *cs8411 = (int *)0x14000000; PRINTF(("SPDIF_out_int()\n")); cs8411[2] = 0; /* reset */ cs8411[3] = 0; /* slave FSYNC and SCK */ if (vcx_xfer_mode == 6) { cs8411[3] = 0xbb; /* ROER, SDF=011, FSF=10, master, falling edge */ cs8411[2] = 0x81; /* FSYNC from data, buffer mode 0 */ }}/****************************************************************************** Initialise S/PDIF output. ******************************************************************************/#ifdef OUT32BITS#define OUTI2S 0x08 /* SDF=000, FSF=10, slave, falling edge. */#else#define OUTI2S 0x28 /* SDF=010, FSF=10, slave, falling edge. */#endifvoid SPDIF_out_init(void){ int i; int *cs8401a = (int *)0x14000100; int *cs8411 = (int *)0x14000000; cs8411[2] = 0; /* reset */ PRINTF(("SPDIF_out_int()\n")); /* Transparent mode off. All int disabled. */ cs8401a[1] = 0; /* 256FS. Always valid. Buffer mode 0. No CRCC. Mute and Reset. */ cs8401a[2] = 0x80; /* I2S format is here */ if (vcx_xfer_mode == 6) cs8401a[3] = OUTI2S & ~2; /* Force slave mode */ else cs8401a[3] = OUTI2S; /* Initialise user data, which we don't use. */ for (i=4; i<8; i++) { cs8401a[i] = 0; } /* Channel status byte 0, CONTROL and MODE */ /* Consumer use, 2 channel w/o pre-emphasis, copy prohibited, mode 0. */ cs8401a[8] = 0; cs8401a[9] = 0; /* Category 0 */ cs8401a[10] = 0; /* Source # don't care. Channel # don't care */ cs8401a[11] = 0x40; /* 48KHz, Level II accuracy whatever that means */ /* Clear the rest of the channel status word. */ for (i=12; i<32; i++) { cs8401a[i] = 0; }#if 0 SET_AUX4; TRISTATE_AUX4;#endif PRINTF(("Done SPDIF_out_int()\n"));}#if 0int SPDIF_n_int = 0;/****************************************************************************** S/PDIF output interrupt service. ******************************************************************************/void SPDIF_out_interrupt_service(void){ int *cs8401a = (int *)0x14000100; mvd[riface_clear_dbgirq] = 0; SPDIF_n_int++; cs8401a[1] = 0x84; /* Set BKST */}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -