summaryrefslogtreecommitdiffstats
path: root/configs/platform-v7a
diff options
context:
space:
mode:
authorRobert Schwebel <r.schwebel@pengutronix.de>2016-07-26 22:16:06 +0200
committerRobert Schwebel <r.schwebel@pengutronix.de>2016-07-26 22:16:06 +0200
commit49292bd74f73a260927b7f3f42548e4ee4407237 (patch)
tree3e89c3b02b9d8d9e1114f8f860afb9a1109cc373 /configs/platform-v7a
parentdd2c39349c6e0358cb5dc463cd02e63b0902bcf2 (diff)
downloadDistroKit-49292bd74f73a260927b7f3f42548e4ee4407237.tar.gz
DistroKit-49292bd74f73a260927b7f3f42548e4ee4407237.tar.xz
platform-beaglebone: rename to platform-v7a
In the meantime, in addition to beaglebone, this platform supports the other ARMv7 based boards (rpi2, vexpress), so rename it. Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de>
Diffstat (limited to 'configs/platform-v7a')
-rw-r--r--configs/platform-v7a/barebox-defaultenv/boot/bootchoser3
-rw-r--r--configs/platform-v7a/barebox-defaultenv/init/bootsource13
-rw-r--r--configs/platform-v7a/barebox-defaultenv/nv/bootstate.system0.priority1
-rw-r--r--configs/platform-v7a/barebox-defaultenv/nv/bootstate.system1.priority1
-rw-r--r--configs/platform-v7a/barebox-defaultenv/nv/linux.bootargs.console1
-rw-r--r--configs/platform-v7a/barebox-rpi2.config.2016.05.0523
-rw-r--r--configs/platform-v7a/barebox.config691
-rw-r--r--configs/platform-v7a/barebox_mlo.config366
-rw-r--r--configs/platform-v7a/config/images/boot-vfat.config10
-rw-r--r--configs/platform-v7a/config/images/hd.config18
-rw-r--r--configs/platform-v7a/kernelconfig2942
-rw-r--r--configs/platform-v7a/patches/barebox-2016.05.0/0001-bootstate-add-framework-for-redundant-boot-scenarios.patch1467
-rw-r--r--configs/platform-v7a/patches/barebox-2016.05.0/0002-bootstate-Add-kernel-option-containing-the-system-th.patch43
-rw-r--r--configs/platform-v7a/patches/barebox-2016.05.0/0003-bootstate-separate-names-from-boot-targets.patch63
-rw-r--r--configs/platform-v7a/patches/barebox-2016.05.0/0004-bootstate-set-kernel-option-to-name-of-boot-target.patch119
-rw-r--r--configs/platform-v7a/patches/barebox-2016.05.0/0101-beaglebone-add-state-entrie-for-mmc0-and-mmc1.patch35
-rw-r--r--configs/platform-v7a/patches/barebox-2016.05.0/0201-rpi2-add-basic-boot-spec-devicetree-support.patch462
-rw-r--r--configs/platform-v7a/patches/barebox-2016.05.0/0301-Release-2016.05.0-customers-pengutronix-multi_v7-201.patch22
-rw-r--r--configs/platform-v7a/patches/barebox-2016.05.0/series22
-rw-r--r--configs/platform-v7a/platformconfig278
-rw-r--r--configs/platform-v7a/platforms/barebox-rpi2.in20
-rw-r--r--configs/platform-v7a/platforms/barebox_mlo.in45
-rw-r--r--configs/platform-v7a/platforms/blspec-boneblack.in5
-rw-r--r--configs/platform-v7a/platforms/blspec-bonewhite.in5
-rw-r--r--configs/platform-v7a/platforms/blspec-rpi2.in5
-rw-r--r--configs/platform-v7a/platforms/image-boot-vfat.in22
-rw-r--r--configs/platform-v7a/projectroot/loader/entries/boneblack.conf5
-rw-r--r--configs/platform-v7a/projectroot/loader/entries/bonewhite.conf5
-rw-r--r--configs/platform-v7a/projectroot/loader/entries/rpi2.conf5
-rwxr-xr-xconfigs/platform-v7a/qemu-common92
-rw-r--r--configs/platform-v7a/rpi-firmware/LICENCE.broadcom30
-rw-r--r--configs/platform-v7a/rpi-firmware/bootcode.binbin0 -> 17932 bytes
-rw-r--r--configs/platform-v7a/rpi-firmware/config.txt14
-rw-r--r--configs/platform-v7a/rpi-firmware/fixup.datbin0 -> 6483 bytes
-rw-r--r--configs/platform-v7a/rpi-firmware/fixup_cd.datbin0 -> 2503 bytes
-rw-r--r--configs/platform-v7a/rpi-firmware/fixup_db.datbin0 -> 9714 bytes
-rw-r--r--configs/platform-v7a/rpi-firmware/fixup_x.datbin0 -> 9716 bytes
-rw-r--r--configs/platform-v7a/rpi-firmware/start.elfbin0 -> 2745784 bytes
-rw-r--r--configs/platform-v7a/rpi-firmware/start_cd.elfbin0 -> 616664 bytes
-rw-r--r--configs/platform-v7a/rpi-firmware/start_db.elfbin0 -> 4938504 bytes
-rw-r--r--configs/platform-v7a/rpi-firmware/start_x.elfbin0 -> 3889992 bytes
-rw-r--r--configs/platform-v7a/rules/barebox-rpi2.make92
-rw-r--r--configs/platform-v7a/rules/blspec-boneblack.make38
-rw-r--r--configs/platform-v7a/rules/blspec-bonewhite.make38
-rw-r--r--configs/platform-v7a/rules/blspec-rpi2.make38
-rw-r--r--configs/platform-v7a/rules/image-boot-vfat.make49
-rw-r--r--configs/platform-v7a/rules/post/genimage-fixup.make3
-rwxr-xr-xconfigs/platform-v7a/run21
-rwxr-xr-xconfigs/platform-v7a/run-nfs20
-rw-r--r--configs/platform-v7a/scripts/lib/ptxd_make_nfsd.sh29
50 files changed, 7661 insertions, 0 deletions
diff --git a/configs/platform-v7a/barebox-defaultenv/boot/bootchoser b/configs/platform-v7a/barebox-defaultenv/boot/bootchoser
new file mode 100644
index 0000000..3b2e19a
--- /dev/null
+++ b/configs/platform-v7a/barebox-defaultenv/boot/bootchoser
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+bootchoser -d
diff --git a/configs/platform-v7a/barebox-defaultenv/init/bootsource b/configs/platform-v7a/barebox-defaultenv/init/bootsource
new file mode 100644
index 0000000..4de7163
--- /dev/null
+++ b/configs/platform-v7a/barebox-defaultenv/init/bootsource
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+if [ -n "$nv.boot.default" ]; then
+ exit
+fi
+
+if [ $bootsource = mmc ]; then
+ global.boot.default="bootchooser net"
+elif [ $bootsource = net ]; then
+ global.boot.default="net bootchooser"
+else
+ global.boot.default="disk0.1 net"
+fi
diff --git a/configs/platform-v7a/barebox-defaultenv/nv/bootstate.system0.priority b/configs/platform-v7a/barebox-defaultenv/nv/bootstate.system0.priority
new file mode 100644
index 0000000..f599e28
--- /dev/null
+++ b/configs/platform-v7a/barebox-defaultenv/nv/bootstate.system0.priority
@@ -0,0 +1 @@
+10
diff --git a/configs/platform-v7a/barebox-defaultenv/nv/bootstate.system1.priority b/configs/platform-v7a/barebox-defaultenv/nv/bootstate.system1.priority
new file mode 100644
index 0000000..209e3ef
--- /dev/null
+++ b/configs/platform-v7a/barebox-defaultenv/nv/bootstate.system1.priority
@@ -0,0 +1 @@
+20
diff --git a/configs/platform-v7a/barebox-defaultenv/nv/linux.bootargs.console b/configs/platform-v7a/barebox-defaultenv/nv/linux.bootargs.console
new file mode 100644
index 0000000..705752c
--- /dev/null
+++ b/configs/platform-v7a/barebox-defaultenv/nv/linux.bootargs.console
@@ -0,0 +1 @@
+loglevel=5 systemd.log_level=warning systemd.show_status=auto
diff --git a/configs/platform-v7a/barebox-rpi2.config.2016.05.0 b/configs/platform-v7a/barebox-rpi2.config.2016.05.0
new file mode 100644
index 0000000..b780f85
--- /dev/null
+++ b/configs/platform-v7a/barebox-rpi2.config.2016.05.0
@@ -0,0 +1,523 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Barebox/arm 2016.05.0 Configuration
+#
+CONFIG_ARM=y
+CONFIG_ARM_LINUX=y
+CONFIG_ARCH_BCM283X=y
+
+#
+# System Type
+#
+CONFIG_BUILTIN_DTB=y
+CONFIG_BUILTIN_DTB_NAME="bcm2836-rpi-2-b"
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_BCM2835 is not set
+CONFIG_ARCH_BCM2836=y
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_DIGIC is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_HIGHBANK is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_MVEBU 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_PXA is not set
+# CONFIG_ARCH_ROCKCHIP is not set
+# CONFIG_ARCH_SOCFPGA is not set
+# CONFIG_ARCH_S3C24xx is not set
+# CONFIG_ARCH_S5PCxx is not set
+# CONFIG_ARCH_S3C64xx is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_VEXPRESS is not set
+# CONFIG_ARCH_TEGRA is not set
+# CONFIG_ARCH_UEMD is not set
+# CONFIG_ARCH_ZYNQ is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_V7=y
+CONFIG_CPU_32v7=y
+
+#
+# processor features
+#
+# CONFIG_BOOT_ENDIANNESS_SWITCH is not set
+CONFIG_ARCH_TEXT_BASE=0x04000000
+CONFIG_MACH_RPI_COMMON=y
+CONFIG_MACH_RPI2=y
+CONFIG_BAREBOX_MAX_IMAGE_SIZE=0xffffffff
+CONFIG_AEABI=y
+# CONFIG_THUMB2_BAREBOX is not set
+# CONFIG_ARM_BOARD_APPEND_ATAG is not set
+
+#
+# ARM specific settings
+#
+CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y
+CONFIG_ARM_EXCEPTIONS=y
+CONFIG_ARM_UNWIND=y
+# CONFIG_ARM_SEMIHOSTING is not set
+CONFIG_DEFCONFIG_LIST="$ARCH_DEFCONFIG"
+CONFIG_GREGORIAN_CALENDER=y
+CONFIG_HAS_KALLSYMS=y
+CONFIG_HAS_MODULES=y
+CONFIG_ENV_HANDLING=y
+CONFIG_HAS_CACHE=y
+CONFIG_HAS_DMA=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_BOOTM=y
+CONFIG_BLOCK=y
+CONFIG_BLOCK_WRITE=y
+CONFIG_FILETYPE=y
+CONFIG_BINFMT=y
+CONFIG_UIMAGE=y
+CONFIG_GLOBALVAR=y
+CONFIG_STDDEV=y
+CONFIG_MENUTREE=y
+
+#
+# General Settings
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_BANNER=y
+CONFIG_MEMINFO=y
+CONFIG_ENVIRONMENT_VARIABLES=y
+
+#
+# memory layout
+#
+CONFIG_HAVE_PBL_IMAGE=y
+CONFIG_HAVE_IMAGE_COMPRESSION=y
+# CONFIG_PBL_IMAGE is not set
+CONFIG_MMU=y
+CONFIG_MMU_EARLY=y
+CONFIG_HAVE_CONFIGURABLE_TEXT_BASE=y
+CONFIG_TEXT_BASE=0x04000000
+CONFIG_BAREBOX_MAX_BARE_INIT_SIZE=0xffffffff
+CONFIG_STACK_SIZE=0x8000
+CONFIG_MALLOC_SIZE=0x400000
+# CONFIG_EXPERIMENTAL is not set
+# CONFIG_MALLOC_DLMALLOC is not set
+CONFIG_MALLOC_TLSF=y
+CONFIG_KALLSYMS=y
+# CONFIG_RELOCATABLE is not set
+# CONFIG_PANIC_HANG is not set
+CONFIG_PROMPT="R-Pi> "
+CONFIG_BAUDRATE=115200
+CONFIG_CBSIZE=1024
+CONFIG_SHELL_HUSH=y
+# CONFIG_SHELL_SIMPLE is not set
+# CONFIG_SHELL_NONE is not set
+CONFIG_GLOB=y
+CONFIG_GLOB_SORT=y
+CONFIG_PROMPT_HUSH_PS2="> "
+CONFIG_HUSH_FANCY_PROMPT=y
+CONFIG_CMDLINE_EDITING=y
+CONFIG_AUTO_COMPLETE=y
+CONFIG_MENU=y
+CONFIG_PASSWORD=y
+CONFIG_PASSWORD_DEFAULT=""
+CONFIG_PASSWD_SUM_MD5=y
+# CONFIG_PASSWD_SUM_SHA1 is not set
+# CONFIG_PASSWD_SUM_SHA256 is not set
+# CONFIG_PASSWD_SUM_SHA512 is not set
+# CONFIG_PASSWD_CRYPTO_PBKDF2 is not set
+CONFIG_DYNAMIC_CRC_TABLE=y
+CONFIG_ERRNO_MESSAGES=y
+CONFIG_TIMESTAMP=y
+CONFIG_BLSPEC=y
+# CONFIG_IMD is not set
+# CONFIG_KERNEL_INSTALL_TARGET is not set
+CONFIG_CONSOLE_FULL=y
+# CONFIG_CONSOLE_SIMPLE is not set
+# CONFIG_CONSOLE_NONE is not set
+CONFIG_CONSOLE_ACTIVATE_FIRST=y
+# CONFIG_CONSOLE_ACTIVATE_ALL is not set
+# CONFIG_CONSOLE_ACTIVATE_NONE is not set
+# CONFIG_CONSOLE_RATP is not set
+CONFIG_PARTITION=y
+CONFIG_PARTITION_DISK=y
+CONFIG_PARTITION_DISK_DOS=y
+# CONFIG_PARTITION_DISK_EFI is not set
+CONFIG_DEFAULT_ENVIRONMENT=y
+CONFIG_DEFAULT_COMPRESSION_NONE=y
+CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW=y
+CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW_MENU=y
+# CONFIG_DEFAULT_ENVIRONMENT_GENERIC is not set
+CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/raspberry-pi/env ${PTXDIST_PLATFORMCONFIGDIR}/barebox-defaultenv"
+CONFIG_BAREBOXENV_TARGET=y
+# CONFIG_BAREBOXCRC32_TARGET is not set
+CONFIG_POLLER=y
+# CONFIG_RESET_SOURCE is not set
+
+#
+# Debugging
+#
+CONFIG_COMPILE_LOGLEVEL=6
+CONFIG_DEFAULT_LOGLEVEL=7
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_LL is not set
+# CONFIG_DEBUG_INITCALLS is not set
+CONFIG_HAS_DEBUG_LL=y
+CONFIG_COMMAND_SUPPORT=y
+# CONFIG_HAS_POWEROFF is not set
+CONFIG_COMPILE_HASH=y
+CONFIG_COMPILE_MEMORY=y
+
+#
+# Commands
+#
+
+#
+# Information
+#
+CONFIG_CMD_ARM_CPUINFO=y
+CONFIG_CMD_DEVINFO=y
+# CONFIG_CMD_DMESG is not set
+CONFIG_CMD_DRVINFO=y
+CONFIG_CMD_HELP=y
+CONFIG_LONGHELP=y
+CONFIG_CMD_IOMEM=y
+# CONFIG_CMD_IMD is not set
+CONFIG_CMD_MEMINFO=y
+# CONFIG_CMD_ARM_MMUINFO is not set
+# CONFIG_CMD_REGULATOR is not set
+CONFIG_CMD_VERSION=y
+# CONFIG_CMD_MMC_EXTCSD is not set
+
+#
+# Boot
+#
+CONFIG_FLEXIBLE_BOOTARGS=y
+CONFIG_CMD_BOOT=y
+CONFIG_CMD_BOOTM=y
+CONFIG_CMD_BOOTM_SHOW_TYPE=y
+CONFIG_CMD_BOOTM_VERBOSE=y
+CONFIG_CMD_BOOTM_INITRD=y
+CONFIG_CMD_BOOTM_OFTREE=y
+# CONFIG_CMD_BOOTM_OFTREE_UIMAGE is not set
+# CONFIG_CMD_BOOTM_AIMAGE is not set
+# CONFIG_CMD_BOOTM_FITIMAGE is not set
+CONFIG_CMD_BOOTU=y
+# CONFIG_CMD_BOOTZ is not set
+CONFIG_CMD_GO=y
+CONFIG_CMD_LOADB=y
+# CONFIG_CMD_LOADS is not set
+CONFIG_CMD_LOADY=y
+CONFIG_CMD_RESET=y
+CONFIG_CMD_UIMAGE=y
+
+#
+# Partition
+#
+CONFIG_CMD_PARTITION=y
+CONFIG_CMD_AUTOMOUNT=y
+CONFIG_CMD_MOUNT=y
+CONFIG_CMD_UMOUNT=y
+
+#
+# Environment
+#
+CONFIG_CMD_NV=y
+CONFIG_CMD_EXPORT=y
+CONFIG_CMD_DEFAULTENV=y
+CONFIG_CMD_GLOBAL=y
+# CONFIG_CMD_LOADENV is not set
+CONFIG_CMD_PRINTENV=y
+CONFIG_CMD_MAGICVAR=y
+CONFIG_CMD_MAGICVAR_HELP=y
+CONFIG_CMD_SAVEENV=y
+
+#
+# File
+#
+CONFIG_CMD_BASENAME=y
+CONFIG_CMD_CAT=y
+CONFIG_CMD_CD=y
+CONFIG_CMD_CP=y
+# CONFIG_CMD_CMP is not set
+CONFIG_CMD_DIGEST=y
+CONFIG_CMD_DIRNAME=y
+CONFIG_CMD_FILETYPE=y
+CONFIG_CMD_LN=y
+CONFIG_CMD_LS=y
+CONFIG_CMD_MD5SUM=y
+CONFIG_CMD_MKDIR=y
+CONFIG_CMD_PWD=y
+CONFIG_CMD_READLINK=y
+CONFIG_CMD_RM=y
+CONFIG_CMD_RMDIR=y
+# CONFIG_CMD_SHA1SUM is not set
+# CONFIG_CMD_SHA224SUM is not set
+# CONFIG_CMD_SHA256SUM is not set
+# CONFIG_CMD_SHA384SUM is not set
+# CONFIG_CMD_SHA512SUM is not set
+CONFIG_CMD_UNCOMPRESS=y
+
+#
+# Shell scripting
+#
+CONFIG_CMD_FALSE=y
+CONFIG_CMD_GETOPT=y
+CONFIG_CMD_LET=y
+CONFIG_CMD_MSLEEP=y
+# CONFIG_CMD_READF is not set
+CONFIG_CMD_SLEEP=y
+CONFIG_CMD_TEST=y
+CONFIG_CMD_TRUE=y
+
+#
+# Console and Framebuffer interaction
+#
+CONFIG_CMD_CLEAR=y
+CONFIG_CMD_ECHO=y
+CONFIG_CMD_ECHO_E=y
+CONFIG_CMD_EDIT=y
+CONFIG_CMD_LOGIN=y
+CONFIG_CMD_MENU=y
+CONFIG_CMD_MENU_MANAGEMENT=y
+CONFIG_CMD_MENUTREE=y
+CONFIG_CMD_PASSWD=y
+CONFIG_PASSWD_MODE_HIDE=y
+# CONFIG_PASSWD_MODE_STAR is not set
+# CONFIG_PASSWD_MODE_CLEAR is not set
+CONFIG_CMD_READLINE=y
+CONFIG_CMD_TIMEOUT=y
+
+#
+# Memory
+#
+CONFIG_CMD_CRC=y
+CONFIG_CMD_CRC_CMP=y
+CONFIG_CMD_MD=y
+CONFIG_CMD_MEMCMP=y
+CONFIG_CMD_MEMCPY=y
+CONFIG_CMD_MEMSET=y
+# CONFIG_CMD_MEMTEST is not set
+CONFIG_CMD_MM=y
+CONFIG_CMD_MW=y
+
+#
+# Hardware manipulation
+#
+CONFIG_CMD_CLK=y
+CONFIG_CMD_DETECT=y
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_GPIO=y
+# CONFIG_CMD_LED is not set
+# CONFIG_CMD_SPI is not set
+# CONFIG_CMD_LED_TRIGGER is not set
+
+#
+# Miscellaneous
+#
+# CONFIG_CMD_2048 is not set
+# CONFIG_CMD_BAREBOX_UPDATE is not set
+# CONFIG_CMD_FIRMWARELOAD is not set
+CONFIG_CMD_OF_DUMP=y
+CONFIG_CMD_OF_NODE=y
+CONFIG_CMD_OF_PROPERTY=y
+# CONFIG_CMD_OF_DISPLAY_TIMINGS is not set
+# CONFIG_CMD_OF_FIXUP_STATUS is not set
+CONFIG_CMD_OFTREE=y
+CONFIG_CMD_TIME=y
+# CONFIG_CMD_DHRYSTONE is not set
+# CONFIG_CMD_SPD_DECODE is not set
+# CONFIG_NET is not set
+
+#
+# Drivers
+#
+CONFIG_OFTREE=y
+CONFIG_OFTREE_MEM_GENERIC=y
+CONFIG_DTC=y
+CONFIG_OFDEVICE=y
+CONFIG_OF_GPIO=y
+# CONFIG_OF_BAREBOX_DRIVERS is not set
+CONFIG_ARM_AMBA=y
+
+#
+# serial drivers
+#
+# CONFIG_DRIVER_SERIAL_ARM_DCC is not set
+CONFIG_SERIAL_AMBA_PL011=y
+# CONFIG_DRIVER_SERIAL_NS16550 is not set
+# CONFIG_DRIVER_SERIAL_CADENCE is not set
+
+#
+# SPI drivers
+#
+CONFIG_SPI=y
+# CONFIG_DRIVER_SPI_GPIO is not set
+# CONFIG_I2C is not set
+# CONFIG_MTD is not set
+CONFIG_DISK=y
+CONFIG_DISK_WRITE=y
+
+#
+# drive types
+#
+# CONFIG_DISK_ATA is not set
+# CONFIG_DISK_AHCI is not set
+
+#
+# interface types
+#
+# CONFIG_DISK_INTF_PLATFORM_IDE is not set
+# CONFIG_USB_HOST is not set
+# CONFIG_USB_GADGET is not set
+# CONFIG_USB_MUSB is not set
+# CONFIG_VIDEO is not set
+CONFIG_MCI=y
+
+#
+# --- Feature list ---
+#
+CONFIG_MCI_STARTUP=y
+CONFIG_MCI_INFO=y
+CONFIG_MCI_WRITE=y
+CONFIG_MCI_MMC_BOOT_PARTITIONS=y
+
+#
+# --- MCI host drivers ---
+#
+# CONFIG_MCI_DW is not set
+CONFIG_MCI_BCM283X=y
+# CONFIG_MCI_MMCI is not set
+# CONFIG_MCI_SPI is not set
+CONFIG_HAVE_CLK=y
+CONFIG_CLKDEV_LOOKUP=y
+CONFIG_COMMON_CLK=y
+CONFIG_CLOCKSOURCE_BCM283X=y
+CONFIG_CLOCKSOURCE_DUMMY_RATE=1000
+
+#
+# MFD
+#
+# CONFIG_MFD_MC13XXX is not set
+# CONFIG_MFD_SYSCON is not set
+
+#
+# Misc devices
+#
+# CONFIG_JTAG is not set
+# CONFIG_SRAM is not set
+CONFIG_LED=y
+CONFIG_LED_GPIO=y
+# CONFIG_LED_GPIO_OF is not set
+# CONFIG_LED_GPIO_RGB is not set
+# CONFIG_LED_GPIO_BICOLOR is not set
+CONFIG_LED_TRIGGERS=y
+
+#
+# EEPROM support
+#
+# CONFIG_EEPROM_AT25 is not set
+
+#
+# Input device support
+#
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_WATCHDOG is not set
+# CONFIG_PWM is not set
+
+#
+# DMA support
+#
+CONFIG_GPIOLIB=y
+
+#
+# GPIO
+#
+# CONFIG_GPIO_74164 is not set
+CONFIG_GPIO_BCM283X=y
+# CONFIG_GPIO_GENERIC_PLATFORM is not set
+# CONFIG_GPIO_IMX is not set
+# CONFIG_GPIO_MXS is not set
+# CONFIG_GPIO_OMAP is not set
+# CONFIG_GPIO_PL061 is not set
+# CONFIG_GPIO_DESIGNWARE is not set
+# CONFIG_W1 is not set
+# CONFIG_PINCTRL is not set
+
+#
+# Bus devices
+#
+CONFIG_REGULATOR=y
+# CONFIG_REGULATOR_FIXED is not set
+CONFIG_REGULATOR_BCM283X=y
+# CONFIG_RESET_CONTROLLER is not set
+# CONFIG_RTC_CLASS is not set
+
+#
+# Firmware Drivers
+#
+# CONFIG_FIRMWARE_ALTERA_SERIAL is not set
+
+#
+# PHY Subsystem
+#
+# CONFIG_GENERIC_PHY is not set
+# CONFIG_CRYPTO_HW is not set
+
+#
+# Filesystem support
+#
+CONFIG_FS=y
+CONFIG_FS_AUTOMOUNT=y
+# CONFIG_FS_CRAMFS is not set
+CONFIG_FS_EXT4=y
+CONFIG_FS_RAMFS=y
+CONFIG_FS_DEVFS=y
+CONFIG_FS_FAT=y
+CONFIG_FS_FAT_WRITE=y
+CONFIG_FS_FAT_LFN=y
+# CONFIG_FS_BPKFS is not set
+# CONFIG_FS_UIMAGEFS is not set
+# CONFIG_FS_PSTORE is not set
+# CONFIG_FS_SQUASHFS is not set
+
+#
+# Library routines
+#
+CONFIG_PARAMETER=y
+CONFIG_UNCOMPRESS=y
+# CONFIG_ZLIB is not set
+# CONFIG_BZLIB is not set
+# CONFIG_LZ4_DECOMPRESS is not set
+# CONFIG_XZ_DECOMPRESS is not set
+# CONFIG_GENERIC_FIND_NEXT_BIT is not set
+CONFIG_PROCESS_ESCAPE_SEQUENCE=y
+# CONFIG_LZO_DECOMPRESS is not set
+CONFIG_QSORT=y
+CONFIG_XYMODEM=y
+
+#
+# Library gui routines
+#
+# CONFIG_BAREBOX_LOGO is not set
+
+#
+# Crypto support
+#
+CONFIG_CRC32=y
+CONFIG_CRC16=y
+CONFIG_DIGEST=y
+CONFIG_MD5=y
+CONFIG_DIGEST_MD5_GENERIC=y
+# CONFIG_DIGEST_SHA1_GENERIC is not set
+# CONFIG_DIGEST_SHA224_GENERIC is not set
+# CONFIG_DIGEST_SHA256_GENERIC is not set
+# CONFIG_DIGEST_SHA384_GENERIC is not set
+# CONFIG_DIGEST_SHA512_GENERIC is not set
+# CONFIG_DIGEST_HMAC_GENERIC is not set
+# CONFIG_DIGEST_SHA1_ARM is not set
+# CONFIG_DIGEST_SHA256_ARM is not set
+# CONFIG_CRYPTO_KEYSTORE is not set
diff --git a/configs/platform-v7a/barebox.config b/configs/platform-v7a/barebox.config
new file mode 100644
index 0000000..bd4d153
--- /dev/null
+++ b/configs/platform-v7a/barebox.config
@@ -0,0 +1,691 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Barebox/arm 2016.05.0 Configuration
+#
+CONFIG_ARM=y
+CONFIG_ARM_LINUX=y
+CONFIG_ARM_USE_COMPRESSED_DTB=y
+
+#
+# System Type
+#
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_BCM2835 is not set
+# CONFIG_ARCH_BCM2836 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_DIGIC is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_HIGHBANK is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_MVEBU is not set
+# CONFIG_ARCH_MXS is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_NOMADIK is not set
+CONFIG_ARCH_OMAP=y
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_ROCKCHIP is not set
+# CONFIG_ARCH_SOCFPGA is not set
+# CONFIG_ARCH_S3C24xx is not set
+# CONFIG_ARCH_S5PCxx is not set
+# CONFIG_ARCH_S3C64xx is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_VEXPRESS is not set
+# CONFIG_ARCH_TEGRA is not set
+# CONFIG_ARCH_UEMD is not set
+# CONFIG_ARCH_ZYNQ is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_V7=y
+CONFIG_CPU_32v7=y
+
+#
+# processor features
+#
+# CONFIG_BOOT_ENDIANNESS_SWITCH is not set
+CONFIG_BAREBOX_MAX_IMAGE_SIZE=0xffffffff
+
+#
+# OMAP Features
+#
+CONFIG_ARCH_AM33XX=y
+CONFIG_OMAP_CLOCK_SOURCE_DMTIMER=y
+CONFIG_OMAP_GPMC=y
+# CONFIG_OMAP_BUILD_IFT is not set
+# CONFIG_OMAP_BUILD_SPI is not set
+CONFIG_BAREBOX_UPDATE_AM33XX_SPI_NOR_MLO=y
+CONFIG_BAREBOX_UPDATE_AM33XX_NAND=y
+CONFIG_BAREBOX_UPDATE_AM33XX_EMMC=y
+CONFIG_AM33XX_NET_BOOT=y
+CONFIG_OMAP_MULTI_BOARDS=y
+CONFIG_MACH_AFI_GF=y
+# CONFIG_MACH_BEAGLE is not set
+CONFIG_MACH_BEAGLEBONE=y
+CONFIG_MACH_PHYTEC_SOM_AM335X=y
+CONFIG_ARM_ASM_UNIFIED=y
+CONFIG_AEABI=y
+CONFIG_THUMB2_BAREBOX=y
+CONFIG_ARM_BOARD_APPEND_ATAG=y
+
+#
+# ARM specific settings
+#
+CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y
+CONFIG_ARM_EXCEPTIONS=y
+CONFIG_ARM_UNWIND=y
+# CONFIG_ARM_SEMIHOSTING is not set
+CONFIG_DEFCONFIG_LIST="$ARCH_DEFCONFIG"
+CONFIG_HAS_KALLSYMS=y
+CONFIG_HAS_MODULES=y
+CONFIG_ENV_HANDLING=y
+CONFIG_HAS_CACHE=y
+CONFIG_HAS_DMA=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_BOOTM=y
+CONFIG_BLOCK=y
+CONFIG_BLOCK_WRITE=y
+CONFIG_FILETYPE=y
+CONFIG_BINFMT=y
+CONFIG_UIMAGE=y
+CONFIG_GLOBALVAR=y
+CONFIG_STDDEV=y
+CONFIG_BAREBOX_UPDATE=y
+CONFIG_MENUTREE=y
+CONFIG_FILE_LIST=y
+
+#
+# General Settings
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_BANNER=y
+CONFIG_MEMINFO=y
+CONFIG_ENVIRONMENT_VARIABLES=y
+
+#
+# memory layout
+#
+CONFIG_HAVE_PBL_IMAGE=y
+CONFIG_HAVE_PBL_MULTI_IMAGES=y
+CONFIG_HAVE_IMAGE_COMPRESSION=y
+CONFIG_PBL_IMAGE=y
+CONFIG_PBL_MULTI_IMAGES=y
+CONFIG_PBL_RELOCATABLE=y
+CONFIG_IMAGE_COMPRESSION=y
+# CONFIG_IMAGE_COMPRESSION_LZ4 is not set
+CONFIG_IMAGE_COMPRESSION_LZO=y
+# CONFIG_IMAGE_COMPRESSION_GZIP is not set
+# CONFIG_IMAGE_COMPRESSION_XZKERN is not set
+# CONFIG_IMAGE_COMPRESSION_NONE is not set
+CONFIG_MMU=y
+CONFIG_MMU_EARLY=y
+CONFIG_HAVE_CONFIGURABLE_TEXT_BASE=y
+CONFIG_TEXT_BASE=0x0
+CONFIG_BAREBOX_MAX_PBL_SIZE=0xffffffff
+CONFIG_BAREBOX_MAX_BARE_INIT_SIZE=0xffffffff
+CONFIG_BAREBOX_MAX_PBLX_SIZE=0xffffffff
+CONFIG_STACK_SIZE=0x8000
+CONFIG_MALLOC_SIZE=0x0
+# CONFIG_EXPERIMENTAL is not set
+# CONFIG_MALLOC_DLMALLOC is not set
+CONFIG_MALLOC_TLSF=y
+CONFIG_KALLSYMS=y
+CONFIG_RELOCATABLE=y
+# CONFIG_PANIC_HANG is not set
+CONFIG_PROMPT="barebox> "
+CONFIG_BAUDRATE=115200
+CONFIG_CBSIZE=1024
+CONFIG_SHELL_HUSH=y
+# CONFIG_SHELL_SIMPLE is not set
+# CONFIG_SHELL_NONE is not set
+CONFIG_GLOB=y
+CONFIG_GLOB_SORT=y
+CONFIG_PROMPT_HUSH_PS2="> "
+CONFIG_HUSH_FANCY_PROMPT=y
+CONFIG_CMDLINE_EDITING=y
+CONFIG_AUTO_COMPLETE=y
+CONFIG_MENU=y
+# CONFIG_PASSWORD is not set
+CONFIG_DYNAMIC_CRC_TABLE=y
+CONFIG_ERRNO_MESSAGES=y
+# CONFIG_TIMESTAMP is not set
+CONFIG_BLSPEC=y
+# CONFIG_IMD is not set
+# CONFIG_KERNEL_INSTALL_TARGET is not set
+CONFIG_CONSOLE_FULL=y
+# CONFIG_CONSOLE_SIMPLE is not set
+# CONFIG_CONSOLE_NONE is not set
+# CONFIG_CONSOLE_ACTIVATE_FIRST is not set
+# CONFIG_CONSOLE_ACTIVATE_ALL is not set
+CONFIG_CONSOLE_ACTIVATE_NONE=y
+# CONFIG_PBL_CONSOLE is not set
+# CONFIG_CONSOLE_RATP is not set
+CONFIG_PARTITION=y
+CONFIG_PARTITION_DISK=y
+CONFIG_PARTITION_DISK_DOS=y
+# CONFIG_PARTITION_DISK_EFI is not set
+CONFIG_DEFAULT_ENVIRONMENT=y
+CONFIG_DEFAULT_COMPRESSION_LZO=y
+# CONFIG_DEFAULT_COMPRESSION_NONE is not set
+CONFIG_HAVE_DEFAULT_ENVIRONMENT_NEW=y
+CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW=y
+CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW_MENU=y
+CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW_DFU=y
+CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/beaglebone/defaultenv-beaglebone"
+CONFIG_BAREBOXENV_TARGET=y
+# CONFIG_BAREBOXCRC32_TARGET is not set
+CONFIG_POLLER=y
+CONFIG_STATE=y
+# CONFIG_STATE_CRYPTO is not set
+CONFIG_BOOTSTATE=y
+CONFIG_RESET_SOURCE=y
+
+#
+# Debugging
+#
+CONFIG_COMPILE_LOGLEVEL=6
+CONFIG_DEFAULT_LOGLEVEL=7
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_LL is not set
+CONFIG_DEBUG_OMAP_UART_PORT=1
+# CONFIG_DEBUG_INITCALLS is not set
+CONFIG_HAS_DEBUG_LL=y
+CONFIG_COMMAND_SUPPORT=y
+# CONFIG_HAS_POWEROFF is not set
+CONFIG_COMPILE_HASH=y
+CONFIG_COMPILE_MEMORY=y
+
+#
+# Commands
+#
+
+#
+# Information
+#
+CONFIG_CMD_ARM_CPUINFO=y
+CONFIG_CMD_DEVINFO=y
+# CONFIG_CMD_DMESG is not set
+CONFIG_CMD_DRVINFO=y
+CONFIG_CMD_HELP=y
+CONFIG_LONGHELP=y
+CONFIG_CMD_IOMEM=y
+# CONFIG_CMD_IMD is not set
+CONFIG_CMD_MEMINFO=y
+CONFIG_CMD_ARM_MMUINFO=y
+CONFIG_CMD_VERSION=y
+# CONFIG_CMD_MMC_EXTCSD is not set
+
+#
+# Boot
+#
+CONFIG_FLEXIBLE_BOOTARGS=y
+CONFIG_CMD_BOOT=y
+CONFIG_CMD_BOOTM=y
+CONFIG_CMD_BOOTM_SHOW_TYPE=y
+CONFIG_CMD_BOOTM_VERBOSE=y
+CONFIG_CMD_BOOTM_INITRD=y
+CONFIG_CMD_BOOTM_OFTREE=y
+# CONFIG_CMD_BOOTM_OFTREE_UIMAGE is not set
+# CONFIG_CMD_BOOTM_AIMAGE is not set
+# CONFIG_CMD_BOOTM_FITIMAGE is not set
+# CONFIG_CMD_BOOTU is not set
+CONFIG_CMD_BOOTZ=y
+CONFIG_CMD_GO=y
+CONFIG_CMD_LOADB=y
+# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_LOADY is not set
+CONFIG_CMD_RESET=y
+CONFIG_CMD_UIMAGE=y
+
+#
+# Partition
+#
+CONFIG_CMD_PARTITION=y
+CONFIG_CMD_AUTOMOUNT=y
+CONFIG_CMD_MOUNT=y
+CONFIG_CMD_UBI=y
+CONFIG_CMD_UBIFORMAT=y
+CONFIG_CMD_UMOUNT=y
+
+#
+# Environment
+#
+CONFIG_CMD_NV=y
+CONFIG_CMD_EXPORT=y
+# CONFIG_CMD_DEFAULTENV is not set
+CONFIG_CMD_GLOBAL=y
+CONFIG_CMD_LOADENV=y
+CONFIG_CMD_PRINTENV=y
+CONFIG_CMD_MAGICVAR=y
+CONFIG_CMD_MAGICVAR_HELP=y
+CONFIG_CMD_SAVEENV=y
+
+#
+# File
+#
+CONFIG_CMD_BASENAME=y
+CONFIG_CMD_CAT=y
+CONFIG_CMD_CD=y
+CONFIG_CMD_CP=y
+# CONFIG_CMD_CMP is not set
+CONFIG_CMD_DIGEST=y
+CONFIG_CMD_DIRNAME=y
+CONFIG_CMD_FILETYPE=y
+CONFIG_CMD_LN=y
+CONFIG_CMD_LS=y
+CONFIG_CMD_MD5SUM=y
+CONFIG_CMD_MKDIR=y
+CONFIG_CMD_PWD=y
+CONFIG_CMD_READLINK=y
+CONFIG_CMD_RM=y
+CONFIG_CMD_RMDIR=y
+# CONFIG_CMD_SHA1SUM is not set
+# CONFIG_CMD_SHA224SUM is not set
+# CONFIG_CMD_SHA256SUM is not set
+# CONFIG_CMD_SHA384SUM is not set
+# CONFIG_CMD_SHA512SUM is not set
+CONFIG_CMD_UNCOMPRESS=y
+
+#
+# Shell scripting
+#
+CONFIG_CMD_FALSE=y
+CONFIG_CMD_GETOPT=y
+CONFIG_CMD_LET=y
+CONFIG_CMD_MSLEEP=y
+CONFIG_CMD_READF=y
+CONFIG_CMD_SLEEP=y
+CONFIG_CMD_TEST=y
+CONFIG_CMD_TRUE=y
+
+#
+# Network
+#
+CONFIG_CMD_DHCP=y
+# CONFIG_CMD_HOST is not set
+CONFIG_NET_CMD_IFUP=y
+CONFIG_CMD_MIITOOL=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_TFTP=y
+
+#
+# Console and Framebuffer interaction
+#
+CONFIG_CMD_CLEAR=y
+CONFIG_CMD_ECHO=y
+CONFIG_CMD_ECHO_E=y
+CONFIG_CMD_EDIT=y
+# CONFIG_CMD_LOGIN is not set
+CONFIG_CMD_MENU=y
+# CONFIG_CMD_MENU_MANAGEMENT is not set
+CONFIG_CMD_MENUTREE=y
+CONFIG_CMD_READLINE=y
+CONFIG_CMD_TIMEOUT=y
+
+#
+# Memory
+#
+CONFIG_CMD_CRC=y
+CONFIG_CMD_CRC_CMP=y
+CONFIG_CMD_MD=y
+CONFIG_CMD_MEMCMP=y
+CONFIG_CMD_MEMCPY=y
+CONFIG_CMD_MEMSET=y
+# CONFIG_CMD_MEMTEST is not set
+CONFIG_CMD_MM=y
+CONFIG_CMD_MW=y
+
+#
+# Hardware manipulation
+#
+CONFIG_CMD_DETECT=y
+CONFIG_CMD_FLASH=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_LED=y
+CONFIG_CMD_NAND=y
+# CONFIG_CMD_NANDTEST is not set
+# CONFIG_CMD_NAND_BITFLIP is not set
+CONFIG_CMD_SPI=y
+CONFIG_CMD_LED_TRIGGER=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_USBGADGET=y
+
+#
+# Miscellaneous
+#
+# CONFIG_CMD_2048 is not set
+CONFIG_CMD_BAREBOX_UPDATE=y
+# CONFIG_CMD_FIRMWARELOAD is not set
+CONFIG_CMD_OF_DUMP=y
+CONFIG_CMD_OF_NODE=y
+CONFIG_CMD_OF_PROPERTY=y
+CONFIG_CMD_OF_DISPLAY_TIMINGS=y
+CONFIG_CMD_OF_FIXUP_STATUS=y
+CONFIG_CMD_OFTREE=y
+CONFIG_CMD_TIME=y
+# CONFIG_CMD_STATE is not set
+# CONFIG_CMD_DHRYSTONE is not set
+# CONFIG_CMD_SPD_DECODE is not set
+CONFIG_CMD_BOOTCHOOSER=y
+CONFIG_NET=y
+CONFIG_NET_NFS=y
+CONFIG_NET_NETCONSOLE=y
+CONFIG_NET_RESOLV=y
+CONFIG_NET_IFUP=y
+CONFIG_NET_DHCP=y
+# CONFIG_NET_SNTP is not set
+
+#
+# Drivers
+#
+CONFIG_OFTREE=y
+CONFIG_OFTREE_MEM_GENERIC=y
+CONFIG_DTC=y
+CONFIG_OFDEVICE=y
+CONFIG_OF_NET=y
+CONFIG_OF_GPIO=y
+CONFIG_OF_BAREBOX_DRIVERS=y
+# CONFIG_OF_BAREBOX_ENV_IN_FS is not set
+
+#
+# serial drivers
+#
+# CONFIG_DRIVER_SERIAL_ARM_DCC is not set
+CONFIG_DRIVER_SERIAL_NS16550=y
+CONFIG_DRIVER_SERIAL_NS16550_OMAP_EXTENSIONS=y
+# CONFIG_DRIVER_SERIAL_CADENCE is not set
+CONFIG_PHYLIB=y
+
+#
+# Network drivers
+#
+# CONFIG_DRIVER_NET_ARC_EMAC is not set
+# CONFIG_DRIVER_NET_CALXEDA_XGMAC is not set
+CONFIG_DRIVER_NET_CPSW=y
+# CONFIG_DRIVER_NET_DESIGNWARE is not set
+# CONFIG_DRIVER_NET_ENC28J60 is not set
+# CONFIG_DRIVER_NET_KS8851_MLL is not set
+# CONFIG_DRIVER_NET_MICREL is not set
+# CONFIG_DRIVER_NET_SMC911X is not set
+# CONFIG_DRIVER_NET_SMC91111 is not set
+
+#
+# phylib
+#
+
+#
+# MII PHY device drivers
+#
+# CONFIG_AT803X_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_MARVELL_PHY is not set
+CONFIG_MICREL_PHY=y
+# CONFIG_NATIONAL_PHY is not set
+# CONFIG_SMSC_PHY is not set
+
+#
+# MII bus device drivers
+#
+# CONFIG_MDIO_BITBANG is not set
+CONFIG_NET_USB=y
+CONFIG_NET_USB_ASIX=y
+CONFIG_NET_USB_SMSC95XX=y
+
+#
+# SPI drivers
+#
+CONFIG_SPI=y
+# CONFIG_DRIVER_SPI_GPIO is not set
+CONFIG_DRIVER_SPI_OMAP3=y
+CONFIG_I2C=y
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_DESIGNWARE is not set
+CONFIG_I2C_OMAP=y
+# CONFIG_I2C_MUX is not set
+CONFIG_MTD=y
+CONFIG_MTD_WRITE=y
+CONFIG_MTD_OOB_DEVICE=y
+# CONFIG_MTD_RAW_DEVICE is not set
+# CONFIG_MTD_CONCAT is not set
+
+#
+# MTD debug options
+#
+# CONFIG_MTD_PEB_DEBUG is not set
+
+#
+# Self contained MTD devices
+#
+# CONFIG_MTD_DATAFLASH is not set
+CONFIG_MTD_M25P80=y
+# CONFIG_MTD_SST25L is not set
+# CONFIG_MTD_DOCG3 is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_DRIVER_CFI is not set
+CONFIG_NAND=y
+CONFIG_NAND_ECC_SOFT=y
+# CONFIG_NAND_ECC_BCH is not set
+CONFIG_NAND_ECC_HW=y
+# CONFIG_NAND_ECC_HW_OOB_FIRST is not set
+CONFIG_NAND_ECC_HW_SYNDROME=y
+CONFIG_NAND_ECC_HW_NONE=y
+CONFIG_NAND_INFO=y
+CONFIG_NAND_READ_OOB=y
+CONFIG_NAND_BBT=y
+# CONFIG_NAND_ALLOW_ERASE_BAD is not set
+CONFIG_NAND_OMAP_GPMC=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DENALI is not set
+CONFIG_MTD_SPI_NOR=y
+# CONFIG_SPI_CADENCE_QUADSPI is not set
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTD_UBI_BEB_LIMIT=20
+# CONFIG_MTD_UBI_FASTMAP is not set
+
+#
+# UBI debugging options
+#
+# CONFIG_MTD_UBI_CHECK_IO is not set
+# CONFIG_MTD_UBI_GENERAL_EXTRA_CHECKS is not set
+CONFIG_DISK=y
+CONFIG_DISK_WRITE=y
+
+#
+# drive types
+#
+# CONFIG_DISK_ATA is not set
+# CONFIG_DISK_AHCI is not set
+
+#
+# interface types
+#
+# CONFIG_DISK_INTF_PLATFORM_IDE is not set
+CONFIG_USB=y
+CONFIG_USB_HOST=y
+# CONFIG_USB_EHCI is not set
+# CONFIG_USB_XHCI is not set
+# CONFIG_USB_ULPI is not set
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+
+#
+# USB Gadget drivers
+#
+CONFIG_USB_GADGET_DFU=y
+CONFIG_USB_GADGET_SERIAL=y
+CONFIG_USB_GADGET_FASTBOOT=y
+CONFIG_USB_MUSB=y
+CONFIG_USB_MUSB_DSPS=y
+CONFIG_USB_MUSB_AM335X=y
+CONFIG_USB_MUSB_HOST=y
+CONFIG_USB_MUSB_GADGET=y
+# CONFIG_VIDEO is not set
+CONFIG_MCI=y
+
+#
+# --- Feature list ---
+#
+CONFIG_MCI_STARTUP=y
+CONFIG_MCI_INFO=y
+CONFIG_MCI_WRITE=y
+# CONFIG_MCI_MMC_BOOT_PARTITIONS is not set
+
+#
+# --- MCI host drivers ---
+#
+# CONFIG_MCI_DW is not set
+CONFIG_MCI_OMAP_HSMMC=y
+# CONFIG_MCI_SPI is not set
+CONFIG_CLOCKSOURCE_DUMMY_RATE=1000
+
+#
+# MFD
+#
+# CONFIG_MFD_ACT8846 is not set
+# CONFIG_MFD_DA9053 is not set
+# CONFIG_MFD_DA9063 is not set
+# CONFIG_MFD_LP3972 is not set
+# CONFIG_MFD_MC13XXX is not set
+# CONFIG_MFD_MC34704 is not set
+# CONFIG_MFD_MC9SDZ60 is not set
+# CONFIG_MFD_STMPE is not set
+# CONFIG_MFD_SYSCON is not set
+# CONFIG_MFD_TWL4030 is not set
+# CONFIG_MFD_TWL6030 is not set
+
+#
+# Misc devices
+#
+# CONFIG_JTAG is not set
+# CONFIG_SRAM is not set
+# CONFIG_STATE_DRV is not set
+CONFIG_BOOTSTATE_DRV=y
+CONFIG_LED=y
+CONFIG_LED_GPIO=y
+CONFIG_LED_GPIO_OF=y
+# CONFIG_LED_GPIO_RGB is not set
+# CONFIG_LED_GPIO_BICOLOR is not set
+CONFIG_LED_TRIGGERS=y
+
+#
+# EEPROM support
+#
+# CONFIG_EEPROM_AT25 is not set
+CONFIG_EEPROM_AT24=y
+
+#
+# Input device support
+#
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_KEYBOARD_QT1070 is not set
+# CONFIG_KEYBOARD_USB is not set
+# CONFIG_WATCHDOG is not set
+# CONFIG_PWM is not set
+
+#
+# DMA support
+#
+CONFIG_GPIOLIB=y
+
+#
+# GPIO
+#
+CONFIG_GPIO_GENERIC=y
+# CONFIG_GPIO_74164 is not set
+CONFIG_GPIO_GENERIC_PLATFORM=y
+# CONFIG_GPIO_IMX is not set
+# CONFIG_GPIO_MXS is not set
+CONFIG_GPIO_OMAP=y
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_DESIGNWARE is not set
+# CONFIG_W1 is not set
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_SINGLE=y
+
+#
+# Bus devices
+#
+CONFIG_BUS_OMAP_GPMC=y
+# CONFIG_REGULATOR is not set
+# CONFIG_RESET_CONTROLLER is not set
+# CONFIG_RTC_CLASS is not set
+
+#
+# Firmware Drivers
+#
+# CONFIG_FIRMWARE_ALTERA_SERIAL is not set
+
+#
+# PHY Subsystem
+#
+CONFIG_GENERIC_PHY=y
+# CONFIG_CRYPTO_HW is not set
+
+#
+# Filesystem support
+#
+CONFIG_FS=y
+CONFIG_FS_AUTOMOUNT=y
+# CONFIG_FS_CRAMFS is not set
+CONFIG_FS_EXT4=y
+CONFIG_FS_RAMFS=y
+CONFIG_FS_DEVFS=y
+CONFIG_FS_TFTP=y
+CONFIG_FS_NFS=y
+CONFIG_FS_FAT=y
+CONFIG_FS_FAT_WRITE=y
+CONFIG_FS_FAT_LFN=y
+# CONFIG_FS_UBIFS is not set
+# CONFIG_FS_BPKFS is not set
+# CONFIG_FS_UIMAGEFS is not set
+# CONFIG_FS_PSTORE is not set
+# CONFIG_FS_SQUASHFS is not set
+
+#
+# Library routines
+#
+CONFIG_PARAMETER=y
+CONFIG_UNCOMPRESS=y
+# CONFIG_ZLIB is not set
+# CONFIG_BZLIB is not set
+# CONFIG_LZ4_DECOMPRESS is not set
+# CONFIG_XZ_DECOMPRESS is not set
+# CONFIG_GENERIC_FIND_NEXT_BIT is not set
+CONFIG_PROCESS_ESCAPE_SEQUENCE=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_QSORT=y
+CONFIG_LIBSCAN=y
+CONFIG_LIBUBIGEN=y
+
+#
+# Library gui routines
+#
+# CONFIG_BAREBOX_LOGO is not set
+
+#
+# Crypto support
+#
+CONFIG_CRC32=y
+CONFIG_CRC16=y
+CONFIG_DIGEST=y
+CONFIG_MD5=y
+CONFIG_DIGEST_MD5_GENERIC=y
+# CONFIG_DIGEST_SHA1_GENERIC is not set
+# CONFIG_DIGEST_SHA224_GENERIC is not set
+# CONFIG_DIGEST_SHA256_GENERIC is not set
+# CONFIG_DIGEST_SHA384_GENERIC is not set
+# CONFIG_DIGEST_SHA512_GENERIC is not set
+# CONFIG_DIGEST_HMAC_GENERIC is not set
+# CONFIG_DIGEST_SHA1_ARM is not set
+# CONFIG_DIGEST_SHA256_ARM is not set
+# CONFIG_CRYPTO_KEYSTORE is not set
diff --git a/configs/platform-v7a/barebox_mlo.config b/configs/platform-v7a/barebox_mlo.config
new file mode 100644
index 0000000..39dd4a5
--- /dev/null
+++ b/configs/platform-v7a/barebox_mlo.config
@@ -0,0 +1,366 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Barebox/arm 2016.05.0 Configuration
+#
+CONFIG_ARM=y
+CONFIG_ARM_USE_COMPRESSED_DTB=y
+
+#
+# System Type
+#
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_BCM2835 is not set
+# CONFIG_ARCH_BCM2836 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_DIGIC is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_HIGHBANK is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_MVEBU is not set
+# CONFIG_ARCH_MXS is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_NOMADIK is not set
+CONFIG_ARCH_OMAP=y
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_ROCKCHIP is not set
+# CONFIG_ARCH_SOCFPGA is not set
+# CONFIG_ARCH_S3C24xx is not set
+# CONFIG_ARCH_S5PCxx is not set
+# CONFIG_ARCH_S3C64xx is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_VEXPRESS is not set
+# CONFIG_ARCH_TEGRA is not set
+# CONFIG_ARCH_UEMD is not set
+# CONFIG_ARCH_ZYNQ is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_V7=y
+CONFIG_CPU_32v7=y
+
+#
+# processor features
+#
+# CONFIG_BOOT_ENDIANNESS_SWITCH is not set
+CONFIG_BAREBOX_MAX_IMAGE_SIZE=0xffffffff
+
+#
+# OMAP Features
+#
+CONFIG_ARCH_AM33XX=y
+CONFIG_OMAP_CLOCK_SOURCE_DMTIMER=y
+CONFIG_OMAP_GPMC=y
+CONFIG_OMAP_BUILD_IFT=y
+# CONFIG_OMAP_BUILD_SPI is not set
+CONFIG_OMAP_SERIALBOOT=y
+CONFIG_OMAP_MULTI_BOARDS=y
+CONFIG_MACH_AFI_GF=y
+# CONFIG_MACH_BEAGLE is not set
+CONFIG_MACH_BEAGLEBONE=y
+CONFIG_MACH_PHYTEC_SOM_AM335X=y
+CONFIG_ARM_ASM_UNIFIED=y
+CONFIG_AEABI=y
+CONFIG_THUMB2_BAREBOX=y
+
+#
+# ARM specific settings
+#
+# CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS is not set
+CONFIG_ARM_EXCEPTIONS=y
+# CONFIG_ARM_UNWIND is not set
+# CONFIG_ARM_SEMIHOSTING is not set
+CONFIG_DEFCONFIG_LIST="$ARCH_DEFCONFIG"
+CONFIG_HAS_KALLSYMS=y
+CONFIG_HAS_MODULES=y
+CONFIG_HAS_CACHE=y
+CONFIG_HAS_DMA=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_BLOCK=y
+CONFIG_FILETYPE=y
+
+#
+# General Settings
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_BANNER=y
+# CONFIG_MEMINFO is not set
+# CONFIG_ENVIRONMENT_VARIABLES is not set
+
+#
+# memory layout
+#
+CONFIG_HAVE_PBL_IMAGE=y
+CONFIG_HAVE_PBL_MULTI_IMAGES=y
+CONFIG_HAVE_IMAGE_COMPRESSION=y
+CONFIG_PBL_IMAGE=y
+CONFIG_PBL_MULTI_IMAGES=y
+CONFIG_PBL_RELOCATABLE=y
+CONFIG_IMAGE_COMPRESSION=y
+# CONFIG_IMAGE_COMPRESSION_LZ4 is not set
+CONFIG_IMAGE_COMPRESSION_LZO=y
+# CONFIG_IMAGE_COMPRESSION_GZIP is not set
+# CONFIG_IMAGE_COMPRESSION_XZKERN is not set
+# CONFIG_IMAGE_COMPRESSION_NONE is not set
+CONFIG_MMU=y
+CONFIG_MMU_EARLY=y
+CONFIG_HAVE_CONFIGURABLE_TEXT_BASE=y
+CONFIG_TEXT_BASE=0x0
+CONFIG_BAREBOX_MAX_PBL_SIZE=0xffffffff
+CONFIG_BAREBOX_MAX_BARE_INIT_SIZE=0xffffffff
+CONFIG_BAREBOX_MAX_PBLX_SIZE=0xffffffff
+CONFIG_STACK_SIZE=0x8000
+CONFIG_MALLOC_SIZE=0x0
+# CONFIG_EXPERIMENTAL is not set
+# CONFIG_MALLOC_DLMALLOC is not set
+CONFIG_MALLOC_TLSF=y
+# CONFIG_MALLOC_DUMMY is not set
+# CONFIG_KALLSYMS is not set
+CONFIG_RELOCATABLE=y
+# CONFIG_PANIC_HANG is not set
+CONFIG_PROMPT="MLO>"
+CONFIG_BAUDRATE=115200
+CONFIG_SIMPLE_READLINE=y
+CONFIG_CBSIZE=1024
+# CONFIG_SHELL_HUSH is not set
+# CONFIG_SHELL_SIMPLE is not set
+CONFIG_SHELL_NONE=y
+# CONFIG_GLOB is not set
+# CONFIG_PASSWORD is not set
+# CONFIG_ERRNO_MESSAGES is not set
+# CONFIG_TIMESTAMP is not set
+# CONFIG_IMD is not set
+# CONFIG_KERNEL_INSTALL_TARGET is not set
+CONFIG_CONSOLE_FULL=y
+# CONFIG_CONSOLE_SIMPLE is not set
+# CONFIG_CONSOLE_NONE is not set
+# CONFIG_CONSOLE_ACTIVATE_FIRST is not set
+# CONFIG_CONSOLE_ACTIVATE_ALL is not set
+CONFIG_CONSOLE_ACTIVATE_NONE=y
+# CONFIG_PBL_CONSOLE is not set
+# CONFIG_CONSOLE_RATP is not set
+CONFIG_PARTITION=y
+CONFIG_PARTITION_DISK=y
+CONFIG_PARTITION_DISK_DOS=y
+# CONFIG_PARTITION_DISK_EFI is not set
+# CONFIG_DEFAULT_ENVIRONMENT is not set
+# CONFIG_DEFAULT_COMPRESSION_LZO is not set
+CONFIG_DEFAULT_COMPRESSION_NONE=y
+CONFIG_HAVE_DEFAULT_ENVIRONMENT_NEW=y
+# CONFIG_BAREBOXENV_TARGET is not set
+# CONFIG_BAREBOXCRC32_TARGET is not set
+# CONFIG_POLLER is not set
+
+#
+# Debugging
+#
+CONFIG_COMPILE_LOGLEVEL=6
+CONFIG_DEFAULT_LOGLEVEL=7
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_LL is not set
+CONFIG_DEBUG_OMAP_UART_PORT=1
+# CONFIG_DEBUG_INITCALLS is not set
+CONFIG_HAS_DEBUG_LL=y
+# CONFIG_HAS_POWEROFF is not set
+# CONFIG_NET is not set
+
+#
+# Drivers
+#
+CONFIG_OFTREE=y
+CONFIG_OFTREE_MEM_GENERIC=y
+CONFIG_DTC=y
+CONFIG_OFDEVICE=y
+CONFIG_OF_GPIO=y
+
+#
+# serial drivers
+#
+# CONFIG_DRIVER_SERIAL_ARM_DCC is not set
+CONFIG_DRIVER_SERIAL_NS16550=y
+CONFIG_DRIVER_SERIAL_NS16550_OMAP_EXTENSIONS=y
+# CONFIG_DRIVER_SERIAL_CADENCE is not set
+
+#
+# SPI drivers
+#
+CONFIG_SPI=y
+# CONFIG_DRIVER_SPI_GPIO is not set
+CONFIG_DRIVER_SPI_OMAP3=y
+# CONFIG_I2C is not set
+CONFIG_MTD=y
+# CONFIG_MTD_WRITE is not set
+# CONFIG_MTD_OOB_DEVICE is not set
+# CONFIG_MTD_RAW_DEVICE is not set
+# CONFIG_MTD_CONCAT is not set
+
+#
+# MTD debug options
+#
+# CONFIG_MTD_PEB_DEBUG is not set
+
+#
+# Self contained MTD devices
+#
+# CONFIG_MTD_DATAFLASH is not set
+CONFIG_MTD_M25P80=y
+# CONFIG_MTD_SST25L is not set
+# CONFIG_MTD_DOCG3 is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_DRIVER_CFI is not set
+CONFIG_NAND=y
+# CONFIG_NAND_ECC_SOFT is not set
+# CONFIG_NAND_ECC_BCH is not set
+CONFIG_NAND_ECC_HW=y
+# CONFIG_NAND_ECC_HW_OOB_FIRST is not set
+# CONFIG_NAND_ECC_HW_SYNDROME is not set
+# CONFIG_NAND_ECC_HW_NONE is not set
+# CONFIG_NAND_INFO is not set
+# CONFIG_NAND_BBT is not set
+CONFIG_NAND_OMAP_GPMC=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DENALI is not set
+CONFIG_MTD_SPI_NOR=y
+# CONFIG_SPI_CADENCE_QUADSPI is not set
+# CONFIG_MTD_UBI is not set
+CONFIG_DISK=y
+# CONFIG_DISK_WRITE is not set
+
+#
+# drive types
+#
+# CONFIG_DISK_ATA is not set
+# CONFIG_DISK_AHCI is not set
+
+#
+# interface types
+#
+# CONFIG_DISK_INTF_PLATFORM_IDE is not set
+# CONFIG_USB_HOST is not set
+# CONFIG_USB_GADGET is not set
+# CONFIG_USB_MUSB is not set
+# CONFIG_VIDEO is not set
+CONFIG_MCI=y
+
+#
+# --- Feature list ---
+#
+# CONFIG_MCI_STARTUP is not set
+# CONFIG_MCI_WRITE is not set
+# CONFIG_MCI_MMC_BOOT_PARTITIONS is not set
+
+#
+# --- MCI host drivers ---
+#
+# CONFIG_MCI_DW is not set
+CONFIG_MCI_OMAP_HSMMC=y
+# CONFIG_MCI_SPI is not set
+CONFIG_CLOCKSOURCE_DUMMY_RATE=1000
+
+#
+# MFD
+#
+# CONFIG_MFD_MC13XXX is not set
+# CONFIG_MFD_SYSCON is not set
+
+#
+# Misc devices
+#
+# CONFIG_JTAG is not set
+# CONFIG_SRAM is not set
+# CONFIG_LED is not set
+
+#
+# EEPROM support
+#
+# CONFIG_EEPROM_AT25 is not set
+
+#
+# Input device support
+#
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_WATCHDOG is not set
+# CONFIG_PWM is not set
+
+#
+# DMA support
+#
+CONFIG_GPIOLIB=y
+
+#
+# GPIO
+#
+# CONFIG_GPIO_74164 is not set
+# CONFIG_GPIO_GENERIC_PLATFORM is not set
+# CONFIG_GPIO_IMX is not set
+# CONFIG_GPIO_MXS is not set
+CONFIG_GPIO_OMAP=y
+# CONFIG_GPIO_DESIGNWARE is not set
+# CONFIG_W1 is not set
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_SINGLE=y
+
+#
+# Bus devices
+#
+CONFIG_BUS_OMAP_GPMC=y
+# CONFIG_REGULATOR is not set
+# CONFIG_RESET_CONTROLLER is not set
+# CONFIG_RTC_CLASS is not set
+
+#
+# Firmware Drivers
+#
+# CONFIG_FIRMWARE_ALTERA_SERIAL is not set
+
+#
+# PHY Subsystem
+#
+# CONFIG_GENERIC_PHY is not set
+# CONFIG_CRYPTO_HW is not set
+
+#
+# Filesystem support
+#
+CONFIG_FS=y
+# CONFIG_FS_CRAMFS is not set
+# CONFIG_FS_EXT4 is not set
+CONFIG_FS_RAMFS=y
+# CONFIG_FS_DEVFS is not set
+CONFIG_FS_FAT=y
+# CONFIG_FS_FAT_WRITE is not set
+CONFIG_FS_FAT_LFN=y
+# CONFIG_FS_BPKFS is not set
+# CONFIG_FS_UIMAGEFS is not set
+# CONFIG_FS_PSTORE is not set
+# CONFIG_FS_SQUASHFS is not set
+
+#
+# Library routines
+#
+CONFIG_UNCOMPRESS=y
+# CONFIG_ZLIB is not set
+# CONFIG_BZLIB is not set
+# CONFIG_LZ4_DECOMPRESS is not set
+# CONFIG_XZ_DECOMPRESS is not set
+# CONFIG_GENERIC_FIND_NEXT_BIT is not set
+# CONFIG_PROCESS_ESCAPE_SEQUENCE is not set
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_XYMODEM=y
+
+#
+# Library gui routines
+#
+# CONFIG_BAREBOX_LOGO is not set
+# CONFIG_BOOTSTRAP is not set
+
+#
+# Crypto support
+#
+CONFIG_CRC16=y
+# CONFIG_DIGEST is not set
+# CONFIG_CRYPTO_KEYSTORE is not set
diff --git a/configs/platform-v7a/config/images/boot-vfat.config b/configs/platform-v7a/config/images/boot-vfat.config
new file mode 100644
index 0000000..7d29c76
--- /dev/null
+++ b/configs/platform-v7a/config/images/boot-vfat.config
@@ -0,0 +1,10 @@
+image @IMAGE@ {
+ vfat {
+ files = { @FIRMWARE_RPI2@ }
+ file MLO { image = "barebox-am33xx-beaglebone-mlo.img"}
+ file barebox.bin-rpi2 { image = barebox.bin-rpi2 }
+ file barebox.bin { image = "barebox-am33xx-beaglebone.img" }
+ }
+ name = boot-mlo
+ size = 32M
+}
diff --git a/configs/platform-v7a/config/images/hd.config b/configs/platform-v7a/config/images/hd.config
new file mode 100644
index 0000000..4ff3363
--- /dev/null
+++ b/configs/platform-v7a/config/images/hd.config
@@ -0,0 +1,18 @@
+
+@BOOTLOADER_IMAGES@
+
+image @IMAGE@ {
+ hdimage {
+ align = 1M
+ }
+ @BOOTLOADER_PARTITIONS@
+ partition root-A {
+ image = root.ext2
+ partition-type = 0x83
+ size = 512M
+ }
+ partition data {
+ partition-type = 0x83
+ size = 512M
+ }
+}
diff --git a/configs/platform-v7a/kernelconfig b/configs/platform-v7a/kernelconfig
new file mode 100644
index 0000000..75fb8be
--- /dev/null
+++ b/configs/platform-v7a/kernelconfig
@@ -0,0 +1,2942 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Linux/arm 4.6.0 Kernel Configuration
+#
+CONFIG_ARM=y
+CONFIG_ARM_HAS_SG_CHAIN=y
+CONFIG_MIGHT_HAVE_PCI=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_HAVE_PROC_CPU=y
+CONFIG_NO_IOPORT_MAP=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_ARCH_HAS_BANDGAP=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_ARCH_SUPPORTS_UPROBES=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_GENERIC_BUG=y
+CONFIG_PGTABLE_LEVELS=2
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_IRQ_WORK=y
+CONFIG_BUILDTIME_EXTABLE_SORT=y
+
+#
+# General setup
+#
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_CROSS_COMPILE=""
+# CONFIG_COMPILE_TEST is not set
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_XZ=y
+CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_HAVE_KERNEL_LZ4=y
+# CONFIG_KERNEL_GZIP is not set
+CONFIG_KERNEL_LZMA=y
+# CONFIG_KERNEL_XZ is not set
+# CONFIG_KERNEL_LZO is not set
+# CONFIG_KERNEL_LZ4 is not set
+CONFIG_DEFAULT_HOSTNAME="(none)"
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_FHANDLE=y
+CONFIG_USELIB=y
+CONFIG_AUDIT=y
+CONFIG_HAVE_ARCH_AUDITSYSCALL=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT_WATCH=y
+CONFIG_AUDIT_TREE=y
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_HANDLE_DOMAIN_IRQ=y
+# CONFIG_IRQ_DOMAIN_DEBUG is not set
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_SPARSE_IRQ=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_ARCH_HAS_TICK_BROADCAST=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+
+#
+# Timers subsystem
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ_COMMON=y
+# CONFIG_HZ_PERIODIC is not set
+CONFIG_NO_HZ_IDLE=y
+# CONFIG_NO_HZ_FULL is not set
+# CONFIG_NO_HZ is not set
+CONFIG_HIGH_RES_TIMERS=y
+
+#
+# CPU/Task time and stats accounting
+#
+CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
+# CONFIG_IRQ_TIME_ACCOUNTING is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+
+#
+# RCU Subsystem
+#
+CONFIG_TREE_RCU=y
+# CONFIG_RCU_EXPERT is not set
+CONFIG_SRCU=y
+# CONFIG_TASKS_RCU is not set
+CONFIG_RCU_STALL_COMMON=y
+# CONFIG_TREE_RCU_TRACE is not set
+# CONFIG_RCU_EXPEDITE_BOOT is not set
+CONFIG_BUILD_BIN2C=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=16
+CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
+CONFIG_GENERIC_SCHED_CLOCK=y
+CONFIG_CGROUPS=y
+CONFIG_PAGE_COUNTER=y
+CONFIG_MEMCG=y
+CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_SWAP_ENABLED=y
+CONFIG_BLK_CGROUP=y
+# CONFIG_DEBUG_BLK_CGROUP is not set
+CONFIG_CGROUP_WRITEBACK=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_CFS_BANDWIDTH=y
+CONFIG_RT_GROUP_SCHED=y
+# CONFIG_CGROUP_PIDS is not set
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_CGROUP_PERF=y
+# CONFIG_CGROUP_DEBUG is not set
+# CONFIG_CHECKPOINT_RESTORE is not set
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_IPC_NS=y
+# CONFIG_USER_NS is not set
+CONFIG_PID_NS=y
+CONFIG_NET_NS=y
+# CONFIG_SCHED_AUTOGROUP is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+# CONFIG_RD_BZIP2 is not set
+# CONFIG_RD_LZMA is not set
+CONFIG_RD_XZ=y
+CONFIG_RD_LZO=y
+# CONFIG_RD_LZ4 is not set
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_HAVE_UID16=y
+CONFIG_BPF=y
+CONFIG_EXPERT=y
+CONFIG_UID16=y
+CONFIG_MULTIUSER=y
+# CONFIG_SGETMASK_SYSCALL is not set
+CONFIG_SYSFS_SYSCALL=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_ALL=y
+# CONFIG_KALLSYMS_ABSOLUTE_PERCPU is not set
+CONFIG_KALLSYMS_BASE_RELATIVE=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+# CONFIG_BPF_SYSCALL is not set
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_ADVISE_SYSCALLS=y
+# CONFIG_USERFAULTFD is not set
+CONFIG_MEMBARRIER=y
+CONFIG_EMBEDDED=y
+CONFIG_HAVE_PERF_EVENTS=y
+CONFIG_PERF_USE_VMALLOC=y
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_PERF_EVENTS=y
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLUB_DEBUG=y
+CONFIG_COMPAT_BRK=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_SLUB_CPU_PARTIAL=y
+# CONFIG_SYSTEM_DATA_VERIFICATION is not set
+# CONFIG_PROFILING is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+# CONFIG_JUMP_LABEL is not set
+# CONFIG_UPROBES is not set
+# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_ARCH_USE_BUILTIN_BSWAP=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_OPTPROBES=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_PERF_REGS=y
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_CC_STACKPROTECTOR=y
+# CONFIG_CC_STACKPROTECTOR is not set
+CONFIG_CC_STACKPROTECTOR_NONE=y
+# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
+# CONFIG_CC_STACKPROTECTOR_STRONG is not set
+CONFIG_HAVE_CONTEXT_TRACKING=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
+CONFIG_ARCH_MMAP_RND_BITS_MIN=8
+CONFIG_ARCH_MMAP_RND_BITS_MAX=16
+CONFIG_ARCH_MMAP_RND_BITS=8
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OLD_SIGACTION=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_FORCE_LOAD=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_MODULE_SIG is not set
+# CONFIG_MODULE_COMPRESS is not set
+CONFIG_MODULES_TREE_LOOKUP=y
+CONFIG_BLOCK=y
+CONFIG_LBDAF=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_BSGLIB is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+# CONFIG_BLK_DEV_THROTTLING is not set
+# CONFIG_BLK_CMDLINE_PARSER is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_EFI_PARTITION=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+CONFIG_INLINE_READ_UNLOCK=y
+CONFIG_INLINE_READ_UNLOCK_IRQ=y
+CONFIG_INLINE_WRITE_UNLOCK=y
+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_FREEZER=y
+
+#
+# System Type
+#
+CONFIG_MMU=y
+CONFIG_ARCH_MULTIPLATFORM=y
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_GEMINI is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_DOVE is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_W90X900 is not set
+# CONFIG_ARCH_LPC32XX is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C24XX is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP1 is not set
+
+#
+# Multiple platform selection
+#
+
+#
+# CPU Core family selection
+#
+# CONFIG_ARCH_MULTI_V6 is not set
+CONFIG_ARCH_MULTI_V7=y
+CONFIG_ARCH_MULTI_V6_V7=y
+# CONFIG_ARCH_MULTI_CPU_AUTO is not set
+# CONFIG_ARCH_VIRT is not set
+# CONFIG_ARCH_MVEBU is not set
+# CONFIG_ARCH_ALPINE is not set
+# CONFIG_ARCH_ARTPEC is not set
+# CONFIG_ARCH_AT91 is not set
+CONFIG_ARCH_BCM=y
+
+#
+# IPROC architected SoCs
+#
+# CONFIG_ARCH_BCM_CYGNUS is not set
+# CONFIG_ARCH_BCM_NSP is not set
+# CONFIG_ARCH_BCM_5301X is not set
+
+#
+# KONA architected SoCs
+#
+# CONFIG_ARCH_BCM_281XX is not set
+# CONFIG_ARCH_BCM_21664 is not set
+
+#
+# Other Architectures
+#
+CONFIG_ARCH_BCM2835=y
+# CONFIG_ARCH_BCM_63XX is not set
+# CONFIG_ARCH_BRCMSTB is not set
+# CONFIG_ARCH_BERLIN is not set
+# CONFIG_ARCH_DIGICOLOR is not set
+# CONFIG_ARCH_HIGHBANK is not set
+# CONFIG_ARCH_HISI is not set
+# CONFIG_ARCH_KEYSTONE is not set
+# CONFIG_ARCH_MESON is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_MEDIATEK is not set
+CONFIG_ARCH_OMAP=y
+
+#
+# TI OMAP Common Features
+#
+
+#
+# OMAP Feature Selections
+#
+CONFIG_OMAP_RESET_CLOCKS=y
+CONFIG_OMAP_MUX=y
+CONFIG_OMAP_MUX_DEBUG=y
+CONFIG_OMAP_MUX_WARNINGS=y
+CONFIG_OMAP_32K_TIMER=y
+CONFIG_OMAP_DM_TIMER=y
+CONFIG_OMAP_PM_NOOP=y
+CONFIG_MACH_OMAP_GENERIC=y
+
+#
+# TI OMAP/AM/DM/DRA Family
+#
+# CONFIG_ARCH_OMAP3 is not set
+# CONFIG_ARCH_OMAP4 is not set
+# CONFIG_SOC_OMAP5 is not set
+CONFIG_SOC_AM33XX=y
+# CONFIG_SOC_AM43XX is not set
+# CONFIG_SOC_DRA7XX is not set
+CONFIG_ARCH_OMAP2PLUS=y
+
+#
+# TI OMAP2/3/4 Specific Features
+#
+# CONFIG_ARCH_OMAP2PLUS_TYPICAL is not set
+# CONFIG_SOC_HAS_OMAP2_SDRC is not set
+
+#
+# OMAP Legacy Platform Data Board Type
+#
+# CONFIG_ARCH_MMP is not set
+# CONFIG_ARCH_QCOM is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_ROCKCHIP is not set
+# CONFIG_ARCH_SOCFPGA is not set
+# CONFIG_PLAT_SPEAR is not set
+# CONFIG_ARCH_STI is not set
+# CONFIG_ARCH_S5PV210 is not set
+# CONFIG_ARCH_EXYNOS is not set
+# CONFIG_ARCH_RENESAS is not set
+# CONFIG_ARCH_SUNXI is not set
+# CONFIG_ARCH_SIRF is not set
+# CONFIG_ARCH_TANGO is not set
+# CONFIG_ARCH_TEGRA is not set
+# CONFIG_ARCH_UNIPHIER is not set
+# CONFIG_ARCH_U8500 is not set
+CONFIG_ARCH_VEXPRESS=y
+CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y
+CONFIG_ARCH_VEXPRESS_SPC=y
+# CONFIG_ARCH_WM8850 is not set
+# CONFIG_ARCH_ZX is not set
+# CONFIG_ARCH_ZYNQ is not set
+CONFIG_PLAT_VERSATILE=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_V7=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_PABRT_V7=y
+CONFIG_CPU_CACHE_V7=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_TLB_V7=y
+CONFIG_CPU_HAS_ASID=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+# CONFIG_ARM_LPAE is not set
+# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
+CONFIG_ARM_THUMB=y
+CONFIG_ARM_THUMBEE=y
+CONFIG_ARM_VIRT_EXT=y
+CONFIG_SWP_EMULATE=y
+# CONFIG_CPU_BIG_ENDIAN is not set
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+CONFIG_KUSER_HELPERS=y
+CONFIG_VDSO=y
+CONFIG_OUTER_CACHE=y
+CONFIG_OUTER_CACHE_SYNC=y
+CONFIG_MIGHT_HAVE_CACHE_L2X0=y
+CONFIG_CACHE_L2X0=y
+CONFIG_PL310_ERRATA_588369=y
+CONFIG_PL310_ERRATA_727915=y
+CONFIG_PL310_ERRATA_753970=y
+# CONFIG_PL310_ERRATA_769419 is not set
+CONFIG_ARM_L1_CACHE_SHIFT_6=y
+CONFIG_ARM_L1_CACHE_SHIFT=6
+CONFIG_ARM_DMA_MEM_BUFFERABLE=y
+CONFIG_ARM_HEAVY_MB=y
+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
+CONFIG_DEBUG_RODATA=y
+CONFIG_DEBUG_ALIGN_RODATA=y
+CONFIG_MULTI_IRQ_HANDLER=y
+CONFIG_ARM_ERRATA_430973=y
+CONFIG_ARM_ERRATA_643719=y
+CONFIG_ARM_ERRATA_720789=y
+CONFIG_ARM_ERRATA_754322=y
+# CONFIG_ARM_ERRATA_754327 is not set
+# CONFIG_ARM_ERRATA_764369 is not set
+CONFIG_ARM_ERRATA_775420=y
+# CONFIG_ARM_ERRATA_798181 is not set
+# CONFIG_ARM_ERRATA_773022 is not set
+CONFIG_ICST=y
+
+#
+# Bus support
+#
+# CONFIG_PCI is not set
+# CONFIG_PCI_DOMAINS_GENERIC is not set
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_HAVE_SMP=y
+CONFIG_SMP=y
+CONFIG_SMP_ON_UP=y
+CONFIG_ARM_CPU_TOPOLOGY=y
+# CONFIG_SCHED_MC is not set
+# CONFIG_SCHED_SMT is not set
+CONFIG_HAVE_ARM_SCU=y
+CONFIG_HAVE_ARM_ARCH_TIMER=y
+CONFIG_HAVE_ARM_TWD=y
+# CONFIG_MCPM is not set
+# CONFIG_BIG_LITTLE is not set
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_3G_OPT is not set
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_NR_CPUS=4
+CONFIG_HOTPLUG_CPU=y
+# CONFIG_ARM_PSCI is not set
+CONFIG_ARCH_NR_GPIO=0
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_HZ_FIXED=0
+CONFIG_HZ_100=y
+# CONFIG_HZ_200 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_500 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=100
+CONFIG_SCHED_HRTICK=y
+# CONFIG_THUMB2_KERNEL is not set
+CONFIG_ARM_PATCH_IDIV=y
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+CONFIG_HAVE_ARCH_PFN_VALID=y
+CONFIG_HIGHMEM=y
+CONFIG_HIGHPTE=y
+CONFIG_CPU_SW_DOMAIN_PAN=y
+CONFIG_HW_PERF_EVENTS=y
+CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
+# CONFIG_ARM_MODULE_PLTS is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_HAVE_MEMBLOCK=y
+CONFIG_NO_BOOTMEM=y
+CONFIG_MEMORY_ISOLATION=y
+# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_COMPACTION=y
+CONFIG_MIGRATION=y
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_BOUNCE=y
+# CONFIG_KSM is not set
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+# CONFIG_CLEANCACHE is not set
+# CONFIG_FRONTSWAP is not set
+CONFIG_CMA=y
+# CONFIG_CMA_DEBUG is not set
+# CONFIG_CMA_DEBUGFS is not set
+CONFIG_CMA_AREAS=7
+# CONFIG_ZPOOL is not set
+# CONFIG_ZBUD is not set
+# CONFIG_ZSMALLOC is not set
+CONFIG_GENERIC_EARLY_IOREMAP=y
+# CONFIG_IDLE_PAGE_TRACKING is not set
+CONFIG_FORCE_MAX_ZONEORDER=12
+CONFIG_ALIGNMENT_TRAP=y
+# CONFIG_UACCESS_WITH_MEMCPY is not set
+CONFIG_SECCOMP=y
+CONFIG_SWIOTLB=y
+CONFIG_IOMMU_HELPER=y
+# CONFIG_PARAVIRT is not set
+# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
+# CONFIG_XEN is not set
+
+#
+# Boot options
+#
+CONFIG_USE_OF=y
+# CONFIG_ATAGS is not set
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+# CONFIG_ARM_APPENDED_DTB is not set
+CONFIG_CMDLINE=""
+# CONFIG_KEXEC is not set
+# CONFIG_CRASH_DUMP is not set
+CONFIG_AUTO_ZRELADDR=y
+# CONFIG_EFI is not set
+
+#
+# CPU Power Management
+#
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+
+#
+# CPU frequency scaling drivers
+#
+CONFIG_CPUFREQ_DT=y
+# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
+# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
+# CONFIG_ARM_OMAP2PLUS_CPUFREQ is not set
+# CONFIG_QORIQ_CPUFREQ is not set
+
+#
+# CPU Idle
+#
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_LADDER=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+
+#
+# ARM CPU Idle Drivers
+#
+# CONFIG_ARM_CPUIDLE is not set
+# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_VFP=y
+CONFIG_VFPv3=y
+CONFIG_NEON=y
+# CONFIG_KERNEL_MODE_NEON is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_BINFMT_SCRIPT=y
+# CONFIG_HAVE_AOUT is not set
+CONFIG_BINFMT_MISC=y
+CONFIG_COREDUMP=y
+
+#
+# Power management options
+#
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+# CONFIG_SUSPEND_SKIP_SYNC is not set
+# CONFIG_HIBERNATION is not set
+CONFIG_PM_SLEEP=y
+CONFIG_PM_SLEEP_SMP=y
+# CONFIG_PM_AUTOSLEEP is not set
+# CONFIG_PM_WAKELOCKS is not set
+CONFIG_PM=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_APM_EMULATION is not set
+CONFIG_PM_OPP=y
+CONFIG_PM_CLK=y
+CONFIG_PM_GENERIC_DOMAINS=y
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
+CONFIG_PM_GENERIC_DOMAINS_SLEEP=y
+CONFIG_PM_GENERIC_DOMAINS_OF=y
+CONFIG_CPU_PM=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARM_CPU_SUSPEND=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_NET=y
+CONFIG_NET_INGRESS=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_DIAG is not set
+CONFIG_UNIX=y
+# CONFIG_UNIX_DIAG is not set
+CONFIG_XFRM=y
+CONFIG_XFRM_ALGO=y
+CONFIG_XFRM_USER=y
+# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_XFRM_MIGRATE=y
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_NET_KEY=y
+CONFIG_NET_KEY_MIGRATE=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE_DEMUX is not set
+# CONFIG_NET_IP_TUNNEL is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_NET_IPVTI is not set
+# CONFIG_NET_UDP_TUNNEL is not set
+# CONFIG_NET_FOU is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_INET_UDP_DIAG is not set
+# CONFIG_INET_DIAG_DESTROY is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=y
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+# CONFIG_INET6_AH is not set
+# CONFIG_INET6_ESP is not set
+# CONFIG_INET6_IPCOMP is not set
+# CONFIG_IPV6_MIP6 is not set
+# CONFIG_IPV6_ILA is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET6_XFRM_MODE_BEET is not set
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+# CONFIG_IPV6_SIT is not set
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_GRE is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NET_PTP_CLASSIFY=y
+CONFIG_NETWORK_PHY_TIMESTAMPING=y
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_NETFILTER_ADVANCED=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_INGRESS=y
+# CONFIG_NETFILTER_NETLINK_ACCT is not set
+# CONFIG_NETFILTER_NETLINK_QUEUE is not set
+# CONFIG_NETFILTER_NETLINK_LOG is not set
+# CONFIG_NF_CONNTRACK is not set
+# CONFIG_NF_TABLES is not set
+# CONFIG_NETFILTER_XTABLES is not set
+# CONFIG_IP_SET is not set
+# CONFIG_IP_VS is not set
+
+#
+# IP: Netfilter Configuration
+#
+# CONFIG_NF_DEFRAG_IPV4 is not set
+# CONFIG_NF_DUP_IPV4 is not set
+# CONFIG_NF_LOG_ARP is not set
+# CONFIG_NF_LOG_IPV4 is not set
+# CONFIG_NF_REJECT_IPV4 is not set
+# CONFIG_IP_NF_IPTABLES is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# IPv6: Netfilter Configuration
+#
+# CONFIG_NF_DEFRAG_IPV6 is not set
+# CONFIG_NF_DUP_IPV6 is not set
+# CONFIG_NF_REJECT_IPV6 is not set
+# CONFIG_NF_LOG_IPV6 is not set
+# CONFIG_IP6_NF_IPTABLES is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_RDS is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_L2TP is not set
+# CONFIG_BRIDGE is not set
+CONFIG_HAVE_NET_DSA=y
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_PHONET is not set
+# CONFIG_6LOWPAN is not set
+# CONFIG_IEEE802154 is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_DCB is not set
+CONFIG_DNS_RESOLVER=y
+# CONFIG_BATMAN_ADV is not set
+# CONFIG_OPENVSWITCH is not set
+# CONFIG_VSOCKETS is not set
+# CONFIG_NETLINK_DIAG is not set
+# CONFIG_MPLS is not set
+# CONFIG_HSR is not set
+# CONFIG_NET_SWITCHDEV is not set
+# CONFIG_NET_L3_MASTER_DEV is not set
+CONFIG_RPS=y
+CONFIG_RFS_ACCEL=y
+CONFIG_XPS=y
+# CONFIG_SOCK_CGROUP_DATA is not set
+# CONFIG_CGROUP_NET_PRIO is not set
+# CONFIG_CGROUP_NET_CLASSID is not set
+CONFIG_NET_RX_BUSY_POLL=y
+CONFIG_BQL=y
+# CONFIG_BPF_JIT is not set
+CONFIG_NET_FLOW_LIMIT=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+# CONFIG_AF_KCM is not set
+# CONFIG_WIRELESS is not set
+# CONFIG_WIMAX is not set
+# CONFIG_RFKILL is not set
+# CONFIG_RFKILL_REGULATOR is not set
+# CONFIG_NET_9P is not set
+# CONFIG_CAIF is not set
+# CONFIG_CEPH_LIB is not set
+# CONFIG_NFC is not set
+# CONFIG_LWTUNNEL is not set
+# CONFIG_DST_CACHE is not set
+# CONFIG_NET_DEVLINK is not set
+CONFIG_MAY_USE_DEVLINK=y
+CONFIG_HAVE_BPF_JIT=y
+
+#
+# Device Drivers
+#
+CONFIG_ARM_AMBA=y
+
+#
+# Generic Driver Options
+#
+# CONFIG_UEVENT_HELPER is not set
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+# CONFIG_STANDALONE is not set
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+CONFIG_FW_LOADER=y
+CONFIG_FIRMWARE_IN_KERNEL=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
+# CONFIG_ALLOW_DEV_COREDUMP is not set
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_GENERIC_CPU_DEVICES is not set
+CONFIG_SOC_BUS=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_SPI=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_REGMAP_IRQ=y
+# CONFIG_DMA_SHARED_BUFFER is not set
+CONFIG_DMA_CMA=y
+
+#
+# Default contiguous memory area size:
+#
+CONFIG_CMA_SIZE_MBYTES=16
+CONFIG_CMA_SIZE_SEL_MBYTES=y
+# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
+# CONFIG_CMA_SIZE_SEL_MIN is not set
+# CONFIG_CMA_SIZE_SEL_MAX is not set
+CONFIG_CMA_ALIGNMENT=8
+
+#
+# Bus devices
+#
+# CONFIG_ARM_CCI400_PMU is not set
+# CONFIG_ARM_CCI5xx_PMU is not set
+# CONFIG_ARM_CCN is not set
+# CONFIG_BRCMSTB_GISB_ARB is not set
+CONFIG_OMAP_INTERCONNECT=y
+CONFIG_OMAP_OCP2SCP=y
+CONFIG_VEXPRESS_CONFIG=y
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_TESTS is not set
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+CONFIG_MTD_OF_PARTS=y
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_SM_FTL is not set
+# CONFIG_MTD_OOPS is not set
+# CONFIG_MTD_SWAP is not set
+# CONFIG_MTD_PARTITIONED_MASTER is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+# CONFIG_MTD_PHYSMAP_COMPAT is not set
+CONFIG_MTD_PHYSMAP_OF=y
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_SST25L is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOCG3 is not set
+CONFIG_MTD_NAND_ECC=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_BCH=y
+CONFIG_MTD_NAND_ECC_BCH=y
+# CONFIG_MTD_SM_COMMON is not set
+# CONFIG_MTD_NAND_DENALI_DT is not set
+# CONFIG_MTD_NAND_GPIO is not set
+CONFIG_MTD_NAND_OMAP2=y
+CONFIG_MTD_NAND_OMAP_BCH=y
+CONFIG_MTD_NAND_OMAP_BCH_BUILD=y
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_DOCG4 is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_BRCMNAND is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_NAND_HISI504 is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# LPDDR & LPDDR2 PCM memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+# CONFIG_MTD_LPDDR2_NVM is not set
+# CONFIG_MTD_SPI_NOR is not set
+# CONFIG_MTD_UBI is not set
+CONFIG_DTC=y
+CONFIG_OF=y
+# CONFIG_OF_UNITTEST is not set
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_DYNAMIC=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_NET=y
+CONFIG_OF_MDIO=y
+CONFIG_OF_MTD=y
+CONFIG_OF_RESERVED_MEM=y
+CONFIG_OF_RESOLVE=y
+CONFIG_OF_OVERLAY=y
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_NULL_BLK is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_DRBD is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=16384
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_MG_DISK is not set
+# CONFIG_VIRTIO_BLK is not set
+# CONFIG_BLK_DEV_RBD is not set
+
+#
+# Misc devices
+#
+# CONFIG_SENSORS_LIS3LV02D is not set
+# CONFIG_AD525X_DPOT is not set
+# CONFIG_DUMMY_IRQ is not set
+# CONFIG_ICS932S401 is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_APDS9802ALS is not set
+# CONFIG_ISL29003 is not set
+# CONFIG_ISL29020 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_SENSORS_BH1780 is not set
+# CONFIG_SENSORS_BH1770 is not set
+# CONFIG_SENSORS_APDS990X is not set
+# CONFIG_HMC6352 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_TI_DAC7512 is not set
+# CONFIG_ARM_CHARLCD is not set
+# CONFIG_BMP085_I2C is not set
+# CONFIG_BMP085_SPI is not set
+# CONFIG_USB_SWITCH_FSA9480 is not set
+# CONFIG_LATTICE_ECP3_CONFIG is not set
+# CONFIG_SRAM is not set
+CONFIG_VEXPRESS_SYSCFG=y
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+# CONFIG_EEPROM_AT24 is not set
+# CONFIG_EEPROM_AT25 is not set
+# CONFIG_EEPROM_LEGACY is not set
+# CONFIG_EEPROM_MAX6875 is not set
+CONFIG_EEPROM_93CX6=y
+# CONFIG_EEPROM_93XX46 is not set
+
+#
+# Texas Instruments shared transport line discipline
+#
+# CONFIG_TI_ST is not set
+# CONFIG_SENSORS_LIS3_SPI is not set
+# CONFIG_SENSORS_LIS3_I2C is not set
+
+#
+# Altera FPGA firmware download module
+#
+# CONFIG_ALTERA_STAPL is not set
+
+#
+# Intel MIC Bus Driver
+#
+
+#
+# SCIF Bus Driver
+#
+
+#
+# VOP Bus Driver
+#
+
+#
+# Intel MIC Host Driver
+#
+
+#
+# Intel MIC Card Driver
+#
+
+#
+# SCIF Driver
+#
+
+#
+# Intel MIC Coprocessor State Management (COSM) Drivers
+#
+
+#
+# VOP Driver
+#
+# CONFIG_ECHO is not set
+# CONFIG_CXL_BASE is not set
+# CONFIG_CXL_KERNEL_API is not set
+# CONFIG_CXL_EEH is not set
+
+#
+# SCSI device support
+#
+CONFIG_SCSI_MOD=y
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_DMA is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_HAVE_PATA_PLATFORM=y
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+CONFIG_MII=y
+CONFIG_NET_CORE=y
+# CONFIG_BONDING is not set
+# CONFIG_DUMMY is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_NET_TEAM is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_IPVLAN is not set
+# CONFIG_VXLAN is not set
+# CONFIG_MACSEC is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_TUN is not set
+# CONFIG_TUN_VNET_CROSS_LE is not set
+# CONFIG_VETH is not set
+# CONFIG_VIRTIO_NET is not set
+# CONFIG_NLMON is not set
+
+#
+# CAIF transport drivers
+#
+# CONFIG_VHOST_NET is not set
+# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
+
+#
+# Distributed Switch Architecture drivers
+#
+# CONFIG_NET_DSA_MV88E6XXX is not set
+# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
+CONFIG_ETHERNET=y
+# CONFIG_ALTERA_TSE is not set
+# CONFIG_NET_VENDOR_ARC is not set
+# CONFIG_NET_VENDOR_AURORA is not set
+# CONFIG_NET_CADENCE is not set
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_VENDOR_CIRRUS is not set
+# CONFIG_DM9000 is not set
+# CONFIG_DNET is not set
+# CONFIG_NET_VENDOR_EZCHIP is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_HISILICON is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_NETRONOME is not set
+# CONFIG_ETHOC is not set
+# CONFIG_NET_VENDOR_QUALCOMM is not set
+# CONFIG_NET_VENDOR_RENESAS is not set
+# CONFIG_NET_VENDOR_ROCKER is not set
+# CONFIG_NET_VENDOR_SAMSUNG is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+CONFIG_NET_VENDOR_SMSC=y
+# CONFIG_SMC91X is not set
+# CONFIG_SMC911X is not set
+CONFIG_SMSC911X=y
+# CONFIG_SMSC911X_ARCH_HOOKS is not set
+# CONFIG_NET_VENDOR_STMICRO is not set
+# CONFIG_NET_VENDOR_SYNOPSYS is not set
+CONFIG_NET_VENDOR_TI=y
+CONFIG_TI_DAVINCI_MDIO=y
+CONFIG_TI_DAVINCI_CPDMA=y
+CONFIG_TI_CPSW_PHY_SEL=y
+CONFIG_TI_CPSW_ALE=y
+CONFIG_TI_CPSW=y
+CONFIG_TI_CPTS=y
+# CONFIG_NET_VENDOR_VIA is not set
+# CONFIG_NET_VENDOR_WIZNET is not set
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+# CONFIG_AQUANTIA_PHY is not set
+# CONFIG_AT803X_PHY is not set
+# CONFIG_AMD_PHY is not set
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_TERANETICS_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_BCM7XXX_PHY is not set
+# CONFIG_BCM87XX_PHY is not set
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_REALTEK_PHY is not set
+# CONFIG_NATIONAL_PHY is not set
+# CONFIG_STE10XP is not set
+# CONFIG_LSI_ET1011C_PHY is not set
+# CONFIG_MICREL_PHY is not set
+# CONFIG_DP83848_PHY is not set
+# CONFIG_DP83867_PHY is not set
+# CONFIG_MICROCHIP_PHY is not set
+# CONFIG_FIXED_PHY is not set
+# CONFIG_MDIO_BITBANG is not set
+# CONFIG_MDIO_BUS_MUX_GPIO is not set
+# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
+# CONFIG_MDIO_BCM_UNIMAC is not set
+# CONFIG_MICREL_KS8995MA is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+CONFIG_USB_NET_DRIVERS=y
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_RTL8152 is not set
+# CONFIG_USB_LAN78XX is not set
+CONFIG_USB_USBNET=y
+# CONFIG_USB_NET_AX8817X is not set
+# CONFIG_USB_NET_AX88179_178A is not set
+# CONFIG_USB_NET_CDCETHER is not set
+# CONFIG_USB_NET_CDC_EEM is not set
+# CONFIG_USB_NET_CDC_NCM is not set
+# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set
+# CONFIG_USB_NET_CDC_MBIM is not set
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_SR9700 is not set
+# CONFIG_USB_NET_SR9800 is not set
+# CONFIG_USB_NET_SMSC75XX is not set
+CONFIG_USB_NET_SMSC95XX=y
+# CONFIG_USB_NET_GL620A is not set
+# CONFIG_USB_NET_NET1080 is not set
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+# CONFIG_USB_NET_ZAURUS is not set
+# CONFIG_USB_NET_CX82310_ETH is not set
+# CONFIG_USB_NET_KALMIA is not set
+# CONFIG_USB_NET_QMI_WWAN is not set
+# CONFIG_USB_NET_INT51X1 is not set
+# CONFIG_USB_IPHETH is not set
+# CONFIG_USB_SIERRA_NET is not set
+# CONFIG_USB_NET_CH9200 is not set
+# CONFIG_WLAN is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+# CONFIG_WAN is not set
+# CONFIG_ISDN is not set
+# CONFIG_NVM is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_LEDS is not set
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+# CONFIG_INPUT_SPARSEKMAP is not set
+CONFIG_INPUT_MATRIXKMAP=y
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+# CONFIG_RMI4_CORE is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_AMBAKMI is not set
+# CONFIG_SERIO_LIBPS2 is not set
+# CONFIG_SERIO_RAW is not set
+# CONFIG_SERIO_ALTERA_PS2 is not set
+# CONFIG_SERIO_PS2MULT is not set
+# CONFIG_SERIO_ARC_PS2 is not set
+# CONFIG_SERIO_APBPS2 is not set
+# CONFIG_USERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_TTY=y
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_VT_CONSOLE_SLEEP=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_N_GSM is not set
+# CONFIG_TRACE_SINK is not set
+CONFIG_DEVMEM=y
+CONFIG_DEVKMEM=y
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_EARLYCON=y
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_AMBA_PL010 is not set
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set
+# CONFIG_SERIAL_MAX3100 is not set
+# CONFIG_SERIAL_MAX310X is not set
+# CONFIG_SERIAL_UARTLITE is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_SERIAL_OMAP=y
+CONFIG_SERIAL_OMAP_CONSOLE=y
+# CONFIG_SERIAL_SCCNXP is not set
+# CONFIG_SERIAL_SC16IS7XX is not set
+# CONFIG_SERIAL_BCM63XX is not set
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
+# CONFIG_SERIAL_ALTERA_UART is not set
+# CONFIG_SERIAL_IFX6X60 is not set
+# CONFIG_SERIAL_XILINX_PS_UART is not set
+# CONFIG_SERIAL_ARC is not set
+# CONFIG_SERIAL_FSL_LPUART is not set
+# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
+# CONFIG_SERIAL_ST_ASC is not set
+# CONFIG_SERIAL_STM32 is not set
+# CONFIG_SERIAL_MVEBU_UART is not set
+# CONFIG_TTY_PRINTK is not set
+# CONFIG_HVC_DCC is not set
+# CONFIG_VIRTIO_CONSOLE is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_HW_RANDOM_TIMERIOMEM is not set
+CONFIG_HW_RANDOM_BCM2835=y
+CONFIG_HW_RANDOM_OMAP=y
+# CONFIG_HW_RANDOM_VIRTIO is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+# CONFIG_XILLYBUS is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_MUX is not set
+CONFIG_I2C_HELPER_AUTO=y
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+CONFIG_I2C_BCM2835=y
+# CONFIG_I2C_CBUS_GPIO is not set
+# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
+# CONFIG_I2C_EMEV2 is not set
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_NOMADIK is not set
+# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_OMAP=y
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_PXA_PCI is not set
+# CONFIG_I2C_RK3X is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_VERSATILE is not set
+# CONFIG_I2C_XILINX is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_DIOLAN_U2C is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_SLAVE is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_ALTERA is not set
+# CONFIG_SPI_AXI_SPI_ENGINE is not set
+CONFIG_SPI_BCM2835=y
+# CONFIG_SPI_BCM2835AUX is not set
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_SPI_CADENCE is not set
+# CONFIG_SPI_DESIGNWARE is not set
+# CONFIG_SPI_GPIO is not set
+# CONFIG_SPI_FSL_SPI is not set
+# CONFIG_SPI_OC_TINY is not set
+CONFIG_SPI_OMAP24XX=y
+# CONFIG_SPI_TI_QSPI is not set
+# CONFIG_SPI_PL022 is not set
+# CONFIG_SPI_PXA2XX_PCI is not set
+# CONFIG_SPI_ROCKCHIP is not set
+# CONFIG_SPI_SC18IS602 is not set
+# CONFIG_SPI_XCOMM is not set
+# CONFIG_SPI_XILINX is not set
+# CONFIG_SPI_ZYNQMP_GQSPI is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_LOOPBACK_TEST is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_SPMI is not set
+# CONFIG_HSI is not set
+
+#
+# PPS support
+#
+CONFIG_PPS=y
+# CONFIG_PPS_DEBUG is not set
+# CONFIG_NTP_PPS is not set
+
+#
+# PPS clients support
+#
+# CONFIG_PPS_CLIENT_KTIMER is not set
+# CONFIG_PPS_CLIENT_LDISC is not set
+# CONFIG_PPS_CLIENT_GPIO is not set
+
+#
+# PPS generators support
+#
+
+#
+# PTP clock support
+#
+CONFIG_PTP_1588_CLOCK=y
+# CONFIG_DP83640_PHY is not set
+CONFIG_PINCTRL=y
+
+#
+# Pin controllers
+#
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
+# CONFIG_DEBUG_PINCTRL is not set
+# CONFIG_PINCTRL_AMD is not set
+CONFIG_PINCTRL_SINGLE=y
+# CONFIG_PINCTRL_PALMAS is not set
+CONFIG_PINCTRL_BCM2835=y
+CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
+CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIO_DEVRES=y
+CONFIG_OF_GPIO=y
+CONFIG_GPIOLIB_IRQCHIP=y
+CONFIG_DEBUG_GPIO=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_GENERIC=y
+
+#
+# Memory mapped GPIO drivers
+#
+# CONFIG_GPIO_74XX_MMIO is not set
+# CONFIG_GPIO_ALTERA is not set
+# CONFIG_GPIO_DWAPB is not set
+# CONFIG_GPIO_EM is not set
+CONFIG_GPIO_GENERIC_PLATFORM=y
+# CONFIG_GPIO_GRGPIO is not set
+# CONFIG_GPIO_MPC8XXX is not set
+CONFIG_GPIO_OMAP=y
+# CONFIG_GPIO_PL061 is not set
+# CONFIG_GPIO_SYSCON is not set
+# CONFIG_GPIO_XILINX is not set
+# CONFIG_GPIO_ZEVIO is not set
+# CONFIG_GPIO_ZX is not set
+
+#
+# I2C GPIO expanders
+#
+# CONFIG_GPIO_ADP5588 is not set
+# CONFIG_GPIO_ADNP is not set
+# CONFIG_GPIO_MAX7300 is not set
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+# CONFIG_GPIO_SX150X is not set
+# CONFIG_GPIO_TPIC2810 is not set
+
+#
+# MFD GPIO expanders
+#
+CONFIG_GPIO_PALMAS=y
+# CONFIG_GPIO_TPS65218 is not set
+# CONFIG_GPIO_TPS65910 is not set
+CONFIG_GPIO_TWL4030=y
+# CONFIG_GPIO_TWL6040 is not set
+
+#
+# SPI GPIO expanders
+#
+# CONFIG_GPIO_74X164 is not set
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MC33880 is not set
+# CONFIG_GPIO_PISOSR is not set
+
+#
+# SPI or I2C GPIO expanders
+#
+# CONFIG_GPIO_MCP23S08 is not set
+
+#
+# USB GPIO expanders
+#
+# CONFIG_W1 is not set
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+# CONFIG_PDA_POWER is not set
+# CONFIG_TEST_POWER is not set
+# CONFIG_BATTERY_DS2780 is not set
+# CONFIG_BATTERY_DS2781 is not set
+# CONFIG_BATTERY_DS2782 is not set
+# CONFIG_BATTERY_SBS is not set
+# CONFIG_BATTERY_BQ27XXX is not set
+# CONFIG_BATTERY_MAX17040 is not set
+# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_CHARGER_ISP1704 is not set
+# CONFIG_CHARGER_MAX8903 is not set
+# CONFIG_CHARGER_LP8727 is not set
+# CONFIG_CHARGER_GPIO is not set
+# CONFIG_CHARGER_MANAGER is not set
+# CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_BQ24257 is not set
+# CONFIG_CHARGER_BQ24735 is not set
+# CONFIG_CHARGER_BQ25890 is not set
+# CONFIG_CHARGER_SMB347 is not set
+# CONFIG_CHARGER_TPS65217 is not set
+# CONFIG_BATTERY_GAUGE_LTC2941 is not set
+# CONFIG_CHARGER_RT9455 is not set
+CONFIG_POWER_RESET=y
+# CONFIG_POWER_RESET_BRCMSTB is not set
+# CONFIG_POWER_RESET_GPIO is not set
+# CONFIG_POWER_RESET_GPIO_RESTART is not set
+# CONFIG_POWER_RESET_LTC2952 is not set
+# CONFIG_POWER_RESET_RESTART is not set
+# CONFIG_POWER_RESET_VERSATILE is not set
+CONFIG_POWER_RESET_VEXPRESS=y
+# CONFIG_POWER_RESET_SYSCON is not set
+# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set
+CONFIG_POWER_AVS=y
+# CONFIG_HWMON is not set
+# CONFIG_THERMAL is not set
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+# CONFIG_WATCHDOG_SYSFS is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_GPIO_WATCHDOG is not set
+# CONFIG_XILINX_WATCHDOG is not set
+# CONFIG_ZIIRAVE_WATCHDOG is not set
+# CONFIG_ARM_SP805_WATCHDOG is not set
+# CONFIG_CADENCE_WATCHDOG is not set
+# CONFIG_DW_WATCHDOG is not set
+CONFIG_OMAP_WATCHDOG=y
+# CONFIG_TWL4030_WATCHDOG is not set
+# CONFIG_MAX63XX_WATCHDOG is not set
+CONFIG_BCM2835_WDT=y
+# CONFIG_MEN_A21_WDT is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+# CONFIG_SSB is not set
+CONFIG_BCMA_POSSIBLE=y
+
+#
+# Broadcom specific AMBA
+#
+# CONFIG_BCMA is not set
+
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_CORE=y
+# CONFIG_MFD_ACT8945A is not set
+# CONFIG_MFD_AS3711 is not set
+# CONFIG_MFD_AS3722 is not set
+# CONFIG_PMIC_ADP5520 is not set
+# CONFIG_MFD_AAT2870_CORE is not set
+# CONFIG_MFD_ATMEL_FLEXCOM is not set
+# CONFIG_MFD_ATMEL_HLCDC is not set
+# CONFIG_MFD_BCM590XX is not set
+# CONFIG_MFD_AXP20X_I2C is not set
+# CONFIG_MFD_CROS_EC is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_DA9052_SPI is not set
+# CONFIG_MFD_DA9052_I2C is not set
+# CONFIG_MFD_DA9055 is not set
+# CONFIG_MFD_DA9062 is not set
+# CONFIG_MFD_DA9063 is not set
+# CONFIG_MFD_DA9150 is not set
+# CONFIG_MFD_DLN2 is not set
+# CONFIG_MFD_MC13XXX_SPI is not set
+# CONFIG_MFD_MC13XXX_I2C is not set
+# CONFIG_MFD_HI6421_PMIC is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_HTC_I2CPLD is not set
+# CONFIG_INTEL_SOC_PMIC is not set
+# CONFIG_MFD_KEMPLD is not set
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_MAX14577 is not set
+# CONFIG_MFD_MAX77686 is not set
+# CONFIG_MFD_MAX77693 is not set
+# CONFIG_MFD_MAX77843 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_MAX8925 is not set
+# CONFIG_MFD_MAX8997 is not set
+# CONFIG_MFD_MAX8998 is not set
+# CONFIG_MFD_MT6397 is not set
+# CONFIG_MFD_MENF21BMC is not set
+# CONFIG_EZX_PCAP is not set
+# CONFIG_MFD_VIPERBOARD is not set
+# CONFIG_MFD_RETU is not set
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_MFD_PM8921_CORE is not set
+# CONFIG_MFD_RT5033 is not set
+# CONFIG_MFD_RTSX_USB is not set
+# CONFIG_MFD_RC5T583 is not set
+# CONFIG_MFD_RK808 is not set
+# CONFIG_MFD_RN5T618 is not set
+# CONFIG_MFD_SEC_CORE is not set
+# CONFIG_MFD_SI476X_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_SKY81452 is not set
+# CONFIG_MFD_SMSC is not set
+# CONFIG_ABX500_CORE is not set
+# CONFIG_MFD_STMPE is not set
+CONFIG_MFD_SYSCON=y
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_LP3943 is not set
+# CONFIG_MFD_LP8788 is not set
+CONFIG_MFD_PALMAS=y
+# CONFIG_TPS6105X is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65086 is not set
+# CONFIG_MFD_TPS65090 is not set
+CONFIG_MFD_TPS65217=y
+CONFIG_MFD_TPS65218=y
+# CONFIG_MFD_TPS6586X is not set
+CONFIG_MFD_TPS65910=y
+# CONFIG_MFD_TPS65912_I2C is not set
+# CONFIG_MFD_TPS65912_SPI is not set
+# CONFIG_MFD_TPS80031 is not set
+CONFIG_TWL4030_CORE=y
+CONFIG_TWL4030_POWER=y
+CONFIG_MFD_TWL4030_AUDIO=y
+CONFIG_TWL6040_CORE=y
+# CONFIG_MFD_WL1273_CORE is not set
+# CONFIG_MFD_LM3533 is not set
+# CONFIG_MFD_TC3589X is not set
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_MFD_TC6393XB is not set
+# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_ARIZONA_SPI is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM831X_I2C is not set
+# CONFIG_MFD_WM831X_SPI is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_WM8994 is not set
+CONFIG_MFD_VEXPRESS_SYSREG=y
+CONFIG_REGULATOR=y
+# CONFIG_REGULATOR_DEBUG is not set
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
+# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
+# CONFIG_REGULATOR_ACT8865 is not set
+# CONFIG_REGULATOR_AD5398 is not set
+# CONFIG_REGULATOR_ANATOP is not set
+# CONFIG_REGULATOR_DA9210 is not set
+# CONFIG_REGULATOR_DA9211 is not set
+# CONFIG_REGULATOR_FAN53555 is not set
+# CONFIG_REGULATOR_GPIO is not set
+# CONFIG_REGULATOR_ISL9305 is not set
+# CONFIG_REGULATOR_ISL6271A is not set
+# CONFIG_REGULATOR_LP3971 is not set
+# CONFIG_REGULATOR_LP3972 is not set
+# CONFIG_REGULATOR_LP872X is not set
+# CONFIG_REGULATOR_LP8755 is not set
+# CONFIG_REGULATOR_LTC3589 is not set
+# CONFIG_REGULATOR_MAX1586 is not set
+# CONFIG_REGULATOR_MAX8649 is not set
+# CONFIG_REGULATOR_MAX8660 is not set
+# CONFIG_REGULATOR_MAX8952 is not set
+# CONFIG_REGULATOR_MAX8973 is not set
+# CONFIG_REGULATOR_MT6311 is not set
+CONFIG_REGULATOR_PALMAS=y
+CONFIG_REGULATOR_PBIAS=y
+# CONFIG_REGULATOR_PFUZE100 is not set
+# CONFIG_REGULATOR_PV88060 is not set
+# CONFIG_REGULATOR_PV88090 is not set
+# CONFIG_REGULATOR_PWM is not set
+CONFIG_REGULATOR_TI_ABB=y
+# CONFIG_REGULATOR_TPS51632 is not set
+# CONFIG_REGULATOR_TPS62360 is not set
+# CONFIG_REGULATOR_TPS65023 is not set
+# CONFIG_REGULATOR_TPS6507X is not set
+CONFIG_REGULATOR_TPS65217=y
+# CONFIG_REGULATOR_TPS65218 is not set
+# CONFIG_REGULATOR_TPS6524X is not set
+# CONFIG_REGULATOR_TPS65910 is not set
+# CONFIG_REGULATOR_TWL4030 is not set
+# CONFIG_REGULATOR_VEXPRESS is not set
+# CONFIG_MEDIA_SUPPORT is not set
+
+#
+# Graphics support
+#
+# CONFIG_DRM is not set
+
+#
+# ACP (Audio CoProcessor) Configuration
+#
+# CONFIG_DRM_AMD_ACP is not set
+
+#
+# Frame buffer Devices
+#
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+
+#
+# Console display driver support
+#
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_SOUND is not set
+
+#
+# HID support
+#
+CONFIG_HID=y
+# CONFIG_HID_BATTERY_STRENGTH is not set
+# CONFIG_HIDRAW is not set
+# CONFIG_UHID is not set
+# CONFIG_HID_GENERIC is not set
+
+#
+# Special HID drivers
+#
+# CONFIG_HID_A4TECH is not set
+# CONFIG_HID_ACRUX is not set
+# CONFIG_HID_APPLE is not set
+# CONFIG_HID_AUREAL is not set
+# CONFIG_HID_BELKIN is not set
+# CONFIG_HID_CHERRY is not set
+# CONFIG_HID_CHICONY is not set
+# CONFIG_HID_CORSAIR is not set
+# CONFIG_HID_CMEDIA is not set
+# CONFIG_HID_CYPRESS is not set
+# CONFIG_HID_DRAGONRISE is not set
+# CONFIG_HID_EMS_FF is not set
+# CONFIG_HID_ELECOM is not set
+# CONFIG_HID_EZKEY is not set
+# CONFIG_HID_GEMBIRD is not set
+# CONFIG_HID_GFRM is not set
+# CONFIG_HID_KEYTOUCH is not set
+# CONFIG_HID_KYE is not set
+# CONFIG_HID_WALTOP is not set
+# CONFIG_HID_GYRATION is not set
+# CONFIG_HID_ICADE is not set
+# CONFIG_HID_TWINHAN is not set
+# CONFIG_HID_KENSINGTON is not set
+# CONFIG_HID_LCPOWER is not set
+# CONFIG_HID_LENOVO is not set
+# CONFIG_HID_LOGITECH is not set
+# CONFIG_HID_MAGICMOUSE is not set
+# CONFIG_HID_MICROSOFT is not set
+# CONFIG_HID_MONTEREY is not set
+# CONFIG_HID_MULTITOUCH is not set
+# CONFIG_HID_ORTEK is not set
+# CONFIG_HID_PANTHERLORD is not set
+# CONFIG_HID_PETALYNX is not set
+# CONFIG_HID_PICOLCD is not set
+# CONFIG_HID_PLANTRONICS is not set
+# CONFIG_HID_PRIMAX is not set
+# CONFIG_HID_SAITEK is not set
+# CONFIG_HID_SAMSUNG is not set
+# CONFIG_HID_SPEEDLINK is not set
+# CONFIG_HID_STEELSERIES is not set
+# CONFIG_HID_SUNPLUS is not set
+# CONFIG_HID_RMI is not set
+# CONFIG_HID_GREENASIA is not set
+# CONFIG_HID_SMARTJOYPLUS is not set
+# CONFIG_HID_TIVO is not set
+# CONFIG_HID_TOPSEED is not set
+# CONFIG_HID_THINGM is not set
+# CONFIG_HID_THRUSTMASTER is not set
+# CONFIG_HID_WACOM is not set
+# CONFIG_HID_WIIMOTE is not set
+# CONFIG_HID_XINMO is not set
+# CONFIG_HID_ZEROPLUS is not set
+# CONFIG_HID_ZYDACRON is not set
+# CONFIG_HID_SENSOR_HUB is not set
+
+#
+# USB HID support
+#
+# CONFIG_USB_HID is not set
+# CONFIG_HID_PID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+
+#
+# I2C HID support
+#
+# CONFIG_I2C_HID is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB=y
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEFAULT_PERSIST=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+# CONFIG_USB_ULPI_BUS is not set
+# CONFIG_USB_MON is not set
+# CONFIG_USB_WUSB_CBAF is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+# CONFIG_USB_XHCI_HCD is not set
+# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1362_HCD is not set
+# CONFIG_USB_FOTG210_HCD is not set
+# CONFIG_USB_MAX3421_HCD is not set
+# CONFIG_USB_OHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_HCD_TEST_MODE is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+# CONFIG_USB_WDM is not set
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USBIP_CORE is not set
+CONFIG_USB_MUSB_HDRC=y
+CONFIG_USB_MUSB_HOST=y
+
+#
+# Platform Glue Layer
+#
+# CONFIG_USB_MUSB_TUSB6010 is not set
+# CONFIG_USB_MUSB_OMAP2PLUS is not set
+CONFIG_USB_MUSB_AM35X=y
+# CONFIG_USB_MUSB_DSPS is not set
+
+#
+# MUSB DMA mode
+#
+# CONFIG_MUSB_PIO_ONLY is not set
+# CONFIG_USB_TI_CPPI41_DMA is not set
+# CONFIG_USB_DWC3 is not set
+CONFIG_USB_DWC2=y
+CONFIG_USB_DWC2_HOST=y
+
+#
+# Gadget/Dual-role mode requires USB Gadget support to be enabled
+#
+# CONFIG_USB_DWC2_DEBUG is not set
+# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
+# CONFIG_USB_ISP1760 is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+# CONFIG_USB_EHSET_TEST_FIXTURE is not set
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_YUREX is not set
+# CONFIG_USB_EZUSB_FX2 is not set
+# CONFIG_USB_HSIC_USB3503 is not set
+# CONFIG_USB_LINK_LAYER_TEST is not set
+# CONFIG_USB_CHAOSKEY is not set
+
+#
+# USB Physical Layer drivers
+#
+CONFIG_USB_PHY=y
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_AM335X_CONTROL_USB=y
+CONFIG_AM335X_PHY_USB=y
+# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_USB_ISP1301 is not set
+# CONFIG_USB_ULPI is not set
+# CONFIG_USB_GADGET is not set
+# CONFIG_USB_LED_TRIG is not set
+# CONFIG_UWB is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_MINORS=8
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_SDIO_UART=y
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+CONFIG_MMC_ARMMMCI=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_IO_ACCESSORS=y
+CONFIG_MMC_SDHCI_PLTFM=y
+# CONFIG_MMC_SDHCI_OF_ARASAN is not set
+# CONFIG_MMC_SDHCI_OF_AT91 is not set
+CONFIG_MMC_SDHCI_BCM2835=y
+# CONFIG_MMC_SDHCI_F_SDH30 is not set
+# CONFIG_MMC_SDHCI_IPROC is not set
+CONFIG_MMC_OMAP=y
+CONFIG_MMC_OMAP_HS=y
+# CONFIG_MMC_DW is not set
+# CONFIG_MMC_VUB300 is not set
+# CONFIG_MMC_USHC is not set
+# CONFIG_MMC_USDHI6ROL0 is not set
+# CONFIG_MMC_MTK is not set
+# CONFIG_MEMSTICK is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+# CONFIG_LEDS_CLASS_FLASH is not set
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_BCM6328 is not set
+# CONFIG_LEDS_BCM6358 is not set
+# CONFIG_LEDS_LM3530 is not set
+# CONFIG_LEDS_LM3642 is not set
+# CONFIG_LEDS_PCA9532 is not set
+CONFIG_LEDS_GPIO=y
+# CONFIG_LEDS_LP3944 is not set
+# CONFIG_LEDS_LP5521 is not set
+# CONFIG_LEDS_LP5523 is not set
+# CONFIG_LEDS_LP5562 is not set
+# CONFIG_LEDS_LP8501 is not set
+# CONFIG_LEDS_LP8860 is not set
+# CONFIG_LEDS_PCA955X is not set
+# CONFIG_LEDS_PCA963X is not set
+# CONFIG_LEDS_DAC124S085 is not set
+# CONFIG_LEDS_PWM is not set
+# CONFIG_LEDS_REGULATOR is not set
+# CONFIG_LEDS_BD2802 is not set
+# CONFIG_LEDS_LT3593 is not set
+# CONFIG_LEDS_TCA6507 is not set
+# CONFIG_LEDS_TLC591XX is not set
+# CONFIG_LEDS_LM355x is not set
+# CONFIG_LEDS_IS31FL32XX is not set
+
+#
+# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
+#
+# CONFIG_LEDS_BLINKM is not set
+# CONFIG_LEDS_SYSCON is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_ONESHOT=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+CONFIG_LEDS_TRIGGER_CPU=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+
+#
+# iptables trigger is under Netfilter config (LED target)
+#
+# CONFIG_LEDS_TRIGGER_TRANSIENT is not set
+# CONFIG_LEDS_TRIGGER_CAMERA is not set
+# CONFIG_ACCESSIBILITY is not set
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
+# CONFIG_EDAC is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_SYSTOHC=y
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_ABB5ZES3 is not set
+# CONFIG_RTC_DRV_ABX80X is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_HYM8563 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_ISL12022 is not set
+# CONFIG_RTC_DRV_ISL12057 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8523 is not set
+# CONFIG_RTC_DRV_PCF85063 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+# CONFIG_RTC_DRV_BQ32K is not set
+# CONFIG_RTC_DRV_TWL4030 is not set
+# CONFIG_RTC_DRV_PALMAS is not set
+# CONFIG_RTC_DRV_TPS65910 is not set
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_FM3130 is not set
+# CONFIG_RTC_DRV_RX8010 is not set
+# CONFIG_RTC_DRV_RX8581 is not set
+# CONFIG_RTC_DRV_RX8025 is not set
+# CONFIG_RTC_DRV_EM3027 is not set
+# CONFIG_RTC_DRV_RV3029C2 is not set
+# CONFIG_RTC_DRV_RV8803 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_M41T93 is not set
+# CONFIG_RTC_DRV_M41T94 is not set
+# CONFIG_RTC_DRV_DS1305 is not set
+# CONFIG_RTC_DRV_DS1343 is not set
+# CONFIG_RTC_DRV_DS1347 is not set
+# CONFIG_RTC_DRV_DS1390 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RX4581 is not set
+# CONFIG_RTC_DRV_RX6110 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_PCF2123 is not set
+# CONFIG_RTC_DRV_MCP795 is not set
+CONFIG_RTC_I2C_AND_SPI=y
+
+#
+# SPI and I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS3232 is not set
+# CONFIG_RTC_DRV_PCF2127 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1286 is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1685_FAMILY is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_DS2404 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T35 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_MSM6242 is not set
+# CONFIG_RTC_DRV_BQ4802 is not set
+# CONFIG_RTC_DRV_RP5C01 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+# CONFIG_RTC_DRV_ZYNQMP is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_OMAP=y
+# CONFIG_RTC_DRV_PL030 is not set
+# CONFIG_RTC_DRV_PL031 is not set
+# CONFIG_RTC_DRV_SNVS is not set
+
+#
+# HID Sensor RTC drivers
+#
+CONFIG_DMADEVICES=y
+# CONFIG_DMADEVICES_DEBUG is not set
+
+#
+# DMA Devices
+#
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DMA_OF=y
+# CONFIG_AMBA_PL08X is not set
+CONFIG_DMA_BCM2835=y
+CONFIG_DMA_OMAP=y
+# CONFIG_FSL_EDMA is not set
+# CONFIG_INTEL_IDMA64 is not set
+# CONFIG_NBPFAXI_DMA is not set
+# CONFIG_PL330_DMA is not set
+CONFIG_TI_CPPI41=y
+CONFIG_TI_DMA_CROSSBAR=y
+CONFIG_TI_EDMA=y
+# CONFIG_QCOM_HIDMA_MGMT is not set
+# CONFIG_QCOM_HIDMA is not set
+# CONFIG_DW_DMAC is not set
+
+#
+# DMA Clients
+#
+# CONFIG_ASYNC_TX_DMA is not set
+# CONFIG_DMATEST is not set
+# CONFIG_AUXDISPLAY is not set
+# CONFIG_UIO is not set
+# CONFIG_VIRT_DRIVERS is not set
+CONFIG_VIRTIO=y
+
+#
+# Virtio drivers
+#
+# CONFIG_VIRTIO_BALLOON is not set
+# CONFIG_VIRTIO_INPUT is not set
+# CONFIG_VIRTIO_MMIO is not set
+
+#
+# Microsoft Hyper-V guest support
+#
+# CONFIG_STAGING is not set
+# CONFIG_GOLDFISH is not set
+# CONFIG_CHROME_PLATFORMS is not set
+CONFIG_CLKDEV_LOOKUP=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+
+#
+# Common Clock Framework
+#
+CONFIG_COMMON_CLK_VERSATILE=y
+CONFIG_CLK_SP810=y
+CONFIG_CLK_VEXPRESS_OSC=y
+# CONFIG_COMMON_CLK_SI5351 is not set
+# CONFIG_COMMON_CLK_SI514 is not set
+# CONFIG_COMMON_CLK_SI570 is not set
+# CONFIG_COMMON_CLK_CDCE706 is not set
+# CONFIG_COMMON_CLK_CDCE925 is not set
+# CONFIG_COMMON_CLK_CS2000_CP is not set
+# CONFIG_CLK_TWL6040 is not set
+# CONFIG_CLK_QORIQ is not set
+# CONFIG_COMMON_CLK_NXP is not set
+CONFIG_COMMON_CLK_PALMAS=y
+# CONFIG_COMMON_CLK_PWM is not set
+# CONFIG_COMMON_CLK_PXA is not set
+# CONFIG_COMMON_CLK_TI_ADPLL is not set
+CONFIG_HWSPINLOCK=y
+
+#
+# Hardware Spinlock drivers
+#
+CONFIG_HWSPINLOCK_OMAP=y
+
+#
+# Clock Source drivers
+#
+CONFIG_CLKSRC_OF=y
+CONFIG_CLKSRC_PROBE=y
+CONFIG_CLKSRC_MMIO=y
+CONFIG_CLKSRC_TI_32K=y
+CONFIG_ARM_ARCH_TIMER=y
+CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
+CONFIG_ARM_GLOBAL_TIMER=y
+CONFIG_ARM_TIMER_SP804=y
+CONFIG_CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK=y
+# CONFIG_ATMEL_PIT is not set
+# CONFIG_SH_TIMER_CMT is not set
+# CONFIG_SH_TIMER_MTU2 is not set
+# CONFIG_SH_TIMER_TMU is not set
+# CONFIG_EM_TIMER_STI is not set
+CONFIG_CLKSRC_VERSATILE=y
+CONFIG_MAILBOX=y
+# CONFIG_ARM_MHU is not set
+# CONFIG_PL320_MBOX is not set
+# CONFIG_OMAP2PLUS_MBOX is not set
+# CONFIG_ALTERA_MBOX is not set
+CONFIG_BCM2835_MBOX=y
+# CONFIG_MAILBOX_TEST is not set
+# CONFIG_IOMMU_SUPPORT is not set
+
+#
+# Remoteproc drivers
+#
+CONFIG_REMOTEPROC=y
+# CONFIG_STE_MODEM_RPROC is not set
+CONFIG_WKUP_M3_RPROC=y
+
+#
+# Rpmsg drivers
+#
+
+#
+# SOC (System On Chip) specific Drivers
+#
+CONFIG_RASPBERRYPI_POWER=y
+# CONFIG_SOC_BRCMSTB is not set
+# CONFIG_SUNXI_SRAM is not set
+CONFIG_SOC_TI=y
+CONFIG_PM_DEVFREQ=y
+
+#
+# DEVFREQ Governors
+#
+# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
+# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
+# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
+# CONFIG_DEVFREQ_GOV_USERSPACE is not set
+
+#
+# DEVFREQ Drivers
+#
+# CONFIG_PM_DEVFREQ_EVENT is not set
+# CONFIG_EXTCON is not set
+CONFIG_MEMORY=y
+# CONFIG_ARM_PL172_MPMC is not set
+CONFIG_TI_EMIF=y
+CONFIG_OMAP_GPMC=y
+# CONFIG_OMAP_GPMC_DEBUG is not set
+# CONFIG_IIO is not set
+CONFIG_PWM=y
+CONFIG_PWM_SYSFS=y
+CONFIG_PWM_BCM2835=y
+# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_OMAP_DMTIMER is not set
+# CONFIG_PWM_PCA9685 is not set
+# CONFIG_PWM_TIECAP is not set
+# CONFIG_PWM_TIEHRPWM is not set
+# CONFIG_PWM_TWL is not set
+# CONFIG_PWM_TWL_LED is not set
+CONFIG_IRQCHIP=y
+CONFIG_ARM_GIC=y
+CONFIG_ARM_GIC_MAX_NR=1
+CONFIG_OMAP_IRQCHIP=y
+# CONFIG_IPACK_BUS is not set
+# CONFIG_RESET_CONTROLLER is not set
+# CONFIG_FMC is not set
+
+#
+# PHY Subsystem
+#
+# CONFIG_GENERIC_PHY is not set
+# CONFIG_PHY_DM816X_USB is not set
+# CONFIG_PHY_PXA_28NM_HSIC is not set
+# CONFIG_PHY_PXA_28NM_USB2 is not set
+# CONFIG_OMAP_CONTROL_PHY is not set
+# CONFIG_OMAP_USB2 is not set
+# CONFIG_TI_PIPE3 is not set
+# CONFIG_BCM_KONA_USB2_PHY is not set
+# CONFIG_PHY_SAMSUNG_USB2 is not set
+# CONFIG_POWERCAP is not set
+# CONFIG_MCB is not set
+
+#
+# Performance monitor support
+#
+CONFIG_ARM_PMU=y
+# CONFIG_RAS is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+# CONFIG_NVMEM is not set
+# CONFIG_STM is not set
+# CONFIG_INTEL_TH is not set
+
+#
+# FPGA Configuration Support
+#
+# CONFIG_FPGA is not set
+
+#
+# Firmware Drivers
+#
+# CONFIG_FIRMWARE_MEMMAP is not set
+CONFIG_RASPBERRYPI_FIRMWARE=y
+CONFIG_HAVE_ARM_SMCCC=y
+
+#
+# File systems
+#
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+CONFIG_EXT4_FS=y
+# CONFIG_EXT4_FS_POSIX_ACL is not set
+# CONFIG_EXT4_FS_SECURITY is not set
+# CONFIG_EXT4_ENCRYPTION is not set
+# CONFIG_EXT4_DEBUG is not set
+CONFIG_JBD2=y
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
+# CONFIG_NILFS2_FS is not set
+# CONFIG_F2FS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_EXPORTFS=y
+CONFIG_FILE_LOCKING=y
+# CONFIG_MANDATORY_FILE_LOCKING is not set
+# CONFIG_FS_ENCRYPTION is not set
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_FANOTIFY=y
+CONFIG_QUOTA=y
+# CONFIG_QUOTA_NETLINK_INTERFACE is not set
+CONFIG_PRINT_QUOTA_WARNING=y
+# CONFIG_QUOTA_DEBUG is not set
+CONFIG_QUOTA_TREE=y
+# CONFIG_QFMT_V1 is not set
+CONFIG_QFMT_V2=y
+CONFIG_QUOTACTL=y
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+# CONFIG_OVERLAY_FS is not set
+
+#
+# Caches
+#
+# CONFIG_FSCACHE is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+# CONFIG_PROC_CHILDREN is not set
+CONFIG_KERNFS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_TMPFS_XATTR=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_CONFIGFS_FS=y
+# CONFIG_MISC_FILESYSTEMS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V2=y
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+# CONFIG_NFS_SWAP is not set
+# CONFIG_NFS_V4_1 is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFS_USE_LEGACY_DNS is not set
+CONFIG_NFS_USE_KERNEL_DNS=y
+# CONFIG_NFSD is not set
+CONFIG_GRACE_PERIOD=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+# CONFIG_SUNRPC_DEBUG is not set
+# CONFIG_CEPH_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_MAC_ROMAN is not set
+# CONFIG_NLS_MAC_CELTIC is not set
+# CONFIG_NLS_MAC_CENTEURO is not set
+# CONFIG_NLS_MAC_CROATIAN is not set
+# CONFIG_NLS_MAC_CYRILLIC is not set
+# CONFIG_NLS_MAC_GAELIC is not set
+# CONFIG_NLS_MAC_GREEK is not set
+# CONFIG_NLS_MAC_ICELAND is not set
+# CONFIG_NLS_MAC_INUIT is not set
+# CONFIG_NLS_MAC_ROMANIAN is not set
+# CONFIG_NLS_MAC_TURKISH is not set
+# CONFIG_NLS_UTF8 is not set
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+
+#
+# printk and dmesg options
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_DYNAMIC_DEBUG is not set
+
+#
+# Compile-time checks and compiler options
+#
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_INFO_REDUCED is not set
+# CONFIG_DEBUG_INFO_SPLIT is not set
+# CONFIG_DEBUG_INFO_DWARF4 is not set
+# CONFIG_GDB_SCRIPTS is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+# CONFIG_STRIP_ASM_SYMS is not set
+# CONFIG_READABLE_ASM is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_PAGE_OWNER is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
+CONFIG_DEBUG_KERNEL=y
+
+#
+# Memory Debugging
+#
+CONFIG_PAGE_EXTENSION=y
+# CONFIG_DEBUG_PAGEALLOC is not set
+CONFIG_PAGE_POISONING=y
+# CONFIG_PAGE_POISONING_NO_SANITY is not set
+# CONFIG_PAGE_POISONING_ZERO is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+# CONFIG_DEBUG_HIGHMEM is not set
+# CONFIG_DEBUG_SHIRQ is not set
+
+#
+# Debug Lockups and Hangs
+#
+# CONFIG_LOCKUP_DETECTOR is not set
+# CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_WQ_WATCHDOG is not set
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+CONFIG_PANIC_TIMEOUT=0
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHED_INFO is not set
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_SCHED_STACK_END_CHECK is not set
+# CONFIG_DEBUG_TIMEKEEPING is not set
+# CONFIG_TIMER_STATS is not set
+
+#
+# Lock Debugging (spinlocks, mutexes, etc...)
+#
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_LOCK_TORTURE_TEST is not set
+CONFIG_STACKTRACE=y
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_PI_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+
+#
+# RCU Debugging
+#
+# CONFIG_PROVE_RCU is not set
+# CONFIG_SPARSE_RCU_POINTER is not set
+# CONFIG_TORTURE_TEST is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_RCU_CPU_STALL_TIMEOUT=21
+# CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_EQS_DEBUG is not set
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_TRACING_SUPPORT=y
+# CONFIG_FTRACE is not set
+
+#
+# Runtime Testing
+#
+# CONFIG_LKDTM is not set
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_RBTREE_TEST is not set
+# CONFIG_INTERVAL_TREE_TEST is not set
+# CONFIG_PERCPU_TEST is not set
+# CONFIG_ATOMIC64_SELFTEST is not set
+# CONFIG_TEST_HEXDUMP is not set
+# CONFIG_TEST_STRING_HELPERS is not set
+# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_TEST_PRINTF is not set
+# CONFIG_TEST_BITMAP is not set
+# CONFIG_TEST_RHASHTABLE is not set
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_TEST_LKM is not set
+# CONFIG_TEST_USER_COPY is not set
+# CONFIG_TEST_BPF is not set
+# CONFIG_TEST_FIRMWARE is not set
+# CONFIG_TEST_UDELAY is not set
+# CONFIG_MEMTEST is not set
+# CONFIG_TEST_STATIC_KEYS is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+# CONFIG_UBSAN is not set
+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
+# CONFIG_STRICT_DEVMEM is not set
+# CONFIG_ARM_PTDUMP is not set
+CONFIG_ARM_UNWIND=y
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_LL is not set
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+# CONFIG_DEBUG_UART_8250 is not set
+CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
+# CONFIG_PID_IN_CONTEXTIDR is not set
+# CONFIG_DEBUG_SET_MODULE_RONX is not set
+# CONFIG_CORESIGHT is not set
+
+#
+# Security options
+#
+CONFIG_KEYS=y
+# CONFIG_PERSISTENT_KEYRINGS is not set
+# CONFIG_BIG_KEYS is not set
+# CONFIG_ENCRYPTED_KEYS is not set
+# CONFIG_SECURITY_DMESG_RESTRICT is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_DEFAULT_SECURITY=""
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+# CONFIG_CRYPTO_RSA is not set
+# CONFIG_CRYPTO_MANAGER is not set
+# CONFIG_CRYPTO_MANAGER2 is not set
+# CONFIG_CRYPTO_USER is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_PCRYPT is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+# CONFIG_CRYPTO_MCRYPTD is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Authenticated Encryption with Associated Data
+#
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_CHACHA20POLY1305 is not set
+# CONFIG_CRYPTO_SEQIV is not set
+# CONFIG_CRYPTO_ECHAINIV is not set
+
+#
+# Block modes
+#
+# CONFIG_CRYPTO_CBC is not set
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+# CONFIG_CRYPTO_ECB is not set
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_KEYWRAP is not set
+
+#
+# Hash modes
+#
+# CONFIG_CRYPTO_CMAC is not set
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_VMAC is not set
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRC32=y
+CONFIG_CRYPTO_CRCT10DIF=y
+# CONFIG_CRYPTO_GHASH is not set
+# CONFIG_CRYPTO_POLY1305 is not set
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_WP512 is not set
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_ARC4 is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_DES is not set
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_CHACHA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+
+#
+# Compression
+#
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_LZO is not set
+# CONFIG_CRYPTO_842 is not set
+# CONFIG_CRYPTO_LZ4 is not set
+# CONFIG_CRYPTO_LZ4HC is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+# CONFIG_CRYPTO_DRBG_MENU is not set
+# CONFIG_CRYPTO_JITTERENTROPY is not set
+# CONFIG_CRYPTO_USER_API_HASH is not set
+# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
+# CONFIG_CRYPTO_USER_API_RNG is not set
+# CONFIG_CRYPTO_USER_API_AEAD is not set
+# CONFIG_CRYPTO_HW is not set
+# CONFIG_ASYMMETRIC_KEY_TYPE is not set
+
+#
+# Certificates for signature checking
+#
+# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
+# CONFIG_ARM_CRYPTO is not set
+# CONFIG_BINARY_PRINTF is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_HAVE_ARCH_BITREVERSE=y
+CONFIG_RATIONAL=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_NET_UTILS=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_IO=y
+CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
+# CONFIG_CRC_CCITT is not set
+CONFIG_CRC16=y
+# CONFIG_CRC_T10DIF is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC32_SELFTEST is not set
+CONFIG_CRC32_SLICEBY8=y
+# CONFIG_CRC32_SLICEBY4 is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_BIT is not set
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+# CONFIG_CRC8 is not set
+CONFIG_AUDIT_GENERIC=y
+# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
+# CONFIG_RANDOM32_SELFTEST is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_XZ_DEC=y
+CONFIG_XZ_DEC_X86=y
+CONFIG_XZ_DEC_POWERPC=y
+CONFIG_XZ_DEC_IA64=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_ARMTHUMB=y
+CONFIG_XZ_DEC_SPARC=y
+CONFIG_XZ_DEC_BCJ=y
+# CONFIG_XZ_DEC_TEST is not set
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_XZ=y
+CONFIG_DECOMPRESS_LZO=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_BCH=y
+CONFIG_ASSOCIATIVE_ARRAY=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_DMA=y
+CONFIG_CPU_RMAP=y
+CONFIG_DQL=y
+CONFIG_NLATTR=y
+CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
+# CONFIG_CORDIC is not set
+CONFIG_DDR=y
+# CONFIG_IRQ_POLL is not set
+CONFIG_LIBFDT=y
+CONFIG_OID_REGISTRY=y
+# CONFIG_SG_SPLIT is not set
+CONFIG_ARCH_HAS_SG_CHAIN=y
+CONFIG_VIRTUALIZATION=y
diff --git a/configs/platform-v7a/patches/barebox-2016.05.0/0001-bootstate-add-framework-for-redundant-boot-scenarios.patch b/configs/platform-v7a/patches/barebox-2016.05.0/0001-bootstate-add-framework-for-redundant-boot-scenarios.patch
new file mode 100644
index 0000000..08b17de
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2016.05.0/0001-bootstate-add-framework-for-redundant-boot-scenarios.patch
@@ -0,0 +1,1467 @@
+From: Marc Kleine-Budde <mkl@pengutronix.de>
+Date: Fri, 20 Feb 2015 09:19:14 +0100
+Subject: [PATCH] bootstate: add framework for redundant boot scenarios
+
+There are several use cases where a redundant Linux system is needed. The
+barebox,bootstate framework provides the building blocks to model different
+use cases without the need to start from the scratch over and over again.
+
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+---
+ .../bindings/barebox/barebox,bootstate.rst | 236 +++++++
+ arch/sandbox/dts/sandbox.dts | 83 +++
+ commands/Kconfig | 5 +
+ commands/Makefile | 1 +
+ commands/bootchooser.c | 101 +++
+ common/Kconfig | 8 +
+ common/Makefile | 1 +
+ common/bootstate.c | 781 +++++++++++++++++++++
+ drivers/misc/Kconfig | 5 +
+ drivers/misc/Makefile | 1 +
+ drivers/misc/bootstate.c | 79 +++
+ include/bootstate.h | 39 +
+ 12 files changed, 1340 insertions(+)
+ create mode 100644 Documentation/devicetree/bindings/barebox/barebox,bootstate.rst
+ create mode 100644 commands/bootchooser.c
+ create mode 100644 common/bootstate.c
+ create mode 100644 drivers/misc/bootstate.c
+ create mode 100644 include/bootstate.h
+
+diff --git a/Documentation/devicetree/bindings/barebox/barebox,bootstate.rst b/Documentation/devicetree/bindings/barebox/barebox,bootstate.rst
+new file mode 100644
+index 000000000000..0f7131536798
+--- /dev/null
++++ b/Documentation/devicetree/bindings/barebox/barebox,bootstate.rst
+@@ -0,0 +1,236 @@
++barebox bootstate
++=================
++
++Overview
++--------
++
++There are several use cases where a redundant Linux system is needed.
++The ``barebox,bootstate`` framework provides the building blocks to
++model different use cases without the need to start from the scratch
++over and over again.
++
++The ``barebox,bootstate`` works on abstract boot targets, each with a
++set of properties and implements an algorithm which selects the
++highest priority target to boot.
++
++A set of boot targets can be described in a devicetree node. This
++node could be part of the regular devicetree blob or it could be an
++extra devicetree for the bootstate.
++
++A bootstate node contains a description of a set of boot targets along
++with a place where to store the mutable state. Currently implemented
++backends are :ref:`barebox,state` and ``nv`` (:ref:`command_nv`)
++variables.
++
++Required properties:
++
++* ``compatible``: should be ``barebox,bootstate``;
++* ``backend-type``: should be ``state`` or ``nv``.
++
++Optional properties:
++
++* ``backend``: phandle to the :ref:`barebox,state` backend
++
++
++boot target nodes - immutable description
++-----------------------------------------
++
++These are subnodes of a bootstate node, each describing a boot
++target. The node name may end with ``@<ADDRESS>``, but the suffix is
++stripped from the target name.
++
++Optional properties:
++
++* ``default_attempts``: If the boot attempts counter is reset, this
++ value is used.
++
++Example::
++
++ bootstate: bootstate {
++ compatible = "barebox,bootstate";
++ backend-type = "state";
++ backend = <&state>;
++
++ system0 {
++ default_attempts = <3>;
++ };
++
++ system1 {
++ default_attempts = <3>;
++ };
++ };
++
++In this example a bootstate, using a :ref:`barebox,state` backend with
++two boot target nodes ``system0`` and ``system1`` is defined. When the
++boot attempts counter is reset, the default value of ``3`` is used for
++both targets.
++
++
++boot target nodes - mutable state
++---------------------------------
++
++The above example uses a :ref:`barebox,state` backend, which requires
++some additional configuration to hold the mutable
++state. :ref:`barebox,state` has to be explicidly configured, while
++``nv`` (:ref:`command_nv`) variables are created on the fly.
++
++The state of each boot target consists of the following ``uint32``
++varibles:
++
++* ``remaining_attempts``: holds the number of remaining boot attempts.
++ This variable is changed by the bootstate algorithm during boot.
++* ``priority``: defines the priority of the boot target. Higher number
++ indicate a higher priority, If two boot targets have the same
++ priority the one defined first in the device tree has precedence.
++ The ``priority`` can optionally be changed by the algorithm to 0, if
++ the boot target is decremented to ``0`` remaining boot attempts. A
++ ``priority`` of ``0`` means the boot target is **deactivated** and
++ will not be considered a valid target during further boots. If the
++ remaining attempts counter is reset, a target with priority 0 is
++ **not** changed.
++* ``ok``: this is an opaque value, it's not accessed by the bootstate
++ algorithm. It can be used be the Linux system to track the first
++ boot after an update.
++
++The bootstate can also hold a default watchdog timeout (in seconds),
++which can be activated by the bootstate algorithm.
++
++Example::
++
++ state: state {
++ magic = <0x4d433230>;
++ compatible = "barebox,state";
++ backend-type = "raw";
++ backend = <&backend_state>;
++ #address-cells = <1>;
++ #size-cells = <1>;
++
++ bootstate {
++ #address-cells = <1>;
++ #size-cells = <1>;
++
++ system0 {
++ #address-cells = <1>;
++ #size-cells = <1>;
++
++ remaining_attempts {
++ reg = <0x0 0x4>;
++ type = "uint32";
++ };
++ priority {
++ reg = <0x4 0x4>;
++ type = "uint32";
++ };
++ ok {
++ reg = <0x8 0x4>;
++ type = "uint32";
++ };
++ };
++
++ system1 {
++ #address-cells = <1>;
++ #size-cells = <1>;
++
++ remaining_attempts {
++ reg = <0x10 0x4>;
++ type = "uint32";
++ };
++ priority {
++ reg = <0x14 0x4>;
++ type = "uint32";
++ };
++ ok {
++ reg = <0x18 0x4>;
++ type = "uint32";
++ };
++ };
++
++ watchdog_timeout {
++ reg = <0x20 0x4>;
++ type = "uint32";
++ default = <60>;
++ };
++ };
++ };
++
++This example defines two boot targets (``system0`` and ``system1``) and
++a watchdog timeout of ``60`` seconds.
++
++
++Backends
++--------
++
++Currently two backends exist. The :ref:`barebox,state` backend is a
++bit more complicated to setup, as all boot target have to be described
++in the referenced :ref:`barebox,state` in the device tree. On the
++upside, the advantages of the (possible redundant storage, etc...) of
++the :ref:`barebox,state` is gained for free.
++
++The :ref:`command_nv` backend is a lot simpler, no special setup is
++needed, it should run on every board, which already implements a
++read/writeable barebox environment.
++
++
++Algorithm
++---------
++
++The low level algorithm is implemented by the
++``bootstate_get_target()`` function. Its job is to iterate over all
++boot sources and return the name (as a string) of the choosen boot
++target.
++
++The algorithm iterates over all boot targets defined under the
++associated device tree node and picks the one with the highest
++``priority`` (higher number have a higher priority) where the
++``remaining_attempts`` is greater than zero. A pointer to the name of
++the boot target is returned, the string should be freed via ``free()``.
++
++The behaviour can be modified with the flags paramter. The following
++flags are currently supported:
++
++* ``BOOTCHOOSER_FLAG_ATTEMPTS_KEEP``: the ``remaining_attempts``
++ counter of the choosen boot target is not changed.
++* ``BOOTCHOOSER_FLAG_ATTEMPTS_DEC``: the ``remaining_attempts``
++ counter of the choosen boot target is decremented by one.
++* ``BOOTCHOOSER_FLAG_ATTEMPTS_RESET``: the ``remaining_attempts``
++ counter of all *active* boot targets (those with ``priority > 0``)
++ are reset to their default values as defined in the immutable
++ description by ``default_attempts``.
++* ``BOOTCHOOSER_FLAG_DEACTIVATE_ON_ZERO_ATTEMPTS``: if used together
++ with ``BOOTCHOOSER_FLAG_ATTEMPTS_DEC`` and the
++ ``remaining_attempts`` counter of the choosen boot target is
++ decremented to ``0``, the boot target is deactivated for further
++ boot attempts (although *this* boot is attemped as usual). This is
++ done by setting the ``priority`` to ``0``.
++* ``BOOTCHOOSER_FLAG_VERBOSE``: increases the verbosity of the output
++
++
++Frontend
++--------
++
++The shell command ``bootchooser`` (:ref:`command_bootchooser`) can be
++used to choose and start a boot target by a shell one-liner. The
++command picks the boot target with the highest priority and calls the
++``boot`` (:ref:`command_boot`) command with the selected boot target
++as its first and only parameter.
++
++The ``bootchooser`` command implements command line paramter versions
++of the above described flags:
++
++* ``-k``: keep boot attempts
++* ``-d``: decrement boot attempts
++* ``-r``: reset boot attempts
++* ``-z``: deactivate on zero remaining attempts
++* ``-v``: verbose output
++
++Next to the standard parameters, these additional options are
++implemented:
++
++* ``-D``: dryrun - do not boot (all other functionality is active) - a
++ specified watchdog timeout will be activated.
++* ``-R``: retry - if booting fails, then chose next target, but
++ decrement its attempts. Note: if the current target has still the
++ highest priority and remaining attemts, it will be selected again.
++* ``-w <TIMEOUT_IN_SEC>``: activate watchdog - if no parameter is
++ given, the timeout from the device tree is used. A given parameter
++ overwrites the device tree default.
+diff --git a/arch/sandbox/dts/sandbox.dts b/arch/sandbox/dts/sandbox.dts
+index 2595aa13fa62..e2bc8f76c2e3 100644
+--- a/arch/sandbox/dts/sandbox.dts
++++ b/arch/sandbox/dts/sandbox.dts
+@@ -3,5 +3,88 @@
+ #include "skeleton.dtsi"
+
+ / {
++ aliases {
++ state = &state;
++ };
+
++ state: state {
++ magic = <0x4d433230>;
++ compatible = "barebox,state";
++ backend-type = "dtb";
++ backend = "/fd0";
++
++ bootstate {
++ system0 {
++ #address-cells = <1>;
++ #size-cells = <1>;
++
++ remaining_attempts {
++ reg = <0x0 0x4>;
++ type = "uint32";
++ };
++ priority {
++ reg = <0x4 0x4>;
++ type = "uint32";
++ };
++ ok {
++ reg = <0x8 0x4>;
++ type = "uint32";
++ };
++ };
++
++ system1 {
++ #address-cells = <1>;
++ #size-cells = <1>;
++
++ remaining_attempts {
++ reg = <0x10 0x4>;
++ type = "uint32";
++ };
++ priority {
++ reg = <0x14 0x4>;
++ type = "uint32";
++ };
++ ok {
++ reg = <0x18 0x4>;
++ type = "uint32";
++ };
++ };
++
++ factory {
++ #address-cells = <1>;
++ #size-cells = <1>;
++
++ remaining_attempts {
++ reg = <0x20 0x4>;
++ type = "uint32";
++ };
++ priority {
++ reg = <0x24 0x4>;
++ type = "uint32";
++ };
++ ok {
++ reg = <0x28 0x4>;
++ type = "uint32";
++ };
++ };
++ };
++ };
++
++ bootstate: bootstate {
++ compatible = "barebox,bootstate";
++ backend-type = "state"; // or "nv", or "efivar"
++ backend = <&state>;
++
++ system0 {
++ default_attempts = <3>;
++ };
++
++ system1 {
++ default_attempts = <3>;
++ };
++
++ factory {
++ default_attempts = <3>;
++ };
++ };
+ };
+diff --git a/commands/Kconfig b/commands/Kconfig
+index 875c5f4f01ed..603e887b15ec 100644
+--- a/commands/Kconfig
++++ b/commands/Kconfig
+@@ -2189,6 +2189,11 @@ config CMD_SPD_DECODE
+ help
+ decode spd eeprom
+
++config CMD_BOOTCHOOSER
++ tristate
++ depends on BOOTSTATE
++ prompt "bootchooser"
++
+ # end Miscellaneous commands
+ endmenu
+
+diff --git a/commands/Makefile b/commands/Makefile
+index f1b482f04934..bb3b40809af5 100644
+--- a/commands/Makefile
++++ b/commands/Makefile
+@@ -117,3 +117,4 @@ obj-$(CONFIG_CMD_DHRYSTONE) += dhrystone.o
+ obj-$(CONFIG_CMD_SPD_DECODE) += spd_decode.o
+ obj-$(CONFIG_CMD_MMC_EXTCSD) += mmc_extcsd.o
+ obj-$(CONFIG_CMD_NAND_BITFLIP) += nand-bitflip.o
++obj-$(CONFIG_CMD_BOOTCHOOSER) += bootchooser.o
+diff --git a/commands/bootchooser.c b/commands/bootchooser.c
+new file mode 100644
+index 000000000000..06ca5e41d527
+--- /dev/null
++++ b/commands/bootchooser.c
+@@ -0,0 +1,101 @@
++/*
++ * Copyright (C) 2012 Jan Luebbe <j.luebbe@pengutronix.de>
++ * Copyright (C) 2015 Marc Kleine-Budde <mkl@pengutronix.de>
++ *
++ * 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; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ */
++
++#include <bootstate.h>
++#include <command.h>
++#include <common.h>
++#include <getopt.h>
++#include <malloc.h>
++#include <stdio.h>
++
++static int do_bootchooser(int argc, char *argv[])
++{
++ unsigned flags = 0, timeout = 0;
++ char *name = NULL;
++ int opt, ret;
++
++ while ((opt = getopt(argc, argv, "kdrzvDRw::")) > 0) {
++ switch (opt) {
++ case 'k':
++ flags |= BOOTCHOOSER_FLAG_ATTEMPTS_KEEP;
++ break;
++ case 'd':
++ flags |= BOOTCHOOSER_FLAG_ATTEMPTS_DEC;
++ break;
++ case 'r':
++ flags |= BOOTCHOOSER_FLAG_ATTEMPTS_RESET;
++ break;
++ case 'z':
++ flags |= BOOTCHOOSER_FLAG_DEACTIVATE_ON_ZERO_ATTEMPTS;
++ break;
++ case 'v':
++ flags |= BOOTCHOOSER_FLAG_VERBOSE;
++ break;
++ case 'D':
++ flags |= BOOTCHOOSER_FLAG_DRYRUN;
++ break;
++ case 'R':
++ flags |= BOOTCHOOSER_FLAG_RETRY_WITH_DEC;
++ break;
++ case 'w':
++ if (optarg)
++ timeout = simple_strtoul(optarg, NULL, 0);
++ else
++ flags |= BOOTCHOOSER_FLAG_WATCHDOG_TIMEOUT_FROM_STATE;
++ flags |= BOOTCHOOSER_FLAG_WATCHDOG_ENABLE;
++ break;
++ default:
++ return COMMAND_ERROR_USAGE;
++ }
++ }
++
++ if (optind < argc)
++ name = argv[optind];
++
++ if (!(flags & (BOOTCHOOSER_FLAG_ATTEMPTS_KEEP |
++ BOOTCHOOSER_FLAG_ATTEMPTS_DEC |
++ BOOTCHOOSER_FLAG_ATTEMPTS_RESET))) {
++ bootstate_info();
++ return 0;
++ }
++
++ if ((flags & BOOTCHOOSER_FLAG_ATTEMPTS_KEEP) &&
++ (flags & (BOOTCHOOSER_FLAG_ATTEMPTS_DEC | BOOTCHOOSER_FLAG_ATTEMPTS_RESET)))
++ return COMMAND_ERROR_USAGE;
++
++ ret = bootstate_bootchooser(name, flags, timeout);
++
++ return ret ? COMMAND_ERROR : COMMAND_SUCCESS;
++}
++
++BAREBOX_CMD_HELP_START(bootchooser)
++BAREBOX_CMD_HELP_TEXT("Options:")
++BAREBOX_CMD_HELP_OPT ("-k","keep - boot, don't modify attempts counter")
++BAREBOX_CMD_HELP_OPT ("-d","decrement - boot, but decrement attempts counter by one")
++BAREBOX_CMD_HELP_OPT ("-r","reset - boot, but reset _all_ attempts counters to default")
++BAREBOX_CMD_HELP_OPT ("-z","deactivate chosen target on zero remaining boot attempts")
++BAREBOX_CMD_HELP_OPT ("-v","verbose output")
++BAREBOX_CMD_HELP_OPT ("-D","dryrun - do not boot, but handle watchdog and reset")
++BAREBOX_CMD_HELP_OPT ("-R","retry - boot, retry next boot target and decrement attempts")
++BAREBOX_CMD_HELP_OPT ("-w","activate watchdog, use timeout specified in <BOOTSTATE>.watchdog_timeout")
++BAREBOX_CMD_HELP_END
++
++BAREBOX_CMD_START(bootchooser)
++ .cmd = do_bootchooser,
++ BAREBOX_CMD_DESC("automatically select a boot target and boot")
++ BAREBOX_CMD_OPTS("[-kdrzvDR] -w <TIMEOUT> [BOOTSTATE]")
++ BAREBOX_CMD_GROUP(CMD_GRP_MISC)
++ BAREBOX_CMD_HELP(cmd_bootchooser_help)
++BAREBOX_CMD_END
+diff --git a/common/Kconfig b/common/Kconfig
+index 7c09e8c117f1..f17769661ee6 100644
+--- a/common/Kconfig
++++ b/common/Kconfig
+@@ -792,6 +792,14 @@ config STATE_CRYPTO
+ See Documentation/devicetree/bindings/barebox/barebox,state.rst
+ for more information.
+
++config BOOTSTATE
++ bool "bootstate infrastructure"
++ depends on OF_BAREBOX_DRIVERS
++ select ENVIRONMENT_VARIABLES
++ select OFTREE
++ select PARAMETER
++ select BOOTSTATE_DRV
++
+ config RESET_SOURCE
+ bool "detect Reset cause"
+ depends on GLOBALVAR
+diff --git a/common/Makefile b/common/Makefile
+index d99ca7b7ac74..5505449874ad 100644
+--- a/common/Makefile
++++ b/common/Makefile
+@@ -46,6 +46,7 @@ obj-$(CONFIG_SHELL_HUSH) += hush.o
+ obj-$(CONFIG_SHELL_SIMPLE) += parser.o
+ obj-$(CONFIG_STATE) += state.o
+ obj-$(CONFIG_RATP) += ratp.o
++obj-$(CONFIG_BOOTSTATE) += bootstate.o
+ obj-$(CONFIG_UIMAGE) += image.o uimage.o
+ obj-$(CONFIG_FITIMAGE) += image-fit.o
+ obj-$(CONFIG_MENUTREE) += menutree.o
+diff --git a/common/bootstate.c b/common/bootstate.c
+new file mode 100644
+index 000000000000..3dc18813064d
+--- /dev/null
++++ b/common/bootstate.c
+@@ -0,0 +1,781 @@
++/*
++ * Copyright (C) 2012 Jan Luebbe <j.luebbe@pengutronix.de>
++ * Copyright (C) 2015 Marc Kleine-Budde <mkl@pengutronix.de>
++ *
++ * 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; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ */
++
++#include <bootstate.h>
++#include <common.h>
++#include <envfs.h>
++#include <environment.h>
++#include <errno.h>
++#include <fcntl.h>
++#include <fs.h>
++#include <globalvar.h>
++#include <init.h>
++#include <ioctl.h>
++#include <libbb.h>
++#include <libfile.h>
++#include <malloc.h>
++#include <net.h>
++#include <printk.h>
++#include <state.h>
++#include <stdio.h>
++#include <watchdog.h>
++#include <xfuncs.h>
++
++#include <linux/err.h>
++#include <linux/kernel.h>
++#include <linux/list.h>
++#include <linux/mtd/mtd-abi.h>
++#include <linux/mtd/mtd.h>
++
++#include <asm/unaligned.h>
++
++/* list of all registered bootstate instances */
++static LIST_HEAD(bootstate_list);
++
++struct state_backend;
++
++struct bootstate {
++ struct device_d dev;
++ const char *name;
++ struct list_head list;
++ struct list_head targets;
++ struct list_head targets_unsorted;
++ struct bootstate_backend *backend;
++ bool dirty;
++};
++
++struct bootstate_backend {
++ int (*load)(struct bootstate_backend *backend, struct bootstate *bootstate);
++ int (*save)(struct bootstate_backend *backend, struct bootstate *bootstate);
++ const char *name;
++ const char *path;
++};
++
++struct bootstate_target {
++ struct list_head list;
++ struct list_head list_unsorted;
++
++ /* state */
++ unsigned int priority;
++ unsigned int remaining_attempts;
++ bool ok;
++
++ /* spec */
++ const char *name;
++ unsigned int default_attempts;
++};
++
++static void pr_target(struct bootstate *bootstate, struct bootstate_target *target)
++{
++ printf("%s: target: name=%s prio=%u, ok=%d, rem=%u, def=%u\n",
++ bootstate->name, target->name, target->priority, target->ok,
++ target->remaining_attempts, target->default_attempts);
++}
++
++static struct bootstate *bootstate_new(const char *name)
++{
++ struct bootstate *bootstate;
++ int ret;
++
++ bootstate = xzalloc(sizeof(*bootstate));
++ safe_strncpy(bootstate->dev.name, name, MAX_DRIVER_NAME);
++ bootstate->name = bootstate->dev.name;
++ bootstate->dev.id = DEVICE_ID_DYNAMIC;
++ INIT_LIST_HEAD(&bootstate->targets);
++ INIT_LIST_HEAD(&bootstate->targets_unsorted);
++
++ ret = register_device(&bootstate->dev);
++ if (ret) {
++ free(bootstate);
++ return ERR_PTR(ret);
++ }
++
++ list_add_tail(&bootstate->list, &bootstate_list);
++
++ return bootstate;
++}
++
++void bootstate_release(struct bootstate *bootstate)
++{
++ list_del(&bootstate->list);
++ unregister_device(&bootstate->dev);
++ free(bootstate);
++}
++
++static int bootstate_target_compare(struct list_head *a, struct list_head *b)
++{
++ struct bootstate_target *bootstate_a = list_entry(a, struct bootstate_target, list);
++ struct bootstate_target *bootstate_b = list_entry(b, struct bootstate_target, list);
++
++ /* order descending */
++ return bootstate_a->priority >= bootstate_b->priority ? -1 : 1;
++}
++
++static void bootstate_target_add(struct bootstate *bootstate, struct bootstate_target *target)
++{
++ list_del(&target->list);
++ list_add_sort(&target->list, &bootstate->targets, bootstate_target_compare);
++}
++
++static int bootstate_variable_read_u32(const struct bootstate *bootstate,
++ const char *name, uint32_t *out_val)
++{
++ char *var;
++ int ret;
++
++ var = asprintf("%s.%s.%s", bootstate->backend->path, bootstate->name, name);
++ ret = getenv_uint(var, out_val);
++ free(var);
++
++ return ret;
++}
++
++static int bootstate_backend_variable_read_target_u32(const struct bootstate_backend *backend,
++ const struct bootstate *bootstate,
++ const struct bootstate_target *target,
++ const char *name, uint32_t *out_val)
++{
++ char *var;
++ int ret;
++
++ var = asprintf("%s.%s.%s.%s", backend->path, bootstate->name,
++ target->name, name);
++ ret = getenv_uint(var, out_val);
++ free(var);
++
++ return ret;
++}
++
++static int bootstate_backend_variable_write_target_u32(const struct bootstate_backend *backend,
++ const struct bootstate *bootstate,
++ const struct bootstate_target *target,
++ const char *name, uint32_t in_val)
++{
++ char *var;
++ char *val;
++ int ret;
++
++ var = asprintf("%s.%s.%s.%s", backend->path, bootstate->name,
++ target->name, name);
++ val = asprintf("%d", in_val);
++ ret = setenv(var, val);
++ free(val);
++ free(var);
++
++ return ret;
++}
++
++static int bootstate_variable_nv_init_u32(const struct bootstate_backend *backend,
++ const struct bootstate *bootstate,
++ const struct bootstate_target *target,
++ const char *name)
++{
++ char *var;
++ int ret;
++
++ var = asprintf("%s.%s.%s", bootstate->name, target->name, name);
++ ret = nvvar_add(var, "0");
++ free(var);
++
++ return ret;
++}
++
++static struct bootstate_target *bootstate_target_find(const struct bootstate *bootstate,
++ const char *name)
++{
++ struct bootstate_target *target;
++
++ list_for_each_entry(target, &bootstate->targets, list) {
++ if (!strcmp(target->name, name))
++ return target;
++ }
++
++ return ERR_PTR(-ENOENT);
++}
++
++static int bootstate_target_from_node(struct bootstate *bootstate, const struct device_node *node, bool create)
++{
++ struct bootstate_target *target;
++ char *name, *indexs;
++ int ret;
++
++ name = xstrdup(node->name);
++ indexs = strchr(name, '@');
++ if (indexs)
++ *indexs++ = 0;
++
++ if (create) {
++ /* create*/
++ target = xzalloc(sizeof(*target));
++
++ target->name = xstrdup(name);
++ list_add_tail(&target->list, &bootstate->targets);
++ list_add_tail(&target->list_unsorted,
++ &bootstate->targets_unsorted);
++ } else {
++ target = bootstate_target_find(bootstate, name);
++ if (IS_ERR(target)) {
++ int ret = PTR_ERR(target);
++ pr_err("no such boot target: %s: %s\n",
++ name, strerror(-ret));
++ return ret;
++ }
++ }
++
++ /* init */
++ ret = of_property_read_u32(node, "default_attempts",
++ &target->default_attempts);
++ if (ret)
++ return ret;
++
++ free(name);
++
++ return 0;
++}
++
++static int bootstate_from_node(struct bootstate *bootstate,
++ const struct device_node *node, bool create)
++{
++ struct device_node *child;
++ int ret;
++
++ for_each_child_of_node(node, child) {
++ ret = bootstate_target_from_node(bootstate, child, create);
++ if (ret)
++ return ret;
++ }
++
++ return 0;
++}
++
++static int bootstate_backend_load_one(const struct bootstate_backend *backend,
++ const struct bootstate *bootstate,
++ struct bootstate_target *target)
++{
++ uint32_t tmp;
++ int ret;
++
++ ret = bootstate_backend_variable_read_target_u32(backend, bootstate, target,
++ "remaining_attempts",
++ &target->remaining_attempts);
++ if (ret)
++ return ret;
++
++ ret = bootstate_backend_variable_read_target_u32(backend, bootstate, target,
++ "priority", &target->priority);
++ if (ret)
++ return ret;
++
++ ret = bootstate_backend_variable_read_target_u32(backend, bootstate, target,
++ "ok", &tmp);
++ if (ret)
++ return ret;
++
++ target->ok = !!tmp;
++
++ return ret;
++}
++
++static int bootstate_backend_load(struct bootstate_backend *backend,
++ struct bootstate *bootstate)
++{
++ struct bootstate_target *target;
++ int ret;
++
++ list_for_each_entry(target, &bootstate->targets_unsorted, list_unsorted) {
++ ret = bootstate_backend_load_one(backend, bootstate, target);
++ if (ret)
++ return ret;
++ bootstate_target_add(bootstate, target);
++ }
++
++ return 0;
++}
++
++static int bootstate_backend_save_one(const struct bootstate_backend *backend,
++ const struct bootstate *bootstate,
++ struct bootstate_target *target)
++{
++ int ret;
++
++ ret = bootstate_backend_variable_write_target_u32(backend, bootstate, target,
++ "remaining_attempts",
++ target->remaining_attempts);
++ if (ret)
++ return ret;
++
++ ret = bootstate_backend_variable_write_target_u32(backend, bootstate, target,
++ "priority", target->priority);
++ if (ret)
++ return ret;
++
++ ret = bootstate_backend_variable_write_target_u32(backend, bootstate, target,
++ "ok", target->ok);
++ if (ret)
++ return ret;
++
++ return 0;
++}
++
++static int bootstate_backend_save(const struct bootstate_backend *backend,
++ const struct bootstate *bootstate)
++{
++ struct bootstate_target *target;
++ int ret;
++
++ list_for_each_entry(target, &bootstate->targets, list) {
++ ret = bootstate_backend_save_one(backend, bootstate, target);
++ if (ret)
++ return ret;
++ }
++
++ return 0;
++}
++
++static int bootstate_backend_nv_init_one(const struct bootstate_backend *backend,
++ const struct bootstate *bootstate,
++ struct bootstate_target *target)
++{
++ int ret;
++
++ ret = bootstate_variable_nv_init_u32(backend, bootstate, target,
++ "remaining_attempts");
++ if (ret)
++ return ret;
++
++ ret = bootstate_variable_nv_init_u32(backend, bootstate, target,
++ "priority");
++ if (ret)
++ return ret;
++
++ ret = bootstate_variable_nv_init_u32(backend, bootstate, target,
++ "ok");
++ if (ret)
++ return ret;
++
++ return 0;
++}
++
++static int bootstate_backend_nv_init(struct bootstate_backend *backend,
++ struct bootstate *bootstate)
++{
++ struct bootstate_target *target;
++ int ret;
++
++ list_for_each_entry(target, &bootstate->targets_unsorted, list_unsorted) {
++ ret = bootstate_backend_nv_init_one(backend, bootstate, target);
++ if (ret)
++ return ret;
++ }
++
++ return 0;
++}
++
++static int bootstate_backend_nv_save(struct bootstate_backend *backend,
++ struct bootstate *bootstate)
++{
++ int ret;
++
++ ret = bootstate_backend_save(backend, bootstate);
++ if (ret)
++ return ret;
++
++ return envfs_save(NULL, NULL, 0);
++}
++
++static int bootstate_backend_nv_load(struct bootstate_backend *backend,
++ struct bootstate *bootstate)
++{
++ return bootstate_backend_load(backend, bootstate);
++}
++
++struct bootstate_backend_nv {
++ struct bootstate_backend backend;
++};
++
++int bootstate_backend_nv(struct bootstate *bootstate)
++{
++ struct bootstate_backend_nv *backend_nv;
++ struct bootstate_backend *backend;
++
++ if (bootstate->backend)
++ return -EBUSY;
++
++ backend_nv = xzalloc(sizeof(*backend_nv));
++ backend = &backend_nv->backend;
++
++ backend->load = bootstate_backend_nv_load;
++ backend->save = bootstate_backend_nv_save;
++ backend->name = "nv";
++ backend->path = "nv";
++
++ bootstate->backend = backend;
++
++ return bootstate_backend_nv_init(backend, bootstate);
++}
++
++struct bootstate_backend_state {
++ struct bootstate_backend backend;
++ struct state *state;
++};
++
++static int bootstate_backend_state_save(struct bootstate_backend *backend,
++ struct bootstate *bootstate)
++{
++ struct bootstate_backend_state *backend_state =
++ container_of(backend, struct bootstate_backend_state, backend);
++ int ret;
++
++ ret = bootstate_backend_save(backend, bootstate);
++ if (ret)
++ return ret;
++
++ return state_save(backend_state->state);
++}
++
++static int bootstate_backend_state_load(struct bootstate_backend *backend,
++ struct bootstate *bootstate)
++{
++ return bootstate_backend_load(backend, bootstate);
++}
++
++int bootstate_backend_state(struct bootstate *bootstate, const struct device_node *node)
++{
++ struct bootstate_backend_state *backend_state;
++ struct bootstate_backend *backend;
++ const struct device_node *state_node;
++ struct state *state;
++
++ if (bootstate->backend)
++ return -EBUSY;
++
++ state_node = of_parse_phandle(node, "backend", 0);
++ if (!state_node)
++ return -EINVAL;
++
++ state = state_by_node(state_node);
++ if (!state)
++ return -EPROBE_DEFER;
++
++ backend_state = xzalloc(sizeof(*backend_state));
++ backend_state->state = state;
++
++ backend = &backend_state->backend;
++ backend->load = bootstate_backend_state_load;
++ backend->save = bootstate_backend_state_save;
++ backend->name = "state";
++
++ bootstate->backend = backend;
++
++ return state_get_name(backend_state->state, &backend->path);
++}
++
++/*
++ * bootstate_new_from_node - create a new bootstate instance from a device_node
++ *
++ * @name The name of the new bootstate instance
++ * @node The device_node describing the new bootstate instance
++ */
++struct bootstate *bootstate_new_from_node(const char *name, const struct device_node *node)
++{
++ struct bootstate *bootstate;
++ int ret;
++
++ pr_debug("%s: node=%s, name=%s\n", __func__, node->full_name, name);
++
++ bootstate = bootstate_new(name);
++ if (!bootstate)
++ return ERR_PTR(-EINVAL);
++
++ ret = bootstate_from_node(bootstate, node, true);
++ if (ret) {
++ bootstate_release(bootstate);
++ return ERR_PTR(ret);
++ }
++
++ return bootstate;
++}
++
++/*
++ * bootstate_by_name - find a bootstate instance by name
++ *
++ * @name The name of the state instance
++ */
++struct bootstate *bootstate_by_name(const char *name)
++{
++ struct bootstate *bs;
++
++ list_for_each_entry(bs, &bootstate_list, list) {
++ if (!strcmp(name, bs->name))
++ return bs;
++ }
++
++ return NULL;
++}
++
++/*
++ * bootstate_load - load a bootstate from the backing store
++ *
++ * @bootstate The state instance to load
++ */
++static int bootstate_load(struct bootstate *bootstate)
++{
++ int ret;
++
++ if (!bootstate->backend)
++ return -ENOSYS;
++
++ ret = bootstate->backend->load(bootstate->backend, bootstate);
++ if (ret)
++ bootstate->dirty = 1;
++ else
++ bootstate->dirty = 0;
++
++ return ret;
++}
++
++/*
++ * bootstate_save - save a bootstate to the backing store
++ *
++ * @bootstate The bootstate instance to save
++ */
++static int bootstate_save(struct bootstate *bootstate)
++{
++ int ret;
++
++ if (!bootstate->dirty)
++ return 0;
++
++ if (!bootstate->backend)
++ return -ENOSYS;
++
++ ret = bootstate->backend->save(bootstate->backend, bootstate);
++ if (ret)
++ return ret;
++
++ bootstate->dirty = 0;
++
++ return 0;
++}
++
++void bootstate_info(void)
++{
++ struct bootstate *bootstate;
++
++ printf("registered bootstate instances:\n");
++
++ list_for_each_entry(bootstate, &bootstate_list, list) {
++ printf("%-20s ", bootstate->name);
++ printf("(backend: %s, path: %s)\n",
++ bootstate->backend->name, bootstate->backend->path);
++ }
++}
++
++#define __BF(arg) [__BOOTCHOOSER_FLAG_##arg##_SHIFT] = __stringify(arg)
++
++static const char * const bootstate_flags_str[] = {
++ __BF(ATTEMPTS_KEEP),
++ __BF(ATTEMPTS_DEC),
++ __BF(ATTEMPTS_RESET),
++ __BF(DEACTIVATE_ON_ZERO_ATTEMPTS),
++ __BF(VERBOSE),
++ __BF(DRYRUN),
++ __BF(RETRY_WITH_DEC),
++ __BF(WATCHDOG_ENABLE),
++ __BF(WATCHDOG_TIMEOUT_FROM_STATE),
++};
++
++#undef __BF
++
++#define pr(verbose, format, args...) \
++ ({ \
++ (verbose) ? pr_info((format), ##args) : 0; \
++ })
++
++void _pr_flags(struct bootstate *bootstate, unsigned flags)
++{
++ int i;
++
++ pr_info("%s: flags=0x%08x\n", bootstate->name, flags);
++
++ for (i = 0; i < ARRAY_SIZE(bootstate_flags_str); i++) {
++ if (flags & (1 << i))
++ pr_info("%s: -> %s\n", bootstate->name,
++ bootstate_flags_str[i]);
++ }
++}
++
++#define pr_flags(verbose, bootstate, flags) \
++ ({ \
++ (verbose) ? _pr_flags(bootstate, flags) : 0; \
++ })
++
++/*
++ * bootstate_get_target - create a new state instance from a device_node
++ *
++ * @bootstate the bootstate instance to work in
++ * @flags supported flags:
++ * BOOTCHOOSER_FLAG_VERBOSE
++ * BOOTCHOOSER_FLAG_ATTEMPTS_KEEP
++ * BOOTCHOOSER_FLAG_ATTEMPTS_DEC
++ * BOOTCHOOSER_FLAG_ATTEMPTS_RESET
++ * BOOTCHOOSER_FLAG_DEACTIVATE_ON_ZERO_ATTEMPTS
++ * @target_out a string to the choosen boot target is returned via
++ * this paramater
++ */
++int bootstate_get_target(struct bootstate *bootstate, unsigned flags, char **target_out)
++{
++ struct bootstate_target *target;
++ int ret;
++ bool found = false;
++ bool v = flags & BOOTCHOOSER_FLAG_VERBOSE;
++
++ pr_flags(v, bootstate, flags);
++
++ ret = bootstate_load(bootstate);
++ if (ret)
++ return ret;
++
++ if (flags & BOOTCHOOSER_FLAG_ATTEMPTS_RESET) {
++ list_for_each_entry(target, &bootstate->targets, list) {
++ if (target->priority == 0)
++ continue;
++
++ target->remaining_attempts = target->default_attempts;
++ bootstate->dirty = true;
++
++ pr(v, "%s: target: name=%s setting rem to %d due to %s\n",
++ bootstate->name, target->name, target->default_attempts,
++ bootstate_flags_str[__BOOTCHOOSER_FLAG_ATTEMPTS_RESET_SHIFT]);
++ }
++ pr(v, "%s: --------\n", bootstate->name);
++ }
++
++ list_for_each_entry(target, &bootstate->targets, list) {
++ pr_target(bootstate, target);
++
++ if (found)
++ continue;
++
++ if (target->priority == 0) {
++ pr(v, "%s: name=%s prio=%d - trying next\n",
++ bootstate->name, target->name, target->priority);
++ continue;
++ }
++
++ if (target->remaining_attempts == 0) {
++ pr(v, "%s: name=%s remaining attempts == 0 - trying next\n",
++ bootstate->name, target->name);
++ continue;
++ }
++
++ if (flags & BOOTCHOOSER_FLAG_ATTEMPTS_DEC) {
++ bootstate->dirty = true;
++ target->remaining_attempts--;
++
++ pr(v, "%s: name=%s decrementing remaining_attempts to %d due to %s\n",
++ bootstate->name, target->name,
++ target->remaining_attempts,
++ bootstate_flags_str[__BOOTCHOOSER_FLAG_ATTEMPTS_DEC_SHIFT]);
++
++ if ((target->remaining_attempts == 0) &&
++ (flags & BOOTCHOOSER_FLAG_DEACTIVATE_ON_ZERO_ATTEMPTS)) {
++ target->priority = 0;
++
++ pr(v, "%s: name=%s deactivating target (setting priority = 0) due to %s\n",
++ bootstate->name, target->name,
++ bootstate_flags_str[__BOOTCHOOSER_FLAG_DEACTIVATE_ON_ZERO_ATTEMPTS_SHIFT]);
++ }
++ }
++
++ found = true;
++ *target_out = strdup(target->name);
++ pr_debug("%s: selected target '%s'\n", __func__, target->name);
++ if (!v)
++ goto out;
++
++ pr(v, "%s: --- other bootsources ---\n", bootstate->name);
++ }
++
++ out:
++ bootstate_save(bootstate);
++
++ if (!found)
++ return -ENOENT;
++
++ return 0;
++}
++
++int bootstate_bootchooser(char *name, unsigned flags, unsigned timeout)
++{
++ struct bootstate *bootstate;
++ bool v = flags & BOOTCHOOSER_FLAG_VERBOSE;
++ char *target;
++ int ret;
++
++ if (!name)
++ name = "bootstate";
++
++ bootstate = bootstate_by_name(name);
++ if (!bootstate) {
++ pr_err("Bootstate '%s' not found.\n", name);
++ return -ENODEV;
++ }
++
++ if (flags & BOOTCHOOSER_FLAG_WATCHDOG_ENABLE) {
++ if (flags & BOOTCHOOSER_FLAG_WATCHDOG_TIMEOUT_FROM_STATE) {
++ ret = bootstate_variable_read_u32(bootstate, "watchdog_timeout",
++ &timeout);
++ if (ret)
++ return ret;
++ }
++
++ if (timeout != 0) {
++ pr(v, "%s: starting watchdog with timeout=%ds\n",
++ __func__, timeout);
++
++ ret = watchdog_set_timeout(timeout);
++ if (ret)
++ return ret;
++ }
++ }
++
++ while (true) {
++ char *cmd;
++
++ ret = bootstate_get_target(bootstate, flags, &target);
++ if (ret)
++ return ret;
++
++ cmd = asprintf("boot %s", target);
++ free(target);
++ pr_info("%srunning: %s...\n",
++ flags & BOOTCHOOSER_FLAG_DRYRUN ? "not " : "", cmd);
++ if (!(flags & BOOTCHOOSER_FLAG_DRYRUN))
++ ret = run_command(cmd);
++ free(cmd);
++
++ if (flags & BOOTCHOOSER_FLAG_RETRY_WITH_DEC) {
++ flags |= BOOTCHOOSER_FLAG_ATTEMPTS_DEC;
++ flags &= ~(BOOTCHOOSER_FLAG_ATTEMPTS_RESET |
++ BOOTCHOOSER_FLAG_ATTEMPTS_KEEP);
++ continue;
++ }
++
++ return ret;
++ }
++
++ return -ENOENT;
++}
+diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
+index 7a5b14697efd..2459051e1db1 100644
+--- a/drivers/misc/Kconfig
++++ b/drivers/misc/Kconfig
+@@ -19,4 +19,9 @@ config STATE_DRV
+ tristate "state driver"
+ depends on STATE
+
++config BOOTSTATE_DRV
++ tristate "bootstate driver"
++ depends on BOOTSTATE
++ depends on STATE
++
+ endmenu
+diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
+index 487e4b8ba2e5..603e14ebb5de 100644
+--- a/drivers/misc/Makefile
++++ b/drivers/misc/Makefile
+@@ -5,3 +5,4 @@
+ obj-$(CONFIG_JTAG) += jtag.o
+ obj-$(CONFIG_SRAM) += sram.o
+ obj-$(CONFIG_STATE_DRV) += state.o
++obj-$(CONFIG_BOOTSTATE_DRV) += bootstate.o
+diff --git a/drivers/misc/bootstate.c b/drivers/misc/bootstate.c
+new file mode 100644
+index 000000000000..3ec9b8fda86b
+--- /dev/null
++++ b/drivers/misc/bootstate.c
+@@ -0,0 +1,79 @@
++/*
++ * Copyright (C) 2013 Sascha Hauer <s.hauer@pengutronix.de>
++ * Copyright (C) 2015 Marc Kleine-Budde <mkl@pengutronix.de>
++ *
++ * 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; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ */
++
++#include <bootstate.h>
++#include <driver.h>
++#include <init.h>
++#include <malloc.h>
++#include <of.h>
++#include <printk.h>
++#include <string.h>
++
++#include <linux/err.h>
++
++static int bootstate_probe(struct device_d *dev)
++{
++ struct device_node *np = dev->device_node;
++ struct bootstate *bootstate;
++ const char *alias;
++ const char *backend_type = NULL;
++ int ret;
++
++ if (!np)
++ return -EINVAL;
++
++ alias = of_alias_get(np);
++ if (!alias)
++ alias = "bootstate";
++
++ bootstate = bootstate_new_from_node(alias, np);
++ if (IS_ERR(bootstate))
++ return PTR_ERR(bootstate);
++
++ of_property_read_string(np, "backend-type", &backend_type);
++ if (!strcmp(backend_type, "state")) {
++ ret = bootstate_backend_state(bootstate, np);
++ } else if (!strcmp(backend_type, "nv")) {
++ ret = bootstate_backend_nv(bootstate);
++ } else {
++ dev_warn(dev, "invalid backend type: %s\n", backend_type);
++ ret = -ENODEV;
++ goto out_release;
++ }
++
++ if (ret)
++ goto out_release;
++
++ return 0;
++
++ out_release:
++ bootstate_release(bootstate);
++ return ret;
++}
++
++static __maybe_unused struct of_device_id bootstate_ids[] = {
++ {
++ .compatible = "barebox,bootstate",
++ }, {
++ /* sentinel */
++ }
++};
++
++static struct driver_d bootstate_driver = {
++ .name = "bootstate",
++ .probe = bootstate_probe,
++ .of_compatible = DRV_OF_COMPAT(bootstate_ids),
++};
++device_platform_driver(bootstate_driver);
+diff --git a/include/bootstate.h b/include/bootstate.h
+new file mode 100644
+index 000000000000..22631c902f60
+--- /dev/null
++++ b/include/bootstate.h
+@@ -0,0 +1,39 @@
++#ifndef __BOOTSTATE_H
++#define __BOOTSTATE_H
++
++#include <of.h>
++
++struct bootstate *bootstate_new_from_node(const char *name, const struct device_node *node);
++struct bootstate *bootstate_find_by_name(const char *name);
++struct bootstate *bootstate_by_name(const char *name);
++void bootstate_release(struct bootstate *bootstate);
++void bootstate_info(void);
++int bootstate_backend_nv(struct bootstate *bootstate);
++int bootstate_backend_state(struct bootstate *bootstate, const struct device_node *node);
++
++enum {
++ __BOOTCHOOSER_FLAG_ATTEMPTS_KEEP_SHIFT,
++ __BOOTCHOOSER_FLAG_ATTEMPTS_DEC_SHIFT,
++ __BOOTCHOOSER_FLAG_ATTEMPTS_RESET_SHIFT,
++ __BOOTCHOOSER_FLAG_DEACTIVATE_ON_ZERO_ATTEMPTS_SHIFT,
++ __BOOTCHOOSER_FLAG_VERBOSE_SHIFT,
++ __BOOTCHOOSER_FLAG_DRYRUN_SHIFT,
++ __BOOTCHOOSER_FLAG_RETRY_WITH_DEC_SHIFT,
++ __BOOTCHOOSER_FLAG_WATCHDOG_ENABLE_SHIFT,
++ __BOOTCHOOSER_FLAG_WATCHDOG_TIMEOUT_FROM_STATE_SHIFT,
++};
++
++#define BOOTCHOOSER_FLAG_ATTEMPTS_KEEP (1 << __BOOTCHOOSER_FLAG_ATTEMPTS_KEEP_SHIFT)
++#define BOOTCHOOSER_FLAG_ATTEMPTS_DEC (1 << __BOOTCHOOSER_FLAG_ATTEMPTS_DEC_SHIFT)
++#define BOOTCHOOSER_FLAG_ATTEMPTS_RESET (1 << __BOOTCHOOSER_FLAG_ATTEMPTS_RESET_SHIFT)
++#define BOOTCHOOSER_FLAG_DEACTIVATE_ON_ZERO_ATTEMPTS (1 << __BOOTCHOOSER_FLAG_DEACTIVATE_ON_ZERO_ATTEMPTS_SHIFT)
++#define BOOTCHOOSER_FLAG_VERBOSE (1 << __BOOTCHOOSER_FLAG_VERBOSE_SHIFT)
++#define BOOTCHOOSER_FLAG_DRYRUN (1 << __BOOTCHOOSER_FLAG_DRYRUN_SHIFT)
++#define BOOTCHOOSER_FLAG_RETRY_WITH_DEC (1 << __BOOTCHOOSER_FLAG_RETRY_WITH_DEC_SHIFT)
++#define BOOTCHOOSER_FLAG_WATCHDOG_ENABLE (1 << __BOOTCHOOSER_FLAG_WATCHDOG_ENABLE_SHIFT)
++#define BOOTCHOOSER_FLAG_WATCHDOG_TIMEOUT_FROM_STATE (1 << __BOOTCHOOSER_FLAG_WATCHDOG_TIMEOUT_FROM_STATE_SHIFT)
++
++int bootstate_get_target(struct bootstate *bootstate, unsigned flags, char **target_out);
++int bootstate_bootchooser(char *name, unsigned flags, unsigned watchdog_timeout_s);
++
++#endif /* __BOOTSTATE_H */
diff --git a/configs/platform-v7a/patches/barebox-2016.05.0/0002-bootstate-Add-kernel-option-containing-the-system-th.patch b/configs/platform-v7a/patches/barebox-2016.05.0/0002-bootstate-Add-kernel-option-containing-the-system-th.patch
new file mode 100644
index 0000000..719cd50
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2016.05.0/0002-bootstate-Add-kernel-option-containing-the-system-th.patch
@@ -0,0 +1,43 @@
+From: Sascha Hauer <s.hauer@pengutronix.de>
+Date: Mon, 20 Jul 2015 20:44:00 +0200
+Subject: [PATCH] bootstate: Add kernel option containing the system that is
+ started
+
+This is useful to allow the userspace to determine which system
+is actually started without dissecting the root= option.
+
+Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
+---
+ common/bootstate.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/common/bootstate.c b/common/bootstate.c
+index 3dc18813064d..b0cb0183068a 100644
+--- a/common/bootstate.c
++++ b/common/bootstate.c
+@@ -753,12 +753,16 @@ int bootstate_bootchooser(char *name, unsigned flags, unsigned timeout)
+ }
+
+ while (true) {
+- char *cmd;
++ char *cmd, *system;
+
+ ret = bootstate_get_target(bootstate, flags, &target);
+ if (ret)
+ return ret;
+
++ system = asprintf("bootstate.active=%s", target);
++ globalvar_add_simple("linux.bootargs.bootchooser", system);
++ free(system);
++
+ cmd = asprintf("boot %s", target);
+ free(target);
+ pr_info("%srunning: %s...\n",
+@@ -766,6 +770,7 @@ int bootstate_bootchooser(char *name, unsigned flags, unsigned timeout)
+ if (!(flags & BOOTCHOOSER_FLAG_DRYRUN))
+ ret = run_command(cmd);
+ free(cmd);
++ globalvar_set_match("linux.bootargs.bootchooser", NULL);
+
+ if (flags & BOOTCHOOSER_FLAG_RETRY_WITH_DEC) {
+ flags |= BOOTCHOOSER_FLAG_ATTEMPTS_DEC;
diff --git a/configs/platform-v7a/patches/barebox-2016.05.0/0003-bootstate-separate-names-from-boot-targets.patch b/configs/platform-v7a/patches/barebox-2016.05.0/0003-bootstate-separate-names-from-boot-targets.patch
new file mode 100644
index 0000000..77f4949
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2016.05.0/0003-bootstate-separate-names-from-boot-targets.patch
@@ -0,0 +1,63 @@
+From: Sascha Hauer <s.hauer@pengutronix.de>
+Date: Thu, 23 Jul 2015 16:42:18 +0200
+Subject: [PATCH] bootstate: separate names from boot targets
+
+The name of a boot target and the device or script to boot may be two
+different things. Allow a 'boot' property in the boot targets.
+
+Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
+---
+ common/bootstate.c | 16 +++++++++++++---
+ 1 file changed, 13 insertions(+), 3 deletions(-)
+
+diff --git a/common/bootstate.c b/common/bootstate.c
+index b0cb0183068a..fde278262fa3 100644
+--- a/common/bootstate.c
++++ b/common/bootstate.c
+@@ -75,6 +75,7 @@ struct bootstate_target {
+ /* spec */
+ const char *name;
+ unsigned int default_attempts;
++ const char *boot;
+ };
+
+ static void pr_target(struct bootstate *bootstate, struct bootstate_target *target)
+@@ -205,7 +206,7 @@ static struct bootstate_target *bootstate_target_find(const struct bootstate *bo
+ return ERR_PTR(-ENOENT);
+ }
+
+-static int bootstate_target_from_node(struct bootstate *bootstate, const struct device_node *node, bool create)
++static int bootstate_target_from_node(struct bootstate *bootstate, struct device_node *node, bool create)
+ {
+ struct bootstate_target *target;
+ char *name, *indexs;
+@@ -217,10 +218,18 @@ static int bootstate_target_from_node(struct bootstate *bootstate, const struct
+ *indexs++ = 0;
+
+ if (create) {
++ const char *boot;
++
+ /* create*/
+ target = xzalloc(sizeof(*target));
+
+ target->name = xstrdup(name);
++
++ if (!of_property_read_string(node, "boot", &boot))
++ target->boot = xstrdup(boot);
++ else
++ target->boot = xstrdup(name);
++
+ list_add_tail(&target->list, &bootstate->targets);
+ list_add_tail(&target->list_unsorted,
+ &bootstate->targets_unsorted);
+@@ -701,8 +710,9 @@ int bootstate_get_target(struct bootstate *bootstate, unsigned flags, char **tar
+ }
+
+ found = true;
+- *target_out = strdup(target->name);
+- pr_debug("%s: selected target '%s'\n", __func__, target->name);
++ *target_out = strdup(target->boot);
++ pr_debug("%s: selected target '%s', boot '%s'\n",
++ __func__, target->name, target->boot);
+ if (!v)
+ goto out;
diff --git a/configs/platform-v7a/patches/barebox-2016.05.0/0004-bootstate-set-kernel-option-to-name-of-boot-target.patch b/configs/platform-v7a/patches/barebox-2016.05.0/0004-bootstate-set-kernel-option-to-name-of-boot-target.patch
new file mode 100644
index 0000000..1db763c
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2016.05.0/0004-bootstate-set-kernel-option-to-name-of-boot-target.patch
@@ -0,0 +1,119 @@
+From: Sascha Hauer <s.hauer@pengutronix.de>
+Date: Mon, 27 Jul 2015 13:39:45 +0200
+Subject: [PATCH] bootstate: set kernel option to name of boot target
+
+Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
+---
+ common/bootstate.c | 60 ++++++++++++++++++++++++++++++++----------------------
+ 1 file changed, 36 insertions(+), 24 deletions(-)
+
+diff --git a/common/bootstate.c b/common/bootstate.c
+index fde278262fa3..2dcc47cfa257 100644
+--- a/common/bootstate.c
++++ b/common/bootstate.c
+@@ -631,20 +631,8 @@ void _pr_flags(struct bootstate *bootstate, unsigned flags)
+ (verbose) ? _pr_flags(bootstate, flags) : 0; \
+ })
+
+-/*
+- * bootstate_get_target - create a new state instance from a device_node
+- *
+- * @bootstate the bootstate instance to work in
+- * @flags supported flags:
+- * BOOTCHOOSER_FLAG_VERBOSE
+- * BOOTCHOOSER_FLAG_ATTEMPTS_KEEP
+- * BOOTCHOOSER_FLAG_ATTEMPTS_DEC
+- * BOOTCHOOSER_FLAG_ATTEMPTS_RESET
+- * BOOTCHOOSER_FLAG_DEACTIVATE_ON_ZERO_ATTEMPTS
+- * @target_out a string to the choosen boot target is returned via
+- * this paramater
+- */
+-int bootstate_get_target(struct bootstate *bootstate, unsigned flags, char **target_out)
++static struct bootstate_target *bootstate_target_get(struct bootstate *bootstate,
++ unsigned flags)
+ {
+ struct bootstate_target *target;
+ int ret;
+@@ -655,7 +643,7 @@ int bootstate_get_target(struct bootstate *bootstate, unsigned flags, char **tar
+
+ ret = bootstate_load(bootstate);
+ if (ret)
+- return ret;
++ return ERR_PTR(ret);
+
+ if (flags & BOOTCHOOSER_FLAG_ATTEMPTS_RESET) {
+ list_for_each_entry(target, &bootstate->targets, list) {
+@@ -710,7 +698,6 @@ int bootstate_get_target(struct bootstate *bootstate, unsigned flags, char **tar
+ }
+
+ found = true;
+- *target_out = strdup(target->boot);
+ pr_debug("%s: selected target '%s', boot '%s'\n",
+ __func__, target->name, target->boot);
+ if (!v)
+@@ -723,7 +710,33 @@ int bootstate_get_target(struct bootstate *bootstate, unsigned flags, char **tar
+ bootstate_save(bootstate);
+
+ if (!found)
+- return -ENOENT;
++ return ERR_PTR(-ENOENT);
++
++ return target;
++}
++
++/*
++ * bootstate_get_target - create a new state instance from a device_node
++ *
++ * @bootstate the bootstate instance to work in
++ * @flags supported flags:
++ * BOOTCHOOSER_FLAG_VERBOSE
++ * BOOTCHOOSER_FLAG_ATTEMPTS_KEEP
++ * BOOTCHOOSER_FLAG_ATTEMPTS_DEC
++ * BOOTCHOOSER_FLAG_ATTEMPTS_RESET
++ * BOOTCHOOSER_FLAG_DEACTIVATE_ON_ZERO_ATTEMPTS
++ * @target_out a string to the choosen boot target is returned via
++ * this paramater
++ */
++int bootstate_get_target(struct bootstate *bootstate, unsigned flags, char **target_out)
++{
++ struct bootstate_target *target;
++
++ target = bootstate_target_get(bootstate, flags);
++ if (IS_ERR(target))
++ return PTR_ERR(target);
++
++ *target_out = strdup(target->boot);
+
+ return 0;
+ }
+@@ -732,7 +745,7 @@ int bootstate_bootchooser(char *name, unsigned flags, unsigned timeout)
+ {
+ struct bootstate *bootstate;
+ bool v = flags & BOOTCHOOSER_FLAG_VERBOSE;
+- char *target;
++ struct bootstate_target *target;
+ int ret;
+
+ if (!name)
+@@ -765,16 +778,15 @@ int bootstate_bootchooser(char *name, unsigned flags, unsigned timeout)
+ while (true) {
+ char *cmd, *system;
+
+- ret = bootstate_get_target(bootstate, flags, &target);
+- if (ret)
+- return ret;
++ target = bootstate_target_get(bootstate, flags);
++ if (IS_ERR(target))
++ return PTR_ERR(target);
+
+- system = asprintf("bootstate.active=%s", target);
++ system = asprintf("bootstate.active=%s", target->name);
+ globalvar_add_simple("linux.bootargs.bootchooser", system);
+ free(system);
+
+- cmd = asprintf("boot %s", target);
+- free(target);
++ cmd = asprintf("boot %s", target->boot);
+ pr_info("%srunning: %s...\n",
+ flags & BOOTCHOOSER_FLAG_DRYRUN ? "not " : "", cmd);
+ if (!(flags & BOOTCHOOSER_FLAG_DRYRUN))
diff --git a/configs/platform-v7a/patches/barebox-2016.05.0/0101-beaglebone-add-state-entrie-for-mmc0-and-mmc1.patch b/configs/platform-v7a/patches/barebox-2016.05.0/0101-beaglebone-add-state-entrie-for-mmc0-and-mmc1.patch
new file mode 100644
index 0000000..9761b58
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2016.05.0/0101-beaglebone-add-state-entrie-for-mmc0-and-mmc1.patch
@@ -0,0 +1,35 @@
+From: Michael Grzeschik <m.grzeschik@pengutronix.de>
+Date: Fri, 10 Jun 2016 14:02:30 +0200
+Subject: [PATCH] beaglebone: add state entrie for mmc0 and mmc1
+
+Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
+---
+ arch/arm/dts/am335x-bone-common.dtsi | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+diff --git a/arch/arm/dts/am335x-bone-common.dtsi b/arch/arm/dts/am335x-bone-common.dtsi
+index ef97d906616c..d14c6ded6a55 100644
+--- a/arch/arm/dts/am335x-bone-common.dtsi
++++ b/arch/arm/dts/am335x-bone-common.dtsi
+@@ -11,6 +11,21 @@
+ linux,stdout-path = &uart0;
+ };
+
++ bootstate: bootstate {
++ compatible = "barebox,bootstate";
++ backend-type = "nv";
++
++ system0 {
++ default_attempts = <3>;
++ boot = "mmc0";
++ };
++
++ system1 {
++ default_attempts = <3>;
++ boot = "mmc1";
++ };
++ };
++
+ cpus {
+ cpu@0 {
+ cpu0-supply = <&dcdc2_reg>;
diff --git a/configs/platform-v7a/patches/barebox-2016.05.0/0201-rpi2-add-basic-boot-spec-devicetree-support.patch b/configs/platform-v7a/patches/barebox-2016.05.0/0201-rpi2-add-basic-boot-spec-devicetree-support.patch
new file mode 100644
index 0000000..40d67be
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2016.05.0/0201-rpi2-add-basic-boot-spec-devicetree-support.patch
@@ -0,0 +1,462 @@
+From: Alexander Aring <aar@pengutronix.de>
+Date: Thu, 9 Jun 2016 11:26:03 +0200
+Subject: [PATCH] rpi2: add basic boot-spec devicetree support
+
+Signed-off-by: Alexander Aring <aar@pengutronix.de>
+---
+ arch/arm/dts/Makefile | 1 +
+ arch/arm/dts/bcm2835-rpi.dtsi | 60 +++++++++++
+ arch/arm/dts/bcm2836-rpi-2-b.dts | 35 +++++++
+ arch/arm/dts/bcm2836.dtsi | 78 ++++++++++++++
+ arch/arm/dts/bcm283x.dtsi | 212 +++++++++++++++++++++++++++++++++++++++
+ arch/arm/mach-bcm283x/core.c | 4 +-
+ 6 files changed, 389 insertions(+), 1 deletion(-)
+ create mode 100644 arch/arm/dts/bcm2835-rpi.dtsi
+ create mode 100644 arch/arm/dts/bcm2836-rpi-2-b.dts
+ create mode 100644 arch/arm/dts/bcm2836.dtsi
+ create mode 100644 arch/arm/dts/bcm283x.dtsi
+
+diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
+index b83c1109ef39..960d8aac3933 100644
+--- a/arch/arm/dts/Makefile
++++ b/arch/arm/dts/Makefile
+@@ -9,6 +9,7 @@ obj- += dummy.o
+
+ pbl-dtb-$(CONFIG_MACH_AFI_GF) += am335x-afi-gf.dtb.o
+ pbl-dtb-$(CONFIG_MACH_BEAGLEBONE) += am335x-bone.dtb.o am335x-boneblack.dtb.o am335x-bone-common.dtb.o
++pbl-dtb-$(CONFIG_MACH_RPI2) += bcm2836-rpi-2-b.dtb.o
+ pbl-dtb-$(CONFIG_MACH_CM_FX6) += imx6dl-cm-fx6.dtb.o imx6q-cm-fx6.dtb.o imx6q-utilite.dtb.o
+ pbl-dtb-$(CONFIG_MACH_DFI_FS700_M60) += imx6q-dfi-fs700-m60-6q.dtb.o imx6dl-dfi-fs700-m60-6s.dtb.o
+ pbl-dtb-$(CONFIG_MACH_DUCKBILL) += imx28-duckbill.dtb.o
+diff --git a/arch/arm/dts/bcm2835-rpi.dtsi b/arch/arm/dts/bcm2835-rpi.dtsi
+new file mode 100644
+index 000000000000..3afb9fefe2d1
+--- /dev/null
++++ b/arch/arm/dts/bcm2835-rpi.dtsi
+@@ -0,0 +1,60 @@
++/ {
++ memory {
++ reg = <0 0x10000000>;
++ };
++
++ leds {
++ compatible = "gpio-leds";
++
++ act {
++ label = "ACT";
++ default-state = "keep";
++ linux,default-trigger = "heartbeat";
++ };
++ };
++
++ soc {
++ firmware: firmware {
++ compatible = "raspberrypi,bcm2835-firmware";
++ mboxes = <&mailbox>;
++ };
++ };
++};
++
++&gpio {
++ pinctrl-names = "default";
++
++ gpioout: gpioout {
++ brcm,pins = <6>;
++ brcm,function = <BCM2835_FSEL_GPIO_OUT>;
++ };
++
++ alt0: alt0 {
++ brcm,pins = <0 1 2 3 4 5 7 8 9 10 11 14 15 40 45>;
++ brcm,function = <BCM2835_FSEL_ALT0>;
++ };
++
++ alt3: alt3 {
++ brcm,pins = <48 49 50 51 52 53>;
++ brcm,function = <BCM2835_FSEL_ALT3>;
++ };
++};
++
++&i2c0 {
++ status = "okay";
++ clock-frequency = <100000>;
++};
++
++&i2c1 {
++ status = "okay";
++ clock-frequency = <100000>;
++};
++
++&i2c2 {
++ status = "okay";
++};
++
++&sdhci {
++ status = "okay";
++ bus-width = <4>;
++};
+diff --git a/arch/arm/dts/bcm2836-rpi-2-b.dts b/arch/arm/dts/bcm2836-rpi-2-b.dts
+new file mode 100644
+index 000000000000..ff946661bd13
+--- /dev/null
++++ b/arch/arm/dts/bcm2836-rpi-2-b.dts
+@@ -0,0 +1,35 @@
++/dts-v1/;
++#include "bcm2836.dtsi"
++#include "bcm2835-rpi.dtsi"
++
++/ {
++ compatible = "raspberrypi,2-model-b", "brcm,bcm2836";
++ model = "Raspberry Pi 2 Model B";
++
++ memory {
++ reg = <0 0x40000000>;
++ };
++
++ leds {
++ act {
++ gpios = <&gpio 47 0>;
++ };
++
++ pwr {
++ label = "PWR";
++ gpios = <&gpio 35 0>;
++ default-state = "keep";
++ linux,default-trigger = "default-on";
++ };
++ };
++};
++
++&gpio {
++ pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>;
++
++ /* I2S interface */
++ i2s_alt0: i2s_alt0 {
++ brcm,pins = <18 19 20 21>;
++ brcm,function = <BCM2835_FSEL_ALT0>;
++ };
++};
+diff --git a/arch/arm/dts/bcm2836.dtsi b/arch/arm/dts/bcm2836.dtsi
+new file mode 100644
+index 000000000000..9d0651d8f373
+--- /dev/null
++++ b/arch/arm/dts/bcm2836.dtsi
+@@ -0,0 +1,78 @@
++#include "bcm283x.dtsi"
++
++/ {
++ compatible = "brcm,bcm2836";
++
++ soc {
++ ranges = <0x7e000000 0x3f000000 0x1000000>,
++ <0x40000000 0x40000000 0x00001000>;
++ dma-ranges = <0xc0000000 0x00000000 0x3f000000>;
++
++ local_intc: local_intc {
++ compatible = "brcm,bcm2836-l1-intc";
++ reg = <0x40000000 0x100>;
++ interrupt-controller;
++ #interrupt-cells = <1>;
++ interrupt-parent = <&local_intc>;
++ };
++
++ arm-pmu {
++ compatible = "arm,cortex-a7-pmu";
++ interrupt-parent = <&local_intc>;
++ interrupts = <9>;
++ };
++ };
++
++ timer {
++ compatible = "arm,armv7-timer";
++ interrupt-parent = <&local_intc>;
++ interrupts = <0>, // PHYS_SECURE_PPI
++ <1>, // PHYS_NONSECURE_PPI
++ <3>, // VIRT_PPI
++ <2>; // HYP_PPI
++ always-on;
++ };
++
++ cpus: cpus {
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ v7_cpu0: cpu@0 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a7";
++ reg = <0xf00>;
++ clock-frequency = <800000000>;
++ };
++
++ v7_cpu1: cpu@1 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a7";
++ reg = <0xf01>;
++ clock-frequency = <800000000>;
++ };
++
++ v7_cpu2: cpu@2 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a7";
++ reg = <0xf02>;
++ clock-frequency = <800000000>;
++ };
++
++ v7_cpu3: cpu@3 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a7";
++ reg = <0xf03>;
++ clock-frequency = <800000000>;
++ };
++ };
++};
++
++/* Make the BCM2835-style global interrupt controller be a child of the
++ * CPU-local interrupt controller.
++ */
++&intc {
++ compatible = "brcm,bcm2836-armctrl-ic";
++ reg = <0x7e00b200 0x200>;
++ interrupt-parent = <&local_intc>;
++ interrupts = <8>;
++};
+diff --git a/arch/arm/dts/bcm283x.dtsi b/arch/arm/dts/bcm283x.dtsi
+new file mode 100644
+index 000000000000..971e741e5467
+--- /dev/null
++++ b/arch/arm/dts/bcm283x.dtsi
+@@ -0,0 +1,212 @@
++#include <dt-bindings/pinctrl/bcm2835.h>
++#include <dt-bindings/clock/bcm2835.h>
++#include "skeleton.dtsi"
++
++/* This include file covers the common peripherals and configuration between
++ * bcm2835 and bcm2836 implementations, leaving the CPU configuration to
++ * bcm2835.dtsi and bcm2836.dtsi.
++ */
++
++/ {
++ compatible = "brcm,bcm2835";
++ model = "BCM2835";
++ interrupt-parent = <&intc>;
++
++ chosen {
++ bootargs = "earlyprintk console=ttyAMA0";
++ };
++
++ soc {
++ compatible = "simple-bus";
++ #address-cells = <1>;
++ #size-cells = <1>;
++
++ timer@7e003000 {
++ compatible = "brcm,bcm2835-system-timer";
++ reg = <0x7e003000 0x1000>;
++ interrupts = <1 0>, <1 1>, <1 2>, <1 3>;
++ /* This could be a reference to BCM2835_CLOCK_TIMER,
++ * but we don't have the driver using the common clock
++ * support yet.
++ */
++ clock-frequency = <1000000>;
++ };
++
++ dma: dma@7e007000 {
++ compatible = "brcm,bcm2835-dma";
++ reg = <0x7e007000 0xf00>;
++ interrupts = <1 16>,
++ <1 17>,
++ <1 18>,
++ <1 19>,
++ <1 20>,
++ <1 21>,
++ <1 22>,
++ <1 23>,
++ <1 24>,
++ <1 25>,
++ <1 26>,
++ <1 27>,
++ <1 28>;
++
++ #dma-cells = <1>;
++ brcm,dma-channel-mask = <0x7f35>;
++ };
++
++ intc: interrupt-controller@7e00b200 {
++ compatible = "brcm,bcm2835-armctrl-ic";
++ reg = <0x7e00b200 0x200>;
++ interrupt-controller;
++ #interrupt-cells = <2>;
++ };
++
++ watchdog@7e100000 {
++ compatible = "brcm,bcm2835-pm-wdt";
++ reg = <0x7e100000 0x28>;
++ };
++
++ clocks: cprman@7e101000 {
++ compatible = "brcm,bcm2835-cprman";
++ #clock-cells = <1>;
++ reg = <0x7e101000 0x2000>;
++
++ /* CPRMAN derives everything from the platform's
++ * oscillator.
++ */
++ clocks = <&clk_osc>;
++ };
++
++ rng@7e104000 {
++ compatible = "brcm,bcm2835-rng";
++ reg = <0x7e104000 0x10>;
++ };
++
++ mailbox: mailbox@7e00b800 {
++ compatible = "brcm,bcm2835-mbox";
++ reg = <0x7e00b880 0x40>;
++ interrupts = <0 1>;
++ #mbox-cells = <0>;
++ };
++
++ gpio: gpio@7e200000 {
++ compatible = "brcm,bcm2835-gpio";
++ reg = <0x7e200000 0xb4>;
++ /*
++ * The GPIO IP block is designed for 3 banks of GPIOs.
++ * Each bank has a GPIO interrupt for itself.
++ * There is an overall "any bank" interrupt.
++ * In order, these are GIC interrupts 17, 18, 19, 20.
++ * Since the BCM2835 only has 2 banks, the 2nd bank
++ * interrupt output appears to be mirrored onto the
++ * 3rd bank's interrupt signal.
++ * So, a bank0 interrupt shows up on 17, 20, and
++ * a bank1 interrupt shows up on 18, 19, 20!
++ */
++ interrupts = <2 17>, <2 18>, <2 19>, <2 20>;
++
++ gpio-controller;
++ #gpio-cells = <2>;
++
++ interrupt-controller;
++ #interrupt-cells = <2>;
++ };
++
++ uart0: uart@7e201000 {
++ compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell";
++ reg = <0x7e201000 0x1000>;
++ interrupts = <2 25>;
++ clocks = <&clocks BCM2835_CLOCK_UART>,
++ <&clocks BCM2835_CLOCK_VPU>;
++ clock-names = "uartclk", "apb_pclk";
++ arm,primecell-periphid = <0x00241011>;
++ };
++
++ i2s: i2s@7e203000 {
++ compatible = "brcm,bcm2835-i2s";
++ reg = <0x7e203000 0x20>,
++ <0x7e101098 0x02>;
++
++ dmas = <&dma 2>,
++ <&dma 3>;
++ dma-names = "tx", "rx";
++ status = "disabled";
++ };
++
++ spi: spi@7e204000 {
++ compatible = "brcm,bcm2835-spi";
++ reg = <0x7e204000 0x1000>;
++ interrupts = <2 22>;
++ clocks = <&clocks BCM2835_CLOCK_VPU>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ i2c0: i2c@7e205000 {
++ compatible = "brcm,bcm2835-i2c";
++ reg = <0x7e205000 0x1000>;
++ interrupts = <2 21>;
++ clocks = <&clocks BCM2835_CLOCK_VPU>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ aux: aux@0x7e215000 {
++ compatible = "brcm,bcm2835-aux";
++ #clock-cells = <1>;
++ reg = <0x7e215000 0x8>;
++ clocks = <&clocks BCM2835_CLOCK_VPU>;
++ };
++
++ sdhci: sdhci@7e300000 {
++ compatible = "brcm,bcm2835-sdhci";
++ reg = <0x7e300000 0x100>;
++ interrupts = <2 30>;
++ clocks = <&clocks BCM2835_CLOCK_EMMC>;
++ status = "disabled";
++ };
++
++ i2c1: i2c@7e804000 {
++ compatible = "brcm,bcm2835-i2c";
++ reg = <0x7e804000 0x1000>;
++ interrupts = <2 21>;
++ clocks = <&clocks BCM2835_CLOCK_VPU>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ i2c2: i2c@7e805000 {
++ compatible = "brcm,bcm2835-i2c";
++ reg = <0x7e805000 0x1000>;
++ interrupts = <2 21>;
++ clocks = <&clocks BCM2835_CLOCK_VPU>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ usb@7e980000 {
++ compatible = "brcm,bcm2835-usb";
++ reg = <0x7e980000 0x10000>;
++ interrupts = <1 9>;
++ };
++ };
++
++ clocks {
++ compatible = "simple-bus";
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ /* The oscillator is the root of the clock tree. */
++ clk_osc: clock@3 {
++ compatible = "fixed-clock";
++ reg = <3>;
++ #clock-cells = <0>;
++ clock-output-names = "osc";
++ clock-frequency = <19200000>;
++ };
++
++ };
++};
+diff --git a/arch/arm/mach-bcm283x/core.c b/arch/arm/mach-bcm283x/core.c
+index 64f37813883a..f11221dd6685 100644
+--- a/arch/arm/mach-bcm283x/core.c
++++ b/arch/arm/mach-bcm283x/core.c
+@@ -42,15 +42,17 @@ static int bcm2835_clk_init(void)
+
+ clk = clk_fixed("uart0-pl0110", 3 * 1000 * 1000);
+ clk_register_clkdev(clk, NULL, "uart0-pl0110");
++ clk_register_clkdev(clk, NULL, "3f201000.uart");
+
+ clk = clk_fixed("bcm2835-cs", 1 * 1000 * 1000);
+ clk_register_clkdev(clk, NULL, "bcm2835-cs");
++ clk_register_clkdev(clk, NULL, "3f003000.timer");
+
+ add_generic_device("bcm2835-cs", DEVICE_ID_SINGLE, NULL, BCM2835_ST_BASE, 0x1C, IORESOURCE_MEM, NULL);
+
+ return 0;
+ }
+-postcore_initcall(bcm2835_clk_init);
++pure_initcall(bcm2835_clk_init);
+
+ void bcm2835_register_uart(void)
+ {
diff --git a/configs/platform-v7a/patches/barebox-2016.05.0/0301-Release-2016.05.0-customers-pengutronix-multi_v7-201.patch b/configs/platform-v7a/patches/barebox-2016.05.0/0301-Release-2016.05.0-customers-pengutronix-multi_v7-201.patch
new file mode 100644
index 0000000..76e12c8
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2016.05.0/0301-Release-2016.05.0-customers-pengutronix-multi_v7-201.patch
@@ -0,0 +1,22 @@
+From: Michael Grzeschik <m.grzeschik@pengutronix.de>
+Date: Fri, 10 Jun 2016 14:10:58 +0200
+Subject: [PATCH] Release 2016.05.0/customers/pengutronix/multi_v7/20160610-1
+
+Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 93f1d17d99d2..b844aa674da5 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,7 +1,7 @@
+ VERSION = 2016
+ PATCHLEVEL = 05
+ SUBLEVEL = 0
+-EXTRAVERSION =
++EXTRAVERSION =-20160610-1
+ NAME = None
+
+ # *DOCUMENTATION*
diff --git a/configs/platform-v7a/patches/barebox-2016.05.0/series b/configs/platform-v7a/patches/barebox-2016.05.0/series
new file mode 100644
index 0000000..a93c9d2
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2016.05.0/series
@@ -0,0 +1,22 @@
+# umpf-base: v2016.05.0
+# umpf-name: 2016.05.0/customers/pengutronix/multi_v7
+# umpf-version: 2016.05.0/customers/pengutronix/multi_v7/20160610-1
+# umpf-topic: v2016.05.0/topic/bootstate
+# umpf-hashinfo: bfaa55682a5f53a0f679ab08e6b55350594ed047
+# umpf-topic-range: f5142b8564005d95324e4c326dbc390ce85e8bef..bfaa55682a5f53a0f679ab08e6b55350594ed047
+0001-bootstate-add-framework-for-redundant-boot-scenarios.patch
+0002-bootstate-Add-kernel-option-containing-the-system-th.patch
+0003-bootstate-separate-names-from-boot-targets.patch
+0004-bootstate-set-kernel-option-to-name-of-boot-target.patch
+# umpf-topic: v2016.05.0/customers/pengutronix/beaglebone
+# umpf-hashinfo: 9cbaeb8cfaa8b5e7837725df242aacccbbc5fa53
+# umpf-topic-range: bfaa55682a5f53a0f679ab08e6b55350594ed047..c95ad802cdf09922b56027338b85cd58de732c2a
+0101-beaglebone-add-state-entrie-for-mmc0-and-mmc1.patch
+# umpf-topic: v2016.05.0/customers/pengutronix/rpi2
+# umpf-hashinfo: 2df94ba7d6c5680032d7da8c1554cf01c7ca845b
+# umpf-topic-range: c95ad802cdf09922b56027338b85cd58de732c2a..64afca484be01d3a0329b289fe4667608495e14b
+0201-rpi2-add-basic-boot-spec-devicetree-support.patch
+# umpf-release: 2016.05.0/customers/pengutronix/multi_v7/20160610-1
+# umpf-topic-range: 64afca484be01d3a0329b289fe4667608495e14b..92019e24a71b3a5484927b84863d0f2bf34aae51
+0301-Release-2016.05.0-customers-pengutronix-multi_v7-201.patch
+# umpf-end
diff --git a/configs/platform-v7a/platformconfig b/configs/platform-v7a/platformconfig
new file mode 100644
index 0000000..9288b4b
--- /dev/null
+++ b/configs/platform-v7a/platformconfig
@@ -0,0 +1,278 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# PTXdist 2016.05.0
+#
+PTXCONF__platformconfig_MAGIC__=y
+
+#
+# ------------------------------------
+#
+
+#
+# Target Platform Configuration
+#
+
+#
+# ------------------------------------
+#
+PTXCONF_PLATFORM="v7a"
+PTXCONF_PLATFORM_VERSION="-${PTXDIST_BSP_AUTOVERSION}"
+PTXCONF_RUNTIME=y
+PTXCONF_BUILDTIME=y
+PTXCONF_PLATFORMCONFIG_VERSION="2016.05.0"
+
+#
+# architecture
+#
+# PTXCONF_ARCH_ALPHA is not set
+# PTXCONF_ARCH_AVR32 is not set
+# PTXCONF_ARCH_AVR is not set
+PTXCONF_ARCH_ARM=y
+# PTXCONF_ARCH_ARM64 is not set
+# PTXCONF_ARCH_BLACKFIN is not set
+# PTXCONF_ARCH_X86 is not set
+# PTXCONF_ARCH_MINGW is not set
+# PTXCONF_ARCH_PPC is not set
+# PTXCONF_ARCH_M68K is not set
+# PTXCONF_ARCH_SPARC is not set
+# PTXCONF_ARCH_MICROBLAZE is not set
+# PTXCONF_ARCH_MIPS is not set
+# PTXCONF_ARCH_CRIS is not set
+# PTXCONF_ARCH_PARISC is not set
+# PTXCONF_ARCH_SH is not set
+PTXCONF_ARCH_SUPPORTS_ENDIAN_BIG=y
+PTXCONF_ARCH_SUPPORTS_ENDIAN_LITTLE=y
+# PTXCONF_ENDIAN_BIG is not set
+PTXCONF_ENDIAN_LITTLE=y
+PTXCONF_ARCH_ARM_V6=y
+# PTXCONF_ARCH_ARM_IWMMXT is not set
+PTXCONF_ARCH_ARM_NEON=y
+PTXCONF_HAS_HARDFLOAT=y
+PTXCONF_HAS_MMU=y
+PTXCONF_SIZEOF_LONG_DOUBLE="8"
+PTXCONF_ARCH_STRING="arm"
+
+#
+# paths & directories
+#
+PTXCONF_SYSROOT_TARGET="${PTXDIST_PLATFORMDIR}/sysroot-target"
+PTXCONF_SYSROOT_HOST="${PTXDIST_PLATFORMDIR}/sysroot-host"
+PTXCONF_SYSROOT_CROSS="${PTXDIST_PLATFORMDIR}/sysroot-cross"
+
+#
+# toolchain
+#
+PTXCONF_CROSSCHAIN_VENDOR="OSELAS.Toolchain-2014.12.2"
+PTXCONF_CROSSCHAIN_CHECK="4.9.2"
+PTXCONF_LIBC_GLIBC=y
+# PTXCONF_LIBC_UCLIBC is not set
+PTXCONF_GLIBC_VERSION="2.20"
+PTXCONF_GNU_TARGET="arm-v7a-linux-gnueabihf"
+PTXCONF_COMPILER_PREFIX="${PTXCONF_GNU_TARGET}-"
+PTXCONF_COMPILER_PREFIX_KERNEL="${PTXCONF_COMPILER_PREFIX}"
+PTXCONF_COMPILER_PREFIX_BOOTLOADER="${PTXCONF_COMPILER_PREFIX}"
+
+#
+# hardening options
+#
+# PTXCONF_TARGET_HARDEN_STACK is not set
+PTXCONF_TARGET_HARDEN_FORTIFY=y
+PTXCONF_TARGET_HARDEN_RELRO=y
+PTXCONF_TARGET_HARDEN_BINDNOW=y
+# PTXCONF_TARGET_HARDEN_PIE is not set
+
+#
+# extra toolchain options
+#
+# PTXCONF_TARGET_LINKER_HASH_DEFAULT is not set
+# PTXCONF_TARGET_LINKER_HASH_SYSV is not set
+PTXCONF_TARGET_LINKER_HASH_GNU=y
+# PTXCONF_TARGET_LINKER_HASH_BOTH is not set
+# PTXCONF_TARGET_LINKER_AS_NEEDED is not set
+# PTXCONF_TARGET_DEBUG_OFF is not set
+PTXCONF_TARGET_DEBUG_KEEP=y
+# PTXCONF_TARGET_DEBUG_ENABLE is not set
+# PTXCONF_TARGET_DEBUG_FULL is not set
+PTXCONF_TARGET_COMPILER_RECORD_SWITCHES=y
+PTXCONF_TARGET_EXTRA_CPPFLAGS=""
+PTXCONF_TARGET_EXTRA_CFLAGS=""
+PTXCONF_TARGET_EXTRA_CXXFLAGS=""
+PTXCONF_TARGET_EXTRA_LDFLAGS=""
+PTXCONF_KERNEL=y
+PTXCONF_KERNEL_XPKG=y
+PTXCONF_KERNEL_INSTALL=y
+PTXCONF_KERNEL_MODULES=y
+PTXCONF_KERNEL_MODULES_INSTALL=y
+PTXCONF_KERNEL_MODULES_BUILD="modules"
+PTXCONF_KERNEL_VERSION="4.6"
+PTXCONF_KERNEL_MD5="d2927020e24a76da4ab482a8bc3e9ef3"
+PTXCONF_KERNEL_ARCH_STRING="arm"
+# PTXCONF_KERNEL_IMAGE_BZ is not set
+PTXCONF_KERNEL_IMAGE_Z=y
+# PTXCONF_KERNEL_IMAGE_XIP is not set
+# PTXCONF_KERNEL_IMAGE_U is not set
+# PTXCONF_KERNEL_IMAGE_VM is not set
+# PTXCONF_KERNEL_IMAGE_VMLINUX is not set
+# PTXCONF_KERNEL_IMAGE_RAW is not set
+# PTXCONF_KERNEL_IMAGE_SIMPLE is not set
+PTXCONF_KERNEL_IMAGE="zImage"
+PTXCONF_KERNEL_DTC=y
+PTXCONF_KERNEL_XZ=y
+PTXCONF_KERNEL_LZOP=y
+
+#
+# patching & configuration
+#
+PTXCONF_KERNEL_SERIES="series"
+PTXCONF_KERNEL_CONFIG="kernelconfig"
+
+#
+# Development features
+#
+PTXCONF_KERNEL_EXTRA_MAKEVARS="CONFIG_DEBUG_SECTION_MISMATCH=y"
+PTXCONF_DTC=y
+PTXCONF_DTC_INSTALL_OFTREE=y
+PTXCONF_DTC_OFTREE_DTS_PATH="${KERNEL_DIR}/arch/${PTXCONF_KERNEL_ARCH_STRING}/boot/dts"
+PTXCONF_DTC_OFTREE_DTS="am335x-bone.dts am335x-boneblack.dts vexpress-v2p-ca9.dts bcm2836-rpi-2-b.dts"
+PTXCONF_DTC_KERNEL=y
+PTXCONF_DTC_EXTRA_ARGS=""
+
+#
+# console options
+#
+PTXCONF_CONSOLE_NAME="ttyO0"
+PTXCONF_CONSOLE_SPEED="115200"
+
+#
+# extra kernel
+#
+
+#
+# bootloaders
+#
+# PTXCONF_AT91BOOTSTRAP is not set
+# PTXCONF_AT91BOOTSTRAP2 is not set
+PTXCONF_BAREBOX_RPI2=y
+PTXCONF_BAREBOX_RPI2_NEEDS_HOST_LZOP=y
+PTXCONF_BAREBOX_ARCH_STRING="arm"
+PTXCONF_BAREBOX=y
+PTXCONF_BAREBOX_VERSION="2016.05.0"
+PTXCONF_BAREBOX_MD5="4df21ad084faa54ea0310288c7b03049"
+PTXCONF_BAREBOX_CONFIG="barebox.config"
+PTXCONF_BAREBOX_EXTRA_ENV=y
+PTXCONF_BAREBOX_EXTRA_ENV_PATH="${PTXDIST_PLATFORMCONFIGDIR}/barebox-defaultenv"
+# PTXCONF_BAREBOX_BAREBOXENV is not set
+# PTXCONF_BAREBOX_BAREBOXCRC32 is not set
+# PTXCONF_BAREBOX_KERNEL_INSTALL is not set
+# PTXCONF_BAREBOX_BAREBOXIMD is not set
+# PTXCONF_BAREBOX_NEEDS_HOST_LIBUSB is not set
+# PTXCONF_BAREBOX_NEEDS_HOST_OPENSSL is not set
+# PTXCONF_BAREBOX_NEEDS_HOST_IMX_CST is not set
+# PTXCONF_BAREBOX_NEEDS_HOST_LZOP is not set
+PTXCONF_BAREBOX_MLO=y
+PTXCONF_BAREBOX_MLO_VERSION="${PTXCONF_BAREBOX_VERSION}"
+PTXCONF_BAREBOX_MLO_MD5="${PTXCONF_BAREBOX_MD5}"
+PTXCONF_BAREBOX_MLO_ARCH_STRING="arm"
+PTXCONF_BAREBOX_MLO_CONFIG="barebox_mlo.config"
+PTXCONF_BAREBOX_MLO_NEEDS_HOST_LZOP=y
+PTXCONF_BOOTLOADER=y
+# PTXCONF_GRUB is not set
+# PTXCONF_HOST_MXS_UTILS is not set
+
+#
+# i.MX HAB
+#
+# PTXCONF_U_BOOT_V2 is not set
+# PTXCONF_U_BOOT is not set
+# PTXCONF_X_LOAD is not set
+
+#
+# bootloader spec entries
+#
+PTXCONF_BLSPEC_BONEBLACK=y
+PTXCONF_BLSPEC_BONEWHITE=y
+# PTXCONF_BLSPEC_ENTRY is not set
+PTXCONF_BLSPEC_RPI2=y
+
+#
+# image creation options
+#
+# PTXCONF_IMAGE_BOOT_MLO_VFAT is not set
+# PTXCONF_IMAGE_CPIO is not set
+# PTXCONF_IMAGE_CPIO_GZ is not set
+# PTXCONF_IMAGE_EXT2 is not set
+# PTXCONF_IMAGE_HD is not set
+# PTXCONF_IMAGE_VDI is not set
+
+#
+# ipkg options
+#
+# PTXCONF_IMAGE_IPKG_PUSH_TO_REPOSITORY is not set
+# PTXCONF_IMAGE_INSTALL_FROM_IPKG_REPOSITORY is not set
+PTXCONF_IMAGE_IPKG_INDEX=y
+PTXCONF_IMAGE_XPKG_EXTRA_ARGS=""
+# PTXCONF_IMAGE_JFFS2 is not set
+PTXCONF_IMAGE_KERNEL=y
+
+#
+# 'rootfs in kernel image' is incompatible with 'install kernel into /boot'
+#
+PTXCONF_IMAGE_KERNEL_INSTALL_EARLY=y
+# PTXCONF_IMAGE_KERNEL_LZOP is not set
+# PTXCONF_IMAGE_SQUASHFS is not set
+# PTXCONF_IMAGE_TGZ is not set
+# PTXCONF_IMAGE_UBI is not set
+# PTXCONF_IMAGE_UBIFS is not set
+# PTXCONF_IMAGE_UIMAGE is not set
+
+#
+# new image creation options
+#
+# PTXCONF_IMAGE_BOOT_MLO is not set
+PTXCONF_IMAGE_BOOT_VFAT=y
+PTXCONF_IMAGE_BOOT_VFAT_GPU_MEM=64
+PTXCONF_IMAGE_HDIMG=y
+# PTXCONF_IMAGE_HDIMG_NONE is not set
+# PTXCONF_IMAGE_HDIMG_BAREBOX is not set
+PTXCONF_IMAGE_HDIMG_VFAT=y
+# PTXCONF_IMAGE_ROOT_CPIO_GZ is not set
+# PTXCONF_IMAGE_ROOT_CPIO is not set
+PTXCONF_IMAGE_ROOT_EXT=y
+PTXCONF_IMAGE_ROOT_EXT_SIZE="125%"
+# PTXCONF_IMAGE_ROOT_EXT_EXT2 is not set
+# PTXCONF_IMAGE_ROOT_EXT_EXT3 is not set
+PTXCONF_IMAGE_ROOT_EXT_EXT4=y
+PTXCONF_IMAGE_ROOT_EXT_TYPE="ext4"
+PTXCONF_IMAGE_ROOT_TGZ=y
+# PTXCONF_IMAGE_ROOT_UBI is not set
+# PTXCONF_IMAGE_ROOT_UBIFS is not set
+# PTXCONF_HOST_ACL is not set
+# PTXCONF_HOST_ATTR is not set
+# PTXCONF_HOST_BZIP2 is not set
+# PTXCONF_HOST_CDRKIT is not set
+# PTXCONF_HOST_CMAKE is not set
+# PTXCONF_HOST_CRAMFS is not set
+PTXCONF_HOST_DOSFSTOOLS=y
+PTXCONF_HOST_E2FSPROGS=y
+PTXCONF_HOST_GENEXT2FS=y
+PTXCONF_HOST_GENIMAGE=y
+# PTXCONF_HOST_GENPART is not set
+# PTXCONF_HOST_GETTEXT is not set
+# PTXCONF_HOST_LIBBLKID is not set
+# PTXCONF_HOST_LIBCAP is not set
+PTXCONF_HOST_LIBCONFUSE=y
+PTXCONF_HOST_LIBKMOD=y
+PTXCONF_HOST_LIBLZO=y
+# PTXCONF_HOST_LIBUSB is not set
+# PTXCONF_HOST_LIBUUID is not set
+PTXCONF_HOST_LZOP=y
+# PTXCONF_HOST_MKELFIMAGE is not set
+# PTXCONF_HOST_MTD_UTILS is not set
+PTXCONF_HOST_MTOOLS=y
+# PTXCONF_HOST_OPENSSL is not set
+# PTXCONF_HOST_SQUASHFS_TOOLS is not set
+# PTXCONF_HOST_U_BOOT_TOOLS is not set
+# PTXCONF_HOST_UTIL_LINUX_NG is not set
+# PTXCONF_HOST_XL_TOOLS is not set
+PTXCONF_HOST_XZ=y
+# PTXCONF_HOST_ZLIB is not set
diff --git a/configs/platform-v7a/platforms/barebox-rpi2.in b/configs/platform-v7a/platforms/barebox-rpi2.in
new file mode 100644
index 0000000..c72762c
--- /dev/null
+++ b/configs/platform-v7a/platforms/barebox-rpi2.in
@@ -0,0 +1,20 @@
+## SECTION=bootloader
+
+menuconfig BAREBOX_RPI2
+ tristate
+ prompt "Barebox (rpi2)"
+ select HOST_LZOP if BAREBOX_RPI2_NEEDS_HOST_LZOP
+ help
+ Raspberry Pi 2 support for barebox.
+
+if BAREBOX_RPI2
+
+config BAREBOX_RPI2_NEEDS_HOST_LZOP
+ prompt "barebox rpi2 needs lzop"
+ bool
+ help
+ The barebox rpi2 can be compressed. Select this if lzop
+ is used in order to compile lzop for your development
+ host.
+
+endif
diff --git a/configs/platform-v7a/platforms/barebox_mlo.in b/configs/platform-v7a/platforms/barebox_mlo.in
new file mode 100644
index 0000000..184aa52
--- /dev/null
+++ b/configs/platform-v7a/platforms/barebox_mlo.in
@@ -0,0 +1,45 @@
+## SECTION=bootloader
+
+menuconfig BAREBOX_MLO
+ prompt "barebox mlo "
+ select HOST_LZOP if BAREBOX_MLO_NEEDS_HOST_LZOP
+ bool
+ help
+ Build mlo from barebox sources.
+
+if BAREBOX_MLO
+
+config BAREBOX_MLO_VERSION
+ prompt "barebox version" if !BAREBOX
+ string
+ default "${PTXCONF_BAREBOX_VERSION}" if BAREBOX
+ default "2014.01.0" if !BAREBOX
+
+config BAREBOX_MLO_MD5
+ prompt "barebox source md5sum" if !BAREBOX
+ string
+ default "${PTXCONF_BAREBOX_MD5}" if BAREBOX
+
+config BAREBOX_MLO_ARCH_STRING
+ string
+ default "arm" if ARCH_ARM
+ default "blackfin" if ARCH_BLACKFIN
+ default "ppc" if ARCH_PPC
+ default "x86" if ARCH_X86
+
+config BAREBOX_MLO_CONFIG
+ prompt "mlo config file"
+ string
+ default "barebox_mlo.config"
+ help
+ This entry specifies the .config file used to compile mlo.
+
+config BAREBOX_MLO_NEEDS_HOST_LZOP
+ prompt "barebox mlo needs lzop"
+ bool
+ help
+ The barebox mlo dtb's can be compressed. Select this if
+ lzop is used in order to compile lzop for your development
+ host.
+
+endif
diff --git a/configs/platform-v7a/platforms/blspec-boneblack.in b/configs/platform-v7a/platforms/blspec-boneblack.in
new file mode 100644
index 0000000..a4eda10
--- /dev/null
+++ b/configs/platform-v7a/platforms/blspec-boneblack.in
@@ -0,0 +1,5 @@
+## SECTION=blspec
+
+config BLSPEC_BONEBLACK
+ tristate
+ prompt "/loader/entries/boneblack.conf bootloader spec entry"
diff --git a/configs/platform-v7a/platforms/blspec-bonewhite.in b/configs/platform-v7a/platforms/blspec-bonewhite.in
new file mode 100644
index 0000000..8408cd8
--- /dev/null
+++ b/configs/platform-v7a/platforms/blspec-bonewhite.in
@@ -0,0 +1,5 @@
+## SECTION=blspec
+
+config BLSPEC_BONEWHITE
+ tristate
+ prompt "/loader/entries/bonewhite.conf bootloader spec entry"
diff --git a/configs/platform-v7a/platforms/blspec-rpi2.in b/configs/platform-v7a/platforms/blspec-rpi2.in
new file mode 100644
index 0000000..e5b0952
--- /dev/null
+++ b/configs/platform-v7a/platforms/blspec-rpi2.in
@@ -0,0 +1,5 @@
+## SECTION=blspec
+
+config BLSPEC_RPI2
+ tristate
+ prompt "/loader/entries/rpi2.conf bootloader spec entry"
diff --git a/configs/platform-v7a/platforms/image-boot-vfat.in b/configs/platform-v7a/platforms/image-boot-vfat.in
new file mode 100644
index 0000000..6ac5dd9
--- /dev/null
+++ b/configs/platform-v7a/platforms/image-boot-vfat.in
@@ -0,0 +1,22 @@
+## SECTION=image2
+
+config IMAGE_BOOT_VFAT
+ tristate
+ select HOST_GENIMAGE
+ select HOST_MTOOLS
+ select HOST_DOSFSTOOLS
+ select KERNEL
+ prompt "Generate image/boot.vfat"
+ help
+ FIXME
+
+if IMAGE_BOOT_VFAT
+
+config IMAGE_BOOT_VFAT_GPU_MEM
+ int
+ default 64
+ prompt "GPU memory"
+ help
+ GPU memory in megabyte. Sets the memory split between the ARM
+ and GPU. ARM gets the remaining memory. Min 16.
+endif
diff --git a/configs/platform-v7a/projectroot/loader/entries/boneblack.conf b/configs/platform-v7a/projectroot/loader/entries/boneblack.conf
new file mode 100644
index 0000000..028184f
--- /dev/null
+++ b/configs/platform-v7a/projectroot/loader/entries/boneblack.conf
@@ -0,0 +1,5 @@
+title BeagleBone Black - Pengutronix-DistroKit
+version 4.6
+options root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rw
+linux /boot/zImage
+devicetree /boot/am335x-boneblack.dtb
diff --git a/configs/platform-v7a/projectroot/loader/entries/bonewhite.conf b/configs/platform-v7a/projectroot/loader/entries/bonewhite.conf
new file mode 100644
index 0000000..727a263
--- /dev/null
+++ b/configs/platform-v7a/projectroot/loader/entries/bonewhite.conf
@@ -0,0 +1,5 @@
+title BeagleBone White - Pengutronix-DistroKit
+version 4.6
+options root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rw
+linux /boot/zImage
+devicetree /boot/am335x-bone.dtb
diff --git a/configs/platform-v7a/projectroot/loader/entries/rpi2.conf b/configs/platform-v7a/projectroot/loader/entries/rpi2.conf
new file mode 100644
index 0000000..05992c0
--- /dev/null
+++ b/configs/platform-v7a/projectroot/loader/entries/rpi2.conf
@@ -0,0 +1,5 @@
+title Raspberry Pi 2 - Pengutronix-DistroKit
+version 4.6
+options loglevel=5 systemd.log_level=warning systemd.show_status=auto root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rw
+linux /boot/zImage
+devicetree /boot/bcm2836-rpi-2-b.dtb
diff --git a/configs/platform-v7a/qemu-common b/configs/platform-v7a/qemu-common
new file mode 100755
index 0000000..86e2584
--- /dev/null
+++ b/configs/platform-v7a/qemu-common
@@ -0,0 +1,92 @@
+#!/bin/bash
+#
+# This is sourced by the run scripts.
+
+platformconfig=selected_platformconfig
+# fallback to platformconfig in the same dir as this script
+if [ ! -e "$platformconfig" ]; then
+ platformconfig=$(dirname $0)/platformconfig
+fi
+
+#
+# we need information about the platform
+#
+if [ ! -e "$platformconfig" ]; then
+ echo "error: selected_platformconfig does not exist"
+ echo " please use 'ptxdist platform ...' or 'ptxdist --platformconfig=...'"
+ exit 1
+fi
+
+source $platformconfig
+
+if [ -n "${PTXCONF_PLATFORM}" ]; then
+ PTXDIST_PLATFORMDIR="./platform-${PTXCONF_PLATFORM}"
+else
+ PTXDIST_PLATFORMDIR="."
+fi
+
+if [ ! -e "${PTXDIST_PLATFORMDIR}/images/linuximage" ]; then
+ echo "error: run 'ptxdist go' first"
+ exit 1
+fi
+
+if [ ! -e "${PTXDIST_PLATFORMDIR}/images/hd.img" ]; then
+ echo "error: run 'ptxdist images' first"
+ exit 1
+fi
+
+#if [ ! -e "${PTXDIST_PLATFORMDIR}/images/nor0.img" ]; then
+# echo "error: run 'ptxdist images' first"
+# exit 1
+#fi
+
+# the emulator to run
+QEMU_EXEC="${PTXDIST_PLATFORMDIR}/sysroot-host/bin/qemu-system-arm"
+
+if [ ! -e "${QEMU_EXEC}" ]; then
+ echo "error: enable and install 'host-qemu' first"
+ exit 1
+fi
+
+# disable this, if you want to have some graphics output
+QEMU_NOGRAPHIC=-nographic
+
+# Machine to emulate: The default kernel is prepared to run on "versatile pb"
+QEMU_MACHINE=vexpress-a9
+
+#
+# 'user mode' network related settings
+#
+PLATFORM_IP="10.0.2.7"
+
+#
+# *_INTERNAL_PORT: the port a service would connect (in the emulated system)
+# *_EXTERNAL_PORT: port QEMU opens at the host side to give access to the ${*_INTERNAL_PORT}
+#
+TELNET_INTERNAL_PORT=23
+TELNET_EXTERNAL_PORT=20023
+
+HTTP_INTERNAL_PORT=80
+HTTP_EXTERNAL_PORT=20080
+
+if [ -z "${VDE_SOCKET}" ]; then
+ for dir in $(ls -d /var/run/vde2/*.ctl 2>/dev/null); do
+ if [ -r "${dir}" ]; then
+ VDE_SOCKET="${dir}"
+ fi
+ done
+fi
+if [ -n "${VDE_SOCKET}" ]; then
+ if ${QEMU_EXEC} --help | grep -q -- '-net vde'; then
+ QEMU_NET="-net vde,vlan=1,sock=${VDE_SOCKET}"
+ fi
+fi
+if [ -z "${QEMU_NET}" ]; then
+ QEMU_NET="-net user,vlan=1"
+ PLATFORM_IP=""
+fi
+
+QEMU_REDIR=" \
+ -redir tcp:${TELNET_EXTERNAL_PORT}:${PLATFORM_IP}:${TELNET_INTERNAL_PORT} \
+ -redir tcp:${HTTP_EXTERNAL_PORT}:${PLATFORM_IP}:${HTTP_INTERNAL_PORT} \
+"
diff --git a/configs/platform-v7a/rpi-firmware/LICENCE.broadcom b/configs/platform-v7a/rpi-firmware/LICENCE.broadcom
new file mode 100644
index 0000000..89b5c0c
--- /dev/null
+++ b/configs/platform-v7a/rpi-firmware/LICENCE.broadcom
@@ -0,0 +1,30 @@
+Copyright (c) 2006, Broadcom Corporation.
+Copyright (c) 2015, Raspberry Pi (Trading) Ltd
+All rights reserved.
+
+Redistribution. Redistribution and use in binary form, without
+modification, are permitted provided that the following conditions are
+met:
+
+* This software may only be used for the purposes of developing for,
+ running or using a Raspberry Pi device.
+* Redistributions must reproduce the above copyright notice and the
+ following disclaimer in the documentation and/or other materials
+ provided with the distribution.
+* Neither the name of Broadcom Corporation nor the names of its suppliers
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
diff --git a/configs/platform-v7a/rpi-firmware/bootcode.bin b/configs/platform-v7a/rpi-firmware/bootcode.bin
new file mode 100644
index 0000000..59c9256
--- /dev/null
+++ b/configs/platform-v7a/rpi-firmware/bootcode.bin
Binary files differ
diff --git a/configs/platform-v7a/rpi-firmware/config.txt b/configs/platform-v7a/rpi-firmware/config.txt
new file mode 100644
index 0000000..a71e4a6
--- /dev/null
+++ b/configs/platform-v7a/rpi-firmware/config.txt
@@ -0,0 +1,14 @@
+# Set barebox as third state bootloader
+kernel=barebox.bin-rpi2
+# Set stdv mode to PAL (as used in Europe)
+sdtv_mode=2
+# Force the monitor to HDMI mode so that sound will be sent over HDMI cable
+hdmi_drive=2
+# Set monitor mode to DMT
+hdmi_group=1
+# Set monitor resolution to 1080p60
+hdmi_mode=16
+# No overscan
+disable_overscan=1
+# GPU memory in megabyte
+gpu_mem=@GPU_MEM@
diff --git a/configs/platform-v7a/rpi-firmware/fixup.dat b/configs/platform-v7a/rpi-firmware/fixup.dat
new file mode 100644
index 0000000..8ff5889
--- /dev/null
+++ b/configs/platform-v7a/rpi-firmware/fixup.dat
Binary files differ
diff --git a/configs/platform-v7a/rpi-firmware/fixup_cd.dat b/configs/platform-v7a/rpi-firmware/fixup_cd.dat
new file mode 100644
index 0000000..0cebf99
--- /dev/null
+++ b/configs/platform-v7a/rpi-firmware/fixup_cd.dat
Binary files differ
diff --git a/configs/platform-v7a/rpi-firmware/fixup_db.dat b/configs/platform-v7a/rpi-firmware/fixup_db.dat
new file mode 100644
index 0000000..f2ace7c
--- /dev/null
+++ b/configs/platform-v7a/rpi-firmware/fixup_db.dat
Binary files differ
diff --git a/configs/platform-v7a/rpi-firmware/fixup_x.dat b/configs/platform-v7a/rpi-firmware/fixup_x.dat
new file mode 100644
index 0000000..563a503
--- /dev/null
+++ b/configs/platform-v7a/rpi-firmware/fixup_x.dat
Binary files differ
diff --git a/configs/platform-v7a/rpi-firmware/start.elf b/configs/platform-v7a/rpi-firmware/start.elf
new file mode 100644
index 0000000..9a40ea5
--- /dev/null
+++ b/configs/platform-v7a/rpi-firmware/start.elf
Binary files differ
diff --git a/configs/platform-v7a/rpi-firmware/start_cd.elf b/configs/platform-v7a/rpi-firmware/start_cd.elf
new file mode 100644
index 0000000..2a703c4
--- /dev/null
+++ b/configs/platform-v7a/rpi-firmware/start_cd.elf
Binary files differ
diff --git a/configs/platform-v7a/rpi-firmware/start_db.elf b/configs/platform-v7a/rpi-firmware/start_db.elf
new file mode 100644
index 0000000..be0b00a
--- /dev/null
+++ b/configs/platform-v7a/rpi-firmware/start_db.elf
Binary files differ
diff --git a/configs/platform-v7a/rpi-firmware/start_x.elf b/configs/platform-v7a/rpi-firmware/start_x.elf
new file mode 100644
index 0000000..63e8032
--- /dev/null
+++ b/configs/platform-v7a/rpi-firmware/start_x.elf
Binary files differ
diff --git a/configs/platform-v7a/rules/barebox-rpi2.make b/configs/platform-v7a/rules/barebox-rpi2.make
new file mode 100644
index 0000000..218140e
--- /dev/null
+++ b/configs/platform-v7a/rules/barebox-rpi2.make
@@ -0,0 +1,92 @@
+# -*-makefile-*-
+#
+# Copyright (C) 2016 by Alexander Aring <aar@pengutronix.de>
+#
+# See CREDITS for details about who has contributed to this project.
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+#
+# We provide this package
+#
+PACKAGES-$(PTXCONF_BAREBOX_RPI2) += barebox-rpi2
+
+#
+# Paths and names
+#
+BAREBOX_RPI2_VERSION := 2016.05.0
+BAREBOX_RPI2_MD5 :=
+BAREBOX_RPI2 := barebox-$(BAREBOX_RPI2_VERSION)
+BAREBOX_RPI2_SUFFIX := tar.bz2
+BAREBOX_RPI2_DIR := $(BUILDDIR)/barebox-rpi2-$(BAREBOX_RPI2_VERSION)
+BAREBOX_RPI2_CONFIG := $(PTXDIST_PLATFORMCONFIGDIR)/barebox-rpi2.config.$(BAREBOX_RPI2_VERSION)
+BAREBOX_RPI2_LICENSE := GPL-2.0
+BAREBOX_RPI2_URL := $(call barebox-url, BAREBOX_RPI2)
+BAREBOX_RPI2_SOURCE := $(SRCDIR)/$(BAREBOX_RPI2).$(BAREBOX_RPI2_SUFFIX)
+
+# ----------------------------------------------------------------------------
+# Prepare
+# ----------------------------------------------------------------------------
+
+BAREBOX_RPI2_BLACKLIST := \
+ TARGET_HARDEN_RELRO \
+ TARGET_HARDEN_BINDNOW \
+ TARGET_HARDEN_PIE \
+ TARGET_DEBUG
+
+BAREBOX_RPI2_CONF_ENV := KCONFIG_NOTIMESTAMP=1
+BAREBOX_RPI2_CONF_OPT := $(call barebox-opts, BAREBOX_RPI2)
+
+BAREBOX_RPI2_MAKE_ENV := $(BAREBOX_RPI2_CONF_ENV)
+BAREBOX_RPI2_MAKE_OPT := $(BAREBOX_RPI2_CONF_OPT)
+
+BAREBOX_RPI2_IMAGES := barebox.bin
+BAREBOX_RPI2_IMAGES := $(addprefix $(BAREBOX_RPI2_DIR)/,$(BAREBOX_RPI2_IMAGES))
+
+ifdef PTXCONF_BAREBOX_RPI2
+$(BAREBOX_RPI2_CONFIG):
+ @echo
+ @echo "****************************************************************************"
+ @echo " Please generate a bareboxconfig with 'ptxdist menuconfig barebox-rpi2'"
+ @echo "****************************************************************************"
+ @echo
+ @echo
+ @exit 1
+endif
+
+$(STATEDIR)/barebox-rpi2.prepare: $(BAREBOX_RPI2_CONFIG)
+
+# ----------------------------------------------------------------------------
+# Install
+# ----------------------------------------------------------------------------
+
+BAREBOX_RPI2_INSTALL_OPT := \
+ $(call barebox-opts, BAREBOX_RPI2)
+
+$(STATEDIR)/barebox-rpi2.install:
+ @$(call targetinfo)
+ @$(foreach image, $(BAREBOX_RPI2_IMAGES), \
+ install -m 644 \
+ $(image) $(IMAGEDIR)/$(notdir $(image))-rpi2;)
+ @$(call touch)
+
+# ----------------------------------------------------------------------------
+# Clean
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/barebox-rpi2.clean:
+ @$(call targetinfo)
+ @$(call clean_pkg, BAREBOX_RPI2)
+ @$(foreach image, $(BAREBOX_RPI2_IMAGES), \
+ rm -fv $(IMAGEDIR)/$(notdir $(image))-rpi2;)
+
+# ----------------------------------------------------------------------------
+# oldconfig / menuconfig
+# ----------------------------------------------------------------------------
+
+barebox-rpi2_oldconfig barebox-rpi2_menuconfig barebox-rpi2_nconfig: $(STATEDIR)/barebox-rpi2.extract
+ @$(call world/kconfig, BAREBOX_RPI2, $(subst barebox-rpi2_,,$@))
+
+# vim: syntax=make
diff --git a/configs/platform-v7a/rules/blspec-boneblack.make b/configs/platform-v7a/rules/blspec-boneblack.make
new file mode 100644
index 0000000..841b13a
--- /dev/null
+++ b/configs/platform-v7a/rules/blspec-boneblack.make
@@ -0,0 +1,38 @@
+# -*-makefile-*-
+#
+# Copyright (C) 2016 by Michael Grzeschik <mgr@pengutronix.de>
+#
+# See CREDITS for details about who has contributed to this project.
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+#
+# We provide this package
+#
+PACKAGES-$(PTXCONF_BLSPEC_BONEBLACK) += blspec-boneblack
+
+BLSPEC_BONEBLACK_VERSION := 4.6
+
+# ----------------------------------------------------------------------------
+# Target-Install
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/blspec-boneblack.targetinstall:
+ @$(call targetinfo)
+
+ @$(call install_init, blspec-boneblack)
+ @$(call install_fixup,blspec-boneblack,PRIORITY,optional)
+ @$(call install_fixup,blspec-boneblack,SECTION,base)
+ @$(call install_fixup,blspec-boneblack,AUTHOR,"Michael Grzeschik <mgr@pengutronix.de>")
+ @$(call install_fixup,blspec-boneblack,DESCRIPTION,missing)
+
+ @$(call install_alternative, blspec-boneblack, 0, 0, 0644, \
+ /loader/entries/boneblack.conf)
+
+ @$(call install_finish,blspec-boneblack)
+
+ @$(call touch)
+
+# vim: syntax=make
diff --git a/configs/platform-v7a/rules/blspec-bonewhite.make b/configs/platform-v7a/rules/blspec-bonewhite.make
new file mode 100644
index 0000000..1d7cbea
--- /dev/null
+++ b/configs/platform-v7a/rules/blspec-bonewhite.make
@@ -0,0 +1,38 @@
+# -*-makefile-*-
+#
+# Copyright (C) 2016 by Michael Grzeschik <mgr@pengutronix.de>
+#
+# See CREDITS for details about who has contributed to this project.
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+#
+# We provide this package
+#
+PACKAGES-$(PTXCONF_BLSPEC_BONEWHITE) += blspec-bonewhite
+
+BLSPEC_BONEWHITE_VERSION := 4.6
+
+# ----------------------------------------------------------------------------
+# Target-Install
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/blspec-bonewhite.targetinstall:
+ @$(call targetinfo)
+
+ @$(call install_init, blspec-bonewhite)
+ @$(call install_fixup,blspec-bonewhite,PRIORITY,optional)
+ @$(call install_fixup,blspec-bonewhite,SECTION,base)
+ @$(call install_fixup,blspec-bonewhite,AUTHOR,"Michael Grzeschik <mgr@pengutronix.de>")
+ @$(call install_fixup,blspec-bonewhite,DESCRIPTION,missing)
+
+ @$(call install_alternative, blspec-bonewhite, 0, 0, 0644, \
+ /loader/entries/bonewhite.conf)
+
+ @$(call install_finish,blspec-bonewhite)
+
+ @$(call touch)
+
+# vim: syntax=make
diff --git a/configs/platform-v7a/rules/blspec-rpi2.make b/configs/platform-v7a/rules/blspec-rpi2.make
new file mode 100644
index 0000000..4013220
--- /dev/null
+++ b/configs/platform-v7a/rules/blspec-rpi2.make
@@ -0,0 +1,38 @@
+# -*-makefile-*-
+#
+# Copyright (C) 2016 by Alexander Aring <aar@pengutronix.de>
+#
+# See CREDITS for details about who has contributed to this project.
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+#
+# We provide this package
+#
+PACKAGES-$(PTXCONF_BLSPEC_RPI2) += blspec-rpi2
+
+BLSPEC_RPI2_VERSION := 4.6
+
+# ----------------------------------------------------------------------------
+# Target-Install
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/blspec-rpi2.targetinstall:
+ @$(call targetinfo)
+
+ @$(call install_init, blspec-rpi2)
+ @$(call install_fixup,blspec-rpi2,PRIORITY,optional)
+ @$(call install_fixup,blspec-rpi2,SECTION,base)
+ @$(call install_fixup,blspec-rpi2,AUTHOR,"Alexander Aring <aar@pengutronix.de>")
+ @$(call install_fixup,blspec-rpi2,DESCRIPTION,missing)
+
+ @$(call install_alternative, blspec-rpi2, 0, 0, 0644, \
+ /loader/entries/rpi2.conf)
+
+ @$(call install_finish,blspec-rpi2)
+
+ @$(call touch)
+
+# vim: syntax=make
diff --git a/configs/platform-v7a/rules/image-boot-vfat.make b/configs/platform-v7a/rules/image-boot-vfat.make
new file mode 100644
index 0000000..185c2b7
--- /dev/null
+++ b/configs/platform-v7a/rules/image-boot-vfat.make
@@ -0,0 +1,49 @@
+# -*-makefile-*-
+#
+# Copyright (C) 2012 by Michael Olbrich <m.olbrich@pengutronix.de>
+#
+# See CREDITS for details about who has contributed to this project.
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+#
+# We provide this package
+#
+IMAGE_PACKAGES-$(PTXCONF_IMAGE_BOOT_VFAT) += image-boot-vfat
+
+#
+# Paths and names
+#
+IMAGE_BOOT_VFAT := image-boot-vfat
+IMAGE_BOOT_VFAT_DIR := $(BUILDDIR)/$(IMAGE_BOOT_VFAT)
+IMAGE_BOOT_VFAT_IMAGE := $(IMAGEDIR)/boot.vfat
+IMAGE_BOOT_VFAT_DATA := \
+ $(wildcard $(PTXDIST_PLATFORMCONFIGDIR)/rpi-firmware/*.bin) \
+ $(wildcard $(PTXDIST_PLATFORMCONFIGDIR)/rpi-firmware/*.elf) \
+ $(wildcard $(PTXDIST_PLATFORMCONFIGDIR)/rpi-firmware/*.dat) \
+ $(wildcard $(PTXDIST_PLATFORMCONFIGDIR)/rpi-firmware/config.txt)
+IMAGE_BOOT_VFAT_CONFIG := boot-vfat.config
+
+# ----------------------------------------------------------------------------
+# Image
+# ----------------------------------------------------------------------------
+
+define squote_and_comma
+$(subst $(ptx/def/space),$(comma) ,$(addsuffix $(ptx/def/squote),$(addprefix $(ptx/def/squote),$(1))))
+endef
+
+
+IMAGE_BOOT_VFAT_ENV := \
+ FIRMWARE_RPI2="$(call squote_and_comma,$(IMAGE_BOOT_VFAT_DATA))"
+
+$(IMAGE_BOOT_VFAT_IMAGE):
+ @$(call targetinfo)
+ @GPU_MEM=$(PTXCONF_IMAGE_BOOT_VFAT_GPU_MEM) \
+ ptxd_replace_magic "$(PTXDIST_PLATFORMCONFIGDIR)/rpi-firmware/config.txt" > \
+ "$(PTXDIST_TEMPDIR)/config.txt"
+ @$(call image/genimage, IMAGE_BOOT_VFAT)
+ @$(call finish)
+
+# vim: syntax=make
diff --git a/configs/platform-v7a/rules/post/genimage-fixup.make b/configs/platform-v7a/rules/post/genimage-fixup.make
new file mode 100644
index 0000000..67c5deb
--- /dev/null
+++ b/configs/platform-v7a/rules/post/genimage-fixup.make
@@ -0,0 +1,3 @@
+$(IMAGEDIR)/boot.vfat: $(STATEDIR)/kernel.targetinstall.post
+$(IMAGEDIR)/boot.vfat: $(STATEDIR)/barebox.targetinstall.post
+$(IMAGEDIR)/boot.vfat: $(STATEDIR)/barebox-rpi2.targetinstall.post
diff --git a/configs/platform-v7a/run b/configs/platform-v7a/run
new file mode 100755
index 0000000..eba8197
--- /dev/null
+++ b/configs/platform-v7a/run
@@ -0,0 +1,21 @@
+#!/bin/bash
+#
+# For some information about how to work with qemu for ARM, please
+# refer: http://fedoraproject.org/wiki/Architectures/ARM/HowToQemu
+
+. $(dirname $0)/qemu-common
+
+# do the job
+${QEMU_EXEC} ${QEMU_NOGRAPHIC} \
+ -M ${QEMU_MACHINE} \
+ -m 1024 \
+ -no-reboot \
+ -net nic,vlan=1 \
+ ${QEMU_NET} \
+ ${QEMU_REDIR} \
+ -kernel ${PTXDIST_PLATFORMDIR}/images/linuximage \
+ -dtb ${PTXDIST_PLATFORMDIR}/images/vexpress-v2p-ca9.dtb \
+ -drive if=sd,file=${PTXDIST_PLATFORMDIR}/images/hd.img,format=raw \
+ -smp 1 \
+ -append "console=ttyAMA0 root=/dev/mmcblk0p2 rootfs=ext2 rw mem=1024M rootwait loglevel=5 rootfstype=ext4 systemd.log_level=warning systemd.show_status=auto"
+
diff --git a/configs/platform-v7a/run-nfs b/configs/platform-v7a/run-nfs
new file mode 100755
index 0000000..d1675fb
--- /dev/null
+++ b/configs/platform-v7a/run-nfs
@@ -0,0 +1,20 @@
+#!/bin/bash
+#
+# For some information about how to work with qemu for ARM, please
+# refer: http://fedoraproject.org/wiki/Architectures/ARM/HowToQemu
+
+. $(dirname $0)/qemu-common
+
+# do the job
+${QEMU_EXEC} ${QEMU_NOGRAPHIC} \
+ -M ${QEMU_MACHINE} \
+ -m 1024 \
+ -no-reboot \
+ -net nic,vlan=1 \
+ ${QEMU_NET} \
+ ${QEMU_REDIR} \
+ -kernel ${PTXDIST_PLATFORMDIR}/images/linuximage \
+ -dtb ${PTXDIST_PLATFORMDIR}/images/vexpress-v2p-ca9.dtb \
+ -smp 1 \
+ -append "console=ttyAMA0 root=/dev/nfs nfsroot=10.0.2.2:/root,v3,tcp,port=2049,mountport=2049 rw mem=1024M rootwait loglevel=5 systemd.log_level=warning systemd.show_status=auto ip=dhcp"
+
diff --git a/configs/platform-v7a/scripts/lib/ptxd_make_nfsd.sh b/configs/platform-v7a/scripts/lib/ptxd_make_nfsd.sh
new file mode 100644
index 0000000..2fefcdc
--- /dev/null
+++ b/configs/platform-v7a/scripts/lib/ptxd_make_nfsd.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+#
+# Copyright (C) 2012 by Michael Olbrich <m.olbrich@pengutronix.de>
+#
+# See CREDITS for details about who has contributed to this project.
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+ptxd_make_nfsd_exec() {
+ local port
+ local root="/$(basename "${ptx_nfsroot}")"
+ local base="$(dirname "${ptx_nfsroot}")"
+
+ if ! port="$(ptxd_get_kconfig "${PTXDIST_BOARDSETUP}" "PTXCONF_BOARDSETUP_NFSPORT")"; then
+ port=2049
+ fi
+
+ echo
+ echo "Mount rootfs with nfsroot=${root},v3,tcp,port=${port},mountport=${port}"
+ echo
+
+ #insecure for qemu with -net user
+ echo "/ (rw,no_root_squash,insecure)" > "${PTXDIST_TEMPDIR}/exports" &&
+ UNFS_BASE="${base}" unfsd -e "${PTXDIST_TEMPDIR}/exports" -n ${port} -m ${port} -p -d
+}
+export -f ptxd_make_nfsd_exec
+