mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
ARM: stm32: Implement board coding on AV96
The AV96 board does exist in multiple variants. To cater for all of them, implement board code handling. There are two GPIOs which code the type of the board, read them out and use the value to pick the correct device tree from an fitImage. Reviewed-by: Patrick Delaunay <patrick.delaunay@st.com> Signed-off-by: Marek Vasut <marex@denx.de> Cc: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Cc: Patrick Delaunay <patrick.delaunay@st.com> Cc: Patrice Chotard <patrice.chotard@st.com> Change-Id: Iddb330b9a66500495885457cbe17edc0eacaaf43
This commit is contained in:
parent
65e38e81ac
commit
731fd50e27
10 changed files with 172 additions and 1 deletions
|
@ -23,6 +23,7 @@
|
|||
u-boot,error-led = "error";
|
||||
st,fastboot-gpios = <&gpioa 13 GPIO_ACTIVE_LOW>;
|
||||
st,stm32prog-gpios = <&gpioa 14 GPIO_ACTIVE_LOW>;
|
||||
dh,som-coding-gpios = <&gpiof 12 0>, <&gpiof 13 0>, <&gpiof 15 0>;
|
||||
};
|
||||
|
||||
led {
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
config {
|
||||
u-boot,boot-led = "led1";
|
||||
u-boot,error-led = "led4";
|
||||
dh,board-coding-gpios = <&gpiog 13 0>, <&gpiod 9 0>;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -11,6 +11,13 @@
|
|||
#include "stm32mp15-u-boot.dtsi"
|
||||
#include "stm32mp15-ddr3-2x4Gb-1066-binG.dtsi"
|
||||
|
||||
/ {
|
||||
u-boot,dm-pre-reloc;
|
||||
config {
|
||||
dh,som-coding-gpios = <&gpioz 7 0>, <&gpiof 3 0>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c4 {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
|
|
@ -7,7 +7,7 @@ config SYS_VENDOR
|
|||
default "dhelectronics"
|
||||
|
||||
config SYS_CONFIG_NAME
|
||||
default "stm32mp1"
|
||||
default "dh_stm32mp1"
|
||||
|
||||
config ENV_SECT_SIZE
|
||||
default 0x10000 if ENV_IS_IN_SPI_FLASH
|
||||
|
|
|
@ -133,6 +133,62 @@ int checkboard(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BOARD_EARLY_INIT_F
|
||||
static u8 brdcode __section("data");
|
||||
static u8 somcode __section("data");
|
||||
|
||||
static void board_get_coding_straps(void)
|
||||
{
|
||||
struct gpio_desc gpio[4];
|
||||
ofnode node;
|
||||
int i, ret;
|
||||
|
||||
node = ofnode_path("/config");
|
||||
if (!ofnode_valid(node)) {
|
||||
printf("%s: no /config node?\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
brdcode = 0;
|
||||
somcode = 0;
|
||||
|
||||
ret = gpio_request_list_by_name_nodev(node, "dh,som-coding-gpios",
|
||||
gpio, ARRAY_SIZE(gpio),
|
||||
GPIOD_IS_IN);
|
||||
for (i = 0; i < ret; i++)
|
||||
somcode |= !!dm_gpio_get_value(&(gpio[i])) << i;
|
||||
|
||||
ret = gpio_request_list_by_name_nodev(node, "dh,board-coding-gpios",
|
||||
gpio, ARRAY_SIZE(gpio),
|
||||
GPIOD_IS_IN);
|
||||
for (i = 0; i < ret; i++)
|
||||
brdcode |= !!dm_gpio_get_value(&(gpio[i])) << i;
|
||||
|
||||
printf("Code: SoM:rev=%d Board:rev=%d\n", somcode, brdcode);
|
||||
}
|
||||
|
||||
int board_early_init_f(void)
|
||||
{
|
||||
board_get_coding_straps();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SPL_LOAD_FIT
|
||||
int board_fit_config_name_match(const char *name)
|
||||
{
|
||||
char test[20];
|
||||
|
||||
snprintf(test, sizeof(test), "somrev%d_boardrev%d", somcode, brdcode);
|
||||
|
||||
if (!strcmp(name, test))
|
||||
return 0;
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static void board_key_check(void)
|
||||
{
|
||||
#if defined(CONFIG_FASTBOOT) || defined(CONFIG_CMD_STM32PROG)
|
||||
|
@ -478,6 +534,11 @@ int board_late_init(void)
|
|||
if (!strcmp(boot_device, "serial") || !strcmp(boot_device, "usb"))
|
||||
env_set("bootdelay", "0");
|
||||
|
||||
#ifdef CONFIG_BOARD_EARLY_INIT_F
|
||||
env_set_ulong("dh_som_rev", somcode);
|
||||
env_set_ulong("dh_board_rev", brdcode);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
39
board/dhelectronics/dh_stm32mp1/u-boot-dhcom.its
Normal file
39
board/dhelectronics/dh_stm32mp1/u-boot-dhcom.its
Normal file
|
@ -0,0 +1,39 @@
|
|||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
description = "U-Boot mainline";
|
||||
#address-cells = <1>;
|
||||
|
||||
images {
|
||||
uboot {
|
||||
description = "U-Boot (32-bit)";
|
||||
data = /incbin/("u-boot-nodtb.bin");
|
||||
type = "standalone";
|
||||
os = "U-Boot";
|
||||
arch = "arm";
|
||||
compression = "none";
|
||||
load = <0xc0100000>;
|
||||
entry = <0xc0100000>;
|
||||
};
|
||||
|
||||
fdt-1 {
|
||||
description = ".dtb";
|
||||
data = /incbin/("arch/arm/dts/stm32mp15xx-dhcom-pdk2.dtb");
|
||||
type = "flat_dt";
|
||||
arch = "arm";
|
||||
compression = "none";
|
||||
};
|
||||
};
|
||||
|
||||
configurations {
|
||||
default = "config-1";
|
||||
|
||||
config-1 {
|
||||
description = "somrev0_boardrev0"; /* SoM+board model */
|
||||
loadables = "uboot";
|
||||
fdt = "fdt-1";
|
||||
};
|
||||
|
||||
/* Add 587-100..587-400 with fdt-2..fdt-4 here */
|
||||
};
|
||||
};
|
39
board/dhelectronics/dh_stm32mp1/u-boot-dhcor.its
Normal file
39
board/dhelectronics/dh_stm32mp1/u-boot-dhcor.its
Normal file
|
@ -0,0 +1,39 @@
|
|||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
description = "U-Boot mainline";
|
||||
#address-cells = <1>;
|
||||
|
||||
images {
|
||||
uboot {
|
||||
description = "U-Boot (32-bit)";
|
||||
data = /incbin/("u-boot-nodtb.bin");
|
||||
type = "standalone";
|
||||
os = "U-Boot";
|
||||
arch = "arm";
|
||||
compression = "none";
|
||||
load = <0xc0100000>;
|
||||
entry = <0xc0100000>;
|
||||
};
|
||||
|
||||
fdt-1 {
|
||||
description = ".dtb";
|
||||
data = /incbin/("arch/arm/dts/stm32mp15xx-dhcor-avenger96.dtb");
|
||||
type = "flat_dt";
|
||||
arch = "arm";
|
||||
compression = "none";
|
||||
};
|
||||
};
|
||||
|
||||
configurations {
|
||||
default = "config-1";
|
||||
|
||||
config-1 {
|
||||
description = "somrev0_boardrev1"; /* SoM+board model */
|
||||
loadables = "uboot";
|
||||
fdt = "fdt-1";
|
||||
};
|
||||
|
||||
/* Add 586-200..586-400 with fdt-2..fdt-4 here */
|
||||
};
|
||||
};
|
|
@ -12,7 +12,11 @@ CONFIG_SPL_SPI_SUPPORT=y
|
|||
CONFIG_SPL_TEXT_BASE=0x2FFC2500
|
||||
CONFIG_DISTRO_DEFAULTS=y
|
||||
CONFIG_FIT=y
|
||||
CONFIG_SPL_LOAD_FIT=y
|
||||
CONFIG_SPL_FIT_SOURCE="board/dhelectronics/dh_stm32mp1/u-boot-dhcom.its"
|
||||
CONFIG_BOOTCOMMAND="run bootcmd_stm32mp"
|
||||
CONFIG_BOARD_EARLY_INIT_F=y
|
||||
CONFIG_SPL_LEGACY_IMAGE_SUPPORT=y
|
||||
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y
|
||||
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=3
|
||||
CONFIG_SPL_I2C_SUPPORT=y
|
||||
|
|
|
@ -12,7 +12,11 @@ CONFIG_SPL_SPI_SUPPORT=y
|
|||
CONFIG_SPL_TEXT_BASE=0x2FFC2500
|
||||
CONFIG_DISTRO_DEFAULTS=y
|
||||
CONFIG_FIT=y
|
||||
CONFIG_SPL_LOAD_FIT=y
|
||||
CONFIG_SPL_FIT_SOURCE="board/dhelectronics/dh_stm32mp1/u-boot-dhcor.its"
|
||||
CONFIG_BOOTCOMMAND="run bootcmd_stm32mp"
|
||||
CONFIG_BOARD_EARLY_INIT_F=y
|
||||
CONFIG_SPL_LEGACY_IMAGE_SUPPORT=y
|
||||
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y
|
||||
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=3
|
||||
CONFIG_SPL_I2C_SUPPORT=y
|
||||
|
|
15
include/configs/dh_stm32mp1.h
Normal file
15
include/configs/dh_stm32mp1.h
Normal file
|
@ -0,0 +1,15 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
|
||||
/*
|
||||
* Copyright (C) 2020 Marek Vasut <marex@denx.de>
|
||||
*
|
||||
* Configuration settings for the DH STM32MP15x SoMs
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_DH_STM32MP1_H__
|
||||
#define __CONFIG_DH_STM32MP1_H__
|
||||
|
||||
#include <configs/stm32mp1.h>
|
||||
|
||||
#define CONFIG_SPL_TARGET "u-boot.itb"
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue