blob: 105b4dfa97a4915689fd5fabc2e3e331b4cb1251 [file] [log] [blame]
#include "string.h"
#include "debug.h"
#include "util.h"
#include "flash_adaptor.h"
#include "load_fixed_images.h"
int read_fixed_image_from_bootarea(int part, unsigned int start, unsigned int size, unsigned char * buff)
{
long long ret = 0;
int part_addr = 0;
dbg_printf(PRN_DBG,"flash: Load image header from boot partition %d.\n", part);
//switch to boot area
part_addr = switch_flash_part(part);
if(part_addr < 0) {
dbg_printf(PRN_ERR,"flash: error when switch to boot partion %d(err = %d).\n", part, part_addr);
return part_addr;
}
ret = read_flash((part_addr + start), size, buff);
if(ret){
return FLASH_OP_ERR;
}
return switch_flash_part(0);
}
int read_image_header(int part, unsigned char* buff)
{
int ret = 0;
ret = read_fixed_image_from_bootarea(part, IMG_HEADER_ADDR, IMG_HEADER_SIZE, buff);
if(ret){
dbg_printf(PRN_ERR,"flash: read image header error\n");
return FLASH_OP_ERR;
}
return ret;
}
#if defined(CONFIG_BCM) || defined(BCM_EN) || defined(CONFIG_UBOOT)
#else
int get_custkey(int part, unsigned char *buff)
{
int ret = 0;
ret = read_fixed_image_from_bootarea(part, CUST_KEY_ADDR, CUST_KEY_SIZE, buff);
if(ret){
dbg_printf(PRN_ERR,"flash: read custkey fail.\n");
return FLASH_OP_ERR;
}
return ret;
}
int get_figo_fw(int part, unsigned char *buff)
{
int ret = 0;
ret = read_fixed_image_from_bootarea(part, DRM_FIGO_ADDR, DRM_FIGO_SIZE, buff);
if(ret){
dbg_printf(PRN_ERR,"flash: read figo fw fail.\n");
return FLASH_OP_ERR;
}
return ret;
}
int get_ddr_scrambler_fw(int part, unsigned char *buff)
{
int ret = 0;
ret = read_fixed_image_from_bootarea(part, DDR_SCRAMBLER_ADDR, DDR_SCRAMBLER_SIZE, buff);
if(ret){
dbg_printf(PRN_ERR,"flash: read ddr scrambler fw fail.\n");
return FLASH_OP_ERR;
}
return ret;
}
#endif
int get_miniloader(int part, unsigned char *buff)
{
int ret = 0;
ret = read_fixed_image_from_bootarea(part, MINILOADER_ADDR, MINILOADER_SIZE, buff);
if(ret){
dbg_printf(PRN_ERR,"flash: read miniloader fail.\n");
return FLASH_OP_ERR;
}
return ret;
}
long long get_uboot_param(unsigned char *env_buff)
{
int part_addr = 0;
//switch to boot area
part_addr = switch_flash_part(0);
//FIXME: define MACRO for address and size
return read_flash((part_addr + UBOOT_ENV_ADDR), UBOOT_ENV_SIZE , env_buff);
}