diff options
-rw-r--r-- | sys/boot/fdt/fdt_loader_cmd.c | 2 | ||||
-rw-r--r-- | sys/boot/uboot/common/metadata.c | 4 | ||||
-rw-r--r-- | sys/boot/uboot/lib/Makefile | 12 | ||||
-rw-r--r-- | sys/boot/uboot/lib/libuboot.h | 6 | ||||
-rw-r--r-- | sys/boot/uboot/lib/module.c | 10 |
5 files changed, 26 insertions, 8 deletions
diff --git a/sys/boot/fdt/fdt_loader_cmd.c b/sys/boot/fdt/fdt_loader_cmd.c index 1d74d62b5ae9..b54a6b45e4ac 100644 --- a/sys/boot/fdt/fdt_loader_cmd.c +++ b/sys/boot/fdt/fdt_loader_cmd.c @@ -279,7 +279,7 @@ fdt_load_dtb_file(const char * filename) return (0); } -static int +int fdt_setup_fdtp() { struct preloaded_file *bfp; diff --git a/sys/boot/uboot/common/metadata.c b/sys/boot/uboot/common/metadata.c index bbc189330965..e0ab469a3706 100644 --- a/sys/boot/uboot/common/metadata.c +++ b/sys/boot/uboot/common/metadata.c @@ -41,10 +41,6 @@ __FBSDID("$FreeBSD$"); #include "bootstrap.h" #include "glue.h" -#if defined(LOADER_FDT_SUPPORT) -extern int fdt_copy(vm_offset_t); -#endif - /* * Return a 'boothowto' value corresponding to the kernel arguments in * (kargs) and any relevant environment variables. diff --git a/sys/boot/uboot/lib/Makefile b/sys/boot/uboot/lib/Makefile index 7908f24bfbd9..e5ed3ceea56d 100644 --- a/sys/boot/uboot/lib/Makefile +++ b/sys/boot/uboot/lib/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include <bsd.own.mk> + .PATH: ${.CURDIR}/../../common LIB= uboot @@ -18,6 +20,16 @@ SRCS+= disk.c CFLAGS+= -DLOADER_DISK_SUPPORT .endif +.if ${MK_FDT} != "no" +LOADER_FDT_SUPPORT= yes +.else +LOADER_FDT_SUPPORT= no +.endif + +.if ${LOADER_FDT_SUPPORT} == "yes" +CFLAGS+= -DLOADER_FDT_SUPPORT +.endif + # Pick up FDT includes CFLAGS+= -I${.CURDIR}/../../../../sys/contrib/libfdt/ diff --git a/sys/boot/uboot/lib/libuboot.h b/sys/boot/uboot/lib/libuboot.h index 1f63beeaa40c..bf07ad380a6d 100644 --- a/sys/boot/uboot/lib/libuboot.h +++ b/sys/boot/uboot/lib/libuboot.h @@ -69,3 +69,9 @@ struct file_format; extern struct file_format uboot_elf; void reboot(void); + +#if defined(LOADER_FDT_SUPPORT) +extern int fdt_setup_fdtp(); +extern int fdt_copy(vm_offset_t); +#endif + diff --git a/sys/boot/uboot/lib/module.c b/sys/boot/uboot/lib/module.c index f03d644624f4..d9b3dc0d502e 100644 --- a/sys/boot/uboot/lib/module.c +++ b/sys/boot/uboot/lib/module.c @@ -29,19 +29,23 @@ __FBSDID("$FreeBSD$"); /* * U-Boot-specific module functionality. - * - * XXX not much for now... - * */ #include <stand.h> #include <string.h> #include "bootstrap.h" +#include "libuboot.h" int uboot_autoload(void) { +#if defined(LOADER_FDT_SUPPORT) + int err; + + if ((err = fdt_setup_fdtp()) != 0) + return (err); +#endif return(0); } |