diff options
Diffstat (limited to 'arch/microblaze/include/asm/prom.h')
-rw-r--r-- | arch/microblaze/include/asm/prom.h | 135 |
1 files changed, 3 insertions, 132 deletions
diff --git a/arch/microblaze/include/asm/prom.h b/arch/microblaze/include/asm/prom.h index 37e6f305a68e..ef3ec1d6ceb3 100644 --- a/arch/microblaze/include/asm/prom.h +++ b/arch/microblaze/include/asm/prom.h | |||
@@ -12,23 +12,15 @@ | |||
12 | * 2 of the License, or (at your option) any later version. | 12 | * 2 of the License, or (at your option) any later version. |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/of.h> /* linux/of.h gets to determine #include ordering */ | ||
16 | |||
15 | #ifndef _ASM_MICROBLAZE_PROM_H | 17 | #ifndef _ASM_MICROBLAZE_PROM_H |
16 | #define _ASM_MICROBLAZE_PROM_H | 18 | #define _ASM_MICROBLAZE_PROM_H |
17 | #ifdef __KERNEL__ | 19 | #ifdef __KERNEL__ |
18 | |||
19 | /* Definitions used by the flattened device tree */ | ||
20 | #define OF_DT_HEADER 0xd00dfeed /* marker */ | ||
21 | #define OF_DT_BEGIN_NODE 0x1 /* Start of node, full name */ | ||
22 | #define OF_DT_END_NODE 0x2 /* End node */ | ||
23 | #define OF_DT_PROP 0x3 /* Property: name off, size, content */ | ||
24 | #define OF_DT_NOP 0x4 /* nop */ | ||
25 | #define OF_DT_END 0x9 | ||
26 | |||
27 | #define OF_DT_VERSION 0x10 | ||
28 | |||
29 | #ifndef __ASSEMBLY__ | 20 | #ifndef __ASSEMBLY__ |
30 | 21 | ||
31 | #include <linux/types.h> | 22 | #include <linux/types.h> |
23 | #include <linux/of_fdt.h> | ||
32 | #include <linux/proc_fs.h> | 24 | #include <linux/proc_fs.h> |
33 | #include <linux/platform_device.h> | 25 | #include <linux/platform_device.h> |
34 | #include <asm/irq.h> | 26 | #include <asm/irq.h> |
@@ -41,122 +33,19 @@ | |||
41 | #define of_prop_cmp(s1, s2) strcmp((s1), (s2)) | 33 | #define of_prop_cmp(s1, s2) strcmp((s1), (s2)) |
42 | #define of_node_cmp(s1, s2) strcasecmp((s1), (s2)) | 34 | #define of_node_cmp(s1, s2) strcasecmp((s1), (s2)) |
43 | 35 | ||
44 | /* | ||
45 | * This is what gets passed to the kernel by prom_init or kexec | ||
46 | * | ||
47 | * The dt struct contains the device tree structure, full pathes and | ||
48 | * property contents. The dt strings contain a separate block with just | ||
49 | * the strings for the property names, and is fully page aligned and | ||
50 | * self contained in a page, so that it can be kept around by the kernel, | ||
51 | * each property name appears only once in this page (cheap compression) | ||
52 | * | ||
53 | * the mem_rsvmap contains a map of reserved ranges of physical memory, | ||
54 | * passing it here instead of in the device-tree itself greatly simplifies | ||
55 | * the job of everybody. It's just a list of u64 pairs (base/size) that | ||
56 | * ends when size is 0 | ||
57 | */ | ||
58 | struct boot_param_header { | ||
59 | u32 magic; /* magic word OF_DT_HEADER */ | ||
60 | u32 totalsize; /* total size of DT block */ | ||
61 | u32 off_dt_struct; /* offset to structure */ | ||
62 | u32 off_dt_strings; /* offset to strings */ | ||
63 | u32 off_mem_rsvmap; /* offset to memory reserve map */ | ||
64 | u32 version; /* format version */ | ||
65 | u32 last_comp_version; /* last compatible version */ | ||
66 | /* version 2 fields below */ | ||
67 | u32 boot_cpuid_phys; /* Physical CPU id we're booting on */ | ||
68 | /* version 3 fields below */ | ||
69 | u32 dt_strings_size; /* size of the DT strings block */ | ||
70 | /* version 17 fields below */ | ||
71 | u32 dt_struct_size; /* size of the DT structure block */ | ||
72 | }; | ||
73 | |||
74 | typedef u32 phandle; | ||
75 | typedef u32 ihandle; | ||
76 | |||
77 | struct property { | ||
78 | char *name; | ||
79 | int length; | ||
80 | void *value; | ||
81 | struct property *next; | ||
82 | }; | ||
83 | |||
84 | struct device_node { | ||
85 | const char *name; | ||
86 | const char *type; | ||
87 | phandle node; | ||
88 | phandle linux_phandle; | ||
89 | char *full_name; | ||
90 | |||
91 | struct property *properties; | ||
92 | struct property *deadprops; /* removed properties */ | ||
93 | struct device_node *parent; | ||
94 | struct device_node *child; | ||
95 | struct device_node *sibling; | ||
96 | struct device_node *next; /* next device of same type */ | ||
97 | struct device_node *allnext; /* next in list of all nodes */ | ||
98 | struct proc_dir_entry *pde; /* this node's proc directory */ | ||
99 | struct kref kref; | ||
100 | unsigned long _flags; | ||
101 | void *data; | ||
102 | }; | ||
103 | |||
104 | extern struct device_node *of_chosen; | 36 | extern struct device_node *of_chosen; |
105 | 37 | ||
106 | static inline int of_node_check_flag(struct device_node *n, unsigned long flag) | ||
107 | { | ||
108 | return test_bit(flag, &n->_flags); | ||
109 | } | ||
110 | |||
111 | static inline void of_node_set_flag(struct device_node *n, unsigned long flag) | ||
112 | { | ||
113 | set_bit(flag, &n->_flags); | ||
114 | } | ||
115 | |||
116 | #define HAVE_ARCH_DEVTREE_FIXUPS | 38 | #define HAVE_ARCH_DEVTREE_FIXUPS |
117 | 39 | ||
118 | static inline void set_node_proc_entry(struct device_node *dn, | ||
119 | struct proc_dir_entry *de) | ||
120 | { | ||
121 | dn->pde = de; | ||
122 | } | ||
123 | |||
124 | extern struct device_node *allnodes; /* temporary while merging */ | 40 | extern struct device_node *allnodes; /* temporary while merging */ |
125 | extern rwlock_t devtree_lock; /* temporary while merging */ | 41 | extern rwlock_t devtree_lock; /* temporary while merging */ |
126 | 42 | ||
127 | extern struct device_node *of_find_all_nodes(struct device_node *prev); | ||
128 | extern struct device_node *of_node_get(struct device_node *node); | ||
129 | extern void of_node_put(struct device_node *node); | ||
130 | |||
131 | /* For scanning the flat device-tree at boot time */ | ||
132 | extern int __init of_scan_flat_dt(int (*it)(unsigned long node, | ||
133 | const char *uname, int depth, | ||
134 | void *data), | ||
135 | void *data); | ||
136 | extern void *__init of_get_flat_dt_prop(unsigned long node, const char *name, | ||
137 | unsigned long *size); | ||
138 | extern int __init | ||
139 | of_flat_dt_is_compatible(unsigned long node, const char *name); | ||
140 | extern unsigned long __init of_get_flat_dt_root(void); | ||
141 | |||
142 | /* For updating the device tree at runtime */ | 43 | /* For updating the device tree at runtime */ |
143 | extern void of_attach_node(struct device_node *); | 44 | extern void of_attach_node(struct device_node *); |
144 | extern void of_detach_node(struct device_node *); | 45 | extern void of_detach_node(struct device_node *); |
145 | 46 | ||
146 | /* Other Prototypes */ | 47 | /* Other Prototypes */ |
147 | extern void finish_device_tree(void); | ||
148 | extern void unflatten_device_tree(void); | ||
149 | extern int early_uartlite_console(void); | 48 | extern int early_uartlite_console(void); |
150 | extern void early_init_devtree(void *); | ||
151 | extern int machine_is_compatible(const char *compat); | ||
152 | extern void print_properties(struct device_node *node); | ||
153 | extern int prom_n_intr_cells(struct device_node *np); | ||
154 | extern void prom_get_irq_senses(unsigned char *senses, int off, int max); | ||
155 | extern int prom_add_property(struct device_node *np, struct property *prop); | ||
156 | extern int prom_remove_property(struct device_node *np, struct property *prop); | ||
157 | extern int prom_update_property(struct device_node *np, | ||
158 | struct property *newprop, | ||
159 | struct property *oldprop); | ||
160 | 49 | ||
161 | extern struct resource *request_OF_resource(struct device_node *node, | 50 | extern struct resource *request_OF_resource(struct device_node *node, |
162 | int index, const char *name_postfix); | 51 | int index, const char *name_postfix); |
@@ -166,18 +55,6 @@ extern int release_OF_resource(struct device_node *node, int index); | |||
166 | * OF address retreival & translation | 55 | * OF address retreival & translation |
167 | */ | 56 | */ |
168 | 57 | ||
169 | /* Helper to read a big number; size is in cells (not bytes) */ | ||
170 | static inline u64 of_read_number(const u32 *cell, int size) | ||
171 | { | ||
172 | u64 r = 0; | ||
173 | while (size--) | ||
174 | r = (r << 32) | *(cell++); | ||
175 | return r; | ||
176 | } | ||
177 | |||
178 | /* Like of_read_number, but we want an unsigned long result */ | ||
179 | #define of_read_ulong(cell, size) of_read_number(cell, size) | ||
180 | |||
181 | /* Translate an OF address block into a CPU physical address | 58 | /* Translate an OF address block into a CPU physical address |
182 | */ | 59 | */ |
183 | extern u64 of_translate_address(struct device_node *np, const u32 *addr); | 60 | extern u64 of_translate_address(struct device_node *np, const u32 *addr); |
@@ -305,12 +182,6 @@ extern int of_irq_to_resource(struct device_node *dev, int index, | |||
305 | */ | 182 | */ |
306 | extern void __iomem *of_iomap(struct device_node *device, int index); | 183 | extern void __iomem *of_iomap(struct device_node *device, int index); |
307 | 184 | ||
308 | /* | ||
309 | * NB: This is here while we transition from using asm/prom.h | ||
310 | * to linux/of.h | ||
311 | */ | ||
312 | #include <linux/of.h> | ||
313 | |||
314 | #endif /* __ASSEMBLY__ */ | 185 | #endif /* __ASSEMBLY__ */ |
315 | #endif /* __KERNEL__ */ | 186 | #endif /* __KERNEL__ */ |
316 | #endif /* _ASM_MICROBLAZE_PROM_H */ | 187 | #endif /* _ASM_MICROBLAZE_PROM_H */ |