void setConnectionType(unsigned short address,
		protocolSelector connectionType) {
	subscriberArray[address].setConnectionType(connectionType);
	if (connectionType == NO_CONNECTION)
		setChannelStatus(address, closed);
	else
		setChannelStatus(address, opened);
	return;
}
示例#2
0
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void AppleTopazPluginCS8420::setRunMode ( UInt8 mode ) {
    CODEC_WriteRegister ( map_CS8420_CLOCK_SOURCE_CTRL, mode );

    if ( ( mode & ( 1 << baCS8420_RUN ) ) == ( 1 << baCS8420_RUN ) ) {		//  [3669626]
        setChannelStatus ( &mChanStatusStruct );							//  [3669626]   Flush channel status buffer
    }
}
示例#3
0
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IOReturn	AppleTopazPluginCS8420::makeClockSelectPreLock ( UInt32 clockSource ) {
    IOReturn			result;
    UInt8				data;

    debugIOLog (5,  "+ AppleTopazPluginCS8420::makeClockSelect ( %d )", (unsigned int)clockSource );

    //	Clear any pending error interrupt status and re-enable error interrupts after completing clock source selection
    result = CODEC_ReadRegister ( map_CS8420_RX_ERROR, &data, 1 );
    FailIf ( kIOReturnSuccess != result, Exit );

    //	Enable error (i.e. RERR) interrupts ONLY IF C28420 IS CLOCK MASTER
    if ( kTRANSPORT_SLAVE_CLOCK == clockSource ) {
        result = CODEC_WriteRegister ( map_CS8420_RX_ERROR_MASK, kCS8420_RX_ERROR_MASK_ENABLE_RERR );
        FailIf ( kIOReturnSuccess != result, Exit );
    }

    switch ( clockSource ) {
    case kTRANSPORT_MASTER_CLOCK:
        data = mShadowRegs[map_CS8420_DATA_FLOW_CTRL];
        data &= ~( bvCS8420_spdMASK << baCS8420_SPD );
        data |= ( bvCS8420_spdSrcOut << baCS8420_SPD );
        result = CODEC_WriteRegister ( map_CS8420_DATA_FLOW_CTRL, data );

        data = mShadowRegs[map_CS8420_CLOCK_SOURCE_CTRL];
        data &= ~( 1 << baCS8420_OUTC );
        data |= ( bvCS8420_outcOmckXbaCLK << baCS8420_OUTC );
        result = CODEC_WriteRegister ( map_CS8420_CLOCK_SOURCE_CTRL, data );
        break;
    case kTRANSPORT_SLAVE_CLOCK:
        data = mShadowRegs[map_CS8420_DATA_FLOW_CTRL];
        data &= ~( bvCS8420_spdMASK << baCS8420_SPD );
        data |= ( bvCS8420_spdAES3 << baCS8420_SPD );
        result = CODEC_WriteRegister ( map_CS8420_DATA_FLOW_CTRL, data );

        data = mShadowRegs[map_CS8420_CLOCK_SOURCE_CTRL];
        data &= ~( 1 << baCS8420_OUTC );
        data |= ( bvCS8420_outcRecIC << baCS8420_OUTC );
        result = CODEC_WriteRegister ( map_CS8420_CLOCK_SOURCE_CTRL, data );
        break;
    }

    //	restart the codec after switching clocks
    data = mShadowRegs[map_CS8420_CLOCK_SOURCE_CTRL];
    data &= ~( 1 << baCS8420_RUN );
    data |= ( bvCS8420_runNORMAL << baCS8420_RUN );
    result = CODEC_WriteRegister ( map_CS8420_CLOCK_SOURCE_CTRL, data );

    setChannelStatus ( &mChanStatusStruct );		//  [3669626]   Flush channel status buffer

Exit:
    debugIOLog (5,  "- AppleTopazPluginCS8420::makeClockSelect ( %d ) returns %d", (unsigned int)clockSource, (unsigned int)result );

    return result;
}
示例#4
0
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IOReturn	AppleTopazPluginCS8420::performDeviceWake ( void ) {
    IOReturn			result;

    debugIOLog (3,  "+ AppleTopazPluginCS8420::performDeviceWake()" );

    flushControlRegisters ();

    mShadowRegs[map_CS8420_DATA_FLOW_CTRL] &= ~( kCS84XX_BIT_MASK << baCS8420_TXOFF );
    mShadowRegs[map_CS8420_DATA_FLOW_CTRL] |= ( bvCS8420_aes3TXNormal << baCS8420_TXOFF );
    result = CODEC_WriteRegister ( map_CS8420_DATA_FLOW_CTRL, mShadowRegs[map_CS8420_DATA_FLOW_CTRL] );
    FailIf ( kIOReturnSuccess != result, Exit );

    mShadowRegs[map_CS8420_CLOCK_SOURCE_CTRL] &= ~( kCS84XX_BIT_MASK << baCS8420_RUN );
    mShadowRegs[map_CS8420_CLOCK_SOURCE_CTRL] |= ( bvCS8420_runNORMAL << baCS8420_RUN );
    result = CODEC_WriteRegister ( map_CS8420_CLOCK_SOURCE_CTRL, mShadowRegs[map_CS8420_CLOCK_SOURCE_CTRL] );
    FailIf ( kIOReturnSuccess != result, Exit );

    setChannelStatus ( &mChanStatusStruct );		//  [3669626]   Flush channel status buffer

Exit:
    debugIOLog (3,  "- AppleTopazPluginCS8420::performDeviceWake()" );
    return result;
}