/*
 * Copyright (C) 2015 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
 */

#ifdef CONFIG_QSPI_BOOT
BOOT_FROM	qspi
#elif defined(CONFIG_NOR_BOOT)
BOOT_FROM	nor
#else
BOOT_FROM	sd
#endif

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

#ifdef CONFIG_SECURE_BOOT
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 0x020c4068 0xffffffff
DATA 4 0x020c406c 0xffffffff
DATA 4 0x020c4070 0xffffffff
DATA 4 0x020c4074 0xffffffff
DATA 4 0x020c4078 0xffffffff
DATA 4 0x020c407c 0xffffffff
DATA 4 0x020c4080 0xffffffff
DATA 4 0x020c4084 0xffffffff

DATA 4 0x020E04B4 0x00080000
DATA 4 0x020E04AC 0x00000000
DATA 4 0x020E027C 0x00000028
DATA 4 0x020E0250 0x00000028
DATA 4 0x020E024C 0x00000028
DATA 4 0x020E0490 0x00000028
DATA 4 0x020E0288 0x00000028
DATA 4 0x020E0270 0x00000000
DATA 4 0x020E0260 0x00000000
DATA 4 0x020E0264 0x00000000
DATA 4 0x020E04A0 0x00000028
DATA 4 0x020E0494 0x00020000
DATA 4 0x020E0280 0x00003028
DATA 4 0x020E0284 0x00003028
DATA 4 0x020E04B0 0x00020000
DATA 4 0x020E0498 0x00000028
DATA 4 0x020E04A4 0x00000028
DATA 4 0x020E0244 0x00000028
DATA 4 0x020E0248 0x00000028

DATA 4 0x021B001C 0x00008000
DATA 4 0x021B085C 0x1b4700c7
DATA 4 0x021B0800 0xA1390003
DATA 4 0x021B0890 0x00470000
DATA 4 0x021B08b8 0x00000800

DATA 4 0x021B081C 0x33333333
DATA 4 0x021B0820 0x33333333
DATA 4 0x021B082C 0xf3333333
DATA 4 0x021B0830 0xf3333333
DATA 4 0x021B083C 0x20000000
DATA 4 0x021B0848 0x4040484F
DATA 4 0x021B0850 0x40405247
DATA 4 0x021B08C0 0x00922012
DATA 4 0x021B08b8 0x00000800

DATA 4 0x021B0004 0x00020012
DATA 4 0x021B0008 0x00000000
DATA 4 0x021B000C 0x33374133
DATA 4 0x021B0010 0x00100A82
DATA 4 0x021B0038 0x00170557
DATA 4 0x021B0014 0x00000093
DATA 4 0x021B0018 0x00001748
DATA 4 0x021B001C 0x00008000
DATA 4 0x021B002C 0x0F9F0682
DATA 4 0x021B0030 0x009F0010
DATA 4 0x021B0040 0x00000047
DATA 4 0x021B0000 0x83100000
DATA 4 0x021B001C 0x00008010
DATA 4 0x021B001C 0x003F8030
DATA 4 0x021B001C 0xFF0A8030
DATA 4 0x021B001C 0x82018030
DATA 4 0x021B001C 0x04028030
DATA 4 0x021B001C 0x01038030
DATA 4 0x021B0020 0x00001800
DATA 4 0x021B0818 0x00000000
DATA 4 0x021B0800 0xA1310003
DATA 4 0x021B0004 0x00025576
DATA 4 0x021B0404 0x00011006
DATA 4 0x021B001C 0x00000000
#endif
