void    SiiMhlTxDrvTimerPollingCallBack(void *pArg)
{
	APP_DEBUG_PRINT("TIMER_POLLING expired\n");
    //PlatformGPIOSet(pinSinkVbusOn,PlatformGPIOGet(pinMhlVbusSense));

	HalTimerSet(TIMER_POLLING,T_MONITORING_PERIOD);
	// do nothing
}
示例#2
0
static uint8_t CBusProcessErrors( uint8_t intStatus )
{
    uint8_t result          = 0;
    uint8_t abortReason  = 0;
    intStatus &= (BIT_MSC_ABORT | BIT_MSC_XFR_ABORT | BIT_DDC_ABORT);
    if ( intStatus )
    {
		if( intStatus & BIT_DDC_ABORT )
		{
			abortReason |= SiiRegRead(REG_DDC_ABORT_REASON);
			TX_DEBUG_PRINT( ("CBUS:: DDC ABORT happened. Clearing 0x0C\n"));
            SiiRegWrite(REG_DDC_ABORT_REASON, 0xFF);
		}
        if ( intStatus & BIT_MSC_XFR_ABORT )
        {
            abortReason |= SiiRegRead(REG_MSC_REQ_ABORT_REASON );
            TX_DEBUG_PRINT( ("CBUS:: MSC Requester ABORTED. Clearing 0x0D\n"));
            SiiRegWrite(REG_MSC_REQ_ABORT_REASON , 0xFF);
        }
        if ( intStatus & BIT_MSC_ABORT )
        {
            abortReason |= SiiRegRead(REG_MSC_RES_ABORT_REASON );
            TX_DEBUG_PRINT( ("CBUS:: MSC Responder ABORT. Clearing 0x0E\n"));
            SiiRegWrite(REG_MSC_RES_ABORT_REASON , 0xFF);
        }
        if ( abortReason & (BIT0|BIT1|BIT2|BIT3|BIT4|BIT7) )
        {
            TX_DEBUG_PRINT( ("CBUS:: Reason for ABORT is ....0x%02X \n", (int)abortReason ));
            if ( abortReason & CBUSABORT_BIT_REQ_MAXFAIL)
            {
                TX_DEBUG_PRINT( ("Retry threshold exceeded\n"));
            }
            if ( abortReason & CBUSABORT_BIT_PROTOCOL_ERROR)
            {
                TX_DEBUG_PRINT( ("Protocol Error\n"));
            }
            if ( abortReason & CBUSABORT_BIT_REQ_TIMEOUT)
            {
                TX_DEBUG_PRINT( ("Translation layer timeout\n"));
            }
            if ( abortReason & CBUSABORT_BIT_UNDEFINED_OPCODE)
            {
                TX_DEBUG_PRINT( ("Undefined opcode\n"));
            }
            if ( abortReason & CBUSABORT_BIT_UNDEFINED_OFFSET)
            {
                TX_DEBUG_PRINT( ("Undefined offset\n"));
            }
            if ( abortReason & CBUSABORT_BIT_PEER_BUSY)
            {
                TX_DEBUG_PRINT( ("Opposite device is busy\n"));
            }
            if ( abortReason & CBUSABORT_BIT_PEER_ABORTED)
            {
#ifndef __KERNEL__
                HalTimerSet(TIMER_ABORT, T_ABORT_NEXT);
                mscAbortFlag = true;
#else
                if(MscAbortTimer)
                {
                    SiiOsTimerDelete(MscAbortTimer);
                    MscAbortTimer = NULL;
                }
                mscAbortFlag = true;
                SiiOsTimerCreate("Abort Time Out", SiiMhlMscAbortTimerCB, NULL, true,
                2000, false, &MscAbortTimer);
#endif
                TX_DEBUG_PRINT( ("Peer sent an abort, start 2s timer Tabort_next\n"));
            }
        }
    }
    return( result );
}