diff options
Diffstat (limited to 'arch/powerpc/boot/oflib.c')
-rw-r--r-- | arch/powerpc/boot/oflib.c | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/arch/powerpc/boot/oflib.c b/arch/powerpc/boot/oflib.c index e9b95d8ae7ff..95b8fd69a403 100644 --- a/arch/powerpc/boot/oflib.c +++ b/arch/powerpc/boot/oflib.c | |||
@@ -110,25 +110,25 @@ static int check_of_version(void) | |||
110 | phandle oprom, chosen; | 110 | phandle oprom, chosen; |
111 | char version[64]; | 111 | char version[64]; |
112 | 112 | ||
113 | oprom = finddevice("/openprom"); | 113 | oprom = of_finddevice("/openprom"); |
114 | if (oprom == (phandle) -1) | 114 | if (oprom == (phandle) -1) |
115 | return 0; | 115 | return 0; |
116 | if (getprop(oprom, "model", version, sizeof(version)) <= 0) | 116 | if (of_getprop(oprom, "model", version, sizeof(version)) <= 0) |
117 | return 0; | 117 | return 0; |
118 | version[sizeof(version)-1] = 0; | 118 | version[sizeof(version)-1] = 0; |
119 | printf("OF version = '%s'\r\n", version); | 119 | printf("OF version = '%s'\r\n", version); |
120 | if (!string_match(version, "Open Firmware, 1.") | 120 | if (!string_match(version, "Open Firmware, 1.") |
121 | && !string_match(version, "FirmWorks,3.")) | 121 | && !string_match(version, "FirmWorks,3.")) |
122 | return 0; | 122 | return 0; |
123 | chosen = finddevice("/chosen"); | 123 | chosen = of_finddevice("/chosen"); |
124 | if (chosen == (phandle) -1) { | 124 | if (chosen == (phandle) -1) { |
125 | chosen = finddevice("/chosen@0"); | 125 | chosen = of_finddevice("/chosen@0"); |
126 | if (chosen == (phandle) -1) { | 126 | if (chosen == (phandle) -1) { |
127 | printf("no chosen\n"); | 127 | printf("no chosen\n"); |
128 | return 0; | 128 | return 0; |
129 | } | 129 | } |
130 | } | 130 | } |
131 | if (getprop(chosen, "mmu", &chosen_mmu, sizeof(chosen_mmu)) <= 0) { | 131 | if (of_getprop(chosen, "mmu", &chosen_mmu, sizeof(chosen_mmu)) <= 0) { |
132 | printf("no mmu\n"); | 132 | printf("no mmu\n"); |
133 | return 0; | 133 | return 0; |
134 | } | 134 | } |
@@ -166,7 +166,37 @@ void *of_claim(unsigned long virt, unsigned long size, unsigned long align) | |||
166 | return (void *) virt; | 166 | return (void *) virt; |
167 | } | 167 | } |
168 | 168 | ||
169 | void *of_vmlinux_alloc(unsigned long size) | ||
170 | { | ||
171 | void *p = malloc(size); | ||
172 | |||
173 | if (!p) | ||
174 | fatal("Can't allocate memory for kernel image!\n\r"); | ||
175 | |||
176 | return p; | ||
177 | } | ||
178 | |||
169 | void of_exit(void) | 179 | void of_exit(void) |
170 | { | 180 | { |
171 | of_call_prom("exit", 0, 0); | 181 | of_call_prom("exit", 0, 0); |
172 | } | 182 | } |
183 | |||
184 | /* | ||
185 | * OF device tree routines | ||
186 | */ | ||
187 | void *of_finddevice(const char *name) | ||
188 | { | ||
189 | return (phandle) of_call_prom("finddevice", 1, 1, name); | ||
190 | } | ||
191 | |||
192 | int of_getprop(const void *phandle, const char *name, void *buf, | ||
193 | const int buflen) | ||
194 | { | ||
195 | return of_call_prom("getprop", 4, 1, phandle, name, buf, buflen); | ||
196 | } | ||
197 | |||
198 | int of_setprop(const void *phandle, const char *name, const void *buf, | ||
199 | const int buflen) | ||
200 | { | ||
201 | return of_call_prom("setprop", 4, 1, phandle, name, buf, buflen); | ||
202 | } | ||