alarm/uboot-boundary to 2014.07-1

This commit is contained in:
Kevin Mihelich 2015-06-28 22:34:25 +00:00
parent 5d5430bde8
commit 287411bc7c
9 changed files with 503 additions and 67 deletions

View file

@ -0,0 +1,34 @@
From c70e52af62bc27e37ab6838046f0c0a8a1963101 Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Sun, 28 Jun 2015 14:36:09 -0600
Subject: [PATCH 1/6] arch linux arm modifications
---
include/configs/nitrogen6x.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/include/configs/nitrogen6x.h b/include/configs/nitrogen6x.h
index f3efbb0..7dfaffc 100644
--- a/include/configs/nitrogen6x.h
+++ b/include/configs/nitrogen6x.h
@@ -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,6 +197,8 @@
#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 " Arch Linux ARM"
+
#if defined(CONFIG_SABRELITE)
#define CONFIG_EXTRA_ENV_SETTINGS \
"script=boot.scr\0" \
--
2.4.4

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -1,3 +1,45 @@
echo "checking for U-Boot upgrades..";
setenv offset 0x400
if load ${dtype} ${disk}:1 12000000 /boot/u-boot.imx; then
echo " found u-boot.imx $filesize bytes)";
if sf probe || sf probe || sf probe 1 27000000 || sf probe 1 27000000; then
echo "probed SPI ROM";
if sf read 0x12400000 $offset $filesize; then
if cmp.b 0x12000000 0x12400000 $filesize; then
echo " no upgrade needed";
else
echo " need U-Boot upgrade, flashing in 5 seconds..";
for n in 5 4 3 2 1; do
echo $n;
sleep 1;
done
echo " erasing flash..";
sf erase 0 0xC0000;
# two steps to prevent bricking
echo " writing flash..";
sf write 0x12000000 $offset $filesize;
echo " verifying flash..";
if sf read 0x12400000 $offset $filesize; then
if cmp.b 0x12000000 0x12400000 $filesize; then
echo "---- U-Boot upgraded. resetting..";
reset;
else
echo " read verification error";
fi
else
echo " error re-reading EEPROM";
fi
fi
else
echo " error reading boot loader from EEPROM";
fi
else
echo " error initializing EEPROM";
fi;
else
echo " no U-Boot image found on SD card";
fi
setenv bootargs
setenv nextcon 0;
@ -53,7 +95,9 @@ done
setenv bootargs $bootargs $fbmem
setenv bootargs $bootargs console=ttymxc1,115200 vmalloc=400M root=/dev/mmcblk0p1 rw rootwait consoleblank=0
part uuid ${dtype} ${disk}:1 uuid
setenv bootargs $bootargs console=ttymxc1,115200 vmalloc=400M root=PARTUUID=${uuid} rw rootwait consoleblank=0
setenv fdtfile imx6q-nitrogen6x.dtb
load ${dtype} ${disk}:1 10800000 /boot/zImage && load ${dtype} ${disk}:1 11000000 /boot/dtbs/${fdtfile} && bootz 10800000 - 11000000

View file

@ -4,25 +4,41 @@
buildarch=4
pkgname=uboot-boundary
pkgver=2014.04
pkgrel=2
pkgver=2014.07
pkgrel=1
arch=('armv7h')
pkgdesc="U-Boot for Nitrogen6X/Sabre Lite"
url="https://github.com/boundarydevices/u-boot-imx6/tree/production"
license=('GPL')
makedepends=('uboot-mkimage')
makedepends=('git' 'bc')
backup=('6x_bootscript')
_commit=aed9475361820a65e37ed936c833322cbbc0f2b5
_commit=bb9dde563768731423fd6c560e95e1793a90710a
source=("https://github.com/boundarydevices/u-boot-imx6/archive/${_commit}.tar.gz"
'6x_bootscript'
'alarm.patch')
md5sums=('652aa9b6be19b76d1cd2939a3aba8562'
'4c78341ff205c4e99f428385869c22e0'
'9c8304b11ad58a9b9604d89d076856dd')
'0001-arch-linux-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'
'6x_bootscript')
md5sums=('b12f5f383c57de06f16625b3465e74d9'
'cda62610b898b6e0ee13e64882a63107'
'721a46867e189d8dedc6b6f86a536a34'
'f6b687eca2d2d01f741cbda90dbacb41'
'8087672256020417438b12ec4946e1cf'
'a536d28bf45add6dbf9f84277f943de8'
'2823d0e0c3c826632f6ae934f2b746d9'
'8a6b2f50fef47b1ebb011a6d697f0025')
prepare() {
cd u-boot-imx6-${_commit}
patch -p1 -i "${srcdir}"/alarm.patch
git apply ../0001-arch-linux-arm-modifications.patch
git apply ../0002-kernel-add-support-for-gcc-5.patch
git apply ../0003-ARM-asm-io.h-use-static-inline.patch
git apply ../0004-common-main.c-make-show_boot_progress-__weak.patch
git apply ../0005-common-board-use-__weak.patch
git apply ../0006-common-board_f-cosmetic-use-__weak-for-leds.patch
}
build() {
@ -41,5 +57,5 @@ package() {
mkdir -p "${pkgdir}"/boot
cp u-boot.imx "${pkgdir}"/boot
mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "boot script" -d ../6x_bootscript ${pkgdir}/6x_bootscript
tools/mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "boot script" -d ../6x_bootscript ${pkgdir}/6x_bootscript
}

View file

@ -1,55 +0,0 @@
diff -urN a/include/configs/nitrogen6x.h b/include/configs/nitrogen6x.h
--- a/include/configs/nitrogen6x.h 2014-04-25 14:14:19.000000000 -0600
+++ b/include/configs/nitrogen6x.h 2014-05-02 18:51:44.604279073 -0600
@@ -77,6 +77,8 @@
#define CONFIG_BOUNCE_BUFFER
#define CONFIG_CMD_EXT2
#define CONFIG_CMD_FAT
+#define CONFIG_CMD_EXT4
+#define CONFIG_CMD_FS_GENERIC
#define CONFIG_DOS_PARTITION
#ifdef CONFIG_MX6Q
@@ -189,6 +191,8 @@
#define CONFIG_DRIVE_TYPES CONFIG_DRIVE_SATA CONFIG_DRIVE_MMC CONFIG_DRIVE_USB
+#define CONFIG_IDENT_STRING " Arch Linux ARM"
+
#if defined(CONFIG_SABRELITE)
#define CONFIG_EXTRA_ENV_SETTINGS \
"script=boot.scr\0" \
@@ -275,13 +279,11 @@
"usb start ;" \
"fi; " \
"for disk in 0 1 ; do ${dtype} dev ${disk} ;" \
- "for fs in fat ext2 ; do " \
- "${fs}load " \
- "${dtype} ${disk}:1 " \
- "10008000 " \
- "/6x_bootscript" \
- "&& source 10008000 ; " \
- "done ; " \
+ "load " \
+ "${dtype} ${disk}:1 " \
+ "10008000 " \
+ "/6x_bootscript" \
+ "&& source 10008000 ; " \
"done ; " \
"done; " \
"setenv stdout serial,vga ; " \
@@ -295,11 +297,9 @@
"upgradeu=for dtype in ${bootdevs}" \
"; do " \
"for disk in 0 1 ; do ${dtype} dev ${disk} ;" \
- "for fs in fat ext2 ; do " \
- "${fs}load ${dtype} ${disk}:1 10008000 " \
- "/6x_upgrade " \
- "&& source 10008000 ; " \
- "done ; " \
+ "load ${dtype} ${disk}:1 10008000 " \
+ "/6x_upgrade " \
+ "&& source 10008000 ; " \
"done ; " \
"done\0" \
"usbnet_devaddr=00:19:b8:00:00:02\0" \