aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/boot/oflib.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/boot/oflib.c')
-rw-r--r--arch/powerpc/boot/oflib.c40
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
169void *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
169void of_exit(void) 179void 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 */
187void *of_finddevice(const char *name)
188{
189 return (phandle) of_call_prom("finddevice", 1, 1, name);
190}
191
192int 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
198int 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}