siemens: eeprom: clean up definitions
Move the I2C and EEPROM address definitions in common board header.
Reviewed-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>
Signed-off-by: Enrico Leto <enrico.leto@siemens.com>
diff --git a/board/siemens/capricorn/board.c b/board/siemens/capricorn/board.c
index 924c88e..5f7e2b1 100644
--- a/board/siemens/capricorn/board.c
+++ b/board/siemens/capricorn/board.c
@@ -28,6 +28,7 @@
#include <asm/arch-imx8/clock.h>
#endif
#include <linux/delay.h>
+#include "../common/eeprom.h"
#include "../common/factoryset.h"
#define GPIO_PAD_CTRL \
@@ -337,13 +338,11 @@
}
#ifndef CONFIG_SPL_BUILD
-int factoryset_read_eeprom(int i2c_addr);
-
static int load_parameters_from_factoryset(void)
{
int ret;
- ret = factoryset_read_eeprom(EEPROM_I2C_ADDR);
+ ret = factoryset_read_eeprom(SIEMENS_EE_I2C_ADDR);
if (ret)
return ret;
diff --git a/board/siemens/common/board.c b/board/siemens/common/board.c
index d077751..420c496 100644
--- a/board/siemens/common/board.c
+++ b/board/siemens/common/board.c
@@ -34,7 +34,8 @@
#include <cpsw.h>
#include <watchdog.h>
#include <asm/mach-types.h>
-#include "../common/factoryset.h"
+#include "eeprom.h"
+#include "factoryset.h"
DECLARE_GLOBAL_DATA_PTR;
@@ -70,7 +71,6 @@
#endif /* #ifdef CONFIG_SPL_BUILD */
#ifndef CONFIG_SPL_BUILD
-#define FACTORYSET_EEPROM_ADDR 0x50
/*
* Basic board specific setup. Pinmux has been handled already.
*/
@@ -88,7 +88,7 @@
gd->bd->bi_boot_params = CFG_SYS_SDRAM_BASE + 0x100;
#ifdef CONFIG_FACTORYSET
- factoryset_read_eeprom(FACTORYSET_EEPROM_ADDR);
+ factoryset_read_eeprom(SIEMENS_EE_I2C_ADDR);
#endif
gpmc_init();
diff --git a/board/siemens/common/eeprom.h b/board/siemens/common/eeprom.h
new file mode 100644
index 0000000..a21d427
--- /dev/null
+++ b/board/siemens/common/eeprom.h
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright Siemens AG 2023
+ *
+ * Common board definitions for siemens boards
+ */
+
+#ifndef _COMMON_EEPROM_H_
+#define _COMMON_EEPROM_H_
+
+/* EEPROM @ I2C */
+#define SIEMENS_EE_I2C_BUS 0
+#define SIEMENS_EE_I2C_ADDR 0x50
+
+/* EEPROM mapping */
+#define SIEMENS_EE_ADDR_NAND_GEO 0x80
+#define SIEMENS_EE_ADDR_DDR3 0x90
+#define SIEMENS_EE_ADDR_CHIP 0x120
+#define SIEMENS_EE_ADDR_FACTORYSET 0x400
+
+#endif /* _COMMON_EEPROM_H_ */
diff --git a/board/siemens/common/factoryset.c b/board/siemens/common/factoryset.c
index 4e36a6f..b5befab 100644
--- a/board/siemens/common/factoryset.c
+++ b/board/siemens/common/factoryset.c
@@ -22,11 +22,11 @@
#include <net.h>
#include <errno.h>
#include <g_dnl.h>
+#include "eeprom.h"
#include "factoryset.h"
-#define EEPR_PG_SZ 0x80
-#define EEPROM_FATORYSET_OFFSET 0x400
-#define OFF_PG EEPROM_FATORYSET_OFFSET/EEPR_PG_SZ
+#define EEPR_PG_SZ 0x80
+#define OFF_PG (SIEMENS_EE_ADDR_FACTORYSET / EEPR_PG_SZ)
/* Global variable that contains necessary information from FactorySet */
struct factorysetcontainer factory_dat;
@@ -159,7 +159,7 @@
#endif
#if CONFIG_IS_ENABLED(DM_I2C)
- ret = uclass_get_device_by_seq(UCLASS_I2C, EEPROM_I2C_BUS, &bus);
+ ret = uclass_get_device_by_seq(UCLASS_I2C, SIEMENS_EE_I2C_BUS, &bus);
if (ret)
goto err;
@@ -171,14 +171,14 @@
if (ret)
goto err;
- ret = dm_i2c_read(dev, EEPROM_FATORYSET_OFFSET, hdr, sizeof(hdr));
+ ret = dm_i2c_read(dev, SIEMENS_EE_ADDR_FACTORYSET, hdr, sizeof(hdr));
if (ret)
goto err;
#else
if (i2c_probe(i2c_addr))
goto err;
- if (i2c_read(i2c_addr, EEPROM_FATORYSET_OFFSET, 2, hdr, sizeof(hdr)))
+ if (i2c_read(i2c_addr, SIEMENS_EE_ADDR_FACTORYSET, 2, hdr, sizeof(hdr)))
goto err;
#endif
diff --git a/board/siemens/draco/board.c b/board/siemens/draco/board.c
index 8b13d23..367a300 100644
--- a/board/siemens/draco/board.c
+++ b/board/siemens/draco/board.c
@@ -37,6 +37,7 @@
#include <watchdog.h>
#include <linux/delay.h>
#include "board.h"
+#include "../common/eeprom.h"
#include "../common/factoryset.h"
#include <nand.h>
@@ -132,16 +133,12 @@
u8 nand_bus;
};
-#define EEPROM_ADDR 0x50
-#define EEPROM_ADDR_DDR3 0x90
-#define EEPROM_ADDR_CHIP 0x120
-
static int draco_read_nand_geometry(void)
{
struct am335x_nand_geometry geo;
/* Read NAND geometry */
- if (i2c_read(EEPROM_ADDR, 0x80, 2,
+ if (i2c_read(SIEMENS_EE_I2C_ADDR, SIEMENS_EE_ADDR_NAND_GEO, 2,
(uchar *)&geo, sizeof(struct am335x_nand_geometry))) {
printf("Could not read the NAND geomtery; something fundamentally wrong on the I2C bus.\n");
return -EIO;
@@ -164,20 +161,20 @@
static int read_eeprom(void)
{
/* Check if baseboard eeprom is available */
- if (i2c_probe(EEPROM_ADDR)) {
+ if (i2c_probe(SIEMENS_EE_I2C_ADDR)) {
printf("Could not probe the EEPROM; something fundamentally wrong on the I2C bus.\n");
return 1;
}
#ifdef CONFIG_SPL_BUILD
/* Read Siemens eeprom data (DDR3) */
- if (i2c_read(EEPROM_ADDR, EEPROM_ADDR_DDR3, 2,
+ if (i2c_read(SIEMENS_EE_I2C_ADDR, SIEMENS_EE_ADDR_DDR3, 2,
(uchar *)&settings.ddr3, sizeof(struct ddr3_data))) {
printf("Could not read the EEPROM; something fundamentally wrong on the I2C bus.\nUse default DDR3 timings\n");
set_default_ddr3_timings();
}
/* Read Siemens eeprom data (CHIP) */
- if (i2c_read(EEPROM_ADDR, EEPROM_ADDR_CHIP, 2,
+ if (i2c_read(SIEMENS_EE_I2C_ADDR, SIEMENS_EE_ADDR_CHIP, 2,
(uchar *)&settings.chip, sizeof(settings.chip)))
printf("Could not read chip settings\n");
diff --git a/board/siemens/pxm2/board.c b/board/siemens/pxm2/board.c
index 40aee7c..9e85d9b 100644
--- a/board/siemens/pxm2/board.c
+++ b/board/siemens/pxm2/board.c
@@ -36,6 +36,7 @@
#include <cpsw.h>
#include <watchdog.h>
#include "board.h"
+#include "../common/eeprom.h"
#include "../common/factoryset.h"
#include "pmic.h"
#include <nand.h>
diff --git a/board/siemens/rut/board.c b/board/siemens/rut/board.c
index bad0b71..49318b3 100644
--- a/board/siemens/rut/board.c
+++ b/board/siemens/rut/board.c
@@ -36,6 +36,7 @@
#include <watchdog.h>
#include <linux/delay.h>
#include "board.h"
+#include "../common/eeprom.h"
#include "../common/factoryset.h"
/*