diff --git a/arch/arm/include/asm/spl.h b/arch/arm/include/asm/spl.h
index 8acd7cd1bd5ab539ccef5201607fcfe64aab08a7..17b6f544da79e024a6fb25e9c1405bac420663f4 100644
--- a/arch/arm/include/asm/spl.h
+++ b/arch/arm/include/asm/spl.h
@@ -26,10 +26,14 @@ enum {
 	BOOT_DEVICE_SPI,
 	BOOT_DEVICE_SATA,
 	BOOT_DEVICE_I2C,
+	BOOT_DEVICE_BOARD,
 	BOOT_DEVICE_NONE
 };
 #endif
 
+/* Board-specific load method */
+void spl_board_load_image(void);
+
 /* Linker symbols. */
 extern char __bss_start[], __bss_end[];
 
diff --git a/common/spl/spl.c b/common/spl/spl.c
index daaeb507c467b14cf0f80ecaab46e48064e58672..ded0f304786d275ad3818072ab7019e49a26ba6a 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -228,6 +228,11 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
 	case BOOT_DEVICE_SATA:
 		spl_sata_load_image();
 		break;
+#endif
+#ifdef CONFIG_SPL_BOARD_LOAD_IMAGE
+	case BOOT_DEVICE_BOARD:
+		spl_board_load_image();
+		break;
 #endif
 	default:
 #if defined(CONFIG_SPL_SERIAL_SUPPORT) && defined(CONFIG_SPL_LIBCOMMON_SUPPORT)