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

board-dt.c (1473B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Gemini Device Tree boot support
      4 */
      5#include <linux/kernel.h>
      6#include <linux/init.h>
      7#include <linux/io.h>
      8
      9#include <asm/mach/arch.h>
     10#include <asm/mach/map.h>
     11#include <asm/system_misc.h>
     12#include <asm/proc-fns.h>
     13
     14#ifdef CONFIG_DEBUG_GEMINI
     15/* This is needed for LL-debug/earlyprintk/debug-macro.S */
     16static struct map_desc gemini_io_desc[] __initdata = {
     17	{
     18		.virtual = CONFIG_DEBUG_UART_VIRT,
     19		.pfn = __phys_to_pfn(CONFIG_DEBUG_UART_PHYS),
     20		.length = SZ_4K,
     21		.type = MT_DEVICE,
     22	},
     23};
     24
     25static void __init gemini_map_io(void)
     26{
     27	iotable_init(gemini_io_desc, ARRAY_SIZE(gemini_io_desc));
     28}
     29#else
     30#define gemini_map_io NULL
     31#endif
     32
     33static void gemini_idle(void)
     34{
     35	/*
     36	 * Because of broken hardware we have to enable interrupts or the CPU
     37	 * will never wakeup... Acctualy it is not very good to enable
     38	 * interrupts first since scheduler can miss a tick, but there is
     39	 * no other way around this. Platforms that needs it for power saving
     40	 * should enable it in init code, since by default it is
     41	 * disabled.
     42	 */
     43
     44	/* FIXME: Enabling interrupts here is racy! */
     45	local_irq_enable();
     46	cpu_do_idle();
     47}
     48
     49static void __init gemini_init_machine(void)
     50{
     51	arm_pm_idle = gemini_idle;
     52}
     53
     54static const char *gemini_board_compat[] = {
     55	"cortina,gemini",
     56	NULL,
     57};
     58
     59DT_MACHINE_START(GEMINI_DT, "Gemini (Device Tree)")
     60	.map_io		= gemini_map_io,
     61	.init_machine	= gemini_init_machine,
     62	.dt_compat	= gemini_board_compat,
     63MACHINE_END