diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2016-07-20 08:04:11 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2016-07-26 08:31:31 +0200 |
commit | 4d85cb974a5f95a98f81a5efd45f9956ca8c4858 (patch) | |
tree | fead2940d3654d6c4ac50ef53d02a7594e1a66ed /include/bootm.h | |
parent | cb47ddee1b700d910c0459c71ce7a98035e5de5b (diff) | |
download | barebox-4d85cb974a5f95a98f81a5efd45f9956ca8c4858.tar.gz barebox-4d85cb974a5f95a98f81a5efd45f9956ca8c4858.tar.xz |
include: Move bulk of boot.h to bootm.h
The majority of the stuff currently in include/boot.h is about bootm
code implemented common/bootm.c. To be more consistent move it to a
new file include/bootm.h.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'include/bootm.h')
-rw-r--r-- | include/bootm.h | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/include/bootm.h b/include/bootm.h new file mode 100644 index 0000000000..6e9777a9ac --- /dev/null +++ b/include/bootm.h @@ -0,0 +1,125 @@ +#ifndef __BOOTM_H +#define __BOOTM_H + +#include <image.h> +#include <filetype.h> +#include <linux/list.h> + +enum bootm_verify { + BOOTM_VERIFY_NONE, + BOOTM_VERIFY_HASH, + BOOTM_VERIFY_SIGNATURE, + BOOTM_VERIFY_AVAILABLE, +}; + +struct bootm_data { + const char *os_file; + const char *initrd_file; + const char *oftree_file; + int verbose; + enum bootm_verify verify; + bool force; + bool dryrun; + /* + * appendroot - if true, try to add a suitable root= Kernel option to + * mount the rootfs from the same device as the Kernel comes from. + */ + bool appendroot; + unsigned long initrd_address; + unsigned long os_address; + unsigned long os_entry; +}; + +int bootm_boot(struct bootm_data *data); + +struct image_data { + /* simplest case. barebox has already loaded the os here */ + struct resource *os_res; + + /* if os is an uImage this will be provided */ + struct uimage_handle *os; + + /* if os is a FIT image this will be provided */ + struct fit_handle *os_fit; + + char *os_part; + + /* otherwise only the filename will be provided */ + char *os_file; + + /* + * The address the user wants to load the os image to. + * May be UIMAGE_INVALID_ADDRESS to indicate that the + * user has not specified any address. In this case the + * handler may choose a suitable address + */ + unsigned long os_address; + + /* entry point to the os. relative to the start of the image */ + unsigned long os_entry; + + /* if initrd is already loaded this resource will be !NULL */ + struct resource *initrd_res; + + /* if initrd is an uImage this will be provided */ + struct uimage_handle *initrd; + char *initrd_part; + + /* otherwise only the filename will be provided */ + char *initrd_file; + + unsigned long initrd_address; + + char *oftree_file; + char *oftree_part; + + struct device_node *of_root_node; + struct fdt_header *oftree; + struct resource *oftree_res; + + enum bootm_verify verify; + int verbose; + int force; + int dryrun; +}; + +struct image_handler { + const char *name; + + struct list_head list; + + int ih_os; + + enum filetype filetype; + int (*bootm)(struct image_data *data); +}; + +int register_image_handler(struct image_handler *handle); + +#ifdef CONFIG_BOOTM_VERBOSE +static inline int bootm_verbose(struct image_data *data) +{ + return data->verbose; +} +#else +static inline int bootm_verbose(struct image_data *data) +{ + return 0; +} +#endif + +void bootm_data_init_defaults(struct bootm_data *data); + +int bootm_load_os(struct image_data *data, unsigned long load_address); + +bool bootm_has_initrd(struct image_data *data); +int bootm_load_initrd(struct image_data *data, unsigned long load_address); + +int bootm_load_devicetree(struct image_data *data, unsigned long load_address); +int bootm_get_os_size(struct image_data *data); + +enum bootm_verify bootm_get_verify_mode(void); + +#define UIMAGE_SOME_ADDRESS (UIMAGE_INVALID_ADDRESS - 1) + +#endif /* __BOOTM_H */ |