mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-02-20 18:29:07 +07:00
sh: add support for linking a builtin device tree blob in the kernel
Signed-off-by: Rich Felker <dalias@libc.org>
This commit is contained in:
parent
ff18143cee
commit
190fe191cf
@ -739,6 +739,26 @@ endmenu
|
|||||||
|
|
||||||
menu "Boot options"
|
menu "Boot options"
|
||||||
|
|
||||||
|
config USE_BUILTIN_DTB
|
||||||
|
bool "Use builtin DTB"
|
||||||
|
default n
|
||||||
|
depends on SH_DEVICE_TREE
|
||||||
|
help
|
||||||
|
Link a device tree blob for particular hardware into the kernel,
|
||||||
|
suppressing use of the DTB pointer provided by the bootloader.
|
||||||
|
This option should only be used with legacy bootloaders that are
|
||||||
|
not capable of providing a DTB to the kernel, or for experimental
|
||||||
|
hardware without stable device tree bindings.
|
||||||
|
|
||||||
|
config BUILTIN_DTB_SOURCE
|
||||||
|
string "Source file for builtin DTB"
|
||||||
|
default ""
|
||||||
|
depends on USE_BUILTIN_DTB
|
||||||
|
help
|
||||||
|
Base name (without suffix, relative to arch/sh/boot/dts) for the
|
||||||
|
a DTS file that will be used to produce the DTB linked into the
|
||||||
|
kernel.
|
||||||
|
|
||||||
config ZERO_PAGE_OFFSET
|
config ZERO_PAGE_OFFSET
|
||||||
hex
|
hex
|
||||||
default "0x00010000" if PAGE_SIZE_64KB || SH_RTS7751R2D || \
|
default "0x00010000" if PAGE_SIZE_64KB || SH_RTS7751R2D || \
|
||||||
|
@ -130,6 +130,8 @@ head-y := arch/sh/kernel/head_$(BITS).o
|
|||||||
core-y += arch/sh/kernel/ arch/sh/mm/ arch/sh/boards/
|
core-y += arch/sh/kernel/ arch/sh/mm/ arch/sh/boards/
|
||||||
core-$(CONFIG_SH_FPU_EMU) += arch/sh/math-emu/
|
core-$(CONFIG_SH_FPU_EMU) += arch/sh/math-emu/
|
||||||
|
|
||||||
|
core-$(CONFIG_USE_BUILTIN_DTB) += arch/sh/boot/dts/
|
||||||
|
|
||||||
# Mach groups
|
# Mach groups
|
||||||
machdir-$(CONFIG_SOLUTION_ENGINE) += mach-se
|
machdir-$(CONFIG_SOLUTION_ENGINE) += mach-se
|
||||||
machdir-$(CONFIG_SH_HP6XX) += mach-hp6xx
|
machdir-$(CONFIG_SH_HP6XX) += mach-hp6xx
|
||||||
|
@ -124,13 +124,22 @@ static void __init sh_of_time_init(void)
|
|||||||
|
|
||||||
static void __init sh_of_setup(char **cmdline_p)
|
static void __init sh_of_setup(char **cmdline_p)
|
||||||
{
|
{
|
||||||
|
struct device_node *root;
|
||||||
|
|
||||||
|
#ifdef CONFIG_USE_BUILTIN_DTB
|
||||||
|
unflatten_and_copy_device_tree();
|
||||||
|
#else
|
||||||
unflatten_device_tree();
|
unflatten_device_tree();
|
||||||
|
#endif
|
||||||
|
|
||||||
board_time_init = sh_of_time_init;
|
board_time_init = sh_of_time_init;
|
||||||
|
|
||||||
sh_mv.mv_name = of_flat_dt_get_machine_name();
|
sh_mv.mv_name = "Unknown SH model";
|
||||||
if (!sh_mv.mv_name)
|
root = of_find_node_by_path("/");
|
||||||
sh_mv.mv_name = "Unknown SH model";
|
if (root) {
|
||||||
|
of_property_read_string(root, "model", &sh_mv.mv_name);
|
||||||
|
of_node_put(root);
|
||||||
|
}
|
||||||
|
|
||||||
sh_of_smp_probe();
|
sh_of_smp_probe();
|
||||||
}
|
}
|
||||||
|
3
arch/sh/boot/dts/Makefile
Normal file
3
arch/sh/boot/dts/Makefile
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
obj-$(CONFIG_USE_BUILTIN_DTB) += $(patsubst "%",%,$(CONFIG_BUILTIN_DTB_SOURCE)).dtb.o
|
||||||
|
|
||||||
|
clean-files := *.dtb.S
|
@ -251,7 +251,11 @@ void __ref sh_fdt_init(phys_addr_t dt_phys)
|
|||||||
/* Avoid calling an __init function on secondary cpus. */
|
/* Avoid calling an __init function on secondary cpus. */
|
||||||
if (done) return;
|
if (done) return;
|
||||||
|
|
||||||
|
#ifdef CONFIG_USE_BUILTIN_DTB
|
||||||
|
dt_virt = __dtb_start;
|
||||||
|
#else
|
||||||
dt_virt = phys_to_virt(dt_phys);
|
dt_virt = phys_to_virt(dt_phys);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!dt_virt || !early_init_dt_scan(dt_virt)) {
|
if (!dt_virt || !early_init_dt_scan(dt_virt)) {
|
||||||
pr_crit("Error: invalid device tree blob"
|
pr_crit("Error: invalid device tree blob"
|
||||||
|
Loading…
Reference in New Issue
Block a user