Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/powerpc/platforms/83xx/mpc831x_rdb.c
10819 views
1
/*
2
* arch/powerpc/platforms/83xx/mpc831x_rdb.c
3
*
4
* Description: MPC831x RDB board specific routines.
5
* This file is based on mpc834x_sys.c
6
* Author: Lo Wlison <[email protected]>
7
*
8
* Copyright (C) Freescale Semiconductor, Inc. 2006. All rights reserved.
9
*
10
* This program is free software; you can redistribute it and/or modify it
11
* under the terms of the GNU General Public License as published by the
12
* Free Software Foundation; either version 2 of the License, or (at your
13
* option) any later version.
14
*/
15
16
#include <linux/pci.h>
17
#include <linux/of_platform.h>
18
19
#include <asm/time.h>
20
#include <asm/ipic.h>
21
#include <asm/udbg.h>
22
#include <sysdev/fsl_pci.h>
23
24
#include "mpc83xx.h"
25
26
/*
27
* Setup the architecture
28
*/
29
static void __init mpc831x_rdb_setup_arch(void)
30
{
31
#ifdef CONFIG_PCI
32
struct device_node *np;
33
#endif
34
35
if (ppc_md.progress)
36
ppc_md.progress("mpc831x_rdb_setup_arch()", 0);
37
38
#ifdef CONFIG_PCI
39
for_each_compatible_node(np, "pci", "fsl,mpc8349-pci")
40
mpc83xx_add_bridge(np);
41
for_each_compatible_node(np, "pci", "fsl,mpc8314-pcie")
42
mpc83xx_add_bridge(np);
43
#endif
44
mpc831x_usb_cfg();
45
}
46
47
static void __init mpc831x_rdb_init_IRQ(void)
48
{
49
struct device_node *np;
50
51
np = of_find_node_by_type(NULL, "ipic");
52
if (!np)
53
return;
54
55
ipic_init(np, 0);
56
57
/* Initialize the default interrupt mapping priorities,
58
* in case the boot rom changed something on us.
59
*/
60
ipic_set_default_priority();
61
}
62
63
static const char *board[] __initdata = {
64
"MPC8313ERDB",
65
"fsl,mpc8315erdb",
66
NULL
67
};
68
69
/*
70
* Called very early, MMU is off, device-tree isn't unflattened
71
*/
72
static int __init mpc831x_rdb_probe(void)
73
{
74
return of_flat_dt_match(of_get_flat_dt_root(), board);
75
}
76
77
static struct of_device_id __initdata of_bus_ids[] = {
78
{ .compatible = "simple-bus" },
79
{ .compatible = "gianfar" },
80
{ .compatible = "gpio-leds", },
81
{},
82
};
83
84
static int __init declare_of_platform_devices(void)
85
{
86
of_platform_bus_probe(NULL, of_bus_ids, NULL);
87
return 0;
88
}
89
machine_device_initcall(mpc831x_rdb, declare_of_platform_devices);
90
91
define_machine(mpc831x_rdb) {
92
.name = "MPC831x RDB",
93
.probe = mpc831x_rdb_probe,
94
.setup_arch = mpc831x_rdb_setup_arch,
95
.init_IRQ = mpc831x_rdb_init_IRQ,
96
.get_irq = ipic_get_irq,
97
.restart = mpc83xx_restart,
98
.time_init = mpc83xx_time_init,
99
.calibrate_decr = generic_calibrate_decr,
100
.progress = udbg_progress,
101
};
102
103