]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - tools/imximage.c
buildman: Add a space before the list of boards
[karo-tx-uboot.git] / tools / imximage.c
index 18dc051c5ee67e1f98e247515bc50d56c4368736..6f469ae6336c064cd0ceb2534929b6396f22f1c1 100644 (file)
@@ -38,6 +38,7 @@ static table_entry_t imximage_boot_offset[] = {
        {FLASH_OFFSET_SATA,     "sata",         "SATA Disk",    },
        {FLASH_OFFSET_SD,       "sd",           "SD Card",      },
        {FLASH_OFFSET_SPI,      "spi",          "SPI Flash",    },
+       {FLASH_OFFSET_QSPI,     "qspi",         "QSPI NOR Flash",},
        {-1,                    "",             "Invalid",      },
 };
 
@@ -52,6 +53,7 @@ static table_entry_t imximage_boot_loadsize[] = {
        {FLASH_LOADSIZE_SATA,           "sata",         "SATA Disk",    },
        {FLASH_LOADSIZE_SD,             "sd",           "SD Card",      },
        {FLASH_LOADSIZE_SPI,            "spi",          "SPI Flash",    },
+       {FLASH_LOADSIZE_QSPI,           "qspi",         "QSPI NOR Flash",},
        {-1,                            "",             "Invalid",      },
 };
 
@@ -568,6 +570,13 @@ static void imximage_set_header(void *ptr, struct stat *sbuf, int ifd,
        /* Parse dcd configuration file */
        dcd_len = parse_cfg_file(imxhdr, params->imagename);
 
+       if (imximage_version == IMXIMAGE_V2) {
+               if (imximage_init_loadsize < imximage_ivt_offset +
+                       sizeof(imx_header_v2_t))
+                               imximage_init_loadsize = imximage_ivt_offset +
+                                       sizeof(imx_header_v2_t);
+       }
+
        /* Set the imx header */
        (*set_imx_hdr)(imxhdr, dcd_len, params->ep, imximage_ivt_offset);
 
@@ -580,7 +589,7 @@ static void imximage_set_header(void *ptr, struct stat *sbuf, int ifd,
         *
         * The remaining fraction of a block bytes would not be loaded!
         */
-       *header_size_ptr = ROUND(sbuf->st_size, 4096);
+       *header_size_ptr = ROUND((sbuf->st_size + imximage_ivt_offset), 4096);
 
        if (csf_ptr && imximage_csf_size) {
                *csf_ptr = params->ep - imximage_init_loadsize +
@@ -687,19 +696,17 @@ static int imximage_generate(struct image_tool_params *params,
 /*
  * imximage parameters
  */
-static struct image_type_params imximage_params = {
-       .name           = "Freescale i.MX Boot Image support",
-       .header_size    = 0,
-       .hdr            = NULL,
-       .check_image_type = imximage_check_image_types,
-       .verify_header  = imximage_verify_header,
-       .print_header   = imximage_print_header,
-       .set_header     = imximage_set_header,
-       .check_params   = imximage_check_params,
-       .vrec_header    = imximage_generate,
-};
-
-void init_imx_image_type(void)
-{
-       register_image_type(&imximage_params);
-}
+U_BOOT_IMAGE_TYPE(
+       imximage,
+       "Freescale i.MX Boot Image support",
+       0,
+       NULL,
+       imximage_check_params,
+       imximage_verify_header,
+       imximage_print_header,
+       imximage_set_header,
+       NULL,
+       imximage_check_image_types,
+       NULL,
+       imximage_generate
+);