Add a function to init a bootflow, to reduce code duplication.
Signed-off-by: Simon Glass <sjg@chromium.org>
if (!ops->get_bootflow)
return -ENOSYS;
- memset(bflow, '\0', sizeof(*bflow));
- bflow->dev = dev;
- bflow->method = iter->method;
- bflow->state = BOOTFLOWST_BASE;
+ bootflow_init(bflow, dev, iter->method);
return ops->get_bootflow(dev, iter, bflow);
}
} while (1);
}
+void bootflow_init(struct bootflow *bflow, struct udevice *bootdev,
+ struct udevice *meth)
+{
+ memset(bflow, '\0', sizeof(*bflow));
+ bflow->dev = bootdev;
+ bflow->method = meth;
+ bflow->state = BOOTFLOWST_BASE;
+}
+
void bootflow_free(struct bootflow *bflow)
{
free(bflow->name);
if (!ops->read_bootflow)
return -ENOSYS;
- memset(bflow, '\0', sizeof(*bflow));
- bflow->dev = NULL;
- bflow->method = dev;
- bflow->state = BOOTFLOWST_BASE;
+ bootflow_init(bflow, NULL, dev);
return ops->read_bootflow(dev, bflow);
}
bool doing_global;
};
+/**
+ * bootflow_init() - Set up a bootflow struct
+ *
+ * The bootflow is zeroed and set to state BOOTFLOWST_BASE
+ *
+ * @bflow: Struct to set up
+ * @bootdev: Bootdev to use
+ * @meth: Bootmeth to use
+ */
+void bootflow_init(struct bootflow *bflow, struct udevice *bootdev,
+ struct udevice *meth);
+
/**
* bootflow_iter_init() - Reset a bootflow iterator
*