/*
 * Copyright (c) 2023 Basalte bv
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#define SAM_DT_RSTC_DRIVER DT_INST(0, atmel_sam_rstc)

#include <zephyr/kernel.h>
#if defined(CONFIG_REBOOT)
#include <zephyr/sys/reboot.h>
#endif

#if defined(CONFIG_REBOOT)
#if DT_NODE_HAS_STATUS(SAM_DT_RSTC_DRIVER, okay)

void sys_arch_reboot(int type)
{
	Rstc *regs = (Rstc *)DT_REG_ADDR(SAM_DT_RSTC_DRIVER);

	switch (type) {
	case SYS_REBOOT_COLD:
		regs->RSTC_CR = RSTC_CR_KEY_PASSWD
			      | RSTC_CR_PROCRST
#if defined(CONFIG_SOC_SERIES_SAM3X) || defined(CONFIG_SOC_SERIES_SAM4S) || \
	defined(CONFIG_SOC_SERIES_SAM4E)
			      | RSTC_CR_PERRST
#endif /* CONFIG_SOC_SERIES_SAM3X || CONFIG_SOC_SERIES_SAM4S || CONFIG_SOC_SERIES_SAM4E */
			      ;
		break;
	default:
		break;
	}
}

#endif /* DT_NODE_HAS_STATUS */
#endif /* CONFIG_REBOOT */
