-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
rockchip: mkimage: use imagename to select spl hdr & spl size
Our chips may have different spl size and spl header, so use imagename(passed by "mkimage -n") to select them now. Signed-off-by: Jeffy Chen <[email protected]> Acked-by: Simon Glass <[email protected]>
- Loading branch information
Showing
5 changed files
with
120 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,18 +13,7 @@ | |
#include "mkimage.h" | ||
#include "rkcommon.h" | ||
|
||
enum { | ||
RKSD_SPL_HDR_START = RK_INIT_OFFSET * RK_BLK_SIZE, | ||
RKSD_SPL_START = RKSD_SPL_HDR_START + 4, | ||
RKSD_HEADER_LEN = RKSD_SPL_START, | ||
}; | ||
|
||
static char dummy_hdr[RKSD_HEADER_LEN]; | ||
|
||
static int rksd_check_params(struct image_tool_params *params) | ||
{ | ||
return 0; | ||
} | ||
static char dummy_hdr[RK_IMAGE_HEADER_LEN]; | ||
|
||
static int rksd_verify_header(unsigned char *buf, int size, | ||
struct image_tool_params *params) | ||
|
@@ -42,15 +31,16 @@ static void rksd_set_header(void *buf, struct stat *sbuf, int ifd, | |
unsigned int size; | ||
int ret; | ||
|
||
size = params->file_size - RKSD_SPL_HDR_START; | ||
ret = rkcommon_set_header(buf, size); | ||
size = params->file_size - RK_SPL_HDR_START; | ||
ret = rkcommon_set_header(buf, size, params); | ||
if (ret) { | ||
/* TODO([email protected]): This method should return an error */ | ||
printf("Warning: SPL image is too large (size %#x) and will not boot\n", | ||
size); | ||
} | ||
|
||
memcpy(buf + RKSD_SPL_HDR_START, "RK32", 4); | ||
memcpy(buf + RK_SPL_HDR_START, rkcommon_get_spl_hdr(params), | ||
RK_SPL_HDR_SIZE); | ||
} | ||
|
||
static int rksd_extract_subimage(void *buf, struct image_tool_params *params) | ||
|
@@ -72,7 +62,7 @@ static int rksd_vrec_header(struct image_tool_params *params, | |
{ | ||
int pad_size; | ||
|
||
pad_size = RKSD_SPL_HDR_START + RK_MAX_CODE1_SIZE; | ||
pad_size = RK_SPL_HDR_START + rkcommon_get_spl_size(params); | ||
debug("pad_size %x\n", pad_size); | ||
|
||
return pad_size - params->file_size; | ||
|
@@ -84,9 +74,9 @@ static int rksd_vrec_header(struct image_tool_params *params, | |
U_BOOT_IMAGE_TYPE( | ||
rksd, | ||
"Rockchip SD Boot Image support", | ||
RKSD_HEADER_LEN, | ||
RK_IMAGE_HEADER_LEN, | ||
dummy_hdr, | ||
rksd_check_params, | ||
rkcommon_check_params, | ||
rksd_verify_header, | ||
rksd_print_header, | ||
rksd_set_header, | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,18 +14,10 @@ | |
#include "rkcommon.h" | ||
|
||
enum { | ||
RKSPI_SPL_HDR_START = RK_INIT_OFFSET * RK_BLK_SIZE, | ||
RKSPI_SPL_START = RKSPI_SPL_HDR_START + 4, | ||
RKSPI_HEADER_LEN = RKSPI_SPL_START, | ||
RKSPI_SECT_LEN = RK_BLK_SIZE * 4, | ||
}; | ||
|
||
static char dummy_hdr[RKSPI_HEADER_LEN]; | ||
|
||
static int rkspi_check_params(struct image_tool_params *params) | ||
{ | ||
return 0; | ||
} | ||
static char dummy_hdr[RK_IMAGE_HEADER_LEN]; | ||
|
||
static int rkspi_verify_header(unsigned char *buf, int size, | ||
struct image_tool_params *params) | ||
|
@@ -45,15 +37,16 @@ static void rkspi_set_header(void *buf, struct stat *sbuf, int ifd, | |
int ret; | ||
|
||
size = params->orig_file_size; | ||
ret = rkcommon_set_header(buf, size); | ||
ret = rkcommon_set_header(buf, size, params); | ||
debug("size %x\n", size); | ||
if (ret) { | ||
/* TODO([email protected]): This method should return an error */ | ||
printf("Warning: SPL image is too large (size %#x) and will not boot\n", | ||
size); | ||
} | ||
|
||
memcpy(buf + RKSPI_SPL_HDR_START, "RK32", 4); | ||
memcpy(buf + RK_SPL_HDR_START, rkcommon_get_spl_hdr(params), | ||
RK_SPL_HDR_SIZE); | ||
|
||
/* | ||
* Spread the image out so we only use the first 2KB of each 4KB | ||
|
@@ -89,12 +82,12 @@ static int rkspi_vrec_header(struct image_tool_params *params, | |
{ | ||
int pad_size; | ||
|
||
pad_size = (RK_MAX_CODE1_SIZE + 0x7ff) / 0x800 * 0x800; | ||
pad_size = (rkcommon_get_spl_size(params) + 0x7ff) / 0x800 * 0x800; | ||
params->orig_file_size = pad_size; | ||
|
||
/* We will double the image size due to the SPI format */ | ||
pad_size *= 2; | ||
pad_size += RKSPI_SPL_HDR_START; | ||
pad_size += RK_SPL_HDR_START; | ||
debug("pad_size %x\n", pad_size); | ||
|
||
return pad_size - params->file_size; | ||
|
@@ -106,9 +99,9 @@ static int rkspi_vrec_header(struct image_tool_params *params, | |
U_BOOT_IMAGE_TYPE( | ||
rkspi, | ||
"Rockchip SPI Boot Image support", | ||
RKSPI_HEADER_LEN, | ||
RK_IMAGE_HEADER_LEN, | ||
dummy_hdr, | ||
rkspi_check_params, | ||
rkcommon_check_params, | ||
rkspi_verify_header, | ||
rkspi_print_header, | ||
rkspi_set_header, | ||
|