siemens: capricorn: add HW version information to boot log

Add the HW version read directly from EEPROM.

EEPROM chip data structure is now in a .h file common to draco
and capricorn.

Therefore move out the definitions in draco board to siemens
common place.

From: Alessandro Zini <alessandro.zini@siemens.com>
Signed-off-by: Alessandro Zini <alessandro.zini@siemens.com>
Signed-off-by: Heiko Schocher <hs@denx.de>
This commit is contained in:
Alessandro Zini 2024-11-23 17:52:59 +01:00 committed by Fabio Estevam
parent ca32a1d70a
commit a0aff2a6f5
3 changed files with 67 additions and 8 deletions

View File

@ -26,6 +26,7 @@
#include <asm/arch-imx8/clock.h>
#endif
#include <linux/delay.h>
#include "../common/board.h"
#include "../common/eeprom.h"
#include "../common/factoryset.h"
@ -278,6 +279,26 @@ int checkboard(void)
int board_init(void)
{
struct chip_data eeprom_data = {};
int ret;
ret = siemens_ee_setup();
if (ret) {
printf("'siemens_ee_setup' failed, ret: %d\n", ret);
goto skip;
}
ret = siemens_ee_read_data(SIEMENS_EE_ADDR_CHIP,
(uchar *)&eeprom_data,
sizeof(eeprom_data));
if (ret) {
printf("'siemens_ee_read_data' failed, ret: %d\n", ret);
goto skip;
}
printf("HW Version: %s\n", eeprom_data.shwver);
skip:
setup_fec();
return 0;
}

View File

@ -0,0 +1,44 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
* Common board functions for siemens based boards
* (C) Copyright 2022 Siemens Schweiz AG
*/
#ifndef __COMMON_BOARD_H
#define __COMMON_BOARD_H
/*
* Chip data
* Offset in EEPROM: 0x120 - 0x14F
*
* -----------------------------------------------------------------------------------
* | Address range | Content |
* -----------------------------------------------------------------------------------
* | 0x120 - 0x123 | Magic Number - 0x43484950 (4 byte) |
* -----------------------------------------------------------------------------------
* | 0x124 - 0x133 | Device Nomenclature (15 + 1 byte) |
* -----------------------------------------------------------------------------------
* | 0x134 - 0x13A | HW Version of the form "v00.00" (6 + 1 byte) |
* | | - First 2 digits: Layout revision (starting from 1) |
* | | - Last 2 digits: Assembly variant revision (starting from 1) |
* -----------------------------------------------------------------------------------
* | 0x13B - 0x13F | Flash Size in Gibit (4 + 1 byte) |
* -----------------------------------------------------------------------------------
* | 0x140 - 0x144 | Ram Size in Gibit (4 + 1 byte) |
* -----------------------------------------------------------------------------------
* | 0x145 - 0x14F | Sequence number, equals DMC-code (10 + 1 byte) [OBSOLETE] |
* -----------------------------------------------------------------------------------
*/
#define MAGIC_CHIP 0x50494843
#define EEPROM_CHIP_OFFSET 0x120
struct chip_data {
unsigned int magic;
char sdevname[16];
char shwver[7];
char flash_size[5];
char ram_size[5];
};
#endif /* __COMMON_BOARD_H */

View File

@ -11,6 +11,8 @@
#ifndef _BOARD_DRACO_H_
#define _BOARD_DRACO_H_
#include "../common/board.h"
#define PARGS(x) #x , /* Parameter Name */ \
settings.ddr3.x, /* EEPROM Value */ \
ddr3_default.x, /* Default Value */ \
@ -18,8 +20,6 @@
#define PRINTARGS(y) printf("%-20s, %8x, %8x, %4d\n", PARGS(y))
#define MAGIC_CHIP 0x50494843
/* Automatic generated definition */
/* Wed, 16 Apr 2014 16:50:41 +0200 */
/* From file: draco/ddr3-data-universal-default@303MHz-i0-ES3.txt */
@ -43,12 +43,6 @@ struct ddr3_data {
char manu_marking[32]; /* "default \0" */
};
struct chip_data {
unsigned int magic;
char sdevname[16];
char shwver[7];
};
struct draco_baseboard_id {
struct ddr3_data ddr3;
struct chip_data chip;