// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2017 Masahiro Yamada <yamada.masahiro@socionext.com>
 */

#include <common.h>
#include <dm.h>
#include <sysreset.h>
#include <linux/errno.h>
#include <linux/psci.h>

__weak int psci_sysreset_get_status(struct udevice *dev, char *buf, int size)
{
	return -EOPNOTSUPP;
}

static int psci_sysreset_request(struct udevice *dev, enum sysreset_t type)
{
	switch (type) {
	case SYSRESET_WARM:
	case SYSRESET_COLD:
		psci_sys_reset(type);
		break;
	case SYSRESET_POWER_OFF:
		psci_sys_poweroff();
		break;
	default:
		return -ENOSYS;
	}

	return -EINPROGRESS;
}

static struct sysreset_ops psci_sysreset_ops = {
	.request = psci_sysreset_request,
	.get_status = psci_sysreset_get_status,
};

U_BOOT_DRIVER(psci_sysreset) = {
	.name = "psci-sysreset",
	.id = UCLASS_SYSRESET,
	.ops = &psci_sysreset_ops,
	.flags = DM_FLAG_PRE_RELOC,
};
