xref: /openbmc/linux/arch/powerpc/boot/ep8248e.c (revision d2912cb1)
1d2912cb1SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
20dde1a1dSScott Wood /*
30dde1a1dSScott Wood  * Embedded Planet EP8248E with PlanetCore firmware
40dde1a1dSScott Wood  *
50dde1a1dSScott Wood  * Author: Scott Wood <scottwood@freescale.com>
60dde1a1dSScott Wood  *
70dde1a1dSScott Wood  * Copyright (c) 2007 Freescale Semiconductor, Inc.
80dde1a1dSScott Wood  */
90dde1a1dSScott Wood 
100dde1a1dSScott Wood #include "ops.h"
110dde1a1dSScott Wood #include "stdio.h"
120dde1a1dSScott Wood #include "planetcore.h"
130dde1a1dSScott Wood #include "pq2.h"
140dde1a1dSScott Wood 
150dde1a1dSScott Wood static char *table;
160dde1a1dSScott Wood static u64 mem_size;
170dde1a1dSScott Wood 
180dde1a1dSScott Wood #include <io.h>
190dde1a1dSScott Wood 
platform_fixups(void)200dde1a1dSScott Wood static void platform_fixups(void)
210dde1a1dSScott Wood {
220dde1a1dSScott Wood 	u64 val;
230dde1a1dSScott Wood 
240dde1a1dSScott Wood 	dt_fixup_memory(0, mem_size);
250dde1a1dSScott Wood 	planetcore_set_mac_addrs(table);
260dde1a1dSScott Wood 
270dde1a1dSScott Wood 	if (!planetcore_get_decimal(table, PLANETCORE_KEY_CRYSTAL_HZ, &val)) {
280dde1a1dSScott Wood 		printf("No PlanetCore crystal frequency key.\r\n");
290dde1a1dSScott Wood 		return;
300dde1a1dSScott Wood 	}
310dde1a1dSScott Wood 
320dde1a1dSScott Wood 	pq2_fixup_clocks(val);
330dde1a1dSScott Wood }
340dde1a1dSScott Wood 
platform_init(unsigned long r3,unsigned long r4,unsigned long r5,unsigned long r6,unsigned long r7)350dde1a1dSScott Wood void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
360dde1a1dSScott Wood                    unsigned long r6, unsigned long r7)
370dde1a1dSScott Wood {
380dde1a1dSScott Wood 	table = (char *)r3;
390dde1a1dSScott Wood 	planetcore_prepare_table(table);
400dde1a1dSScott Wood 
410dde1a1dSScott Wood 	if (!planetcore_get_decimal(table, PLANETCORE_KEY_MB_RAM, &mem_size))
420dde1a1dSScott Wood 		return;
430dde1a1dSScott Wood 
440dde1a1dSScott Wood 	mem_size *= 1024 * 1024;
450dde1a1dSScott Wood 	simple_alloc_init(_end, mem_size - (unsigned long)_end, 32, 64);
460dde1a1dSScott Wood 
470dde1a1dSScott Wood 	fdt_init(_dtb_start);
480dde1a1dSScott Wood 
490dde1a1dSScott Wood 	planetcore_set_stdout_path(table);
500dde1a1dSScott Wood 	serial_console_init();
510dde1a1dSScott Wood 	platform_ops.fixups = platform_fixups;
520dde1a1dSScott Wood }
53