Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/powerpc/boot/cuboot-52xx.c
26424 views
1
// SPDX-License-Identifier: GPL-2.0-only
2
/*
3
* Old U-boot compatibility for MPC5200
4
*
5
* Author: Grant Likely <[email protected]>
6
*
7
* Copyright (c) 2007 Secret Lab Technologies Ltd.
8
* Copyright (c) 2007 Freescale Semiconductor, Inc.
9
*/
10
11
#include "ops.h"
12
#include "stdio.h"
13
#include "io.h"
14
#include "cuboot.h"
15
16
#define TARGET_PPC_MPC52xx
17
#include "ppcboot.h"
18
19
static bd_t bd;
20
21
static void platform_fixups(void)
22
{
23
void *soc, *reg;
24
int div;
25
u32 sysfreq;
26
27
28
dt_fixup_memory(bd.bi_memstart, bd.bi_memsize);
29
dt_fixup_mac_addresses(bd.bi_enetaddr);
30
dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 4, bd.bi_busfreq);
31
32
/* Unfortunately, the specific model number is encoded in the
33
* soc node name in existing dts files -- once that is fixed,
34
* this can do a simple path lookup.
35
*/
36
soc = find_node_by_devtype(NULL, "soc");
37
if (!soc)
38
soc = find_node_by_compatible(NULL, "fsl,mpc5200-immr");
39
if (!soc)
40
soc = find_node_by_compatible(NULL, "fsl,mpc5200b-immr");
41
if (soc) {
42
setprop(soc, "bus-frequency", &bd.bi_ipbfreq,
43
sizeof(bd.bi_ipbfreq));
44
45
if (!dt_xlate_reg(soc, 0, (void*)&reg, NULL))
46
return;
47
div = in_8(reg + 0x204) & 0x0020 ? 8 : 4;
48
sysfreq = bd.bi_busfreq * div;
49
setprop(soc, "system-frequency", &sysfreq, sizeof(sysfreq));
50
}
51
}
52
53
void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
54
unsigned long r6, unsigned long r7)
55
{
56
CUBOOT_INIT();
57
fdt_init(_dtb_start);
58
serial_console_init();
59
platform_ops.fixups = platform_fixups;
60
}
61
62