diff options
Diffstat (limited to 'include/asm-powerpc/prom.h')
-rw-r--r-- | include/asm-powerpc/prom.h | 79 |
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 | |||
65 | typedef u32 phandle; | 65 | typedef u32 phandle; |
66 | typedef u32 ihandle; | 66 | typedef u32 ihandle; |
67 | 67 | ||
68 | struct address_range { | ||
69 | unsigned long space; | ||
70 | unsigned long address; | ||
71 | unsigned long size; | ||
72 | }; | ||
73 | |||
74 | struct interrupt_info { | 68 | struct 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 | ||
79 | struct pci_address { | ||
80 | u32 a_hi; | ||
81 | u32 a_mid; | ||
82 | u32 a_lo; | ||
83 | }; | ||
84 | |||
85 | struct isa_address { | ||
86 | u32 a_hi; | ||
87 | u32 a_lo; | ||
88 | }; | ||
89 | |||
90 | struct isa_range { | ||
91 | struct isa_address isa_addr; | ||
92 | struct pci_address pci_addr; | ||
93 | unsigned int size; | ||
94 | }; | ||
95 | |||
96 | struct reg_property { | ||
97 | unsigned long address; | ||
98 | unsigned long size; | ||
99 | }; | ||
100 | |||
101 | struct reg_property32 { | ||
102 | unsigned int address; | ||
103 | unsigned int size; | ||
104 | }; | ||
105 | |||
106 | struct reg_property64 { | ||
107 | u64 address; | ||
108 | u64 size; | ||
109 | }; | ||
110 | |||
111 | struct property { | 73 | struct 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); | |||
175 | extern struct device_node *of_get_parent(const struct device_node *node); | 136 | extern struct device_node *of_get_parent(const struct device_node *node); |
176 | extern struct device_node *of_get_next_child(const struct device_node *node, | 137 | extern struct device_node *of_get_next_child(const struct device_node *node, |
177 | struct device_node *prev); | 138 | struct device_node *prev); |
139 | extern struct property *of_find_property(struct device_node *np, | ||
140 | const char *name, | ||
141 | int *lenp); | ||
178 | extern struct device_node *of_node_get(struct device_node *node); | 142 | extern struct device_node *of_node_get(struct device_node *node); |
179 | extern void of_node_put(struct device_node *node); | 143 | extern void of_node_put(struct device_node *node); |
180 | 144 | ||
@@ -204,6 +168,10 @@ extern int prom_n_size_cells(struct device_node* np); | |||
204 | extern int prom_n_intr_cells(struct device_node* np); | 168 | extern int prom_n_intr_cells(struct device_node* np); |
205 | extern void prom_get_irq_senses(unsigned char *senses, int off, int max); | 169 | extern void prom_get_irq_senses(unsigned char *senses, int off, int max); |
206 | extern int prom_add_property(struct device_node* np, struct property* prop); | 170 | extern int prom_add_property(struct device_node* np, struct property* prop); |
171 | extern int prom_remove_property(struct device_node *np, struct property *prop); | ||
172 | extern 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); |
224 | extern int release_OF_resource(struct device_node* node, int index); | 192 | extern 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) | ||
203 | extern 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 | */ | ||
209 | extern u32 *of_get_address(struct device_node *dev, int index, | ||
210 | u64 *size, unsigned int *flags); | ||
211 | extern 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 | */ | ||
220 | extern int of_address_to_resource(struct device_node *dev, int index, | ||
221 | struct resource *r); | ||
222 | extern 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 */ |