sdk-hwV1.3/lichee/brandy-2.0/spl/common/flash_loader.c

52 lines
1.5 KiB
C

#include <common.h>
#include <spare_head.h>
#ifdef CFG_BOOT0_LOAD_ISPPARM
/*
* CFG_BOOT0_LOAD_FLASH=y
* CFG_BOOT0_LOAD_ISPPARM=y
* CFG_ISPPARAM_LOAD_ADDR=0x43BFFE00
* CFG_ISPPARAM_SIZE=0x8 #byte
* CFG_SPINOR_ISPPARAM_OFFSET=CFG_SPINOR_UBOOT_OFFSET - 16
*/
#ifdef CFG_SUNXI_SPINOR
#if !defined(CFG_ISPPARAM_LOAD_ADDR) || !defined(CFG_ISPPARAM_SIZE) || \
!defined(CFG_SPINOR_ISPPARAM_OFFSET)
#error CFG_ISPPARAM_LOAD_ADDR CFG_ISPPARAM_SIZE CFG_ISPPARAM_SIZE \
CFG_SPINOR_ISPPARAM_OFFSET required for load ispparm
#endif
#define ISP_PARAM_OFFSET CFG_SPINOR_ISPPARAM_OFFSET
#endif /* CFG_SUNXI_SPINOR */
#ifdef CFG_SUNXI_SDMMC
#if !defined(CFG_ISPPARAM_LOAD_ADDR) || !defined(CFG_ISPPARAM_SIZE) || \
!defined(CFG_MMC_ISPPARAM_OFFSET)
#error CFG_ISPPARAM_LOAD_ADDR CFG_ISPPARAM_SIZE CFG_ISPPARAM_SIZE \
CFG_MMC_ISPPARAM_OFFSET required for load ispparm
#endif
#define ISP_PARAM_OFFSET CFG_MMC_ISPPARAM_OFFSET
#endif /* CFG_SUNXI_SDMMC */
#if !defined(CFG_SUNXI_SPINOR) && \
!defined(CFG_SUNXI_SDMMC)
#error Only supports mmc and nor
#endif
int load_isp_param(int (*flash_read)(uint, uint, void *))
{
int load_flash_success = -1;
boot_info("from_flash = 0x%x, isp parm size = 0x%x,addr = 0x%x\n",
ISP_PARAM_OFFSET, CFG_ISPPARAM_SIZE,
(void *)(phys_addr_t)CFG_ISPPARAM_LOAD_ADDR);
load_flash_success =
flash_read(ISP_PARAM_OFFSET, CFG_ISPPARAM_SIZE,
(void *)(phys_addr_t)CFG_ISPPARAM_LOAD_ADDR);
return load_flash_success;
}
#endif