diff options
Diffstat (limited to 'utils/atj2137/adfuload/test_binary/lcm/system-atj213x.c')
-rw-r--r-- | utils/atj2137/adfuload/test_binary/lcm/system-atj213x.c | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/utils/atj2137/adfuload/test_binary/lcm/system-atj213x.c b/utils/atj2137/adfuload/test_binary/lcm/system-atj213x.c new file mode 100644 index 0000000000..6b6f1ae6a1 --- /dev/null +++ b/utils/atj2137/adfuload/test_binary/lcm/system-atj213x.c @@ -0,0 +1,63 @@ +#define default_interrupt(name) \ + extern __attribute__((weak,alias("UIRQ"))) void name (void) + +default_interrupt(INT_MCA); +default_interrupt(INT_SD); +default_interrupt(INT_MHA); +/* default_interrupt(INT_USB); seems wrong */ +default_interrupt(INT_DSP); +default_interrupt(INT_PCNT); +default_interrupt(INT_WD); +default_interrupt(INT_T1); +default_interrupt(INT_T0); +default_interrupt(INT_RTC); +default_interrupt(INT_DMA); +default_interrupt(INT_KEY); +default_interrupt(INT_EXT); +default_interrupt(INT_IIC2); +default_interrupt(INT_IIC1); +default_interrupt(INT_ADC); +default_interrupt(INT_DAC); +default_interrupt(INT_NAND); +default_interrupt(INT_YUV); + +/* this will be panicf() on regular rockbox fw */ +static void UIRQ(void) +{ + while(1); +} + +/* TRICK ALERT !!!! + * The table is organized in reversed order so + * clz on INTC_PD returns the index in this table + */ +void (* const irqvector[])(void) __attribute__((used)) = +{ + UIRQ, UIRQ, UIRQ, UIRQ, UIRQ, INT_YUV, UIRQ, INT_NAND, + UIRQ, INT_DAC, INT_ADC, UIRQ, UIRQ, INT_IIC1, INT_IIC2, UIRQ, + UIRQ, INT_EXT, INT_KEY, INT_DMA, INT_RTC, INT_T0, INT_T1, INT_WD, + INT_PCNT, UIRQ, INT_DSP, UIRQ, INT_MHA, INT_SD, UIRQ, INT_MCA +}; + +#define CPU_FREQ 60000000UL //??? +void udelay(unsigned int usec) +{ + unsigned int i = ((usec * CPU_FREQ) / 2000000); + asm volatile ( + ".set noreorder \n" + "1: \n" + "bne %0, $0, 1b \n" + "addiu %0, %0, -1 \n" + ".set reorder \n" + : "=r" (i) + : "0" (i) + ); +} + +void mdelay(unsigned int msec) +{ + unsigned int i; + for(i=0; i<msec; i++) + udelay(1000); +} + |