#
# Automatically generated make config: don't edit
# Linux/arm 2011.06.0 Barebox Configuration
# Fri Mar 23 11:33:04 2012
#
# CONFIG_BOARD_LINKER_SCRIPT is not set
CONFIG_GENERIC_LINKER_SCRIPT=y
CONFIG_ARM=y

#
# System Type
#
CONFIG_ARCH_COMCERTO=y
# CONFIG_ARCH_AT91 is not set
# CONFIG_ARCH_EP93XX is not set
# CONFIG_ARCH_IMX is not set
# CONFIG_ARCH_MXS is not set
# CONFIG_ARCH_NETX is not set
# CONFIG_ARCH_NOMADIK is not set
# CONFIG_ARCH_OMAP is not set
# CONFIG_ARCH_S3C24xx is not set
# CONFIG_ARCH_VERSATILE is not set

#
# Comcerto Configuration
#
CONFIG_ARCH_HAS_LOWLEVEL_INIT=y
CONFIG_BOARDINFO="Mindspeed C2000"

#
# SoC Selection
#
CONFIG_COMCERTO_C2000=y

#
# Board Selection
#
# CONFIG_MACH_COMCERTO_C2K_EVM is not set
CONFIG_MACH_COMCERTO_C2K_MFCNEVM=y
# CONFIG_MACH_COMCERTO_C2K_ASIC is not set
# CONFIG_MACH_COMCERTO_C2K_RTSM is not set

#
# Build Selection
#
# CONFIG_COMCERTO_VERIFICATION is not set
# CONFIG_COMCERTO_DIAG is not set
# CONFIG_COMCERTO_BOOTLOADER is not set
CONFIG_COMCERTO_ULOADER=y
# CONFIG_COMCERTO_NAND_ULOADER is not set
CONFIG_COMCERTO_PLL=y
CONFIG_COMCERTO_DDR=y
CONFIG_COMCERTO_NAND=y
# CONFIG_M86201 is not set
# CONFIG_M86202 is not set
# CONFIG_M86203 is not set
# CONFIG_M86204 is not set
# CONFIG_M86206 is not set
# CONFIG_M86207 is not set
# CONFIG_M86208 is not set
# CONFIG_M8620X is not set
# CONFIG_M86260 is not set
# CONFIG_M86261 is not set
# CONFIG_M86261_NAS is not set
# CONFIG_M86262 is not set
# CONFIG_M8626X is not set
# CONFIG_M86291 is not set
# CONFIG_M86292 is not set
# CONFIG_M86293 is not set
# CONFIG_M86294 is not set
# CONFIG_M86295 is not set
# CONFIG_M86296 is not set
# CONFIG_M86297 is not set
CONFIG_M86298=y
CONFIG_M8629X=y

#
# Processor Type
#
CONFIG_CPU_32=y
CONFIG_CPU_32v7=y

#
# processor features
#
# CONFIG_BOOT_ENDIANNESS_SWITCH is not set
# CONFIG_AEABI is not set

#
# Arm specific settings
#
# CONFIG_CMD_ARM_CPUINFO is not set
# CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS is not set
# CONFIG_ARM_EXCEPTIONS is not set
CONFIG_DEFCONFIG_LIST="$ARCH_DEFCONFIG"
CONFIG_HAS_KALLSYMS=y
CONFIG_HAS_MODULES=y
# CONFIG_CMD_MEMORY is not set
CONFIG_HAVE_NOSHELL=y

#
# General Settings
#
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_ENVIRONMENT_VARIABLES=y

#
# memory layout
#
CONFIG_HAVE_CONFIGURABLE_TEXT_BASE=y
CONFIG_TEXT_BASE=0x83000000
CONFIG_HAVE_CONFIGURABLE_MEMORY_LAYOUT=y
# CONFIG_MEMORY_LAYOUT_DEFAULT is not set
CONFIG_MEMORY_LAYOUT_FIXED=y
CONFIG_STACK_BASE=0x8300C000
CONFIG_STACK_SIZE=0x1000
CONFIG_MALLOC_BASE=0x8300D000
CONFIG_MALLOC_SIZE=0x3000
# CONFIG_BROKEN is not set
# CONFIG_EXPERIMENTAL is not set
CONFIG_MALLOC_DLMALLOC=y
# CONFIG_KALLSYMS is not set
CONFIG_PROMPT="uLoader >"
CONFIG_BAUDRATE=115200
CONFIG_SIMPLE_READLINE=y
# CONFIG_LONGHELP is not set
CONFIG_CBSIZE=1024
CONFIG_MAXARGS=16
# CONFIG_SHELL_HUSH is not set
CONFIG_SHELL_SIMPLE=y
# CONFIG_SHELL_NONE is not set
# CONFIG_CMDLINE_EDITING is not set
CONFIG_MEM_SIZE=y
# CONFIG_MENU is not set
# CONFIG_PASSWORD is not set
# CONFIG_ERRNO_MESSAGES is not set
# CONFIG_TIMESTAMP is not set
CONFIG_CONSOLE_FULL=y
CONFIG_CONSOLE_ACTIVATE_FIRST=y
# CONFIG_OF_FLAT_TREE is not set
# CONFIG_PARTITION is not set
# CONFIG_DEFAULT_ENVIRONMENT is not set
# CONFIG_POLLER is not set

#
# Debugging
#
# CONFIG_DEBUG_INFO is not set
# CONFIG_ENABLE_FLASH_NOISE is not set
# CONFIG_ENABLE_PARTITION_NOISE is not set
# CONFIG_ENABLE_DEVICE_NOISE is not set
CONFIG_COMMAND_SUPPORT=y

#
# commands
#

#
# scripting
#
# CONFIG_CMD_EDIT is not set
# CONFIG_CMD_EXEC is not set
# CONFIG_CMD_SLEEP is not set
# CONFIG_CMD_SAVEENV is not set
# CONFIG_CMD_LOADENV is not set
# CONFIG_CMD_EXPORT is not set
# CONFIG_CMD_PRINTENV is not set
# CONFIG_CMD_READLINE is not set
# CONFIG_CMD_TRUE is not set
# CONFIG_CMD_FALSE is not set
# CONFIG_CMD_LOGIN is not set
# CONFIG_CMD_PASSWD is not set

#
# file commands
#
# CONFIG_CMD_LS is not set
# CONFIG_CMD_RM is not set
# CONFIG_CMD_CAT is not set
# CONFIG_CMD_MKDIR is not set
# CONFIG_CMD_RMDIR is not set
# CONFIG_CMD_CP is not set
# CONFIG_CMD_PWD is not set
# CONFIG_CMD_CD is not set
# CONFIG_CMD_MOUNT is not set
# CONFIG_CMD_UMOUNT is not set
# CONFIG_CMD_NOR is not set
# CONFIG_CMD_UPDATE_SPI is not set
# CONFIG_CMD_UPDATE_FAST_SPI is not set
# CONFIG_CMD_UPDATE_I2C is not set
# CONFIG_CMD_COPY is not set

#
# console
#
# CONFIG_CMD_CLEAR is not set
# CONFIG_CMD_ECHO is not set

#
# memory
#
# CONFIG_CMD_LOADB is not set
# CONFIG_CMD_MEMINFO is not set
# CONFIG_CMD_CRC is not set
# CONFIG_CMD_MTEST is not set

#
# flash
#
# CONFIG_CMD_FLASH is not set
# CONFIG_CMD_UBI is not set

#
# booting
#
# CONFIG_CMD_BOOTM is not set
# CONFIG_CMD_BOOTZ is not set
# CONFIG_CMD_BOOTU is not set
# CONFIG_CMD_RESET is not set
# CONFIG_CMD_GO is not set
CONFIG_CMD_BOOTB=y
# CONFIG_CMD_TIMEOUT is not set
# CONFIG_CMD_PARTITION is not set
# CONFIG_CMD_VERSION is not set
# CONFIG_CMD_HELP is not set
# CONFIG_CMD_DEVINFO is not set
# CONFIG_CMD_UNLZO is not set

#
# c2000
#
# CONFIG_CMD_SOCINFO is not set
# CONFIG_CMD_GEMAC_STATS is not set
# CONFIG_CMD_PFE_STATS is not set
# CONFIG_CMD_PFE_DIAGS is not set
# CONFIG_CMD_PFE_COMMANDS is not set
# CONFIG_NET is not set

#
# Drivers
#

#
# serial drivers
#
# CONFIG_DRIVER_SERIAL_ARM_DCC is not set
CONFIG_DRIVER_FAST_UART=y
# CONFIG_DRIVER_SERIAL_NS16550 is not set

#
# SPI drivers
#
CONFIG_SPI=y
CONFIG_DRIVER_SPI_C2K=y
# CONFIG_DRIVER_FAST_SPI_C2K is not set
CONFIG_C2K_SPI_API=y
CONFIG_C2K_SPI_COMMON=y
CONFIG_SPI_FLASH=y
# CONFIG_FAST_SPI_FLASH is not set
# CONFIG_I2C is not set

#
# flash drivers
#
# CONFIG_DRIVER_CFI is not set
# CONFIG_CSI_FLASH is not set
CONFIG_MTD=y
# CONFIG_NAND is not set
# CONFIG_UBI is not set
# CONFIG_ATA is not set
# CONFIG_USB is not set
# CONFIG_USB_GADGET is not set
# CONFIG_VIDEO is not set
# CONFIG_MCI is not set

#
# MFD
#
# CONFIG_I2C_MC13892 is not set
# CONFIG_DRIVER_SPI_MC13783 is not set
# CONFIG_LED is not set

#
# OTP
#
# CONFIG_OTP is not set
# CONFIG_DRIVER_OTP is not set

#
# Filesystem support
#
# CONFIG_FS_CRAMFS is not set
# CONFIG_FS_RAMFS is not set
# CONFIG_FS_DEVFS is not set
# CONFIG_FS_FAT is not set
# CONFIG_DIGEST is not set
# CONFIG_GENERIC_FIND_NEXT_BIT is not set
# CONFIG_PROCESS_ESCAPE_SEQUENCE is not set
