/*
 * U-boot - main board file
 *
 * Copyright (c) 2005-2009 Analog Devices Inc.
 *
 * Licensed under the GPL-2 or later.
 */

#include <common.h>
#include <config.h>
#include <command.h>
#include <net.h>
#include <netdev.h>
#include <asm/blackfin.h>
#include <asm/net.h>
#include "gpio_cfi_flash.h"

DECLARE_GLOBAL_DATA_PTR;

int checkboard(void)
{
	printf("Board: Bluetechnix CM-BF537E board\n");
	printf("       Support: http://www.bluetechnix.at/\n");
	return 0;
}

static void board_init_enetaddr(char *var)
{
	uchar enetaddr[6];

	if (eth_getenv_enetaddr(var, enetaddr))
		return;

	printf("Warning: %s: generating 'random' MAC address\n", var);
	bfin_gen_rand_mac(enetaddr);
	eth_setenv_enetaddr(var, enetaddr);
}

#ifndef CONFIG_BFIN_MAC
# define bfin_EMAC_initialize(x) 1
#endif
#ifndef CONFIG_SMC911X
# define smc911x_initialize(n, x) 1
#endif
int board_eth_init(bd_t *bis)
{
	/* return ok if at least 1 eth device works */
	return bfin_EMAC_initialize(bis) &
	       smc911x_initialize(0, CONFIG_SMC911X_BASE);
}

int misc_init_r(void)
{
	board_init_enetaddr("ethaddr");
	board_init_enetaddr("eth1addr");

	gpio_cfi_flash_init();

	return 0;
}
