forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add device tree files to arch/metag. Signed-off-by: James Hogan <james.hogan@imgtec.com> Reviewed-by: Vineet Gupta <vgupta@synopsys.com>
- Loading branch information
James Hogan
committed
Mar 2, 2013
1 parent
262d96b
commit 29dd78c
Showing
5 changed files
with
160 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
dtb-y += skeleton.dtb | ||
|
||
# Built-in dtb | ||
builtindtb-y := skeleton | ||
|
||
ifneq ($(CONFIG_METAG_BUILTIN_DTB_NAME),"") | ||
builtindtb-y := $(CONFIG_METAG_BUILTIN_DTB_NAME) | ||
endif | ||
obj-$(CONFIG_METAG_BUILTIN_DTB) += $(patsubst "%",%,$(builtindtb-y)).dtb.o | ||
|
||
targets += dtbs | ||
targets += $(dtb-y) | ||
|
||
dtbs: $(addprefix $(obj)/, $(dtb-y)) | ||
|
||
clean-files += *.dtb |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
/* | ||
* Copyright (C) 2012 Imagination Technologies Ltd. | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
/dts-v1/; | ||
|
||
/include/ "skeleton.dtsi" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
/* | ||
* Skeleton device tree; the bare minimum needed to boot; just include and | ||
* add a compatible value. The bootloader will typically populate the memory | ||
* node. | ||
*/ | ||
|
||
/ { | ||
compatible = "img,meta"; | ||
#address-cells = <1>; | ||
#size-cells = <1>; | ||
chosen { }; | ||
aliases { }; | ||
memory { device_type = "memory"; reg = <0 0>; }; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
/* | ||
* arch/metag/include/asm/prom.h | ||
* | ||
* Copyright (C) 2012 Imagination Technologies Ltd. | ||
* | ||
* Based on ARM version: | ||
* Copyright (C) 2009 Canonical Ltd. <jeremy.kerr@canonical.com> | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
* | ||
*/ | ||
#ifndef __ASM_METAG_PROM_H | ||
#define __ASM_METAG_PROM_H | ||
|
||
#include <asm/setup.h> | ||
#define HAVE_ARCH_DEVTREE_FIXUPS | ||
|
||
extern struct machine_desc *setup_machine_fdt(void *dt); | ||
extern void metag_dt_memblock_reserve(void); | ||
|
||
#endif /* __ASM_METAG_PROM_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
/* | ||
* linux/arch/metag/kernel/devtree.c | ||
* | ||
* Copyright (C) 2012 Imagination Technologies Ltd. | ||
* | ||
* Based on ARM version: | ||
* Copyright (C) 2009 Canonical Ltd. <jeremy.kerr@canonical.com> | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/init.h> | ||
#include <linux/export.h> | ||
#include <linux/types.h> | ||
#include <linux/bootmem.h> | ||
#include <linux/memblock.h> | ||
#include <linux/of.h> | ||
#include <linux/of_fdt.h> | ||
|
||
#include <asm/setup.h> | ||
#include <asm/page.h> | ||
#include <asm/mach/arch.h> | ||
|
||
void __init early_init_dt_add_memory_arch(u64 base, u64 size) | ||
{ | ||
pr_err("%s(%llx, %llx)\n", | ||
__func__, base, size); | ||
} | ||
|
||
void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align) | ||
{ | ||
return alloc_bootmem_align(size, align); | ||
} | ||
|
||
/** | ||
* setup_machine_fdt - Machine setup when an dtb was passed to the kernel | ||
* @dt: virtual address pointer to dt blob | ||
* | ||
* If a dtb was passed to the kernel, then use it to choose the correct | ||
* machine_desc and to setup the system. | ||
*/ | ||
struct machine_desc * __init setup_machine_fdt(void *dt) | ||
{ | ||
struct boot_param_header *devtree = dt; | ||
struct machine_desc *mdesc, *mdesc_best = NULL; | ||
unsigned int score, mdesc_score = ~1; | ||
unsigned long dt_root; | ||
const char *model; | ||
|
||
/* check device tree validity */ | ||
if (be32_to_cpu(devtree->magic) != OF_DT_HEADER) | ||
return NULL; | ||
|
||
/* Search the mdescs for the 'best' compatible value match */ | ||
initial_boot_params = devtree; | ||
dt_root = of_get_flat_dt_root(); | ||
|
||
for_each_machine_desc(mdesc) { | ||
score = of_flat_dt_match(dt_root, mdesc->dt_compat); | ||
if (score > 0 && score < mdesc_score) { | ||
mdesc_best = mdesc; | ||
mdesc_score = score; | ||
} | ||
} | ||
if (!mdesc_best) { | ||
const char *prop; | ||
long size; | ||
|
||
pr_err("\nError: unrecognized/unsupported device tree compatible list:\n[ "); | ||
|
||
prop = of_get_flat_dt_prop(dt_root, "compatible", &size); | ||
if (prop) { | ||
while (size > 0) { | ||
printk("'%s' ", prop); | ||
size -= strlen(prop) + 1; | ||
prop += strlen(prop) + 1; | ||
} | ||
} | ||
printk("]\n\n"); | ||
|
||
dump_machine_table(); /* does not return */ | ||
} | ||
|
||
model = of_get_flat_dt_prop(dt_root, "model", NULL); | ||
if (!model) | ||
model = of_get_flat_dt_prop(dt_root, "compatible", NULL); | ||
if (!model) | ||
model = "<unknown>"; | ||
pr_info("Machine: %s, model: %s\n", mdesc_best->name, model); | ||
|
||
/* Retrieve various information from the /chosen node */ | ||
of_scan_flat_dt(early_init_dt_scan_chosen, boot_command_line); | ||
|
||
return mdesc_best; | ||
} |