// SPDX-License-Identifier: GPL-2.0
/*
 * This file implements basic PSCI support for Renesas r8a779a0 SoC
 *
 * Copyright (C) 2020 Renesas Electronics Corp.
 *
 */

#include <common.h>
#include <asm/io.h>
#include <asm/psci.h>
#include <asm/secure.h>

int __secure psci_features(u32 function_id, u32 psci_fid)
{
	switch (psci_fid) {
	case ARM_PSCI_0_2_FN_PSCI_VERSION:
	case ARM_PSCI_0_2_FN_SYSTEM_RESET:
		return 0x0;
	}
	/* case ARM_PSCI_0_2_FN_CPU_ON: */
	/* case ARM_PSCI_0_2_FN_CPU_OFF: */
	/* case ARM_PSCI_0_2_FN_AFFINITY_INFO: */
	/* case ARM_PSCI_0_2_FN_MIGRATE_INFO_TYPE: */
	/* case ARM_PSCI_0_2_FN_SYSTEM_OFF: */
	return ARM_PSCI_RET_NI;
}

u32 __secure psci_version(void)
{
	return ARM_PSCI_VER_0_2;
}

#define RST_BASE	0xE6160000 /* Domain0 */
#define RST_SRESCR0	(RST_BASE + 0x18)
#define RST_SPRES	0x5AA58000

void __secure __noreturn psci_system_reset(void)
{
	writel(RST_SPRES, RST_SRESCR0);

	while (1)
		;
}

int psci_update_dt(void *fdt)
{
	return 0;
}
