
Hi Baruch,
On 16.05.19 12:03, Baruch Siach wrote:
Support load of the U-Boot image from raw SATA disk sector. This is equivalent to load from MMC raw sector.
Signed-off-by: Baruch Siach baruch@tkos.co.il
This patch breaks cm_t54:
$ ./tools/buildman/buildman cm_t54 Building current source for 1 boards (1 thread, 16 jobs per thread) arm: + cm_t54 +common/spl/spl_sata.c: In function ?spl_sata_load_image?: +common/spl/spl_sata.c:90:5: error: ?CONFIG_SPL_SATA_RAW_U_BOOT_SECTOR? undeclared (first use in this function); did you mean ?CONFIG_SPL_SATA_BOOT_DEVICE?? + CONFIG_SPL_SATA_RAW_U_BOOT_SECTOR); + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CONFIG_SPL_SATA_BOOT_DEVICE +common/spl/spl_sata.c:90:5: note: each undeclared identifier is reported only once for each function it appears in +make[3]: *** [scripts/Makefile.build:278: spl/common/spl/spl_sata.o] Error 1 +make[2]: *** [scripts/Makefile.spl:410: spl/common/spl] Error 2 +make[1]: *** [Makefile:1727: spl/u-boot-spl] Error 2 +make: *** [Makefile:148: sub-make] Error 2 0 0 1 /1 cm_t54
I'm dropping this one from the upcoming pull request. Please re-send it, once you've fixed it. And please compile test it for all targets (Travis).
Thanks, Stefan
common/spl/Kconfig | 14 ++++++++++++++ common/spl/spl_sata.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+)
diff --git a/common/spl/Kconfig b/common/spl/Kconfig index c7cd34449a52..a90c6adbf68b 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -733,6 +733,20 @@ config SPL_SATA_SUPPORT expense and power consumption. This enables loading from SATA using a configured device.
+config SPL_SATA_RAW_U_BOOT_USE_SECTOR
- bool "SATA raw mode: by sector"
- depends on SPL_SATA_SUPPORT
- help
Use sector number for specifying U-Boot location on SATA disk in
raw mode.
+config SPL_SATA_RAW_U_BOOT_SECTOR
- hex "Sector on the SATA disk to load U-Boot from"
- depends on SPL_SATA_RAW_U_BOOT_USE_SECTOR
- help
Sector on the SATA disk to load U-Boot from, when the SATA disk is being
used in raw mode. Units: SATA disk sectors (1 sector = 512 bytes).
- config SPL_SERIAL_SUPPORT bool "Support serial" select SPL_PRINTF
diff --git a/common/spl/spl_sata.c b/common/spl/spl_sata.c index f0af9f38d19f..3ad8a5a58035 100644 --- a/common/spl/spl_sata.c +++ b/common/spl/spl_sata.c @@ -25,6 +25,32 @@ #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img" #endif
+static int spl_sata_load_image_raw(struct spl_image_info *spl_image,
struct blk_desc *stor_dev, unsigned long sector)
+{
- struct image_header *header;
- unsigned long count;
- u32 image_size_sectors;
- int ret;
- header = spl_get_load_buffer(-sizeof(*header), stor_dev->blksz);
- count = blk_dread(stor_dev, sector, 1, header);
- if (count == 0)
return -EIO;
- ret = spl_parse_image_header(spl_image, header);
- if (ret)
return ret;
- image_size_sectors = DIV_ROUND_UP(spl_image->size, stor_dev->blksz);
- count = blk_dread(stor_dev, sector, image_size_sectors,
(void *)spl_image->load_addr);
- if (count != image_size_sectors)
return -EIO;
- return 0;
+}
- static int spl_sata_load_image(struct spl_image_info *spl_image, struct spl_boot_device *bootdev) {
@@ -59,6 +85,9 @@ static int spl_sata_load_image(struct spl_image_info *spl_image, err = spl_load_image_fat(spl_image, stor_dev, CONFIG_SYS_SATA_FAT_BOOT_PARTITION, CONFIG_SPL_FS_LOAD_PAYLOAD_NAME);
} else if (IS_ENABLED(CONFIG_SPL_SATA_RAW_U_BOOT_USE_SECTOR)) {
err = spl_sata_load_image_raw(spl_image, stor_dev,
} } if (err) {CONFIG_SPL_SATA_RAW_U_BOOT_SECTOR);
Viele Grüße, Stefan