aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-sparc64/prom.h
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2006-06-29 15:07:37 -0700
committerDavid S. Miller <davem@sunset.davemloft.net>2006-06-29 16:37:38 -0700
commit2b1e59787198e75fb2ffb3bb4fb247da1c55ac12 (patch)
tree96d74048849b310135e0c79f663b16c52186caa5 /include/asm-sparc64/prom.h
parent[SPARC64]: Fix typo in clock_probe(). (diff)
downloadlinux-dev-2b1e59787198e75fb2ffb3bb4fb247da1c55ac12.tar.xz
linux-dev-2b1e59787198e75fb2ffb3bb4fb247da1c55ac12.zip
[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/prom.h')
-rw-r--r--include/asm-sparc64/prom.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/asm-sparc64/prom.h b/include/asm-sparc64/prom.h
index aad16c2aa5e8..99671ed6625d 100644
--- a/include/asm-sparc64/prom.h
+++ b/include/asm-sparc64/prom.h
@@ -34,6 +34,7 @@ struct property {
unsigned int unique_id;
};
+struct of_irq_controller;
struct device_node {
char *name;
char *type;
@@ -53,6 +54,13 @@ struct device_node {
unsigned long _flags;
void *data;
unsigned int unique_id;
+
+ struct of_irq_controller *irq_trans;
+};
+
+struct of_irq_controller {
+ unsigned int (*irq_build)(struct device_node *, unsigned int, void *);
+ void *data;
};
/* flag descriptions */