xref: /openbmc/linux/arch/powerpc/boot/ep88xc.c (revision d2912cb1)
1d2912cb1SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
211c146ccSScott Wood /*
311c146ccSScott Wood  * Embedded Planet EP88xC with PlanetCore firmware
411c146ccSScott Wood  *
511c146ccSScott Wood  * Author: Scott Wood <scottwood@freescale.com>
611c146ccSScott Wood  *
711c146ccSScott Wood  * Copyright (c) 2007 Freescale Semiconductor, Inc.
811c146ccSScott Wood  */
911c146ccSScott Wood 
1011c146ccSScott Wood #include "ops.h"
1111c146ccSScott Wood #include "stdio.h"
1211c146ccSScott Wood #include "planetcore.h"
1311c146ccSScott Wood #include "mpc8xx.h"
1411c146ccSScott Wood 
1511c146ccSScott Wood static char *table;
1611c146ccSScott Wood static u64 mem_size;
1711c146ccSScott Wood 
platform_fixups(void)1811c146ccSScott Wood static void platform_fixups(void)
1911c146ccSScott Wood {
2011c146ccSScott Wood 	u64 val;
2111c146ccSScott Wood 
2211c146ccSScott Wood 	dt_fixup_memory(0, mem_size);
2311c146ccSScott Wood 	planetcore_set_mac_addrs(table);
2411c146ccSScott Wood 
2511c146ccSScott Wood 	if (!planetcore_get_decimal(table, PLANETCORE_KEY_CRYSTAL_HZ, &val)) {
2611c146ccSScott Wood 		printf("No PlanetCore crystal frequency key.\r\n");
2711c146ccSScott Wood 		return;
2811c146ccSScott Wood 	}
2911c146ccSScott Wood 
3011c146ccSScott Wood 	mpc885_fixup_clocks(val);
3111c146ccSScott Wood }
3211c146ccSScott Wood 
platform_init(unsigned long r3,unsigned long r4,unsigned long r5,unsigned long r6,unsigned long r7)3311c146ccSScott Wood void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
3411c146ccSScott Wood                    unsigned long r6, unsigned long r7)
3511c146ccSScott Wood {
3611c146ccSScott Wood 	table = (char *)r3;
3711c146ccSScott Wood 	planetcore_prepare_table(table);
3811c146ccSScott Wood 
3911c146ccSScott Wood 	if (!planetcore_get_decimal(table, PLANETCORE_KEY_MB_RAM, &mem_size))
4011c146ccSScott Wood 		return;
4111c146ccSScott Wood 
4211c146ccSScott Wood 	mem_size *= 1024 * 1024;
4311c146ccSScott Wood 	simple_alloc_init(_end, mem_size - (unsigned long)_end, 32, 64);
4411c146ccSScott Wood 
452f0dfeaaSDavid Gibson 	fdt_init(_dtb_start);
4611c146ccSScott Wood 
4711c146ccSScott Wood 	planetcore_set_stdout_path(table);
4811c146ccSScott Wood 
4911c146ccSScott Wood 	serial_console_init();
5011c146ccSScott Wood 	platform_ops.fixups = platform_fixups;
5111c146ccSScott Wood }
52