/*
 * (C) Copyright 2015
 * (C) Copyright 2014
 * Heiko Schocher, DENX Software Engineering, hs@denx.de.
 *
 * Based on:
 * Copyright (C) 2012 Freescale Semiconductor, Inc.
 *
 * Configuration settings for the Freescale i.MX6Q SabreSD board.
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */
#ifndef __ARISTAINETOS_CONFIG_H
#define __ARISTAINETOS_CONFIG_H

#define CONFIG_SYS_BOARD_VERSION	1
#define CONFIG_HOSTNAME		aristainetos
#define CONFIG_BOARDNAME	"aristainetos"

#define CONFIG_MXC_UART_BASE	UART5_BASE
#define CONFIG_CONSOLE_DEV	"ttymxc4"

#define CONFIG_FEC_XCV_TYPE		RMII

#define CONFIG_SF_DEFAULT_BUS		3
#define CONFIG_SF_DEFAULT_CS		0

#define CONFIG_EXTRA_ENV_BOARD_SETTINGS \
	"board_type=aristainetos7@1\0" \
	"mtdids=nand0=gpmi-nand,nor0=spi3.0\0" \
	"mtdparts=mtdparts=spi3.0:832k(u-boot),64k(env),64k(env-red)," \
		"-(rescue-system);gpmi-nand:-(ubi)\0" \
	"addmisc=setenv bootargs ${bootargs} consoleblank=0\0" \
	"addmtd=setenv bootargs ${bootargs} ${mtdparts}\0" \
	"ubiargs=setenv bootargs console=${console},${baudrate} " \
		"ubi.mtd=0,2048 root=ubi0:rootfs rootfstype=ubifs\0 " \
	"ubifs_load_fit=sf probe;ubi part ubi 2048;ubifsmount ubi:rootfs;" \
		"ubifsload ${fit_addr_r} /boot/system.itb; " \
		"imi ${fit_addr_r}\0 "

#define ARISTAINETOS_USB_OTG_PWR	IMX_GPIO_NR(4, 15)
#define ARISTAINETOS_USB_H1_PWR		IMX_GPIO_NR(3, 31)
#define CONFIG_GPIO_ENABLE_SPI_FLASH	IMX_GPIO_NR(2, 15)

#include "aristainetos-common.h"

#endif                         /* __ARISTAINETOS_CONFIG_H */
