xref: /openbmc/u-boot/arch/riscv/cpu/generic/cpu.c (revision c507d306)
1*fdff1f96SAnup Patel // SPDX-License-Identifier: GPL-2.0+
2*fdff1f96SAnup Patel /*
3*fdff1f96SAnup Patel  * Copyright (C) 2018, Bin Meng <bmeng.cn@gmail.com>
4*fdff1f96SAnup Patel  */
5*fdff1f96SAnup Patel 
6*fdff1f96SAnup Patel #include <common.h>
7*fdff1f96SAnup Patel #include <dm.h>
8*fdff1f96SAnup Patel 
9*fdff1f96SAnup Patel /*
10*fdff1f96SAnup Patel  * cleanup_before_linux() is called just before we call linux
11*fdff1f96SAnup Patel  * it prepares the processor for linux
12*fdff1f96SAnup Patel  *
13*fdff1f96SAnup Patel  * we disable interrupt and caches.
14*fdff1f96SAnup Patel  */
cleanup_before_linux(void)15*fdff1f96SAnup Patel int cleanup_before_linux(void)
16*fdff1f96SAnup Patel {
17*fdff1f96SAnup Patel 	disable_interrupts();
18*fdff1f96SAnup Patel 
19*fdff1f96SAnup Patel 	cache_flush();
20*fdff1f96SAnup Patel 
21*fdff1f96SAnup Patel 	return 0;
22*fdff1f96SAnup Patel }
23*fdff1f96SAnup Patel 
24*fdff1f96SAnup Patel /* To enumerate devices on the /soc/ node, create a "simple-bus" driver */
25*fdff1f96SAnup Patel static const struct udevice_id riscv_virtio_soc_ids[] = {
26*fdff1f96SAnup Patel 	{ .compatible = "riscv-virtio-soc" },
27*fdff1f96SAnup Patel 	{ }
28*fdff1f96SAnup Patel };
29*fdff1f96SAnup Patel 
30*fdff1f96SAnup Patel U_BOOT_DRIVER(riscv_virtio_soc) = {
31*fdff1f96SAnup Patel 	.name = "riscv_virtio_soc",
32*fdff1f96SAnup Patel 	.id = UCLASS_SIMPLE_BUS,
33*fdff1f96SAnup Patel 	.of_match = riscv_virtio_soc_ids,
34*fdff1f96SAnup Patel 	.flags = DM_FLAG_PRE_RELOC,
35*fdff1f96SAnup Patel };
36