Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/mips/rb532/setup.c
26424 views
1
// SPDX-License-Identifier: GPL-2.0
2
/*
3
* setup.c - boot time setup code
4
*/
5
6
#include <linux/init.h>
7
#include <linux/export.h>
8
9
#include <asm/bootinfo.h>
10
#include <asm/reboot.h>
11
#include <asm/time.h>
12
#include <linux/ioport.h>
13
14
#include <asm/mach-rc32434/rb.h>
15
#include <asm/mach-rc32434/pci.h>
16
17
struct pci_reg __iomem *pci_reg;
18
EXPORT_SYMBOL(pci_reg);
19
20
static struct resource pci0_res[] = {
21
{
22
.name = "pci_reg0",
23
.start = PCI0_BASE_ADDR,
24
.end = PCI0_BASE_ADDR + sizeof(struct pci_reg),
25
.flags = IORESOURCE_MEM,
26
}
27
};
28
29
static void rb_machine_restart(char *command)
30
{
31
/* just jump to the reset vector */
32
writel(0x80000001, IDT434_REG_BASE + RST);
33
((void (*)(void)) KSEG1ADDR(0x1FC00000u))();
34
}
35
36
static void rb_machine_halt(void)
37
{
38
for (;;)
39
continue;
40
}
41
42
void __init plat_mem_setup(void)
43
{
44
u32 val;
45
46
_machine_restart = rb_machine_restart;
47
_machine_halt = rb_machine_halt;
48
pm_power_off = rb_machine_halt;
49
50
set_io_port_base(KSEG1);
51
52
pci_reg = ioremap(pci0_res[0].start,
53
pci0_res[0].end - pci0_res[0].start);
54
if (!pci_reg) {
55
printk(KERN_ERR "Could not remap PCI registers\n");
56
return;
57
}
58
59
val = __raw_readl(&pci_reg->pcic);
60
val &= 0xFFFFFF7;
61
__raw_writel(val, (void *)&pci_reg->pcic);
62
63
#ifdef CONFIG_PCI
64
/* Enable PCI interrupts in EPLD Mask register */
65
*epld_mask = 0x0;
66
*(epld_mask + 1) = 0x0;
67
#endif
68
write_c0_wired(0);
69
}
70
71
const char *get_system_type(void)
72
{
73
switch (mips_machtype) {
74
case MACH_MIKROTIK_RB532A:
75
return "Mikrotik RB532A";
76
break;
77
default:
78
return "Mikrotik RB532";
79
break;
80
}
81
}
82
83