sdk-hwV1.3/lichee/brandy-2.0/spl/include/nand_boot0.h

116 lines
3.3 KiB
C

/*
* (C) Copyright 2013-2016
* Allwinner Technology Co., Ltd. <www.allwinnertech.com>
*
*/
#ifndef __basic_nf_func_h
#define __basic_nf_func_h
#define BOOT0_START_BLK_NUM 0
#if defined(CONFIG_ARCH_SUN8IW7) || defined(CONFIG_ARCH_SUN8IW11)
#define BLKS_FOR_BOOT0 2
#else
#define BLKS_FOR_BOOT0 4
#endif
#define BOOT1_START_BLK_NUM BLKS_FOR_BOOT0
#define BLKS_FOR_BOOT1_IN_16K_BLK_NF 32
#define BLKS_FOR_BOOT1_IN_32K_BLK_NF 8
#define BLKS_FOR_BOOT1_IN_128K_BLK_NF 5
#if defined(CONFIG_ARCH_SUN8IW7)
#define BLKS_FOR_BOOT1_IN_256K_BLK_NF 40
#define BLKS_FOR_BOOT1_IN_512K_BLK_NF 20
#else
#define BLKS_FOR_BOOT1_IN_256K_BLK_NF 5
#define BLKS_FOR_BOOT1_IN_512K_BLK_NF 5
#endif
#define BLKS_FOR_BOOT1_IN_1M_BLK_NF 5
#define BLKS_FOR_BOOT1_IN_2M_BLK_NF 5
#define BLKS_FOR_BOOT1_IN_4M_BLK_NF 5
#define BLKS_FOR_BOOT1_IN_8M_BLK_NF 5
extern __u32 NF_BLOCK_SIZE;
extern __u32 NF_BLK_SZ_WIDTH;
extern __u32 NF_PAGE_SIZE;
extern __u32 NF_PG_SZ_WIDTH;
extern __u32 BOOT1_LAST_BLK_NUM;
extern __u32 page_with_bad_block;
extern __u32 BOOT1_START_BLK;
#define NF_SECTOR_SIZE 512U
#define NF_SCT_SZ_WIDTH 9U
#define OOB_BUF_SIZE_PER_SECTOR 4
#define NF_OK 0
#define NF_GOOD_BLOCK 0
#define NF_OVERTIME_ERR 1
#define NF_ECC_ERR 2
#define NF_BAD_BLOCK 3
#define NF_ERASE_ERR 4
#define NF_PROG_ERR 5
#define NF_NEW_BAD_BLOCK 6
#define NF_LACK_BLKS 7
#define NF_ERROR -1
#define NF_ERR_COUNT 8
#define MAX_PAGE_SIZE SZ_8K
#define BAD_BLK_FLAG 0
typedef enum
{
ADV_NF_OK =0,
ADV_NF_FIND_OK =0,
ADV_NF_NO_NEW_BAD_BLOCK =0,
ADV_NF_ERROR ,
ADV_NF_NO_FIND_ERR ,
ADV_NF_OVERTIME_ERR ,
ADV_NF_LACK_BLKS ,
ADV_NF_NEW_BAD_BLOCK ,
}adv_nf_errer_e;
extern __s32 load_and_check_in_one_blk( __u32 blk_num, void *buf, __u32 size, __u32 blk_size);
extern __s32 load_in_many_blks( __u32 start_blk, __u32 last_blk_num, void *buf,
__u32 size, __u32 blk_size, __u32 *blks );
extern __s32 write_in_one_blk( __u32 blk_num, void *buf, __u32 size, __u32 blk_size );
extern __s32 write_in_many_blks( __u32 start_blk, __u32 last_blk_num, void *buf,
__u32 size, __u32 blk_size, __u32 * blks );
extern __s32 NF_open ( void );
extern __s32 NF_close( void );
extern __s32 NF_read ( __u32 sector_num, void *buffer, __u32 N );
extern __s32 NF_write( __u32 sector_num, void *buffer, __u32 N );
extern __s32 NF_erase( __u32 blk_num );
extern __s32 NF_read_status ( __u32 blk_num );
extern __s32 NF_mark_bad_block( __u32 blk_num );
extern __s32 NF_verify_block( __u32 blk_num );
struct boot_physical_param;
extern __u32 NAND_Getlsbpage_type(void);
extern __u32 NAND_GetLsbblksize(void);
extern __s32 NFB_PhyInit(void);
extern __s32 NFB_PhyExit(void);
extern __s32 NFB_PhyRead (struct boot_physical_param *readop);
extern __u32 Nand_Is_lsb_page(__u32 page);
extern __u8 *get_page_buf( void );
extern __s32 check_magic( __u32 *mem_base, const char *magic );
extern __u32 load_uboot_in_one_block_judge(__u32 length);
extern int verify_addsum( void *mem_base, __u32 size );
extern __u32 g_mod( __u32 dividend, __u32 divisor, __u32 *quot_p );
extern __s32 check_sum( __u32 *mem_base, __u32 size );
#endif