/*
 * Copyright (C) 2016 Freescale Semiconductor, Inc.
 *
 * SPDX-License-Identifier:	GPL-2.0+
 *
 * Refer docs/README.imxmage for more details about how-to configure
 * and create imximage boot image
 *
 * The syntax is taken as close as possible with the kwbimage
 */

#define __ASSEMBLY__
#include <config.h>

/* image version */

IMAGE_VERSION 2

/*
 * Boot Device : one of
 * spi/sd/nand/onenand, qspi/nor
 */

BOOT_FROM	sd

#ifdef CONFIG_USE_IMXIMG_PLUGIN
/*PLUGIN    plugin-binary-file    IRAM_FREE_START_ADDR*/
PLUGIN	board/freescale/mx7ulp_evk/plugin.bin 0x2F020000
#else

#ifdef CONFIG_IMX_HAB
CSF CONFIG_CSF_SIZE
#endif
/*
 * Device Configuration Data (DCD)
 *
 * Each entry must have the format:
 * Addr-type           Address        Value
 *
 * where:
 *	Addr-type register length (1,2 or 4 bytes)
 *	Address	  absolute address of the register
 *	value	  value to be stored in the register
 */
DATA 4   0x403f00dc 0x00000000
DATA 4   0x403e0040 0x01000020
DATA 4   0x403e0500 0x01000000
DATA 4   0x403e050c 0x80808080
DATA 4   0x403e0508 0x00160002
DATA 4   0x403E0510 0x00000001
DATA 4   0x403E0514 0x00000014
DATA 4   0x403e0500 0x00000001
CHECK_BITS_SET 4 0x403e0500 0x01000000
/*
 * Default PFD0 divide is 27, which generates:
 * PFD0 Freq = A7 APLL (528MHz) * 18 / 27 = 352MHz
 *
 * i.MX7ULP COM board can not run DDR at 352MHz, so
 * use a divider of 30 (0x1E), which gives:
 *
 * PFD0 Freq = A7 APLL (528MHz) * 18 / 30 = 316.8MHz
 */
DATA 4   0x403e050c 0x8080801E
CHECK_BITS_SET 4 0x403e050c 0x00000040
DATA 4   0x403E0030 0x00000001
DATA 4   0x403e0040 0x11000020
DATA 4   0x403f00dc 0x42000000

DATA 4   0x40B300AC 0x40000000

DATA 4   0x40AD0128 0x00040000
DATA 4   0x40AD00F8 0x00000000
DATA 4   0x40AD00D8 0x00000180
DATA 4   0x40AD0104 0x00000180
DATA 4   0x40AD0108 0x00000180
DATA 4   0x40AD0124 0x00010000
DATA 4   0x40AD0080 0x0000018C
DATA 4   0x40AD0084 0x0000018C
DATA 4   0x40AD0088 0x0000018C
DATA 4   0x40AD008C 0x0000018C

DATA 4   0x40AD0120 0x00010000
DATA 4   0x40AD010C 0x00000180
DATA 4   0x40AD0110 0x00000180
DATA 4   0x40AD0114 0x00000180
DATA 4   0x40AD0118 0x00000180
DATA 4   0x40AD0090 0x00000180
DATA 4   0x40AD0094 0x00000180
DATA 4   0x40AD0098 0x00000180
DATA 4   0x40AD009C 0x00000180

DATA 4   0x40AD00E0 0x00040000
DATA 4   0x40AD00E4 0x00040000

DATA 4   0x40AB001C 0x00008000
DATA 4   0x40AB085C 0x0D3900A0
DATA 4   0x40AB0800 0xA1390003
DATA 4   0x40AB0890 0x00400000
DATA 4   0x40AB081C 0x33333333
DATA 4   0x40AB0820 0x33333333
DATA 4   0x40AB0824 0x33333333
DATA 4   0x40AB0828 0x33333333
DATA 4   0x40AB08C0 0x24922492
DATA 4   0x40AB0848 0x3A3E3838
DATA 4   0x40AB0850 0x28282C2A
DATA 4   0x40AB083C 0x20000000
DATA 4   0x40AB0840 0x00000000
DATA 4   0x40AB08B8 0x00000800
DATA 4   0x40AB000C 0x292C40F5
DATA 4   0x40AB0004 0x00020064
DATA 4   0x40AB0010 0xB6AD0A83
DATA 4   0x40AB0014 0x00C70093
DATA 4   0x40AB0018 0x00211708
DATA 4   0x40AB002C 0x0F9F26D2
DATA 4   0x40AB0030 0x009F0E10
DATA 4   0x40AB0038 0x00130556
DATA 4   0x40AB0008 0x12272000
DATA 4   0x40AB0040 0x0000003F
DATA 4   0x40AB0000 0xC3110000
DATA 4   0x40AB001C 0x00008010
DATA 4   0x40AB001C 0x00008018
DATA 4   0x40AB001C 0x003F8030
DATA 4   0x40AB001C 0xFF0A8030
DATA 4   0x40AB001C 0x82018030
DATA 4   0x40AB001C 0x06028030
DATA 4   0x40AB001C 0x01038030
DATA 4   0x40AB001C 0x003F8038
DATA 4   0x40AB001C 0xFF0A8038
DATA 4   0x40AB001C 0x82018038
DATA 4   0x40AB001C 0x06028038
DATA 4   0x40AB001C 0x01038038
DATA 4   0x40AB083C 0xA0000000
DATA 4   0x40AB083C 0xA0000000
DATA 4   0x40AB0020 0x00001800
DATA 4   0x40AB0800 0xA1310003
DATA 4   0x40AB001C 0x00000000
#endif
