All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sinthu Raja <sinthu.raja@mistralsolutions.com>
To: u-boot@lists.denx.de, Simon Glass <sjg@chromium.org>,
	Marcel Ziswiler <marcel.ziswiler@toradex.com>,
	Marek Vasut <marex@denx.de>,
	Vignesh Raghavendra <vigneshr@ti.com>
Cc: Sinthu Raja <sinthu.raja@ti.com>
Subject: [PATCH 07/11] arm: j721s2: Add support for selecting DT based on EEPROM
Date: Thu, 27 Oct 2022 16:18:42 +0530	[thread overview]
Message-ID: <20221027104846.11820-8-sinthu.raja@ti.com> (raw)
In-Reply-To: <20221027104846.11820-1-sinthu.raja@ti.com>

From: Sinthu Raja <sinthu.raja@ti.com>

Enable support for selecting DTB from FIT within SPL based on the
board name read from EEPROM. This will help to use single defconfig
for both EVM and SK.

Signed-off-by: Sinthu Raja <sinthu.raja@ti.com>
---
 arch/arm/mach-k3/j721s2_init.c | 59 ++++++++++++++++++++++++++++++++++
 1 file changed, 59 insertions(+)

diff --git a/arch/arm/mach-k3/j721s2_init.c b/arch/arm/mach-k3/j721s2_init.c
index 12da8136f9..fc5eee03b6 100644
--- a/arch/arm/mach-k3/j721s2_init.c
+++ b/arch/arm/mach-k3/j721s2_init.c
@@ -19,8 +19,10 @@
 #include <dm.h>
 #include <dm/uclass-internal.h>
 #include <dm/pinctrl.h>
+#include <fdt_support.h>
 #include <mmc.h>
 #include <remoteproc.h>
+#include <dm/root.h>
 
 static void ctrl_mmr_unlock(void)
 {
@@ -93,6 +95,59 @@ static void store_boot_info_from_rom(void)
 	       sizeof(struct rom_extended_boot_data));
 }
 
+#ifdef CONFIG_SPL_OF_LIST
+void do_dt_magic(void)
+{
+	int ret, rescan, mmc_dev = -1;
+	static struct mmc *mmc;
+
+	if (IS_ENABLED(CONFIG_TI_I2C_BOARD_DETECT))
+		do_board_detect();
+
+	/*
+	 * Board detection has been done.
+	 * Let us see if another dtb wouldn't be a better match
+	 * for our board
+	 */
+	if (IS_ENABLED(CONFIG_CPU_V7R)) {
+		ret = fdtdec_resetup(&rescan);
+		if (!ret && rescan) {
+			dm_uninit();
+			dm_init_and_scan(true);
+		}
+	}
+
+	/*
+	 * Because of multi DTB configuration, the MMC device has
+	 * to be re-initialized after reconfiguring FDT inorder to
+	 * boot from MMC. Do this when boot mode is MMC and ROM has
+	 * not loaded SYSFW.
+	 */
+	switch (spl_boot_device()) {
+	case BOOT_DEVICE_MMC1:
+		mmc_dev = 0;
+		break;
+	case BOOT_DEVICE_MMC2:
+	case BOOT_DEVICE_MMC2_2:
+		mmc_dev = 1;
+		break;
+	}
+
+	if (mmc_dev > 0 && !is_rom_loaded_sysfw(&bootdata)) {
+		ret = mmc_init_device(mmc_dev);
+		if (!ret) {
+			mmc = find_mmc_device(mmc_dev);
+			if (mmc) {
+				ret = mmc_init(mmc);
+				if (ret) {
+					printf("mmc init failed with error: %d\n", ret);
+				}
+			}
+		}
+	}
+}
+#endif
+
 void board_init_f(ulong dummy)
 {
 	struct udevice *dev;
@@ -139,6 +194,10 @@ void board_init_f(ulong dummy)
 		k3_sysfw_loader(is_rom_loaded_sysfw(&bootdata),
 				k3_mmc_stop_clock, k3_mmc_restart_clock);
 
+#ifdef CONFIG_SPL_OF_LIST
+		do_dt_magic();
+#endif
+
 		if (IS_ENABLED(CONFIG_SPL_CLK_K3)) {
 			/*
 			 * Force probe of clk_k3 driver here to ensure basic default clock
-- 
2.36.1


  parent reply	other threads:[~2022-10-27 11:15 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-27 10:48 [PATCH 00/11] AM68 SK: Add initial support for AM68 Starter Kit Sinthu Raja
2022-10-27 10:48 ` [PATCH 01/11] configs: j721s2_evm_r5: Enable support for building multiple dtbs into FIT Sinthu Raja
2022-10-27 10:48 ` [PATCH 02/11] configs: j721s2_evm_a72: " Sinthu Raja
2022-10-27 10:48 ` [PATCH 03/11] configs: j721s2_evm: Enable configs to store env in MMC FAT partition Sinthu Raja
2022-10-27 10:48 ` [PATCH 04/11] board: ti: j721s2: Add support to update board_name for am68-sk Sinthu Raja
2022-10-27 12:59   ` Tom Rini
2022-10-27 10:48 ` [PATCH 05/11] board: ti: j721s2: Enable support for reading EEPROM at next alternate address Sinthu Raja
2022-10-27 10:48 ` [PATCH 06/11] board: ti: j721s2: Add support for detecting multiple device trees Sinthu Raja
2022-10-27 13:02   ` Tom Rini
2022-10-27 10:48 ` Sinthu Raja [this message]
2022-10-27 13:04   ` [PATCH 07/11] arm: j721s2: Add support for selecting DT based on EEPROM Tom Rini
2022-10-27 10:48 ` [PATCH 08/11] arm: dts: Add initial support for AM68 Starter Kit System on Module Sinthu Raja
2022-10-27 13:06   ` Tom Rini
2022-10-27 10:48 ` [PATCH 09/11] arm: dts: Add support for A72 specific AM68 Starter Kit Base Board Sinthu Raja
2022-10-27 10:48 ` [PATCH 10/11] arm: dts: k3-am68-sk: Add r5 specific dt support Sinthu Raja
2022-10-27 10:48 ` [PATCH 11/11] include: configs: Update env for selecting right dtb Sinthu Raja

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221027104846.11820-8-sinthu.raja@ti.com \
    --to=sinthu.raja@mistralsolutions.com \
    --cc=marcel.ziswiler@toradex.com \
    --cc=marex@denx.de \
    --cc=sinthu.raja@ti.com \
    --cc=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    --cc=vigneshr@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.