/*
 * (C Copyright 2009
 * Stefano Babic DENX Software Engineering sbabic@denx.de.
 *
 * See file CREDITS for list of people who contributed to this
 * project.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of
 * the License or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not write to the Free Software
 * Foundation Inc. 51 Franklin Street Fifth Floor Boston,
 * MA 02110-1301 USA
 *
 * Refer doc/README.imximage for more details about how-to configure
 * and create imximage boot image
 *
 * The syntax is taken as close as possible with the kwbimage
 */

/* image version */
IMAGE_VERSION 2

/*
 * Boot Device : one of
 * spi, sd (the board has no nand neither onenand)
 */
BOOT_FROM	sd

/*
 * 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
 */
/* Setting IOMUXC */
DATA 4 0x53fa8554 0x00200000
DATA 4 0x53fa8560 0x00200000
DATA 4 0x53fa8594 0x00200000
DATA 4 0x53fa8584 0x00200000
DATA 4 0x53fa8558 0x00200040
DATA 4 0x53fa8568 0x00200040
DATA 4 0x53fa8590 0x00200040
DATA 4 0x53fa857c 0x00200040
DATA 4 0x53fa8564 0x00200040
DATA 4 0x53fa8580 0x00200040
DATA 4 0x53fa8570 0x00200000
DATA 4 0x53fa8578 0x00200000
DATA 4 0x53fa872c 0x00200000
DATA 4 0x53fa8728 0x00200000
DATA 4 0x53fa871c 0x00200000
DATA 4 0x53fa8718 0x00200000
DATA 4 0x53fa8574 0x00280000
DATA 4 0x53fa8588 0x00280000
DATA 4 0x53fa86f0 0x00280000
DATA 4 0x53fa8720 0x00280000
DATA 4 0x53fa86fc 0x00000000
DATA 4 0x53fa86f4 0x00000200
DATA 4 0x53fa8714 0x00000000
DATA 4 0x53fa8724 0x06000000
DATA 4 0x63fd9088 0x34333936
DATA 4 0x63fd9090 0x49434942
DATA 4 0x63fd90F8 0x00000800
DATA 4 0x63fd907c 0x01350138
DATA 4 0x63fd9080 0x01380139
DATA 4 0x63fd9018 0x00001710
DATA 4 0x63fd9000 0xc4110000
DATA 4 0x63fd900C 0x4d5122d2
DATA 4 0x63fd9010 0x92d18a22
DATA 4 0x63fd9014 0x00c70092
DATA 4 0x63fd902c 0x000026d2
DATA 4 0x63fd9030 0x009f000e
DATA 4 0x63fd9008 0x12272000
DATA 4 0x63fd9004 0x00030012
DATA 4 0x63fd901c 0x04008010
DATA 4 0x63fd901c 0x00008032
DATA 4 0x63fd901c 0x00008033
DATA 4 0x63fd901c 0x00008031
DATA 4 0x63fd901c 0x0b5280b0
DATA 4 0x63fd901c 0x04008010
DATA 4 0x63fd901c 0x00008020
DATA 4 0x63fd901c 0x00008020
DATA 4 0x63fd901c 0x0a528030
DATA 4 0x63fd901c 0x03c68031
DATA 4 0x63fd901c 0x00448031
DATA 4 0x63fd901c 0x04008018
DATA 4 0x63fd901c 0x0000803a
DATA 4 0x63fd901c 0x0000803b
DATA 4 0x63fd901c 0x00008039
DATA 4 0x63fd901c 0x0b528138
DATA 4 0x63fd901c 0x04008018
DATA 4 0x63fd901c 0x00008028
DATA 4 0x63fd901c 0x00008028
DATA 4 0x63fd901c 0x0a528038
DATA 4 0x63fd901c 0x03c68039
DATA 4 0x63fd901c 0x00448039
DATA 4 0x63fd9020 0x00005800
DATA 4 0x63fd9058 0x00033335
DATA 4 0x63fd901c 0x00000000
DATA 4 0x63fd9040 0x05380003
DATA 4 0x53fa8004 0x00194005
