svn commit: r417689 - in head/sysutils: . u-boot-pine64 u-boot-pine64/files
Brad Davis
brd at FreeBSD.org
Mon Jun 27 22:19:55 UTC 2016
Author: brd
Date: Mon Jun 27 22:19:53 2016
New Revision: 417689
URL: https://svnweb.freebsd.org/changeset/ports/417689
Log:
Add sysutils/u-boot-pine64 to support the Pine64 boards.
Approved by: bdrewery (mentor)
Added:
head/sysutils/u-boot-pine64/
head/sysutils/u-boot-pine64/Makefile (contents, props changed)
head/sysutils/u-boot-pine64/distinfo (contents, props changed)
head/sysutils/u-boot-pine64/files/
head/sysutils/u-boot-pine64/files/patch-arm-trusted-firmware--Makefile (contents, props changed)
head/sysutils/u-boot-pine64/files/patch-lib_efi__loader_efi__disk.c (contents, props changed)
head/sysutils/u-boot-pine64/pkg-descr (contents, props changed)
Modified:
head/sysutils/Makefile
Modified: head/sysutils/Makefile
==============================================================================
--- head/sysutils/Makefile Mon Jun 27 22:16:20 2016 (r417688)
+++ head/sysutils/Makefile Mon Jun 27 22:19:53 2016 (r417689)
@@ -1099,6 +1099,7 @@
SUBDIR += u-boot-cubox-hummingboard
SUBDIR += u-boot-duovero
SUBDIR += u-boot-pandaboard
+ SUBDIR += u-boot-pine64
SUBDIR += u-boot-rpi
SUBDIR += u-boot-rpi2
SUBDIR += u-boot-utilite
Added: head/sysutils/u-boot-pine64/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sysutils/u-boot-pine64/Makefile Mon Jun 27 22:19:53 2016 (r417689)
@@ -0,0 +1,52 @@
+# $FreeBSD$
+
+PORTNAME= u-boot
+PORTVERSION= 2016.05
+CATEGORIES= sysutils
+MASTER_SITES= ftp://ftp.denx.de/pub/u-boot/:uboot \
+ http://download.opensuse.org/repositories/devel:/ARM:/Factory:/Contrib:/Pine64/standard/src/:firmware
+PKGNAMESUFFIX= -pine64
+DISTFILES= u-boot-${PORTVERSION}.tar.bz2:uboot \
+ firmware-pine64-20160329-6.1.src.rpm:firmware
+
+MAINTAINER= brd at FreeBSD.org
+COMMENT= Cross-build U-Boot loader for Pine64
+
+LICENSE= GPLv2
+
+BUILD_DEPENDS= aarch64-none-elf-gcc:devel/aarch64-none-elf-gcc
+
+WRKSRC= ${WRKDIR}/u-boot-${DISTVERSION}
+USES= gmake tar:bzip2
+SSP_UNSAFE= yes # cross-LD does not support -fstack-protector
+
+U_BOOT_DIR= share/u-boot/${PORTNAME}${PKGNAMESUFFIX}
+PLIST_FILES= ${U_BOOT_DIR}/pine64.img \
+ ${U_BOOT_DIR}/README
+
+MAKE_ARGS+= ARCH=arm \
+ CROSS_COMPILE=aarch64-none-elf- \
+ PLAT=sun50iw1p1 \
+ CONFIG_EFI=y
+
+post-extract:
+ (cd ${WRKSRC}; ${EXTRACT_CMD} xvf ${DISTDIR}/firmware-pine64-20160329-6.1.src.rpm)
+ ${RM} -fr ${WRKSRC}/arm-trusted-firmware
+ (cd ${WRKSRC}; ${EXTRACT_CMD} xvf pine64atf.tar.xz)
+
+do-configure:
+ (cd ${WRKSRC}; ${GMAKE} pine64_plus_defconfig)
+
+post-build:
+ (cd ${WRKSRC}/arm-trusted-firmware; ${GMAKE} ${MAKE_ARGS} DEBUG=1)
+ (cd ${WRKSRC}; ${CC} -o pine64_image pine64_image.c)
+ (cd ${WRKSRC}; ${CAT} arm-trusted-firmware/build/sun50iw1p1/debug/bl31.bin u-boot-dtb.bin > bl31uboot.bin)
+ (cd ${WRKSRC}; ./pine64_image scp.bin bl31uboot.bin u-boot.img)
+ (cd ${WRKSRC}; ${CAT} boot0.bin u-boot.img > pine64.img)
+
+do-install:
+ ${MKDIR} ${STAGEDIR}/${PREFIX}/${U_BOOT_DIR}
+ ${CP} ${WRKSRC}/pine64.img ${STAGEDIR}/${PREFIX}/${U_BOOT_DIR}/
+ ${CP} ${DESCR} ${STAGEDIR}/${PREFIX}/${U_BOOT_DIR}/README
+
+.include <bsd.port.mk>
Added: head/sysutils/u-boot-pine64/distinfo
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sysutils/u-boot-pine64/distinfo Mon Jun 27 22:19:53 2016 (r417689)
@@ -0,0 +1,5 @@
+TIMESTAMP = 1466481189
+SHA256 (u-boot-2016.05.tar.bz2) = 87d02275615aaf0cd007b54cbe9fbadceef2bee7c79e6c323ea1ae8956dcb171
+SIZE (u-boot-2016.05.tar.bz2) = 11325053
+SHA256 (firmware-pine64-20160329-6.1.src.rpm) = ab3eb03902f19778a8bc62a933a24ed67f4aeacff861272cc60896a2fd8a1f43
+SIZE (firmware-pine64-20160329-6.1.src.rpm) = 6977912
Added: head/sysutils/u-boot-pine64/files/patch-arm-trusted-firmware--Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sysutils/u-boot-pine64/files/patch-arm-trusted-firmware--Makefile Mon Jun 27 22:19:53 2016 (r417689)
@@ -0,0 +1,13 @@
+--- arm-trusted-firmware/Makefile.orig 2016-03-24 04:57:16.613720732 -0500
++++ arm-trusted-firmware/Makefile 2016-06-16 21:28:30.382863000 -0500
+@@ -421,10 +421,6 @@
+ @echo
+ @echo "Built $$@ successfully"
+ @echo
+-ifeq (bl31.bin,$(notdir ${BIN}))
+- $${Q}git show HEAD --pretty=format:"%H" | head -n 1 > cur.log
+- $${Q}./tools/add_hash_bl31.sh -f $$@ -m bl31
+-endif
+
+ .PHONY : bl$(1)
+ bl$(1) : $(BUILD_DIR) $(BIN) $(DUMP)
Added: head/sysutils/u-boot-pine64/files/patch-lib_efi__loader_efi__disk.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sysutils/u-boot-pine64/files/patch-lib_efi__loader_efi__disk.c Mon Jun 27 22:19:53 2016 (r417689)
@@ -0,0 +1,103 @@
+--- lib/efi_loader/efi_disk.c.orig 2016-06-16 04:33:54 UTC
++++ lib/efi_loader/efi_disk.c
+@@ -145,11 +145,13 @@ static void efi_disk_add_dev(char *name,
+ const struct block_drvr *cur_drvr,
+ const struct blk_desc *desc,
+ int dev_index,
+- lbaint_t offset)
++ disk_partition_t *info,
++ int logical_partition)
+ {
+ struct efi_disk_obj *diskobj;
+ struct efi_device_path_file_path *dp;
+ int objlen = sizeof(*diskobj) + (sizeof(*dp) * 2);
++ static int mediaid = 0;
+
+ diskobj = calloc(1, objlen);
+
+@@ -162,14 +164,24 @@ static void efi_disk_add_dev(char *name,
+ diskobj->ops = block_io_disk_template;
+ diskobj->ifname = cur_drvr->name;
+ diskobj->dev_index = dev_index;
+- diskobj->offset = offset;
++ if (info)
++ diskobj->offset = info->start;
+
+ /* Fill in EFI IO Media info (for read/write callbacks) */
+ diskobj->media.removable_media = desc->removable;
+ diskobj->media.media_present = 1;
+- diskobj->media.block_size = desc->blksz;
+- diskobj->media.io_align = desc->blksz;
+- diskobj->media.last_block = desc->lba;
++ diskobj->media.media_id = mediaid++;
++ if (logical_partition) {
++ diskobj->media.logical_partition = 1;
++ diskobj->media.block_size = info->blksz;
++ diskobj->media.io_align = info->blksz;
++ diskobj->media.last_block = info->size - 1;
++ }
++ else {
++ diskobj->media.block_size = desc->blksz;
++ diskobj->media.io_align = desc->blksz;
++ diskobj->media.last_block = desc->lba;
++ }
+ diskobj->ops.media = &diskobj->media;
+
+ /* Fill in device path */
+@@ -204,7 +216,7 @@ static int efi_disk_create_eltorito(stru
+ while (!part_get_info(desc, part, &info)) {
+ snprintf(devname, sizeof(devname), "%s%d:%d", cur_drvr->name,
+ diskid, part);
+- efi_disk_add_dev(devname, cur_drvr, desc, diskid, info.start);
++ efi_disk_add_dev(devname, cur_drvr, desc, diskid, &info, 0);
+ part++;
+ disks++;
+ }
+@@ -213,6 +225,30 @@ static int efi_disk_create_eltorito(stru
+ return disks;
+ }
+
++static int efi_disk_create_mbr(struct blk_desc *desc,
++ const struct block_drvr *cur_drvr,
++ int diskid)
++{
++ int disks = 0;
++ char devname[32] = { 0 }; /* dp->str is u16[32] long */
++ disk_partition_t info;
++ int part = 1;
++
++ if (desc->part_type != PART_TYPE_DOS)
++ return 0;
++
++ while (!part_get_info(desc, part, &info)) {
++ snprintf(devname, sizeof(devname), "%s%d:%d", cur_drvr->name,
++ diskid, part);
++
++ efi_disk_add_dev(devname, cur_drvr, desc, diskid, &info, 1);
++ part++;
++ disks++;
++ }
++
++ return disks;
++}
++
+ /*
+ * U-Boot doesn't have a list of all online disk devices. So when running our
+ * EFI payload, we scan through all of the potentially available ones and
+@@ -241,7 +277,7 @@ int efi_disk_register(void)
+
+ snprintf(devname, sizeof(devname), "%s%d",
+ cur_drvr->name, i);
+- efi_disk_add_dev(devname, cur_drvr, desc, i, 0);
++ efi_disk_add_dev(devname, cur_drvr, desc, i, NULL, 0);
+ disks++;
+
+ /*
+@@ -249,6 +285,7 @@ int efi_disk_register(void)
+ * in an EFI world, so let's create them here
+ */
+ disks += efi_disk_create_eltorito(desc, cur_drvr, i);
++ disks += efi_disk_create_mbr(desc, cur_drvr, i);
+ }
+ }
+ printf("Found %d disks\n", disks);
Added: head/sysutils/u-boot-pine64/pkg-descr
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sysutils/u-boot-pine64/pkg-descr Mon Jun 27 22:19:53 2016 (r417689)
@@ -0,0 +1,3 @@
+U-Boot loader and related files for the Pine64
+
+For general information about U-Boot see WWW: http://www.denx.de/wiki/U-Boot
More information about the svn-ports-head
mailing list