blob: 61d827989d47157a8f91b8ed024800bbb327c561 [file] [log] [blame]
/*
* File: mcf52xx.c
* Purpose: Source to select CF derivative
*
* Notes:
*
* License: All software covered by license agreement in -
* docs/Freescale_Software_License.pdf
*/
/********************************************************************/
#include "common.h"
/********************************************************************/
/*
* Pause for the specified number of micro-seconds.
* Uses DTIM3 as a timer
*/
void
cpu_pause(int usecs)
{
/* Enable the DMA Timer 3 */
MCF_DTIM3_DTRR = (vuint32)(usecs - 1);
MCF_DTIM3_DTER = MCF_DTIM_DTER_REF;
MCF_DTIM3_DTMR = 0
| MCF_DTIM_DTMR_PS(SYSTEM_CLOCK)
| MCF_DTIM_DTMR_FRR
| MCF_DTIM_DTMR_CLK_DIV1
| MCF_DTIM_DTMR_RST;
while ((MCF_DTIM3_DTER & MCF_DTIM_DTER_REF) == 0)
{};
/* Disable the timer */
MCF_DTIM3_DTMR = 0;
}
/********************************************************************/
void
board_handle_interrupt (int vector)
{
switch (vector)
{
case 65: /* Eport Interrupt 1 */
printf("SW2\n");
MCF_EPORT_EPFR = MCF_EPORT_EPFR_EPF1;
break;
case 69: /* Eport Interrupt 5 */
printf("SW1\n");
MCF_EPORT_EPFR = MCF_EPORT_EPFR_EPF5;
break;
case 71: /* Eport Interrupt 7 */
printf("ABORT\n");
MCF_EPORT_EPFR = MCF_EPORT_EPFR_EPF7;
break;
case 66: /* Eport Interrupt 2 */
case 67: /* Eport Interrupt 3 */
case 68: /* Eport Interrupt 4 */
case 70: /* Eport Interrupt 6 */
default:
MCF_EPORT_EPFR = (uint8)(0x01 << (vector - 64));
printf("Edge Port Interrupt #%d\n",vector - 64);
break;
}
}
/********************************************************************/
/********************************************************************/
void
cpu_handle_interrupt (int vector)
{
if (vector < 64 || vector > 192)
return;
if (vector >= 64 && vector <= 71)
board_handle_interrupt(vector);
else
printf("User Defined Vector #%d\n",vector);
}
/********************************************************************/