11ccea77eSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-or-later 295acd4c7SLey Foon Tan /* 395acd4c7SLey Foon Tan * Device tree support 495acd4c7SLey Foon Tan * 5e8bf5bc7SLey Foon Tan * Copyright (C) 2013, 2015 Altera Corporation 695acd4c7SLey Foon Tan * Copyright (C) 2010 Thomas Chou <thomas@wytron.com.tw> 795acd4c7SLey Foon Tan * 895acd4c7SLey Foon Tan * Based on MIPS support for CONFIG_OF device tree support 995acd4c7SLey Foon Tan * 1095acd4c7SLey Foon Tan * Copyright (C) 2010 Cisco Systems Inc. <dediao@cisco.com> 1195acd4c7SLey Foon Tan */ 1295acd4c7SLey Foon Tan 1395acd4c7SLey Foon Tan #include <linux/init.h> 1495acd4c7SLey Foon Tan #include <linux/types.h> 1557c8a661SMike Rapoport #include <linux/memblock.h> 1695acd4c7SLey Foon Tan #include <linux/of.h> 1795acd4c7SLey Foon Tan #include <linux/of_fdt.h> 1895acd4c7SLey Foon Tan #include <linux/io.h> 1995acd4c7SLey Foon Tan 2095acd4c7SLey Foon Tan #include <asm/sections.h> 2195acd4c7SLey Foon Tan early_init_devtree(void * params)2295acd4c7SLey Foon Tanvoid __init early_init_devtree(void *params) 2395acd4c7SLey Foon Tan { 2495acd4c7SLey Foon Tan __be32 *dtb = (u32 *)__dtb_start; 2595acd4c7SLey Foon Tan #if defined(CONFIG_NIOS2_DTB_AT_PHYS_ADDR) 2695acd4c7SLey Foon Tan if (be32_to_cpup((__be32 *)CONFIG_NIOS2_DTB_PHYS_ADDR) == 2795acd4c7SLey Foon Tan OF_DT_HEADER) { 2895acd4c7SLey Foon Tan params = (void *)CONFIG_NIOS2_DTB_PHYS_ADDR; 29*1103d3b5SUsama Arif early_init_dt_scan(params, __pa(params)); 3095acd4c7SLey Foon Tan return; 3195acd4c7SLey Foon Tan } 3295acd4c7SLey Foon Tan #endif 3395acd4c7SLey Foon Tan if (be32_to_cpu((__be32) *dtb) == OF_DT_HEADER) 3495acd4c7SLey Foon Tan params = (void *)__dtb_start; 3595acd4c7SLey Foon Tan 36*1103d3b5SUsama Arif early_init_dt_scan(params, __pa(params)); 3795acd4c7SLey Foon Tan } 38