X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=include%2Fasm-sparc64%2Fprom.h;h=99671ed6625d15a8fa19f2a721ed9eb28f5255ef;hb=b4350861dd6d5668bb9fe18eec4227d30e9131b0;hp=6d1556c0c263307f0cc95995fb04ac00ab2e84cc;hpb=76a9f26c9e40e9c0ed5dc8f0cedd74e733f0088d;p=powerpc.git diff --git a/include/asm-sparc64/prom.h b/include/asm-sparc64/prom.h index 6d1556c0c2..99671ed662 100644 --- a/include/asm-sparc64/prom.h +++ b/include/asm-sparc64/prom.h @@ -25,25 +25,20 @@ typedef u32 phandle; typedef u32 ihandle; -struct interrupt_info { - int line; - int sense; /* +ve/-ve logic, edge or level, etc. */ -}; - struct property { char *name; int length; void *value; struct property *next; + unsigned long _flags; + unsigned int unique_id; }; +struct of_irq_controller; struct device_node { char *name; char *type; phandle node; - phandle linux_phandle; - int n_intrs; - struct interrupt_info *intrs; char *path_component_name; char *full_name; @@ -58,8 +53,24 @@ struct device_node { struct kref kref; 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 */ +#define OF_DYNAMIC 1 /* node and properties were allocated via kmalloc */ + +#define OF_IS_DYNAMIC(x) test_bit(OF_DYNAMIC, &x->_flags) +#define OF_MARK_DYNAMIC(x) set_bit(OF_DYNAMIC, &x->_flags) + +#define OF_BAD_ADDR ((u64)-1) + static inline void set_node_proc_entry(struct device_node *dn, struct proc_dir_entry *de) { dn->pde = de; @@ -88,9 +99,12 @@ extern struct property *of_find_property(struct device_node *np, extern int of_device_is_compatible(struct device_node *device, const char *); extern void *of_get_property(struct device_node *node, const char *name, int *lenp); +extern int of_set_property(struct device_node *node, const char *name, void *val, int len); extern int of_getintprop_default(struct device_node *np, const char *name, int def); +extern int of_n_addr_cells(struct device_node *np); +extern int of_n_size_cells(struct device_node *np); extern void prom_build_devicetree(void);