#include #include #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