Skip to content
Snippets Groups Projects
README 231 KiB
Newer Older
  • Learn to ignore specific revisions
  • Wolfgang Denk's avatar
    Wolfgang Denk committed
    #
    
    # (C) Copyright 2000 - 2013
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
    #
    
    # SPDX-License-Identifier:	GPL-2.0+
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #
    
    Summary:
    ========
    
    
    This directory contains the source code for U-Boot, a boot loader for
    
    Embedded boards based on PowerPC, ARM, MIPS and several other
    processors, which can be installed in a boot ROM and used to
    initialize and test the hardware or to download and run application
    code.
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    The development of U-Boot is closely related to Linux: some parts of
    
    the source code originate in the Linux source tree, we have some
    header files in common, and special provision has been made to
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    support booting of Linux images.
    
    Some attention has been paid to make this software easily
    configurable and extendable. For instance, all monitor commands are
    implemented with the same call interface, so that it's very easy to
    add new commands. Also, instead of permanently adding rarely used
    code (for instance hardware test utilities) to the monitor, you can
    load and run it dynamically.
    
    
    Status:
    =======
    
    In general, all boards for which a configuration option exists in the
    
    Makefile have been tested to some extent and can be considered
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    "working". In fact, many of them are used in production systems.
    
    
    In case of problems see the CHANGELOG file to find out who contributed
    the specific port. In addition, there are various MAINTAINERS files
    scattered throughout the U-Boot source identifying the people or
    companies responsible for various boards and subsystems.
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Note: As of August, 2010, there is no longer a CHANGELOG file in the
    actual U-Boot source tree; however, it can be created dynamically
    from the Git log using:
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    Where to get help:
    ==================
    
    
    In case you have questions about, problems with or contributions for
    
    U-Boot, you should send a message to the U-Boot mailing list at
    
    <u-boot@lists.denx.de>. There is also an archive of previous traffic
    on the mailing list - please search the archive before asking FAQ's.
    Please see http://lists.denx.de/pipermail/u-boot and
    http://dir.gmane.org/gmane.comp.boot-loaders.u-boot
    
    Where to get source code:
    =========================
    
    
    The U-Boot source code is maintained in the Git repository at
    
    git://www.denx.de/git/u-boot.git ; you can browse it online at
    http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=summary
    
    The "snapshot" links on this page allow you to download tarballs of
    
    any version you might be interested in. Official releases are also
    
    available for FTP download from the ftp://ftp.denx.de/pub/u-boot/
    directory.
    
    
    Pre-built (and tested) images are available from
    
    ftp://ftp.denx.de/pub/u-boot/images/
    
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    Where we come from:
    ===================
    
    - start from 8xxrom sources
    
    - create PPCBoot project (http://sourceforge.net/projects/ppcboot)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    - clean up code
    - make it easier to add custom boards
    - make it possible to add other [PowerPC] CPUs
    - extend functions, especially:
      * Provide extended interface to Linux boot loader
      * S-Record download
      * network boot
    
      * PCMCIA / CompactFlash / ATA disk / SCSI ... boot
    
    - create ARMBoot project (http://sourceforge.net/projects/armboot)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    - add other CPU families (starting with ARM)
    
    - create U-Boot project (http://sourceforge.net/projects/u-boot)
    
    - current project page: see http://www.denx.de/wiki/U-Boot
    
    
    
    Names and Spelling:
    ===================
    
    The "official" name of this project is "Das U-Boot". The spelling
    "U-Boot" shall be used in all written text (documentation, comments
    in source files etc.). Example:
    
    	This is the README file for the U-Boot project.
    
    File names etc. shall be based on the string "u-boot". Examples:
    
    	include/asm-ppc/u-boot.h
    
    	#include <asm/u-boot.h>
    
    Variable names, preprocessor constants etc. shall be either based on
    the string "u_boot" or on "U_BOOT". Example:
    
    	U_BOOT_VERSION		u_boot_logo
    	IH_OS_U_BOOT		u_boot_hush_start
    
    Versioning:
    ===========
    
    
    Starting with the release in October 2008, the names of the releases
    were changed from numerical release numbers without deeper meaning
    into a time stamp based numbering. Regular releases are identified by
    names consisting of the calendar year and month of the release date.
    Additional fields (if present) indicate release candidates or bug fix
    releases in "stable" maintenance trees.
    
    Examples:
    
    	U-Boot v2009.11	    - Release November 2009
    
    	U-Boot v2009.11.1   - Release 1 in version November 2009 stable tree
    	U-Boot v2010.09-rc1 - Release candiate 1 for September 2010 release
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    Directory Hierarchy:
    ====================
    
    
    /arch			Architecture specific files
    
      /arc			Files generic to ARC architecture
    
      /arm			Files generic to ARM architecture
      /avr32		Files generic to AVR32 architecture
      /blackfin		Files generic to Analog Devices Blackfin architecture
      /m68k			Files generic to m68k architecture
      /microblaze		Files generic to microblaze architecture
      /mips			Files generic to MIPS architecture
    
      /nds32		Files generic to NDS32 architecture
    
      /nios2		Files generic to Altera NIOS2 architecture
    
      /openrisc		Files generic to OpenRISC architecture
    
      /powerpc		Files generic to PowerPC architecture
    
      /sandbox		Files generic to HW-independent "sandbox"
    
      /sh			Files generic to SH architecture
      /sparc		Files generic to SPARC architecture
    
      /x86			Files generic to x86 architecture
    
    /api			Machine/arch independent API for external apps
    /board			Board dependent files
    /common			Misc architecture independent functions
    
    /configs		Board default configuration files
    
    /disk			Code for disk drive partition handling
    /doc			Documentation (don't expect too much)
    /drivers		Commonly used device drivers
    
    /dts			Contains Makefile for building internal U-Boot fdt.
    
    /examples		Example code for standalone applications, etc.
    /fs			Filesystem code (cramfs, ext2, jffs2, etc.)
    /include		Header Files
    
    /lib			Library routines generic to all architectures
    /Licenses		Various license files
    
    /net			Networking code
    /post			Power On Self Test
    
    /scripts		Various build scripts and Makefiles
    /test			Various unit test files
    
    /tools			Tools to build S-Record or U-Boot images, etc.
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    Software Configuration:
    =======================
    
    Configuration is usually done using C preprocessor defines; the
    rationale behind that is to avoid dead code whenever possible.
    
    There are two classes of configuration variables:
    
    * Configuration _OPTIONS_:
      These are selectable by the user and have names beginning with
      "CONFIG_".
    
    * Configuration _SETTINGS_:
      These depend on the hardware etc. and should not be meddled with if
      you don't know what you're doing; they have names beginning with
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Previously, all configuration was done by hand, which involved creating
    symbolic links and editing configuration files manually. More recently,
    U-Boot has added the Kbuild infrastructure used by the Linux kernel,
    allowing you to use the "make menuconfig" command to configure your
    build.
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Selection of Processor Architecture and Board Type:
    ---------------------------------------------------
    
    For all supported boards there are ready-to-use default
    
    configurations available; just type "make <board_name>_defconfig".
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    Example: For a TQM823L module type:
    
    	cd u-boot
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Note: If you're looking for the default configuration file for a board
    you're sure used to be there but is now missing, check the file
    doc/README.scrapyard for a list of no longer supported boards.
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Sandbox Environment:
    --------------------
    
    U-Boot can be built natively to run on a Linux host using the 'sandbox'
    board. This allows feature development which is not board- or architecture-
    specific to be undertaken on a native platform. The sandbox is also used to
    run some of U-Boot's tests.
    
    
    See board/sandbox/README.sandbox for more details.
    
    Board Initialisation Flow:
    --------------------------
    
    This is the intended start-up flow for boards. This should apply for both
    
    SPL and U-Boot proper (i.e. they both follow the same rules).
    
    Note: "SPL" stands for "Secondary Program Loader," which is explained in
    more detail later in this file.
    
    At present, SPL mostly uses a separate code path, but the function names
    and roles of each function are the same. Some boards or architectures
    may not conform to this.  At least most ARM boards which use
    CONFIG_SPL_FRAMEWORK conform to this.
    
    Execution typically starts with an architecture-specific (and possibly
    CPU-specific) start.S file, such as:
    
    	- arch/arm/cpu/armv7/start.S
    	- arch/powerpc/cpu/mpc83xx/start.S
    	- arch/mips/cpu/start.S
    
    and so on. From there, three functions are called; the purpose and
    limitations of each of these functions are described below.
    
    
    lowlevel_init():
    	- purpose: essential init to permit execution to reach board_init_f()
    	- no global_data or BSS
    	- there is no stack (ARMv7 may have one but it will soon be removed)
    	- must not set up SDRAM or use console
    	- must only do the bare minimum to allow execution to continue to
    		board_init_f()
    	- this is almost never needed
    	- return normally from this function
    
    board_init_f():
    	- purpose: set up the machine ready for running board_init_r():
    		i.e. SDRAM and serial UART
    	- global_data is available
    	- stack is in SRAM
    	- BSS is not available, so you cannot use global/static variables,
    		only stack variables and global_data
    
    	Non-SPL-specific notes:
    	- dram_init() is called to set up DRAM. If already done in SPL this
    		can do nothing
    
    	SPL-specific notes:
    	- you can override the entire board_init_f() function with your own
    		version as needed.
    	- preloader_console_init() can be called here in extremis
    	- should set up SDRAM, and anything needed to make the UART work
    	- these is no need to clear BSS, it will be done by crt0.S
    	- must return normally from this function (don't call board_init_r()
    		directly)
    
    Here the BSS is cleared. For SPL, if CONFIG_SPL_STACK_R is defined, then at
    this point the stack and global_data are relocated to below
    CONFIG_SPL_STACK_R_ADDR. For non-SPL, U-Boot is relocated to run at the top of
    memory.
    
    board_init_r():
    	- purpose: main execution, common code
    	- global_data is available
    	- SDRAM is available
    	- BSS is available, all static/global variables can be used
    	- execution eventually continues to main_loop()
    
    	Non-SPL-specific notes:
    	- U-Boot is relocated to the top of memory and is now running from
    		there.
    
    	SPL-specific notes:
    	- stack is optionally in SDRAM, if CONFIG_SPL_STACK_R is defined and
    		CONFIG_SPL_STACK_R_ADDR points into SDRAM
    	- preloader_console_init() can be called here - typically this is
    		done by defining CONFIG_SPL_BOARD_INIT and then supplying a
    		spl_board_init() function containing this call
    	- loads U-Boot or (in falcon mode) Linux
    
    
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    Configuration Options:
    ----------------------
    
    Configuration depends on the combination of board and CPU type; all
    such information is kept in a configuration file
    "include/configs/<board_name>.h".
    
    Example: For a TQM823L module, all configuration settings are in
    "include/configs/TQM823L.h".
    
    
    
    Many of the options are named exactly as the corresponding Linux
    kernel configuration options. The intention is to make it easier to
    build a config tool - later.
    
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    The following options need to be configured:
    
    
    - CPU Type:	Define exactly one, e.g. CONFIG_MPC85XX.
    
    - Board Type:	Define exactly one, e.g. CONFIG_MPC8540ADS.
    
    
    - CPU Daughterboard Type: (if CONFIG_ATSTK1000 is defined)
    
    		Define exactly one, e.g. CONFIG_ATSTK1002
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    - CPU Module Type: (if CONFIG_COGENT is defined)
    		Define exactly one of
    		CONFIG_CMA286_60_OLD
    --- FIXME --- not tested yet:
    		CONFIG_CMA286_60, CONFIG_CMA286_21, CONFIG_CMA286_60P,
    		CONFIG_CMA287_23, CONFIG_CMA287_50
    
    - Motherboard Type: (if CONFIG_COGENT is defined)
    		Define exactly one of
    		CONFIG_CMA101, CONFIG_CMA102
    
    - Motherboard I/O Modules: (if CONFIG_COGENT is defined)
    		Define one or more of
    		CONFIG_CMA302
    
    - Motherboard Options: (if CONFIG_CMA101 or CONFIG_CMA102 are defined)
    		Define one or more of
    		CONFIG_LCD_HEARTBEAT	- update a character position on
    
    					  the LCD display every second with
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					  a "rotator" |\-/|\-/
    
    
    - Marvell Family Member
    		CONFIG_SYS_MVFS		- define it if you want to enable
    					  multiple fs option at one time
    					  for marvell soc family
    
    
    - 8xx CPU Options: (if using an MPC8xx CPU)
    
    		CONFIG_8xx_GCLK_FREQ	- deprecated: CPU clock if
    					  get_gclk_freq() cannot work
    
    					  e.g. if there is no 32KHz
    					  reference PIT/RTC clock
    
    		CONFIG_8xx_OSCLK	- PLL input clock (either EXTCLK
    					  or XTAL/EXTAL)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    - 859/866/885 CPU options: (if using a MPC859 or MPC866 or MPC885 CPU):
    
    		CONFIG_SYS_8xx_CPUCLK_MIN
    		CONFIG_SYS_8xx_CPUCLK_MAX
    
    		CONFIG_8xx_CPUCLK_DEFAULT
    
    		CONFIG_SYS_MEASURE_CPUCLK
    
    		Define this to measure the actual CPU clock instead
    		of relying on the correctness of the configured
    		values. Mostly useful for board bringup to make sure
    		the PLL is locked at the intended frequency. Note
    		that this requires a (stable) reference clock (32 kHz
    
    		RTC clock or CONFIG_SYS_8XX_XIN)
    
    		CONFIG_SYS_DELAYED_ICACHE
    
    		Define this option if you want to enable the
    		ICache only when Code runs from RAM.
    
    
    		CONFIG_SYS_PPC64
    
    		Specifies that the core is a 64-bit PowerPC implementation (implements
    		the "64" category of the Power ISA). This is necessary for ePAPR
    		compliance, among other possible reasons.
    
    
    		CONFIG_SYS_FSL_TBCLK_DIV
    
    		Defines the core time base clock divider ratio compared to the
    		system clock.  On most PQ3 devices this is 8, on newer QorIQ
    		devices it can be 16 or 32.  The ratio varies from SoC to Soc.
    
    
    		CONFIG_SYS_FSL_PCIE_COMPAT
    
    		Defines the string to utilize when trying to match PCIe device
    		tree nodes for the given platform.
    
    
    		CONFIG_SYS_PPC_E500_DEBUG_TLB
    
    		Enables a temporary TLB entry to be used during boot to work
    		around limitations in e500v1 and e500v2 external debugger
    		support. This reduces the portions of the boot code where
    		breakpoints and single stepping do not work.  The value of this
    		symbol should be set to the TLB1 entry to be used for this
    		purpose.
    
    
    		CONFIG_SYS_FSL_ERRATUM_A004510
    
    		Enables a workaround for erratum A004510.  If set,
    		then CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV and
    		CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY must be set.
    
    		CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV
    		CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV2 (optional)
    
    		Defines one or two SoC revisions (low 8 bits of SVR)
    		for which the A004510 workaround should be applied.
    
    		The rest of SVR is either not relevant to the decision
    		of whether the erratum is present (e.g. p2040 versus
    		p2041) or is implied by the build target, which controls
    		whether CONFIG_SYS_FSL_ERRATUM_A004510 is set.
    
    		See Freescale App Note 4493 for more information about
    		this erratum.
    
    
    		CONFIG_A003399_NOR_WORKAROUND
    		Enables a workaround for IFC erratum A003399. It is only
    
    		required during NOR boot.
    
    		CONFIG_A008044_WORKAROUND
    		Enables a workaround for T1040/T1042 erratum A008044. It is only
    
    		required during NAND boot and valid for Rev 1.0 SoC revision
    
    		CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY
    
    		This is the value to write into CCSR offset 0x18600
    		according to the A004510 workaround.
    
    
    		CONFIG_SYS_FSL_DSP_DDR_ADDR
    		This value denotes start offset of DDR memory which is
    		connected exclusively to the DSP cores.
    
    
    		CONFIG_SYS_FSL_DSP_M2_RAM_ADDR
    		This value denotes start offset of M2 memory
    		which is directly connected to the DSP core.
    
    
    		CONFIG_SYS_FSL_DSP_M3_RAM_ADDR
    		This value denotes start offset of M3 memory which is directly
    		connected to the DSP core.
    
    
    		CONFIG_SYS_FSL_DSP_CCSRBAR_DEFAULT
    		This value denotes start offset of DSP CCSR space.
    
    
    		CONFIG_SYS_FSL_SINGLE_SOURCE_CLK
    		Single Source Clock is clocking mode present in some of FSL SoC's.
    		In this mode, a single differential clock is used to supply
    		clocks to the sysclock, ddrclock and usbclock.
    
    
    		CONFIG_SYS_CPC_REINIT_F
    		This CONFIG is defined when the CPC is configured as SRAM at the
    		time of U-boot entry and is required to be re-initialized.
    
    
    		Indicates this SoC supports deep sleep feature. If deep sleep is
    
    		supported, core will start to execute uboot when wakes up.
    
    
    - Generic CPU options:
    
    		CONFIG_SYS_GENERIC_GLOBAL_DATA
    		Defines global data is initialized in generic board board_init_f().
    		If this macro is defined, global data is created and cleared in
    		generic board board_init_f(). Without this macro, architecture/board
    		should initialize global data before calling board_init_f().
    
    
    		CONFIG_SYS_BIG_ENDIAN, CONFIG_SYS_LITTLE_ENDIAN
    
    		Defines the endianess of the CPU. Implementation of those
    		values is arch specific.
    
    
    		CONFIG_SYS_FSL_DDR
    		Freescale DDR driver in use. This type of DDR controller is
    		found in mpc83xx, mpc85xx, mpc86xx as well as some ARM core
    		SoCs.
    
    		CONFIG_SYS_FSL_DDR_ADDR
    		Freescale DDR memory-mapped register base.
    
    		CONFIG_SYS_FSL_DDR_EMU
    		Specify emulator support for DDR. Some DDR features such as
    		deskew training are not available.
    
    		CONFIG_SYS_FSL_DDRC_GEN1
    		Freescale DDR1 controller.
    
    		CONFIG_SYS_FSL_DDRC_GEN2
    		Freescale DDR2 controller.
    
    		CONFIG_SYS_FSL_DDRC_GEN3
    		Freescale DDR3 controller.
    
    
    		CONFIG_SYS_FSL_DDRC_GEN4
    		Freescale DDR4 controller.
    
    
    		CONFIG_SYS_FSL_DDRC_ARM_GEN3
    		Freescale DDR3 controller for ARM-based SoCs.
    
    
    		CONFIG_SYS_FSL_DDR1
    		Board config to use DDR1. It can be enabled for SoCs with
    		Freescale DDR1 or DDR2 controllers, depending on the board
    		implemetation.
    
    		CONFIG_SYS_FSL_DDR2
    		Board config to use DDR2. It can be eanbeld for SoCs with
    		Freescale DDR2 or DDR3 controllers, depending on the board
    		implementation.
    
    		CONFIG_SYS_FSL_DDR3
    		Board config to use DDR3. It can be enabled for SoCs with
    
    		Freescale DDR3 or DDR3L controllers.
    
    		CONFIG_SYS_FSL_DDR3L
    		Board config to use DDR3L. It can be enabled for SoCs with
    		DDR3L controllers.
    
    		CONFIG_SYS_FSL_DDR4
    		Board config to use DDR4. It can be enabled for SoCs with
    		DDR4 controllers.
    
    		CONFIG_SYS_FSL_IFC_BE
    		Defines the IFC controller register space as Big Endian
    
    		CONFIG_SYS_FSL_IFC_LE
    		Defines the IFC controller register space as Little Endian
    
    
    		CONFIG_SYS_FSL_PBL_PBI
    		It enables addition of RCW (Power on reset configuration) in built image.
    		Please refer doc/README.pblimage for more details
    
    		CONFIG_SYS_FSL_PBL_RCW
    		It adds PBI(pre-boot instructions) commands in u-boot build image.
    		PBI commands can be used to configure SoC before it starts the execution.
    		Please refer doc/README.pblimage for more details
    
    
    		CONFIG_SPL_FSL_PBL
    		It adds a target to create boot binary having SPL binary in PBI format
    		concatenated with u-boot binary.
    
    
    		CONFIG_SYS_FSL_DDR_BE
    		Defines the DDR controller register space as Big Endian
    
    		CONFIG_SYS_FSL_DDR_LE
    		Defines the DDR controller register space as Little Endian
    
    
    		CONFIG_SYS_FSL_DDR_SDRAM_BASE_PHY
    		Physical address from the view of DDR controllers. It is the
    		same as CONFIG_SYS_DDR_SDRAM_BASE for  all Power SoCs. But
    		it could be different for ARM SoCs.
    
    
    		CONFIG_SYS_FSL_DDR_INTLV_256B
    		DDR controller interleaving on 256-byte. This is a special
    		interleaving mode, handled by Dickens for Freescale layerscape
    		SoCs with ARM core.
    
    
    		CONFIG_SYS_FSL_DDR_MAIN_NUM_CTRLS
    		Number of controllers used as main memory.
    
    		CONFIG_SYS_FSL_OTHER_DDR_NUM_CTRLS
    		Number of controllers used for other than main memory.
    
    
    		CONFIG_SYS_FSL_HAS_DP_DDR
    		Defines the SoC has DP-DDR used for DPAA.
    
    
    		CONFIG_SYS_FSL_SEC_BE
    		Defines the SEC controller register space as Big Endian
    
    		CONFIG_SYS_FSL_SEC_LE
    		Defines the SEC controller register space as Little Endian
    
    
    - Intel Monahans options:
    
    		CONFIG_SYS_MONAHANS_RUN_MODE_OSC_RATIO
    
    
    		Defines the Monahans run mode to oscillator
    		ratio. Valid values are 8, 16, 24, 31. The core
    		frequency is this value multiplied by 13 MHz.
    
    
    		CONFIG_SYS_MONAHANS_TURBO_RUN_MODE_RATIO
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    		Defines the Monahans turbo mode to oscillator
    		ratio. Valid values are 1 (default if undefined) and
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    		2. The core frequency as calculated above is multiplied
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    - MIPS CPU options:
    		CONFIG_SYS_INIT_SP_OFFSET
    
    		Offset relative to CONFIG_SYS_SDRAM_BASE for initial stack
    		pointer. This is needed for the temporary stack before
    		relocation.
    
    		CONFIG_SYS_MIPS_CACHE_MODE
    
    		Cache operation mode for the MIPS CPU.
    		See also arch/mips/include/asm/mipsregs.h.
    		Possible values are:
    			CONF_CM_CACHABLE_NO_WA
    			CONF_CM_CACHABLE_WA
    			CONF_CM_UNCACHED
    			CONF_CM_CACHABLE_NONCOHERENT
    			CONF_CM_CACHABLE_CE
    			CONF_CM_CACHABLE_COW
    			CONF_CM_CACHABLE_CUW
    			CONF_CM_CACHABLE_ACCELERATED
    
    		CONFIG_SYS_XWAY_EBU_BOOTCFG
    
    		Special option for Lantiq XWAY SoCs for booting from NOR flash.
    		See also arch/mips/cpu/mips32/start.S.
    
    		CONFIG_XWAY_SWAP_BYTES
    
    		Enable compilation of tools/xway-swap-bytes needed for Lantiq
    		XWAY SoCs for booting from NOR flash. The U-Boot image needs to
    		be swapped if a flash programmer is used.
    
    
    - ARM options:
    		CONFIG_SYS_EXCEPTION_VECTORS_HIGH
    
    		Select high exception vectors of the ARM core, e.g., do not
    		clear the V bit of the c1 register of CP15.
    
    
    Aneesh V's avatar
    Aneesh V committed
    		CONFIG_SYS_THUMB_BUILD
    
    		Use this flag to build U-Boot using the Thumb instruction
    		set for ARM architectures. Thumb instruction set provides
    		better code density. For ARM architectures that support
    		Thumb2 this flag will result in Thumb2 code generated by
    		GCC.
    
    
    		CONFIG_ARM_ERRATA_716044
    
    		CONFIG_ARM_ERRATA_742230
    		CONFIG_ARM_ERRATA_743622
    		CONFIG_ARM_ERRATA_751472
    
    		CONFIG_ARM_ERRATA_761320
    
    		CONFIG_ARM_ERRATA_773022
    		CONFIG_ARM_ERRATA_774769
    		CONFIG_ARM_ERRATA_794072
    
    
    		If set, the workarounds for these ARM errata are applied early
    		during U-Boot startup. Note that these options force the
    		workarounds to be applied; no CPU-type/version detection
    		exists, unlike the similar options in the Linux kernel. Do not
    		set these options unless they apply!
    
    
    		COUNTER_FREQUENCY
    		Generic timer clock source frequency.
    
    		COUNTER_FREQUENCY_REAL
    		Generic timer clock source frequency if the real clock is
    		different from COUNTER_FREQUENCY, and can only be determined
    		at run time.
    
    
    		NOTE: The following can be machine specific errata. These
    		do have ability to provide rudimentary version and machine
    		specific checks, but expect no product checks.
    
    		CONFIG_ARM_ERRATA_430973
    
    		CONFIG_ARM_ERRATA_454179
    
    		CONFIG_ARM_ERRATA_621766
    
    		CONFIG_ARM_ERRATA_798870
    
    		CONFIG_ARM_ERRATA_801819
    
    - Tegra SoC options:
    		CONFIG_TEGRA_SUPPORT_NON_SECURE
    
    		Support executing U-Boot in non-secure (NS) mode. Certain
    		impossible actions will be skipped if the CPU is in NS mode,
    		such as ARM architectural timer initialization.
    
    
    - Linux Kernel Interface:
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    		CONFIG_CLOCKS_IN_MHZ
    
    		U-Boot stores all clock information in Hz
    		internally. For binary compatibility with older Linux
    		kernels (which expect the clocks passed in the
    		bd_info data to be in MHz) the environment variable
    		"clocks_in_mhz" can be defined so that U-Boot
    		converts clock data to MHZ before passing it to the
    		Linux kernel.
    		When CONFIG_CLOCKS_IN_MHZ is defined, a definition of
    
    		"clocks_in_mhz=1" is automatically included in the
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    		default environment.
    
    
    		CONFIG_MEMSIZE_IN_BYTES		[relevant for MIPS only]
    
    
    		When transferring memsize parameter to Linux, some versions
    
    		expect it to be in bytes, others in MB.
    		Define CONFIG_MEMSIZE_IN_BYTES to make it in bytes.
    
    
    		CONFIG_OF_LIBFDT
    
    
    		New kernel versions are expecting firmware settings to be
    
    		passed using flattened device trees (based on open firmware
    		concepts).
    
    		CONFIG_OF_LIBFDT
    		 * New libfdt-based support
    		 * Adds the "fdt" command
    
    		 * The bootm command automatically updates the fdt
    
    		OF_CPU - The proper name of the cpus node (only required for
    			MPC512X and MPC5xxx based boards).
    		OF_SOC - The proper name of the soc node (only required for
    			MPC512X and MPC5xxx based boards).
    
    		OF_TBCLK - The timebase frequency.
    
    		OF_STDOUT_PATH - The path to the console device
    
    		boards with QUICC Engines require OF_QE to set UCC MAC
    		addresses
    
    		CONFIG_OF_BOARD_SETUP
    
    		Board code has addition modification that it wants to make
    		to the flat device tree before handing it off to the kernel
    
    		CONFIG_OF_SYSTEM_SETUP
    
    		Other code has addition modification that it wants to make
    		to the flat device tree before handing it off to the kernel.
    		This causes ft_system_setup() to be called before booting
    		the kernel.
    
    
    		This define fills in the correct boot CPU in the boot
    
    		param header, the default value is zero if undefined.
    
    
    		CONFIG_OF_IDE_FIXUP
    
    		U-Boot can detect if an IDE device is present or not.
    		If not, and this new config option is activated, U-Boot
    		removes the ATA node from the DTS before booting Linux,
    		so the Linux IDE driver does not probe the device and
    		crash. This is needed for buggy hardware (uc101) where
    		no pull down resistor is connected to the signal IDE5V_DD7.
    
    
    		CONFIG_MACH_TYPE	[relevant for ARM only][mandatory]
    
    		This setting is mandatory for all boards that have only one
    		machine type and must be used to specify the machine type
    		number as it appears in the ARM machine registry
    		(see http://www.arm.linux.org.uk/developer/machines/).
    		Only boards that have multiple machine types supported
    		in a single configuration file and the machine type is
    		runtime discoverable, do not have to use this setting.
    
    
    - vxWorks boot parameters:
    
    		bootvx constructs a valid bootline using the following
    
    		environments variables: bootdev, bootfile, ipaddr, netmask,
    		serverip, gatewayip, hostname, othbootargs.
    
    		It loads the vxWorks image pointed bootfile.
    
    		Note: If a "bootargs" environment is defined, it will overwride
    		the defaults discussed just above.
    
    
    - Cache Configuration:
    		CONFIG_SYS_ICACHE_OFF - Do not enable instruction cache in U-Boot
    		CONFIG_SYS_DCACHE_OFF - Do not enable data cache in U-Boot
    		CONFIG_SYS_L2CACHE_OFF- Do not enable L2 cache in U-Boot
    
    
    - Cache Configuration for ARM:
    		CONFIG_SYS_L2_PL310 - Enable support for ARM PL310 L2 cache
    				      controller
    		CONFIG_SYS_PL310_BASE - Physical base address of PL310
    					controller register space
    
    
    - Serial Ports:
    
    		CONFIG_PL010_SERIAL
    
    
    		Define this if you want support for Amba PrimeCell PL010 UARTs.
    
    
    		CONFIG_PL011_SERIAL
    
    
    		Define this if you want support for Amba PrimeCell PL011 UARTs.
    
    		CONFIG_PL011_CLOCK
    
    		If you have Amba PrimeCell PL011 UARTs, set this variable to
    		the clock speed of the UARTs.
    
    		CONFIG_PL01x_PORTS
    
    		If you have Amba PrimeCell PL010 or PL011 UARTs on your board,
    		define this to a list of base addresses for each (supported)
    		port. See e.g. include/configs/versatile.h
    
    
    		CONFIG_SERIAL_HW_FLOW_CONTROL
    
    		Define this variable to enable hw flow control in serial driver.
    		Current user of this option is drivers/serial/nsl16550.c driver
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    - Console Interface:
    
    		Depending on board, define exactly one serial port
    		(like CONFIG_8xx_CONS_SMC1, CONFIG_8xx_CONS_SMC2,
    		CONFIG_8xx_CONS_SCC1, ...), or switch off the serial
    		console by defining CONFIG_8xx_CONS_NONE
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    		Note: if CONFIG_8xx_CONS_NONE is defined, the serial
    		port routines must be defined elsewhere
    		(i.e. serial_init(), serial_getc(), ...)
    
    		CONFIG_CFB_CONSOLE
    		Enables console device for a color framebuffer. Needs following
    
    		defines (cf. smiLynxEM, i8042)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			VIDEO_FB_LITTLE_ENDIAN	graphic memory organisation
    						(default big endian)
    			VIDEO_HW_RECTFILL	graphic chip supports
    						rectangle fill
    						(cf. smiLynxEM)
    			VIDEO_HW_BITBLT		graphic chip supports
    						bit-blit (cf. smiLynxEM)
    			VIDEO_VISIBLE_COLS	visible pixel columns
    						(cols=pitch)
    
    			VIDEO_VISIBLE_ROWS	visible pixel rows
    			VIDEO_PIXEL_SIZE	bytes per pixel
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			VIDEO_DATA_FORMAT	graphic data format
    						(0-5, cf. cfb_console.c)
    
    			VIDEO_FB_ADRS		framebuffer address
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			VIDEO_KBD_INIT_FCT	keyboard int fct
    
    						(i.e. rx51_kp_init())
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			VIDEO_TSTC_FCT		test char fct
    
    						(i.e. rx51_kp_tstc)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			VIDEO_GETC_FCT		get char fct
    
    						(i.e. rx51_kp_getc)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			CONFIG_VIDEO_LOGO	display Linux logo in
    						upper left corner
    
    			CONFIG_VIDEO_BMP_LOGO	use bmp_logo.h instead of
    						linux_logo.h for logo.
    						Requires CONFIG_VIDEO_LOGO
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			CONFIG_CONSOLE_EXTRA_INFO
    
    						additional board info beside
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    						the logo
    
    
    		When CONFIG_CFB_CONSOLE_ANSI is defined, console will support
    		a limited number of ANSI escape sequences (cursor control,
    		erase functions and limited graphics rendition control).
    
    
    		When CONFIG_CFB_CONSOLE is defined, video console is
    		default i/o. Serial console can be forced with
    		environment 'console=serial'.
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    		When CONFIG_SILENT_CONSOLE is defined, all console
    		messages (by U-Boot and Linux!) can be silenced with
    		the "silent" environment variable. See
    		doc/README.silent for more information.
    
    		CONFIG_SYS_CONSOLE_BG_COL: define the backgroundcolor, default
    			is 0x00.
    		CONFIG_SYS_CONSOLE_FG_COL: define the foregroundcolor, default
    			is 0xa0.
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    - Console Baudrate:
    		CONFIG_BAUDRATE - in bps
    		Select one of the baudrates listed in
    
    		CONFIG_SYS_BAUDRATE_TABLE, see below.
    		CONFIG_SYS_BRGCLK_PRESCALE, baudrate prescale
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    - Console Rx buffer length
    		With CONFIG_SYS_SMC_RXBUFLEN it is possible to define
    		the maximum receive buffer length for the SMC.
    
    		This option is actual only for 82xx and 8xx possible.
    
    		If using CONFIG_SYS_SMC_RXBUFLEN also CONFIG_SYS_MAXIDLE
    		must be defined, to setup the maximum idle timeout for
    		the SMC.
    
    
    - Pre-Console Buffer:
    
    		Prior to the console being initialised (i.e. serial UART
    		initialised etc) all console output is silently discarded.
    		Defining CONFIG_PRE_CONSOLE_BUFFER will cause U-Boot to
    		buffer any console messages prior to the console being
    		initialised to a buffer of size CONFIG_PRE_CON_BUF_SZ
    		bytes located at CONFIG_PRE_CON_BUF_ADDR. The buffer is
    		a circular buffer, so if more than CONFIG_PRE_CON_BUF_SZ
    
    		bytes are output before the console is initialised, the
    
    		earlier bytes are discarded.
    
    
    		Note that when printing the buffer a copy is made on the
    		stack so CONFIG_PRE_CON_BUF_SZ must fit on the stack.
    
    
    		'Sane' compilers will generate smaller code if
    		CONFIG_PRE_CON_BUF_SZ is a power of 2
    
    - Safe printf() functions
    		Define CONFIG_SYS_VSNPRINTF to compile in safe versions of
    		the printf() functions. These are defined in
    		include/vsprintf.h and include snprintf(), vsnprintf() and
    		so on. Code size increase is approximately 300-500 bytes.
    		If this option is not given then these functions will
    		silently discard their buffer size argument - this means
    		you are not getting any overflow checking in this case.
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    - Boot Delay:	CONFIG_BOOTDELAY - in seconds
    		Delay before automatically booting the default image;
    		set to -1 to disable autoboot.
    
    		set to -2 to autoboot with no delay and not check for abort
    		(even when CONFIG_ZERO_BOOTDELAY_CHECK is defined).
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    		See doc/README.autoboot for these options that
    		work with CONFIG_BOOTDELAY. None are required.
    		CONFIG_BOOT_RETRY_TIME
    		CONFIG_BOOT_RETRY_MIN
    		CONFIG_AUTOBOOT_KEYED
    		CONFIG_AUTOBOOT_PROMPT
    		CONFIG_AUTOBOOT_DELAY_STR
    		CONFIG_AUTOBOOT_STOP_STR
    		CONFIG_ZERO_BOOTDELAY_CHECK
    		CONFIG_RESET_TO_RETRY
    
    - Autoboot Command:
    		CONFIG_BOOTCOMMAND
    		Only needed when CONFIG_BOOTDELAY is enabled;
    		define a command string that is automatically executed
    		when no character is read on the console interface
    		within "Boot Delay" after reset.
    
    		CONFIG_BOOTARGS
    
    		This can be used to pass arguments to the bootm
    		command. The value of CONFIG_BOOTARGS goes into the
    		environment value "bootargs".
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    		CONFIG_RAMBOOT and CONFIG_NFSBOOT
    
    		The value of these goes into the environment as
    		"ramboot" and "nfsboot" respectively, and can be used
    		as a convenience, when switching between booting from
    
    		RAM and NFS.
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    - Bootcount:
    		CONFIG_BOOTCOUNT_LIMIT
    		Implements a mechanism for detecting a repeating reboot
    		cycle, see:
    		http://www.denx.de/wiki/view/DULG/UBootBootCountLimit
    
    		CONFIG_BOOTCOUNT_ENV
    		If no softreset save registers are found on the hardware
    		"bootcount" is stored in the environment. To prevent a
    		saveenv on all reboots, the environment variable
    		"upgrade_available" is used. If "upgrade_available" is
    		0, "bootcount" is always 0, if "upgrade_available" is
    		1 "bootcount" is incremented in the environment.
    		So the Userspace Applikation must set the "upgrade_available"
    		and "bootcount" variable to 0, if a boot was successfully.
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    - Pre-Boot Commands:
    		CONFIG_PREBOOT
    
    		When this option is #defined, the existence of the
    		environment variable "preboot" will be checked
    		immediately before starting the CONFIG_BOOTDELAY
    		countdown and/or running the auto-boot command resp.
    		entering interactive mode.
    
    		This feature is especially useful when "preboot" is
    		automatically generated or modified. For an example
    		see the LWMON board specific code: here "preboot" is
    		modified when the user holds down a certain
    		combination of keys on the (special) keyboard when
    		booting the systems
    
    - Serial Download Echo Mode:
    		CONFIG_LOADS_ECHO
    		If defined to 1, all characters received during a
    		serial download (using the "loads" command) are
    		echoed back. This might be needed by some terminal
    		emulations (like "cu"), but may as well just take
    		time on others. This setting #define's the initial
    		value of the "loads_echo" environment variable.
    
    
    - Kgdb Serial Baudrate: (if CONFIG_CMD_KGDB is defined)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    		CONFIG_KGDB_BAUDRATE
    		Select one of the baudrates listed in
    
    		CONFIG_SYS_BAUDRATE_TABLE, see below.
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    - Monitor Functions:
    
    		Monitor commands can be included or excluded
    		from the build by using the #include files
    
    		<config_cmd_all.h> and #undef'ing unwanted
    
    		commands, or adding #define's for wanted commands.
    
    
    		The default command configuration includes all commands
    		except those marked below with a "*".
    
    
    		CONFIG_CMD_AES		  AES 128 CBC encrypt/decrypt
    
    		CONFIG_CMD_ASKENV	* ask for env variable
    		CONFIG_CMD_BDI		  bdinfo
    		CONFIG_CMD_BEDBUG	* Include BedBug Debugger
    		CONFIG_CMD_BMP		* BMP support
    		CONFIG_CMD_BSP		* Board specific commands
    		CONFIG_CMD_BOOTD	  bootd
    
    		CONFIG_CMD_BOOTI	* ARM64 Linux kernel Image support
    
    		CONFIG_CMD_CACHE	* icache, dcache