/*
 * 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 __ONYX_H
#define __ONYX_H

#include <asm/arch/imx-regs.h>
#include <linux/sizes.h>
#include "mx6_common.h"
#include <asm/imx-common/gpio.h>

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

#ifdef CONFIG_SECURE_BOOT
#ifndef CONFIG_CSF_SIZE
#define CONFIG_CSF_SIZE 0x2000
#endif
#endif

#define PHYS_SDRAM_SIZE			SZ_256M /* Maximum RAM Size */

#define NL_MODEL			"Display-4.x"
#define NL_CONSOLE			"ttymxc0"

#define GPIO_OK2BOOT			IMX_GPIO_NR(2, 5)
#define GPIO_RAM_PWR_EN			IMX_GPIO_NR(2, 10)

#define DRAM_FIXUP_IRAM_ADDR		(IRAM_BASE_ADDR + 0x7000)
#define SUSPEND_IRAM_ADDR		(IRAM_BASE_ADDR + 0x7000)

#define CLOCK_PODF_ARM			1
#define CLOCK_PODF_DDR			0

#define CONFIG_MACH_ONYX

/*
 * Extra environment variables
 */
#define CONFIG_EXTRA_ENV_SETTINGS \
	CONFIG_MFG_ENV_SETTINGS \
	"mtdids=nand0=mx6_nand\0" \
	"mtdparts=mtdparts=mx6_nand:4m(u-boot),500m("MTD_PARTITION_UBI"),8m(oopsdata)\0" \
	"console=" NL_CONSOLE "\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 \
	"final_bootm_command=" FINAL_BOOTM_COMMAND "\0" \

#define CONFIG_BOOTCOMMAND \
	"if test \"$bootside\" != \"1\" ; " \
	"then ; " \
		"run nandboot0 || run nandboot1 ; " \
	"else ; " \
		"run nandboot1 || run nandboot0 ; " \
	"fi ; " \
	"reset"

#define CONFIG_ENV_IS_IN_UBI

#undef CONFIG_LDO_BYPASS_CHECK

#endif				/* __ONYX_H */
