/*
 * Copyright (C) 2014 Nest labs, Inc.
 *
 * Configuration settings for the nest board
 *
 * 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.
 */

#ifndef __DIAMOND3_H
#define __DIAMOND3_H

#include <asm/arch/imx-regs.h>
#include <linux/sizes.h>

#define CONFIG_BACKLIGHT_PARAM "lm3695_bl.default_brightness=${brightness} "
#include "flintstone_core.h"

#define PHYS_SDRAM_SIZE			SZ_512M
#define PHYS_SDRAM_HIGH			"0x9fffffff" // Needs to equal SDRAM base + PHYS_SDRAM_SIZE - 1

#define NL_MODEL			"Display-3.4" // This is the default DTB that will boot if the environment variables are blank

#define CONFIG_SYS_TEXT_BASE		0x87800000

#define CONFIG_LDO_BYPASS_CHECK
#define CONFIG_PFUZE100_PMIC_I2C

#define CONFIG_MACH_DIAMOND3

/*
 * Extra environment variables
 */
#define CONFIG_EXTRA_ENV_SETTINGS \
	CONFIG_MFG_ENV_SETTINGS \
	"altbootcmd=" CONFIG_SYS_ALTBOOTCOMMAND "\0" \
	"mtdids=nand0=mx6_nand\0" \
	"mtdparts=mtdparts=mx6_nand:4m(u-boot),500m("MTD_PARTITION_UBI"),8m(oopsdata)\0" \
	"console=ttymxc0\0" \
	"fdt_addr=0x83000000\0" \
	"fit_addr=0x83000000\0" \
	"nlmodel="NL_MODEL"\0" \
	"mtdoopsdev=3\0" \
	"brightness=0\0" \
	CONFIG_SYS_NANDBOOT0_ENV_SETTINGS \
	CONFIG_SYS_NANDBOOT1_ENV_SETTINGS \

/*
 * The default boot command
 */
#define CONFIG_BOOTCOMMAND \
	"run nandboot0 || run nandboot1 || reset"

/*
 * The alternate default boot command (see CONFIG_BOOTCOUNT_LIMIT)
 */
#define CONFIG_SYS_ALTBOOTCOMMAND \
	"run nandboot1 || run nandboot0 || reset"

#define CONFIG_ENV_IS_IN_UBI

#endif				/* __DIAMOND3_H */
