From 33b7258947f4a15a048f7c31c3f5d72221152ba2 Mon Sep 17 00:00:00 2001 From: Dave Gerlach Date: Fri, 23 Apr 2021 11:27:42 -0500 Subject: board: ti: am64x: Add board support for am64x evm Add board specific initialization for am64x based boards. Signed-off-by: Dave Gerlach --- board/ti/am64x/Kconfig | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ board/ti/am64x/Makefile | 8 ++++++++ board/ti/am64x/evm.c | 48 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 109 insertions(+) create mode 100644 board/ti/am64x/Kconfig create mode 100644 board/ti/am64x/Makefile create mode 100644 board/ti/am64x/evm.c (limited to 'board') diff --git a/board/ti/am64x/Kconfig b/board/ti/am64x/Kconfig new file mode 100644 index 00000000000..57527be1dfd --- /dev/null +++ b/board/ti/am64x/Kconfig @@ -0,0 +1,53 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/ + +choice + prompt "K3 AM64 based boards" + optional + +config TARGET_AM642_A53_EVM + bool "TI K3 based AM642 EVM running on A53" + select ARM64 + select SOC_K3_AM642 + imply BOARD + imply SPL_BOARD + +config TARGET_AM642_R5_EVM + bool "TI K3 based AM642 EVM running on R5" + select CPU_V7R + select SYS_THUMB_BUILD + select K3_LOAD_SYSFW + select SOC_K3_AM642 + imply SYS_K3_SPL_ATF + +endchoice + +if TARGET_AM642_A53_EVM + +config SYS_BOARD + default "am64x" + +config SYS_VENDOR + default "ti" + +config SYS_CONFIG_NAME + default "am64x_evm" + +endif + +if TARGET_AM642_R5_EVM + +config SYS_BOARD + default "am64x" + +config SYS_VENDOR + default "ti" + +config SYS_CONFIG_NAME + default "am64x_evm" + +config SPL_LDSCRIPT + default "arch/arm/mach-omap2/u-boot-spl.lds" + +endif diff --git a/board/ti/am64x/Makefile b/board/ti/am64x/Makefile new file mode 100644 index 00000000000..8b98e6f5fda --- /dev/null +++ b/board/ti/am64x/Makefile @@ -0,0 +1,8 @@ +# +# Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/ +# Keerthy +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y += evm.o diff --git a/board/ti/am64x/evm.c b/board/ti/am64x/evm.c new file mode 100644 index 00000000000..bbb81dddb3e --- /dev/null +++ b/board/ti/am64x/evm.c @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Board specific initialization for AM642 EVM + * + * Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/ + * Keerthy + * + */ + +#include +#include +#include + +DECLARE_GLOBAL_DATA_PTR; + +int board_init(void) +{ + return 0; +} + +int dram_init(void) +{ + gd->ram_size = 0x80000000; + + return 0; +} + +int dram_init_banksize(void) +{ + /* Bank 0 declares the memory available in the DDR low region */ + gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE; + gd->bd->bi_dram[0].size = 0x80000000; + gd->ram_size = 0x80000000; + + return 0; +} + +#if defined(CONFIG_SPL_LOAD_FIT) +int board_fit_config_name_match(const char *name) +{ +#if defined(CONFIG_TARGET_AM642_A53_EVM) + if (!strcmp(name, "k3-am642-evm")) + return 0; +#endif + + return -1; +} +#endif -- cgit v1.3.1 From d480bd5edccfc9ad8ef2fc292ff9f56daea70849 Mon Sep 17 00:00:00 2001 From: Dave Gerlach Date: Fri, 23 Apr 2021 11:27:47 -0500 Subject: configs: am64x_evm_r5: Add Initial support Add initial R5 defconfig support for AM64x SoCs. Signed-off-by: Dave Gerlach --- board/ti/am64x/MAINTAINERS | 7 ++++ configs/am64x_evm_r5_defconfig | 91 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 board/ti/am64x/MAINTAINERS create mode 100644 configs/am64x_evm_r5_defconfig (limited to 'board') diff --git a/board/ti/am64x/MAINTAINERS b/board/ti/am64x/MAINTAINERS new file mode 100644 index 00000000000..bb8c00c7b55 --- /dev/null +++ b/board/ti/am64x/MAINTAINERS @@ -0,0 +1,7 @@ +AM64x BOARD +M: Dave Gerlach +M: Lokesh Vutla +S: Maintained +F: board/ti/am64x/ +F: include/configs/am64x_evm.h +F: configs/am64x_evm_r5_defconfig diff --git a/configs/am64x_evm_r5_defconfig b/configs/am64x_evm_r5_defconfig new file mode 100644 index 00000000000..0fa4ae90b59 --- /dev/null +++ b/configs/am64x_evm_r5_defconfig @@ -0,0 +1,91 @@ +CONFIG_ARM=y +CONFIG_ARCH_K3=y +CONFIG_SPL_LIBCOMMON_SUPPORT=y +CONFIG_SPL_LIBGENERIC_SUPPORT=y +CONFIG_SYS_MALLOC_F_LEN=0x80000 +CONFIG_SOC_K3_AM642=y +CONFIG_TARGET_AM642_R5_EVM=y +CONFIG_ENV_SIZE=0x20000 +CONFIG_SYS_SPI_U_BOOT_OFFS=0x80000 +CONFIG_SPL_DM_SPI=y +CONFIG_SPL_TEXT_BASE=0x70020000 +CONFIG_SPL_MMC_SUPPORT=y +CONFIG_SPL_SERIAL_SUPPORT=y +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y +CONFIG_SPL_STACK_R_ADDR=0x82000000 +CONFIG_SPL_FS_FAT=y +CONFIG_SPL_LIBDISK_SUPPORT=y +CONFIG_SPL_SPI_FLASH_SUPPORT=y +CONFIG_SPL_SPI_SUPPORT=y +CONFIG_DEFAULT_DEVICE_TREE="k3-am642-r5-evm" +CONFIG_SPL_LOAD_FIT=y +# CONFIG_DISPLAY_CPUINFO is not set +CONFIG_SPL_SYS_MALLOC_SIMPLE=y +CONFIG_SPL_STACK_R=y +CONFIG_SPL_SEPARATE_BSS=y +CONFIG_SPL_EARLY_BSS=y +CONFIG_SPL_I2C_SUPPORT=y +CONFIG_SPL_DM_MAILBOX=y +CONFIG_SPL_DM_SPI_FLASH=y +CONFIG_SPL_DM_RESET=y +CONFIG_SPL_POWER_DOMAIN=y +CONFIG_SPL_REMOTEPROC=y +CONFIG_SPL_SPI_LOAD=y +CONFIG_SPL_YMODEM_SUPPORT=y +CONFIG_HUSH_PARSER=y +CONFIG_CMD_ASKENV=y +CONFIG_CMD_MMC=y +CONFIG_CMD_REMOTEPROC=y +# CONFIG_CMD_SETEXPR is not set +CONFIG_CMD_TIME=y +CONFIG_CMD_FAT=y +CONFIG_OF_CONTROL=y +CONFIG_SPL_OF_CONTROL=y +CONFIG_SPL_MULTI_DTB_FIT=y +CONFIG_SPL_MULTI_DTB_FIT_NO_COMPRESSION=y +CONFIG_ENV_IS_IN_FAT=y +CONFIG_ENV_FAT_DEVICE_AND_PART="1:1" +CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_DM=y +CONFIG_SPL_DM=y +CONFIG_SPL_DM_SEQ_ALIAS=y +CONFIG_REGMAP=y +CONFIG_SPL_REGMAP=y +CONFIG_SPL_OF_TRANSLATE=y +CONFIG_CLK=y +CONFIG_SPL_CLK=y +CONFIG_CLK_TI_SCI=y +CONFIG_TI_SCI_PROTOCOL=y +CONFIG_DM_MAILBOX=y +CONFIG_K3_SEC_PROXY=y +CONFIG_DM_MMC=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_ADMA=y +CONFIG_SPL_MMC_SDHCI_ADMA=y +CONFIG_MMC_SDHCI_AM654=y +CONFIG_DM_SPI_FLASH=y +CONFIG_SF_DEFAULT_MODE=0 +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_STMICRO=y +CONFIG_PINCTRL=y +# CONFIG_PINCTRL_GENERIC is not set +CONFIG_SPL_PINCTRL=y +# CONFIG_SPL_PINCTRL_GENERIC is not set +CONFIG_PINCTRL_SINGLE=y +CONFIG_POWER_DOMAIN=y +CONFIG_TI_SCI_POWER_DOMAIN=y +CONFIG_RAM=y +CONFIG_SPL_RAM=y +CONFIG_K3_SYSTEM_CONTROLLER=y +CONFIG_REMOTEPROC_TI_K3_ARM64=y +CONFIG_DM_RESET=y +CONFIG_RESET_TI_SCI=y +CONFIG_SPECIFY_CONSOLE_INDEX=y +CONFIG_DM_SERIAL=y +CONFIG_SPI=y +CONFIG_DM_SPI=y +CONFIG_CADENCE_QSPI=y +CONFIG_TIMER=y +CONFIG_SPL_TIMER=y +CONFIG_OMAP_TIMER=y +CONFIG_FS_FAT_MAX_CLUSTSIZE=16384 -- cgit v1.3.1 From 55afd2d8f5af7638db6ffc57e9d0019379b11b4a Mon Sep 17 00:00:00 2001 From: Dave Gerlach Date: Fri, 23 Apr 2021 11:27:48 -0500 Subject: configs: am64x_evm_a53: Add Initial support Add initial A53 defconfig support for AM64x SoCs. Signed-off-by: Dave Gerlach --- board/ti/am64x/MAINTAINERS | 1 + configs/am64x_evm_a53_defconfig | 96 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 configs/am64x_evm_a53_defconfig (limited to 'board') diff --git a/board/ti/am64x/MAINTAINERS b/board/ti/am64x/MAINTAINERS index bb8c00c7b55..d384a330dfa 100644 --- a/board/ti/am64x/MAINTAINERS +++ b/board/ti/am64x/MAINTAINERS @@ -5,3 +5,4 @@ S: Maintained F: board/ti/am64x/ F: include/configs/am64x_evm.h F: configs/am64x_evm_r5_defconfig +F: configs/am64x_evm_a53_defconfig diff --git a/configs/am64x_evm_a53_defconfig b/configs/am64x_evm_a53_defconfig new file mode 100644 index 00000000000..5aa4ad3022f --- /dev/null +++ b/configs/am64x_evm_a53_defconfig @@ -0,0 +1,96 @@ +CONFIG_ARM=y +CONFIG_ARCH_K3=y +CONFIG_SPL_LIBCOMMON_SUPPORT=y +CONFIG_SPL_LIBGENERIC_SUPPORT=y +CONFIG_SYS_MALLOC_F_LEN=0x8000 +CONFIG_NR_DRAM_BANKS=2 +CONFIG_SOC_K3_AM642=y +CONFIG_TARGET_AM642_A53_EVM=y +CONFIG_ENV_SIZE=0x20000 +CONFIG_SYS_SPI_U_BOOT_OFFS=0x280000 +CONFIG_SPL_DM_SPI=y +CONFIG_SPL_TEXT_BASE=0x80080000 +CONFIG_SPL_MMC_SUPPORT=y +CONFIG_SPL_SERIAL_SUPPORT=y +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y +CONFIG_SPL_STACK_R_ADDR=0x82000000 +CONFIG_SPL_FS_FAT=y +CONFIG_SPL_LIBDISK_SUPPORT=y +CONFIG_SPL_SPI_FLASH_SUPPORT=y +CONFIG_SPL_SPI_SUPPORT=y +CONFIG_DEFAULT_DEVICE_TREE="k3-am642-evm" +CONFIG_DISTRO_DEFAULTS=y +# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set +CONFIG_SPL_LOAD_FIT=y +CONFIG_BOOTCOMMAND="run findfdt; run envboot; run init_${boot}; run get_kern_${boot}; run get_fdt_${boot}; run run_kern" +# CONFIG_DISPLAY_CPUINFO is not set +CONFIG_SPL_SYS_MALLOC_SIMPLE=y +CONFIG_SPL_STACK_R=y +CONFIG_SPL_SEPARATE_BSS=y +CONFIG_SPL_DMA=y +CONFIG_SPL_DM_MAILBOX=y +CONFIG_SPL_DM_SPI_FLASH=y +CONFIG_SPL_POWER_DOMAIN=y +CONFIG_SPL_RAM_SUPPORT=y +CONFIG_SPL_RAM_DEVICE=y +CONFIG_SPL_SPI_LOAD=y +CONFIG_SPL_YMODEM_SUPPORT=y +CONFIG_CMD_ASKENV=y +CONFIG_CMD_MMC=y +CONFIG_CMD_TIME=y +CONFIG_OF_CONTROL=y +CONFIG_SPL_OF_CONTROL=y +CONFIG_SPL_MULTI_DTB_FIT=y +CONFIG_SPL_MULTI_DTB_FIT_NO_COMPRESSION=y +CONFIG_ENV_IS_NOWHERE=y +CONFIG_ENV_IS_IN_FAT=y +CONFIG_ENV_FAT_DEVICE_AND_PART="1:1" +CONFIG_NET_RANDOM_ETHADDR=y +CONFIG_DM=y +CONFIG_SPL_DM=y +CONFIG_SPL_DM_SEQ_ALIAS=y +CONFIG_REGMAP=y +CONFIG_SPL_REGMAP=y +CONFIG_SPL_OF_TRANSLATE=y +CONFIG_CLK=y +CONFIG_SPL_CLK=y +CONFIG_CLK_TI_SCI=y +CONFIG_DMA_CHANNELS=y +CONFIG_TI_K3_NAVSS_UDMA=y +CONFIG_TI_SCI_PROTOCOL=y +CONFIG_DM_MAILBOX=y +CONFIG_K3_SEC_PROXY=y +CONFIG_DM_MMC=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_ADMA=y +CONFIG_SPL_MMC_SDHCI_ADMA=y +CONFIG_MMC_SDHCI_AM654=y +CONFIG_DM_SPI_FLASH=y +CONFIG_SF_DEFAULT_MODE=0 +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_STMICRO=y +CONFIG_PHY_TI=y +CONFIG_PHY_FIXED=y +CONFIG_DM_ETH=y +CONFIG_TI_AM65_CPSW_NUSS=y +CONFIG_PINCTRL=y +CONFIG_SPL_PINCTRL=y +CONFIG_PINCTRL_SINGLE=y +CONFIG_POWER_DOMAIN=y +CONFIG_TI_SCI_POWER_DOMAIN=y +CONFIG_K3_SYSTEM_CONTROLLER=y +CONFIG_REMOTEPROC_TI_K3_ARM64=y +CONFIG_DM_RESET=y +CONFIG_RESET_TI_SCI=y +CONFIG_DM_SERIAL=y +CONFIG_SOC_TI=y +CONFIG_SPI=y +CONFIG_DM_SPI=y +CONFIG_CADENCE_QSPI=y +CONFIG_SYSRESET=y +CONFIG_SPL_SYSRESET=y +CONFIG_SYSRESET_TI_SCI=y +CONFIG_TIMER=y +CONFIG_SPL_TIMER=y +CONFIG_OMAP_TIMER=y +CONFIG_FS_FAT_MAX_CLUSTSIZE=16384 -- cgit v1.3.1 From db2438131d75ea0198487296b6c694bded080d11 Mon Sep 17 00:00:00 2001 From: Dave Gerlach Date: Tue, 11 May 2021 10:22:10 -0500 Subject: ram: k3-ddrss: Introduce top-level CONFIG_K3_DDRSS Create a new CONFIG_K3_DDRSS option to select the common parts of the k3-ddrss driver. Also introduce a choice that depends on the top level option to select CONFIG_K3_J721E_DDRSS for j721e support, and update corresponding Kconfig as required. Signed-off-by: Dave Gerlach --- board/ti/j721e/Kconfig | 4 ++-- drivers/ram/Kconfig | 11 ++++++++++- drivers/ram/Makefile | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) (limited to 'board') diff --git a/board/ti/j721e/Kconfig b/board/ti/j721e/Kconfig index 2cbe2b2481a..c28752a658b 100644 --- a/board/ti/j721e/Kconfig +++ b/board/ti/j721e/Kconfig @@ -23,7 +23,7 @@ config TARGET_J721E_R5_EVM select K3_LOAD_SYSFW select RAM select SPL_RAM - select K3_J721E_DDRSS + select K3_DDRSS imply SYS_K3_SPL_ATF imply TI_I2C_BOARD_DETECT @@ -43,7 +43,7 @@ config TARGET_J7200_R5_EVM select K3_LOAD_SYSFW select RAM select SPL_RAM - select K3_J721E_DDRSS + select K3_DDRSS imply SYS_K3_SPL_ATF imply TI_I2C_BOARD_DETECT diff --git a/drivers/ram/Kconfig b/drivers/ram/Kconfig index a270e13b265..4e4e7a9632a 100644 --- a/drivers/ram/Kconfig +++ b/drivers/ram/Kconfig @@ -54,9 +54,16 @@ config K3_AM654_DDRSS config add support for the initialization of the external SDRAM devices connected to DDR subsystem. +config K3_DDRSS + bool "Enable K3 DDRSS support" + depends on RAM + +choice + depends on K3_DDRSS + prompt "K3 DDRSS Arch Support" + config K3_J721E_DDRSS bool "Enable J721E DDRSS support" - depends on RAM help The J721E DDR subsystem comprises DDR controller, DDR PHY and wrapper logic to integrate these blocks in the device. The DDR @@ -65,6 +72,8 @@ config K3_J721E_DDRSS Enabling this config adds support for the DDR memory controller on J721E family of SoCs. +endchoice + config IMXRT_SDRAM bool "Enable i.MXRT SDRAM support" depends on RAM diff --git a/drivers/ram/Makefile b/drivers/ram/Makefile index 1806a160f51..5a39611349d 100644 --- a/drivers/ram/Makefile +++ b/drivers/ram/Makefile @@ -15,7 +15,7 @@ obj-$(CONFIG_ARCH_ROCKCHIP) += rockchip/ obj-$(CONFIG_K3_AM654_DDRSS) += k3-am654-ddrss.o obj-$(CONFIG_ARCH_MEDIATEK) += mediatek/ obj-$(CONFIG_ARCH_ASPEED) += aspeed/ -obj-$(CONFIG_K3_J721E_DDRSS) += k3-ddrss/ +obj-$(CONFIG_K3_DDRSS) += k3-ddrss/ obj-$(CONFIG_IMXRT_SDRAM) += imxrt_sdram.o -- cgit v1.3.1 From d411f0973aa62ce426f901594367f9344261446d Mon Sep 17 00:00:00 2001 From: Dave Gerlach Date: Tue, 4 May 2021 18:00:53 -0500 Subject: arm: mach-k3: am642: Add support for triggering ddr init from SPL In SPL, DDR should be made available by the end of board_init_f() so that apis in board_init_r() can use ddr. Adding support for triggering DDR initialization from board_init_f(). Signed-off-by: Dave Gerlach --- arch/arm/mach-k3/am642_init.c | 6 ++++++ board/ti/am64x/Kconfig | 3 +++ 2 files changed, 9 insertions(+) (limited to 'board') diff --git a/arch/arm/mach-k3/am642_init.c b/arch/arm/mach-k3/am642_init.c index 2b58a9f94c6..2a38b843d99 100644 --- a/arch/arm/mach-k3/am642_init.c +++ b/arch/arm/mach-k3/am642_init.c @@ -131,6 +131,12 @@ void board_init_f(ulong dummy) /* Output System Firmware version info */ k3_sysfw_print_ver(); + +#if defined(CONFIG_K3_AM64_DDRSS) + ret = uclass_get_device(UCLASS_RAM, 0, &dev); + if (ret) + panic("DRAM init failed: %d\n", ret); +#endif } u32 spl_boot_mode(const u32 boot_device) diff --git a/board/ti/am64x/Kconfig b/board/ti/am64x/Kconfig index 57527be1dfd..3dd5b54c944 100644 --- a/board/ti/am64x/Kconfig +++ b/board/ti/am64x/Kconfig @@ -19,6 +19,9 @@ config TARGET_AM642_R5_EVM select SYS_THUMB_BUILD select K3_LOAD_SYSFW select SOC_K3_AM642 + select RAM + select SPL_RAM + select K3_DDRSS imply SYS_K3_SPL_ATF endchoice -- cgit v1.3.1 From 2ee76314a759666f6469e6044dc243832b1883c9 Mon Sep 17 00:00:00 2001 From: Lokesh Vutla Date: Thu, 6 May 2021 16:44:49 +0530 Subject: board: ti: am64x: Add support for reading eeprom data I2C EEPROM data contains the board name and its revision. Add support for: - Reading EEPROM data and store a copy at end of SRAM - Updating env variable with relevant board info - Printing board info during boot. Signed-off-by: Lokesh Vutla --- arch/arm/mach-k3/include/mach/am64_hardware.h | 3 + board/ti/am64x/evm.c | 92 +++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) (limited to 'board') diff --git a/arch/arm/mach-k3/include/mach/am64_hardware.h b/arch/arm/mach-k3/include/mach/am64_hardware.h index 8dc318bfbfc..c368aa7e6bf 100644 --- a/arch/arm/mach-k3/include/mach/am64_hardware.h +++ b/arch/arm/mach-k3/include/mach/am64_hardware.h @@ -49,4 +49,7 @@ #define ROM_ENTENDED_BOOT_DATA_INFO 0x701beb00 +/* Use Last 1K as Scratch pad */ +#define TI_SRAM_SCRATCH_BOARD_EEPROM_START 0x701bfc00 + #endif /* __ASM_ARCH_DRA8_HARDWARE_H */ diff --git a/board/ti/am64x/evm.c b/board/ti/am64x/evm.c index bbb81dddb3e..18e49112ac3 100644 --- a/board/ti/am64x/evm.c +++ b/board/ti/am64x/evm.c @@ -10,6 +10,14 @@ #include #include #include +#include +#include +#include + +#include "../common/board_detect.h" + +#define board_is_am64x_gpevm() board_ti_k3_is("AM64-GPEVM") +#define board_is_am64x_skevm() board_ti_k3_is("AM64-SKEVM") DECLARE_GLOBAL_DATA_PTR; @@ -46,3 +54,87 @@ int board_fit_config_name_match(const char *name) return -1; } #endif + +#ifdef CONFIG_TI_I2C_BOARD_DETECT +int do_board_detect(void) +{ + int ret; + + ret = ti_i2c_eeprom_am6_get_base(CONFIG_EEPROM_BUS_ADDRESS, + CONFIG_EEPROM_CHIP_ADDRESS); + if (ret) { + printf("EEPROM not available at 0x%02x, trying to read at 0x%02x\n", + CONFIG_EEPROM_CHIP_ADDRESS, CONFIG_EEPROM_CHIP_ADDRESS + 1); + ret = ti_i2c_eeprom_am6_get_base(CONFIG_EEPROM_BUS_ADDRESS, + CONFIG_EEPROM_CHIP_ADDRESS + 1); + if (ret) + pr_err("Reading on-board EEPROM at 0x%02x failed %d\n", + CONFIG_EEPROM_CHIP_ADDRESS + 1, ret); + } + + return ret; +} + +int checkboard(void) +{ + struct ti_am6_eeprom *ep = TI_AM6_EEPROM_DATA; + + if (!do_board_detect()) + printf("Board: %s rev %s\n", ep->name, ep->version); + + return 0; +} + +#ifdef CONFIG_BOARD_LATE_INIT +static void setup_board_eeprom_env(void) +{ + char *name = "am64x_gpevm"; + + if (do_board_detect()) + goto invalid_eeprom; + + if (board_is_am64x_gpevm()) + name = "am64x_gpevm"; + else if (board_is_am64x_skevm()) + name = "am64x_skevm"; + else + printf("Unidentified board claims %s in eeprom header\n", + board_ti_get_name()); + +invalid_eeprom: + set_board_info_env_am6(name); +} + +static void setup_serial(void) +{ + struct ti_am6_eeprom *ep = TI_AM6_EEPROM_DATA; + unsigned long board_serial; + char *endp; + char serial_string[17] = { 0 }; + + if (env_get("serial#")) + return; + + board_serial = simple_strtoul(ep->serial, &endp, 16); + if (*endp != '\0') { + pr_err("Error: Can't set serial# to %s\n", ep->serial); + return; + } + + snprintf(serial_string, sizeof(serial_string), "%016lx", board_serial); + env_set("serial#", serial_string); +} +#endif +#endif + +#ifdef CONFIG_BOARD_LATE_INIT +int board_late_init(void) +{ + if (IS_ENABLED(CONFIG_TI_I2C_BOARD_DETECT)) { + setup_board_eeprom_env(); + setup_serial(); + } + + return 0; +} +#endif -- cgit v1.3.1 From 8817c132a041cb62eba8f6939ff1ff44b4140ba1 Mon Sep 17 00:00:00 2001 From: Lokesh Vutla Date: Thu, 6 May 2021 16:44:50 +0530 Subject: board: ti: am64x: Enable support for reading EEPROM in R5 SPL Include the relevant configs to enable support for reading EEPROM in R5SPL. Signed-off-by: Lokesh Vutla --- board/ti/am64x/Kconfig | 3 +++ 1 file changed, 3 insertions(+) (limited to 'board') diff --git a/board/ti/am64x/Kconfig b/board/ti/am64x/Kconfig index 3dd5b54c944..7150dbb3b02 100644 --- a/board/ti/am64x/Kconfig +++ b/board/ti/am64x/Kconfig @@ -23,6 +23,7 @@ config TARGET_AM642_R5_EVM select SPL_RAM select K3_DDRSS imply SYS_K3_SPL_ATF + imply TI_I2C_BOARD_DETECT endchoice @@ -53,4 +54,6 @@ config SYS_CONFIG_NAME config SPL_LDSCRIPT default "arch/arm/mach-omap2/u-boot-spl.lds" +source "board/ti/common/Kconfig" + endif -- cgit v1.3.1 From 63d825e9fcc75edcf0f378995975a0b4f2632899 Mon Sep 17 00:00:00 2001 From: Lokesh Vutla Date: Thu, 6 May 2021 16:44:51 +0530 Subject: board: ti: am64x: Add support for detecting multiple device trees Update the board_fit_config_name_match() to choose the right dtb. Signed-off-by: Lokesh Vutla --- board/ti/am64x/evm.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'board') diff --git a/board/ti/am64x/evm.c b/board/ti/am64x/evm.c index 18e49112ac3..a1ffcb929ce 100644 --- a/board/ti/am64x/evm.c +++ b/board/ti/am64x/evm.c @@ -46,10 +46,15 @@ int dram_init_banksize(void) #if defined(CONFIG_SPL_LOAD_FIT) int board_fit_config_name_match(const char *name) { -#if defined(CONFIG_TARGET_AM642_A53_EVM) - if (!strcmp(name, "k3-am642-evm")) - return 0; -#endif + bool eeprom_read = board_ti_was_eeprom_read(); + + if (!eeprom_read || board_is_am64x_gpevm()) { + if (!strcmp(name, "k3-am642-r5-evm") || !strcmp(name, "k3-am642-evm")) + return 0; + } else if (board_is_am64x_skevm()) { + if (!strcmp(name, "k3-am642-r5-sk") || !strcmp(name, "k3-am642-sk")) + return 0; + } return -1; } -- cgit v1.3.1 From 7ecca0c43d88d84011fcc9ea0655ab8529505368 Mon Sep 17 00:00:00 2001 From: Lokesh Vutla Date: Thu, 6 May 2021 16:45:04 +0530 Subject: configs: am64x_evm_a53: Enable support for reading eeprom Enable relevant configs for reading eeprom data and updating env variables. Signed-off-by: Lokesh Vutla --- board/ti/am64x/Kconfig | 3 +++ configs/am64x_evm_a53_defconfig | 4 ++++ 2 files changed, 7 insertions(+) (limited to 'board') diff --git a/board/ti/am64x/Kconfig b/board/ti/am64x/Kconfig index 7150dbb3b02..d4ec759d7f9 100644 --- a/board/ti/am64x/Kconfig +++ b/board/ti/am64x/Kconfig @@ -12,6 +12,7 @@ config TARGET_AM642_A53_EVM select SOC_K3_AM642 imply BOARD imply SPL_BOARD + imply TI_I2C_BOARD_DETECT config TARGET_AM642_R5_EVM bool "TI K3 based AM642 EVM running on R5" @@ -38,6 +39,8 @@ config SYS_VENDOR config SYS_CONFIG_NAME default "am64x_evm" +source "board/ti/common/Kconfig" + endif if TARGET_AM642_R5_EVM diff --git a/configs/am64x_evm_a53_defconfig b/configs/am64x_evm_a53_defconfig index 43885827a59..ab87e98fffa 100644 --- a/configs/am64x_evm_a53_defconfig +++ b/configs/am64x_evm_a53_defconfig @@ -23,6 +23,7 @@ CONFIG_DISTRO_DEFAULTS=y # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set CONFIG_SPL_LOAD_FIT=y CONFIG_BOOTCOMMAND="run findfdt; run envboot; run init_${boot}; run get_kern_${boot}; run get_fdt_${boot}; run run_kern" +CONFIG_BOARD_LATE_INIT=y CONFIG_SPL_SYS_MALLOC_SIMPLE=y CONFIG_SPL_STACK_R=y CONFIG_SPL_SEPARATE_BSS=y @@ -35,6 +36,7 @@ CONFIG_SPL_RAM_DEVICE=y CONFIG_SPL_SPI_LOAD=y CONFIG_SPL_YMODEM_SUPPORT=y CONFIG_CMD_ASKENV=y +CONFIG_CMD_I2C=y CONFIG_CMD_MMC=y CONFIG_CMD_TIME=y CONFIG_OF_CONTROL=y @@ -57,6 +59,8 @@ CONFIG_CLK_TI_SCI=y CONFIG_DMA_CHANNELS=y CONFIG_TI_K3_NAVSS_UDMA=y CONFIG_TI_SCI_PROTOCOL=y +CONFIG_DM_I2C=y +CONFIG_SYS_I2C_OMAP24XX=y CONFIG_DM_MAILBOX=y CONFIG_K3_SEC_PROXY=y CONFIG_DM_MMC=y -- cgit v1.3.1 From ec658e7ee5459244c9487b4ff23398407b507b0f Mon Sep 17 00:00:00 2001 From: Vignesh Raghavendra Date: Mon, 10 May 2021 23:44:22 +0530 Subject: board: ti: am64x: Parse MAC address from board EEPROM Parse MAC addresses from EEPROM and set them in the env. This is needed to get MAC address for additional ethernet ports on the EVM. Signed-off-by: Vignesh Raghavendra --- board/ti/am64x/evm.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'board') diff --git a/board/ti/am64x/evm.c b/board/ti/am64x/evm.c index a1ffcb929ce..35cd9e027c0 100644 --- a/board/ti/am64x/evm.c +++ b/board/ti/am64x/evm.c @@ -136,8 +136,17 @@ static void setup_serial(void) int board_late_init(void) { if (IS_ENABLED(CONFIG_TI_I2C_BOARD_DETECT)) { + struct ti_am6_eeprom *ep = TI_AM6_EEPROM_DATA; + setup_board_eeprom_env(); setup_serial(); + /* + * The first MAC address for ethernet a.k.a. ethernet0 comes from + * efuse populated via the am654 gigabit eth switch subsystem driver. + * All the other ones are populated via EEPROM, hence continue with + * an index of 1. + */ + board_ti_am6_set_ethaddr(1, ep->mac_addr_cnt); } return 0; -- cgit v1.3.1