/*
 * (C) Copyright Marvell Semiconductors,Inc 2006 All rightes reserved
 */

#ifndef __BERLIN_BOOTINFO_H__
#define __BERLIN_BOOTINFO_H__

#define BG2CDP_CHIP_VERSION_Z1      0x1
#define BG2CDP_CHIP_VERSION_Z2      0x2
#define BG2CDP_CHIP_VERSION_A0      0xA0

typedef struct __berlin_bootinfo_t {
	unsigned long		otp_rkek_id[2]; /* rkek id from OTP */
	unsigned long		otp_version;    /* otp version */
	unsigned long		otp_market_id;  /* otp market id */
	unsigned long		otp_ult[2];     /* otp ULT info */
	unsigned long		chip_version;   /* bg2cdp chip version*/
	unsigned long		speed_tag;      /* speed tag info */
	unsigned long		leakage_current;/* leakage current info */
	unsigned long		temp_id;        /* Temp ID in deg C */
	unsigned long		erom_id;        /* erom id*/
	union
	{
		unsigned feature_bits;
		struct
		{
			unsigned rsa_key_index:4;
			unsigned usb_boot_timeout:4;

			unsigned romkey_disable:1;
			unsigned disable_usb_boot:1;
			unsigned usb_disable_bootstrap:1;
			unsigned usb_disable_blank_media:1;
			unsigned usb_force_full_speed:1;
			unsigned usb_ignore_reset_tracker:1;
			unsigned otp_locked:1;
		};
	};
	unsigned long		aesk0_crc;      /* crc for aesk0  */
	unsigned long		rkek_crc;       /* crc for rkek   */
	unsigned long		signk7_crc;     /* hash of signk7 crc */
	unsigned long		mrvl_sign_right;/* mrvl sign rights */
	unsigned long		cust_sign_right;/* cust sign rights */
	union
	{
		unsigned long nand_src_blk_num[2];
		struct
		{
			unsigned char tsm_src_blk_num;
			unsigned char sysinit_src_blk_num;
			unsigned char erom_src_blk_num;
			unsigned char tz_loader_src_blk_num;
			unsigned char tz_kern_src_blk_num;
			unsigned char btld_src_blk_num;
			unsigned char padding[2];
		};
	};
} BERLIN_BOOTINFO;

#endif /* __BERLIN_BOOTINFO_H__ */
