void AC97_write_codec(unsigned char ucReg, unsigned short usData)
{
	g_pAC97Reg->AC_CODEC_CMD = CMD_WRITE | CMD_ADDRESS(ucReg) | CMD_DATA(usData);
	DelayLoop(CMD_DELAY);

	g_pAC97Reg->AC_CODEC_CMD |= CMD_READ;	//To receive SLOTREQ bits when VRA is '1'
	DelayLoop(CMD_DELAY);
}
unsigned short AC97_read_codec(unsigned char ucReg)
{
	unsigned short usVal;

	// Read Dummy
	usVal = STATUS_DATA(g_pAC97Reg->AC_CODEC_STAT);
	DelayLoop(CMD_DELAY);

	g_pAC97Reg->AC_CODEC_CMD = CMD_READ | CMD_ADDRESS(ucReg) | CMD_DATA(0x0);
	DelayLoop(CMD_DELAY);

	// Read Value
	usVal = STATUS_DATA(g_pAC97Reg->AC_CODEC_STAT);
	DelayLoop(CMD_DELAY);

	g_pAC97Reg->AC_CODEC_CMD |= CMD_READ;	//To receive SLOTREQ bits when VRA is '1'
	DelayLoop(CMD_DELAY);

	return usVal;
}
Пример #3
0
void device::data_talk(int secondary_address)
{
    DMSG("> iec_data_talk");
    secondary_command( CMD_DATA(secondary_address), true );
    DMSG("< iec_data_talk");
}
Пример #4
0
void device::data_listen(int secondary_address)
{
    DMSG("> iec_data_listen");
    secondary_command( CMD_DATA(secondary_address), false );
    DMSG("< iec_data_listen");
}