diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-04-12 15:49:56 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-04-12 15:49:56 -0400 |
| commit | 7e066489726b52bea419085e5b8929e1e89f57a8 (patch) | |
| tree | b144712e5200002b55b45f362ffa1fd53d0389c6 /include/linux | |
| parent | 4abb663b641ee21024906dae45af7de50ebad2d8 (diff) | |
| parent | 6fa6c8e25e95bdc73e92e4c96b8e3299169b616e (diff) | |
Merge tag 'irqdomain-for-linus' of git://git.secretlab.ca/git/linux-2.6
Pull irqdomain bug fixes from Grant Likely:
"This branch fixes a bug in irq_create_mapping() where an error return
from irq_alloc_desc_from() gets ignored.
It also removes irq_virq_count to fix a bug on powerpc where the
irqdomain code does not find irqs allocated above the CONFIG_NR_IRQS
boundary.
The remaining patches get rid of an completely pointless export and
fix some minor bugs in the irqdomain debug output."
* tag 'irqdomain-for-linus' of git://git.secretlab.ca/git/linux-2.6:
irq_domain: Move irq_virq_count into NOMAP revmap
irqdomain: Fix debugfs formatting
irq_domain: correct the debugfs file name
irq: Kill pointless irqd_to_hw export
irq/irq_domain: Quit ignoring error returns from irq_alloc_desc_from().
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/irq.h | 5 | ||||
| -rw-r--r-- | include/linux/irqdomain.h | 12 | ||||
| -rw-r--r-- | include/linux/types.h | 6 |
3 files changed, 15 insertions, 8 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index bff29c58da23..7810406f3d80 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
| @@ -263,6 +263,11 @@ static inline void irqd_clr_chained_irq_inprogress(struct irq_data *d) | |||
| 263 | d->state_use_accessors &= ~IRQD_IRQ_INPROGRESS; | 263 | d->state_use_accessors &= ~IRQD_IRQ_INPROGRESS; |
| 264 | } | 264 | } |
| 265 | 265 | ||
| 266 | static inline irq_hw_number_t irqd_to_hwirq(struct irq_data *d) | ||
| 267 | { | ||
| 268 | return d->hwirq; | ||
| 269 | } | ||
| 270 | |||
| 266 | /** | 271 | /** |
| 267 | * struct irq_chip - hardware interrupt chip descriptor | 272 | * struct irq_chip - hardware interrupt chip descriptor |
| 268 | * | 273 | * |
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h index ead4a4215797..c65740d76e66 100644 --- a/include/linux/irqdomain.h +++ b/include/linux/irqdomain.h | |||
| @@ -42,12 +42,6 @@ struct of_device_id; | |||
| 42 | /* Number of irqs reserved for a legacy isa controller */ | 42 | /* Number of irqs reserved for a legacy isa controller */ |
| 43 | #define NUM_ISA_INTERRUPTS 16 | 43 | #define NUM_ISA_INTERRUPTS 16 |
| 44 | 44 | ||
| 45 | /* This type is the placeholder for a hardware interrupt number. It has to | ||
| 46 | * be big enough to enclose whatever representation is used by a given | ||
| 47 | * platform. | ||
| 48 | */ | ||
| 49 | typedef unsigned long irq_hw_number_t; | ||
| 50 | |||
| 51 | /** | 45 | /** |
| 52 | * struct irq_domain_ops - Methods for irq_domain objects | 46 | * struct irq_domain_ops - Methods for irq_domain objects |
| 53 | * @match: Match an interrupt controller device node to a host, returns | 47 | * @match: Match an interrupt controller device node to a host, returns |
| @@ -104,6 +98,9 @@ struct irq_domain { | |||
| 104 | unsigned int size; | 98 | unsigned int size; |
| 105 | unsigned int *revmap; | 99 | unsigned int *revmap; |
| 106 | } linear; | 100 | } linear; |
| 101 | struct { | ||
| 102 | unsigned int max_irq; | ||
| 103 | } nomap; | ||
| 107 | struct radix_tree_root tree; | 104 | struct radix_tree_root tree; |
| 108 | } revmap_data; | 105 | } revmap_data; |
| 109 | const struct irq_domain_ops *ops; | 106 | const struct irq_domain_ops *ops; |
| @@ -126,6 +123,7 @@ struct irq_domain *irq_domain_add_linear(struct device_node *of_node, | |||
| 126 | const struct irq_domain_ops *ops, | 123 | const struct irq_domain_ops *ops, |
| 127 | void *host_data); | 124 | void *host_data); |
| 128 | struct irq_domain *irq_domain_add_nomap(struct device_node *of_node, | 125 | struct irq_domain *irq_domain_add_nomap(struct device_node *of_node, |
| 126 | unsigned int max_irq, | ||
| 129 | const struct irq_domain_ops *ops, | 127 | const struct irq_domain_ops *ops, |
| 130 | void *host_data); | 128 | void *host_data); |
| 131 | struct irq_domain *irq_domain_add_tree(struct device_node *of_node, | 129 | struct irq_domain *irq_domain_add_tree(struct device_node *of_node, |
| @@ -134,7 +132,6 @@ struct irq_domain *irq_domain_add_tree(struct device_node *of_node, | |||
| 134 | 132 | ||
| 135 | extern struct irq_domain *irq_find_host(struct device_node *node); | 133 | extern struct irq_domain *irq_find_host(struct device_node *node); |
| 136 | extern void irq_set_default_host(struct irq_domain *host); | 134 | extern void irq_set_default_host(struct irq_domain *host); |
| 137 | extern void irq_set_virq_count(unsigned int count); | ||
| 138 | 135 | ||
| 139 | static inline struct irq_domain *irq_domain_add_legacy_isa( | 136 | static inline struct irq_domain *irq_domain_add_legacy_isa( |
| 140 | struct device_node *of_node, | 137 | struct device_node *of_node, |
| @@ -146,7 +143,6 @@ static inline struct irq_domain *irq_domain_add_legacy_isa( | |||
| 146 | } | 143 | } |
| 147 | extern struct irq_domain *irq_find_host(struct device_node *node); | 144 | extern struct irq_domain *irq_find_host(struct device_node *node); |
| 148 | extern void irq_set_default_host(struct irq_domain *host); | 145 | extern void irq_set_default_host(struct irq_domain *host); |
| 149 | extern void irq_set_virq_count(unsigned int count); | ||
| 150 | 146 | ||
| 151 | 147 | ||
| 152 | extern unsigned int irq_create_mapping(struct irq_domain *host, | 148 | extern unsigned int irq_create_mapping(struct irq_domain *host, |
diff --git a/include/linux/types.h b/include/linux/types.h index e5fa50345516..7f480db60231 100644 --- a/include/linux/types.h +++ b/include/linux/types.h | |||
| @@ -210,6 +210,12 @@ typedef u32 phys_addr_t; | |||
| 210 | 210 | ||
| 211 | typedef phys_addr_t resource_size_t; | 211 | typedef phys_addr_t resource_size_t; |
| 212 | 212 | ||
| 213 | /* | ||
| 214 | * This type is the placeholder for a hardware interrupt number. It has to be | ||
| 215 | * big enough to enclose whatever representation is used by a given platform. | ||
| 216 | */ | ||
| 217 | typedef unsigned long irq_hw_number_t; | ||
| 218 | |||
| 213 | typedef struct { | 219 | typedef struct { |
| 214 | int counter; | 220 | int counter; |
| 215 | } atomic_t; | 221 | } atomic_t; |
