blob: 260a0f200ebdb4c865a699feaa89eb7617cfbd62 [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors
//
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT
#include <pdev/power.h>
#include <arch/arch_ops.h>
#include <dev/power.h>
#include <dev/psci.h>
static void default_reboot(enum reboot_flags flags) {
psci_system_reset(flags);
}
static void default_shutdown() {
psci_system_off();
}
static const struct pdev_power_ops default_ops = {
.reboot = default_reboot,
.shutdown = default_shutdown,
};
static const struct pdev_power_ops* power_ops = &default_ops;
void power_reboot(enum reboot_flags flags) {
power_ops->reboot(flags);
}
void power_shutdown() {
power_ops->shutdown();
}
void pdev_register_power(const struct pdev_power_ops* ops) {
power_ops = ops;
smp_mb();
}