221 lines
7.0 KiB
C
221 lines
7.0 KiB
C
/* m5200Intr.h - Motorola MPC5200 interrupt header file */
|
|
|
|
/* Copyright 1991-2005 Wind River Systems, Inc. */
|
|
|
|
/*
|
|
modification history
|
|
--------------------
|
|
01b,15feb05,j_b INUM_PERIPHERAL_LAST corrected
|
|
01a,03jul03,pkr derived from ppc860Intr.h
|
|
*/
|
|
|
|
#ifndef __INCm5200Intrh
|
|
#define __INCm5200Intrh
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* interrupt number definitions */
|
|
|
|
/* Peripheral Interrupts */
|
|
|
|
#define INUM_PERIPHERAL_FIRST 0
|
|
#define INUM_BESTCOMM 0
|
|
#define INUM_PSC1 1
|
|
#define INUM_PSC2 2
|
|
#define INUM_PSC3 3
|
|
#define INUM_PSC6 4
|
|
#define INUM_ETH 5
|
|
#define INUM_USB 6
|
|
#define INUM_ATA 7
|
|
#define INUM_PCI_CTL 8
|
|
#define INUM_PCI_RX 9
|
|
#define INUM_PCI_TX 10
|
|
#define INUM_PSC4 11
|
|
#define INUM_PSC5 12
|
|
#define INUM_SPI_MODF 13
|
|
#define INUM_SPI_SPIF 14
|
|
#define INUM_I2C1 15
|
|
#define INUM_I2C2 16
|
|
#define INUM_CAN1 17
|
|
#define INUM_CAN2 18
|
|
#define INUM_IR_RX 19
|
|
#define INUM_IR_TX 20
|
|
#define INUM_XLB 21
|
|
#define INUM_BDLC 22
|
|
#define INUM_BESTCOMM_LP 23
|
|
#define INUM_PERIPHERAL_LAST INUM_BESTCOMM_LP
|
|
|
|
/* External Interrupts to Main Controller */
|
|
#define INUM_MAIN_FIRST 32
|
|
#define INUM_SLT1 32
|
|
#define INUM_IRQ1 33
|
|
#define INUM_IRQ2 34
|
|
#define INUM_IRQ3 35
|
|
#define _INUM_LO 36 /* internal only */
|
|
#define INUM_RTC_pint 37
|
|
#define INUM_RTC_sint 38
|
|
#define INUM_GPIO_std 39
|
|
#define INUM_GPIO_wkup 40
|
|
#define INUM_TMR0 41
|
|
#define INUM_TMR1 42
|
|
#define INUM_TMR2 43
|
|
#define INUM_TMR3 44
|
|
#define INUM_TMR4 45
|
|
#define INUM_TMR5 46
|
|
#define INUM_TMR6 47
|
|
#define INUM_TMR7 48
|
|
#define INUM_MAIN_LAST 48
|
|
|
|
/* Critical Interrupts to Main Controller */
|
|
#define INUM_CRITICAL_FIRST 49
|
|
#define INUM_IRQ0 49
|
|
#define INUM_SLT0 50
|
|
#define _INUM_HI 51 /* internal only */
|
|
#define INUM_CCS 52
|
|
#define INUM_CRITICAL_LAST 52
|
|
|
|
/* Bestcomm Interrupts (to share a common table */
|
|
|
|
#define INUM_SDMA_FIRST 53
|
|
#define INUM_SDMA_TEA 53
|
|
#define INUM_SDMA_TASK0 54
|
|
#define INUM_SDMA_TASK1 55
|
|
#define INUM_SDMA_TASK2 56
|
|
#define INUM_SDMA_TASK3 57
|
|
#define INUM_SDMA_TASK4 58
|
|
#define INUM_SDMA_TASK5 59
|
|
#define INUM_SDMA_TASK6 60
|
|
#define INUM_SDMA_TASK7 61
|
|
#define INUM_SDMA_TASK8 62
|
|
#define INUM_SDMA_TASK9 63
|
|
#define INUM_SDMA_TASK10 64
|
|
#define INUM_SDMA_TASK11 65
|
|
#define INUM_SDMA_TASK12 66
|
|
#define INUM_SDMA_TASK13 67
|
|
#define INUM_SDMA_TASK14 68
|
|
#define INUM_SDMA_TASK15 69
|
|
#define INUM_SDMA_LAST 69
|
|
|
|
#define SDMA_TASKNO_TO_INUM(TASKNO) (INUM_SDMA_TASK0+TASKNO)
|
|
|
|
#define NUM_VEC_MAX 69
|
|
|
|
/* vectors */
|
|
|
|
#define IV_BESTCOMM INUM_TO_IVEC (INUM_BESTCOMM)
|
|
#define IV_PSC1 INUM_TO_IVEC (INUM_PSC1)
|
|
#define IV_PSC2 INUM_TO_IVEC (INUM_PSC2)
|
|
#define IV_PSC3 INUM_TO_IVEC (INUM_PSC3)
|
|
#define IV_PSC6 INUM_TO_IVEC (INUM_PSC6)
|
|
#define IV_ETH INUM_TO_IVEC (INUM_ETH)
|
|
#define IV_USB INUM_TO_IVEC (INUM_USB)
|
|
#define IV_ATA INUM_TO_IVEC (INUM_ATA)
|
|
#define IV_PCI_CTL INUM_TO_IVEC (INUM_PCI_CTL)
|
|
#define IV_PCI_RX INUM_TO_IVEC (INUM_PCI_RX)
|
|
#define IV_PCI_TX INUM_TO_IVEC (INUM_PCI_TX)
|
|
#define IV_PSC4 INUM_TO_IVEC (INUM_PSC4)
|
|
#define IV_PSC5 INUM_TO_IVEC (INUM_PSC5)
|
|
#define IV_SPI_MODF INUM_TO_IVEC (INUM_SPI_MODF)
|
|
#define IV_SPI_SPIF INUM_TO_IVEC (INUM_SPI_SPIF)
|
|
#define IV_I2C1 INUM_TO_IVEC (INUM_I2C1)
|
|
#define IV_I2C2 INUM_TO_IVEC (INUM_I2C2)
|
|
#define IV_CAN1 INUM_TO_IVEC (INUM_CAN1)
|
|
#define IV_CAN2 INUM_TO_IVEC (INUM_CAN2)
|
|
#define IV_IR_RX INUM_TO_IVEC (INUM_IR_RX)
|
|
#define IV_IR_TX INUM_TO_IVEC (INUM_IR_TX)
|
|
#define IV_XLB INUM_TO_IVEC (INUM_XLB)
|
|
#define IV_BDLC INUM_TO_IVEC (INUM_BDLC)
|
|
#define IV_BESTCOMM_LP INUM_TO_IVEC (INUM_BESTCOMM_LP)
|
|
#define IV_RESERVED24 INUM_TO_IVEC (INUM_RESERVED24)
|
|
#define IV_RESERVED25 INUM_TO_IVEC (INUM_RESERVED25)
|
|
#define IV_RESERVED26 INUM_TO_IVEC (INUM_RESERVED26)
|
|
#define IV_RESERVED27 INUM_TO_IVEC (INUM_RESERVED27)
|
|
#define IV_RESERVED28 INUM_TO_IVEC (INUM_RESERVED28)
|
|
#define IV_RESERVED29 INUM_TO_IVEC (INUM_RESERVED29)
|
|
#define IV_RESERVED30 INUM_TO_IVEC (INUM_RESERVED30)
|
|
#define IV_RESERVED31 INUM_TO_IVEC (INUM_RESERVED31)
|
|
|
|
#define IV_SLT1 INUM_TO_IVEC (INUM_SLT1)
|
|
#define IV_IRQ1 INUM_TO_IVEC (INUM_IRQ1)
|
|
#define IV_IRQ2 INUM_TO_IVEC (INUM_IRQ2)
|
|
#define IV_IRQ3 INUM_TO_IVEC (INUM_IRQ3)
|
|
#define IV_RTC_pint INUM_TO_IVEC (INUM_RTC_pint)
|
|
#define IV_RTC_sint INUM_TO_IVEC (INUM_RTC_sint)
|
|
#define IV_GPIO_std INUM_TO_IVEC (INUM_GPIO_std)
|
|
#define IV_GPIO_wkup INUM_TO_IVEC (INUM_GPIO_wkup)
|
|
#define IV_TMR0 INUM_TO_IVEC (INUM_TMR0)
|
|
#define IV_TMR1 INUM_TO_IVEC (INUM_TMR1)
|
|
#define IV_TMR2 INUM_TO_IVEC (INUM_TMR2)
|
|
#define IV_TMR3 INUM_TO_IVEC (INUM_TMR3)
|
|
#define IV_TMR4 INUM_TO_IVEC (INUM_TMR4)
|
|
#define IV_TMR5 INUM_TO_IVEC (INUM_TMR5)
|
|
#define IV_TMR6 INUM_TO_IVEC (INUM_TMR6)
|
|
#define IV_TMR7 INUM_TO_IVEC (INUM_TMR7)
|
|
|
|
#define IV_IRQ0 INUM_TO_IVEC (INUM_IRQ0)
|
|
#define IV_SLT0 INUM_TO_IVEC (INUM_SLT0)
|
|
#define IV_CCS INUM_TO_IVEC (INUM_CCS)
|
|
|
|
#define IV_SDMA_TEA INUM_TO_IVEC (INUM_SDMA_TEA)
|
|
#define IV_SDMA_TASK0 INUM_TO_IVEC (INUM_SDMA_TASK0)
|
|
#define IV_SDMA_TASK1 INUM_TO_IVEC (INUM_SDMA_TASK1)
|
|
#define IV_SDMA_TASK2 INUM_TO_IVEC (INUM_SDMA_TASK2)
|
|
#define IV_SDMA_TASK3 INUM_TO_IVEC (INUM_SDMA_TASK3)
|
|
#define IV_SDMA_TASK4 INUM_TO_IVEC (INUM_SDMA_TASK4)
|
|
#define IV_SDMA_TASK5 INUM_TO_IVEC (INUM_SDMA_TASK5)
|
|
#define IV_SDMA_TASK6 INUM_TO_IVEC (INUM_SDMA_TASK6)
|
|
#define IV_SDMA_TASK7 INUM_TO_IVEC (INUM_SDMA_TASK7)
|
|
#define IV_SDMA_TASK8 INUM_TO_IVEC (INUM_SDMA_TASK8)
|
|
#define IV_SDMA_TASK9 INUM_TO_IVEC (INUM_SDMA_TASK9)
|
|
#define IV_SDMA_TASK10 INUM_TO_IVEC (INUM_SDMA_TASK10)
|
|
#define IV_SDMA_TASK11 INUM_TO_IVEC (INUM_SDMA_TASK11)
|
|
#define IV_SDMA_TASK12 INUM_TO_IVEC (INUM_SDMA_TASK12)
|
|
#define IV_SDMA_TASK13 INUM_TO_IVEC (INUM_SDMA_TASK13)
|
|
#define IV_SDMA_TASK14 INUM_TO_IVEC (INUM_SDMA_TASK14)
|
|
|
|
#define SDMA_TASKNO_TO_IVEC(TASKNO) INUM_TO_IVEC(SDMA_TASKNO_TO_INUM(TASKNO))
|
|
|
|
/* other defines */
|
|
|
|
#define USE_CRITICAL_INTERRUPT 0
|
|
|
|
#define INTR_LEVEL_DEFAULT 3
|
|
|
|
/* typedefs */
|
|
|
|
/* interrupt handler */
|
|
|
|
#ifndef _ASMLANGUAGE
|
|
typedef struct intr_handler
|
|
{
|
|
VOIDFUNCPTR vec; /* interrupt vector */
|
|
int arg; /* interrupt handler argument */
|
|
} INTR_HANDLER;
|
|
|
|
/* function declarations */
|
|
|
|
#if defined(__STDC__) || defined(__cplusplus)
|
|
|
|
IMPORT STATUS m5200IntrInit (void);
|
|
IMPORT int m5200IntrSetLevel(int, int);
|
|
IMPORT void m5200IntAck(int);
|
|
|
|
#else
|
|
|
|
IMPORT STATUS m5200IntrInit ();
|
|
IMPORT STATUS m5200IntrSetLevel();
|
|
IMPORT void m5200IntAck();
|
|
|
|
#endif /* __STDC__ */
|
|
#endif /* _ASMLANGUAGE */
|
|
|
|
#define _EXC_INFO_XLB 0x10000 /* mach check from XLB, info in DAR/DSISR */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __INCm5200Intrh */
|