android13/u-boot/tools/rockchip/boot_merger.h

204 lines
5.1 KiB
C

/*
* (C) Copyright 2008-2015 Fuzhou Rockchip Electronics Co., Ltd
*
* SPDX-License-Identifier: GPL-2.0+
*/
#ifndef BOOT_MERGER_H
#define BOOT_MERGER_H
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <stdbool.h>
/* #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 */