1 /* 2 * Copyright (c) 2023 Basalte bv 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #define SAM_DT_RSTC_DRIVER DT_INST(0, atmel_sam_rstc) 8 9 #include <zephyr/kernel.h> 10 #if defined(CONFIG_REBOOT) 11 #include <zephyr/sys/reboot.h> 12 #endif 13 14 #if defined(CONFIG_REBOOT) 15 #if DT_NODE_HAS_STATUS(SAM_DT_RSTC_DRIVER, okay) 16 sys_arch_reboot(int type)17void sys_arch_reboot(int type) 18 { 19 Rstc *regs = (Rstc *)DT_REG_ADDR(SAM_DT_RSTC_DRIVER); 20 21 switch (type) { 22 case SYS_REBOOT_COLD: 23 regs->RSTC_CR = RSTC_CR_KEY_PASSWD 24 | RSTC_CR_PROCRST 25 #if defined(CONFIG_SOC_SERIES_SAM3X) || defined(CONFIG_SOC_SERIES_SAM4S) || \ 26 defined(CONFIG_SOC_SERIES_SAM4E) 27 | RSTC_CR_PERRST 28 #endif /* CONFIG_SOC_SERIES_SAM3X || CONFIG_SOC_SERIES_SAM4S || CONFIG_SOC_SERIES_SAM4E */ 29 ; 30 break; 31 default: 32 break; 33 } 34 } 35 36 #endif /* DT_NODE_HAS_STATUS */ 37 #endif /* CONFIG_REBOOT */ 38