#include "archinc.h"
#include "timer0.h"
#include "cli.h"
#include "eventq.h"
#include "spibpirq.h"

#include <stdio.h>
#include <stdlib.h>

#define DELAY_LOOP (5000)
void spibpirqAssert(void)
{
  volatile unsigned long dummy;
  int i;

#ifdef CONFIG_BOARD_MEDUSA
  IOCLR   = (unsigned long)0x00000100;
  for(i=0;i<DELAY_LOOP;i++) {
    dummy = CTIME0;
    }
  IOSET   = (unsigned long)0x00000100;
#endif

#ifdef CONFIG_BOARD_MEDUSA_REV2
  IO0CLR   = (unsigned long)0x00200000;
  for(i=0;i<DELAY_LOOP;i++) {
    dummy = CTIME0;
    }
  IO0SET   = (unsigned long)0x00200000;
#endif

}

static int bpirqHandler(int argc, char * argv[], int flags)
{
  spibpirqAssert();
  return 0;
}

int spibpirqInit(void)
{
  int i;

  eventqRegisterHandler(SPI_IRQ_ASSERT,  spibpirqAssert);

  cliRegisterCommand("bpirq", bpirqHandler, "bpirq - assert backplane SPI IRQ");
  return 0;
}

