aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-powerpc/prom.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-powerpc/prom.h')
-rw-r--r--include/asm-powerpc/prom.h79
1 files changed, 39 insertions, 40 deletions
diff --git a/include/asm-powerpc/prom.h b/include/asm-powerpc/prom.h
index f999df1c5c90..5b2bd4eefb01 100644
--- a/include/asm-powerpc/prom.h
+++ b/include/asm-powerpc/prom.h
@@ -65,49 +65,11 @@ struct boot_param_header
65typedef u32 phandle; 65typedef u32 phandle;
66typedef u32 ihandle; 66typedef u32 ihandle;
67 67
68struct address_range {
69 unsigned long space;
70 unsigned long address;
71 unsigned long size;
72};
73
74struct interrupt_info { 68struct interrupt_info {
75 int line; 69 int line;
76 int sense; /* +ve/-ve logic, edge or level, etc. */ 70 int sense; /* +ve/-ve logic, edge or level, etc. */
77}; 71};
78 72
79struct pci_address {
80 u32 a_hi;
81 u32 a_mid;
82 u32 a_lo;
83};
84
85struct isa_address {
86 u32 a_hi;
87 u32 a_lo;
88};
89
90struct isa_range {
91 struct isa_address isa_addr;
92 struct pci_address pci_addr;
93 unsigned int size;
94};
95
96struct reg_property {
97 unsigned long address;
98 unsigned long size;
99};
100
101struct reg_property32 {
102 unsigned int address;
103 unsigned int size;
104};
105
106struct reg_property64 {
107 u64 address;
108 u64 size;
109};
110
111struct property { 73struct property {
112 char *name; 74 char *name;
113 int length; 75 int length;
@@ -120,13 +82,12 @@ struct device_node {
120 char *type; 82 char *type;
121 phandle node; 83 phandle node;
122 phandle linux_phandle; 84 phandle linux_phandle;
123 int n_addrs;
124 struct address_range *addrs;
125 int n_intrs; 85 int n_intrs;
126 struct interrupt_info *intrs; 86 struct interrupt_info *intrs;
127 char *full_name; 87 char *full_name;
128 88
129 struct property *properties; 89 struct property *properties;
90 struct property *deadprops; /* removed properties */
130 struct device_node *parent; 91 struct device_node *parent;
131 struct device_node *child; 92 struct device_node *child;
132 struct device_node *sibling; 93 struct device_node *sibling;
@@ -175,6 +136,9 @@ extern struct device_node *of_find_all_nodes(struct device_node *prev);
175extern struct device_node *of_get_parent(const struct device_node *node); 136extern struct device_node *of_get_parent(const struct device_node *node);
176extern struct device_node *of_get_next_child(const struct device_node *node, 137extern struct device_node *of_get_next_child(const struct device_node *node,
177 struct device_node *prev); 138 struct device_node *prev);
139extern struct property *of_find_property(struct device_node *np,
140 const char *name,
141 int *lenp);
178extern struct device_node *of_node_get(struct device_node *node); 142extern struct device_node *of_node_get(struct device_node *node);
179extern void of_node_put(struct device_node *node); 143extern void of_node_put(struct device_node *node);
180 144
@@ -204,6 +168,10 @@ extern int prom_n_size_cells(struct device_node* np);
204extern int prom_n_intr_cells(struct device_node* np); 168extern int prom_n_intr_cells(struct device_node* np);
205extern void prom_get_irq_senses(unsigned char *senses, int off, int max); 169extern void prom_get_irq_senses(unsigned char *senses, int off, int max);
206extern int prom_add_property(struct device_node* np, struct property* prop); 170extern int prom_add_property(struct device_node* np, struct property* prop);
171extern int prom_remove_property(struct device_node *np, struct property *prop);
172extern int prom_update_property(struct device_node *np,
173 struct property *newprop,
174 struct property *oldprop);
207 175
208#ifdef CONFIG_PPC32 176#ifdef CONFIG_PPC32
209/* 177/*
@@ -223,5 +191,36 @@ extern struct resource *request_OF_resource(struct device_node* node,
223 int index, const char* name_postfix); 191 int index, const char* name_postfix);
224extern int release_OF_resource(struct device_node* node, int index); 192extern int release_OF_resource(struct device_node* node, int index);
225 193
194
195/*
196 * OF address retreival & translation
197 */
198
199
200/* Translate an OF address block into a CPU physical address
201 */
202#define OF_BAD_ADDR ((u64)-1)
203extern u64 of_translate_address(struct device_node *np, u32 *addr);
204
205/* Extract an address from a device, returns the region size and
206 * the address space flags too. The PCI version uses a BAR number
207 * instead of an absolute index
208 */
209extern u32 *of_get_address(struct device_node *dev, int index,
210 u64 *size, unsigned int *flags);
211extern u32 *of_get_pci_address(struct device_node *dev, int bar_no,
212 u64 *size, unsigned int *flags);
213
214/* Get an address as a resource. Note that if your address is
215 * a PIO address, the conversion will fail if the physical address
216 * can't be internally converted to an IO token with
217 * pci_address_to_pio(), that is because it's either called to early
218 * or it can't be matched to any host bridge IO space
219 */
220extern int of_address_to_resource(struct device_node *dev, int index,
221 struct resource *r);
222extern int of_pci_address_to_resource(struct device_node *dev, int bar,
223 struct resource *r);
224
226#endif /* __KERNEL__ */ 225#endif /* __KERNEL__ */
227#endif /* _POWERPC_PROM_H */ 226#endif /* _POWERPC_PROM_H */