|
@@ -7,6 +7,7 @@
|
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
|
*/
|
|
|
#include <common.h>
|
|
|
+#include <dm.h>
|
|
|
#include <spl.h>
|
|
|
#include <linux/compiler.h>
|
|
|
#include <asm/u-boot.h>
|
|
@@ -101,9 +102,18 @@ void spl_mmc_load_image(void)
|
|
|
{
|
|
|
struct mmc *mmc;
|
|
|
u32 boot_mode;
|
|
|
- int err;
|
|
|
+ int err = 0;
|
|
|
__maybe_unused int part;
|
|
|
|
|
|
+#ifdef CONFIG_DM_MMC
|
|
|
+ struct udevice *dev;
|
|
|
+
|
|
|
+ mmc_initialize(NULL);
|
|
|
+ err = uclass_get_device(UCLASS_MMC, 0, &dev);
|
|
|
+ mmc = NULL;
|
|
|
+ if (!err)
|
|
|
+ mmc = mmc_get_mmc_dev(dev);
|
|
|
+#else
|
|
|
mmc_initialize(gd->bd);
|
|
|
|
|
|
/* We register only one device. So, the dev id is always 0 */
|
|
@@ -114,8 +124,11 @@ void spl_mmc_load_image(void)
|
|
|
#endif
|
|
|
hang();
|
|
|
}
|
|
|
+#endif
|
|
|
+
|
|
|
+ if (!err)
|
|
|
+ err = mmc_init(mmc);
|
|
|
|
|
|
- err = mmc_init(mmc);
|
|
|
if (err) {
|
|
|
#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
|
|
|
printf("spl: mmc init failed with error: %d\n", err);
|