62 lines
1.7 KiB
C
62 lines
1.7 KiB
C
#ifndef _PPC4xx_UIC_H_
|
|
#define _PPC4xx_UIC_H_
|
|
|
|
/*
|
|
* Define the number of UIC's
|
|
*/
|
|
#define UIC_MAX 1
|
|
#define IRQ_MAX UIC_MAX * 32
|
|
|
|
/* UIC0 dcr base address */
|
|
#define UIC0_DCR_BASE 0xc0
|
|
|
|
/*
|
|
* UIC register
|
|
*/
|
|
#define UIC_SR 0x0 /* UIC status */
|
|
#define UIC_ER 0x2 /* UIC enable */
|
|
#define UIC_CR 0x3 /* UIC critical */
|
|
#define UIC_PR 0x4 /* UIC polarity */
|
|
#define UIC_TR 0x5 /* UIC triggering */
|
|
#define UIC_MSR 0x6 /* UIC masked status */
|
|
#define UIC_VR 0x7 /* UIC vector */
|
|
#define UIC_VCR 0x8 /* UIC vector configuration */
|
|
|
|
#define uic0sr (UIC0_DCR_BASE+0x0) /* UIC0 status */
|
|
#define uic0er (UIC0_DCR_BASE+0x2) /* UIC0 enable */
|
|
#define uic0cr (UIC0_DCR_BASE+0x3) /* UIC0 critical */
|
|
#define uic0pr (UIC0_DCR_BASE+0x4) /* UIC0 polarity */
|
|
#define uic0tr (UIC0_DCR_BASE+0x5) /* UIC0 triggering */
|
|
#define uic0msr (UIC0_DCR_BASE+0x6) /* UIC0 masked status */
|
|
#define uic0vr (UIC0_DCR_BASE+0x7) /* UIC0 vector */
|
|
#define uic0vcr (UIC0_DCR_BASE+0x8) /* UIC0 vector configuration */
|
|
|
|
/* The following is for compatibility with 405 code */
|
|
#define uicsr uic0sr
|
|
#define uicer uic0er
|
|
#define uiccr uic0cr
|
|
#define uicpr uic0pr
|
|
#define uictr uic0tr
|
|
#define uicmsr uic0msr
|
|
#define uicvr uic0vr
|
|
#define uicvcr uic0vcr
|
|
|
|
/* the interrupt vector definitions */
|
|
#define VECNUM_MAL_SERR 10
|
|
#define VECNUM_MAL_TXEOB 11
|
|
#define VECNUM_MAL_RXEOB 12
|
|
#define VECNUM_MAL_TXDE 13
|
|
#define VECNUM_MAL_RXDE 14
|
|
#define VECNUM_ETH0 15
|
|
#define VECNUM_ETH1_OFFS 2
|
|
#define VECNUM_EIRQ6 29
|
|
|
|
/*
|
|
* Mask definitions (used for example in 4xx_enet.c)
|
|
*/
|
|
#define UIC_MASK(vec) (0x80000000 >> ((vec) & 0x1f))
|
|
/* UIC_NR won't work for 440GX because of its specific UIC DCR addresses */
|
|
#define UIC_NR(vec) ((vec) >> 5)
|
|
|
|
#endif /* _PPC4xx_UIC_H_ */
|