The /config node (Configuration Options)
----------------------------------------

A number of run-time configuration options are provided in the /config node
of the control device tree. You can access these using fdtdec_get_config_int(),
fdtdec_get_config_bool() and fdtdec_get_config_string().

Available options are:

silent-console
	If present and non-zero, the console is silenced by default on boot.

no-keyboard
	Tells U-Boot not to expect an attached keyboard with a VGA console

u-boot,efi-partition-entries-offset
	If present, this provides an offset (in bytes, from the start of a
	device) that should be skipped over before the partition entries.
	This is used by the EFI/GPT partition implementation when a device
	is formatted.

	This setting will override any values configured via Kconfig.

u-boot,mmc-env-offset
u-boot,mmc-env-offset-redundant
	If present, the values of the 'u-boot,mmc-env-offset' and/or
	of the u-boot,mmc-env-offset-redundant' properties overrides
	CONFIG_ENV_OFFSET and CONFIG_ENV_OFFSET_REDUND, respectively,
	for SD/MMC devices.

	Values are interpreted as the offset from the start of the
	device, specified in bytes.  It is assumed that the setting
	will point at the beginning of a LBA and values that are not
	LBA-aligned will be rounded up to the next LBA address.

u-boot,spl-payload-offset
	If present (and SPL is controlled by the device-tree), this allows
	to override the CONFIG_SYS_SPI_U_BOOT_OFFS setting using a value
	from the device-tree.
