~ubuntu-branches/debian/wheezy/linux-2.6/wheezy

« back to all changes in this revision

Viewing changes to include/linux/of_irq.h

  • Committer: Bazaar Package Importer
  • Author(s): Ben Hutchings, Ben Hutchings, Aurelien Jarno, Martin Michlmayr
  • Date: 2011-04-06 13:53:30 UTC
  • mfrom: (43.1.5 sid)
  • Revision ID: james.westby@ubuntu.com-20110406135330-wjufxhd0tvn3zx4z
Tags: 2.6.38-3
[ Ben Hutchings ]
* [ppc64] Add to linux-tools package architectures (Closes: #620124)
* [amd64] Save cr4 to mmu_cr4_features at boot time (Closes: #620284)
* appletalk: Fix bugs introduced when removing use of BKL
* ALSA: Fix yet another race in disconnection
* cciss: Fix lost command issue
* ath9k: Fix kernel panic in AR2427
* ses: Avoid kernel panic when lun 0 is not mapped
* PCI/ACPI: Report ASPM support to BIOS if not disabled from command line

[ Aurelien Jarno ]
* rtlwifi: fix build when PCI is not enabled.

[ Martin Michlmayr ]
* rtlwifi: Eliminate udelay calls with too large values (Closes: #620204)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef __OF_IRQ_H
 
2
#define __OF_IRQ_H
 
3
 
 
4
#if defined(CONFIG_OF)
 
5
struct of_irq;
 
6
#include <linux/types.h>
 
7
#include <linux/errno.h>
 
8
#include <linux/irq.h>
 
9
#include <linux/ioport.h>
 
10
#include <linux/of.h>
 
11
 
 
12
/*
 
13
 * irq_of_parse_and_map() is used ba all OF enabled platforms; but SPARC
 
14
 * implements it differently.  However, the prototype is the same for all,
 
15
 * so declare it here regardless of the CONFIG_OF_IRQ setting.
 
16
 */
 
17
extern unsigned int irq_of_parse_and_map(struct device_node *node, int index);
 
18
 
 
19
#if defined(CONFIG_OF_IRQ)
 
20
/**
 
21
 * of_irq - container for device_node/irq_specifier pair for an irq controller
 
22
 * @controller: pointer to interrupt controller device tree node
 
23
 * @size: size of interrupt specifier
 
24
 * @specifier: array of cells @size long specifing the specific interrupt
 
25
 *
 
26
 * This structure is returned when an interrupt is mapped. The controller
 
27
 * field needs to be put() after use
 
28
 */
 
29
#define OF_MAX_IRQ_SPEC         4 /* We handle specifiers of at most 4 cells */
 
30
struct of_irq {
 
31
        struct device_node *controller; /* Interrupt controller node */
 
32
        u32 size; /* Specifier size */
 
33
        u32 specifier[OF_MAX_IRQ_SPEC]; /* Specifier copy */
 
34
};
 
35
 
 
36
/*
 
37
 * Workarounds only applied to 32bit powermac machines
 
38
 */
 
39
#define OF_IMAP_OLDWORLD_MAC    0x00000001
 
40
#define OF_IMAP_NO_PHANDLE      0x00000002
 
41
 
 
42
#if defined(CONFIG_PPC32) && defined(CONFIG_PPC_PMAC)
 
43
extern unsigned int of_irq_workarounds;
 
44
extern struct device_node *of_irq_dflt_pic;
 
45
extern int of_irq_map_oldworld(struct device_node *device, int index,
 
46
                               struct of_irq *out_irq);
 
47
#else /* CONFIG_PPC32 && CONFIG_PPC_PMAC */
 
48
#define of_irq_workarounds (0)
 
49
#define of_irq_dflt_pic (NULL)
 
50
static inline int of_irq_map_oldworld(struct device_node *device, int index,
 
51
                                      struct of_irq *out_irq)
 
52
{
 
53
        return -EINVAL;
 
54
}
 
55
#endif /* CONFIG_PPC32 && CONFIG_PPC_PMAC */
 
56
 
 
57
 
 
58
extern int of_irq_map_raw(struct device_node *parent, const u32 *intspec,
 
59
                          u32 ointsize, const u32 *addr,
 
60
                          struct of_irq *out_irq);
 
61
extern int of_irq_map_one(struct device_node *device, int index,
 
62
                          struct of_irq *out_irq);
 
63
extern unsigned int irq_create_of_mapping(struct device_node *controller,
 
64
                                          const u32 *intspec,
 
65
                                          unsigned int intsize);
 
66
extern int of_irq_to_resource(struct device_node *dev, int index,
 
67
                              struct resource *r);
 
68
extern int of_irq_count(struct device_node *dev);
 
69
extern int of_irq_to_resource_table(struct device_node *dev,
 
70
                struct resource *res, int nr_irqs);
 
71
 
 
72
#endif /* CONFIG_OF_IRQ */
 
73
#endif /* CONFIG_OF */
 
74
#endif /* __OF_IRQ_H */