KEYS: Make request_key() and co fundamentally asynchronous
[linux-2.6] / 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/types.h>
21 #include <linux/irq.h>
22
23 /* "Fixed" UIC settings (they are chip, not board specific),
24  * e.g. polarity/triggerring for internal interrupt sources.
25  *
26  * Platform port should provide NR_UICS-sized array named ppc4xx_core_uic_cfg
27  * with these "fixed" settings: .polarity contains exact value which will
28  * be written (masked with "ext_irq_mask") into UICx_PR register,
29  * .triggering - to UICx_TR.
30  *
31  * Settings for external IRQs can be specified separately by the
32  * board support code. In this case properly sized array of unsigned
33  * char named ppc4xx_uic_ext_irq_cfg should be filled with correct
34  * values using IRQ_SENSE_XXXXX and IRQ_POLARITY_XXXXXXX defines.
35  *
36  * If these arrays aren't provided, UIC initialization code keeps firmware
37  * configuration. Also, ppc4xx_uic_ext_irq_cfg implies ppc4xx_core_uic_cfg
38  * is defined.
39  *
40  * Both ppc4xx_core_uic_cfg and ppc4xx_uic_ext_irq_cfg are declared as
41  * "weak" symbols in ppc4xx_pic.c
42  *
43  */
44 struct ppc4xx_uic_settings {
45         u32 polarity;
46         u32 triggering;
47         u32 ext_irq_mask;
48 };
49
50 extern void ppc4xx_pic_init(void);
51
52 #endif                          /* __PPC4XX_PIC_H__ */