Allow projects to define their own build.

To create a new project, add a directory under `project` and pass the
project name to `make`:

    mkdir project/my_project
    # Describe the build for the project.
    PROJECT=my_project make

Projects can be maintained separately from the main repository.

Change-Id: I33a9d7ca801e2fb3dd9795ece44577b3b565e913
diff --git a/inc/hf/fdt_handler.h b/inc/hf/fdt_handler.h
index 6d43d3f..531290b 100644
--- a/inc/hf/fdt_handler.h
+++ b/inc/hf/fdt_handler.h
@@ -20,5 +20,10 @@
 #include "hf/fdt.h"
 #include "hf/mm.h"
 
-bool fdt_get_boot_params(paddr_t fdt_addr, struct boot_params *p);
+struct fdt_header *fdt_map(paddr_t fdt_addr, struct fdt_node *n);
+bool fdt_unmap(struct fdt_header *fdt);
+void fdt_find_memory_ranges(const struct fdt_node *root, struct boot_params *p);
+bool fdt_find_initrd(struct fdt_node *n, paddr_t *begin, paddr_t *end);
+
+/** Apply an update to the FDT. */
 bool fdt_patch(paddr_t fdt_addr, struct boot_params_update *p);
diff --git a/inc/hf/layout.h b/inc/hf/layout.h
index 4c40223..9eabf4d 100644
--- a/inc/hf/layout.h
+++ b/inc/hf/layout.h
@@ -27,6 +27,12 @@
 paddr_t layout_data_begin(void);
 paddr_t layout_data_end(void);
 
+paddr_t layout_initrd_begin(void);
+paddr_t layout_initrd_end(void);
+
+paddr_t layout_fdt_begin(void);
+paddr_t layout_fdt_end(void);
+
 paddr_t layout_bin_end(void);
 
 paddr_t layout_primary_begin(void);