/*******************************************************************************
*                Copyright 2016, MARVELL SEMICONDUCTOR, LTD.                   *
* THIS CODE CONTAINS CONFIDENTIAL INFORMATION OF MARVELL.                      *
* NO RIGHTS ARE GRANTED HEREIN UNDER ANY PATENT, MASK WORK RIGHT OR COPYRIGHT  *
* OF MARVELL OR ANY THIRD PARTY. MARVELL RESERVES THE RIGHT AT ITS SOLE        *
* DISCRETION TO REQUEST THAT THIS CODE BE IMMEDIATELY RETURNED TO MARVELL.     *
* THIS CODE IS PROVIDED "AS IS". MARVELL MAKES NO WARRANTIES, EXPRESSED,       *
* IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, COMPLETENESS OR PERFORMANCE.   *
*                                                                              *
* MARVELL COMPRISES MARVELL TECHNOLOGY GROUP LTD. (MTGL) AND ITS SUBSIDIARIES, *
* MARVELL INTERNATIONAL LTD. (MIL), MARVELL TECHNOLOGY, INC. (MTI), MARVELL    *
* SEMICONDUCTOR, INC. (MSI), MARVELL ASIA PTE LTD. (MAPL), MARVELL JAPAN K.K.  *
* (MJKK), MARVELL ISRAEL LTD. (MSIL).                                          *
*******************************************************************************/
#ifndef _LOAD_VT_H_
#define _LOAD_VT_H_

#include "gpt.h"

#define PARTITION_NOT_EXIST		(-1)

//FIXME: u-boot use this format to set UTF16 charactors currently
#ifndef CONFIG_AB_BOOTFLOW

#define TZK_NORMAL_NAME		"tz_en"
#define TZK_NORMALB_NAME	"tz_en-B"
#define TZK_RECOVERY_NAME	"tzk_recovery"
#define POST_BL_NAME		"post-bootloader"
#define BL_NORMAL_NAME		"post-bootloader"
#define BL_NORMALB_NAME		"postbootloaderB"
#define BL_RECOVERY_NAME	"bl_recovery"
#define MISC_NAME			"misc"

#else

#define MISC_NAME               "misc"
#define FRP_NAME                "frp"
#define KERNEL_A_NAME           "kernel_a"
#define KERNEL_B_NAME           "kernel_b"
#define TZK_A_NAME              "tz_en_a"
#define TZK_B_NAME              "tz_en_b"
#define BL_A_NAME               "bootloader_a"
#define BL_B_NAME               "bootloader_b"
#define FASTBOOT_A_NAME         "fastboot_a"
#define FASTBOOT_B_NAME         "fastboot_b"
#define KEY_A_NAME              "key_a"
#define KEY_B_NAME              "key_b"
#define DTBO_A_NAME             "dtbo_a"
#define DTBO_B_NAME             "dtbo_b"

#endif



void dump_gpt_table(void);
int parse_gpt_table(struct gpt_hdr * hdr, struct gpt_ent * entry);
int get_gpt(void * tbuff);
int find_partition(const char * name);
int fetch_partition_info(int num, struct gpt_ent *gpte);
unsigned int get_gpt_entry_number();
long long read_image(struct gpt_ent *gpte, unsigned int image_size, unsigned char *image_buff);
long long read_image_from_offset(struct gpt_ent *gpte, unsigned int pt_offset, unsigned int size, unsigned char *image_buf);
//void set_flash_ts_param(char *param_buf);

long long read_image_by_ptname(const char *module_name, unsigned int image_size, unsigned char *image_buff);
int get_partition_info(void * tbuff);

#endif
