Esempio n. 1
0
void CDWHCIDevice::InterruptHandler (void)
{
#ifndef NDEBUG
	//debug_click ();
#endif

	DataMemBarrier ();

	CDWHCIRegister IntStatus (DWHCI_CORE_INT_STAT);
	IntStatus.Read ();

	if (IntStatus.Get () & DWHCI_CORE_INT_STAT_HC_INTR)
	{
		CDWHCIRegister AllChanInterrupt (DWHCI_HOST_ALLCHAN_INT);
		AllChanInterrupt.Read ();
		AllChanInterrupt.Write ();
		
		unsigned nChannelMask = 1;
		for (unsigned nChannel = 0; nChannel < m_nChannels; nChannel++)
		{
			if (AllChanInterrupt.Get () & nChannelMask)
			{
				CDWHCIRegister ChanInterruptMask (DWHCI_HOST_CHAN_INT_MASK(nChannel), 0);
				ChanInterruptMask.Write ();
				
				ChannelInterruptHandler (nChannel);
			}
			
			nChannelMask <<= 1;
		}
	}
#if 0	
	if (IntStatus.Get () & DWHCI_CORE_INT_STAT_PORT_INTR)
	{
		CDWHCIRegister HostPort (DWHCI_HOST_PORT);
		HostPort.Read ();
		
		CLogger::Get ()->Write (FromDWHCI, LogDebug, "Port interrupt (status 0x%08X)", HostPort.Get ());
		
		HostPort.And (~DWHCI_HOST_PORT_ENABLE);
		HostPort.Or (  DWHCI_HOST_PORT_CONNECT_CHANGED
			     | DWHCI_HOST_PORT_ENABLE_CHANGED
			     | DWHCI_HOST_PORT_OVERCURRENT_CHANGED);
		HostPort.Write ();
		
		IntStatus.Or (DWHCI_CORE_INT_STAT_PORT_INTR);
	}
#endif
	IntStatus.Write ();

	DataMemBarrier ();
}
Esempio n. 2
0
interrupt VectorNumber_Vtpm1ch4 void TPM1_CH4(void)
{
	ChannelInterruptHandler(4);
	
}
Esempio n. 3
0
interrupt VectorNumber_Vtpm1ch3 void TPM1_CH3(void)
{
	ChannelInterruptHandler(3);
	
}
Esempio n. 4
0
interrupt VectorNumber_Vtpm1ch2 void TPM1_CH2(void)
{
	ChannelInterruptHandler(2); 
	
}
Esempio n. 5
0
interrupt VectorNumber_Vtpm1ch1 void TPM1_CH1(void)
{
	ChannelInterruptHandler(1);
	
}
Esempio n. 6
0
interrupt VectorNumber_Vtpm1ch0 void TPM1_CH0(void)
{

	ChannelInterruptHandler(0);
}
Esempio n. 7
0
interrupt VectorNumber_Vtpm1ch5 void TPM1_CH5(void)
{
	ChannelInterruptHandler(5);
}