vserver 2.0 rc7
[linux-2.6.git] / include / asm-ppc / ppc4xx_pic.h
1 /*
2  * include/asm-ppc/ppc4xx_pic.h
3  *
4  * Interrupt controller driver for PowerPC 4xx-based processors.
5  *
6  * Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
7  *
8  * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
9  * Copyright (c) 2004 Zultys Technologies
10  *
11  * This program is free software; you can redistribute  it and/or modify it
12  * under  the terms of  the GNU General  Public License as published by the
13  * Free Software Foundation;  either version 2 of the  License, or (at your
14  * option) any later version.
15  */
16
17 #ifndef __PPC4XX_PIC_H__
18 #define __PPC4XX_PIC_H__
19
20 #include <linux/config.h>
21 #include <linux/types.h>
22 #include <linux/irq.h>
23
24 /* "Fixed" UIC settings (they are chip, not board specific),
25  * e.g. polarity/triggerring for internal interrupt sources.
26  *
27  * Platform port should provide NR_UICS-sized array named ppc4xx_core_uic_cfg
28  * with these "fixed" settings: .polarity contains exact value which will
29  * be written (masked with "ext_irq_mask") into UICx_PR register,
30  * .triggering - to UICx_TR.
31  *
32  * Settings for external IRQs can be specified separately by the
33  * board support code. In this case properly sized array of unsigned
34  * char named ppc4xx_uic_ext_irq_cfg should be filled with correct
35  * values using IRQ_SENSE_XXXXX and IRQ_POLARITY_XXXXXXX defines.
36  *
37  * If these arrays aren't provided, UIC initialization code keeps firmware
38  * configuration. Also, ppc4xx_uic_ext_irq_cfg implies ppc4xx_core_uic_cfg
39  * is defined.
40  *
41  * Both ppc4xx_core_uic_cfg and ppc4xx_uic_ext_irq_cfg are declared as
42  * "weak" symbols in ppc4xx_pic.c
43  *
44  */
45 struct ppc4xx_uic_settings {
46         u32 polarity;
47         u32 triggering;
48         u32 ext_irq_mask;
49 };
50
51 extern void ppc4xx_pic_init(void);
52
53 #endif                          /* __PPC4XX_PIC_H__ */