summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libre-testing/uboot4extlinux-nitrogen6q/0001-parabola-arm-modifications.patch47
-rw-r--r--libre-testing/uboot4extlinux-nitrogen6q/0002-kernel-add-support-for-gcc-5.patch97
-rw-r--r--libre-testing/uboot4extlinux-nitrogen6q/0003-ARM-asm-io.h-use-static-inline.patch76
-rw-r--r--libre-testing/uboot4extlinux-nitrogen6q/0004-common-main.c-make-show_boot_progress-__weak.patch31
-rw-r--r--libre-testing/uboot4extlinux-nitrogen6q/0005-common-board-use-__weak.patch84
-rw-r--r--libre-testing/uboot4extlinux-nitrogen6q/0006-common-board_f-cosmetic-use-__weak-for-leds.patch109
-rw-r--r--libre-testing/uboot4extlinux-nitrogen6q/PKGBUILD61
-rw-r--r--libre-testing/uboot4extlinux-nitrogen6q/extlinux.conf46
-rw-r--r--libre-testing/uboot4extlinux-nitrogen6q/uboot4extlinux-nitrogen6q.install11
9 files changed, 562 insertions, 0 deletions
diff --git a/libre-testing/uboot4extlinux-nitrogen6q/0001-parabola-arm-modifications.patch b/libre-testing/uboot4extlinux-nitrogen6q/0001-parabola-arm-modifications.patch
new file mode 100644
index 000000000..357f61a29
--- /dev/null
+++ b/libre-testing/uboot4extlinux-nitrogen6q/0001-parabola-arm-modifications.patch
@@ -0,0 +1,47 @@
+diff -Nur u-boot-imx6-bb9dde563768731423fd6c560e95e1793a90710a.orig/include/configs/nitrogen6x.h u-boot-imx6-bb9dde563768731423fd6c560e95e1793a90710a/include/configs/nitrogen6x.h
+--- u-boot-imx6-bb9dde563768731423fd6c560e95e1793a90710a.orig/include/configs/nitrogen6x.h 2015-05-20 19:13:03.000000000 -0300
++++ u-boot-imx6-bb9dde563768731423fd6c560e95e1793a90710a/include/configs/nitrogen6x.h 2016-02-28 00:02:35.355409391 -0300
+@@ -82,6 +82,8 @@
+ #define CONFIG_CMD_EXT4
+ #define CONFIG_CMD_FS_GENERIC
+ #define CONFIG_DOS_PARTITION
++#define CONFIG_CMD_PART
++#define CONFIG_PARTITION_UUIDS
+
+ #ifdef CONFIG_MX6Q
+ #define CONFIG_CMD_SATA
+@@ -195,8 +197,17 @@
+ #define CONFIG_DRIVE_TYPES CONFIG_DRIVE_SATA CONFIG_DRIVE_MMC CONFIG_DRIVE_USB
+ #define CONFIG_UMSDEVS CONFIG_DRIVE_SATA CONFIG_DRIVE_MMC
+
++#define CONFIG_IDENT_STRING " Parabola GNU/Linux-libre"
++
++/* Enable Extlinux boot support */
++#define CONFIG_CMD_PXE
++#define CONFIG_MENU
++#define BOOT_TARGET_DEVICES(func)
++#include <config_distro_bootcmd.h>
++
+ #if defined(CONFIG_SABRELITE)
+ #define CONFIG_EXTRA_ENV_SETTINGS \
++ BOOTENV \
+ "script=boot.scr\0" \
+ "uimage=uImage\0" \
+ "console=ttymxc1\0" \
+@@ -206,6 +217,8 @@
+ "fdt_addr=0x18000000\0" \
+ "boot_fdt=try\0" \
+ "ip_dyn=yes\0" \
++ "devtype=mmc\0" \
++ "devnum=0\0" \
+ "mmcdev=0\0" \
+ "mmcpart=1\0" \
+ "mmcroot=/dev/mmcblk0p2 rootwait rw\0" \
+@@ -218,6 +231,7 @@
+ "loaduimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}\0" \
+ "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
+ "mmcboot=echo Booting from mmc ...; " \
++ "run scan_dev_for_boot;" \
+ "run mmcargs; " \
+ "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+ "if run loadfdt; then " \
diff --git a/libre-testing/uboot4extlinux-nitrogen6q/0002-kernel-add-support-for-gcc-5.patch b/libre-testing/uboot4extlinux-nitrogen6q/0002-kernel-add-support-for-gcc-5.patch
new file mode 100644
index 000000000..30718c561
--- /dev/null
+++ b/libre-testing/uboot4extlinux-nitrogen6q/0002-kernel-add-support-for-gcc-5.patch
@@ -0,0 +1,97 @@
+From 5b07fc2c680ad4279a45d863108544020b4d74cd Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sasha.levin@oracle.com>
+Date: Mon, 13 Oct 2014 15:51:05 -0700
+Subject: [PATCH 2/6] kernel: add support for gcc 5
+
+We're missing include/linux/compiler-gcc5.h which is required now
+because gcc branched off to v5 in trunk.
+
+Just copy the relevant bits out of include/linux/compiler-gcc4.h,
+no new code is added as of now.
+
+This fixes a build error when using gcc 5.
+
+Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+---
+ include/linux/compiler-gcc5.h | 66 +++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 66 insertions(+)
+ create mode 100644 include/linux/compiler-gcc5.h
+
+diff --git a/include/linux/compiler-gcc5.h b/include/linux/compiler-gcc5.h
+new file mode 100644
+index 0000000..cdd1cc2
+--- /dev/null
++++ b/include/linux/compiler-gcc5.h
+@@ -0,0 +1,66 @@
++#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.
++ * Fixed in GCC 4.8.2 and later versions.
++ *
++ * (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.4.4
+
diff --git a/libre-testing/uboot4extlinux-nitrogen6q/0003-ARM-asm-io.h-use-static-inline.patch b/libre-testing/uboot4extlinux-nitrogen6q/0003-ARM-asm-io.h-use-static-inline.patch
new file mode 100644
index 000000000..14ff6a5d8
--- /dev/null
+++ b/libre-testing/uboot4extlinux-nitrogen6q/0003-ARM-asm-io.h-use-static-inline.patch
@@ -0,0 +1,76 @@
+From 282ed8801c3e75e4c94943f56d399d630833591b Mon Sep 17 00:00:00 2001
+From: Jeroen Hofstee <jeroen@myspectrum.nl>
+Date: Sun, 22 Jun 2014 23:10:39 +0200
+Subject: [PATCH 3/6] ARM:asm:io.h use static inline
+
+When compiling u-boot with W=1 the extern inline void for
+read* is likely causing the most noise. gcc / clang will
+warn there is never a actual declaration for these functions.
+Instead of declaring these extern make them static inline so
+it is actually declared.
+
+cc: Albert ARIBAUD <albert.u.boot@aribaud.net>
+Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
+---
+ arch/arm/include/asm/io.h | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
+index 214f3ea..dc6138a 100644
+--- a/arch/arm/include/asm/io.h
++++ b/arch/arm/include/asm/io.h
+@@ -77,7 +77,7 @@ static inline phys_addr_t virt_to_phys(void * vaddr)
+ #define __arch_putl(v,a) (*(volatile unsigned int *)(a) = (v))
+ #define __arch_putq(v,a) (*(volatile unsigned long long *)(a) = (v))
+
+-extern inline void __raw_writesb(unsigned long addr, const void *data,
++static inline void __raw_writesb(unsigned long addr, const void *data,
+ int bytelen)
+ {
+ uint8_t *buf = (uint8_t *)data;
+@@ -85,7 +85,7 @@ extern inline void __raw_writesb(unsigned long addr, const void *data,
+ __arch_putb(*buf++, addr);
+ }
+
+-extern inline void __raw_writesw(unsigned long addr, const void *data,
++static inline void __raw_writesw(unsigned long addr, const void *data,
+ int wordlen)
+ {
+ uint16_t *buf = (uint16_t *)data;
+@@ -93,7 +93,7 @@ extern inline void __raw_writesw(unsigned long addr, const void *data,
+ __arch_putw(*buf++, addr);
+ }
+
+-extern inline void __raw_writesl(unsigned long addr, const void *data,
++static inline void __raw_writesl(unsigned long addr, const void *data,
+ int longlen)
+ {
+ uint32_t *buf = (uint32_t *)data;
+@@ -101,21 +101,21 @@ extern inline void __raw_writesl(unsigned long addr, const void *data,
+ __arch_putl(*buf++, addr);
+ }
+
+-extern inline void __raw_readsb(unsigned long addr, void *data, int bytelen)
++static inline void __raw_readsb(unsigned long addr, void *data, int bytelen)
+ {
+ uint8_t *buf = (uint8_t *)data;
+ while(bytelen--)
+ *buf++ = __arch_getb(addr);
+ }
+
+-extern inline void __raw_readsw(unsigned long addr, void *data, int wordlen)
++static inline void __raw_readsw(unsigned long addr, void *data, int wordlen)
+ {
+ uint16_t *buf = (uint16_t *)data;
+ while(wordlen--)
+ *buf++ = __arch_getw(addr);
+ }
+
+-extern inline void __raw_readsl(unsigned long addr, void *data, int longlen)
++static inline void __raw_readsl(unsigned long addr, void *data, int longlen)
+ {
+ uint32_t *buf = (uint32_t *)data;
+ while(longlen--)
+--
+2.4.4
+
diff --git a/libre-testing/uboot4extlinux-nitrogen6q/0004-common-main.c-make-show_boot_progress-__weak.patch b/libre-testing/uboot4extlinux-nitrogen6q/0004-common-main.c-make-show_boot_progress-__weak.patch
new file mode 100644
index 000000000..41b9c5cb2
--- /dev/null
+++ b/libre-testing/uboot4extlinux-nitrogen6q/0004-common-main.c-make-show_boot_progress-__weak.patch
@@ -0,0 +1,31 @@
+From 8158ac85f16963ff1d075255cd3f34b4f0614265 Mon Sep 17 00:00:00 2001
+From: Jeroen Hofstee <jeroen@myspectrum.nl>
+Date: Thu, 26 Jun 2014 20:18:31 +0200
+Subject: [PATCH 4/6] common: main.c: make show_boot_progress __weak
+
+This not only looks a bit better it also prevents a
+warning with W=1 (no previous prototype).
+
+Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
+Acked-by: Simon Glass <sjg@chromium.org>
+---
+ common/main.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/common/main.c b/common/main.c
+index 32618f1..2979fbe 100644
+--- a/common/main.c
++++ b/common/main.c
+@@ -17,8 +17,7 @@ DECLARE_GLOBAL_DATA_PTR;
+ /*
+ * Board-specific Platform code can reimplement show_boot_progress () if needed
+ */
+-void inline __show_boot_progress (int val) {}
+-void show_boot_progress (int val) __attribute__((weak, alias("__show_boot_progress")));
++__weak void show_boot_progress(int val) {}
+
+ static void modem_init(void)
+ {
+--
+2.4.4
+
diff --git a/libre-testing/uboot4extlinux-nitrogen6q/0005-common-board-use-__weak.patch b/libre-testing/uboot4extlinux-nitrogen6q/0005-common-board-use-__weak.patch
new file mode 100644
index 000000000..5cd77dbba
--- /dev/null
+++ b/libre-testing/uboot4extlinux-nitrogen6q/0005-common-board-use-__weak.patch
@@ -0,0 +1,84 @@
+From deda59a4022fcedd781a893fe5e1bb495988858f Mon Sep 17 00:00:00 2001
+From: Jeroen Hofstee <jeroen@myspectrum.nl>
+Date: Wed, 8 Oct 2014 22:57:22 +0200
+Subject: [PATCH 5/6] common: board: use __weak
+
+Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
+---
+ common/board_f.c | 10 ++--------
+ common/board_r.c | 10 ++--------
+ 2 files changed, 4 insertions(+), 16 deletions(-)
+
+diff --git a/common/board_f.c b/common/board_f.c
+index 4ea4cb2..215cc4a 100644
+--- a/common/board_f.c
++++ b/common/board_f.c
+@@ -130,14 +130,11 @@ int init_func_watchdog_reset(void)
+ }
+ #endif /* CONFIG_WATCHDOG */
+
+-void __board_add_ram_info(int use_default)
++__weak void board_add_ram_info(int use_default)
+ {
+ /* please define platform specific board_add_ram_info() */
+ }
+
+-void board_add_ram_info(int)
+- __attribute__ ((weak, alias("__board_add_ram_info")));
+-
+ static int init_baud_rate(void)
+ {
+ gd->baudrate = getenv_ulong("baudrate", 10, CONFIG_BAUDRATE);
+@@ -219,7 +216,7 @@ static int show_dram_config(void)
+ return 0;
+ }
+
+-void __dram_init_banksize(void)
++__weak void dram_init_banksize(void)
+ {
+ #if defined(CONFIG_NR_DRAM_BANKS) && defined(CONFIG_SYS_SDRAM_BASE)
+ gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
+@@ -227,9 +224,6 @@ void __dram_init_banksize(void)
+ #endif
+ }
+
+-void dram_init_banksize(void)
+- __attribute__((weak, alias("__dram_init_banksize")));
+-
+ #if defined(CONFIG_HARD_I2C) || defined(CONFIG_SYS_I2C)
+ static int init_func_i2c(void)
+ {
+diff --git a/common/board_r.c b/common/board_r.c
+index 602a239..fa4bd9c 100644
+--- a/common/board_r.c
++++ b/common/board_r.c
+@@ -60,7 +60,7 @@ DECLARE_GLOBAL_DATA_PTR;
+
+ ulong monitor_flash_len;
+
+-int __board_flash_wp_on(void)
++__weak int board_flash_wp_on(void)
+ {
+ /*
+ * Most flashes can't be detected when write protection is enabled,
+@@ -70,16 +70,10 @@ int __board_flash_wp_on(void)
+ return 0;
+ }
+
+-int board_flash_wp_on(void)
+- __attribute__ ((weak, alias("__board_flash_wp_on")));
+-
+-void __cpu_secondary_init_r(void)
++__weak void cpu_secondary_init_r(void)
+ {
+ }
+
+-void cpu_secondary_init_r(void)
+- __attribute__ ((weak, alias("__cpu_secondary_init_r")));
+-
+ static int initr_secondary_cpu(void)
+ {
+ /*
+--
+2.4.4
+
diff --git a/libre-testing/uboot4extlinux-nitrogen6q/0006-common-board_f-cosmetic-use-__weak-for-leds.patch b/libre-testing/uboot4extlinux-nitrogen6q/0006-common-board_f-cosmetic-use-__weak-for-leds.patch
new file mode 100644
index 000000000..bff38b486
--- /dev/null
+++ b/libre-testing/uboot4extlinux-nitrogen6q/0006-common-board_f-cosmetic-use-__weak-for-leds.patch
@@ -0,0 +1,109 @@
+From 137c23ed9e6ad2cba575842065bffa6e59170e17 Mon Sep 17 00:00:00 2001
+From: Jeroen Hofstee <jeroen@myspectrum.nl>
+Date: Mon, 23 Jun 2014 23:20:19 +0200
+Subject: [PATCH 6/6] common: board_f: cosmetic use __weak for leds
+
+First of all this looks a lot better, but it also
+prevents a gcc warning (W=1), that the weak function
+has no previous prototype.
+
+cc: Simon Glass <sjg@chromium.org>
+Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
+Acked-by: Simon Glass <sjg@chromium.org>
+---
+ common/board_f.c | 29 ++++++++++-------------------
+ include/status_led.h | 22 +++++++++++-----------
+ 2 files changed, 21 insertions(+), 30 deletions(-)
+
+diff --git a/common/board_f.c b/common/board_f.c
+index 215cc4a..6e955bb 100644
+--- a/common/board_f.c
++++ b/common/board_f.c
+@@ -37,6 +37,7 @@
+ #include <os.h>
+ #include <post.h>
+ #include <spi.h>
++#include <status_led.h>
+ #include <trace.h>
+ #include <watchdog.h>
+ #include <asm/errno.h>
+@@ -78,25 +79,15 @@ DECLARE_GLOBAL_DATA_PTR;
+ ************************************************************************
+ * May be supplied by boards if desired
+ */
+-inline void __coloured_LED_init(void) {}
+-void coloured_LED_init(void)
+- __attribute__((weak, alias("__coloured_LED_init")));
+-inline void __red_led_on(void) {}
+-void red_led_on(void) __attribute__((weak, alias("__red_led_on")));
+-inline void __red_led_off(void) {}
+-void red_led_off(void) __attribute__((weak, alias("__red_led_off")));
+-inline void __green_led_on(void) {}
+-void green_led_on(void) __attribute__((weak, alias("__green_led_on")));
+-inline void __green_led_off(void) {}
+-void green_led_off(void) __attribute__((weak, alias("__green_led_off")));
+-inline void __yellow_led_on(void) {}
+-void yellow_led_on(void) __attribute__((weak, alias("__yellow_led_on")));
+-inline void __yellow_led_off(void) {}
+-void yellow_led_off(void) __attribute__((weak, alias("__yellow_led_off")));
+-inline void __blue_led_on(void) {}
+-void blue_led_on(void) __attribute__((weak, alias("__blue_led_on")));
+-inline void __blue_led_off(void) {}
+-void blue_led_off(void) __attribute__((weak, alias("__blue_led_off")));
++__weak void coloured_LED_init(void) {}
++__weak void red_led_on(void) {}
++__weak void red_led_off(void) {}
++__weak void green_led_on(void) {}
++__weak void green_led_off(void) {}
++__weak void yellow_led_on(void) {}
++__weak void yellow_led_off(void) {}
++__weak void blue_led_on(void) {}
++__weak void blue_led_off(void) {}
+
+ /*
+ * Why is gd allocated a register? Prior to reloc it might be better to
+diff --git a/include/status_led.h b/include/status_led.h
+index 0eb91b8..b8aaaf7 100644
+--- a/include/status_led.h
++++ b/include/status_led.h
+@@ -272,19 +272,21 @@ extern void __led_set (led_id_t mask, int state);
+ # include <asm/status_led.h>
+ #endif
+
++#endif /* CONFIG_STATUS_LED */
++
+ /*
+ * Coloured LEDs API
+ */
+ #ifndef __ASSEMBLY__
+-extern void coloured_LED_init (void);
+-extern void red_led_on(void);
+-extern void red_led_off(void);
+-extern void green_led_on(void);
+-extern void green_led_off(void);
+-extern void yellow_led_on(void);
+-extern void yellow_led_off(void);
+-extern void blue_led_on(void);
+-extern void blue_led_off(void);
++void coloured_LED_init(void);
++void red_led_on(void);
++void red_led_off(void);
++void green_led_on(void);
++void green_led_off(void);
++void yellow_led_on(void);
++void yellow_led_off(void);
++void blue_led_on(void);
++void blue_led_off(void);
+ #else
+ .extern LED_init
+ .extern red_led_on
+@@ -297,6 +299,4 @@ extern void blue_led_off(void);
+ .extern blue_led_off
+ #endif
+
+-#endif /* CONFIG_STATUS_LED */
+-
+ #endif /* _STATUS_LED_H_ */
+--
+2.4.4
+
diff --git a/libre-testing/uboot4extlinux-nitrogen6q/PKGBUILD b/libre-testing/uboot4extlinux-nitrogen6q/PKGBUILD
new file mode 100644
index 000000000..83a69c4ad
--- /dev/null
+++ b/libre-testing/uboot4extlinux-nitrogen6q/PKGBUILD
@@ -0,0 +1,61 @@
+# U-Boot: Boundary Devices Nitrogen6X/Sabre Lite
+# Maintainer: André Silva <emulatorman@parabola.nu>
+
+buildarch=4
+
+pkgname=uboot4extlinux-nitrogen6q
+pkgver=2014.07
+pkgrel=1
+arch=('armv7h')
+pkgdesc="U-Boot with Extlinux support for Nitrogen6X/Sabre Lite"
+url="https://github.com/boundarydevices/u-boot-imx6/tree/production"
+license=('GPL')
+makedepends=('bc')
+conflicts=('uboot-nitrogen6q' 'uboot4grub-nitrogen6q')
+backup=(boot/extlinux/extlinux.conf)
+install=${pkgname}.install
+_commit=bb9dde563768731423fd6c560e95e1793a90710a
+source=("https://github.com/boundarydevices/u-boot-imx6/archive/${_commit}.tar.gz"
+ '0001-parabola-arm-modifications.patch'
+ '0002-kernel-add-support-for-gcc-5.patch'
+ '0003-ARM-asm-io.h-use-static-inline.patch'
+ '0004-common-main.c-make-show_boot_progress-__weak.patch'
+ '0005-common-board-use-__weak.patch'
+ '0006-common-board_f-cosmetic-use-__weak-for-leds.patch')
+md5sums=('b12f5f383c57de06f16625b3465e74d9'
+ '0cd5580fefd5abb6e09d8e9a964b932c'
+ '721a46867e189d8dedc6b6f86a536a34'
+ 'f6b687eca2d2d01f741cbda90dbacb41'
+ '8087672256020417438b12ec4946e1cf'
+ 'a536d28bf45add6dbf9f84277f943de8'
+ '2823d0e0c3c826632f6ae934f2b746d9')
+
+prepare() {
+ cd u-boot-imx6-${_commit}
+
+ patch -Np1 -i ../0001-parabola-arm-modifications.patch
+ patch -Np1 -i ../0002-kernel-add-support-for-gcc-5.patch
+ patch -Np1 -i ../0003-ARM-asm-io.h-use-static-inline.patch
+ patch -Np1 -i ../0004-common-main.c-make-show_boot_progress-__weak.patch
+ patch -Np1 -i ../0005-common-board-use-__weak.patch
+ patch -Np1 -i ../0006-common-board_f-cosmetic-use-__weak-for-leds.patch
+}
+
+build() {
+ cd u-boot-imx6-${_commit}
+
+ unset CFLAGS
+ unset CXXFLAGS
+
+ make distclean
+ make nitrogen6q_config
+ make
+}
+
+package() {
+ cd u-boot-imx6-${_commit}
+
+ mkdir -p "${pkgdir}"/boot/extlinux
+ cp u-boot.imx "${pkgdir}"/boot
+ cp "${srcdir}"/extlinux.conf "${pkgdir}"/boot/extlinux
+}
diff --git a/libre-testing/uboot4extlinux-nitrogen6q/extlinux.conf b/libre-testing/uboot4extlinux-nitrogen6q/extlinux.conf
new file mode 100644
index 000000000..54c005428
--- /dev/null
+++ b/libre-testing/uboot4extlinux-nitrogen6q/extlinux.conf
@@ -0,0 +1,46 @@
+menu title Welcome to U-Boot with Extlinux support!
+
+label Parabola GNU/Linux-libre, linux-libre kernel
+ kernel /boot/vmlinuz-linux-libre
+ append root=/dev/mmcblk0p2 rw console=ttymxc1
+ fdtdir /boot/dtbs/linux-libre
+
+#label Parabola GNU/Linux-libre, linux-libre-lts kernel
+# kernel /boot/vmlinuz-linux-libre-lts
+# append root=/dev/mmcblk0p2 rw console=ttymxc1
+# fdtdir /boot/dtbs/linux-libre-lts
+
+#label Parabola GNU/Linux-libre, linux-libre-knock kernel
+# kernel /boot/vmlinuz-linux-libre-knock
+# append root=/dev/mmcblk0p2 rw console=ttymxc1
+# fdtdir /boot/dtbs/linux-libre-knock
+
+#label Parabola GNU/Linux-libre, linux-libre-lts-knock kernel
+# kernel /boot/vmlinuz-linux-libre-lts-knock
+# append root=/dev/mmcblk0p2 rw console=ttymxc1
+# fdtdir /boot/dtbs/linux-libre-lts-knock
+
+#label Parabola GNU/Linux-libre, linux-libre-grsec kernel
+# kernel /boot/vmlinuz-linux-libre-grsec
+# append root=/dev/mmcblk0p2 rw console=ttymxc1
+# fdtdir /boot/dtbs/linux-libre-grsec
+
+#label Parabola GNU/Linux-libre, linux-libre-grsec-knock kernel
+# kernel /boot/vmlinuz-linux-libre-grsec-knock
+# append root=/dev/mmcblk0p2 rw console=ttymxc1
+# fdtdir /boot/dtbs/linux-libre-grsec-knock
+
+#label Parabola GNU/Linux-libre, linux-libre-audit kernel
+# kernel /boot/vmlinuz-linux-libre-audit
+# append root=/dev/mmcblk0p2 rw console=ttymxc1
+# fdtdir /boot/dtbs/linux-libre-audit
+
+#label Parabola GNU/Linux-libre, linux-libre-pck kernel
+# kernel /boot/vmlinuz-linux-libre-pck
+# append root=/dev/mmcblk0p2 rw console=ttymxc1
+# fdtdir /boot/dtbs/linux-libre-pck
+
+#label Parabola GNU/Linux-libre, linux-libre-rt kernel
+# kernel /boot/vmlinuz-linux-libre-rt
+# append root=/dev/mmcblk0p2 rw console=ttymxc1
+# fdtdir /boot/dtbs/linux-libre-rt
diff --git a/libre-testing/uboot4extlinux-nitrogen6q/uboot4extlinux-nitrogen6q.install b/libre-testing/uboot4extlinux-nitrogen6q/uboot4extlinux-nitrogen6q.install
new file mode 100644
index 000000000..8aff26699
--- /dev/null
+++ b/libre-testing/uboot4extlinux-nitrogen6q/uboot4extlinux-nitrogen6q.install
@@ -0,0 +1,11 @@
+extlinux_warning() {
+ echo "==> WARNING: U-Boot uses Extlinux support to boot up. For setting it up, edit /boot/extlinux/extlinux.conf"
+}
+
+post_install() {
+ extlinux_warning
+}
+
+post_upgrade() {
+ extlinux_warning
+}