Commit 25c7581bcdd11cf9b82a8ef062a10bea310cc9e9

Authored by David S. Miller
1 parent 44bdef5e8f

[SPARC64]: Kill off some more prom_getproperty() remnants.

The remaining ones occur before we have imported the
device tree.

Signed-off-by: David S. Miller <davem@davemloft.net>

Showing 3 changed files with 50 additions and 31 deletions Side-by-side Diff

arch/sparc64/kernel/irq.c
... ... @@ -34,6 +34,7 @@
34 34 #include <asm/iommu.h>
35 35 #include <asm/upa.h>
36 36 #include <asm/oplib.h>
  37 +#include <asm/prom.h>
37 38 #include <asm/timer.h>
38 39 #include <asm/smp.h>
39 40 #include <asm/starfire.h>
40 41  
41 42  
42 43  
... ... @@ -635,23 +636,30 @@
635 636  
636 637 static void map_prom_timers(void)
637 638 {
638   - unsigned int addr[3];
  639 + struct device_node *dp;
  640 + unsigned int *addr;
639 641 int tnode, err;
640 642  
641 643 /* PROM timer node hangs out in the top level of device siblings... */
642   - tnode = prom_finddevice("/counter-timer");
  644 + dp = of_find_node_by_path("/");
  645 + dp = dp->child;
  646 + while (dp) {
  647 + if (!strcmp(dp->name, "counter-timer"))
  648 + break;
  649 + dp = dp->sibling;
  650 + }
643 651  
644 652 /* Assume if node is not present, PROM uses different tick mechanism
645 653 * which we should not care about.
646 654 */
647   - if (tnode == 0 || tnode == -1) {
  655 + if (!dp) {
648 656 prom_timers = (struct sun5_timer *) 0;
649 657 return;
650 658 }
651 659  
652 660 /* If PROM is really using this, it must be mapped by him. */
653   - err = prom_getproperty(tnode, "address", (char *)addr, sizeof(addr));
654   - if (err == -1) {
  661 + addr = of_get_property(dp, "address", NULL);
  662 + if (!addr) {
655 663 prom_printf("PROM does not have timer mapped, trying to continue.\n");
656 664 prom_timers = (struct sun5_timer *) 0;
657 665 return;
arch/sparc64/kernel/sbus.c
... ... @@ -19,6 +19,7 @@
19 19 #include <asm/cache.h>
20 20 #include <asm/dma.h>
21 21 #include <asm/irq.h>
  22 +#include <asm/prom.h>
22 23 #include <asm/starfire.h>
23 24  
24 25 #include "iommu_common.h"
25 26  
26 27  
27 28  
28 29  
29 30  
... ... @@ -1098,24 +1099,25 @@
1098 1099 }
1099 1100  
1100 1101 /* Boot time initialization. */
1101   -void __init sbus_iommu_init(int prom_node, struct sbus_bus *sbus)
  1102 +void __init sbus_iommu_init(int __node, struct sbus_bus *sbus)
1102 1103 {
1103   - struct linux_prom64_registers rprop;
  1104 + struct linux_prom64_registers *pr;
  1105 + struct device_node *dp;
1104 1106 struct sbus_iommu *iommu;
1105 1107 unsigned long regs, tsb_base;
1106 1108 u64 control;
1107   - int err, i;
  1109 + int i;
1108 1110  
1109   - sbus->portid = prom_getintdefault(sbus->prom_node,
1110   - "upa-portid", -1);
  1111 + dp = of_find_node_by_phandle(__node);
1111 1112  
1112   - err = prom_getproperty(prom_node, "reg",
1113   - (char *)&rprop, sizeof(rprop));
1114   - if (err < 0) {
  1113 + sbus->portid = of_getintprop_default(dp, "upa-portid", -1);
  1114 +
  1115 + pr = of_get_property(dp, "reg", NULL);
  1116 + if (!pr) {
1115 1117 prom_printf("sbus_iommu_init: Cannot map SYSIO control registers.\n");
1116 1118 prom_halt();
1117 1119 }
1118   - regs = rprop.phys_addr;
  1120 + regs = pr->phys_addr;
1119 1121  
1120 1122 iommu = kmalloc(sizeof(*iommu) + SMP_CACHE_BYTES, GFP_ATOMIC);
1121 1123 if (iommu == NULL) {
1122 1124  
... ... @@ -1228,12 +1230,11 @@
1228 1230  
1229 1231 void sbus_fill_device_irq(struct sbus_dev *sdev)
1230 1232 {
1231   - struct linux_prom_irqs irqs[PROMINTR_MAX];
1232   - int len;
  1233 + struct device_node *dp = of_find_node_by_phandle(sdev->prom_node);
  1234 + struct linux_prom_irqs *irqs;
1233 1235  
1234   - len = prom_getproperty(sdev->prom_node, "interrupts",
1235   - (char *) irqs, sizeof(irqs));
1236   - if (len == -1 || len == 0) {
  1236 + irqs = of_get_property(dp, "interrupts", NULL);
  1237 + if (!irqs) {
1237 1238 sdev->irqs[0] = 0;
1238 1239 sdev->num_irqs = 0;
1239 1240 } else {
arch/sparc64/solaris/misc.c
... ... @@ -23,6 +23,7 @@
23 23 #include <asm/oplib.h>
24 24 #include <asm/idprom.h>
25 25 #include <asm/smp.h>
  26 +#include <asm/prom.h>
26 27  
27 28 #include "conv.h"
28 29  
29 30  
30 31  
... ... @@ -194,14 +195,17 @@
194 195 }
195 196 }
196 197  
197   -static char *platform(char *buffer)
  198 +static char *platform(char *buffer, int sz)
198 199 {
  200 + struct device_node *dp = of_find_node_by_path("/");
199 201 int len;
200 202  
201 203 *buffer = 0;
202   - len = prom_getproperty(prom_root_node, "name", buffer, 256);
203   - if(len > 0)
204   - buffer[len] = 0;
  204 + len = strlen(dp->name);
  205 + if (len > sz)
  206 + len = sz;
  207 + memcpy(buffer, dp->name, len);
  208 + buffer[len] = 0;
205 209 if (*buffer) {
206 210 char *p;
207 211  
208 212  
209 213  
210 214  
... ... @@ -213,16 +217,22 @@
213 217 return "sun4u";
214 218 }
215 219  
216   -static char *serial(char *buffer)
  220 +static char *serial(char *buffer, int sz)
217 221 {
218   - int node = prom_getchild(prom_root_node);
  222 + struct device_node *dp = of_find_node_by_path("/options");
219 223 int len;
220 224  
221   - node = prom_searchsiblings(node, "options");
222 225 *buffer = 0;
223   - len = prom_getproperty(node, "system-board-serial#", buffer, 256);
224   - if(len > 0)
225   - buffer[len] = 0;
  226 + if (dp) {
  227 + char *val = of_get_property(dp, "system-board-serial#", &len);
  228 +
  229 + if (val && len > 0) {
  230 + if (len > sz)
  231 + len = sz;
  232 + memcpy(buffer, val, len);
  233 + buffer[len] = 0;
  234 + }
  235 + }
226 236 if (!*buffer)
227 237 return "4512348717234";
228 238 else
... ... @@ -305,8 +315,8 @@
305 315 case SI_MACHINE: r = machine(); break;
306 316 case SI_ARCHITECTURE: r = "sparc"; break;
307 317 case SI_HW_PROVIDER: r = "Sun_Microsystems"; break;
308   - case SI_HW_SERIAL: r = serial(buffer); break;
309   - case SI_PLATFORM: r = platform(buffer); break;
  318 + case SI_HW_SERIAL: r = serial(buffer, sizeof(buffer)); break;
  319 + case SI_PLATFORM: r = platform(buffer, sizeof(buffer)); break;
310 320 case SI_SRPC_DOMAIN: r = ""; break;
311 321 case SI_VERSION: r = "Generic"; break;
312 322 default: return -EINVAL;