add u-boot for litecell15 / sysmoBTS 2100

This commit is contained in:
Harald Welte 2017-06-10 19:57:38 +02:00 committed by Harald Welte
parent ff217ad58c
commit 3641a69585
6 changed files with 287 additions and 0 deletions

View File

@ -0,0 +1,12 @@
diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c
index daa02a7..eff638a 100644
--- a/tools/env/fw_env.c
+++ b/tools/env/fw_env.c
@@ -17,6 +17,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
+#include <inttypes.h>
#include <string.h>
#include <sys/types.h>
#include <sys/ioctl.h>

View File

@ -0,0 +1,91 @@
From 07373b2e477ae61f9f6a0e2eff41be3276d92923 Mon Sep 17 00:00:00 2001
From: yocto <yocto@yocto.org>
Date: Thu, 2 Jun 2016 03:21:51 -0500
Subject: [PATCH] fix build error under gcc6
Fix the following error:
| ../include/linux/compiler-gcc.h:114:30: fatal error: linux/compiler-gcc6.h: No such file or directory
| #include gcc_header(__GNUC__)
Signed-off-by: Zhenhua Luo <zhenhua.luo@nxp.com>
Upstream-Status: Pending
---
include/linux/compiler-gcc6.h | 65 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 65 insertions(+)
create mode 100644 include/linux/compiler-gcc6.h
diff --git a/include/linux/compiler-gcc6.h b/include/linux/compiler-gcc6.h
new file mode 100644
index 0000000..c8c5659
--- /dev/null
+++ b/include/linux/compiler-gcc6.h
@@ -0,0 +1,65 @@
+#ifndef __LINUX_COMPILER_H
+#error "Please don't include <linux/compiler-gcc5.h> directly, include <linux/compiler.h> instead."
+#endif
+
+#define __used __attribute__((__used__))
+#define __must_check __attribute__((warn_unused_result))
+#define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
+
+/* Mark functions as cold. gcc will assume any path leading to a call
+ to them will be unlikely. This means a lot of manual unlikely()s
+ are unnecessary now for any paths leading to the usual suspects
+ like BUG(), printk(), panic() etc. [but let's keep them for now for
+ older compilers]
+
+ Early snapshots of gcc 4.3 don't support this and we can't detect this
+ in the preprocessor, but we can live with this because they're unreleased.
+ Maketime probing would be overkill here.
+
+ gcc also has a __attribute__((__hot__)) to move hot functions into
+ a special section, but I don't see any sense in this right now in
+ the kernel context */
+#define __cold __attribute__((__cold__))
+
+#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
+
+#ifndef __CHECKER__
+# define __compiletime_warning(message) __attribute__((warning(message)))
+# define __compiletime_error(message) __attribute__((error(message)))
+#endif /* __CHECKER__ */
+
+/*
+ * Mark a position in code as unreachable. This can be used to
+ * suppress control flow warnings after asm blocks that transfer
+ * control elsewhere.
+ *
+ * Early snapshots of gcc 4.5 don't support this and we can't detect
+ * this in the preprocessor, but we can live with this because they're
+ * unreleased. Really, we need to have autoconf for the kernel.
+ */
+#define unreachable() __builtin_unreachable()
+
+/* Mark a function definition as prohibited from being cloned. */
+#define __noclone __attribute__((__noclone__))
+
+/*
+ * Tell the optimizer that something else uses this function or variable.
+ */
+#define __visible __attribute__((externally_visible))
+
+/*
+ * GCC 'asm goto' miscompiles certain code sequences:
+ *
+ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
+ *
+ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
+ *
+ * (asm goto is automatically volatile - the naming reflects this.)
+ */
+#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
+
+#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
+#define __HAVE_BUILTIN_BSWAP32__
+#define __HAVE_BUILTIN_BSWAP64__
+#define __HAVE_BUILTIN_BSWAP16__
+#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
--
2.5.0

View File

@ -0,0 +1,45 @@
require u-boot-litecell15-${PV}.inc
SUMMARY = "U-Boot bootloader fw_printenv/setenv utilities"
SECTION = "bootloader"
DEPENDS = "mtd-utils u-boot"
PROVIDES_litecell15 = "u-boot-fw-utils"
S = "${WORKDIR}/git"
REPODIR = "${THISDIR}"
REPOFILE = "u-boot-fw-utils_2015.07.bb"
PR := "${INC_PR}.${REPOGITFN}"
INSANE_SKIP_${PN} = "already-stripped"
EXTRA_OEMAKE_class-target = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${CC} ${CFLAGS} ${LDFLAGS}" V=1'
EXTRA_OEMAKE_class-cross = 'ARCH=${TARGET_ARCH} CC="${CC} ${CFLAGS} ${LDFLAGS}" V=1'
inherit uboot-config
do_compile () {
oe_runmake ${UBOOT_MACHINE}
oe_runmake env
}
do_install () {
install -d ${D}${base_sbindir}
install -d ${D}${sysconfdir}
install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_printenv
install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_setenv
install -m 0644 ${S}/tools/env/fw_env.config ${D}${sysconfdir}/fw_env.config
}
do_install_class-cross () {
install -d ${D}${bindir_cross}
install -m 755 ${S}/tools/env/fw_printenv ${D}${bindir_cross}/fw_printenv
install -m 755 ${S}/tools/env/fw_printenv ${D}${bindir_cross}/fw_setenv
}
SYSROOT_PREPROCESS_FUNCS_class-cross = "uboot_fw_utils_cross"
uboot_fw_utils_cross() {
sysroot_stage_dir ${D}${bindir_cross} ${SYSROOT_DESTDIR}${bindir_cross}
}
PACKAGE_ARCH = "${MACHINE_ARCH}"
BBCLASSEXTEND = "cross"

View File

@ -0,0 +1,41 @@
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://Licenses/README;md5=0507cd7da8e7ad6d6701926ec9b84c95"
NRW_LC15_MIRROR ??= "git@gitlab.com/nrw_litecell15"
inherit gitver-pkg gitver-repo
# Should match the one in u-boot.inc
INC_PR ??= "r1"
REPODIR = "${THISDIR}"
REPOFILE = "u-boot-litecell15-2015.07.inc"
INC_PR := "${INC_PR}.${REPOGITFN}"
PV = "2015.07+git${SRCPV}"
PKGV = "${PKGGITV}"
DEV_BRANCH = "${@ 'nrw/litecell15-next' if d.getVar('NRW_BSP_DEVEL', False) == "next" else 'nrw/litecell15'}"
DEV_SRCREV = "${AUTOREV}"
DEV_SRCURI := "git://${NRW_LC15_MIRROR}/u-boot.git;protocol=ssh;branch=${DEV_BRANCH}"
REL_BRANCH = "nrw/litecell15"
REL_SRCREV = "e2b1ddd84d72d8c57815265860ae58f6b170551c"
REL_SRCURI := "git://${NRW_LC15_MIRROR}/u-boot.git;protocol=ssh;branch=${REL_BRANCH}"
BRANCH = "${@ '${DEV_BRANCH}' if d.getVar('NRW_BSP_DEVEL', False) else '${REL_BRANCH}'}"
SRCREV = "${@ '${DEV_SRCREV}' if d.getVar('NRW_BSP_DEVEL', False) else '${REL_SRCREV}'}"
SRC_URI = "${@ '${DEV_SRCURI}' if d.getVar('NRW_BSP_DEVEL', False) else '${REL_SRCURI}'}"
SRC_URI += "file://0001-fw_env-missing-header.patch"
SRC_URI += "file://fix-build-error-under-gcc6.patch"
addtask showversion after do_compile before do_install
do_showversion() {
bbplain "${PN}: ${PKGGITV} => ${BRANCH}:${PKGGITH}"
}
do_configure_prepend() {
sed -i -e 's/SUBLEVEL =.*/SUBLEVEL = ${PKGGITN}/g' ${S}/Makefile
sed -i -e 's/EXTRAVERSION =.*/EXTRAVERSION = -lc15/g' ${S}/Makefile
}

View File

@ -0,0 +1,22 @@
require u-boot.inc
require ${PN}-${PV}.inc
PROVIDES_litecell15 = " \
u-boot \
virtual/bootloader \
"
DESCRIPTION = "u-boot bootloader for LC15 / sysmoBTS 2100"
REPODIR = "${THISDIR}"
REPOFILE = "u-boot-litecell15_2015.07.bb"
PR := "${INC_PR}.${REPOGITFN}"
# set theses two variables to 1 to specify u-boot update requierement when the rootfs is updated
export MLO_UPGRADE = "1"
export UBOOT_UPGRADE = "1"
SPL_BINARY = "MLO"
SPL_UART_BINARY = "u-boot-spl.bin"

View File

@ -0,0 +1,76 @@
require ${COREBASE}/meta/recipes-bsp/u-boot/u-boot.inc
FILESEXTRAPATHS_prepend := "${THISDIR}/u-boot:"
INC_PR = "r1"
PACKAGE_ARCH = "${MACHINE_ARCH}"
PROVIDES += "u-boot"
PKG_${PN} = "u-boot"
PKG_${PN}-dev = "u-boot-dev"
PKG_${PN}-dbg = "u-boot-dbg"
S = "${WORKDIR}/git"
UBOOT_SUFFIX = "img"
#RDEPENDS_${PN} = "repair"
# SPL (Second Program Loader) to be loaded over UART
SPL_UART_BINARY ?= ""
SPL_UART_IMAGE ?= "${SPL_UART_BINARY}-${MACHINE}-${PV}-${PR}"
SPL_UART_SYMLINK ?= "${SPL_UART_BINARY}-${MACHINE}"
MLO_BIN ?= "MLO-${MACHINE}-${PV}-${PR}"
do_install_append () {
if [ "x${SPL_UART_BINARY}" != "x" ]
then
install ${B}/spl/${SPL_UART_BINARY} ${D}/boot/${SPL_UART_IMAGE}
ln -sf ${SPL_UART_IMAGE} ${D}/boot/${SPL_UART_BINARY}
fi
#FIXME: do we want/need this? replace iwth 'openssl enc -base64 -d'?
#md5sum ${D}/boot/${MLO_BIN} | cut -d ' ' -f 1 | xxd -r -p >> ${D}/boot/${MLO_BIN}
install -d ${D}${sysconfdir}
echo "MLO_UPGRADE=${MLO_UPGRADE}" >> ${D}${sysconfdir}/mlo.conf
echo "UBOOT_UPGRADE=${UBOOT_UPGRADE}" >> ${D}${sysconfdir}/uboot.conf
chmod 755 ${D}${sysconfdir}/mlo.conf
chmod 755 ${D}${sysconfdir}/uboot.conf
}
do_deploy_append () {
cd ${DEPLOYDIR}
if [ "x${SPL_UART_BINARY}" != "x" ]
then
install ${B}/spl/${SPL_UART_BINARY} ${DEPLOYDIR}/${SPL_UART_IMAGE}
rm -f ${DEPLOYDIR}/${SPL_UART_BINARY} ${DEPLOYDIR}/${SPL_UART_SYMLINK}
ln -sf ${SPL_UART_IMAGE} ${DEPLOYDIR}/${SPL_UART_BINARY}
ln -sf ${SPL_UART_IMAGE} ${DEPLOYDIR}/${SPL_UART_SYMLINK}
fi
#FIXME: do we want/need this? replace iwth 'openssl enc -base64 -d'?
#md5sum ${DEPLOYDIR}/${MLO_BIN} | cut -d ' ' -f 1 | xxd -r -p >> ${DEPLOYDIR}/${MLO_BIN}
}
pkg_postinst_${PN}_append() {
if [ x"$D" = "x" ]; then
if [ -f /usr/bin/checkboot ]; then
echo "Verify boot file possible update..."
/usr/bin/checkboot -c -d
__CHECK_RET=$?
if test ${__CHECK_RET} -eq 100; then
sleep 30s
/usr/bin/checkboot -c -d
__CHECK_RET=$?
fi
if test ${__CHECK_RET} -ne 0; then
echo "Verify boot file possible update... error!"
else
echo "Verify boot file possible update... done!"
fi
fi
fi
}
FILES_${PN} += "${sysconfdir}/mlo.conf \
${sysconfdir}/uboot.conf \
"