DECLARE_GLOBAL_DATA_PTR;
 
-static int mmc_load_image_raw(struct mmc *mmc)
+static int mmc_load_image_raw(struct mmc *mmc, unsigned long sector)
 {
        unsigned long err;
        u32 image_size_sectors;
                                                sizeof(struct image_header));
 
        /* read image header to find the image size & load address */
-       err = mmc->block_dev.block_read(0,
-                       CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR, 1,
-                       header);
-
+       err = mmc->block_dev.block_read(0, sector, 1, header);
        if (err == 0)
                goto end;
 
                                mmc->read_bl_len;
 
        /* Read the header too to avoid extra memcpy */
-       err = mmc->block_dev.block_read(0,
-                       CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR,
-                       image_size_sectors, (void *)spl_image.load_addr);
+       err = mmc->block_dev.block_read(0, sector, image_size_sectors,
+                                       (void *)spl_image.load_addr);
 
 end:
        if (err == 0)
        boot_mode = spl_boot_mode();
        if (boot_mode == MMCSD_MODE_RAW) {
                debug("boot mode - RAW\n");
-               err = mmc_load_image_raw(mmc);
+               err = mmc_load_image_raw(mmc,
+                                        CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR);
 #ifdef CONFIG_SPL_FAT_SUPPORT
        } else if (boot_mode == MMCSD_MODE_FAT) {
                debug("boot mode - FAT\n");