| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // This API is deprecated. Use https://cs.corp.google.com/fuchsia/fuchsia-mirror/sdk/fidl/fuchsia.hardware.power.statecontrol/admin.fidl |
| // instead.Bug:fxbug.dev/42257 |
| library fuchsia.device.manager; |
| |
| using zx; |
| /// All available suspend flags |
| const uint32 SUSPEND_FLAG_REBOOT = 0xdcdc0100; |
| const uint32 SUSPEND_FLAG_REBOOT_BOOTLOADER = 0xdcdc0101; |
| const uint32 SUSPEND_FLAG_REBOOT_RECOVERY = 0xdcdc0102; |
| const uint32 SUSPEND_FLAG_POWEROFF = 0xdcdc0200; |
| const uint32 SUSPEND_FLAG_MEXEC = 0xdcdc0300; |
| const uint32 SUSPEND_FLAG_SUSPEND_RAM = 0xdcdc0400; |
| |
| /// Provides administration services for the device manager service and the device tree it controls. |
| [Discoverable, ForDeprecatedCBindings] |
| protocol Administrator { |
| /// Ask all devices to enter the suspend state indicated by `flags`. Flags should be some |
| /// combination of `DEVICE_SUSPEND_FLAG_*` from the DDK. |
| Suspend(uint32 flags) -> (zx.status status); |
| |
| // TODO(fxbug.dev/68529): Remove this API. |
| /// This is a temporary API until DriverManager can ensure that base drivers |
| /// will be shut down automatically before fshost exits. This will happen |
| /// once drivers-as-components is implemented. |
| /// In the meantime, this API should only be called by fshost, and it must |
| /// be called before fshost exits. This function iterates over the devices |
| /// and suspends any device whose driver lives in storage. This API must be |
| /// called by fshost before it shuts down. Otherwise the devices that live |
| /// in storage may page fault as it access memory that should be provided by |
| /// the exited fshost. This function will not return until the devices are |
| /// suspended. If there are no devices that live in storage, this function |
| /// will immediatetly return. |
| UnregisterSystemStorageForShutdown() -> (zx.status status); |
| }; |