summaryrefslogtreecommitdiff
path: root/boot/mxs-bootlets/mxs-bootlets.mk
diff options
context:
space:
mode:
authorMaxime Ripard <maxime.ripard@free-electrons.com>2012-07-18 18:02:43 +0200
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>2012-07-21 00:34:57 +0200
commit2a636d15217cd326b4546e7017538c7a9e9d399c (patch)
tree9d3b0b6a493caeb62ab5f2e23c0b56635bee6afc /boot/mxs-bootlets/mxs-bootlets.mk
parentcc160a941ee2de5aa9bd4624dd56fd6b38bb29c9 (diff)
Add MXS bootlets package
MXS platforms (imx23 and imx28) are relying on bootlets as their first stage bootloaders, that can then either start a regular second stage bootloader or directly a Linux kernel. However, the Makefile allows only to build u-boot and linux images at the same time, which is not very convenient as we will more likely use only one of them, so we need to duplicate a bit what is already done so that we are able to choose what we want to generate. thomas.petazzoni@free-electrons.com: * Remove incorrect dependency on BR2_PACKAGE_ELFTOSB * Each board configuration option is for one board, not multiple boards, so use singular. * The i.MX28 support is for i.MX28 EVK only, reflect that in the option prompt and the option name. * Use 'generic-package' instead of GENTARGETS Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Diffstat (limited to 'boot/mxs-bootlets/mxs-bootlets.mk')
-rw-r--r--boot/mxs-bootlets/mxs-bootlets.mk103
1 files changed, 103 insertions, 0 deletions
diff --git a/boot/mxs-bootlets/mxs-bootlets.mk b/boot/mxs-bootlets/mxs-bootlets.mk
new file mode 100644
index 000000000..1975d472c
--- /dev/null
+++ b/boot/mxs-bootlets/mxs-bootlets.mk
@@ -0,0 +1,103 @@
+#############################################################
+#
+# mxs-bootlets
+#
+#############################################################
+
+ifeq ($(BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL),y)
+ MXS_BOOTLETS_TARBALL = $(call qstrip,$(BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL_URL))
+ MXS_BOOTLETS_SITE = $(dir $(MXS_BOOTLETS_TARBALL))
+ MXS_BOOTLETS_SOURCE = $(notdir $(MXS_BOOTLETS_TARBALL))
+else ifeq ($(BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT),y)
+ MXS_BOOTLETS_SITE = $(BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_URL)
+ MXS_BOOTLETS_SITE_METHOD = git
+ MXS_BOOTLETS_VERSION = $(call qstrip,$(BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_VERSION))
+else
+ MXS_BOOTLETS_VERSION = 10.12.01
+ MXS_BOOTLETS_SITE = http://download.ossystems.com.br/bsp/freescale/source/
+ MXS_BOOTLETS_SOURCE = imx-bootlets-src-$(MXS_BOOTLETS_VERSION).tar.gz
+endif
+
+ifeq ($(BR2_TARGET_MXS_BOOTLETS_STMP37xx),y)
+ MXS_BOOTLETS_BOARD = stmp37xx_dev
+else ifeq ($(BR2_TARGET_MXS_BOOTLETS_STMP378x),y)
+ MXS_BOOTLETS_BOARD = stmp378x_dev
+else ifeq ($(BR2_TARGET_MXS_BOOTLETS_IMX28EVK),y)
+ MXS_BOOTLETS_BOARD = iMX28_EVK
+else ifeq ($(BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD),y)
+ MXS_BOOTLETS_BOARD = $(call qstrip,$(BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD_NAME))
+endif
+
+ifeq ($(BR2_TARGET_MXS_BOOTLETS_HAS_IVT),y)
+ MXS_BOOTLETS_IVT_SUFFIX = _ivt
+ MXS_BOOTLETS_ELFTOSB_OPTIONS += -f imx28
+endif
+
+MXS_BOOTLETS_DEPENDENCIES = host-elftosb
+
+ifeq ($(BR2_TARGET_MXS_BOOTLETS_BAREBOX),y)
+MXS_BOOTLETS_DEPENDENCIES += barebox
+MXS_BOOTLETS_BOOTDESC = barebox$(MXS_BOOTLETS_IVT_SUFFIX).bd
+MXS_BOOTLETS_BOOTSTREAM = $(MXS_BOOTLETS_BOARD)_barebox$(MXS_BOOTLETS_IVT_SUFFIX).sb
+
+else ifeq ($(BR2_TARGET_MXS_BOOTLETS_LINUX),y)
+MXS_BOOTLETS_DEPENDENCIES += linux
+MXS_BOOTLETS_BOOTDESC = linux$(MXS_BOOTLETS_IVT_SUFFIX).bd
+MXS_BOOTLETS_BOOTSTREAM = $(MXS_BOOTLETS_BOARD)_linux$(MXS_BOOTLETS_IVT_SUFFIX).sb
+
+else ifeq ($(BR2_TARGET_MXS_BOOTLETS_UBOOT),y)
+MXS_BOOTLETS_DEPENDENCIES += uboot
+MXS_BOOTLETS_BOOTDESC = uboot$(MXS_BOOTLETS_IVT_SUFFIX).bd
+MXS_BOOTLETS_BOOTSTREAM = $(MXS_BOOTLETS_BOARD)_uboot$(MXS_BOOTLETS_IVT_SUFFIX).sb
+endif
+
+ifeq ($(BR2_TARGET_MXS_BOOTLETS_BAREBOX),y)
+define MXS_BOOTLETS_SED_BAREBOX
+ sed -i 's,[^ *]barebox.*;,\tbarebox="$(BAREBOX_DIR)/barebox";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC)
+endef
+endif
+
+ifeq ($(BR2_TARGET_MXS_BOOTLETS_LINUX),y)
+define MXS_BOOTLETS_BUILD_LINUX_PREP
+ BOARD=$(MXS_BOOTLETS_BOARD) CROSS_COMPILE="$(TARGET_CROSS)" \
+ $(MAKE1) -C $(@D) linux_prep
+endef
+define MXS_BOOTLETS_SED_LINUX
+ sed -i 's,[^ *]linux_prep.*;,\tlinux_prep="$(@D)/linux_prep/output-target/linux_prep";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC)
+ sed -i 's,[^ *]zImage.*;,\tzImage="$(LINUX_DIR)/arch/arm/boot/zImage";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC)
+endef
+endif
+
+ifeq ($(BR2_TARGET_MXS_BOOTLETS_UBOOT),y)
+define MXS_BOOTLETS_SED_UBOOT
+ sed -i 's,[^ *]u_boot.*;,\tu_boot="$(UBOOT_DIR)/u-boot";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC)
+endef
+endif
+
+define MXS_BOOTLETS_INSTALL_BAREBOX_BOOTDESC
+ cp boot/mxs-bootlets/barebox_ivt.bd $(@D)/
+endef
+
+MXS_BOOTLETS_POST_EXTRACT_HOOKS += MXS_BOOTLETS_INSTALL_BAREBOX_BOOTDESC
+
+define MXS_BOOTLETS_BUILD_CMDS
+ BOARD=$(MXS_BOOTLETS_BOARD) CROSS_COMPILE="$(TARGET_CROSS)" \
+ $(MAKE1) -C $(@D) power_prep
+ BOARD=$(MXS_BOOTLETS_BOARD) CROSS_COMPILE="$(TARGET_CROSS)" \
+ $(MAKE1) -C $(@D) boot_prep
+ $(MXS_BOOTLETS_BUILD_LINUX_PREP)
+ sed -i 's,[^ *]power_prep.*;,\tpower_prep="$(@D)/power_prep/power_prep";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC)
+ sed -i 's,[^ *]sdram_prep.*;,\tsdram_prep="$(@D)/boot_prep/boot_prep";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC)
+ $(MXS_BOOTLETS_SED_BAREBOX)
+ $(MXS_BOOTLETS_SED_LINUX)
+ $(MXS_BOOTLETS_SED_UBOOT)
+ $(HOST_DIR)/usr/bin/elftosb $(MXS_BOOTLETS_ELFTOSB_OPTIONS) \
+ -z -c $(@D)/$(MXS_BOOTLETS_BOOTDESC) \
+ -o $(@D)/$(MXS_BOOTLETS_BOOTSTREAM)
+endef
+
+define MXS_BOOTLETS_INSTALL_TARGET_CMDS
+ cp $(@D)/$(MXS_BOOTLETS_BOOTSTREAM) $(BINARIES_DIR)/
+endef
+
+$(eval $(generic-package))