diff options
Diffstat (limited to 'board/cmc_pu2/load_sernum_ethaddr.c')
| -rw-r--r-- | board/cmc_pu2/load_sernum_ethaddr.c | 113 | 
1 files changed, 0 insertions, 113 deletions
| diff --git a/board/cmc_pu2/load_sernum_ethaddr.c b/board/cmc_pu2/load_sernum_ethaddr.c deleted file mode 100644 index 6f85dd95b..000000000 --- a/board/cmc_pu2/load_sernum_ethaddr.c +++ /dev/null @@ -1,113 +0,0 @@ -/* - * (C) Copyright 2000, 2001, 2002 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * (C) Copyright 2005 - * Martin Krause, TQ-Systems GmbH, martin.krause@tqs.de - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -/* #define DEBUG */ - -#include <common.h> -#include <net.h> - -#define I2C_CHIP	0x50	/* I2C bus address of onboard EEPROM */ -#define I2C_ALEN	1	/* length of EEPROM addresses in bytes */ -#define I2C_OFFSET	0x0	/* start address of manufacturere data block -				 * in EEPROM */ - -/* 64 Byte manufacturer data block in EEPROM */ -struct manufacturer_data { -	unsigned int	serial_number;	/* serial number (0...999999) */ -	unsigned short	hardware;	/* hardware version (e.g. V1.02) */ -	unsigned short	manuf_date;	/* manufacture date (e.g. 25/02) */ -	unsigned char	name[20];	/* device name (in CHIP.INI) */ -	unsigned char	macadr[6];	/* MAC address */ -	signed char	a_kal[4];	/* calibration value for U */ -	signed char	i_kal[4];	/* calibration value for I */ -	unsigned char	reserve[18];	/* reserved */ -	unsigned short	save_nr;	/* save count */ -	unsigned short	chksum;		/* checksum */ -}; - - -int i2c_read (unsigned char chip, unsigned int addr, int alen, -	      unsigned char *buffer, int len); - -/*----------------------------------------------------------------------- - * Process manufacturer data block in EEPROM: - * - * If we boot on a system fresh from factory, check if the manufacturer data - * in the EEPROM is valid and save some information it contains. - * - * CMC manufacturer data is defined as follows: - * - * - located in the onboard EEPROM - * - starts at offset 0x0 - * - size 0x00000040 - * - * Internal structure: see struct definition - */ - -int misc_init_r(void) -{ -	struct manufacturer_data data; -	char  serial [9]; -	unsigned short chksum; -	unsigned char *p; -	unsigned short i; - -#if !defined(CONFIG_HARD_I2C) && !defined(CONFIG_SOFT_I2C) -#error you must define some I2C support (CONFIG_HARD_I2C or CONFIG_SOFT_I2C) -#endif -	if (i2c_read(I2C_CHIP, I2C_OFFSET, I2C_ALEN, (unsigned char *)&data, -		     sizeof(data)) != 0) { -		puts ("Error reading manufacturer data from EEPROM\n"); -		return -1; -	} - -	/* check if manufacturer data block is valid  */ -	p = (unsigned char *)&data; -	chksum = 0; -	for (i = 0; i < (sizeof(data) - sizeof(data.chksum)); i++) -		chksum += *p++; - -	debug ("checksum of manufacturer data block: %#.4x\n", chksum); - -	if (chksum != data.chksum) { -		puts ("Error: manufacturer data block has invalid checksum\n"); -		return -1; -	} - -	/* copy serial number */ -	sprintf (serial, "%d", data.serial_number); - -	/* set serial# and ethaddr if not yet defined */ -	if (getenv("serial#") == NULL) { -		setenv ("serial#", serial); -	} - -	if (getenv("ethaddr") == NULL) { -		eth_setenv_enetaddr("ethaddr", data.macadr); -	} - -	return 0; -} |