Skip to content

Commit

Permalink
mips: convert fdt pointers to opaque pointers
Browse files Browse the repository at this point in the history
The architecture code does not need to access the internals of the FDT
blob directly, so make the pointers to it void * and use char arrays
for section variables.

Signed-off-by: Rob Herring <robh@kernel.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
Tested-by: Grant Likely <grant.likely@linaro.org>
  • Loading branch information
Rob Herring committed Apr 30, 2014
1 parent 01984a6 commit 0cdde83
Show file tree
Hide file tree
Showing 7 changed files with 13 additions and 15 deletions.
4 changes: 1 addition & 3 deletions arch/mips/include/asm/mips-boards/generic.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,7 @@

extern int mips_revision_sconid;

#ifdef CONFIG_OF
extern struct boot_param_header __dtb_start;
#endif
extern char __dtb_start[];

#ifdef CONFIG_PCI
extern void mips_pcibios_init(void);
Expand Down
6 changes: 3 additions & 3 deletions arch/mips/include/asm/prom.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ extern void device_tree_init(void);

struct boot_param_header;

extern void __dt_setup_arch(struct boot_param_header *bph);
extern void __dt_setup_arch(void *bph);

#define dt_setup_arch(sym) \
({ \
extern struct boot_param_header __dtb_##sym##_begin; \
extern char __dtb_##sym##_begin[]; \
\
__dt_setup_arch(&__dtb_##sym##_begin); \
__dt_setup_arch(__dtb_##sym##_begin); \
})

#else /* CONFIG_OF */
Expand Down
2 changes: 1 addition & 1 deletion arch/mips/kernel/prom.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
return __alloc_bootmem(size, align, __pa(MAX_DMA_ADDRESS));
}

void __init __dt_setup_arch(struct boot_param_header *bph)
void __init __dt_setup_arch(void *bph)
{
if (!early_init_dt_scan(bph))
return;
Expand Down
2 changes: 1 addition & 1 deletion arch/mips/lantiq/prom.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ void __init plat_mem_setup(void)
* Load the builtin devicetree. This causes the chosen node to be
* parsed resulting in our memory appearing
*/
__dt_setup_arch(&__dtb_start);
__dt_setup_arch(__dtb_start);
}

void __init device_tree_init(void)
Expand Down
2 changes: 1 addition & 1 deletion arch/mips/lantiq/prom.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,6 @@ struct ltq_soc_info {
extern void ltq_soc_detect(struct ltq_soc_info *i);
extern void ltq_soc_init(void);

extern struct boot_param_header __dtb_start;
extern char __dtb_start[];

#endif
8 changes: 4 additions & 4 deletions arch/mips/mti-sead3/sead3-setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,17 +69,17 @@ static void __init parse_memsize_param(void)
if (!memsize)
return;

offset = fdt_path_offset(&__dtb_start, "/memory");
offset = fdt_path_offset(__dtb_start, "/memory");
if (offset > 0) {
uint64_t new_value;
/*
* reg contains 2 32-bits BE values, offset and size. We just
* want to replace the size value without affecting the offset
*/
prop_value = fdt_getprop(&__dtb_start, offset, "reg", &prop_len);
prop_value = fdt_getprop(__dtb_start, offset, "reg", &prop_len);
new_value = be64_to_cpu(*prop_value);
new_value = (new_value & ~0xffffffffllu) | memsize;
fdt_setprop_inplace_u64(&__dtb_start, offset, "reg", new_value);
fdt_setprop_inplace_u64(__dtb_start, offset, "reg", new_value);
}
}

Expand All @@ -92,7 +92,7 @@ void __init plat_mem_setup(void)
* Load the builtin devicetree. This causes the chosen node to be
* parsed resulting in our memory appearing
*/
__dt_setup_arch(&__dtb_start);
__dt_setup_arch(__dtb_start);
}

void __init device_tree_init(void)
Expand Down
4 changes: 2 additions & 2 deletions arch/mips/ralink/of.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
__iomem void *rt_sysc_membase;
__iomem void *rt_memc_membase;

extern struct boot_param_header __dtb_start;
extern char __dtb_start[];

__iomem void *plat_of_remap_node(const char *node)
{
Expand Down Expand Up @@ -63,7 +63,7 @@ void __init plat_mem_setup(void)
* Load the builtin devicetree. This causes the chosen node to be
* parsed resulting in our memory appearing
*/
__dt_setup_arch(&__dtb_start);
__dt_setup_arch(__dtb_start);

if (soc_info.mem_size)
add_memory_region(soc_info.mem_base, soc_info.mem_size * SZ_1M,
Expand Down

0 comments on commit 0cdde83

Please sign in to comment.