1/* 2 * U-boot - main board file 3 * 4 * Copyright (c) 2005-2009 Analog Devices Inc. 5 * 6 * Licensed under the GPL-2 or later. 7 */ 8 9#include <common.h> 10#include <config.h> 11#include <net.h> 12#include <netdev.h> 13#include <asm/blackfin.h> 14#include <asm/net.h> 15#include <asm/mach-common/bits/otp.h> 16#include "gpio_cfi_flash.h" 17 18DECLARE_GLOBAL_DATA_PTR; 19 20int checkboard(void) 21{ 22 printf("Board: Bluetechnix CM-BF527 board\n"); 23 printf(" Support: http://www.bluetechnix.at/\n"); 24 return 0; 25} 26 27#ifdef CONFIG_BFIN_MAC 28static void board_init_enetaddr(uchar *mac_addr) 29{ 30 bool valid_mac = false; 31 32 /* the MAC is stored in OTP memory page 0xDF */ 33 uint32_t ret; 34 uint64_t otp_mac; 35 36 ret = bfrom_OtpRead(0xDF, OTP_LOWER_HALF, &otp_mac); 37 if (!(ret & OTP_MASTER_ERROR)) { 38 uchar *otp_mac_p = (uchar *)&otp_mac; 39 40 for (ret = 0; ret < 6; ++ret) 41 mac_addr[ret] = otp_mac_p[5 - ret]; 42 43 if (is_valid_ether_addr(mac_addr)) 44 valid_mac = true; 45 } 46 47 if (!valid_mac) { 48 puts("Warning: Generating 'random' MAC address\n"); 49 bfin_gen_rand_mac(mac_addr); 50 } 51 52 eth_setenv_enetaddr("ethaddr", mac_addr); 53} 54 55int board_eth_init(bd_t *bis) 56{ 57 return bfin_EMAC_initialize(bis); 58} 59#endif 60 61int misc_init_r(void) 62{ 63#ifdef CONFIG_BFIN_MAC 64 uchar enetaddr[6]; 65 if (!eth_getenv_enetaddr("ethaddr", enetaddr)) 66 board_init_enetaddr(enetaddr); 67#endif 68 69 gpio_cfi_flash_init(); 70 71 return 0; 72} 73