390 lines
13 KiB
C
390 lines
13 KiB
C
//***************************************************************************
|
|
// Video Processor(V-PRO) process
|
|
//
|
|
//***************************************************************************
|
|
|
|
#include "common.h"
|
|
#include "regs.h"
|
|
#include "cvpro.h"
|
|
|
|
|
|
|
|
|
|
|
|
void VPRO_RESET_FUNC( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_RESET, 0 );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_RESET, 0x80 );
|
|
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproRESET_REG = 0x80;
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproVMODE_REG = 0; // ? ? ?
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproAVM_REG = 0; // ? ? ?
|
|
}
|
|
|
|
void VPRO_VIDEO_MUTE_ON( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
// debug
|
|
// if ( !(((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproRESET_REG & 0x80) )
|
|
// Error;
|
|
// debug
|
|
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproRESET_REG |= 0x40;
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_RESET, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproRESET_REG );
|
|
}
|
|
|
|
void VPRO_VIDEO_MUTE_OFF( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
// debug
|
|
// if ( !(((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproRESET_REG & 0x80) )
|
|
// Error;
|
|
// debug
|
|
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproRESET_REG &= 0xbf;
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_RESET, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproRESET_REG );
|
|
}
|
|
|
|
void VPRO_INIT_NTSC( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproVMODE_REG &= 0x7f;
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_VMODE, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproVMODE_REG );
|
|
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproAVM_REG &= 0x5f;
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_AVM, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproAVM_REG );
|
|
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_DVEN, 0xc0 );
|
|
}
|
|
|
|
void VPRO_INIT_PAL( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproVMODE_REG |= 0x80;
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_VMODE, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproVMODE_REG );
|
|
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproAVM_REG &= 0x5f;
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_AVM, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproAVM_REG );
|
|
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_DVEN, 0x80 );
|
|
}
|
|
|
|
void VPRO_CC_ON( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
// ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproVMODE_REG &= 0xbf;
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproVMODE_REG |= 0x40;
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_VMODE, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproVMODE_REG );
|
|
}
|
|
|
|
void VPRO_CC_OFF( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
// ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproVMODE_REG |= 0x40;
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproVMODE_REG &= 0xbf;
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_VMODE, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproVMODE_REG );
|
|
}
|
|
|
|
void VPRO_SUBP_PALETTE( PHW_DEVICE_EXTENSION pHwDevExt , PUCHAR pPalData )
|
|
{
|
|
ULONG i;
|
|
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_CPSET, 0x80 );
|
|
|
|
for( i = 0; i < 48; i++ )
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_CPSP, *pPalData++ );
|
|
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_CPSET, 0x40 );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_CPSET, 0 );
|
|
}
|
|
|
|
void VPRO_OSD_PALETTE( PHW_DEVICE_EXTENSION pHwDevExt , PUCHAR pPalData )
|
|
{
|
|
int i;
|
|
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_CPSET, 0x20 );
|
|
|
|
for( i = 0; i < 48; i++ )
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_CPSP, *pPalData++ );
|
|
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_CPSET, 0x10 );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + VPRO_CPSET, 0 );
|
|
}
|
|
|
|
void SUBP_RESET_INIT( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
UCHAR ch;
|
|
|
|
SUBP_RESET_FUNC( pHwDevExt );
|
|
|
|
// Interrupt Mask.
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_STSINT, 0xf0 );
|
|
|
|
// select Audio Stream.
|
|
if( ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.AudioMode == AUDIO_TYPE_AC3 || ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.AudioMode == AUDIO_TYPE_PCM )
|
|
SUBP_SELECT_AUDIO_SSID( pHwDevExt );
|
|
else
|
|
SUBP_SELECT_AUDIO_STID( pHwDevExt );
|
|
|
|
SUBP_STC_OFF( pHwDevExt );
|
|
|
|
// Audio channel
|
|
if( ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.AudioMode == AUDIO_TYPE_AC3 )
|
|
ch = SUB_STRMID_AC3;
|
|
else if( ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.AudioMode == AUDIO_TYPE_MPEG_F1 )
|
|
ch = STRMID_MPEG_AUDIO;
|
|
else if( ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.AudioMode == AUDIO_TYPE_MPEG_F2 )
|
|
ch = STRMID_MPEG_AUDIO;
|
|
else
|
|
ch = SUB_STRMID_PCM;
|
|
|
|
ch = (UCHAR)SUBP_GET_AUDIO_CH( pHwDevExt );
|
|
SUBP_SET_AUDIO_CH( pHwDevExt, ch );
|
|
|
|
// Sub-Pic Channel
|
|
SUBP_SET_SUBP_CH( pHwDevExt,0 );
|
|
|
|
// Sub-Pic MUTE ON/OFF.
|
|
if( ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.SubpicMute )
|
|
SUBP_MUTE_ON( pHwDevExt );
|
|
else
|
|
SUBP_MUTE_OFF( pHwDevExt );
|
|
SUBP_BUFF_CLEAR( pHwDevExt );
|
|
}
|
|
|
|
void SUBP_RESET_FUNC( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_RESET, 0x80 );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_RESET, 0 );
|
|
|
|
// set or restore COMMAND REGISTER
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_COMMAND, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproCOMMAND_REG );
|
|
}
|
|
|
|
void SUBP_RESET_STC( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_RESET, 0x40 );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_RESET, 0 );
|
|
}
|
|
|
|
void SUBP_BUFF_CLEAR( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproCOMMAND_REG |= 0x10;
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_COMMAND, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproCOMMAND_REG);
|
|
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproCOMMAND_REG &= 0xef;
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_COMMAND, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproCOMMAND_REG);
|
|
|
|
//--- End.
|
|
}
|
|
|
|
void SUBP_MUTE_ON( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
DebugPrint(( DebugLevelTrace, "DVDTS:SUBP_MUTE_ON( pHwDevExt )\r\n" ));
|
|
|
|
|
|
// new below
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproCOMMAND_REG |= 0x80;
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_COMMAND, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproCOMMAND_REG );
|
|
|
|
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.SubpicMute = TRUE;
|
|
}
|
|
|
|
void SUBP_MUTE_OFF( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
DebugPrint(( DebugLevelTrace, "DVDTS:SUBP_MUTE_OFF( pHwDevExt )\r\n" ));
|
|
|
|
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproCOMMAND_REG &= 0x7f;
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_COMMAND, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproCOMMAND_REG );
|
|
|
|
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.SubpicMute = FALSE;
|
|
}
|
|
|
|
void SUBP_HLITE_ON( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproCOMMAND_REG |= 0x40;
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_COMMAND, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproCOMMAND_REG );
|
|
|
|
}
|
|
|
|
void SUBP_HLITE_OFF( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproCOMMAND_REG &= 0xbf;
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_COMMAND, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.VproCOMMAND_REG );
|
|
|
|
}
|
|
|
|
void SUBP_SET_STC( PHW_DEVICE_EXTENSION pHwDevExt , ULONG stc )
|
|
{
|
|
SUBP_STC_OFF( pHwDevExt );
|
|
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_STCLL, (UCHAR)( stc & 0xff ) );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_STCLH, (UCHAR)( ( stc >> 8 ) & 0xff ) );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_STCHL, (UCHAR)( ( stc >> 16 ) & 0xff ) );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_STCHH, (UCHAR)( ( stc >> 24 ) & 0xff ) );
|
|
|
|
// SUBP_STC_ON( pHwDevExt );
|
|
}
|
|
|
|
void SUBP_SET_LNCTLI( PHW_DEVICE_EXTENSION pHwDevExt , PUCHAR pData )
|
|
{
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_LCINFLL, *pData++ );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_LCINFLH, *pData++ );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_LCINFHL, *pData++ );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_LCINFHH, *pData++ );
|
|
}
|
|
|
|
void SUBP_SET_PXCTLIS( PHW_DEVICE_EXTENSION pHwDevExt , PUCHAR pData )
|
|
{
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_PCINFSLL, *pData++ );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_PCINFSLH, *pData++ );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_PCINFSML, *pData++ );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_PCINFSMH, *pData++ );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_PCINFSHL, *pData++ );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_PCINFSHH, *pData++ );
|
|
}
|
|
|
|
void SUBP_SET_PXCTLIE( PHW_DEVICE_EXTENSION pHwDevExt , PUCHAR pData )
|
|
{
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_PCINFELL, *pData++ );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_PCINFELH, *pData++ );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_PCINFEML, *pData++ );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_PCINFEMH, *pData++ );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_PCINFEHL, *pData++ );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_PCINFEHH, *pData++ );
|
|
}
|
|
|
|
void SUBP_STC_ON( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
UCHAR val;
|
|
|
|
val = READ_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_STCCNT );
|
|
|
|
val |= 0x80;
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_STCCNT, val );
|
|
}
|
|
|
|
void SUBP_STC_OFF( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
UCHAR val;
|
|
|
|
val = READ_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_STCCNT );
|
|
|
|
val &= 0x7f;
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_STCCNT, val );
|
|
}
|
|
|
|
void SUBP_SET_SUBP_CH( PHW_DEVICE_EXTENSION pHwDevExt , ULONG ch )
|
|
{
|
|
UCHAR ucch;
|
|
|
|
ucch = (UCHAR)( ch & 0x1f );
|
|
ucch |= 0x20;
|
|
|
|
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.SubpicID = ucch;
|
|
|
|
#if 1
|
|
// VPRO (early TC90A09F) has a bug. When change subpic ID, subpic disappears somtimes.
|
|
// You should reset SUBPIC part to change subpic ID safely.
|
|
|
|
// reset SUBPIC part
|
|
SUBP_RESET_FUNC( pHwDevExt );
|
|
|
|
// Interrupt Mask.
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_STSINT, 0xf0 );
|
|
|
|
// select Audio Stream.
|
|
if( ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.AudioMode == AUDIO_TYPE_AC3 || ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.AudioMode == AUDIO_TYPE_PCM )
|
|
SUBP_SELECT_AUDIO_SSID( pHwDevExt );
|
|
else
|
|
SUBP_SELECT_AUDIO_STID( pHwDevExt );
|
|
|
|
// SUBP_STC_OFF( pHwDevExt );
|
|
|
|
// Audio channel
|
|
SUBP_SET_AUDIO_CH( pHwDevExt, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.AudioID );
|
|
DebugPrint(( DebugLevelTrace, "DVDTS: <<< New Audio ID = %x >>>\r\n", ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.AudioID ));
|
|
|
|
// Sub-Pic Channel
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_SPID, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.SubpicID );
|
|
DebugPrint(( DebugLevelTrace, "DVDTS: <<< New Subpic ID = %x >>>\r\n", ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.SubpicID ));
|
|
|
|
// Sub-Pic MUTE ON/OFF.
|
|
if( ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.SubpicMute ) //HACK NEXT RESETREG SEE DVDINIT>H VPRO HACK
|
|
SUBP_MUTE_ON( pHwDevExt );
|
|
else
|
|
SUBP_MUTE_OFF( pHwDevExt );
|
|
// SUBP_BUFF_CLEAR( pHwDevExt );
|
|
|
|
#else
|
|
// Maybe VPRO works only next one code if later version (ex. Timpani).
|
|
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_SPID, ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.SubpicID );
|
|
|
|
#endif
|
|
|
|
//--- End.
|
|
}
|
|
|
|
ULONG SUBP_GET_SUBP_CH( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
UCHAR val;
|
|
|
|
val = READ_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_SPID );
|
|
|
|
return val;
|
|
}
|
|
|
|
void SUBP_SET_AUDIO_CH( PHW_DEVICE_EXTENSION pHwDevExt , ULONG ch )
|
|
{
|
|
UCHAR ucch;
|
|
|
|
ucch = (UCHAR)( ch & 0x7 );
|
|
|
|
if( ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.AudioMode == AUDIO_TYPE_AC3 )
|
|
ucch |= 0x80;
|
|
else if( ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.AudioMode == AUDIO_TYPE_PCM )
|
|
ucch |= 0xa0;
|
|
else if( ((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.AudioMode == AUDIO_TYPE_MPEG_F1 )
|
|
ucch |= 0xc0;
|
|
else
|
|
ucch |= 0xd0;
|
|
|
|
//--- 97.09.14 K.Chujo
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.AudioID = ucch;
|
|
//--- End.
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_AAID, ucch );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_ABID, 0 );
|
|
}
|
|
|
|
void SUBP_SET_AUDIO_NON( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
//--- 97.09.14 K.Chujo
|
|
((PMasterDecoder)pHwDevExt->DecoderInfo)->VPro.AudioID = 0;
|
|
//--- End.
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_AAID, 0 );
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_ABID, 0 );
|
|
}
|
|
|
|
ULONG SUBP_GET_AUDIO_CH( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
UCHAR val;
|
|
|
|
val = READ_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_AAID );
|
|
|
|
return (ULONG)val;
|
|
}
|
|
//--- End.
|
|
|
|
void SUBP_SELECT_AUDIO_STID( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_ASEL, 0 );
|
|
}
|
|
|
|
void SUBP_SELECT_AUDIO_SSID( PHW_DEVICE_EXTENSION pHwDevExt )
|
|
{
|
|
WRITE_PORT_UCHAR( pHwDevExt->ioBaseLocal + SUBP_ASEL, 3 );
|
|
}
|
|
|