/********************************************************************************
 * Marvell GPL License Option
 *
 * If you received this File from Marvell, you may opt to use, redistribute and/or
 * modify this File in accordance with the terms and conditions of the General
 * Public License Version 2, June 1991 (the "GPL License"), a copy of which is
 * available along with the File in the license.txt file or by writing to the Free
 * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
 * on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
 *
 * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
 * DISCLAIMED.  The GPL License provides additional details about this warranty
 * disclaimer.
 ******************************************************************************/

#include "common.h"
#include "chipctrl_const.h"
#ifdef CONFIG_SM
#include "sm_const.h"
#include "SysMgr.h"
#endif // CONFIG_SM
#include "figo.h"
#include "config.h"
#include "nand_priv.h"
#include "util.h"
#include "cold_linuxparam.h"
#include "SystemManager.h"
#include "system_config.h"
#include "global.h"
#if defined(__UBOOT__)
#include <malloc.h>
#include "galois_io.h"
#else
#include "io.h"
#include "lgpl_printf.h"
#endif /* #if defined(__UBOOT__) */
#include "apb_perf_base.h"
#include "apb_gpio.h"
#include "galois_speed.h"
#include "pin_settings.h"
#include "wol.h"

#include "image3_header.h"
#include "version_table.h"
#if ANDROID_BOOT
#include "android/bootimg.h"
#include "android/flash_ts.h"
#endif

#include "nflash_drv.h"

#if defined(DEBUG)
#define debug_printf(a...) lgpl_printf(a)
#else
#define debug_printf(a...)
#endif

extern unsigned int uiWarmDown_2_Linux_Addr;

void bootloader_customize_initialize_postprocess(unsigned int boot_state);
void bootloader_customize_load_image_preprocess(unsigned int boot_state);
void bootloader_customize_load_image_postprocess(unsigned int boot_state);
void bootloader_customize_response_to_sm_preprocess(unsigned int boot_state);
void bootloader_customize_start_kernel_preprocess(unsigned int boot_state);
