/*
 * arch/ppc/boot/simple/misc-katana.c
 *
 * Set up MPSC values to bootwrapper can prompt user.
 *
 * Author: Mark A. Greer <source@mvista.com>
 *
 * 2004 (c) MontaVista Software, Inc. This file is licensed under
 * the terms of the GNU General Public License version 2. This program
 * is licensed "as is" without any warranty of any kind, whether express
 * or implied.
 */

#include <linux/config.h>
#include <linux/types.h>
#include <asm/io.h>
#include <asm/mv64x60_defs.h>
#include <platforms/katana.h>

extern u32 mv64x60_console_baud;
extern u32 mv64x60_mpsc_clk_src;
extern u32 mv64x60_mpsc_clk_freq;

/* Not in the kernel so won't include kernel.h to get its 'min' definition */
#ifndef min
#define	min(a,b)	(((a) < (b)) ? (a) : (b))
#endif

void
mv64x60_board_init(void __iomem *old_base, void __iomem *new_base)
{
	mv64x60_console_baud = KATANA_DEFAULT_BAUD;
	mv64x60_mpsc_clk_src = KATANA_MPSC_CLK_SRC;
	mv64x60_mpsc_clk_freq =
		min(katana_bus_freq((void __iomem *)KATANA_CPLD_BASE),
			MV64x60_TCLK_FREQ_MAX);
}
