Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/powerpc/platforms/microwatt/setup.c
26481 views
1
/*
2
* Microwatt FPGA-based SoC platform setup code.
3
*
4
* Copyright 2020 Paul Mackerras ([email protected]), IBM Corp.
5
*/
6
7
#include <linux/types.h>
8
#include <linux/kernel.h>
9
#include <linux/stddef.h>
10
#include <linux/init.h>
11
#include <linux/of.h>
12
#include <linux/of_platform.h>
13
14
#include <asm/machdep.h>
15
#include <asm/time.h>
16
#include <asm/xics.h>
17
#include <asm/udbg.h>
18
19
#include "microwatt.h"
20
21
static void __init microwatt_init_IRQ(void)
22
{
23
xics_init();
24
}
25
26
static int __init microwatt_populate(void)
27
{
28
return of_platform_default_populate(NULL, NULL, NULL);
29
}
30
machine_arch_initcall(microwatt, microwatt_populate);
31
32
static int __init microwatt_probe(void)
33
{
34
/* Main reason for having this is to start the other CPU(s) */
35
if (IS_ENABLED(CONFIG_SMP))
36
microwatt_init_smp();
37
return 1;
38
}
39
40
static void __init microwatt_setup_arch(void)
41
{
42
microwatt_rng_init();
43
}
44
45
static void microwatt_idle(void)
46
{
47
if (!prep_irq_for_idle_irqsoff())
48
return;
49
50
__asm__ __volatile__ ("wait");
51
}
52
53
define_machine(microwatt) {
54
.name = "microwatt",
55
.compatible = "microwatt-soc",
56
.probe = microwatt_probe,
57
.init_IRQ = microwatt_init_IRQ,
58
.setup_arch = microwatt_setup_arch,
59
.progress = udbg_progress,
60
.power_save = microwatt_idle,
61
};
62
63