aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/powerpc/boot/of.c30
-rw-r--r--arch/powerpc/boot/of.h6
-rw-r--r--arch/powerpc/boot/ofconsole.c8
-rw-r--r--arch/powerpc/boot/oflib.c40
4 files changed, 45 insertions, 39 deletions
diff --git a/arch/powerpc/boot/of.c b/arch/powerpc/boot/of.c
index 6108aef28f03..385e08b83b7e 100644
--- a/arch/powerpc/boot/of.c
+++ b/arch/powerpc/boot/of.c
@@ -63,36 +63,6 @@ static void of_image_hdr(const void *hdr)
63 } 63 }
64} 64}
65 65
66static void *of_vmlinux_alloc(unsigned long size)
67{
68 void *p = malloc(size);
69
70 if (!p)
71 fatal("Can't allocate memory for kernel image!\n\r");
72
73 return p;
74}
75
76/*
77 * OF device tree routines
78 */
79static void *of_finddevice(const char *name)
80{
81 return (phandle) of_call_prom("finddevice", 1, 1, name);
82}
83
84static int of_getprop(const void *phandle, const char *name, void *buf,
85 const int buflen)
86{
87 return of_call_prom("getprop", 4, 1, phandle, name, buf, buflen);
88}
89
90static int of_setprop(const void *phandle, const char *name, const void *buf,
91 const int buflen)
92{
93 return of_call_prom("setprop", 4, 1, phandle, name, buf, buflen);
94}
95
96void platform_init(unsigned long a1, unsigned long a2, void *promptr) 66void platform_init(unsigned long a1, unsigned long a2, void *promptr)
97{ 67{
98 platform_ops.image_hdr = of_image_hdr; 68 platform_ops.image_hdr = of_image_hdr;
diff --git a/arch/powerpc/boot/of.h b/arch/powerpc/boot/of.h
index 169d31106991..e4c68f7391c5 100644
--- a/arch/powerpc/boot/of.h
+++ b/arch/powerpc/boot/of.h
@@ -7,7 +7,13 @@ typedef void *ihandle;
7void of_init(void *promptr); 7void of_init(void *promptr);
8int of_call_prom(const char *service, int nargs, int nret, ...); 8int of_call_prom(const char *service, int nargs, int nret, ...);
9void *of_claim(unsigned long virt, unsigned long size, unsigned long align); 9void *of_claim(unsigned long virt, unsigned long size, unsigned long align);
10void *of_vmlinux_alloc(unsigned long size);
10void of_exit(void); 11void of_exit(void);
12void *of_finddevice(const char *name);
13int of_getprop(const void *phandle, const char *name, void *buf,
14 const int buflen);
15int of_setprop(const void *phandle, const char *name, const void *buf,
16 const int buflen);
11 17
12/* Console functions */ 18/* Console functions */
13void of_console_init(void); 19void of_console_init(void);
diff --git a/arch/powerpc/boot/ofconsole.c b/arch/powerpc/boot/ofconsole.c
index 43c0f36c3326..ce0e02424453 100644
--- a/arch/powerpc/boot/ofconsole.c
+++ b/arch/powerpc/boot/ofconsole.c
@@ -24,10 +24,10 @@ static int of_console_open(void)
24{ 24{
25 void *devp; 25 void *devp;
26 26
27 if (((devp = finddevice("/chosen")) != NULL) 27 if (((devp = of_finddevice("/chosen")) != NULL)
28 && (getprop(devp, "stdout", &of_stdout_handle, 28 && (of_getprop(devp, "stdout", &of_stdout_handle,
29 sizeof(of_stdout_handle)) 29 sizeof(of_stdout_handle))
30 == sizeof(of_stdout_handle))) 30 == sizeof(of_stdout_handle)))
31 return 0; 31 return 0;
32 32
33 return -1; 33 return -1;
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}