aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2024-02-05 13:33:01 -0500
committerTom Rini <trini@konsulko.com>2024-02-05 13:33:01 -0500
commitdaa3100250839dd30626f7f4b7daf041f1114f1c (patch)
tree95432fffa7178913998981cf721f2d0add4e4d3e
parent090d8463b07c9c48f76f3cd14cf0e4bb8f884825 (diff)
parentb062eef0755d1f16eeddda0675e0e526747221af (diff)
downloadu-boot-WIP/05Feb2024.zip
u-boot-WIP/05Feb2024.tar.gz
u-boot-WIP/05Feb2024.tar.bz2
Merge patch series "board: siemens: clean up subfolders"WIP/05Feb2024
Enrico Leto <enrico.leto@siemens.com> says: The common folder was initialially created for the common parts of the products based on draco-am355x board family. We have the product lines 'pxm2', 'rut' and the base line unfortunately named 'draco'! Adding the new capricorn-imx8 board family, the files were enhanced without cleanup. Simplify first EEPROM probe and access that implements both i2c with & without driver model. Use abstraction functions for this. Move all am355x specifics to a new file 'board_am335x'. Clean-up includes, config checks, maintainer.
-rw-r--r--board/siemens/capricorn/Makefile1
-rw-r--r--board/siemens/capricorn/board.c6
-rw-r--r--board/siemens/common/board_am335x.c (renamed from board/siemens/common/board.c)44
-rw-r--r--board/siemens/common/board_am335x.h39
-rw-r--r--board/siemens/common/eeprom.c52
-rw-r--r--board/siemens/common/eeprom.h24
-rw-r--r--board/siemens/common/factoryset.c87
-rw-r--r--board/siemens/common/factoryset.h2
-rw-r--r--board/siemens/draco/Kconfig2
-rw-r--r--board/siemens/draco/Makefile2
-rw-r--r--board/siemens/draco/board.c87
-rw-r--r--board/siemens/draco/board.h31
-rw-r--r--board/siemens/draco/mux.c6
-rw-r--r--board/siemens/pxm2/MAINTAINERS2
-rw-r--r--board/siemens/pxm2/Makefile2
-rw-r--r--board/siemens/pxm2/board.c39
-rw-r--r--board/siemens/pxm2/board.h21
-rw-r--r--board/siemens/pxm2/mux.c6
-rw-r--r--board/siemens/rut/MAINTAINERS2
-rw-r--r--board/siemens/rut/Makefile2
-rw-r--r--board/siemens/rut/board.c38
-rw-r--r--board/siemens/rut/board.h21
-rw-r--r--board/siemens/rut/mux.c4
-rw-r--r--configs/draco-etamin_defconfig4
-rw-r--r--configs/draco-rastaban_defconfig4
-rw-r--r--configs/draco-thuban_defconfig4
-rw-r--r--include/configs/draco-etamin.h3
-rw-r--r--include/configs/draco-rastaban.h3
-rw-r--r--include/configs/draco-thuban.h3
29 files changed, 216 insertions, 325 deletions
diff --git a/board/siemens/capricorn/Makefile b/board/siemens/capricorn/Makefile
index d5846cc..4dafac1 100644
--- a/board/siemens/capricorn/Makefile
+++ b/board/siemens/capricorn/Makefile
@@ -4,6 +4,7 @@
#
obj-y += board.o
+obj-y += ../common/eeprom.o
ifdef CONFIG_SPL_BUILD
obj-y += spl.o
diff --git a/board/siemens/capricorn/board.c b/board/siemens/capricorn/board.c
index 924c88e..0d66a75 100644
--- a/board/siemens/capricorn/board.c
+++ b/board/siemens/capricorn/board.c
@@ -22,12 +22,12 @@
#include <asm/gpio.h>
#include <asm/arch/imx8-pins.h>
#include <asm/arch/iomux.h>
-#include <firmware/imx/sci/sci.h>
#include <asm/arch/sys_proto.h>
#ifndef CONFIG_SPL
#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 +337,11 @@ void board_late_mmc_env_init(void)
}
#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_am335x.c
index d077751..445af9d 100644
--- a/board/siemens/common/board.c
+++ b/board/siemens/common/board_am335x.c
@@ -9,35 +9,20 @@
* Copyright (C) 2011, Texas Instruments, Incorporated - https://www.ti.com/
*/
-#include <common.h>
#include <command.h>
-#include <env.h>
-#include <errno.h>
-#include <init.h>
-#include <malloc.h>
#include <serial.h>
-#include <spl.h>
-#include <asm/arch/cpu.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/omap.h>
-#include <asm/arch/ddr_defs.h>
+#include <watchdog.h>
#include <asm/arch/clock.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/mmc_host_def.h>
#include <asm/arch/sys_proto.h>
-#include <asm/global_data.h>
-#include <asm/io.h>
-#include <asm/emif.h>
#include <asm/gpio.h>
-#include <i2c.h>
-#include <miiphy.h>
-#include <cpsw.h>
-#include <watchdog.h>
#include <asm/mach-types.h>
-#include "../common/factoryset.h"
+#include "board_am335x.h"
+#include "eeprom.h"
+#include "factoryset.h"
DECLARE_GLOBAL_DATA_PTR;
+
#ifdef CONFIG_SPL_BUILD
void set_uart_mux_conf(void)
{
@@ -48,13 +33,14 @@ void set_mux_conf_regs(void)
{
/* Initalize the board header */
enable_i2c0_pin_mux();
- i2c_set_bus_num(0);
/* enable early the console */
gd->baudrate = CONFIG_BAUDRATE;
serial_init();
gd->have_console = 1;
- if (read_eeprom() < 0)
+
+ siemens_ee_setup();
+ if (draco_read_eeprom() < 0)
puts("Could not get board ID.\n");
enable_board_pin_mux();
@@ -62,15 +48,14 @@ void set_mux_conf_regs(void)
void sdram_init(void)
{
- spl_siemens_board_init();
- board_init_ddr();
+ spl_draco_board_init();
+ draco_init_ddr();
return;
}
#endif /* #ifdef CONFIG_SPL_BUILD */
#ifndef CONFIG_SPL_BUILD
-#define FACTORYSET_EEPROM_ADDR 0x50
/*
* Basic board specific setup. Pinmux has been handled already.
*/
@@ -79,8 +64,7 @@ int board_init(void)
#if defined(CONFIG_HW_WATCHDOG)
hw_watchdog_init();
#endif /* defined(CONFIG_HW_WATCHDOG) */
- i2c_set_bus_num(0);
- if (read_eeprom() < 0)
+ if (siemens_ee_setup() < 0)
puts("Could not get board ID.\n");
#ifdef CONFIG_MACH_TYPE
gd->bd->bi_arch_number = CONFIG_MACH_TYPE;
@@ -88,15 +72,11 @@ int board_init(void)
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();
-#if CONFIG_IS_ENABLED(NAND_CS_INIT)
- board_nand_cs_init();
-#endif
-
return 0;
}
#endif /* #ifndef CONFIG_SPL_BUILD */
diff --git a/board/siemens/common/board_am335x.h b/board/siemens/common/board_am335x.h
new file mode 100644
index 0000000..3a20352
--- /dev/null
+++ b/board/siemens/common/board_am335x.h
@@ -0,0 +1,39 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Board definitions for draco products
+ *
+ * (C) Copyright 2013 Siemens Schweiz AG
+ * (C) Heiko Schocher, DENX Software Engineering, hs@denx.de.
+ *
+ * Based on:
+ * TI AM335x boards information header
+ * u-boot:/board/ti/am335x/board.h
+ *
+ * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
+ */
+
+#ifndef _BOARD_AM335X_H_
+#define _BOARD_AM335X_H_
+
+#include "eeprom.h"
+
+/* Common functions with product specific implementation */
+void spl_draco_board_init(void);
+void draco_init_ddr(void);
+int draco_read_eeprom(void);
+
+#ifdef CONFIG_SPL_BUILD
+/* Mux for init: uart?, i2c0 to read the main EEPROM */
+void enable_uart0_pin_mux(void);
+void enable_uart1_pin_mux(void);
+void enable_uart2_pin_mux(void);
+void enable_uart3_pin_mux(void);
+void enable_uart4_pin_mux(void);
+void enable_uart5_pin_mux(void);
+void enable_i2c0_pin_mux(void);
+
+/* Main mux function to enable other pinmux required on the board */
+void enable_board_pin_mux(void);
+#endif /* CONFIG_SPL_BUILD */
+
+#endif /* _BOARD_AM335X_H_ */
diff --git a/board/siemens/common/eeprom.c b/board/siemens/common/eeprom.c
new file mode 100644
index 0000000..fc93df9
--- /dev/null
+++ b/board/siemens/common/eeprom.c
@@ -0,0 +1,52 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ *
+ * Read EEPROM data
+ * (C) Copyright 2024 Siemens AG
+ */
+
+#include <dm/uclass.h>
+#include <i2c.h>
+#include "eeprom.h"
+
+#if CONFIG_IS_ENABLED(DM_I2C)
+static struct udevice *i2c_dev;
+#endif
+
+/* Probe I2C and set-up EEPROM */
+int siemens_ee_setup(void)
+{
+#if CONFIG_IS_ENABLED(DM_I2C)
+ struct udevice *bus;
+ int ret;
+
+ ret = uclass_get_device_by_seq(UCLASS_I2C, SIEMENS_EE_I2C_BUS, &bus);
+ if (ret)
+ goto err;
+
+ ret = dm_i2c_probe(bus, SIEMENS_EE_I2C_ADDR, 0, &i2c_dev);
+ if (ret)
+ goto err;
+ if (i2c_set_chip_offset_len(i2c_dev, 2))
+ goto err;
+#else
+ i2c_set_bus_num(SIEMENS_EE_I2C_BUS);
+ if (i2c_probe(SIEMENS_EE_I2C_ADDR))
+ goto err;
+#endif
+ return 0;
+
+err:
+ printf("Could not probe the EEPROM; something fundamentally wrong on the I2C bus.\n");
+ return 1;
+}
+
+/* Read data from EEPROM */
+int siemens_ee_read_data(uint address, uchar *buffer, int len)
+{
+#if CONFIG_IS_ENABLED(DM_I2C)
+ return dm_i2c_read(i2c_dev, address, buffer, len);
+#else
+ return i2c_read(SIEMENS_EE_I2C_ADDR, address, 2, buffer, len);
+#endif
+}
diff --git a/board/siemens/common/eeprom.h b/board/siemens/common/eeprom.h
new file mode 100644
index 0000000..a5ef5ab
--- /dev/null
+++ b/board/siemens/common/eeprom.h
@@ -0,0 +1,24 @@
+/* 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
+
+int siemens_ee_setup(void);
+int siemens_ee_read_data(uint address, uchar *buffer, int len);
+
+#endif /* _COMMON_EEPROM_H_ */
diff --git a/board/siemens/common/factoryset.c b/board/siemens/common/factoryset.c
index 4e36a6f..a250ccf 100644
--- a/board/siemens/common/factoryset.c
+++ b/board/siemens/common/factoryset.c
@@ -7,26 +7,18 @@
#if !defined(CONFIG_SPL_BUILD)
-#include <common.h>
#include <env.h>
-#include <dm.h>
-#include <env_internal.h>
-#include <i2c.h>
-#include <log.h>
+#include <g_dnl.h>
+#include <net.h>
#include <asm/io.h>
-#if !CONFIG_IS_ENABLED(TARGET_GIEDI) && !CONFIG_IS_ENABLED(TARGET_DENEB)
+#if CONFIG_IS_ENABLED(AM33XX)
#include <asm/arch/cpu.h>
#endif
-#include <asm/arch/sys_proto.h>
-#include <asm/unaligned.h>
-#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;
@@ -148,39 +140,14 @@ int factoryset_read_eeprom(int i2c_addr)
int i, pages = 0, size = 0;
unsigned char eeprom_buf[0x3c00], hdr[4], buf[MAX_STRING_LENGTH];
unsigned char *cp, *cp1;
-#if CONFIG_IS_ENABLED(DM_I2C)
- struct udevice *bus, *dev;
- int ret;
-#endif
#if defined(CONFIG_DFU_OVER_USB)
factory_dat.usb_vendor_id = CONFIG_USB_GADGET_VENDOR_NUM;
factory_dat.usb_product_id = CONFIG_USB_GADGET_PRODUCT_NUM;
#endif
-#if CONFIG_IS_ENABLED(DM_I2C)
- ret = uclass_get_device_by_seq(UCLASS_I2C, EEPROM_I2C_BUS, &bus);
- if (ret)
- goto err;
-
- ret = dm_i2c_probe(bus, i2c_addr, 0, &dev);
- if (ret)
- goto err;
-
- ret = i2c_set_chip_offset_len(dev, 2);
- if (ret)
- goto err;
-
- ret = dm_i2c_read(dev, EEPROM_FATORYSET_OFFSET, 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 (siemens_ee_read_data(SIEMENS_EE_ADDR_FACTORYSET, hdr, sizeof(hdr)))
goto err;
-#endif
if ((hdr[0] != 0x99) || (hdr[1] != 0x80)) {
printf("FactorySet is not right in eeprom.\n");
@@ -201,33 +168,16 @@ int factoryset_read_eeprom(int i2c_addr)
* data after every time we got a record from eeprom
*/
debug("Read eeprom page :\n");
- for (i = 0; i < pages; i++) {
-#if CONFIG_IS_ENABLED(DM_I2C)
- ret = dm_i2c_read(dev, (OFF_PG + i) * EEPR_PG_SZ,
- eeprom_buf + (i * EEPR_PG_SZ), EEPR_PG_SZ);
- if (ret)
- goto err;
-#else
- if (i2c_read(i2c_addr, (OFF_PG + i) * EEPR_PG_SZ, 2,
- eeprom_buf + (i * EEPR_PG_SZ), EEPR_PG_SZ))
+ for (i = 0; i < pages; i++)
+ if (siemens_ee_read_data((OFF_PG + i) * EEPR_PG_SZ,
+ eeprom_buf + (i * EEPR_PG_SZ), EEPR_PG_SZ))
goto err;
-#endif
- }
- if (size % EEPR_PG_SZ) {
-#if CONFIG_IS_ENABLED(DM_I2C)
- ret = dm_i2c_read(dev, (OFF_PG + pages) * EEPR_PG_SZ,
- eeprom_buf + (pages * EEPR_PG_SZ),
- size % EEPR_PG_SZ);
- if (ret)
- goto err;
-#else
- if (i2c_read(i2c_addr, (OFF_PG + pages) * EEPR_PG_SZ, 2,
- eeprom_buf + (pages * EEPR_PG_SZ),
- (size % EEPR_PG_SZ)))
+ if (size % EEPR_PG_SZ)
+ if (siemens_ee_read_data((OFF_PG + pages) * EEPR_PG_SZ,
+ eeprom_buf + (pages * EEPR_PG_SZ),
+ size % EEPR_PG_SZ))
goto err;
-#endif
- }
/* we do below just for eeprom align */
for (i = 0; i < size; i++)
@@ -247,11 +197,10 @@ int factoryset_read_eeprom(int i2c_addr)
cp1 += 3;
}
-#if CONFIG_IS_ENABLED(TARGET_GIEDI) || CONFIG_IS_ENABLED(TARGET_DENEB)
+#if CONFIG_IS_ENABLED(IMX8)
/* get mac address for WLAN */
- ret = get_factory_record_val(cp, size, (uchar *)"WLAN1", (uchar *)"mac",
- buf, MAX_STRING_LENGTH);
- if (ret > 0) {
+ if (get_factory_record_val(cp, size, (uchar *)"WLAN1", (uchar *)"mac",
+ buf, MAX_STRING_LENGTH) > 0) {
cp1 = buf;
for (i = 0; i < 6; i++) {
factory_dat.mac_wlan[i] = hextoul((char *)cp1, NULL);
@@ -355,7 +304,7 @@ static int factoryset_mac_env_set(void)
eth_env_set_enetaddr("ethaddr", mac_addr);
-#if CONFIG_IS_ENABLED(TARGET_GIEDI) || CONFIG_IS_ENABLED(TARGET_DENEB)
+#if CONFIG_IS_ENABLED(IMX8)
eth_env_set_enetaddr("eth1addr", mac_addr);
/* wlan mac */
diff --git a/board/siemens/common/factoryset.h b/board/siemens/common/factoryset.h
index 8fa6c3b..ee8bcd0 100644
--- a/board/siemens/common/factoryset.h
+++ b/board/siemens/common/factoryset.h
@@ -11,7 +11,7 @@
struct factorysetcontainer {
uchar mac[6];
-#if CONFIG_IS_ENABLED(TARGET_GIEDI) || CONFIG_IS_ENABLED(TARGET_DENEB)
+#if CONFIG_IS_ENABLED(IMX8)
uchar mac_wlan[6];
#endif
int usb_vendor_id;
diff --git a/board/siemens/draco/Kconfig b/board/siemens/draco/Kconfig
index 0cdf5bc..9d45c42 100644
--- a/board/siemens/draco/Kconfig
+++ b/board/siemens/draco/Kconfig
@@ -44,6 +44,4 @@ config SYS_SOC
config SYS_CONFIG_NAME
default "draco-etamin"
-config NAND_CS_INIT
- def_bool y
endif
diff --git a/board/siemens/draco/Makefile b/board/siemens/draco/Makefile
index e94456a..aae5364 100644
--- a/board/siemens/draco/Makefile
+++ b/board/siemens/draco/Makefile
@@ -14,6 +14,8 @@ obj-y := mux.o
endif
obj-y += board.o
+obj-y += ../common/board_am335x.o
+obj-y += ../common/eeprom.o
ifndef CONFIG_SPL_BUILD
obj-y += ../common/factoryset.o
endif
diff --git a/board/siemens/draco/board.c b/board/siemens/draco/board.c
index 8b13d23..fc3eb06 100644
--- a/board/siemens/draco/board.c
+++ b/board/siemens/draco/board.c
@@ -12,33 +12,21 @@
* Copyright (C) 2011, Texas Instruments, Incorporated - https://www.ti.com/
*/
-#include <common.h>
#include <command.h>
+#include <cpsw.h>
#include <env.h>
-#include <errno.h>
#include <init.h>
-#include <net.h>
-#include <spl.h>
-#include <asm/arch/cpu.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/omap.h>
-#include <asm/arch/ddr_defs.h>
+#include <linux/delay.h>
+#include <nand.h>
#include <asm/arch/clock.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/mmc_host_def.h>
-#include <asm/arch/sys_proto.h>
+#include <asm/arch/ddr_defs.h>
#include <asm/arch/mem.h>
-#include <asm/io.h>
-#include <asm/emif.h>
+#include <asm/arch/sys_proto.h>
#include <asm/gpio.h>
-#include <i2c.h>
-#include <miiphy.h>
-#include <cpsw.h>
-#include <watchdog.h>
-#include <linux/delay.h>
+#include <asm/io.h>
#include "board.h"
+#include "../common/eeprom.h"
#include "../common/factoryset.h"
-#include <nand.h>
#ifdef CONFIG_SPL_BUILD
static struct draco_baseboard_id __section(".data") settings;
@@ -132,17 +120,13 @@ struct am335x_nand_geometry {
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,
- (uchar *)&geo, sizeof(struct am335x_nand_geometry))) {
+ if (siemens_ee_read_data(SIEMENS_EE_ADDR_NAND_GEO, (uchar *)&geo,
+ sizeof(struct am335x_nand_geometry))) {
printf("Could not read the NAND geomtery; something fundamentally wrong on the I2C bus.\n");
return -EIO;
}
@@ -158,27 +142,21 @@ static int draco_read_nand_geometry(void)
return 0;
}
+#ifdef CONFIG_SPL_BUILD
/*
* Read header information from EEPROM into global structure.
*/
-static int read_eeprom(void)
+int draco_read_eeprom(void)
{
- /* Check if baseboard eeprom is available */
- if (i2c_probe(EEPROM_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,
- (uchar *)&settings.ddr3, sizeof(struct ddr3_data))) {
+ if (siemens_ee_read_data(SIEMENS_EE_ADDR_DDR3, (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,
- (uchar *)&settings.chip, sizeof(settings.chip)))
+ if (siemens_ee_read_data(SIEMENS_EE_ADDR_CHIP, (uchar *)&settings.chip,
+ sizeof(settings.chip)))
printf("Could not read chip settings\n");
if (ddr3_default.magic == settings.ddr3.magic &&
@@ -202,12 +180,9 @@ static int read_eeprom(void)
print_ddr3_timings();
return draco_read_nand_geometry();
-#endif
- return 0;
}
-#ifdef CONFIG_SPL_BUILD
-static void board_init_ddr(void)
+void draco_init_ddr(void)
{
struct emif_regs draco_ddr3_emif_reg_data = {
.zq_config = 0x50074BE4,
@@ -254,7 +229,7 @@ struct ctrl_ioregs draco_ddr3_ioregs = {
&draco_ddr3_cmd_ctrl_data, &draco_ddr3_emif_reg_data, 0);
}
-static void spl_siemens_board_init(void)
+void spl_draco_board_init(void)
{
return;
}
@@ -369,31 +344,3 @@ U_BOOT_CMD(
);
#endif /* #if defined(CONFIG_DRIVER_TI_CPSW) */
#endif /* #if (defined(CONFIG_DRIVER_TI_CPSW) && !defined(CONFIG_SPL_BUILD)) */
-
-#if CONFIG_IS_ENABLED(NAND_CS_INIT)
-#define ETAMIN_NAND_GPMC_CONFIG1 0x00000800
-#define ETAMIN_NAND_GPMC_CONFIG2 0x001e1e00
-#define ETAMIN_NAND_GPMC_CONFIG3 0x001e1e00
-#define ETAMIN_NAND_GPMC_CONFIG4 0x16051807
-#define ETAMIN_NAND_GPMC_CONFIG5 0x00151e1e
-#define ETAMIN_NAND_GPMC_CONFIG6 0x16000f80
-
-/* GPMC definitions for second nand cs1 */
-static const u32 gpmc_nand_config[] = {
- ETAMIN_NAND_GPMC_CONFIG1,
- ETAMIN_NAND_GPMC_CONFIG2,
- ETAMIN_NAND_GPMC_CONFIG3,
- ETAMIN_NAND_GPMC_CONFIG4,
- ETAMIN_NAND_GPMC_CONFIG5,
- ETAMIN_NAND_GPMC_CONFIG6,
- /*CONFIG7- computed as params */
-};
-
-static void board_nand_cs_init(void)
-{
- enable_gpmc_cs_config(gpmc_nand_config, &gpmc_cfg->cs[1],
- 0x18000000, GPMC_SIZE_16M);
-}
-#endif
-
-#include "../common/board.c"
diff --git a/board/siemens/draco/board.h b/board/siemens/draco/board.h
index f027427..935f340 100644
--- a/board/siemens/draco/board.h
+++ b/board/siemens/draco/board.h
@@ -1,19 +1,15 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
- * board.h
+ * Board definitions for draco products
*
* (C) Copyright 2013 Siemens Schweiz AG
* (C) Heiko Schocher, DENX Software Engineering, hs@denx.de.
*
- * Based on:
- * TI AM335x boards information header
- * u-boot:/board/ti/am335x/board.h
- *
- * Copyright (C) 2011, Texas Instruments, Incorporated - https://www.ti.com/
+ * TI am335x specifics moved to ../common/board_am335x.h
*/
-#ifndef _BOARD_H_
-#define _BOARD_H_
+#ifndef _BOARD_DRACO_H_
+#define _BOARD_DRACO_H_
#define PARGS(x) #x , /* Parameter Name */ \
settings.ddr3.x, /* EEPROM Value */ \
@@ -58,21 +54,4 @@ struct draco_baseboard_id {
struct chip_data chip;
};
-/*
- * We have three pin mux functions that must exist. We must be able to enable
- * uart0, for initial output and i2c0 to read the main EEPROM. We then have a
- * main pinmux function that can be overridden to enable all other pinmux that
- * is required on the board.
- */
-void enable_uart0_pin_mux(void);
-void enable_uart1_pin_mux(void);
-void enable_uart2_pin_mux(void);
-void enable_uart3_pin_mux(void);
-void enable_uart4_pin_mux(void);
-void enable_uart5_pin_mux(void);
-void enable_i2c0_pin_mux(void);
-void enable_board_pin_mux(void);
-
-/* Forwared declaration, defined in common board.c */
-void set_env_gpios(unsigned char state);
-#endif
+#endif /* _BOARD_DRACO_H_ */
diff --git a/board/siemens/draco/mux.c b/board/siemens/draco/mux.c
index 2632f05..4149e62 100644
--- a/board/siemens/draco/mux.c
+++ b/board/siemens/draco/mux.c
@@ -10,13 +10,11 @@
* Copyright (C) 2011 Texas Instruments Incorporated - https://www.ti.com/
*/
-#include <common.h>
+#include <asm/io.h>
#include <asm/arch/sys_proto.h>
#include <asm/arch/hardware.h>
#include <asm/arch/mux.h>
-#include <asm/io.h>
-#include <i2c.h>
-#include "board.h"
+#include "eeprom.h"
static struct module_pin_mux uart0_pin_mux[] = {
{OFFSET(uart0_rxd), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* UART0_RXD */
diff --git a/board/siemens/pxm2/MAINTAINERS b/board/siemens/pxm2/MAINTAINERS
index dc02fe8..4902544 100644
--- a/board/siemens/pxm2/MAINTAINERS
+++ b/board/siemens/pxm2/MAINTAINERS
@@ -1,5 +1,5 @@
PXM2 BOARD
-M: Samuel Egli <samuel.egli@siemens.com>
+M: Enrico Leto <enrico.leto@siemens.com>
S: Maintained
F: board/siemens/pxm2/
F: include/configs/pxm2.h
diff --git a/board/siemens/pxm2/Makefile b/board/siemens/pxm2/Makefile
index e94456a..aae5364 100644
--- a/board/siemens/pxm2/Makefile
+++ b/board/siemens/pxm2/Makefile
@@ -14,6 +14,8 @@ obj-y := mux.o
endif
obj-y += board.o
+obj-y += ../common/board_am335x.o
+obj-y += ../common/eeprom.o
ifndef CONFIG_SPL_BUILD
obj-y += ../common/factoryset.o
endif
diff --git a/board/siemens/pxm2/board.c b/board/siemens/pxm2/board.c
index 40aee7c..888c7c0 100644
--- a/board/siemens/pxm2/board.c
+++ b/board/siemens/pxm2/board.c
@@ -12,37 +12,24 @@
* Copyright (C) 2011, Texas Instruments, Incorporated - https://www.ti.com/
*/
-#include <common.h>
+#include <cpsw.h>
#include <env.h>
-#include <errno.h>
+#include <i2c.h>
#include <init.h>
-#include <log.h>
-#include <malloc.h>
+#include <nand.h>
#include <net.h>
-#include <spl.h>
-#include <asm/arch/cpu.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/omap.h>
-#include <asm/arch/ddr_defs.h>
#include <asm/arch/clock.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/mmc_host_def.h>
+#include <asm/arch/ddr_defs.h>
#include <asm/arch/sys_proto.h>
-#include <asm/io.h>
-#include <asm/emif.h>
#include <asm/gpio.h>
-#include <i2c.h>
-#include <miiphy.h>
-#include <cpsw.h>
-#include <watchdog.h>
-#include "board.h"
-#include "../common/factoryset.h"
+#include <asm/io.h>
#include "pmic.h"
-#include <nand.h>
-#include <bmp_layout.h>
+#include "../common/board_am335x.h"
+#include "../common/eeprom.h"
+#include "../common/factoryset.h"
#ifdef CONFIG_SPL_BUILD
-static void board_init_ddr(void)
+void draco_init_ddr(void)
{
struct emif_regs pxm2_ddr3_emif_reg_data = {
.sdram_config = 0x41805332,
@@ -134,7 +121,7 @@ int voltage_update(unsigned int module, unsigned char vddx_op_vol_sel)
const struct dpll_params dpll_mpu_pxm2 = {
720, OSC-1, 1, -1, -1, -1, -1};
-void spl_siemens_board_init(void)
+void spl_draco_board_init(void)
{
uchar buf[4];
/*
@@ -160,14 +147,14 @@ void spl_siemens_board_init(void)
printf("voltage update failed\n");
}
}
-#endif /* if def CONFIG_SPL_BUILD */
-int read_eeprom(void)
+int draco_read_eeprom(void)
{
/* nothing ToDo here for this board */
return 0;
}
+#endif /* if def CONFIG_SPL_BUILD */
#if (defined(CONFIG_DRIVER_TI_CPSW) && !defined(CONFIG_SPL_BUILD)) || \
(defined(CONFIG_SPL_ETH) && defined(CONFIG_SPL_BUILD))
@@ -274,5 +261,3 @@ int board_late_init(void)
return 0;
}
#endif
-
-#include "../common/board.c"
diff --git a/board/siemens/pxm2/board.h b/board/siemens/pxm2/board.h
deleted file mode 100644
index 9067e4d..0000000
--- a/board/siemens/pxm2/board.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * board.h
- *
- * (C) Copyright 2013 Siemens Schweiz AG
- * (C) Heiko Schocher, DENX Software Engineering, hs@denx.de.
- *
- * Based on:
- * TI AM335x boards information header
- * u-boot:/board/ti/am335x/board.h
- *
- * Copyright (C) 2011, Texas Instruments, Incorporated - https://www.ti.com/
- */
-
-#ifndef _BOARD_H_
-#define _BOARD_H_
-
-void enable_uart0_pin_mux(void);
-void enable_i2c0_pin_mux(void);
-void enable_board_pin_mux(void);
-#endif
diff --git a/board/siemens/pxm2/mux.c b/board/siemens/pxm2/mux.c
index d21ef47..bdf460b 100644
--- a/board/siemens/pxm2/mux.c
+++ b/board/siemens/pxm2/mux.c
@@ -11,13 +11,11 @@
* Copyright (C) 2011 Texas Instruments Incorporated - https://www.ti.com/
*/
-#include <common.h>
+#include <asm/io.h>
#include <asm/arch/sys_proto.h>
#include <asm/arch/hardware.h>
#include <asm/arch/mux.h>
-#include <asm/io.h>
-#include <i2c.h>
-#include "board.h"
+#include "eeprom.h"
static struct module_pin_mux uart0_pin_mux[] = {
{OFFSET(uart0_rxd), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* UART0_RXD */
diff --git a/board/siemens/rut/MAINTAINERS b/board/siemens/rut/MAINTAINERS
index 1e92710..4d8e256 100644
--- a/board/siemens/rut/MAINTAINERS
+++ b/board/siemens/rut/MAINTAINERS
@@ -1,5 +1,5 @@
RUT BOARD
-M: Samuel Egli <samuel.egli@siemens.com>
+M: Enrico Leto <enrico.leto@siemens.com>
S: Maintained
F: board/siemens/rut/
F: include/configs/rut.h
diff --git a/board/siemens/rut/Makefile b/board/siemens/rut/Makefile
index e94456a..aae5364 100644
--- a/board/siemens/rut/Makefile
+++ b/board/siemens/rut/Makefile
@@ -14,6 +14,8 @@ obj-y := mux.o
endif
obj-y += board.o
+obj-y += ../common/board_am335x.o
+obj-y += ../common/eeprom.o
ifndef CONFIG_SPL_BUILD
obj-y += ../common/factoryset.o
endif
diff --git a/board/siemens/rut/board.c b/board/siemens/rut/board.c
index bad0b71..8d31691 100644
--- a/board/siemens/rut/board.c
+++ b/board/siemens/rut/board.c
@@ -10,44 +10,30 @@
* Copyright (C) 2011, Texas Instruments, Incorporated - https://www.ti.com/
*/
-#include <common.h>
+#include <cpsw.h>
#include <env.h>
-#include <errno.h>
#include <init.h>
-#include <malloc.h>
-#include <net.h>
-#include <spi.h>
-#include <spl.h>
-#include <asm/arch/cpu.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/omap.h>
-#include <asm/arch/ddr_defs.h>
+#include <linux/delay.h>
+#include <nand.h>
#include <asm/arch/clock.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/mmc_host_def.h>
+#include <asm/arch/ddr_defs.h>
#include <asm/arch/sys_proto.h>
-#include <asm/io.h>
-#include <asm/emif.h>
#include <asm/gpio.h>
-#include <i2c.h>
-#include <miiphy.h>
-#include <cpsw.h>
-#include <video.h>
-#include <watchdog.h>
-#include <linux/delay.h>
-#include "board.h"
+#include <asm/io.h>
+#include "../common/board_am335x.h"
+#include "../common/eeprom.h"
#include "../common/factoryset.h"
+#ifdef CONFIG_SPL_BUILD
/*
* Read header information from EEPROM into global structure.
*/
-static int read_eeprom(void)
+int draco_read_eeprom(void)
{
return 0;
}
-#ifdef CONFIG_SPL_BUILD
-static void board_init_ddr(void)
+void draco_init_ddr(void)
{
struct emif_regs rut_ddr3_emif_reg_data = {
.sdram_config = 0x61C04AB2,
@@ -124,7 +110,7 @@ err:
#define REQUEST_AND_PULSE_RESET(N) \
request_and_pulse_reset(N, #N);
-static void spl_siemens_board_init(void)
+void spl_draco_board_init(void)
{
REQUEST_AND_PULSE_RESET(ETH_PHY_RESET_GPIO);
REQUEST_AND_PULSE_RESET(MAXTOUCH_RESET_GPIO);
@@ -244,5 +230,3 @@ int board_late_init(void)
return 0;
}
#endif
-
-#include "../common/board.c"
diff --git a/board/siemens/rut/board.h b/board/siemens/rut/board.h
deleted file mode 100644
index 9067e4d..0000000
--- a/board/siemens/rut/board.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * board.h
- *
- * (C) Copyright 2013 Siemens Schweiz AG
- * (C) Heiko Schocher, DENX Software Engineering, hs@denx.de.
- *
- * Based on:
- * TI AM335x boards information header
- * u-boot:/board/ti/am335x/board.h
- *
- * Copyright (C) 2011, Texas Instruments, Incorporated - https://www.ti.com/
- */
-
-#ifndef _BOARD_H_
-#define _BOARD_H_
-
-void enable_uart0_pin_mux(void);
-void enable_i2c0_pin_mux(void);
-void enable_board_pin_mux(void);
-#endif
diff --git a/board/siemens/rut/mux.c b/board/siemens/rut/mux.c
index 894a9bf..8947e4e 100644
--- a/board/siemens/rut/mux.c
+++ b/board/siemens/rut/mux.c
@@ -11,12 +11,10 @@
* Copyright (C) 2011 Texas Instruments Incorporated - https://www.ti.com/
*/
-#include <common.h>
+#include <asm/io.h>
#include <asm/arch/sys_proto.h>
#include <asm/arch/hardware.h>
#include <asm/arch/mux.h>
-#include <asm/io.h>
-#include <i2c.h>
static struct module_pin_mux uart0_pin_mux[] = {
{OFFSET(uart0_rxd), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* UART0_RXD */
diff --git a/configs/draco-etamin_defconfig b/configs/draco-etamin_defconfig
index a89494f..ec9331e 100644
--- a/configs/draco-etamin_defconfig
+++ b/configs/draco-etamin_defconfig
@@ -86,8 +86,10 @@ CONFIG_CLK=y
CONFIG_CLK_TI_CTRL=y
CONFIG_DFU_NAND=y
CONFIG_SYS_DFU_DATA_BUF_SIZE=0x100000
-CONFIG_SYS_I2C_LEGACY=y
+CONFIG_DM_I2C=y
+# CONFIG_SPL_DM_I2C is not set
CONFIG_SPL_SYS_I2C_LEGACY=y
+CONFIG_I2C_SET_DEFAULT_BUS_NUM=y
# CONFIG_SPL_DM_MMC is not set
CONFIG_MMC_OMAP_HS=y
CONFIG_MTD=y
diff --git a/configs/draco-rastaban_defconfig b/configs/draco-rastaban_defconfig
index f4a9b86..03fbe49 100644
--- a/configs/draco-rastaban_defconfig
+++ b/configs/draco-rastaban_defconfig
@@ -84,8 +84,10 @@ CONFIG_CLK=y
CONFIG_CLK_TI_CTRL=y
CONFIG_DFU_NAND=y
CONFIG_SYS_DFU_DATA_BUF_SIZE=0x100000
-CONFIG_SYS_I2C_LEGACY=y
+CONFIG_DM_I2C=y
+# CONFIG_SPL_DM_I2C is not set
CONFIG_SPL_SYS_I2C_LEGACY=y
+CONFIG_I2C_SET_DEFAULT_BUS_NUM=y
# CONFIG_MMC is not set
CONFIG_MTD=y
CONFIG_MTD_RAW_NAND=y
diff --git a/configs/draco-thuban_defconfig b/configs/draco-thuban_defconfig
index cf2c46b..fcc9b03 100644
--- a/configs/draco-thuban_defconfig
+++ b/configs/draco-thuban_defconfig
@@ -84,8 +84,10 @@ CONFIG_CLK=y
CONFIG_CLK_TI_CTRL=y
CONFIG_DFU_NAND=y
CONFIG_SYS_DFU_DATA_BUF_SIZE=0x100000
-CONFIG_SYS_I2C_LEGACY=y
+CONFIG_DM_I2C=y
+# CONFIG_SPL_DM_I2C is not set
CONFIG_SPL_SYS_I2C_LEGACY=y
+CONFIG_I2C_SET_DEFAULT_BUS_NUM=y
# CONFIG_MMC is not set
CONFIG_MTD=y
CONFIG_MTD_RAW_NAND=y
diff --git a/include/configs/draco-etamin.h b/include/configs/draco-etamin.h
index 97585a4..6ae85b5 100644
--- a/include/configs/draco-etamin.h
+++ b/include/configs/draco-etamin.h
@@ -69,9 +69,6 @@
/* Physical Memory Map */
#define CFG_MAX_RAM_BANK_SIZE (1024 << 20) /* 1GB */
-#define EEPROM_ADDR_DDR3 0x90
-#define EEPROM_ADDR_CHIP 0x120
-
/* nedded by compliance test in read mode */
#undef COMMON_ENV_DFU_ARGS
diff --git a/include/configs/draco-rastaban.h b/include/configs/draco-rastaban.h
index 0991ebf..1b95606 100644
--- a/include/configs/draco-rastaban.h
+++ b/include/configs/draco-rastaban.h
@@ -34,9 +34,6 @@
/* Physical Memory Map */
#define CFG_MAX_RAM_BANK_SIZE (1024 << 20) /* 1GB */
-#define EEPROM_ADDR_DDR3 0x90
-#define EEPROM_ADDR_CHIP 0x120
-
/* Default env settings */
#define CFG_EXTRA_ENV_SETTINGS \
"hostname=rastaban\0" \
diff --git a/include/configs/draco-thuban.h b/include/configs/draco-thuban.h
index f4c04c5..629558e 100644
--- a/include/configs/draco-thuban.h
+++ b/include/configs/draco-thuban.h
@@ -27,9 +27,6 @@
/* Physical Memory Map */
#define CFG_MAX_RAM_BANK_SIZE (1024 << 20) /* 1GB */
-#define EEPROM_ADDR_DDR3 0x90
-#define EEPROM_ADDR_CHIP 0x120
-
/* Default env settings */
#define CFG_EXTRA_ENV_SETTINGS \
"hostname=thuban\0" \