cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

of.c (1972B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 *
      4 * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
      5 * Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
      6 * Copyright (C) 2013 John Crispin <john@phrozen.org>
      7 */
      8
      9#include <linux/io.h>
     10#include <linux/clk.h>
     11#include <linux/export.h>
     12#include <linux/init.h>
     13#include <linux/sizes.h>
     14#include <linux/of_fdt.h>
     15#include <linux/kernel.h>
     16#include <linux/memblock.h>
     17#include <linux/of_platform.h>
     18#include <linux/of_address.h>
     19
     20#include <asm/reboot.h>
     21#include <asm/bootinfo.h>
     22#include <asm/addrspace.h>
     23#include <asm/prom.h>
     24
     25#include "common.h"
     26
     27__iomem void *rt_sysc_membase;
     28__iomem void *rt_memc_membase;
     29EXPORT_SYMBOL_GPL(rt_sysc_membase);
     30
     31__iomem void *plat_of_remap_node(const char *node)
     32{
     33	struct resource res;
     34	struct device_node *np;
     35
     36	np = of_find_compatible_node(NULL, NULL, node);
     37	if (!np)
     38		panic("Failed to find %s node", node);
     39
     40	if (of_address_to_resource(np, 0, &res))
     41		panic("Failed to get resource for %s", node);
     42
     43	of_node_put(np);
     44
     45	if (!request_mem_region(res.start,
     46				resource_size(&res),
     47				res.name))
     48		panic("Failed to request resources for %s", node);
     49
     50	return ioremap(res.start, resource_size(&res));
     51}
     52
     53void __init plat_mem_setup(void)
     54{
     55	void *dtb;
     56
     57	set_io_port_base(KSEG1);
     58
     59	/*
     60	 * Load the builtin devicetree. This causes the chosen node to be
     61	 * parsed resulting in our memory appearing.
     62	 */
     63	dtb = get_fdt();
     64	__dt_setup_arch(dtb);
     65
     66	if (!early_init_dt_scan_memory())
     67		return;
     68
     69	if (soc_info.mem_detect)
     70		soc_info.mem_detect();
     71	else if (soc_info.mem_size)
     72		memblock_add(soc_info.mem_base, soc_info.mem_size * SZ_1M);
     73	else
     74		detect_memory_region(soc_info.mem_base,
     75				     soc_info.mem_size_min * SZ_1M,
     76				     soc_info.mem_size_max * SZ_1M);
     77}
     78
     79static int __init plat_of_setup(void)
     80{
     81	__dt_register_buses(soc_info.compatible, "palmbus");
     82
     83	/* make sure that the reset controller is setup early */
     84	ralink_rst_init();
     85
     86	return 0;
     87}
     88
     89arch_initcall(plat_of_setup);