1 #ifndef _FDL_EMMC_OPERATE_H
2 #define _FDL_EMMC_OPERATE_H
4 #include <asm/arch/fdl_stdio.h>
5 #include <asm/arch/cmd_def.h>
6 #include <asm/arch/packet.h>
7 #ifdef CONFIG_EMMC_BOOT
8 #include "../../../disk/part_uefi.h"
9 #include "../../../include/part.h"
11 #define EMMC_SUCCESS 0
12 #define EMMC_SYSTEM_ERROR 1
13 #define EMMC_DEVICE_INIT_ERROR 2
14 #define EMMC_INVALID_DEVICE_SIZE 3
15 #define EMMC_INCOMPATIBLE_PART 4
16 #define EMMC_INVALID_ADDR 5
17 #define EMMC_INVALID_SIZE 6
23 #define debugf(fmt, args...) do { printf("%s(): ", __func__); printf(fmt, ##args); } while (0)
25 #define debugf(fmt, args...)
28 static __inline DLSTATUS convert_err (int err)
34 case EMMC_INVALID_ADDR:
35 return BSL_REP_DOWN_DEST_ERROR;
36 case EMMC_INVALID_SIZE:
37 return BSL_REP_DOWN_SIZE_ERROR;
38 case EMMC_DEVICE_INIT_ERROR:
39 return BSL_UNKNOWN_DEVICE;
40 case EMMC_INVALID_DEVICE_SIZE:
41 return BSL_INVALID_DEVICE_SIZE;
42 case EMMC_INCOMPATIBLE_PART:
43 return BSL_INCOMPATIBLE_PARTITION;
45 return BSL_REP_OPERATION_FAILED;
49 typedef enum _PARTITION_IMG_TYPE
56 typedef enum _PARTITION_PURPOSE
58 PARTITION_PURPOSE_NORMAL,
63 typedef struct DL_EMMC_STATUS_TAG
65 uint32 part_total_size ;
67 wchar_t *curUserPartitionName;
68 PARTITION_PURPOSE partitionpurpose;
70 PARTITION_IMG_TYPE curImgType;
73 typedef struct DL_FILE_STATUS_TAG
75 unsigned long total_size;
76 unsigned long total_recv_size;
77 unsigned long unsave_recv_size;
78 } DL_EMMC_FILE_STATUS;
80 typedef struct _SPECIAL_PARTITION_CFG
83 wchar_t* bak_partition;
84 PARTITION_IMG_TYPE imgattr;
85 PARTITION_PURPOSE purpose;
86 }SPECIAL_PARTITION_CFG;
88 #if defined(CONFIG_TIGER) || defined(CONFIG_SC7710G2) || defined(CONFIG_SC8830) || defined(CONFIG_SC9630)
89 #define BOOTLOADER_HEADER_OFFSET 0x20
98 PUBLIC int fdl2_download_start(wchar_t * partition_name, unsigned long size, unsigned long nv_checksum);
99 PUBLIC int fdl2_download_midst(unsigned short size, char *buf);
100 PUBLIC int fdl2_download_end(void);
101 PUBLIC int fdl2_read_start(wchar_t* partition_name, unsigned long size);
102 PUBLIC int fdl2_read_midst(unsigned long size, unsigned long off, unsigned char * buf);
103 PUBLIC int fdl2_read_end(void);
104 PUBLIC int fdl2_erase(wchar_t * partition_name, unsigned long size);
105 PUBLIC int fdl2_repartition(unsigned short * partition_cfg, unsigned short total_partition_num);
107 #endif //CONFIG_EMMC_BOOT
108 #endif //_FDL_EMMC_OPERATE_H