Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F151014723
D13049.id35292.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
14 KB
Referenced Files
None
Subscribers
None
D13049.id35292.diff
View Options
Index: head/sysutils/u-boot-rpi2/Makefile
===================================================================
--- head/sysutils/u-boot-rpi2/Makefile
+++ head/sysutils/u-boot-rpi2/Makefile
@@ -1,61 +1,12 @@
# $FreeBSD$
-PORTNAME= u-boot
-PORTVERSION= 2015.04
-CATEGORIES= sysutils
-MASTER_SITES= ftp://ftp.denx.de/pub/u-boot/ \
- LOCAL/loos/rpi2-boot-files:bootfiles
-PKGNAMESUFFIX= -rpi2
-DISTFILES= u-boot-${PORTVERSION}.tar.bz2 \
- rpi2-boot-files-2015.04.tar.bz2:bootfiles
+MAINTAINER= manu@FreeBSD.org
+MASTERDIR= ${.CURDIR}/../u-boot-master
-MAINTAINER= loos@FreeBSD.org
-COMMENT= Cross-build U-Boot loader for Raspberry Pi 2
+MODEL= rpi2
+BOARD_CONFIG= rpi_2_defconfig
+FAMILY= rpi
-LICENSE= GPLv2
+DEPENDS= ${LOCALBASE}/share/rpi-firmware/bootcode.bin:sysutils/rpi-firmware
-BUILD_DEPENDS= arm-none-eabi-gcc:devel/arm-none-eabi-gcc
-
-NO_ARCH= yes
-
-WRKSRC= ${WRKDIR}/u-boot-${DISTVERSION}
-USES= gmake tar:bzip2
-SSP_UNSAFE= yes # cross-LD does not support -fstack-protector
-
-WRK_BOOTFILES= ${WRKDIR}/rpi2-boot-files
-
-U_BOOT_DIR= share/u-boot/${PORTNAME}${PKGNAMESUFFIX}
-PLIST_FILES= ${U_BOOT_DIR}/u-boot.bin \
- ${U_BOOT_DIR}/README \
- ${U_BOOT_DIR}/bootcode.bin \
- ${U_BOOT_DIR}/fixup.dat \
- ${U_BOOT_DIR}/fixup_cd.dat \
- ${U_BOOT_DIR}/fixup_x.dat \
- ${U_BOOT_DIR}/start.elf \
- ${U_BOOT_DIR}/start_cd.elf \
- ${U_BOOT_DIR}/start_x.elf \
- ${U_BOOT_DIR}/config.txt \
- ${U_BOOT_DIR}/LICENCE.broadcom
-
-MAKE_ARGS+= ARCH=arm \
- CROSS_COMPILE=arm-none-eabi-
-
-post-patch:
- @${LN} -sf compiler-gcc5.h ${WRKSRC}/include/linux/compiler-gcc6.h
-
-do-configure:
- (cd ${WRKSRC}; ${MAKE_CMD} rpi_2_defconfig)
-
-# The output of the u-boot build process is u-boot.bin. Older firmware
-# versions require a standard header, but the recent versions (our case)
-# are capable of booting u-boot.bin directly. Also copy the entire
-# contents of the bootfiles distribution (these are proprietary binary
-# files required to boot).
-IMGFILE=${STAGEDIR}/${PREFIX}/${U_BOOT_DIR}/u-boot.img
-do-install:
- ${MKDIR} ${STAGEDIR}/${PREFIX}/${U_BOOT_DIR}
- ${INSTALL_DATA} ${WRKSRC}/u-boot.bin ${STAGEDIR}/${PREFIX}/${U_BOOT_DIR}
- ${INSTALL_DATA} ${DESCR} ${STAGEDIR}/${PREFIX}/${U_BOOT_DIR}/README
- ${INSTALL_DATA} ${WRK_BOOTFILES}/* ${STAGEDIR}/${PREFIX}/${U_BOOT_DIR}
-
-.include <bsd.port.mk>
+.include "${MASTERDIR}/Makefile"
Index: head/sysutils/u-boot-rpi2/distinfo
===================================================================
--- head/sysutils/u-boot-rpi2/distinfo
+++ head/sysutils/u-boot-rpi2/distinfo
@@ -1,4 +0,0 @@
-SHA256 (u-boot-2015.04.tar.bz2) = 0a1a70df586655f527befa6f12e184e96ed61b126e5a567382321b17200f5d60
-SIZE (u-boot-2015.04.tar.bz2) = 9471487
-SHA256 (rpi2-boot-files-2015.04.tar.bz2) = 3bf315837492c63ce3bd13dbe8f63fd54a3bc9b611bf5cf2d0a79e0e716e16bb
-SIZE (rpi2-boot-files-2015.04.tar.bz2) = 4106827
Index: head/sysutils/u-boot-rpi2/files/patch-api_api.c
===================================================================
--- head/sysutils/u-boot-rpi2/files/patch-api_api.c
+++ head/sysutils/u-boot-rpi2/files/patch-api_api.c
@@ -1,79 +0,0 @@
---- api/api.c.orig 2014-10-14 08:47:15 UTC
-+++ api/api.c
-@@ -495,45 +495,47 @@ static int API_env_set(va_list ap)
- */
- static int API_env_enum(va_list ap)
- {
-- int i, n;
-- char *last, **next;
-+ int i;
-+ char *last, **next, *s;
-+ ENTRY *match, search;
-+ static char *buf;
-
- last = (char *)va_arg(ap, u_int32_t);
-
- if ((next = (char **)va_arg(ap, u_int32_t)) == NULL)
- return API_EINVAL;
-
-- if (last == NULL)
-- /* start over */
-- *next = ((char *)env_get_addr(0));
-- else {
-- *next = last;
--
-- for (i = 0; env_get_char(i) != '\0'; i = n + 1) {
-- for (n = i; env_get_char(n) != '\0'; ++n) {
-- if (n >= CONFIG_ENV_SIZE) {
-- /* XXX shouldn't we set *next = NULL?? */
-- return 0;
-- }
-- }
--
-- if (envmatch((uchar *)last, i) < 0)
-- continue;
--
-- /* try to get next name */
-- i = n + 1;
-- if (env_get_char(i) == '\0') {
-- /* no more left */
-- *next = NULL;
-- return 0;
-- }
--
-- *next = ((char *)env_get_addr(i));
-- return 0;
-+ /*
-+ * This leverages realloc's behavior of growing but never shrinking the
-+ * existing buffer.
-+ */
-+ if (last == NULL) {
-+ i = 0;
-+ buf = realloc(buf, 512); /* Start with reasonable size buf. */
-+ } else {
-+ buf = realloc(buf, strlen(last) + 1);
-+ strcpy(buf, last);
-+ if ((s = strchr(buf, '=')) != NULL)
-+ *s = 0;
-+ search.key = buf;
-+ if ((i = hsearch_r(search, FIND, &match, &env_htab, 0)) == 0) {
-+ i = API_EINVAL;
-+ goto done;
- }
- }
-
-+ /* hmatch on empty string is effectively "get next entry after i". */
-+ if ((i = hmatch_r("", i, &match, &env_htab)) == 0)
-+ goto done;
-+ buf = realloc(buf, strlen(match->key) + strlen(match->data) + 2);
-+ snprintf(buf, buflen, "%s=%s", match->key, match->data);
-+ *next = buf;
- return 0;
-+done:
-+ free(buf);
-+ buf = NULL;
-+ *next = NULL;
-+ return i;
- }
-
- /*
Index: head/sysutils/u-boot-rpi2/files/patch-api_api__storage.c
===================================================================
--- head/sysutils/u-boot-rpi2/files/patch-api_api__storage.c
+++ head/sysutils/u-boot-rpi2/files/patch-api_api__storage.c
@@ -1,28 +0,0 @@
---- api/api_storage.c.orig 2014-10-14 08:47:15 UTC
-+++ api/api_storage.c
-@@ -107,10 +107,13 @@ static int dev_stor_get(int type, int fi
-
- if (first) {
- di->cookie = (void *)get_dev(specs[type].name, 0);
-- if (di->cookie == NULL)
-+ if (di->cookie == NULL) {
- return 0;
-- else
-+ } else {
- found = 1;
-+ if (specs[type].max_dev > 1)
-+ *more = 1;
-+ }
-
- } else {
- for (i = 0; i < specs[type].max_dev; i++)
-@@ -146,7 +149,8 @@ static int dev_stor_get(int type, int fi
- dd = (block_dev_desc_t *)di->cookie;
- if (dd->type == DEV_TYPE_UNKNOWN) {
- debugf("device instance exists, but is not active..");
-- found = 0;
-+ di->di_stor.block_count = 0;
-+ di->di_stor.block_size = 0;
- } else {
- di->di_stor.block_count = dd->lba;
- di->di_stor.block_size = dd->blksz;
Index: head/sysutils/u-boot-rpi2/files/patch-common_cmd__elf.c
===================================================================
--- head/sysutils/u-boot-rpi2/files/patch-common_cmd__elf.c
+++ head/sysutils/u-boot-rpi2/files/patch-common_cmd__elf.c
@@ -1,29 +0,0 @@
---- common/cmd_elf.c.orig 2014-10-14 08:47:15 UTC
-+++ common/cmd_elf.c
-@@ -35,22 +35,12 @@ unsigned long do_bootelf_exec(ulong (*en
- unsigned long ret;
-
- /*
-- * QNX images require the data cache is disabled.
-- * Data cache is already flushed, so just turn it off.
-- */
-- int dcache = dcache_status();
-- if (dcache)
-- dcache_disable();
--
-- /*
-- * pass address parameter as argv[0] (aka command name),
-- * and all remaining args
-+ * FreeBSD wants the caches enabled while ubldr runs, and as of r276397
-+ * the kernel can tolerate being entered with internal (but not external
-+ * PL310) caches enabled on armv6/7 systems. So don't disable caches
-+ * here, just launch the program directly.
- */
- ret = entry(argc, argv);
--
-- if (dcache)
-- dcache_enable();
--
- return ret;
- }
-
Index: head/sysutils/u-boot-rpi2/files/patch-common_cmd__fdt.c
===================================================================
--- head/sysutils/u-boot-rpi2/files/patch-common_cmd__fdt.c
+++ head/sysutils/u-boot-rpi2/files/patch-common_cmd__fdt.c
@@ -1,11 +0,0 @@
---- common/cmd_fdt.c.orig 2015-04-23 20:55:46.193272000 -0300
-+++ common/cmd_fdt.c
-@@ -44,7 +44,7 @@
-
- buf = map_sysmem(addr, 0);
- working_fdt = buf;
-- setenv_ulong("fdtaddr", addr);
-+ setenv_hex("fdtaddr", addr);
- }
-
- /*
Index: head/sysutils/u-boot-rpi2/files/patch-common_cmd__nvedit.c
===================================================================
--- head/sysutils/u-boot-rpi2/files/patch-common_cmd__nvedit.c
+++ head/sysutils/u-boot-rpi2/files/patch-common_cmd__nvedit.c
@@ -1,11 +0,0 @@
---- common/cmd_nvedit.c.orig 2015-04-24 11:11:51.572065000 -0300
-+++ common/cmd_nvedit.c
-@@ -321,7 +321,7 @@
- {
- char str[17];
-
-- sprintf(str, "%lx", value);
-+ sprintf(str, "%#lx", value);
- return setenv(varname, str);
- }
-
Index: head/sysutils/u-boot-rpi2/files/patch-common_cmd__test.c
===================================================================
--- head/sysutils/u-boot-rpi2/files/patch-common_cmd__test.c
+++ head/sysutils/u-boot-rpi2/files/patch-common_cmd__test.c
@@ -1,19 +0,0 @@
---- common/cmd_test.c.orig 2014-10-14 08:47:15 UTC
-+++ common/cmd_test.c
-@@ -65,9 +65,14 @@ static int do_test(cmd_tbl_t *cmdtp, int
- char * const *ap;
- int i, op, left, adv, expr, last_expr, last_unop, last_binop;
-
-- /* args? */
-- if (argc < 3)
-+ /*
-+ * If no args, that's bogus, return false.
-+ * If op is -z and no other args, answer is Yes, string is empty.
-+ */
-+ if (argc < 2)
- return 1;
-+ else if (argc == 2)
-+ return !(strcmp(argv[1], "-z") == 0);
-
- #ifdef DEBUG
- {
Index: head/sysutils/u-boot-rpi2/files/patch-drivers_mmc_mmc.c
===================================================================
--- head/sysutils/u-boot-rpi2/files/patch-drivers_mmc_mmc.c
+++ head/sysutils/u-boot-rpi2/files/patch-drivers_mmc_mmc.c
@@ -1,80 +0,0 @@
---- drivers/mmc/mmc.c.orig 2014-10-14 08:47:15 UTC
-+++ drivers/mmc/mmc.c
-@@ -20,6 +20,7 @@
-
- static struct list_head mmc_devices;
- static int cur_dev_num = -1;
-+static int mmc_error_print_max = -1;
-
- __weak int board_mmc_getwp(struct mmc *mmc)
- {
-@@ -1270,9 +1271,14 @@ void mmc_destroy(struct mmc *mmc)
- block_dev_desc_t *mmc_get_dev(int dev)
- {
- struct mmc *mmc = find_mmc_device(dev);
-- if (!mmc || mmc_init(mmc))
-+ if (!mmc)
- return NULL;
-
-+ /* If mmc_init fails, mmc->block_dev will be of type
-+ * DEV_TYPE_UNKNOWN with blksz and lba set to zero.
-+ */
-+ mmc_init(mmc);
-+
- return &mmc->block_dev;
- }
- #endif
-@@ -1297,7 +1303,7 @@ int mmc_start_init(struct mmc *mmc)
- err = mmc->cfg->ops->init(mmc);
-
- if (err)
-- return err;
-+ goto done;
-
- mmc_set_bus_width(mmc, 1);
- mmc_set_clock(mmc, 1);
-@@ -1306,7 +1312,7 @@ int mmc_start_init(struct mmc *mmc)
- err = mmc_go_idle(mmc);
-
- if (err)
-- return err;
-+ goto done;
-
- /* The internal partition reset to user partition(0) at every CMD0*/
- mmc->part_num = 0;
-@@ -1323,15 +1329,33 @@ int mmc_start_init(struct mmc *mmc)
-
- if (err && err != IN_PROGRESS) {
- #if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT)
-- printf("Card did not respond to voltage select!\n");
-+ if (mmc_error_print_max < 4) {
-+ mmc_error_print_max++;
-+ printf("Card did not respond to voltage select!\n");
-+
-+ if (mmc_error_print_max == 4) {
-+ printf("Discarding further error messages\n");
-+ }
-+ }
- #endif
-- return UNUSABLE_ERR;
-+// return UNUSABLE_ERR;
-+ goto done;
- }
- }
-
- if (err == IN_PROGRESS)
- mmc->init_in_progress = 1;
-
-+done:
-+ if (err) {
-+ mmc->has_init = 0;
-+ mmc->block_dev.type = DEV_TYPE_UNKNOWN;
-+ mmc->block_dev.blksz = 0;
-+ mmc->block_dev.lba = 0;
-+ } else {
-+ mmc->has_init = 1;
-+ }
-+
- return err;
- }
-
Index: head/sysutils/u-boot-rpi2/files/patch-include_configs_rpi__common.h
===================================================================
--- head/sysutils/u-boot-rpi2/files/patch-include_configs_rpi__common.h
+++ head/sysutils/u-boot-rpi2/files/patch-include_configs_rpi__common.h
@@ -1,66 +0,0 @@
---- include/configs/rpi-common.h.orig 2015-04-13 11:53:03.000000000 -0300
-+++ include/configs/rpi-common.h
-@@ -183,4 +183,63 @@
-
- #define CONFIG_BOOTDELAY 2
-
-+/*****************************************************************************
-+ * FreeBSD customizations from here down.
-+ ****************************************************************************/
-+
-+/* Add the API and ELF features needed for ubldr. */
-+#ifndef CONFIG_SPL_BUILD
-+#define CONFIG_API
-+#define CONFIG_CMD_ELF
-+#define CONFIG_CMD_ENV_EXISTS
-+#define CONFIG_EFI_PARTITION
-+#endif
-+
-+/* Turn off dcache. */
-+#ifndef CONFIG_SPL_BUILD
-+#define CONFIG_SYS_DCACHE_OFF
-+#define CONFIG_CMD_CACHE
-+#endif
-+
-+#ifndef CONFIG_SPL_BUILD
-+#define CONFIG_SYS_MMC_MAX_DEVICE 1
-+#endif
-+
-+/* Create a small(ish) boot environment for FreeBSD. */
-+#ifndef CONFIG_SPL_BUILD
-+#undef CONFIG_EXTRA_ENV_SETTINGS
-+#define CONFIG_EXTRA_ENV_SETTINGS \
-+ ENV_DEVICE_SETTINGS \
-+ "loadaddr=0x02000000\0" \
-+ "scriptaddr=0x00000000\0" \
-+ "pxefile_addr_r=0x00100000\0" \
-+ "kernel_addr_r=0x01000000\0" \
-+ "ramdisk_addr_r=0x02100000\0" \
-+ "Fatboot=" \
-+ "env exists loaderdev || env set loaderdev ${fatdev}; " \
-+ "env exists UserFatboot && run UserFatboot; " \
-+ "echo Booting from: ${fatdev} ${bootfile}; " \
-+ "fatload ${fatdev} ${loadaddr} ${bootfile} && bootelf ${loadaddr}; " \
-+ "\0" \
-+ "Netboot=" \
-+ "env exists ethact || usb start; " \
-+ "env exists loaderdev || env set loaderdev net; " \
-+ "env exists UserNetboot && run UserNetboot; " \
-+ "dhcp ${loadaddr} ${bootfile} && bootelf ${loadaddr}; " \
-+ "\0" \
-+ "preboot=" \
-+ "fdt addr 0x100; " \
-+ "env exists bootfile || env set bootfile ubldr; " \
-+ "env exists SetupFatdev && run SetupFatdev; " \
-+ "env exists UserPreboot && run UserPreboot; " \
-+ "\0" \
-+ "SetupFatdev=" \
-+ "env exists fatdev || env set fatdev 'mmc 0'; " \
-+ "\0"
-+#undef CONFIG_BOOTCOMMAND
-+#define CONFIG_BOOTCOMMAND "run Fatboot"
-+#undef CONFIG_PREBOOT
-+#define CONFIG_PREBOOT "run preboot"
-+#endif
-+
- #endif
Index: head/sysutils/u-boot-rpi2/pkg-descr
===================================================================
--- head/sysutils/u-boot-rpi2/pkg-descr
+++ head/sysutils/u-boot-rpi2/pkg-descr
@@ -1,12 +1,15 @@
-U-Boot loader and related files for Raspberry Pi 2
+U-Boot loader for Raspberry Pi 2
-To install this bootloader, copy ALL the files in the share/u-boot/u-boot-rpi2
-directory to the first partition, formatted as FAT32, on an SD card.
+To install this bootloader, copy u-boot.bin in the share/u-boot/u-boot-rpi
+directory to the first partition, formatted as FAT16 or FAT32, on an SD card.
+You will also need the firmware files from the rpi-firmware package.
This version is patched so that:
* ELF and API features are enabled.
- * The default environment is trimmed to just what's needed to boot.
- * The saveenv command writes to the file uboot.env on the FAT partition.
+ * The distroboot command knows how to load FreeBSD loader(8)
+ * By default, it loads ubldr.bin (PIE) from file ubldr.bin on the FAT
+ partition to address ${kernel_addr_r}, and launches it. If ubldr.bin is
+ not found, it falls back on ubldr
For information about running FreeBSD on RaspberryPi, see
WWW: http://wiki.freebsd.org/FreeBSD/arm/Raspberry%20Pi
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Apr 6, 11:28 AM (4 h, 37 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30885150
Default Alt Text
D13049.id35292.diff (14 KB)
Attached To
Mode
D13049: u-boot-rpi2: Update to u-boot-master
Attached
Detach File
Event Timeline
Log In to Comment