/* * (C) Copyright 2008-2015 Fuzhou Rockchip Electronics Co., Ltd * * SPDX-License-Identifier: GPL-2.0+ */ #ifndef BOOT_MERGER_H #define BOOT_MERGER_H #include #include #include #include #include /* #define DEBUG */ extern bool gDebug; #define LOGE(fmt, args...) fprintf(stderr, "E: [%s] "fmt, __func__, ##args) #define LOGD(fmt, args...) do {\ if (gDebug) \ fprintf(stderr, "W: [%s] "fmt, __func__, ##args); \ } while (0) #define SCANF_EAT(in) fscanf(in, "%*[ \r\n\t/]")//, gEat) #define MAX_LINE_LEN 256 extern char gEat[MAX_LINE_LEN]; typedef char line_t[MAX_LINE_LEN]; #define DEF_CONFIG_FILE "CONFIG.ini" #define DEF_MAJOR 0 #define DEF_MINOR 3 #define DEF_CHIP "RK30" #define DEF_CODE471_NUM 1 #define DEF_CODE472_NUM 1 #define DEF_CODE471_SLEEP 0 #define DEF_CODE472_SLEEP 0 #define DEF_CODE471_PATH "30_LPDDR2_300MHz_DDR3_300MHz.bin" #define DEF_CODE472_PATH "rk30usbplug.bin" #define DEF_LOADER_NUM 2 #define DEF_LOADER0 "FlashData" #define DEF_LOADER0_PATH "30_LPDDR2_300MHz_DDR3_300MHz.bin" #define DEF_LOADER1 "FlashBoot" #define DEF_LOADER1_PATH "../../u-boot.bin" #define DEF_OUT_PATH "../../RK30xxLoader_uboot.bin" #define OUT_SUBFIX ".bin" #define SEC_CHIP "[CHIP_NAME]" #define SEC_VERSION "[VERSION]" #define SEC_471 "[CODE471_OPTION]" #define SEC_472 "[CODE472_OPTION]" #define SEC_LOADER "[LOADER_OPTION]" #define SEC_OUT "[OUTPUT]" #define OPT_NAME "NAME" #define OPT_MAJOR "MAJOR" #define OPT_MINOR "MINOR" #define OPT_NUM "NUM" #define OPT_LOADER_NUM "LOADERCOUNT" #define OPT_PATH "Path" #define OPT_SLEEP "Sleep" #define OPT_LOADER_NAME "LOADER" #define OPT_OUT_PATH "PATH" typedef struct { char name[MAX_LINE_LEN]; char path[MAX_LINE_LEN]; } name_entry; typedef struct { int major; int minor; char chip[MAX_LINE_LEN]; int code471Sleep; int code472Sleep; int code471Num; int code472Num; line_t* code471Path; line_t* code472Path; int loaderNum; name_entry* loader; char outPath[MAX_LINE_LEN * 2]; } options; #define TAG 0x544F4F42 #define MERGER_VERSION 0x01030000 #define SMALL_PACKET 512 #define MAX_NAME_LEN 20 #define MAX_MERGE_SIZE (512 << 10) #define SEC_CHIP_TYPES "[CHIP_TYPES]" #define CHIP_RK28 "RK28" #define CHIP_RK281X "RK281X" #define CHIP_RKPANDA "RKPANDA" #define CHIP_RK27 "RK27" #define CHIP_RKNANO "RKNANO" #define CHIP_RKSMART "RKSMART" #define CHIP_RKCROWN "RKCROWN" #define CHIP_RKCAYMAN "RKCAYMAN" #define CHIP_RK29 "RK29" #define CHIP_RK292X "RK292X" #define CHIP_RK30 "RK30" #define CHIP_RK30B "RK30B" #define CHIP_RK31 "RK31" #define CHIP_RK32 "RK32" typedef enum { RKNONE_DEVICE =0, RK27_DEVICE =0x10, RKCAYMAN_DEVICE =0x11, RK28_DEVICE =0x20, RK281X_DEVICE =0x21, RKPANDA_DEVICE =0x22, RKNANO_DEVICE =0x30, RKSMART_DEVICE =0x31, RKCROWN_DEVICE =0x40, RK29_DEVICE =0x50, RK292X_DEVICE =0x51, RK30_DEVICE =0x60, RK30B_DEVICE =0x61, RK31_DEVICE =0x70, RK32_DEVICE =0x80 } rk_chip_type; typedef enum { ENTRY_471 =1, ENTRY_472 =2, ENTRY_LOADER =4, } rk_entry_type; #pragma pack(1) typedef struct { uint16_t year; uint8_t month; uint8_t day; uint8_t hour; uint8_t minute; uint8_t second; } rk_time; #define BOOT_RESERVED_SIZE 57 typedef struct { uint32_t tag; uint16_t size; uint32_t version; uint32_t mergerVersion; rk_time releaseTime; uint32_t chipType; uint8_t code471Num; uint32_t code471Offset; uint8_t code471Size; uint8_t code472Num; uint32_t code472Offset; uint8_t code472Size; uint8_t loaderNum; uint32_t loaderOffset; uint8_t loaderSize; uint8_t signFlag; uint8_t rc4Flag; uint8_t reserved[BOOT_RESERVED_SIZE]; } rk_boot_header; typedef struct { uint8_t size; rk_entry_type type; uint16_t name[MAX_NAME_LEN]; uint32_t dataOffset; uint32_t dataSize; uint32_t dataDelay; } rk_boot_entry; #pragma pack() #define OPT_VERBOSE "--verbose" #define OPT_HELP "--help" #define OPT_VERSION "--version" #define OPT_MERGE "--pack" #define OPT_UNPACK "--unpack" #define OPT_SUBFIX "--subfix" #define OPT_REPLACE "--replace" #define OPT_PREPATH "--prepath" #define OPT_SIZE "--size" #define OPT_RC4 "--rc4" #define OPT_CHIP "-c" #define OPT_471 "-1" #define OPT_472 "-2" #define OPT_DATA "-d" #define OPT_BOOT "-b" #define OPT_OUT "-o" #define VERSION "2013-8-12 14:27:23" #endif/* BOOT_MERGER_H */