Skip to content
Snippets Groups Projects
Commit fa220579 authored by Detlev Casanova's avatar Detlev Casanova
Browse files

d/patches: Add support for selecting the correct device tree

parent c17e7857
No related branches found
No related tags found
4 merge requests!105Merge changes from apertis/v2023-updates into apertis/v2023,!103[v2023 <- v2024dev2] d/patches: rcar: Add ATF overlay and select correct linux dtb,!101Update from debian/bookworm for apertis/v2024dev2,!97d/patches: rcar: Add ATF overlay and select correct linux dtb
......@@ -20,6 +20,8 @@ Signed-off-by: Denis Pynkin <denis.pynkin@collabora.com>
include/configs/rcar-gen3-common.h | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/include/configs/rcar-gen3-common.h b/include/configs/rcar-gen3-common.h
index c8f15a2..f5672af 100644
--- a/include/configs/rcar-gen3-common.h
+++ b/include/configs/rcar-gen3-common.h
@@ -41,10 +41,24 @@
......@@ -41,8 +43,8 @@ Signed-off-by: Denis Pynkin <denis.pynkin@collabora.com>
/* Default boot targets, SD first, then eMMC, USB and network */
#define BOOT_TARGET_DEVICES(func) \
func(MMC, mmc, 0) \
+ func(LEGACY_MMC, legacy_mmc, 0) \
func(MMC, mmc, 1) \
+ func(LEGACY_MMC, legacy_mmc, 0) \
+ func(LEGACY_MMC, legacy_mmc, 1) \
func(USB, usb, 0) \
func(PXE, pxe, na) \
......
From: Detlev Casanova <detlev.casanova@collabora.com>
Date: Fri, 24 Mar 2023 15:15:51 -0400
Subject: renesas: rcar3: Expose the board id in sysinfo
This is a preparation commit for selecting the correct device tree name
to be loaded depending on the board id.
Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com>
---
drivers/sysinfo/rcar3.c | 29 ++++++++++++++++++-----------
drivers/sysinfo/rcar3.h | 18 ++++++++++++++++++
2 files changed, 36 insertions(+), 11 deletions(-)
create mode 100644 drivers/sysinfo/rcar3.h
diff --git a/drivers/sysinfo/rcar3.c b/drivers/sysinfo/rcar3.c
index c2f4ddf..55fed94 100644
--- a/drivers/sysinfo/rcar3.c
+++ b/drivers/sysinfo/rcar3.c
@@ -7,22 +7,12 @@
#include <dm.h>
#include <i2c_eeprom.h>
#include <log.h>
-#include <sysinfo.h>
+#include "rcar3.h"
#define BOARD_CODE_MASK 0xF8
#define BOARD_REV_MASK 0x07
#define BOARD_CODE_SHIFT 0x03
-#define BOARD_SALVATOR_X 0x0
-#define BOARD_KRIEK 0x1
-#define BOARD_STARTER_KIT 0x2
-#define BOARD_SALVATOR_XS 0x4
-#define BOARD_EBISU 0x8
-#define BOARD_STARTER_KIT_PRE 0xB
-#define BOARD_EBISU_4D 0xD
-#define BOARD_DRAAK 0xE
-#define BOARD_EAGLE 0xF
-
/**
* struct sysinfo_rcar_priv - sysinfo private data
* @boardname: board model and revision
@@ -30,6 +20,7 @@
*/
struct sysinfo_rcar_priv {
char boardmodel[64];
+ u8 board_id;
u8 val;
};
@@ -40,6 +31,19 @@ static int sysinfo_rcar_detect(struct udevice *dev)
return priv->val == 0xff;
}
+static int sysinfo_rcar_get_int(struct udevice *dev, int id, int *val)
+{
+ struct sysinfo_rcar_priv *priv = dev_get_priv(dev);
+
+ switch (id) {
+ case SYSINFO_ID_BOARD_MODEL:
+ *val = priv->board_id;
+ return 0;
+ default:
+ return -EINVAL;
+ };
+}
+
static int sysinfo_rcar_get_str(struct udevice *dev, int id, size_t size, char *val)
{
struct sysinfo_rcar_priv *priv = dev_get_priv(dev);
@@ -57,6 +61,7 @@ static int sysinfo_rcar_get_str(struct udevice *dev, int id, size_t size, char *
static const struct sysinfo_ops sysinfo_rcar_ops = {
.detect = sysinfo_rcar_detect,
.get_str = sysinfo_rcar_get_str,
+ .get_int = sysinfo_rcar_get_int,
};
static void sysinfo_rcar_parse(struct sysinfo_rcar_priv *priv)
@@ -65,6 +70,8 @@ static void sysinfo_rcar_parse(struct sysinfo_rcar_priv *priv)
const u8 board_rev = priv->val & BOARD_REV_MASK;
bool salvator_xs = false;
bool ebisu_4d = false;
+
+ priv->board_id = board_id;
char rev_major = '?';
char rev_minor = '?';
diff --git a/drivers/sysinfo/rcar3.h b/drivers/sysinfo/rcar3.h
new file mode 100644
index 0000000..767d613
--- /dev/null
+++ b/drivers/sysinfo/rcar3.h
@@ -0,0 +1,18 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2023 Detlev Casanova <detlev.casanova@collabora.com>
+ */
+
+#include <sysinfo.h>
+
+#define BOARD_SALVATOR_X 0x0
+#define BOARD_KRIEK 0x1
+#define BOARD_STARTER_KIT 0x2
+#define BOARD_SALVATOR_XS 0x4
+#define BOARD_EBISU 0x8
+#define BOARD_STARTER_KIT_PRE 0xB
+#define BOARD_EBISU_4D 0xD
+#define BOARD_DRAAK 0xE
+#define BOARD_EAGLE 0xF
+
+
From: Detlev Casanova <detlev.casanova@collabora.com>
Date: Fri, 24 Mar 2023 15:21:04 -0400
Subject: renesas: rcar3: Load the correct device tree
The Renesas R-Car Gen3 H3e (Starter Kit Premier) uses a different
device tree than the default one.
This uses the sysinfo's board id to determine if the board nees a
specific device tree.
Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com>
---
board/renesas/ulcb/ulcb.c | 34 ++++++++++++++++++++++++++++++++++
configs/rcar3_ulcb_defconfig | 1 +
2 files changed, 35 insertions(+)
diff --git a/board/renesas/ulcb/ulcb.c b/board/renesas/ulcb/ulcb.c
index 1477750..3e2fe3a 100644
--- a/board/renesas/ulcb/ulcb.c
+++ b/board/renesas/ulcb/ulcb.c
@@ -28,6 +28,8 @@
#include <i2c.h>
#include <mmc.h>
+#include "../../../drivers/sysinfo/rcar3.h"
+
DECLARE_GLOBAL_DATA_PTR;
#define DVFS_MSTP926 BIT(26)
@@ -65,6 +67,38 @@ int board_init(void)
return 0;
}
+int misc_init_r(void)
+{
+ struct udevice *dev;
+ int board_id;
+ int ret = sysinfo_get(&dev);
+ if (ret) {
+ debug("Cannot get sysinfo: %d\n", ret);
+ return 0;
+ }
+
+ ret = sysinfo_detect(dev);
+ if (ret) {
+ debug("Cannot detect sysinfo: %d\n", ret);
+ return 0;
+ }
+
+ ret = sysinfo_get_int(dev,
+ SYSINFO_ID_BOARD_MODEL,
+ &board_id);
+
+ if (ret) {
+ debug("Cannot get sysinfo int: %d\n", ret);
+ return 0;
+ }
+
+ if (board_id == BOARD_STARTER_KIT_PRE) {
+ env_set("fdtfile", "renesas/r8a779m1-ulcb.dtb");
+ }
+
+ return 0;
+}
+
#ifdef CONFIG_MULTI_DTB_FIT
int board_fit_config_name_match(const char *name)
{
diff --git a/configs/rcar3_ulcb_defconfig b/configs/rcar3_ulcb_defconfig
index a2ecdea..dfb1e62 100644
--- a/configs/rcar3_ulcb_defconfig
+++ b/configs/rcar3_ulcb_defconfig
@@ -124,3 +124,4 @@ CONFIG_SYS_BOOTCOUNT_EXT_INTERFACE="mmc"
CONFIG_SYS_BOOTCOUNT_EXT_DEVPART="0:1"
CONFIG_SYS_BOOTCOUNT_EXT_NAME="/uboot.cnt"
CONFIG_SYS_BOOTCOUNT_ADDR=0x048000000
+CONFIG_MISC_INIT_R=y
......@@ -61,6 +61,8 @@ apertis/renesas/0101-ARM-rcar_gen3-boot-with-legacy-FDT.patch
apertis/renesas/0102-Kconfig-define-LEGACY_FDT_FILE-option.patch
apertis/renesas/0103-renesas-set-legacy-FDT-name.patch
apertis/renesas/0104-renesas-rcar-Set-CONFIG_BOOTCOMMAND-to-distro_bootcm.patch
apertis/renesas/0105-renesas-rcar3-Expose-the-board-id-in-sysinfo.patch
apertis/renesas/0106-renesas-rcar3-Load-the-correct-device-tree.patch
# Configuration for Raspberry Pi 3/4
apertis/rpi/0001-RPi-use-alternative-boot-for-rollback.patch
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment