/*
 * siemens am33x common board options
 * (C) Copyright 2013 Siemens Schweiz AG
 * (C) Heiko Schocher, DENX Software Engineering, hs@denx.de.
 *
 * Based on:
 * U-Boot file:/include/configs/am335x_evm.h
 *
 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

#ifndef __CONFIG_SIEMENS_AM33X_COMMON_H
#define __CONFIG_SIEMENS_AM33X_COMMON_H

#define CONFIG_AM33XX
#define CONFIG_OMAP

#include <asm/arch/omap.h>

#define CONFIG_DMA_COHERENT
#define CONFIG_DMA_COHERENT_SIZE	(1 << 20)

#define CONFIG_ENV_SIZE			(0x2000)
#define CONFIG_SYS_MALLOC_LEN		(16 * 1024 * 1024)
#define CONFIG_SYS_LONGHELP		/* undef to save memory */
#ifdef CONFIG_SIEMENS_MACH_TYPE
#define CONFIG_MACH_TYPE		CONFIG_SIEMENS_MACH_TYPE
#endif

#define CONFIG_CMDLINE_TAG		/* enable passing of ATAGs */
#define CONFIG_SETUP_MEMORY_TAGS
#define CONFIG_INITRD_TAG

/* commands to include */

#define CONFIG_ENV_VARS_UBOOT_CONFIG
#ifndef CONFIG_SPL_BUILD
#define CONFIG_ROOTPATH		"/opt/eldk"
#endif

#define CONFIG_ENV_OVERWRITE		1
#define CONFIG_ENV_IS_NOWHERE

#define CONFIG_SYS_LONGHELP
#define CONFIG_CMDLINE_EDITING
#define CONFIG_AUTO_COMPLETE
#define CONFIG_SYS_AUTOLOAD	"yes"

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

/* We set the max number of command args high to avoid HUSH bugs. */
#define CONFIG_SYS_MAXARGS		32

/* Console I/O Buffer Size */
#define CONFIG_SYS_CBSIZE		1024

/* Print Buffer Size */
#define CONFIG_SYS_PBSIZE		(CONFIG_SYS_CBSIZE \
					+ sizeof(CONFIG_SYS_PROMPT) + 16)

/* Boot Argument Buffer Size */
#define CONFIG_SYS_BARGSIZE		CONFIG_SYS_CBSIZE

/*
 * memtest works on 8 MB in DRAM after skipping 32MB from
 * start addr of ram disk
 */
#define CONFIG_SYS_MEMTEST_START	(PHYS_DRAM_1 + (64 * 1024 * 1024))
#define CONFIG_SYS_MEMTEST_END		(CONFIG_SYS_MEMTEST_START \
					+ (8 * 1024 * 1024))

#define CONFIG_SYS_LOAD_ADDR		0x81000000 /* Default load address */

#define CONFIG_SPI
#define CONFIG_OMAP3_SPI
#define CONFIG_MTD_DEVICE
#define CONFIG_SF_DEFAULT_SPEED		(75000000)

 /* Physical Memory Map */
#define CONFIG_NR_DRAM_BANKS		1		/*  1 bank of DRAM */
#define PHYS_DRAM_1			0x80000000	/* DRAM Bank #1 */

#define CONFIG_SYS_SDRAM_BASE		PHYS_DRAM_1
#define CONFIG_SYS_INIT_SP_ADDR         (NON_SECURE_SRAM_END - \
						GENERATED_GBL_DATA_SIZE)
 /* Platform/Board specific defs */
#define CONFIG_SYS_TIMERBASE		0x48040000	/* Use Timer2 */
#define CONFIG_SYS_PTV			2	/* Divisor: 2^(PTV+1) => 8 */

/* NS16550 Configuration */
#ifdef CONFIG_SPL_BUILD
#define CONFIG_SYS_NS16550_SERIAL
#define CONFIG_SYS_NS16550_REG_SIZE	(-4)
#endif
#define CONFIG_SYS_NS16550_CLK		(48000000)
#define CONFIG_SYS_NS16550_COM1		0x44e09000
#define CONFIG_SYS_NS16550_COM4		0x481a6000

#define CONFIG_SERIAL1                  1
#define CONFIG_CONS_INDEX               1

/* I2C Configuration */
#define CONFIG_I2C
#define CONFIG_SYS_I2C
#define CONFIG_SYS_OMAP24_I2C_SPEED	100000
#define CONFIG_SYS_OMAP24_I2C_SLAVE	1
#define CONFIG_SYS_I2C_OMAP24XX

/* Defines for SPL */
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_TEXT_BASE		0x402F0400
#define CONFIG_SPL_MAX_SIZE		(SRAM_SCRATCH_SPACE_ADDR - \
					 CONFIG_SPL_TEXT_BASE)

#define CONFIG_SPL_BSS_START_ADDR	0x80000000
#define CONFIG_SPL_BSS_MAX_SIZE		0x80000		/* 512 KB */

#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION	1
#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME	"u-boot.img"
#define CONFIG_FS_FAT

#define CONFIG_SPL_SPI_LOAD
#define CONFIG_SYS_SPI_U_BOOT_OFFS	0x20000

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

#define CONFIG_SPL_BOARD_INIT
#define CONFIG_SPL_NAND_AM33XX_BCH
#define CONFIG_SPL_NAND_BASE
#define CONFIG_SPL_NAND_DRIVERS
#define CONFIG_SPL_NAND_ECC
#define CONFIG_SYS_NAND_ONFI_DETECTION
#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)
#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_NAND_OMAP_ECCSCHEME	OMAP_ECC_BCH8_CODE_HW

#define CONFIG_SYS_NAND_ECCSTEPS	4
#define	CONFIG_SYS_NAND_ECCTOTAL	(CONFIG_SYS_NAND_ECCBYTES * \
						CONFIG_SYS_NAND_ECCSTEPS)

#define	CONFIG_SYS_NAND_U_BOOT_START	CONFIG_SYS_TEXT_BASE

#define CONFIG_SYS_NAND_U_BOOT_OFFS	0x80000

/*
 * 1MB into the SDRAM to allow for SPL's bss at the beginning of SDRAM
 * 64 bytes before this address should be set aside for u-boot.img's
 * header. That is 0x800FFFC0--0x80100000 should not be used for any
 * other needs.
 */
#define CONFIG_SYS_TEXT_BASE		0x80100000
#define CONFIG_SYS_SPL_MALLOC_START	0x80208000
#define CONFIG_SYS_SPL_MALLOC_SIZE	0x100000

/*
 * Since SPL did pll and ddr initialization for us,
 * we don't need to do it twice.
 */
#ifndef CONFIG_SPL_BUILD
#define CONFIG_SKIP_LOWLEVEL_INIT
#endif

#ifndef CONFIG_SPL_BUILD
/*
 * USB configuration
 */
#define CONFIG_USB_MUSB_DSPS
#define CONFIG_USB_MUSB_PIO_ONLY
#define CONFIG_USB_MUSB_DISABLE_BULK_COMBINE_SPLIT
#undef CONFIG_USB_GADGET_DUALSPEED

#define CONFIG_AM335X_USB0
#define CONFIG_AM335X_USB0_MODE	MUSB_PERIPHERAL
#define CONFIG_AM335X_USB1
#define CONFIG_AM335X_USB1_MODE MUSB_HOST

#ifdef CONFIG_USB_MUSB_GADGET
#define CONFIG_USB_ETHER
#define CONFIG_USB_ETH_RNDIS
#define CONFIG_USBNET_HOST_ADDR	"de:ad:be:af:00:00"
#endif /* CONFIG_USB_MUSB_GADGET */

/* USB DRACO ID as default */
#define CONFIG_USBD_HS

/* USB Device Firmware Update support */
#define CONFIG_SYS_DFU_DATA_BUF_SIZE	(1 << 20)
#define DFU_MANIFEST_POLL_TIMEOUT	25000

#endif /* CONFIG_SPL_BUILD */

/*
 * Default to using SPI for environment, etc.  We have multiple copies
 * of SPL as the ROM will check these locations.
 * 0x0 - 0x20000 : First copy of SPL
 * 0x20000 - 0x40000 : Second copy of SPL
 * 0x40000 - 0x60000 : Third copy of SPL
 * 0x60000 - 0x80000 : Fourth copy of SPL
 * 0x80000 - 0xDF000 : U-Boot
 * 0xDF000 - 0xE0000 : U-Boot Environment
 * 0xE0000 - 0x442000 : Linux Kernel
 * 0x442000 - 0x800000 : Userland
 */
#if defined(CONFIG_SPI_BOOT)
# undef CONFIG_ENV_IS_NOWHERE
# define CONFIG_ENV_IS_IN_SPI_FLASH
# define CONFIG_ENV_SPI_MAX_HZ		CONFIG_SF_DEFAULT_SPEED
# define CONFIG_ENV_OFFSET		(892 << 10) /* 892 KiB in */
# define CONFIG_ENV_SECT_SIZE		(4 << 10) /* 4 KB sectors */
#endif /* SPI support */

#define CONFIG_DRIVER_TI_CPSW
#define CONFIG_MII
#define CONFIG_PHY_GIGE
#define CONFIG_PHYLIB
#define CONFIG_BOOTP_DEFAULT
#define CONFIG_BOOTP_DNS
#define CONFIG_BOOTP_DNS2
#define CONFIG_BOOTP_SEND_HOSTNAME
#define CONFIG_BOOTP_GATEWAY
#define CONFIG_BOOTP_SUBNETMASK
#define CONFIG_NET_RETRY_COUNT         10

#define CONFIG_NAND
/* NAND support */
#ifdef CONFIG_NAND
#define CONFIG_CMD_NAND

/* UBI Support */
#ifndef CONFIG_SPL_BUILD
#define CONFIG_CMD_MTDPARTS
#define CONFIG_MTD_PARTITIONS
#define CONFIG_MTD_DEVICE
#define CONFIG_RBTREE
#define CONFIG_LZO
#define CONFIG_CMD_UBIFS
#endif

/* Commen environment */
#define CONFIG_PREBOOT
#define COMMON_ENV_DFU_ARGS	"dfu_args=run bootargs_defaults;" \
				"setenv bootargs ${bootargs};" \
				"mtdparts default;" \
				"draco_led 1;" \
				"dfu 0 nand 0;" \
				"draco_led 0;\0" \

#define COMMON_ENV_NAND_BOOT \
		"nand_boot=echo Booting from nand; " \
		"if test ${upgrade_available} -eq 1; then " \
			"if test ${bootcount} -gt ${bootlimit}; " \
				"then " \
				"setenv upgrade_available 0;" \
				"setenv ${partitionset_active} true;" \
				"if test -n ${A}; then " \
					"setenv partitionset_active B; " \
					"env delete A; " \
				"fi;" \
				"if test -n ${B}; then " \
					"setenv partitionset_active A; " \
					"env delete B; " \
				"fi;" \
				"saveenv; " \
			"fi;" \
		"fi;" \
		"echo set ${partitionset_active}...;" \
		"run nand_args; "

#define COMMON_ENV_NAND_CMDS	"flash_self=run nand_boot\0" \
				"flash_self_test=setenv testargs test; " \
					"run nand_boot\0" \
				"dfu_start=echo Preparing for dfu mode ...; " \
				"run dfu_args; \0"

#define COMMON_ENV_SETTINGS \
	"verify=no \0" \
	"project_dir=targetdir\0" \
	"upgrade_available=0\0" \
	"altbootcmd=run bootcmd\0" \
	"bootlimit=3\0" \
	"partitionset_active=A\0" \
	"loadaddr=0x82000000\0" \
	"kloadaddr=0x81000000\0" \
	"script_addr=0x81900000\0" \
	"console=console=ttyMTD,mtdoops console=ttyO0,115200n8 panic=5\0" \
	"nfsopts=nolock rw\0" \
	"ip_method=none\0" \
	"bootenv=uEnv.txt\0" \
	"bootargs_defaults=setenv bootargs " \
		"console=${console} " \
		"${testargs} " \
		"${optargs}\0" \
	"siemens_help=echo; "\
		"echo Type 'run flash_self' to use kernel and root " \
		"filesystem on memory; echo Type 'run flash_self_test' to " \
		"use kernel and root filesystem on memory, boot in test " \
		"mode; echo Not ready yet: 'run flash_nfs' to use kernel " \
		"from memory and root filesystem over NFS; echo Type " \
		"'run net_nfs' to get Kernel over TFTP and mount root " \
		"filesystem over NFS; " \
		"echo Set partitionset_active variable to 'A' " \
		"or 'B' to select kernel and rootfs partition; " \
		"echo" \
		"\0"

/*
 * Variant 1 partition layout
 * chip-size = 256MiB
 *|         name |        size |           address area |
 *-------------------------------------------------------
 *|          spl | 128.000 KiB | 0x       0..0x   1ffff |
 *|  spl.backup1 | 128.000 KiB | 0x   20000..0x   3ffff |
 *|  spl.backup2 | 128.000 KiB | 0x   40000..0x   5ffff |
 *|  spl.backup3 | 128.000 KiB | 0x   60000..0x   7ffff |
 *|       u-boot |   1.875 MiB | 0x   80000..0x  25ffff |
 *|    uboot.env | 128.000 KiB | 0x  260000..0x  27ffff |
 *|     kernel_a |   5.000 MiB | 0x  280000..0x  77ffff |
 *|     kernel_b |   5.000 MiB | 0x  780000..0x  c7ffff |
 *|      mtdoops |   8.000 MiB | 0x  c80000..0x 147ffff |
 *|       rootfs | 235.500 MiB | 0x 1480000..0x fffffff |
 *-------------------------------------------------------
 */
#define MTDIDS_NAME_STR		"omap2-nand.0"
#define MTDIDS_DEFAULT		"nand0=" MTDIDS_NAME_STR
#define MTDPARTS_DEFAULT_V1	"mtdparts=" MTDIDS_NAME_STR ":" \
					"128k(spl),"		\
					"128k(spl.backup1),"	\
					"128k(spl.backup2),"	\
					"128k(spl.backup3),"	\
					"1920k(u-boot),"	\
					"128k(uboot.env),"	\
					"5120k(kernel_a),"	\
					"5120k(kernel_b),"	\
					"8192k(mtdoops),"	\
					"-(rootfs)"

#define DFU_ALT_INFO_NAND_V1 \
	"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.env part 0 6;" \
	"kernel_a part 0 7;" \
	"kernel_b part 0 8;" \
	"rootfs partubi 0 10"

#define CONFIG_ENV_SETTINGS_NAND_V1 \
	"nand_active_ubi_vol=rootfs_a\0" \
	"nand_active_ubi_vol_A=rootfs_a\0" \
	"nand_active_ubi_vol_B=rootfs_b\0" \
	"nand_root_fs_type=ubifs rootwait=1\0" \
	"nand_src_addr=0x280000\0" \
	"nand_src_addr_A=0x280000\0" \
	"nand_src_addr_B=0x780000\0" \
	"nand_args=run bootargs_defaults;" \
		"mtdparts default;" \
		"setenv ${partitionset_active} true;" \
		"if test -n ${A}; then " \
			"setenv nand_active_ubi_vol ${nand_active_ubi_vol_A};" \
			"setenv nand_src_addr ${nand_src_addr_A};" \
		"fi;" \
		"if test -n ${B}; then " \
			"setenv nand_active_ubi_vol ${nand_active_ubi_vol_B};" \
			"setenv nand_src_addr ${nand_src_addr_B};" \
		"fi;" \
		"setenv nand_root ubi0:${nand_active_ubi_vol} rw " \
		"ubi.mtd=9,${ubi_off};" \
		"setenv bootargs ${bootargs} " \
		"root=${nand_root} noinitrd ${mtdparts} " \
		"rootfstype=${nand_root_fs_type} ip=${ip_method} " \
		"console=ttyMTD,mtdoops console=ttyO0,115200n8 mtdoops.mtddev" \
		"=mtdoops\0" \
	COMMON_ENV_DFU_ARGS \
		"dfu_alt_info=" DFU_ALT_INFO_NAND_V1 "\0" \
	COMMON_ENV_NAND_BOOT \
		"nand read.i ${kloadaddr} ${nand_src_addr} " \
		"${nand_img_size}; bootm ${kloadaddr}\0" \
	COMMON_ENV_NAND_CMDS

#define CONFIG_ENV_SETTINGS_V1 \
		COMMON_ENV_SETTINGS \
	"net_args=run bootargs_defaults;" \
		"mtdparts default;" \
		"setenv bootfile ${project_dir}/kernel/uImage;" \
		"setenv rootpath /home/projects/${project_dir}/rootfs;" \
		"setenv bootargs ${bootargs} " \
		"root=/dev/nfs ${mtdparts} " \
		"nfsroot=${serverip}:${rootpath},${nfsopts} " \
		"ip=${ipaddr}:${serverip}:" \
		"${gatewayip}:${netmask}:${hostname}:eth0:off\0" \
	"net_nfs=echo Booting from network ...; " \
		"run net_args; " \
		"tftpboot ${kloadaddr} ${serverip}:${bootfile}; " \
		"bootm ${kloadaddr}\0"

/*
 * Variant 2 partition layout
 * chip-size = 256MiB or 512 MiB
 *|         name |        size |           address area |
 *-------------------------------------------------------
 *|          spl | 128.000 KiB | 0x       0..0x   1ffff |
 *|  spl.backup1 | 128.000 KiB | 0x   20000..0x   3ffff |
 *|  spl.backup2 | 128.000 KiB | 0x   40000..0x   5ffff |
 *|  spl.backup3 | 128.000 KiB | 0x   60000..0x   7ffff |
 *|       u-boot |   1.875 MiB | 0x   80000..0x  25ffff |
 *|   uboot.env0 | 512.000 KiB | 0x  260000..0x  2Dffff |
 *|   uboot.env1 | 512.000 KiB | 0x  2E0000..0x  35ffff |
 *|      mtdoops | 512.000 KiB | 0x  360000..0x  3dffff |
 *| (256) rootfs | 252.125 MiB | 0x  3E0000..0x fffffff |
 *| (512) rootfs | 508.125 MiB | 0x  3E0000..0x1fffffff |
 *-------------------------------------------------------
 */

#define MTDPARTS_DEFAULT_V2	"mtdparts=" MTDIDS_NAME_STR ":" \
					"128k(spl)," \
					"128k(spl.backup1)," \
					"128k(spl.backup2)," \
					"128k(spl.backup3)," \
					"1920k(u-boot)," \
					"512k(u-boot.env0)," \
					"512k(u-boot.env1)," \
					"512k(mtdoops)," \
					"-(rootfs)"

#define DFU_ALT_INFO_NAND_V2 \
	"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.env0 part 0 6;" \
	"u-boot.env1 part 0 7;" \
	"rootfs partubi 0 9" \

#define CONFIG_ENV_SETTINGS_NAND_V2 \
	"nand_active_ubi_vol=rootfs_a\0" \
	"rootfs_name=rootfs\0" \
	"kernel_name=uImage\0"\
	"nand_root_fs_type=ubifs rootwait=1\0" \
	"nand_args=run bootargs_defaults;" \
		"mtdparts default;" \
		"setenv ${partitionset_active} true;" \
		"if test -n ${A}; then " \
			"setenv nand_active_ubi_vol ${rootfs_name}_a;" \
		"fi;" \
		"if test -n ${B}; then " \
			"setenv nand_active_ubi_vol ${rootfs_name}_b;" \
		"fi;" \
		"setenv nand_root ubi0:${nand_active_ubi_vol} rw " \
		"ubi.mtd=rootfs,2048;" \
		"setenv bootargs ${bootargs} " \
		"root=${nand_root} noinitrd ${mtdparts} " \
		"rootfstype=${nand_root_fs_type} ip=${ip_method} " \
		"console=ttyMTD,mtdoops console=ttyO0,115200n8 mtdoops.mtddev" \
		"=mtdoops\0" \
	COMMON_ENV_DFU_ARGS \
		"dfu_alt_info=" DFU_ALT_INFO_NAND_V2 "\0" \
	COMMON_ENV_NAND_BOOT \
		"ubi part rootfs ${ubi_off};" \
		"ubifsmount ubi0:${nand_active_ubi_vol};" \
		"ubifsload ${kloadaddr} boot/${kernel_name};" \
		"ubifsload ${loadaddr} boot/${dtb_name}.dtb;" \
		"bootm ${kloadaddr} - ${loadaddr}\0" \
	"nand_boot_backup=ubifsload ${loadaddr} boot/am335x-draco.dtb;" \
		"bootm ${kloadaddr} - ${loadaddr}\0" \
	COMMON_ENV_NAND_CMDS

#define CONFIG_ENV_SETTINGS_V2 \
		COMMON_ENV_SETTINGS \
	"net_args=run bootargs_defaults;" \
		"mtdparts default;" \
		"setenv bootfile ${project_dir}/kernel/uImage;" \
		"setenv bootdtb ${project_dir}/kernel/dtb;" \
		"setenv rootpath /home/projects/${project_dir}/rootfs;" \
		"setenv bootargs ${bootargs} " \
		"root=/dev/nfs ${mtdparts} " \
		"nfsroot=${serverip}:${rootpath},${nfsopts} " \
		"ip=${ipaddr}:${serverip}:" \
		"${gatewayip}:${netmask}:${hostname}:eth0:off\0" \
	"net_nfs=echo Booting from network ...; " \
		"run net_args; " \
		"tftpboot ${kloadaddr} ${serverip}:${bootfile}; " \
		"tftpboot ${loadaddr} ${serverip}:${bootdtb}; " \
		"bootm ${kloadaddr} - ${loadaddr}\0"

/*
 * Variant 3 partition layout
 * chip-size = 512MiB
 *|         name |        size |           address area |
 *-------------------------------------------------------
 *|          spl | 128.000 KiB | 0x       0..0x   1ffff |
 *|  spl.backup1 | 128.000 KiB | 0x   20000..0x   3ffff |
 *|  spl.backup2 | 128.000 KiB | 0x   40000..0x   5ffff |
 *|  spl.backup3 | 128.000 KiB | 0x   60000..0x   7ffff |
 *|       u-boot |   1.875 MiB | 0x   80000..0x  25ffff |
 *|   uboot.env0 | 512.000 KiB | 0x  260000..0x  2Dffff |
 *|   uboot.env1 | 512.000 KiB | 0x  2E0000..0x  35ffff |
 *|       rootfs | 300.000 MiB | 0x  360000..0x12f5ffff |
 *|      mtdoops | 512.000 KiB | 0x12f60000..0x12fdffff |
 *|configuration | 104.125 MiB | 0x12fe0000..0x1fffffff |
 *-------------------------------------------------------
 */

#define MTDPARTS_DEFAULT_V3	"mtdparts=" MTDIDS_NAME_STR ":" \
					"128k(spl),"		\
					"128k(spl.backup1),"	\
					"128k(spl.backup2),"	\
					"128k(spl.backup3),"	\
					"1920k(u-boot),"	\
					"512k(u-boot.env0),"	\
					"512k(u-boot.env1),"	\
					"300m(rootfs),"		\
					"512k(mtdoops),"	\
					"-(configuration)"

#define CONFIG_NAND_OMAP_GPMC
#define CONFIG_NAND_OMAP_ELM
#define CONFIG_SYS_NAND_BASE		(0x08000000)	/* physical address */
							/* to access nand at */
							/* CS0 */
#define CONFIG_SYS_MAX_NAND_DEVICE	1		/* Max number of NAND
							   devices */
#if !defined(CONFIG_SPI_BOOT)
#undef CONFIG_ENV_IS_NOWHERE
#define CONFIG_ENV_IS_IN_NAND
#define CONFIG_ENV_OFFSET		0x260000 /* environment starts here */
#define CONFIG_SYS_ENV_SECT_SIZE	(128 << 10)	/* 128 KiB */
#endif
#endif

#define CONFIG_OMAP_GPIO

/* Gpio cmd support */

/* Watchdog */
#define CONFIG_HW_WATCHDOG

/* Reboot after 60 sec if bootcmd fails */
#define CONFIG_RESET_TO_RETRY
#define CONFIG_BOOT_RETRY_TIME 60

#define CONFIG_BOOTCOUNT_LIMIT
#define CONFIG_BOOTCOUNT_ENV

#endif	/* ! __CONFIG_SIEMENS_AM33X_COMMON_H */
