10dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood/*
20dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood * Embedded Planet EP8248E with PlanetCore firmware
30dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood *
40dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood * Author: Scott Wood <scottwood@freescale.com>
50dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood *
60dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood * Copyright (c) 2007 Freescale Semiconductor, Inc.
70dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood *
80dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood * This program is free software; you can redistribute it and/or modify it
90dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood * under the terms of the GNU General Public License version 2 as published
100dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood * by the Free Software Foundation.
110dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood */
120dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood
130dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood#include "ops.h"
140dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood#include "stdio.h"
150dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood#include "planetcore.h"
160dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood#include "pq2.h"
170dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood
180dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Woodstatic char *table;
190dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Woodstatic u64 mem_size;
200dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood
210dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood#include <io.h>
220dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood
230dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Woodstatic void platform_fixups(void)
240dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood{
250dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood	u64 val;
260dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood
270dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood	dt_fixup_memory(0, mem_size);
280dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood	planetcore_set_mac_addrs(table);
290dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood
300dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood	if (!planetcore_get_decimal(table, PLANETCORE_KEY_CRYSTAL_HZ, &val)) {
310dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood		printf("No PlanetCore crystal frequency key.\r\n");
320dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood		return;
330dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood	}
340dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood
350dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood	pq2_fixup_clocks(val);
360dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood}
370dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood
380dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Woodvoid platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
390dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood                   unsigned long r6, unsigned long r7)
400dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood{
410dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood	table = (char *)r3;
420dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood	planetcore_prepare_table(table);
430dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood
440dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood	if (!planetcore_get_decimal(table, PLANETCORE_KEY_MB_RAM, &mem_size))
450dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood		return;
460dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood
470dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood	mem_size *= 1024 * 1024;
480dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood	simple_alloc_init(_end, mem_size - (unsigned long)_end, 32, 64);
490dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood
500dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood	fdt_init(_dtb_start);
510dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood
520dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood	planetcore_set_stdout_path(table);
530dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood	serial_console_init();
540dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood	platform_ops.fixups = platform_fixups;
550dde1a1df9ab0615ed08558fb7144e7739e9f565Scott Wood}
56