mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 06:53:01 +00:00
uboot: sheevplug and guruplug: use mainline U-Boot
These derivations have not seen any updates since they were created in 2010, and some of their sources have disappeared. There are upstream configs for these boards, so these are now used, and they build correctly. I have no way of testing them, and I don't if anyone even uses either board with Nix anymore.
This commit is contained in:
parent
ba3e470651
commit
01020b3263
@ -129,6 +129,12 @@ in rec {
|
||||
filesToInstall = ["u-boot-spl.kwb"];
|
||||
};
|
||||
|
||||
ubootGuruplug = buildUBoot rec {
|
||||
defconfig = "guruplug_defconfig";
|
||||
extraMeta.platforms = ["armv5tel-linux"];
|
||||
filesToInstall = ["u-boot.bin"];
|
||||
};
|
||||
|
||||
ubootJetsonTK1 = buildUBoot rec {
|
||||
defconfig = "jetson-tk1_defconfig";
|
||||
extraMeta.platforms = ["armv7l-linux"];
|
||||
@ -183,6 +189,12 @@ in rec {
|
||||
filesToInstall = ["u-boot.bin"];
|
||||
};
|
||||
|
||||
ubootSheevaplug = buildUBoot rec {
|
||||
defconfig = "sheevaplug_defconfig";
|
||||
extraMeta.platforms = ["armv5tel-linux"];
|
||||
filesToInstall = ["u-boot.bin"];
|
||||
};
|
||||
|
||||
ubootUtilite = buildUBoot rec {
|
||||
defconfig = "cm_fx6_defconfig";
|
||||
extraMeta.platforms = ["armv7l-linux"];
|
||||
|
@ -1,18 +0,0 @@
|
||||
Patch to allow assembling with binutils 2.20. It worked without this patch in 2.19.1
|
||||
diff --git a/board/mv_feroceon/USP/jump.S b/board/mv_feroceon/USP/jump.S
|
||||
index 4b6b9ee..58037fc 100644
|
||||
--- a/board/mv_feroceon/USP/jump.S
|
||||
+++ b/board/mv_feroceon/USP/jump.S
|
||||
@@ -29,9 +29,11 @@ disclaimer.
|
||||
#include "sys/mvCpuIfRegs.h"
|
||||
|
||||
|
||||
-jumpStart:
|
||||
|
||||
.section ".reset_vector_sect",#alloc, #execinstr
|
||||
+
|
||||
+jumpStart:
|
||||
+
|
||||
#if defined(MV_88F6082) || defined(MV_88F6183) || defined(DB_88F5181_OLD) || defined(DB_FPGA) || \
|
||||
defined(MV88F6281) || defined(MV88F6192) || defined(MV88F6180) || defined(MV_88F6183L) || \
|
||||
defined(MV88F6190)
|
@ -1,48 +0,0 @@
|
||||
Add support for the various file systems as found in `sheevaplug.h'.
|
||||
As for the SheevaPlug, the increase in size means that the environment
|
||||
must be pushed further away.
|
||||
|
||||
In addition, increase the malloc area size to allow compilation of UbiFS.
|
||||
|
||||
--- u-boot/include/configs/guruplug.h 1970-01-01 01:00:01.000000000 +0100
|
||||
+++ u-boot/include/configs/guruplug.h 2010-09-29 18:59:52.000000000 +0200
|
||||
@@ -123,8 +123,8 @@
|
||||
* it has to be rounded to sector size
|
||||
*/
|
||||
#define CONFIG_ENV_SIZE 0x20000 /* 128k */
|
||||
-#define CONFIG_ENV_ADDR 0x40000
|
||||
-#define CONFIG_ENV_OFFSET 0x40000 /* env starts here */
|
||||
+#define CONFIG_ENV_ADDR 0x60000
|
||||
+#define CONFIG_ENV_OFFSET 0x60000 /* env starts here */
|
||||
|
||||
/*
|
||||
* Default environment variables
|
||||
@@ -145,7 +145,7 @@
|
||||
/*
|
||||
* Size of malloc() pool
|
||||
*/
|
||||
-#define CONFIG_SYS_MALLOC_LEN (1024 * 128) /* 128kB for malloc() */
|
||||
+#define CONFIG_SYS_MALLOC_LEN (1024 * 1024) /* 1 MiB for malloc() */
|
||||
/* size in bytes reserved for initial data */
|
||||
#define CONFIG_SYS_GBL_DATA_SIZE 128
|
||||
|
||||
@@ -195,4 +195,18 @@
|
||||
|
||||
#define CONFIG_SYS_ALT_MEMTEST
|
||||
|
||||
+/*
|
||||
+ * File system
|
||||
+ */
|
||||
+#define CONFIG_CMD_EXT2
|
||||
+#define CONFIG_CMD_FAT
|
||||
+#define CONFIG_CMD_JFFS2
|
||||
+#define CONFIG_CMD_UBI
|
||||
+#define CONFIG_CMD_UBIFS
|
||||
+#define CONFIG_RBTREE
|
||||
+#define CONFIG_MTD_DEVICE /* needed for mtdparts commands */
|
||||
+#define CONFIG_MTD_PARTITIONS
|
||||
+#define CONFIG_CMD_MTDPARTS
|
||||
+#define CONFIG_LZO
|
||||
+
|
||||
#endif /* _CONFIG_GURUPLUG_H */
|
||||
|
@ -1,106 +0,0 @@
|
||||
The GuruPlug's microSD card reader is a USB mass storage device that
|
||||
has two logical units (LUNs), i.e., two "SCSI disks". This patch
|
||||
adds multi-LUN support to the USB MSD driver.
|
||||
|
||||
See the thread at <http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/85425>.
|
||||
|
||||
--- u-boot/common/usb_storage.c 1970-01-01 01:00:01.000000000 +0100
|
||||
+++ u-boot/common/usb_storage.c 2010-10-02 00:38:15.000000000 +0200
|
||||
@@ -204,6 +204,22 @@ int usb_stor_info(void)
|
||||
return 1;
|
||||
}
|
||||
|
||||
+static unsigned int usb_get_max_lun(struct us_data *us)
|
||||
+{
|
||||
+ int len;
|
||||
+ unsigned char result;
|
||||
+ len = usb_control_msg(us->pusb_dev,
|
||||
+ usb_rcvctrlpipe(us->pusb_dev, 0),
|
||||
+ US_BBB_GET_MAX_LUN,
|
||||
+ USB_TYPE_CLASS | USB_RECIP_INTERFACE | USB_DIR_IN,
|
||||
+ 0, us->ifnum,
|
||||
+ &result, sizeof(result),
|
||||
+ USB_CNTL_TIMEOUT * 5);
|
||||
+ USB_STOR_PRINTF("Get Max LUN -> len = %i, result = %i\n",
|
||||
+ len, (int) result);
|
||||
+ return (len > 0) ? result : 0;
|
||||
+}
|
||||
+
|
||||
/*******************************************************************************
|
||||
* scan the usb and reports device info
|
||||
* to the user if mode = 1
|
||||
@@ -241,13 +257,21 @@ int usb_stor_scan(int mode)
|
||||
break; /* no more devices avaiable */
|
||||
|
||||
if (usb_storage_probe(dev, 0, &usb_stor[usb_max_devs])) {
|
||||
- /* ok, it is a storage devices
|
||||
- * get info and fill it in
|
||||
- */
|
||||
- if (usb_stor_get_info(dev, &usb_stor[usb_max_devs],
|
||||
- &usb_dev_desc[usb_max_devs]) == 1)
|
||||
+ /* OK, it's a storage device. Iterate over its LUNs
|
||||
+ * and populate `usb_dev_desc'. */
|
||||
+ int lun, max_lun, start = usb_max_devs;
|
||||
+
|
||||
+ max_lun = usb_get_max_lun(&usb_stor[usb_max_devs]);
|
||||
+ for (lun = 0;
|
||||
+ lun <= max_lun && usb_max_devs < USB_MAX_STOR_DEV;
|
||||
+ lun++) {
|
||||
+ usb_dev_desc[usb_max_devs].lun = lun;
|
||||
+ if (usb_stor_get_info(dev, &usb_stor[start],
|
||||
+ &usb_dev_desc[usb_max_devs]) == 1) {
|
||||
usb_max_devs++;
|
||||
}
|
||||
+ }
|
||||
+ }
|
||||
/* if storage device */
|
||||
if (usb_max_devs == USB_MAX_STOR_DEV) {
|
||||
printf("max USB Storage Device reached: %d stopping\n",
|
||||
@@ -882,6 +906,7 @@ static int usb_inquiry(ccb *srb, struct
|
||||
do {
|
||||
memset(&srb->cmd[0], 0, 12);
|
||||
srb->cmd[0] = SCSI_INQUIRY;
|
||||
+ srb->cmd[1] = srb->lun << 5;
|
||||
srb->cmd[4] = 36;
|
||||
srb->datalen = 36;
|
||||
srb->cmdlen = 12;
|
||||
@@ -905,6 +930,7 @@ static int usb_request_sense(ccb *srb, s
|
||||
ptr = (char *)srb->pdata;
|
||||
memset(&srb->cmd[0], 0, 12);
|
||||
srb->cmd[0] = SCSI_REQ_SENSE;
|
||||
+ srb->cmd[1] = srb->lun << 5;
|
||||
srb->cmd[4] = 18;
|
||||
srb->datalen = 18;
|
||||
srb->pdata = &srb->sense_buf[0];
|
||||
@@ -924,6 +950,7 @@ static int usb_test_unit_ready(ccb *srb,
|
||||
do {
|
||||
memset(&srb->cmd[0], 0, 12);
|
||||
srb->cmd[0] = SCSI_TST_U_RDY;
|
||||
+ srb->cmd[1] = srb->lun << 5;
|
||||
srb->datalen = 0;
|
||||
srb->cmdlen = 12;
|
||||
if (ss->transport(srb, ss) == USB_STOR_TRANSPORT_GOOD)
|
||||
@@ -943,6 +970,7 @@ static int usb_read_capacity(ccb *srb, s
|
||||
do {
|
||||
memset(&srb->cmd[0], 0, 12);
|
||||
srb->cmd[0] = SCSI_RD_CAPAC;
|
||||
+ srb->cmd[1] = srb->lun << 5;
|
||||
srb->datalen = 8;
|
||||
srb->cmdlen = 12;
|
||||
if (ss->transport(srb, ss) == USB_STOR_TRANSPORT_GOOD)
|
||||
@@ -957,6 +985,7 @@ static int usb_read_10(ccb *srb, struct
|
||||
{
|
||||
memset(&srb->cmd[0], 0, 12);
|
||||
srb->cmd[0] = SCSI_READ10;
|
||||
+ srb->cmd[1] = srb->lun << 5;
|
||||
srb->cmd[2] = ((unsigned char) (start >> 24)) & 0xff;
|
||||
srb->cmd[3] = ((unsigned char) (start >> 16)) & 0xff;
|
||||
srb->cmd[4] = ((unsigned char) (start >> 8)) & 0xff;
|
||||
@@ -973,6 +1002,7 @@ static int usb_write_10(ccb *srb, struct
|
||||
{
|
||||
memset(&srb->cmd[0], 0, 12);
|
||||
srb->cmd[0] = SCSI_WRITE10;
|
||||
+ srb->cmd[1] = srb->lun << 5;
|
||||
srb->cmd[2] = ((unsigned char) (start >> 24)) & 0xff;
|
||||
srb->cmd[3] = ((unsigned char) (start >> 16)) & 0xff;
|
||||
srb->cmd[4] = ((unsigned char) (start >> 8)) & 0xff;
|
@ -1,57 +0,0 @@
|
||||
{stdenv, fetchgit, unzip}:
|
||||
|
||||
# Marvell's branch of U-Boot for the GuruPlug.
|
||||
|
||||
let
|
||||
# Aug 2010 revision of the `testing' branch of Marvell's U-Boot repository.
|
||||
# See
|
||||
# <http://www.openplug.org/plugwiki/index.php/Re-building_the_kernel_and_U-Boot>
|
||||
# for details.
|
||||
rev = "f106056095049c2c748c2a2797e5353295240e04";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "uboot-guruplug-0.0-pre-${stdenv.lib.strings.substring 0 7 rev}";
|
||||
|
||||
src = fetchgit {
|
||||
url = "git://git.denx.de/u-boot-marvell.git";
|
||||
sha256 = "18gwyj16vml7aja9cyan51jwfcysy4cs062z7wmgdc0l9bha6iw7";
|
||||
inherit rev;
|
||||
};
|
||||
|
||||
patches =
|
||||
[ ./guruplug-file-systems.patch ./guruplug-usb-msd-multi-lun.patch ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
# Remove the cross compiler prefix.
|
||||
configurePhase = ''
|
||||
make mrproper
|
||||
make guruplug_config
|
||||
sed -i /CROSS_COMPILE/d include/config.mk
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
unset src
|
||||
if test -z "$crossConfig"; then
|
||||
make all u-boot.kwb
|
||||
else
|
||||
make all u-boot.kwb ARCH=arm CROSS_COMPILE=$crossConfig-
|
||||
fi
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
|
||||
dontStrip = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp -v u-boot u-boot.{kwb,map} $out
|
||||
|
||||
mkdir -p $out/bin
|
||||
cp tools/{envcrc,mkimage} $out/bin
|
||||
'';
|
||||
|
||||
meta = {
|
||||
platforms = [ "armv5tel-linux" ];
|
||||
};
|
||||
}
|
@ -1,61 +0,0 @@
|
||||
{stdenv, fetchurl, unzip}:
|
||||
|
||||
# We should enable this check once we have the cross target system information
|
||||
# assert stdenv.system == "armv5tel-linux" || crossConfig == "armv5tel-linux";
|
||||
|
||||
# All this file is made for the Marvell Sheevaplug
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "uboot-sheevaplug-3.4.27";
|
||||
|
||||
src = fetchurl {
|
||||
url = "ftp://ftp.denx.de/pub/u-boot/u-boot-1.1.4.tar.bz2";
|
||||
sha256 = "19vp4rlikz7h72pqsjhgz7nmgjy4c6vabvxkw67wni70vy5ddy8s";
|
||||
};
|
||||
|
||||
srcAddon = fetchurl {
|
||||
url = "http://www.plugcomputer.org/405/us/plug-basic/uboot/u-boot-3.4.27.zip";
|
||||
sha256 = "1wqxznpdb6d2kx58gral4q0mg5ddxyrv7az8c6v29nr3cd9yrfsg";
|
||||
};
|
||||
|
||||
postUnpack = ''
|
||||
mv u-boot-1.1.4 u-boot-3.4.27
|
||||
unzip -o $srcAddon
|
||||
sourceRoot=u-boot-3.4.27
|
||||
'';
|
||||
|
||||
patches = [ ./gas220.patch ];
|
||||
|
||||
# Remove the cross compiler prefix, and add reiserfs support
|
||||
configurePhase = ''
|
||||
make mrproper
|
||||
make rd88f6281Sheevaplug_config NBOOT=1 LE=1
|
||||
sed -i /CROSS_COMPILE/d include/config.mk
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
unset src
|
||||
if test -z "$crossConfig"; then
|
||||
make clean all
|
||||
else
|
||||
make clean all ARCH=arm CROSS_COMPILE=$crossConfig-
|
||||
fi
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
|
||||
dontStrip = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp u-boot-rd88f6281Sheevaplug_400db_nand.bin $out
|
||||
cp u-boot u-boot.map $out
|
||||
|
||||
mkdir -p $out/bin
|
||||
cp tools/{envcrc,mkimage} $out/bin
|
||||
'';
|
||||
|
||||
meta = {
|
||||
platforms = [ "armv5tel-linux" ];
|
||||
};
|
||||
}
|
@ -13867,6 +13867,7 @@ with pkgs;
|
||||
ubootBananaPi
|
||||
ubootBeagleboneBlack
|
||||
ubootClearfog
|
||||
ubootGuruplug
|
||||
ubootJetsonTK1
|
||||
ubootOdroidXU3
|
||||
ubootOrangePiPc
|
||||
@ -13876,17 +13877,14 @@ with pkgs;
|
||||
ubootRaspberryPi2
|
||||
ubootRaspberryPi3_32bit
|
||||
ubootRaspberryPi3_64bit
|
||||
ubootSheevaplug
|
||||
ubootUtilite
|
||||
ubootWandboard
|
||||
;
|
||||
|
||||
# Non-upstream U-Boots:
|
||||
ubootSheevaplug = callPackage ../misc/uboot/sheevaplug.nix { };
|
||||
|
||||
ubootNanonote = callPackage ../misc/uboot/nanonote.nix { };
|
||||
|
||||
ubootGuruplug = callPackage ../misc/uboot/guruplug.nix { };
|
||||
|
||||
ubootRock64 = callPackage ../misc/uboot/rock64.nix { };
|
||||
|
||||
uclibc = callPackage ../os-specific/linux/uclibc { };
|
||||
|
Loading…
Reference in New Issue
Block a user