/*
 * bav335x.h
 *
 * Copyright (c) 2012-2014 Birdland Audio - http://birdland.com/oem
 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
 *
 * 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 version 2.
 *
 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
 * kind, whether express or implied; without even the implied warranty
 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#ifndef __CONFIG_BAV335X_H
#define __CONFIG_BAV335X_H

#include <configs/ti_am335x_common.h>
#define CONFIG_ENV_IS_NOWHERE

#ifndef CONFIG_SPL_BUILD
# define CONFIG_TIMESTAMP
# define CONFIG_LZO
#endif

#define CONFIG_SYS_BOOTM_LEN		(16 << 20)

#define CONFIG_MACH_TYPE		MACH_TYPE_AM335XEVM

/* Clock Defines */
#define V_OSCK				24000000  /* Clock output from T2 */
#define V_SCLK				(V_OSCK)

/* Custom script for NOR */
#define CONFIG_SYS_LDSCRIPT		"board/birdland/bav335x/u-boot.lds"

/* Always 128 KiB env size */
#define CONFIG_ENV_SIZE			(128 << 10)

#ifdef CONFIG_NAND
#define NANDARGS \
	"mtdids=" MTDIDS_DEFAULT "\0" \
	"mtdparts=" MTDPARTS_DEFAULT "\0" \
	"nandargs=setenv bootargs console=${console} " \
		"${optargs} " \
		"root=${nandroot} " \
		"rootfstype=${nandrootfstype}\0" \
	"nandroot=ubi0:rootfs rw ubi.mtd=9,2048\0" \
	"nandrootfstype=ubifs rootwait=1\0" \
	"nandboot=echo Booting from nand ...; " \
		"run nandargs; " \
		"nand read ${fdtaddr} u-boot-spl-os; " \
		"nand read ${loadaddr} kernel; " \
		"bootz ${loadaddr} - ${fdtaddr}\0"
#else
#define NANDARGS ""
#endif

#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG

#ifndef CONFIG_SPL_BUILD
#define CONFIG_EXTRA_ENV_SETTINGS \
DEFAULT_LINUX_BOOT_ENV \
"boot_fdt=try\0" \
"bootpart=0:2\0" \
"bootdir=\0" \
"fdtdir=/dtbs\0" \
"bootfile=zImage\0" \
"fdtfile=undefined\0" \
"console=ttyO0,115200n8\0" \
"loadaddr=0x82000000\0" \
"fdtaddr=0x88000000\0" \
"rdaddr=0x88080000\0" \
"initrd_high=0xffffffff\0" \
"fdt_high=0xffffffff\0" \
"partitions=" \
	"uuid_disk=${uuid_gpt_disk};" \
	"name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}\0" \
"optargs=\0" \
"cmdline=\0" \
"mmcdev=0\0" \
"mmcpart=1\0" \
"mmcroot=/dev/mmcblk0p2 ro\0" \
"mmcrootfstype=ext4 rootwait fixrtc\0" \
"rootpath=/export/rootfs\0" \
"nfsopts=nolock\0" \
"static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off\0" \
"ramroot=/dev/ram0 rw\0" \
"ramrootfstype=ext2\0" \
"mmcargs=setenv bootargs console=${console} ${optargs} " \
	"root=${mmcroot} rootfstype=${mmcrootfstype} ${cmdline}\0" \
"server_ip=192.168.1.100\0" \
"gw_ip=192.168.1.1\0" \
"netmask=255.255.255.0\0" \
"hostname=\0" \
"device=eth0\0" \
"autoconf=off\0" \
"root_dir=/home/userid/targetNFS\0" \
"nfs_options=,vers=3\0" \
"nfsrootfstype=ext4 rootwait fixrtc\0" \
"nfsargs=setenv bootargs console=${console} ${optargs} " \
	"root=/dev/nfs rw rootfstype=${nfsrootfstype} " \
	"nfsroot=${nfsroot} ip=${ip} ${cmdline}\0" \
"netargs=setenv bootargs console=${console} " \
	"${optargs} root=/dev/nfs " \
	"nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=dhcp\0" \
"bootenv=uEnv.txt\0" \
"script=boot.scr\0" \
"scriptfile=${script}\0" \
"loadbootscript=load mmc ${bootpart} ${loadaddr} ${scriptfile};\0" \
"bootscript=echo Running bootscript from mmc${bootpart} ...; " \
	"source ${loadaddr}\0" \
	"loadbootenv=load mmc ${bootpart} ${loadaddr} ${bootenv}\0" \
"importbootenv=echo Importing environment from mmc ...; " \
	"env import -t -r $loadaddr $filesize\0" \
"ramargs=setenv bootargs console=${console} " \
	"${optargs} root=${ramroot} rootfstype=${ramrootfstype}\0" \
"loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz\0" \
"loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
	"loadrd=load mmc ${bootpart} ${rdaddr} " \
	"${bootdir}/${rdfile}; setenv rdsize ${filesize}\0" \
"loadfdt=echo loading ${fdtdir}/${fdtfile} ...; " \
	"load mmc ${bootpart} ${fdtaddr} ${fdtdir}/${fdtfile}\0" \
"mmcboot=mmc dev ${mmcdev}; " \
	"if mmc rescan; then " \
		"gpio set 54;" \
		"setenv bootpart ${mmcdev}:1; " \
		"if test -e mmc ${bootpart} /etc/fstab; then " \
			"setenv mmcpart 1;" \
		"fi; " \
		"echo Checking for: /uEnv.txt ...;" \
		"if test -e mmc ${bootpart} /uEnv.txt; then " \
			"if run loadbootenv; then " \
				"gpio set 55;" \
				"echo Loaded environment from ${bootenv};" \
				"run importbootenv;" \
			"fi;" \
			"echo Checking if uenvcmd is set ...;" \
			"if test -n ${uenvcmd}; then " \
				"gpio set 56; " \
				"echo Running uenvcmd ...;" \
				"run uenvcmd;" \
			"fi;" \
			"echo Checking if client_ip is set ...;" \
			"if test -n ${client_ip}; then " \
				"if test -n ${dtb}; then " \
					"setenv fdtfile ${dtb};" \
					"echo using ${fdtfile} ...;" \
				"fi;" \
				"gpio set 56; " \
				"if test -n ${uname_r}; then " \
					"echo Running nfsboot_uname_r ...;" \
					"run nfsboot_uname_r;" \
				"fi;" \
				"echo Running nfsboot ...;" \
				"run nfsboot;" \
			"fi;" \
		"fi; " \
		"echo Checking for: /${script} ...;" \
		"if test -e mmc ${bootpart} /${script}; then " \
			"gpio set 55;" \
			"setenv scriptfile ${script};" \
			"run loadbootscript;" \
			"echo Loaded script from ${scriptfile};" \
			"gpio set 56; " \
			"run bootscript;" \
		"fi; " \
		"echo Checking for: /boot/${script} ...;" \
		"if test -e mmc ${bootpart} /boot/${script}; then " \
			"gpio set 55;" \
			"setenv scriptfile /boot/${script};" \
			"run loadbootscript;" \
			"echo Loaded script from ${scriptfile};" \
			"gpio set 56; " \
			"run bootscript;" \
		"fi; " \
		"echo Checking for: /boot/uEnv.txt ...;" \
		"for i in 1 2 3 4 5 6 7 ; do " \
			"setenv mmcpart ${i};" \
			"setenv bootpart ${mmcdev}:${mmcpart};" \
			"if test -e mmc ${bootpart} /boot/uEnv.txt; then " \
				"gpio set 55;" \
				"load mmc ${bootpart} ${loadaddr} " \
						"/boot/uEnv.txt;" \
				"env import -t ${loadaddr} ${filesize};" \
				"echo Loaded environment from /boot/uEnv.txt;" \
				"if test -n ${dtb}; then " \
					"setenv fdtfile ${dtb};" \
					"echo Using: dtb=${fdtfile} ...;" \
				"fi;" \
				"echo Checking if uname_r is set in " \
						"/boot/uEnv.txt...;" \
				"if test -n ${uname_r}; then " \
					"gpio set 56; " \
					"echo Running uname_boot ...;" \
					"setenv mmcroot /dev/mmcblk${mmcdev}" \
							"p${mmcpart} ro;" \
					"run uname_boot;" \
				"fi;" \
			"fi;" \
		"done;" \
	"fi;\0" \
"netboot=echo Booting from network ...; " \
	"setenv autoload no; " \
	"dhcp; " \
	"tftp ${loadaddr} ${bootfile}; " \
	"tftp ${fdtaddr} ${fdtfile}; " \
	"run netargs; " \
	"bootz ${loadaddr} - ${fdtaddr}\0" \
"nfsboot=echo Booting from ${server_ip} ...; " \
	"setenv nfsroot ${server_ip}:${root_dir}${nfs_options}; " \
	"setenv ip ${client_ip}:${server_ip}:${gw_ip}:${netmask}:${hostname}" \
	":${device}:${autoconf}; " \
	"setenv autoload no; " \
	"setenv serverip ${server_ip}; " \
	"setenv ipaddr ${client_ip}; " \
	"tftp ${loadaddr} ${bootfile}; " \
	"tftp ${fdtaddr} dtbs/${fdtfile}; " \
	"run nfsargs; " \
	"bootz ${loadaddr} - ${fdtaddr}\0" \
"nfsboot_uname_r=echo Booting from ${server_ip} ...; " \
	"setenv nfsroot ${server_ip}:${root_dir}${nfs_options}; " \
	"setenv ip ${client_ip}:${server_ip}:${gw_ip}:${netmask}:${hostname}" \
			":${device}:${autoconf}; " \
	"setenv autoload no; " \
	"setenv serverip ${server_ip}; " \
	"setenv ipaddr ${client_ip}; " \
	"tftp ${loadaddr} vmlinuz-${uname_r}; " \
	"tftp ${fdtaddr} dtbs/${uname_r}/${fdtfile}; " \
	"run nfsargs; " \
	"bootz ${loadaddr} - ${fdtaddr}\0" \
"ramboot=echo Booting from ramdisk ...; " \
	"run ramargs; " \
	"bootz ${loadaddr} ${rdaddr} ${fdtaddr}\0" \
"findfdt="\
	"if test $board_rev = B; then " \
		"setenv fdtfile birdland_bav335b.dtb; " \
		"setenv fdtbase am335x-boneblack; fi; " \
	"if test $board_rev = A; then " \
		"setenv fdtfile birdland_bav335a.dtb; " \
		"setenv fdtbase am335x-boneblack; fi; " \
	"if test $fdtfile = undefined; then " \
		"echo WARNING: Could not determine device tree to use; fi; \0" \
"uname_boot="\
	"setenv bootdir /boot; " \
	"setenv bootfile vmlinuz-${uname_r}; " \
	"if test -e mmc ${bootpart} ${bootdir}/${bootfile}; then " \
		"echo loading ${bootdir}/${bootfile} ...; "\
		"run loadimage;" \
		"setenv fdtdir /boot/dtbs/${uname_r}; " \
		"if test -e mmc ${bootpart} ${fdtdir}/${fdtfile}; then " \
			"run loadfdt;" \
		"else " \
			"setenv fdtdir /lib/firmware/${uname_r}/device-tree; " \
			"if test -e mmc ${bootpart} ${fdtdir}/" \
					"${fdtfile}; then " \
				"run loadfdt;" \
			"else " \
				"setenv fdtdir /boot/dtb-${uname_r}; " \
				"if test -e mmc ${bootpart} ${fdtdir}" \
						"/${fdtfile}; then " \
					"run loadfdt;" \
				"else " \
					"setenv fdtdir /boot/dtbs; " \
					"if test -e mmc ${bootpart} ${fdtdir}" \
							"/${fdtfile}; then " \
						"run loadfdt;" \
					"else " \
						"echo; echo unable to find " \
							"[${fdtfile}] " \
						"did you name it correctly?" \
						"echo booting fallback " \
							"[/boot/dtbs/" \
							"${uname_r}" \
							"/${fdtbase}.dtb]...;" \
						"setenv fdtdir /boot/dtbs/" \
							"${uname_r}; " \
						"setenv fdtfile " \
							"${fdtbase}.dtb; " \
						"run loadfdt;" \
					"fi;" \
				"fi;" \
			"fi;" \
		"fi;" \
	"fi; " \
	"setenv rdfile initrd.img-${uname_r}; " \
	"if test -e mmc ${bootpart} ${bootdir}/${rdfile}; then " \
		"echo loading ${bootdir}/${rdfile} ...; "\
		"run loadrd;" \
		"if test -n ${uuid}; then " \
			"setenv mmcroot UUID=${uuid} ro;" \
		"fi;" \
		"run mmcargs;" \
		"echo debug: [${bootargs}] ... ;" \
		"echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} " \
					"${fdtaddr}] ... ;" \
		"bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
	"else " \
		"run mmcargs;" \
		"echo debug: [${bootargs}] ... ;" \
		"echo debug: [bootz ${loadaddr} - ${fdtaddr}] ... ;" \
		"bootz ${loadaddr} - ${fdtaddr}; " \
	"fi;" \
"fi;\0" \
	NANDARGS \
	DFUARGS
#endif

#define CONFIG_BOOTCOMMAND \
	"gpio set 53; " \
	"i2c mw 0x24 1 0x3e; " \
	"run findfdt; " \
	"setenv mmcdev 0; " \
	"setenv bootpart 0:1; " \
	"run mmcboot;" \
	"gpio clear 56; " \
	"gpio clear 55; " \
	"gpio clear 54; " \
	"setenv mmcdev 1; " \
	"setenv bootpart 1:1; " \
	"run mmcboot;"

/* NS16550 Configuration */
#define CONFIG_SYS_NS16550_COM1		0x44e09000	/* UART0 */
#define CONFIG_SYS_NS16550_COM2		0x48022000	/* UART1 */
#define CONFIG_SYS_NS16550_COM3		0x48024000	/* UART2 */
#define CONFIG_SYS_NS16550_COM4		0x481a6000	/* UART3 */
#define CONFIG_SYS_NS16550_COM5		0x481a8000	/* UART4 */
#define CONFIG_SYS_NS16550_COM6		0x481aa000	/* UART5 */

#define CONFIG_ENV_EEPROM_IS_ON_I2C
#define CONFIG_SYS_I2C_EEPROM_ADDR	0x50	/* Main EEPROM */
#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN	2

/* PMIC support */
#define CONFIG_POWER_TPS65217
#define CONFIG_POWER_TPS65910

/* SPL */
#ifndef CONFIG_NOR_BOOT
/* Bootcount using the RTC block */
#define CONFIG_BOOTCOUNT_LIMIT
#define CONFIG_BOOTCOUNT_AM33XX
#define CONFIG_SYS_BOOTCOUNT_BE

/* USB gadget RNDIS */

#define CONFIG_SPL_LDSCRIPT		"arch/arm/mach-omap2/u-boot-spl.lds"
#endif

#ifdef CONFIG_NAND
/* NAND: device related configs */
#define CONFIG_SYS_NAND_5_ADDR_CYCLE
#define CONFIG_SYS_NAND_PAGE_COUNT	(CONFIG_SYS_NAND_BLOCK_SIZE / \
					 CONFIG_SYS_NAND_PAGE_SIZE)
#define CONFIG_SYS_NAND_PAGE_SIZE	2048
#define CONFIG_SYS_NAND_OOBSIZE		64
#define CONFIG_SYS_NAND_BLOCK_SIZE	(128*1024)
/* NAND: driver related configs */
#define CONFIG_NAND_OMAP_GPMC
#define CONFIG_NAND_OMAP_ELM
#define CONFIG_SYS_NAND_BAD_BLOCK_POS	NAND_LARGE_BADBLOCK_POS
#define CONFIG_SYS_NAND_ECCPOS	{ \
	2, 3, 4, 5, 6, 7, 8, 9, \
	10, 11, 12, 13, 14, 15, 16, 17, \
	18, 19, 20, 21, 22, 23, 24, 25, \
	26, 27, 28, 29, 30, 31, 32, 33, \
	34, 35, 36, 37, 38, 39, 40, 41, \
	42, 43, 44, 45, 46, 47, 48, 49, \
	50, 51, 52, 53, 54, 55, 56, 57, }

#define CONFIG_SYS_NAND_ECCSIZE		512
#define CONFIG_SYS_NAND_ECCBYTES	14
#define CONFIG_SYS_NAND_ONFI_DETECTION
#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_BCH8_CODE_HW
#define MTDIDS_DEFAULT			"nand0=nand.0"
#define MTDPARTS_DEFAULT  \
	"mtdparts=nand.0:" \
	"128k(NAND.SPL)," \
	"128k(NAND.SPL.backup1)," \
	"128k(NAND.SPL.backup2)," \
	"128k(NAND.SPL.backup3)," \
	"256k(NAND.u-boot-spl-os)," \
	"1m(NAND.u-boot)," \
	"128k(NAND.u-boot-env)," \
	"128k(NAND.u-boot-env.backup1)," \
	"8m(NAND.kernel)," \
	"-(NAND.rootfs)"
#define CONFIG_SYS_NAND_U_BOOT_OFFS	0x000c0000
#undef CONFIG_ENV_IS_NOWHERE
#define CONFIG_ENV_IS_IN_NAND
#define CONFIG_ENV_OFFSET		0x001c0000
#define CONFIG_ENV_OFFSET_REDUND	0x001e0000
#define CONFIG_SYS_ENV_SECT_SIZE	CONFIG_SYS_NAND_BLOCK_SIZE
/* NAND: SPL related configs */
#ifdef CONFIG_SPL_NAND_SUPPORT
#define CONFIG_SPL_NAND_AM33XX_BCH
#endif
#ifdef CONFIG_SPL_OS_BOOT
#define CONFIG_CMD_SPL_NAND_OFS	0x00080000 /* os parameters */
#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS	0x00200000 /* kernel offset */
#define CONFIG_CMD_SPL_WRITE_SIZE	0x2000
#endif
#endif /* !CONFIG_NAND */

/*
 * For NOR boot, we must set this to the start of where NOR is mapped
 * in memory.
 */
#ifdef CONFIG_NOR_BOOT
#define CONFIG_SYS_TEXT_BASE		0x08000000
#endif

/*
 * USB configuration.  We enable MUSB support, both for host and for
 * gadget.  We set USB0 as peripheral and USB1 as host, based on the
 * board schematic and physical port wired to each.  Then for host we
 * add mass storage support and for gadget we add both RNDIS ethernet
 * and DFU.
 */
#define CONFIG_USB_MUSB_DSPS
#define CONFIG_USB_MUSB_PIO_ONLY
#define CONFIG_USB_MUSB_DISABLE_BULK_COMBINE_SPLIT
#define CONFIG_AM335X_USB0
#define CONFIG_AM335X_USB0_MODE	MUSB_PERIPHERAL
#define CONFIG_AM335X_USB1
#define CONFIG_AM335X_USB1_MODE MUSB_HOST

#ifndef CONFIG_SPL_USBETH_SUPPORT
/* Fastboot */
#define CONFIG_USB_FUNCTION_FASTBOOT
#define CONFIG_CMD_FASTBOOT
#define CONFIG_ANDROID_BOOT_IMAGE
#define CONFIG_FASTBOOT_BUF_ADDR	CONFIG_SYS_LOAD_ADDR
#define CONFIG_FASTBOOT_BUF_SIZE	0x07000000

#define CONFIG_FASTBOOT_FLASH_MMC_DEV   1
#endif

#ifdef CONFIG_USB_MUSB_GADGET
#define CONFIG_USB_FUNCTION_MASS_STORAGE
#endif /* CONFIG_USB_MUSB_GADGET */

#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_USBETH_SUPPORT)
/* disable host part of MUSB in SPL */
/* disable EFI partitions and partition UUID support */
#endif

/* USB Device Firmware Update support */
#ifndef CONFIG_SPL_BUILD
#define DFU_ALT_INFO_MMC \
	"dfu_alt_info_mmc=" \
	"boot part 0 1;" \
	"rootfs part 0 2;" \
	"MLO fat 0 1;" \
	"MLO.raw raw 0x100 0x100;" \
	"u-boot.img.raw raw 0x300 0x400;" \
	"spl-os-args.raw raw 0x80 0x80;" \
	"spl-os-image.raw raw 0x900 0x2000;" \
	"spl-os-args fat 0 1;" \
	"spl-os-image fat 0 1;" \
	"u-boot.img fat 0 1;" \
	"uEnv.txt fat 0 1\0"
#ifdef CONFIG_NAND
#define DFU_ALT_INFO_NAND \
	"dfu_alt_info_nand=" \
	"SPL part 0 1;" \
	"SPL.backup1 part 0 2;" \
	"SPL.backup2 part 0 3;" \
	"SPL.backup3 part 0 4;" \
	"u-boot part 0 5;" \
	"u-boot-spl-os part 0 6;" \
	"kernel part 0 8;" \
	"rootfs part 0 9\0"
#else
#define DFU_ALT_INFO_NAND ""
#endif
#define DFU_ALT_INFO_RAM \
	"dfu_alt_info_ram=" \
	"kernel ram 0x80200000 0xD80000;" \
	"fdt ram 0x80F80000 0x80000;" \
	"ramdisk ram 0x81000000 0x4000000\0"
#define DFUARGS \
	"dfu_alt_info_emmc=rawemmc raw 0 3751936\0" \
	DFU_ALT_INFO_MMC \
	DFU_ALT_INFO_RAM \
	DFU_ALT_INFO_NAND
#endif

/*
 * Default to using SPI for environment, etc.
 * 0x000000 - 0x020000 : SPL (128KiB)
 * 0x020000 - 0x0A0000 : U-Boot (512KiB)
 * 0x0A0000 - 0x0BFFFF : First copy of U-Boot Environment (128KiB)
 * 0x0C0000 - 0x0DFFFF : Second copy of U-Boot Environment (128KiB)
 * 0x0E0000 - 0x442000 : Linux Kernel
 * 0x442000 - 0x800000 : Userland
 */
#if defined(CONFIG_SPI_BOOT)
/* SPL related */
#define CONFIG_SPL_SPI_LOAD
#define CONFIG_SYS_SPI_U_BOOT_OFFS	0x20000

#define CONFIG_ENV_IS_IN_SPI_FLASH
#define CONFIG_SYS_REDUNDAND_ENVIRONMENT
#define CONFIG_ENV_SPI_MAX_HZ		CONFIG_SF_DEFAULT_SPEED
#define CONFIG_ENV_SECT_SIZE		(4 << 10) /* 4 KB sectors */
#define CONFIG_ENV_OFFSET		(768 << 10) /* 768 KiB in */
#define CONFIG_ENV_OFFSET_REDUND	(896 << 10) /* 896 KiB in */
#define MTDIDS_DEFAULT			"nor0=m25p80-flash.0"
#define MTDPARTS_DEFAULT		"mtdparts=m25p80-flash.0:128k(SPL)," \
					"512k(u-boot),128k(u-boot-env1)," \
					"128k(u-boot-env2),3464k(kernel)," \
					"-(rootfs)"
#elif defined(CONFIG_EMMC_BOOT)
#undef CONFIG_ENV_IS_NOWHERE
#define CONFIG_ENV_IS_IN_MMC
#define CONFIG_SYS_MMC_ENV_DEV		1
#define CONFIG_SYS_MMC_ENV_PART		2
#define CONFIG_ENV_OFFSET		0x0
#define CONFIG_ENV_OFFSET_REDUND	(CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
#define CONFIG_SYS_REDUNDAND_ENVIRONMENT
#endif

/* SPI flash. */
#define CONFIG_SF_DEFAULT_SPEED		24000000

/* Network. */
#define CONFIG_PHY_GIGE
#define CONFIG_PHYLIB
#define CONFIG_PHY_SMSC

/*
 * NOR Size = 16 MiB
 * Number of Sectors/Blocks = 128
 * Sector Size = 128 KiB
 * Word length = 16 bits
 * Default layout:
 * 0x000000 - 0x07FFFF : U-Boot (512 KiB)
 * 0x080000 - 0x09FFFF : First copy of U-Boot Environment (128 KiB)
 * 0x0A0000 - 0x0BFFFF : Second copy of U-Boot Environment (128 KiB)
 * 0x0C0000 - 0x4BFFFF : Linux Kernel (4 MiB)
 * 0x4C0000 - 0xFFFFFF : Userland (11 MiB + 256 KiB)
 */
#if defined(CONFIG_NOR)
#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
#define CONFIG_SYS_FLASH_PROTECTION
#define CONFIG_SYS_FLASH_CFI
#define CONFIG_FLASH_CFI_DRIVER
#define CONFIG_FLASH_CFI_MTD
#define CONFIG_SYS_MAX_FLASH_SECT	128
#define CONFIG_SYS_MAX_FLASH_BANKS	1
#define CONFIG_SYS_FLASH_BASE		(0x08000000)
#define CONFIG_SYS_FLASH_CFI_WIDTH	FLASH_CFI_16BIT
#define CONFIG_SYS_FLASH_SIZE		0x01000000
#define CONFIG_SYS_MONITOR_BASE		CONFIG_SYS_FLASH_BASE
/* Reduce SPL size by removing unlikey targets */
#ifdef CONFIG_NOR_BOOT
#define CONFIG_ENV_IS_IN_FLASH
#define CONFIG_ENV_SECT_SIZE		(128 << 10)	/* 128 KiB */
#define CONFIG_ENV_OFFSET		(512 << 10)	/* 512 KiB */
#define CONFIG_ENV_OFFSET_REDUND	(768 << 10)	/* 768 KiB */
#define MTDIDS_DEFAULT			"nor0=physmap-flash.0"
#define MTDPARTS_DEFAULT \
	"mtdparts=physmap-flash.0:" \
	"512k(u-boot)," \
	"128k(u-boot-env1)," \
	"128k(u-boot-env2)," \
	"4m(kernel),-(rootfs)"
#endif
#endif  /* NOR support */

#endif	/* ! __CONFIG_AM335X_EVM_H */
