All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 1/3] spl: mmc: support uboot image offset on main partition
@ 2020-01-15  7:08 Baruch Siach
  2020-01-15  7:08 ` [PATCH v3 2/3] arm: mvebu: clearfog: set uboot image SD card offset Baruch Siach
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Baruch Siach @ 2020-01-15  7:08 UTC (permalink / raw)
  To: u-boot

On Armada 38x platforms the ROM code loads SPL from offset 0 of eMMC
hardware boot partitions. When there are no boot partitions (i.e. SD
card) the ROM skips the first sector that usually contains the (logical)
partition table. Since the generated .kwb image contains the main U-Boot
image in a fixed location (0x140 sectors by default), we end up with the
main U-Boot image in offset of 1 sector. The current workaround is to
manually set CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR to 0x141 to
compensate for that.

This patch uses the run-time detected boot partition to determine the
right offset of the main U-Boot partition. The generated .kwb image is
now compatible with both eMMC boot partition, and SD card main data
partition.

Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
Travis CI: Passed
https://travis-ci.com/baruchsiach-travis/u-boot/builds/144357746

v3: No change

v2: Rebase on top of current master
---
 common/spl/Kconfig   | 12 ++++++++++++
 common/spl/spl_mmc.c | 15 +++++++++++++--
 2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/common/spl/Kconfig b/common/spl/Kconfig
index 61488daa3c3d..784742a3a218 100644
--- a/common/spl/Kconfig
+++ b/common/spl/Kconfig
@@ -329,6 +329,18 @@ config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
 	  Address on the MMC to load U-Boot from, when the MMC is being used
 	  in raw mode. Units: MMC sectors (1 sector = 512 bytes).
 
+config SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET
+	hex "U-Boot main hardware partition image offset"
+	depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
+	default 0x0
+	help
+	  On some platforms SPL location depends on hardware partition. The ROM
+	  code skips the MBR sector when loading SPL from main hardware data
+	  partition. This adds offset to the main U-Boot image. Set this symbol
+	  to the number of skipped sectors.
+
+	  If unsure, leave the default.
+
 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
 	bool "MMC Raw mode: by partition"
 	help
diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
index 2ede096e61c8..3e6a17c110cd 100644
--- a/common/spl/spl_mmc.c
+++ b/common/spl/spl_mmc.c
@@ -49,6 +49,16 @@ static ulong h_spl_load_read(struct spl_load_info *load, ulong sector,
 	return blk_dread(mmc_get_blk_desc(mmc), sector, count, buf);
 }
 
+static __maybe_unused unsigned long spl_mmc_raw_uboot_offset(int part)
+{
+#if IS_ENABLED(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR)
+	if (part == 0)
+		return CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET;
+#endif
+
+	return 0;
+}
+
 static __maybe_unused
 int mmc_load_image_raw_sector(struct spl_image_info *spl_image,
 			      struct mmc *mmc, unsigned long sector)
@@ -325,7 +335,7 @@ int spl_mmc_load(struct spl_image_info *spl_image,
 	static struct mmc *mmc;
 	u32 boot_mode;
 	int err = 0;
-	__maybe_unused int part;
+	__maybe_unused int part = 0;
 
 	/* Perform peripheral init only once */
 	if (!mmc) {
@@ -391,7 +401,8 @@ int spl_mmc_load(struct spl_image_info *spl_image,
 			return err;
 #endif
 #ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
-		err = mmc_load_image_raw_sector(spl_image, mmc, raw_sect);
+		err = mmc_load_image_raw_sector(spl_image, mmc,
+				raw_sect + spl_mmc_raw_uboot_offset(part));
 		if (!err)
 			return err;
 #endif
-- 
2.24.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v3 2/3] arm: mvebu: clearfog: set uboot image SD card offset
  2020-01-15  7:08 [PATCH v3 1/3] spl: mmc: support uboot image offset on main partition Baruch Siach
@ 2020-01-15  7:08 ` Baruch Siach
  2020-01-16  9:57   ` Stefan Roese
  2020-01-16 14:27   ` Stefan Roese
  2020-01-15  7:08 ` [PATCH v3 3/3] arm: mvebu: clearfog: update eMMC documentation Baruch Siach
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 9+ messages in thread
From: Baruch Siach @ 2020-01-15  7:08 UTC (permalink / raw)
  To: u-boot

Armada 38x ROM skips the first SD card offset when loading SPL. This
affects the location of the main U-Boot image. SPL MMC code now supports
U-Boot image offset based on run-time detection of the boot partition.
Use this feature to make the same generated image support both SD card
and eMMC boot partition.

Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
v3: Rebase on top of http://patchwork.ozlabs.org/patch/1205597/

v2: No change
---
 configs/clearfog_defconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/configs/clearfog_defconfig b/configs/clearfog_defconfig
index 10c39e34fb6e..b48a4abfcb9e 100644
--- a/configs/clearfog_defconfig
+++ b/configs/clearfog_defconfig
@@ -26,7 +26,7 @@ CONFIG_USE_PREBOOT=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_DISPLAY_BOARDINFO_LATE=y
-CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x141
+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET=0x1
 CONFIG_SPL_DM_GPIO=y
 CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_CMD_FLASH is not set
-- 
2.24.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v3 3/3] arm: mvebu: clearfog: update eMMC documentation
  2020-01-15  7:08 [PATCH v3 1/3] spl: mmc: support uboot image offset on main partition Baruch Siach
  2020-01-15  7:08 ` [PATCH v3 2/3] arm: mvebu: clearfog: set uboot image SD card offset Baruch Siach
@ 2020-01-15  7:08 ` Baruch Siach
  2020-01-16  9:58   ` Stefan Roese
  2020-01-16 14:28   ` Stefan Roese
  2020-01-16  9:57 ` [PATCH v3 1/3] spl: mmc: support uboot image offset on main partition Stefan Roese
  2020-01-16 14:27 ` Stefan Roese
  3 siblings, 2 replies; 9+ messages in thread
From: Baruch Siach @ 2020-01-15  7:08 UTC (permalink / raw)
  To: u-boot

SPL now automatically selects the correct U-Boot image offset for both
eMMC and SD card. No need to tweak
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR anymore.

Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
 board/solidrun/clearfog/README | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/board/solidrun/clearfog/README b/board/solidrun/clearfog/README
index 6171ce66f4f8..9375be84957a 100644
--- a/board/solidrun/clearfog/README
+++ b/board/solidrun/clearfog/README
@@ -20,12 +20,6 @@ of "/dev/sdX" here!
 Install U-Boot on eMMC:
 -----------------------
 
-The ROM loads the bootloader from eMMC first boot partition at offset 0. This
-is unlike load from SD card that is at offset 512. As a result, the offset of
-the main U-Boot image on the eMMC boot partition changes. Set
-CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR to 0x140 for SPL to load U-Boot from
-the correct location.
-
 To make SPL load the main U-Boot image from the eMMC boot partition enable
 eMMC boot acknowledgement and boot partition with the following U-Boot
 command:
-- 
2.24.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v3 1/3] spl: mmc: support uboot image offset on main partition
  2020-01-15  7:08 [PATCH v3 1/3] spl: mmc: support uboot image offset on main partition Baruch Siach
  2020-01-15  7:08 ` [PATCH v3 2/3] arm: mvebu: clearfog: set uboot image SD card offset Baruch Siach
  2020-01-15  7:08 ` [PATCH v3 3/3] arm: mvebu: clearfog: update eMMC documentation Baruch Siach
@ 2020-01-16  9:57 ` Stefan Roese
  2020-01-16 14:27 ` Stefan Roese
  3 siblings, 0 replies; 9+ messages in thread
From: Stefan Roese @ 2020-01-16  9:57 UTC (permalink / raw)
  To: u-boot

On 15.01.20 08:08, Baruch Siach wrote:
> On Armada 38x platforms the ROM code loads SPL from offset 0 of eMMC
> hardware boot partitions. When there are no boot partitions (i.e. SD
> card) the ROM skips the first sector that usually contains the (logical)
> partition table. Since the generated .kwb image contains the main U-Boot
> image in a fixed location (0x140 sectors by default), we end up with the
> main U-Boot image in offset of 1 sector. The current workaround is to
> manually set CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR to 0x141 to
> compensate for that.
> 
> This patch uses the run-time detected boot partition to determine the
> right offset of the main U-Boot partition. The generated .kwb image is
> now compatible with both eMMC boot partition, and SD card main data
> partition.
> 
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>

Reviewed-by: Stefan Roese <sr@denx.de>

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v3 2/3] arm: mvebu: clearfog: set uboot image SD card offset
  2020-01-15  7:08 ` [PATCH v3 2/3] arm: mvebu: clearfog: set uboot image SD card offset Baruch Siach
@ 2020-01-16  9:57   ` Stefan Roese
  2020-01-16 14:27   ` Stefan Roese
  1 sibling, 0 replies; 9+ messages in thread
From: Stefan Roese @ 2020-01-16  9:57 UTC (permalink / raw)
  To: u-boot

On 15.01.20 08:08, Baruch Siach wrote:
> Armada 38x ROM skips the first SD card offset when loading SPL. This
> affects the location of the main U-Boot image. SPL MMC code now supports
> U-Boot image offset based on run-time detection of the boot partition.
> Use this feature to make the same generated image support both SD card
> and eMMC boot partition.
> 
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>

Reviewed-by: Stefan Roese <sr@denx.de>

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v3 3/3] arm: mvebu: clearfog: update eMMC documentation
  2020-01-15  7:08 ` [PATCH v3 3/3] arm: mvebu: clearfog: update eMMC documentation Baruch Siach
@ 2020-01-16  9:58   ` Stefan Roese
  2020-01-16 14:28   ` Stefan Roese
  1 sibling, 0 replies; 9+ messages in thread
From: Stefan Roese @ 2020-01-16  9:58 UTC (permalink / raw)
  To: u-boot

On 15.01.20 08:08, Baruch Siach wrote:
> SPL now automatically selects the correct U-Boot image offset for both
> eMMC and SD card. No need to tweak
> CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR anymore.
> 
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>

Reviewed-by: Stefan Roese <sr@denx.de>

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v3 1/3] spl: mmc: support uboot image offset on main partition
  2020-01-15  7:08 [PATCH v3 1/3] spl: mmc: support uboot image offset on main partition Baruch Siach
                   ` (2 preceding siblings ...)
  2020-01-16  9:57 ` [PATCH v3 1/3] spl: mmc: support uboot image offset on main partition Stefan Roese
@ 2020-01-16 14:27 ` Stefan Roese
  3 siblings, 0 replies; 9+ messages in thread
From: Stefan Roese @ 2020-01-16 14:27 UTC (permalink / raw)
  To: u-boot

On 15.01.20 08:08, Baruch Siach wrote:
> On Armada 38x platforms the ROM code loads SPL from offset 0 of eMMC
> hardware boot partitions. When there are no boot partitions (i.e. SD
> card) the ROM skips the first sector that usually contains the (logical)
> partition table. Since the generated .kwb image contains the main U-Boot
> image in a fixed location (0x140 sectors by default), we end up with the
> main U-Boot image in offset of 1 sector. The current workaround is to
> manually set CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR to 0x141 to
> compensate for that.
> 
> This patch uses the run-time detected boot partition to determine the
> right offset of the main U-Boot partition. The generated .kwb image is
> now compatible with both eMMC boot partition, and SD card main data
> partition.
> 
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>

Applied to u-boot-marvell/master

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v3 2/3] arm: mvebu: clearfog: set uboot image SD card offset
  2020-01-15  7:08 ` [PATCH v3 2/3] arm: mvebu: clearfog: set uboot image SD card offset Baruch Siach
  2020-01-16  9:57   ` Stefan Roese
@ 2020-01-16 14:27   ` Stefan Roese
  1 sibling, 0 replies; 9+ messages in thread
From: Stefan Roese @ 2020-01-16 14:27 UTC (permalink / raw)
  To: u-boot

On 15.01.20 08:08, Baruch Siach wrote:
> Armada 38x ROM skips the first SD card offset when loading SPL. This
> affects the location of the main U-Boot image. SPL MMC code now supports
> U-Boot image offset based on run-time detection of the boot partition.
> Use this feature to make the same generated image support both SD card
> and eMMC boot partition.
> 
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>

Applied to u-boot-marvell/master

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v3 3/3] arm: mvebu: clearfog: update eMMC documentation
  2020-01-15  7:08 ` [PATCH v3 3/3] arm: mvebu: clearfog: update eMMC documentation Baruch Siach
  2020-01-16  9:58   ` Stefan Roese
@ 2020-01-16 14:28   ` Stefan Roese
  1 sibling, 0 replies; 9+ messages in thread
From: Stefan Roese @ 2020-01-16 14:28 UTC (permalink / raw)
  To: u-boot

On 15.01.20 08:08, Baruch Siach wrote:
> SPL now automatically selects the correct U-Boot image offset for both
> eMMC and SD card. No need to tweak
> CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR anymore.
> 
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>

Applied to u-boot-marvell/master

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-01-16 14:28 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-15  7:08 [PATCH v3 1/3] spl: mmc: support uboot image offset on main partition Baruch Siach
2020-01-15  7:08 ` [PATCH v3 2/3] arm: mvebu: clearfog: set uboot image SD card offset Baruch Siach
2020-01-16  9:57   ` Stefan Roese
2020-01-16 14:27   ` Stefan Roese
2020-01-15  7:08 ` [PATCH v3 3/3] arm: mvebu: clearfog: update eMMC documentation Baruch Siach
2020-01-16  9:58   ` Stefan Roese
2020-01-16 14:28   ` Stefan Roese
2020-01-16  9:57 ` [PATCH v3 1/3] spl: mmc: support uboot image offset on main partition Stefan Roese
2020-01-16 14:27 ` Stefan Roese

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.