Merge branch 'master' of git://git.denx.de/u-boot-sunxi
[platform/kernel/u-boot.git] / drivers / mtd / spi / sunxi_spi_spl.c
index e3ded5b..a24c115 100644 (file)
@@ -158,9 +158,10 @@ static void spi0_disable_clock(void)
                             (1 << AHB_RESET_SPI0_SHIFT));
 }
 
-static int spi0_init(void)
+static void spi0_init(void)
 {
        unsigned int pin_function = SUNXI_GPC_SPI0;
+
        if (IS_ENABLED(CONFIG_MACH_SUN50I))
                pin_function = SUN50I_GPC_SPI0;
 
@@ -262,7 +263,8 @@ static void spi0_read_data(void *buf, u32 addr, u32 len)
 
 /*****************************************************************************/
 
-int spl_spi_load_image(void)
+static int spl_spi_load_image(struct spl_image_info *spl_image,
+                             struct spl_boot_device *bootdev)
 {
        int err;
        struct image_header *header;
@@ -271,13 +273,15 @@ int spl_spi_load_image(void)
        spi0_init();
 
        spi0_read_data((void *)header, CONFIG_SYS_SPI_U_BOOT_OFFS, 0x40);
-       err = spl_parse_image_header(header);
+       err = spl_parse_image_header(spl_image, header);
        if (err)
                return err;
 
-       spi0_read_data((void *)spl_image.load_addr, CONFIG_SYS_SPI_U_BOOT_OFFS,
-                      spl_image.size);
+       spi0_read_data((void *)spl_image->load_addr, CONFIG_SYS_SPI_U_BOOT_OFFS,
+                      spl_image->size);
 
        spi0_deinit();
        return 0;
 }
+/* Use priorty 0 to override the default if it happens to be linked in */
+SPL_LOAD_IMAGE_METHOD("sunxi SPI", 0, BOOT_DEVICE_SPI, spl_spi_load_image);