Commit f00abd94918c9780f9d2d961fc0e419c11457922

Authored by Grant Likely
1 parent f7b3a8355b

of/flattree: Merge earlyinit_dt_scan_root()

Merge common code between PowerPC and Microblaze

Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Tested-by: Wolfram Sang <w.sang@pengutronix.de>

Showing 4 changed files with 32 additions and 47 deletions Side-by-side Diff

arch/microblaze/kernel/prom.c
... ... @@ -42,9 +42,6 @@
42 42 #include <asm/sections.h>
43 43 #include <asm/pci-bridge.h>
44 44  
45   -static int __initdata dt_root_addr_cells;
46   -static int __initdata dt_root_size_cells;
47   -
48 45 typedef u32 cell_t;
49 46  
50 47 /* export that to outside world */
... ... @@ -153,26 +150,6 @@
153 150 #endif /* CONFIG_CMDLINE */
154 151  
155 152 pr_debug("Command line is: %s\n", cmd_line);
156   -
157   - /* break now */
158   - return 1;
159   -}
160   -
161   -static int __init early_init_dt_scan_root(unsigned long node,
162   - const char *uname, int depth, void *data)
163   -{
164   - u32 *prop;
165   -
166   - if (depth != 0)
167   - return 0;
168   -
169   - prop = of_get_flat_dt_prop(node, "#size-cells", NULL);
170   - dt_root_size_cells = (prop == NULL) ? 1 : *prop;
171   - pr_debug("dt_root_size_cells = %x\n", dt_root_size_cells);
172   -
173   - prop = of_get_flat_dt_prop(node, "#address-cells", NULL);
174   - dt_root_addr_cells = (prop == NULL) ? 2 : *prop;
175   - pr_debug("dt_root_addr_cells = %x\n", dt_root_addr_cells);
176 153  
177 154 /* break now */
178 155 return 1;
arch/powerpc/kernel/prom.c
... ... @@ -61,10 +61,6 @@
61 61 #define DBG(fmt...)
62 62 #endif
63 63  
64   -
65   -static int __initdata dt_root_addr_cells;
66   -static int __initdata dt_root_size_cells;
67   -
68 64 #ifdef CONFIG_PPC64
69 65 int __initdata iommu_is_off;
70 66 int __initdata iommu_force_on;
... ... @@ -432,26 +428,6 @@
432 428  
433 429 DBG("Command line is: %s\n", cmd_line);
434 430  
435   - /* break now */
436   - return 1;
437   -}
438   -
439   -static int __init early_init_dt_scan_root(unsigned long node,
440   - const char *uname, int depth, void *data)
441   -{
442   - u32 *prop;
443   -
444   - if (depth != 0)
445   - return 0;
446   -
447   - prop = of_get_flat_dt_prop(node, "#size-cells", NULL);
448   - dt_root_size_cells = (prop == NULL) ? 1 : *prop;
449   - DBG("dt_root_size_cells = %x\n", dt_root_size_cells);
450   -
451   - prop = of_get_flat_dt_prop(node, "#address-cells", NULL);
452   - dt_root_addr_cells = (prop == NULL) ? 2 : *prop;
453   - DBG("dt_root_addr_cells = %x\n", dt_root_addr_cells);
454   -
455 431 /* break now */
456 432 return 1;
457 433 }
... ... @@ -15,6 +15,9 @@
15 15 #include <linux/of.h>
16 16 #include <linux/of_fdt.h>
17 17  
  18 +int __initdata dt_root_addr_cells;
  19 +int __initdata dt_root_size_cells;
  20 +
18 21 struct boot_param_header *initial_boot_params;
19 22  
20 23 char *find_flat_dt_string(u32 offset)
... ... @@ -405,6 +408,29 @@
405 408 {
406 409 }
407 410 #endif /* CONFIG_BLK_DEV_INITRD */
  411 +
  412 +/**
  413 + * early_init_dt_scan_root - fetch the top level address and size cells
  414 + */
  415 +int __init early_init_dt_scan_root(unsigned long node, const char *uname,
  416 + int depth, void *data)
  417 +{
  418 + u32 *prop;
  419 +
  420 + if (depth != 0)
  421 + return 0;
  422 +
  423 + prop = of_get_flat_dt_prop(node, "#size-cells", NULL);
  424 + dt_root_size_cells = (prop == NULL) ? 1 : *prop;
  425 + pr_debug("dt_root_size_cells = %x\n", dt_root_size_cells);
  426 +
  427 + prop = of_get_flat_dt_prop(node, "#address-cells", NULL);
  428 + dt_root_addr_cells = (prop == NULL) ? 2 : *prop;
  429 + pr_debug("dt_root_addr_cells = %x\n", dt_root_addr_cells);
  430 +
  431 + /* break now */
  432 + return 1;
  433 +}
408 434  
409 435 /**
410 436 * unflatten_device_tree - create tree of device_nodes from flat blob
include/linux/of_fdt.h
... ... @@ -58,6 +58,8 @@
58 58 };
59 59  
60 60 /* TBD: Temporary export of fdt globals - remove when code fully merged */
  61 +extern int __initdata dt_root_addr_cells;
  62 +extern int __initdata dt_root_size_cells;
61 63 extern struct boot_param_header *initial_boot_params;
62 64  
63 65 /* For scanning the flat device-tree at boot time */
... ... @@ -70,6 +72,10 @@
70 72 extern int of_flat_dt_is_compatible(unsigned long node, const char *name);
71 73 extern unsigned long of_get_flat_dt_root(void);
72 74 extern void early_init_dt_check_for_initrd(unsigned long node);
  75 +
  76 +/* Early flat tree scan hooks */
  77 +extern int early_init_dt_scan_root(unsigned long node, const char *uname,
  78 + int depth, void *data);
73 79  
74 80 /* Other Prototypes */
75 81 extern void finish_device_tree(void);