mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-08 19:11:53 +00:00
bootstd: Move bootflow-adding to bootstd
This relates to more than just the bootdev, since there is a global list of bootflows. Move the function to the bootstd file and rename it. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
5907c81647
commit
47903aacc5
5 changed files with 43 additions and 41 deletions
|
@ -32,31 +32,6 @@ enum {
|
|||
BOOT_TARGETS_MAX_LEN = 100,
|
||||
};
|
||||
|
||||
int bootdev_add_bootflow(struct bootflow *bflow)
|
||||
{
|
||||
struct bootstd_priv *std;
|
||||
struct bootflow *new;
|
||||
int ret;
|
||||
|
||||
ret = bootstd_get_priv(&std);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
new = malloc(sizeof(*bflow));
|
||||
if (!new)
|
||||
return log_msg_ret("bflow", -ENOMEM);
|
||||
memcpy(new, bflow, sizeof(*bflow));
|
||||
|
||||
list_add_tail(&new->glob_node, &std->glob_head);
|
||||
if (bflow->dev) {
|
||||
struct bootdev_uc_plat *ucp = dev_get_uclass_plat(bflow->dev);
|
||||
|
||||
list_add_tail(&new->bm_node, &ucp->bootflow_head);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int bootdev_first_bootflow(struct udevice *dev, struct bootflow **bflowp)
|
||||
{
|
||||
struct bootdev_uc_plat *ucp = dev_get_uclass_plat(dev);
|
||||
|
|
|
@ -61,6 +61,31 @@ void bootstd_clear_glob(void)
|
|||
bootstd_clear_glob_(std);
|
||||
}
|
||||
|
||||
int bootstd_add_bootflow(struct bootflow *bflow)
|
||||
{
|
||||
struct bootstd_priv *std;
|
||||
struct bootflow *new;
|
||||
int ret;
|
||||
|
||||
ret = bootstd_get_priv(&std);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
new = malloc(sizeof(*bflow));
|
||||
if (!new)
|
||||
return log_msg_ret("bflow", -ENOMEM);
|
||||
memcpy(new, bflow, sizeof(*bflow));
|
||||
|
||||
list_add_tail(&new->glob_node, &std->glob_head);
|
||||
if (bflow->dev) {
|
||||
struct bootdev_uc_plat *ucp = dev_get_uclass_plat(bflow->dev);
|
||||
|
||||
list_add_tail(&new->bm_node, &ucp->bootflow_head);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int bootstd_remove(struct udevice *dev)
|
||||
{
|
||||
struct bootstd_priv *priv = dev_get_priv(dev);
|
||||
|
|
|
@ -207,7 +207,7 @@ static int do_bootflow_scan(struct cmd_tbl *cmdtp, int flag, int argc,
|
|||
bflow.err = ret;
|
||||
if (!ret)
|
||||
num_valid++;
|
||||
ret = bootdev_add_bootflow(&bflow);
|
||||
ret = bootstd_add_bootflow(&bflow);
|
||||
if (ret) {
|
||||
printf("Out of memory\n");
|
||||
return CMD_RET_FAILURE;
|
||||
|
|
|
@ -195,21 +195,6 @@ void bootdev_list(bool probe);
|
|||
*/
|
||||
void bootdev_clear_bootflows(struct udevice *dev);
|
||||
|
||||
/**
|
||||
* bootdev_add_bootflow() - Add a bootflow to the bootdev's list
|
||||
*
|
||||
* All fields in @bflow must be set up. Note that @bflow->dev is used to add the
|
||||
* bootflow to that device.
|
||||
*
|
||||
* @dev: Bootdev device to add to
|
||||
* @bflow: Bootflow to add. Note that fields within bflow must be allocated
|
||||
* since this function takes over ownership of these. This functions makes
|
||||
* a copy of @bflow itself (without allocating its fields again), so the
|
||||
* caller must dispose of the memory used by the @bflow pointer itself
|
||||
* Return: 0 if OK, -ENOMEM if out of memory
|
||||
*/
|
||||
int bootdev_add_bootflow(struct bootflow *bflow);
|
||||
|
||||
/**
|
||||
* bootdev_first_bootflow() - Get the first bootflow from a bootdev
|
||||
*
|
||||
|
|
|
@ -105,4 +105,21 @@ void bootstd_clear_glob(void);
|
|||
*/
|
||||
int bootstd_prog_boot(void);
|
||||
|
||||
/**
|
||||
* bootstd_add_bootflow() - Add a bootflow to the bootdev's and global list
|
||||
*
|
||||
* All fields in @bflow must be set up. Note that @bflow->dev is used to add the
|
||||
* bootflow to that device.
|
||||
*
|
||||
* The bootflow is also added to the global list of all bootflows
|
||||
*
|
||||
* @dev: Bootdev device to add to
|
||||
* @bflow: Bootflow to add. Note that fields within bflow must be allocated
|
||||
* since this function takes over ownership of these. This functions makes
|
||||
* a copy of @bflow itself (without allocating its fields again), so the
|
||||
* caller must dispose of the memory used by the @bflow pointer itself
|
||||
* Return: 0 if OK, -ENOMEM if out of memory
|
||||
*/
|
||||
int bootstd_add_bootflow(struct bootflow *bflow);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue