Merge branch 'pr-newest-uboot' into master

This commit is contained in:
Tuomas Tynkkynen 2016-07-04 15:17:46 +03:00
commit 4085f4de5f
9 changed files with 96 additions and 118 deletions

View file

@ -19,18 +19,37 @@ in
"it cannot be cross compiled";
};
# Needed by RPi firmware
nixpkgs.config.allowUnfree = true;
boot.loader.grub.enable = false;
boot.loader.generic-extlinux-compatible.enable = true;
boot.kernelPackages = pkgs.linuxPackages_latest;
boot.kernelParams = ["console=ttyS0,115200n8" "console=ttymxc0,115200n8" "console=ttyAMA0,115200n8" "console=tty0"];
boot.kernelParams = ["console=ttyS0,115200n8" "console=ttymxc0,115200n8" "console=ttyAMA0,115200n8" "console=ttyO0,115200n8" "console=tty0"];
boot.consoleLogLevel = 7;
# FIXME: this probably should be in installation-device.nix
users.extraUsers.root.initialHashedPassword = "";
sdImage = {
populateBootCommands = ''
populateBootCommands = let
configTxt = pkgs.writeText "config.txt" ''
[pi2]
kernel=u-boot-rpi2.bin
[pi3]
kernel=u-boot-rpi3.bin
enable_uart=1
'';
in ''
for f in bootcode.bin fixup.dat start.elf; do
cp ${pkgs.raspberrypifw}/share/raspberrypi/boot/$f boot/
done
cp ${pkgs.ubootRaspberryPi2}/u-boot.bin boot/u-boot-rpi2.bin
cp ${pkgs.ubootRaspberryPi3}/u-boot.bin boot/u-boot-rpi3.bin
cp ${configTxt} boot/config.txt
${extlinux-conf-builder} -t 3 -c ${config.system.build.toplevel} -d ./boot
'';
'';
};
}

View file

@ -26,6 +26,7 @@ in
boot.loader.generic-extlinux-compatible.enable = true;
boot.kernelPackages = pkgs.linuxPackages_rpi;
boot.consoleLogLevel = 7;
# FIXME: this probably should be in installation-device.nix
users.extraUsers.root.initialHashedPassword = "";

View file

@ -10,13 +10,13 @@ let
stdenv.mkDerivation (rec {
name = "uboot-${defconfig}-${version}";
version = "2016.01";
version = "2016.05";
nativeBuildInputs = [ bc dtc ];
src = fetchurl {
url = "ftp://ftp.denx.de/pub/u-boot/u-boot-${version}.tar.bz2";
sha256 = "1md5jpq5n9jh08s7sdkjrvg2q7kpzwa7yrpgl9581ncrjfx2yyg5";
sha256 = "0wdivib8kbm17qr6r7n7wyzg5vnwpagvwk5m0z80rbssc5sj5l47";
};
configurePhase = ''
@ -68,6 +68,12 @@ in rec {
filesToInstall = ["u-boot-sunxi-with-spl.bin"];
};
ubootBeagleboneBlack = buildUBoot rec {
defconfig = "am335x_boneblack_defconfig";
targetPlatforms = ["armv7l-linux"];
filesToInstall = ["MLO" "u-boot.img"];
};
ubootJetsonTK1 = buildUBoot rec {
defconfig = "jetson-tk1_defconfig";
targetPlatforms = ["armv7l-linux"];
@ -86,12 +92,16 @@ in rec {
filesToInstall = ["u-boot.bin"];
};
# Intended only for QEMU's vexpress-a9 emulation target!
ubootVersatileExpressCA9 = buildUBoot rec {
defconfig = "vexpress_ca9x4_defconfig";
ubootRaspberryPi2 = buildUBoot rec {
defconfig = "rpi_2_defconfig";
targetPlatforms = ["armv7l-linux"];
filesToInstall = ["u-boot"];
patches = [ ./vexpress-Use-config_distro_bootcmd.patch ];
filesToInstall = ["u-boot.bin"];
};
ubootRaspberryPi3 = buildUBoot rec {
defconfig = "rpi_3_32b_defconfig";
targetPlatforms = ["armv7l-linux"];
filesToInstall = ["u-boot.bin"];
};
ubootWandboard = buildUBoot rec {

View file

@ -1,82 +0,0 @@
From 98f62c27fe481dc2d444d70265268d2369d8a998 Mon Sep 17 00:00:00 2001
From: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
Date: Mon, 8 Jun 2015 22:29:23 +0300
Subject: [PATCH] vexpress: Use config_distro_bootcmd
Also had to hack cli_readline.c, as one codepath in
cli_readline_into_buffer doesn't respect the timeout.
---
common/cli_readline.c | 12 +++++++++++-
configs/vexpress_ca9x4_defconfig | 2 --
include/configs/vexpress_common.h | 2 +-
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/common/cli_readline.c b/common/cli_readline.c
index c1476e4..5063a0a 100644
--- a/common/cli_readline.c
+++ b/common/cli_readline.c
@@ -517,6 +517,7 @@ int cli_readline_into_buffer(const char *const prompt, char *buffer,
int plen = 0; /* prompt length */
int col; /* output column cnt */
char c;
+ int first = 1;
/* print prompt */
if (prompt) {
@@ -528,7 +529,16 @@ int cli_readline_into_buffer(const char *const prompt, char *buffer,
for (;;) {
if (bootretry_tstc_timeout())
return -2; /* timed out */
- WATCHDOG_RESET(); /* Trigger watchdog, if needed */
+ if (first && timeout) {
+ uint64_t etime = endtick(timeout);
+
+ while (!tstc()) { /* while no incoming data */
+ if (get_ticks() >= etime)
+ return -2; /* timed out */
+ WATCHDOG_RESET();
+ }
+ first = 0;
+ }
#ifdef CONFIG_SHOW_ACTIVITY
while (!tstc()) {
diff --git a/configs/vexpress_ca9x4_defconfig b/configs/vexpress_ca9x4_defconfig
index 2947fc1..9a5123d 100644
--- a/configs/vexpress_ca9x4_defconfig
+++ b/configs/vexpress_ca9x4_defconfig
@@ -5,11 +5,9 @@ CONFIG_TARGET_VEXPRESS_CA9X4=y
# CONFIG_CMD_IMLS is not set
# CONFIG_CMD_XIMG is not set
# CONFIG_CMD_EDITENV is not set
-# CONFIG_CMD_ENV_EXISTS is not set
# CONFIG_CMD_LOADB is not set
# CONFIG_CMD_LOADS is not set
# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_ECHO is not set
# CONFIG_CMD_ITEST is not set
# CONFIG_CMD_SETEXPR is not set
# CONFIG_CMD_NFS is not set
diff --git a/include/configs/vexpress_common.h b/include/configs/vexpress_common.h
index 98f6ae9..062532a 100644
--- a/include/configs/vexpress_common.h
+++ b/include/configs/vexpress_common.h
@@ -185,7 +185,6 @@
CONFIG_SYS_INIT_RAM_SIZE - \
GENERATED_GBL_DATA_SIZE)
#define CONFIG_SYS_INIT_SP_ADDR CONFIG_SYS_GBL_DATA_OFFSET
-#define CONFIG_CMD_ECHO
#include <config_distro_defaults.h>
@@ -225,6 +224,7 @@
#define CONFIG_EXTRA_ENV_SETTINGS \
CONFIG_PLATFORM_ENV_SETTINGS \
BOOTENV \
+ "fdtfile=vexpress-v2p-ca9.dtb\0" \
"console=ttyAMA0,38400n8\0" \
"dram=1024M\0" \
"root=/dev/sda1 rw\0" \
--
2.6.0

View file

@ -1,15 +1,14 @@
{stdenv, fetchurl }:
{ stdenv, fetchFromGitHub }:
let
stdenv.mkDerivation rec {
name = "raspberrypi-firmware-${version}";
version = "1.20160620";
rev = "1.20160315";
in stdenv.mkDerivation {
name = "raspberrypi-firmware-${rev}";
src = fetchurl {
url = "https://github.com/raspberrypi/firmware/archive/${rev}.tar.gz";
sha256 = "0a7ycv01s0kk84szsh51hy2mjjil1dzdk0g7k83h50d5nya090fl";
src = fetchFromGitHub {
owner = "raspberrypi";
repo = "firmware";
rev = version;
sha256 = "06g691px0abndp5zvz2ba1g675rcqb64n055h5ahgnlck5cdpawg";
};
installPhase = ''
@ -19,8 +18,10 @@ in stdenv.mkDerivation {
cp opt/vc/LICENCE $out/share/raspberrypi
for f in $out/bin/*; do
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$f"
patchelf --set-rpath "$out/lib" "$f"
if isELF "$f"; then
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$f"
patchelf --set-rpath "$out/lib" "$f"
fi
done
'';

View file

@ -1,21 +1,47 @@
{ stdenv, fetchurl, perl, buildLinux, ... } @ args:
{ stdenv, fetchFromGitHub, perl, buildLinux, ... } @ args:
let
modDirVersion = "4.4.13";
tag = "1.20160620-1";
in
stdenv.lib.overrideDerivation (import ./generic.nix (args // rec {
version = "${modDirVersion}-${tag}";
inherit modDirVersion;
rev = "f4b20d47d7df7927967fcd524324b145cfc9e2f9";
in import ./generic.nix (args // rec {
version = "4.1.y-${rev}";
modDirVersion = "4.1.20-v7";
src = fetchurl {
url = "https://api.github.com/repos/raspberrypi/linux/tarball/${rev}";
name = "linux-raspberrypi-${version}.tar.gz";
sha256 = "0x17hlbi7lpmmnp24dnkync5gzj57j84j0nlrcv1lv9fahjkqsm2";
src = fetchFromGitHub {
owner = "raspberrypi";
repo = "linux";
rev = "raspberrypi-kernel_${tag}";
sha256 = "0bydlzmd9mar07j6dihhzn1xm6vpn92y33vf1qsdkl3hjil6brfc";
};
features.iwlwifi = true;
extraMeta.hydraPlatforms = [];
})) (oldAttrs: {
postConfigure = ''
# The v7 defconfig has this set to '-v7' which screws up our modDirVersion.
sed -i $buildRoot/.config -e 's/^CONFIG_LOCALVERSION=.*/CONFIG_LOCALVERSION=""/'
'';
postFixup = ''
# Make copies of the DTBs so that U-Boot finds them, as it is looking for the upstream names.
# This is ugly as heck.
copyDTB() {
if [ -f "$out/dtbs/$1" ]; then
cp -v "$out/dtbs/$1" "$out/dtbs/$2"
fi
}
# I am not sure if all of these are correct...
copyDTB bcm2708-rpi-b.dtb bcm2835-rpi-a.dtb
copyDTB bcm2708-rpi-b.dtb bcm2835-rpi-b.dtb
copyDTB bcm2708-rpi-b.dtb bcm2835-rpi-b-rev2.dtb
copyDTB bcm2708-rpi-b-plus.dtb bcm2835-rpi-a-plus.dtb
copyDTB bcm2708-rpi-b-plus.dtb bcm2835-rpi-b-plus.dtb
copyDTB bcm2708-rpi-b-plus.dtb bcm2835-rpi-zero.dtb
copyDTB bcm2708-rpi-cm.dtb bcm2835-rpi-cm.dtb
copyDTB bcm2709-rpi-2-b.dtb bcm2836-rpi-2-b.dtb
copyDTB bcm2710-rpi-3-b.dtb bcm2837-rpi-3-b.dtb
'';
})

View file

@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
description = "Realtek SDIO Wi-Fi driver";
homepage = "https://github.com/hadess/rtl8723bs";
license = stdenv.lib.licenses.gpl2;
platforms = [ "x86_64-linux" "i686-linux" "armv7l-linux" ];
platforms = stdenv.lib.platforms.linux;
broken = ! versionAtLeast kernel.version "3.19";
maintainers = with maintainers; [ elitak ];
};

View file

@ -11465,10 +11465,12 @@ in
buildUBoot
ubootTools
ubootBananaPi
ubootBeagleboneBlack
ubootJetsonTK1
ubootPcduino3Nano
ubootRaspberryPi
ubootVersatileExpressCA9
ubootRaspberryPi2
ubootRaspberryPi3
ubootWandboard
;

View file

@ -136,6 +136,7 @@ rec {
kernelMajor = "2.6";
kernelHeadersBaseConfig = "bcm2835_defconfig";
kernelBaseConfig = "bcmrpi_defconfig";
kernelDTB = true;
kernelArch = "arm";
kernelAutoModules = false;
kernelExtraConfig =