*/
-#include <common.h>
#include <bootflow.h>
#include <bootstd.h>
#include <dm.h>
+#include <env.h>
#include <log.h>
#include <malloc.h>
#include <dm/device-internal.h>
&priv->prefixes);
dev_read_string_list(dev, "bootdev-order",
&priv->bootdev_order);
+
+ priv->theme = ofnode_find_subnode(dev_ofnode(dev), "theme");
}
return 0;
return 0;
}
-const char *const *const bootstd_get_bootdev_order(struct udevice *dev)
+const char *const *const bootstd_get_bootdev_order(struct udevice *dev,
+ bool *okp)
{
struct bootstd_priv *std = dev_get_priv(dev);
+ const char *targets = env_get("boot_targets");
+
+ *okp = true;
+ log_debug("- targets %s %p\n", targets, std->bootdev_order);
+ if (targets && *targets) {
+ str_free_list(std->env_order);
+ std->env_order = str_to_list(targets);
+ if (!std->env_order) {
+ *okp = false;
+ return NULL;
+ }
+ return std->env_order;
+ }
return std->bootdev_order;
}
return 0;
}
-/* For now, bind the boormethod device if none are found in the devicetree */
+/* For now, bind the bootmethod device if none are found in the devicetree */
int dm_scan_other(bool pre_reloc_only)
{
struct driver *drv = ll_entry_start(struct driver, driver);
return 0;
for (i = 0; i < n_ents; i++, drv++) {
- /*
- * Disable EFI Manager for now as no one uses it so it is
- * confusing
- */
- if (drv->id == UCLASS_BOOTMETH &&
- strcmp("efi_mgr_bootmeth", drv->name)) {
+ if (drv->id == UCLASS_BOOTMETH) {
const char *name = drv->name;
if (!strncmp("bootmeth_", name, 9))
}
}
- /* Create the system bootdev too */
- ret = device_bind_driver(bootstd, "system_bootdev", "system-bootdev",
- &dev);
- if (ret)
- return log_msg_ret("sys", ret);
-
return 0;
}