/*
 * (C) Copyright 2011
 * Heiko Schocher, DENX Software Engineering, hs@denx.de.
 *
 * Vased on:
 * (C) Copyright 2009
 * Stefano Babic, DENX Software Engineering, sbabic@denx.de.
 *
 * SPDX-License-Identifier:	GPL-2.0+ 
 */

#ifndef _UBLIMAGE_H_
#define _UBLIMAGE_H_

enum ublimage_cmd {
	CMD_INVALID,
	CMD_BOOT_MODE,
	CMD_ENTRY,
	CMD_PAGE,
	CMD_ST_BLOCK,
	CMD_ST_PAGE,
	CMD_LD_ADDR
};

enum ublimage_fld_types {
	CFG_INVALID = -1,
	CFG_COMMAND,
	CFG_REG_VALUE
};

/*
 * from sprufg5a.pdf Table 110
 * Used by RBL when doing NAND boot
 */
#define UBL_MAGIC_BASE              (0xA1ACED00)
/* Safe boot mode */
#define UBL_MAGIC_SAFE              (0x00)
/* DMA boot mode */
#define UBL_MAGIC_DMA               (0x11)
/* I Cache boot mode */
#define UBL_MAGIC_IC                (0x22)
/* Fast EMIF boot mode */
#define UBL_MAGIC_FAST              (0x33)
/* DMA + ICache boot mode */
#define UBL_MAGIC_DMA_IC            (0x44)
/* DMA + ICache + Fast EMIF boot mode */
#define UBL_MAGIC_DMA_IC_FAST       (0x55)

/* Define max UBL image size */
#define UBL_IMAGE_SIZE              (0x00003800u)

/* one NAND block */
#define UBL_BLOCK_SIZE 2048

/* from sprufg5a.pdf Table 109 */
struct ubl_header {
	uint32_t	magic;	/* Magic Number, see UBL_* defines */
	uint32_t	entry;	/* entry point address for bootloader */
	uint32_t	pages;	/* number of pages (size of bootloader) */
	uint32_t	block;	/*
				 * blocknumber where user bootloader is
				 * present
				 */
	uint32_t	page;	/*
				 * page number where user bootloader is
				 * present.
				 */
	uint32_t	pll_m;	/*
				 * PLL setting -Multiplier (only valid if
				 * Magic Number indicates PLL enable).
				 */
	uint32_t	pll_n;	/*
				 * PLL setting -Divider (only valid if
				 * Magic Number indicates PLL enable).
				 */
	uint32_t	emif;	/*
				 * fast EMIF setting (only valid if
				 * Magic Number indicates fast EMIF boot).
				 */
	/* to fit in one nand block */
	unsigned char	res[UBL_BLOCK_SIZE - 8 * 4];
};

#endif /* _UBLIMAGE_H_ */
