samsung: tizen_rpi: check MBR partition layout from preboot
authorMarek Szyprowski <m.szyprowski@samsung.com>
Fri, 22 Jan 2021 10:24:04 +0000 (11:24 +0100)
committerMarek Szyprowski <m.szyprowski@samsung.com>
Tue, 16 Nov 2021 12:00:22 +0000 (13:00 +0100)
Verify if the MBR partition layout on SD card matches the one defined in
the bootloader.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Change-Id: I7c296a4f64e294a9dc510e0a248e83375bacf9cb

configs/rpi_3_32b_defconfig
configs/rpi_3_defconfig
configs/rpi_4_32b_defconfig
configs/rpi_4_defconfig
include/samsung/tizen_rpi.h

index 3d651dd..db7a3e2 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b"
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_USE_PREBOOT=y
+CONFIG_PREBOOT="run mbr_check"
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_MISC_INIT_R=y
index 123ae38..5014d6a 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b"
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_USE_PREBOOT=y
+CONFIG_PREBOOT="run mbr_check"
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_MISC_INIT_R=y
index 996b4f8..6777e0f 100644 (file)
@@ -7,7 +7,7 @@ CONFIG_ENV_SIZE=0x4000
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_USE_PREBOOT=y
-CONFIG_PREBOOT="pci enum; usb start;"
+CONFIG_PREBOOT="pci enum; usb start; run mbr_check"
 CONFIG_SYS_STDIO_DEREGISTER=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index a8c6534..d1b57b5 100644 (file)
@@ -7,7 +7,7 @@ CONFIG_ENV_SIZE=0x4000
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_USE_PREBOOT=y
-CONFIG_PREBOOT="pci enum; usb start;"
+CONFIG_PREBOOT="pci enum; usb start; run mbr_check"
 CONFIG_SYS_STDIO_DEREGISTER=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 06717b5..08f22ed 100644 (file)
        "name=reserved2,size=125M,id=0x83;"                     \
        ""
 
+#define MBR_CHECK      \
+       "env default mbr_parts; "                                       \
+       "if mbr verify ${dfu_interface} ${dfu_device}; "                \
+       "then true; else "                                              \
+       "echo \"MBR partition layout does not match flashed bootloader!\"; " \
+       "echo \"Please format SD card with recent sd_fusing_rpi3.sh script or Ctrl-C to continue.\"; " \
+       "while sleep 2; do echo .\\\\\\\\c; done; echo; "               \
+       "fi"
+
 #ifdef CONFIG_TARGET_RPI_4_32B
 #define TIZEN_VC_MEM "vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 swiotlb=8192 "
 #else
        "dfu_interface=mmc\0"                   \
        "dfu_device=" __stringify(CONFIG_MMC_DEFAULT_DEV) "\0" \
        "mbr_parts=" PARTS_DEFAULT "\0"         \
+       "mbr_check=" MBR_CHECK "\0"             \
        ""
 
 #endif /* __CONFIG_TIZEN_RPI_H */