summaryrefslogtreecommitdiffstats
path: root/drivers/efi/efi-device.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/efi/efi-device.c')
-rw-r--r--drivers/efi/efi-device.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/efi/efi-device.c b/drivers/efi/efi-device.c
index 79cdd2ef27..955899b2d0 100644
--- a/drivers/efi/efi-device.c
+++ b/drivers/efi/efi-device.c
@@ -466,6 +466,34 @@ static int efi_init_devices(void)
}
core_initcall(efi_init_devices);
+void efi_pause_devices(void)
+{
+ struct device_d *dev;
+
+ bus_for_each_device(&efi_bus, dev) {
+ struct driver_d *drv = dev->driver;
+ struct efi_device *efidev = to_efi_device(dev);
+ struct efi_driver *efidrv = to_efi_driver(drv);
+
+ if (efidrv->dev_pause)
+ efidrv->dev_pause(efidev);
+ }
+}
+
+void efi_continue_devices(void)
+{
+ struct device_d *dev;
+
+ bus_for_each_device(&efi_bus, dev) {
+ struct driver_d *drv = dev->driver;
+ struct efi_device *efidev = to_efi_device(dev);
+ struct efi_driver *efidrv = to_efi_driver(drv);
+
+ if (efidrv->dev_continue)
+ efidrv->dev_continue(efidev);
+ }
+}
+
static void efi_devpath(efi_handle_t handle)
{
efi_status_t efiret;