* @EVT_DM_PRE_PROBE: Device is about to be probed
*/
enum event_t {
- EVT_NONE,
+ /**
+ * @EVT_NONE: This zero value is not used for events.
+ */
+ EVT_NONE = 0,
+
+ /**
+ * @EVT_TEST: This event is used in unit tests.
+ */
EVT_TEST,
- /* Events related to driver model */
+ /**
+ * @EVT_DM_POST_INIT_F:
+ * This event is triggered after pre-relocation initialization of the
+ * driver model. Its parameter is NULL.
+ * A non-zero return code from the event handler let's the boot process
+ * fail.
+ */
EVT_DM_POST_INIT_F,
+
+ /**
+ * @EVT_DM_POST_INIT_R:
+ * This event is triggered after post-relocation initialization of the
+ * driver model. Its parameter is NULL.
+ * A non-zero return code from the event handler let's the boot process
+ * fail.
+ */
+ EVT_DM_POST_INIT_R,
+
+ /**
+ * @EVT_DM_PRE_PROBE:
+ * This event is triggered before probing a device. Its parameter is the
+ * device to be probed.
+ * A non-zero return code from the event handler lets the device not
+ * being probed.
+ */
EVT_DM_PRE_PROBE,
+
+ /**
+ * @EVT_DM_POST_PROBE:
+ * This event is triggered after probing a device. Its parameter is the
+ * device that was probed.
+ * A non-zero return code from the event handler leaves the device in
+ * the unprobed state and therefore not usable.
+ */
EVT_DM_POST_PROBE,
+
+ /**
+ * @EVT_DM_PRE_REMOVE:
+ * This event is triggered after removing a device. Its parameter is
+ * the device to be removed.
+ * A non-zero return code from the event handler stops the removal of
+ * the device before any changes.
+ */
EVT_DM_PRE_REMOVE,
+
+ /**
+ * @EVT_DM_POST_REMOVE:
+ * This event is triggered before removing a device. Its parameter is
+ * the device that was removed.
+ * A non-zero return code stops from the event handler the removal of
+ * the device after all removal changes. The previous state is not
+ * restored. All children will be gone and the device may not be
+ * functional.
+ */
EVT_DM_POST_REMOVE,
- /* Init hooks */
+ /**
+ * @EVT_MISC_INIT_F:
+ * This event is triggered during the initialization sequence before
+ * relocation. Its parameter is NULL.
+ * A non-zero return code from the event handler let's the boot process
+ * fail.
+ */
EVT_MISC_INIT_F,
- /* Fpga load hook */
+ /*
+ * Emitted before relocation to set up Firmware Support Package
+ *
+ * Where U-Boot relies on binary blobs to handle part of the system
+ * init, this event can be used to set up the blobs. This is used on
+ * some Intel platforms
+ */
+ EVT_FSP_INIT_F,
+
+ /*
+ * Emitted just before jumping to the main loop
+ *
+ * Some boards need to perform initialisation immediately before control
+ * is passed to the command-line interpreter (e.g. for init that depend
+ * on later phases in the init sequence).
+ *
+ * Some parts can be only initialized if all others (like Interrupts)
+ * are up and running (e.g. the PC-style ISA keyboard).
+ */
+ EVT_LAST_STAGE_INIT,
+
+ /**
+ * @EVT_FPGA_LOAD:
+ * The FPGA load hook is called after loading an FPGA with a new binary.
+ * Its parameter is of type struct event_fpga_load and contains
+ * information about the loaded image.
+ */
EVT_FPGA_LOAD,
- /* Device tree fixups before booting */
+ /**
+ * @EVT_FT_FIXUP:
+ * This event is triggered during device-tree fix up after all
+ * other device-tree fixups have been executed.
+ * Its parameter is of type struct event_ft_fixup which contains
+ * the address of the device-tree to fix up and the list of images to be
+ * booted.
+ * A non-zero return code from the event handler let's booting the
+ * images fail.
+ */
EVT_FT_FIXUP,
- /* To be called once, before calling main_loop() */
+ /**
+ * @EVT_MAIN_LOOP:
+ * This event is triggered immediately before calling main_loop() which
+ * is the entry point of the command line. Its parameter is NULL.
+ * A non-zero return value causes the boot to fail.
+ */
EVT_MAIN_LOOP,
+ /**
+ * @EVT_COUNT:
+ * This constants holds the maximum event number + 1 and is used when
+ * looping over all event classes.
+ */
EVT_COUNT
};
DECLARE_GLOBAL_DATA_PTR;
- extern U_BOOT_DRIVER(bootmeth_script);
+extern U_BOOT_DRIVER(bootmeth_cros);
+ extern U_BOOT_DRIVER(bootmeth_2script);
static int inject_response(struct unit_test_state *uts)
{
/* Enable the script bootmeth too */
ut_assertok(uclass_first_device_err(UCLASS_BOOTSTD, &bootstd));
- ut_assertok(device_bind(bootstd, DM_DRIVER_REF(bootmeth_script),
+ ut_assertok(device_bind(bootstd, DM_DRIVER_REF(bootmeth_2script),
"bootmeth_script", 0, ofnode_null(), &dev));
- /* Change the order to include mmc4 */
+ /* Enable the cros bootmeth if needed */
+ if (bind_cros) {
+ ut_assertok(uclass_first_device_err(UCLASS_BOOTSTD, &bootstd));
+ ut_assertok(device_bind(bootstd, DM_DRIVER_REF(bootmeth_cros),
+ "cros", 0, ofnode_null(), &dev));
+ }
+
+ /* Change the order to include the device */
std = dev_get_priv(bootstd);
old_order = std->bootdev_order;
std->bootdev_order = order;