+// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright (C) 2012-2014 Panasonic Corporation
- * Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
+ * Copyright (C) 2015-2016 Socionext Inc.
+ * Author: Masahiro Yamada <yamada.masahiro@socionext.com>
*/
-#include <common.h>
-#include <asm/io.h>
-#include <mach/sc-regs.h>
+#include <cpu_func.h>
+#include <linux/io.h>
+#include <asm/secure.h>
-void reset_cpu(unsigned long ignored)
+#include "sc-regs.h"
+
+/* If PSCI is enabled, this is used for SYSTEM_RESET function */
+#ifdef CONFIG_ARMV7_PSCI
+#define __SECURE __secure
+#else
+#define __SECURE
+#endif
+
+void __SECURE reset_cpu(unsigned long ignored)
{
u32 tmp;
- writel(5, SC_IRQTIMSET); /* default value */
+ writel(5, sc_base + SC_IRQTIMSET); /* default value */
- tmp = readl(SC_SLFRSTSEL);
+ tmp = readl(sc_base + SC_SLFRSTSEL);
tmp &= ~0x3; /* mask [1:0] */
tmp |= 0x0; /* XRST reboot */
- writel(tmp, SC_SLFRSTSEL);
+ writel(tmp, sc_base + SC_SLFRSTSEL);
- tmp = readl(SC_SLFRSTCTL);
+ tmp = readl(sc_base + SC_SLFRSTCTL);
tmp |= 0x1;
- writel(tmp, SC_SLFRSTCTL);
+ writel(tmp, sc_base + SC_SLFRSTCTL);
}