diff options
author | David S. Miller <davem@davemloft.net> | 2006-06-29 18:07:37 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-06-29 19:37:38 -0400 |
commit | 2b1e59787198e75fb2ffb3bb4fb247da1c55ac12 (patch) | |
tree | 96d74048849b310135e0c79f663b16c52186caa5 /include/asm-sparc64/of_device.h | |
parent | c3a8b85f5ac2c21f4ef75e87bfe55ee7a753ffcf (diff) |
[SPARC64]: of_device layer IRQ resolution
Do IRQ determination generically by parsing the PROM properties,
and using IRQ controller drivers for final resolution.
One immediate positive effect is that all of the IRQ frobbing
in the EBUS, ISA, and PCI controller layers has been eliminated.
We just look up the of_device and use the properly computed
value.
The PCI controller irq_build() routines are gone and no longer
used. Unfortunately sbus_build_irq() has to remain as there is
a direct reference to this in the sunzilog driver. That can be
killed off once the sparc32 side of this is written and the
sunzilog driver is transformed into an "of" bus driver.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/asm-sparc64/of_device.h')
-rw-r--r-- | include/asm-sparc64/of_device.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/include/asm-sparc64/of_device.h b/include/asm-sparc64/of_device.h index 37c5856fae12..a62c7b997d66 100644 --- a/include/asm-sparc64/of_device.h +++ b/include/asm-sparc64/of_device.h | |||
@@ -22,7 +22,8 @@ struct of_device | |||
22 | struct device_node *node; | 22 | struct device_node *node; |
23 | struct device dev; | 23 | struct device dev; |
24 | struct resource resource[PROMREG_MAX]; | 24 | struct resource resource[PROMREG_MAX]; |
25 | unsigned int irq; | 25 | unsigned int irqs[PROMINTR_MAX]; |
26 | int num_irqs; | ||
26 | 27 | ||
27 | void *sysdata; | 28 | void *sysdata; |
28 | 29 | ||
@@ -35,6 +36,8 @@ struct of_device | |||
35 | extern void __iomem *of_ioremap(struct resource *res, unsigned long offset, unsigned long size, char *name); | 36 | extern void __iomem *of_ioremap(struct resource *res, unsigned long offset, unsigned long size, char *name); |
36 | extern void of_iounmap(void __iomem *base, unsigned long size); | 37 | extern void of_iounmap(void __iomem *base, unsigned long size); |
37 | 38 | ||
39 | extern struct of_device *of_find_device_by_node(struct device_node *); | ||
40 | |||
38 | extern const struct of_device_id *of_match_device( | 41 | extern const struct of_device_id *of_match_device( |
39 | const struct of_device_id *matches, const struct of_device *dev); | 42 | const struct of_device_id *matches, const struct of_device *dev); |
40 | 43 | ||