mirror of https://gitee.com/openkylin/linux.git
ARM: socfpga: Enable soft reset
Enable a cold or warm reset to the HW from userspace. Also fix a few sparse errors: warning: symbol 'sys_manager_base_addr' was not declared. Should it be static? warning: symbol 'rst_manager_base_addr' was not declared. Should it be static? Signed-off-by: Dinh Nguyen <dinguyen@altera.com> Reviewed-by: Pavel Machek <pavel@denx.de> Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
parent
a93216c921
commit
5c04b57fe3
|
@ -20,12 +20,23 @@
|
||||||
#ifndef __MACH_CORE_H
|
#ifndef __MACH_CORE_H
|
||||||
#define __MACH_CORE_H
|
#define __MACH_CORE_H
|
||||||
|
|
||||||
|
#define SOCFPGA_RSTMGR_CTRL 0x04
|
||||||
|
#define SOCFPGA_RSTMGR_MODPERRST 0x14
|
||||||
|
#define SOCFPGA_RSTMGR_BRGMODRST 0x1c
|
||||||
|
|
||||||
|
/* System Manager bits */
|
||||||
|
#define RSTMGR_CTRL_SWCOLDRSTREQ 0x1 /* Cold Reset */
|
||||||
|
#define RSTMGR_CTRL_SWWARMRSTREQ 0x2 /* Warm Reset */
|
||||||
|
|
||||||
extern void socfpga_secondary_startup(void);
|
extern void socfpga_secondary_startup(void);
|
||||||
extern void __iomem *socfpga_scu_base_addr;
|
extern void __iomem *socfpga_scu_base_addr;
|
||||||
|
|
||||||
extern void socfpga_init_clocks(void);
|
extern void socfpga_init_clocks(void);
|
||||||
extern void socfpga_sysmgr_init(void);
|
extern void socfpga_sysmgr_init(void);
|
||||||
|
|
||||||
|
extern void __iomem *sys_manager_base_addr;
|
||||||
|
extern void __iomem *rst_manager_base_addr;
|
||||||
|
|
||||||
extern struct smp_operations socfpga_smp_ops;
|
extern struct smp_operations socfpga_smp_ops;
|
||||||
extern char secondary_trampoline, secondary_trampoline_end;
|
extern char secondary_trampoline, secondary_trampoline_end;
|
||||||
|
|
||||||
|
|
|
@ -30,9 +30,6 @@
|
||||||
|
|
||||||
#include "core.h"
|
#include "core.h"
|
||||||
|
|
||||||
extern void __iomem *sys_manager_base_addr;
|
|
||||||
extern void __iomem *rst_manager_base_addr;
|
|
||||||
|
|
||||||
static void __cpuinit socfpga_secondary_init(unsigned int cpu)
|
static void __cpuinit socfpga_secondary_init(unsigned int cpu)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -87,7 +87,15 @@ static void __init socfpga_init_irq(void)
|
||||||
|
|
||||||
static void socfpga_cyclone5_restart(char mode, const char *cmd)
|
static void socfpga_cyclone5_restart(char mode, const char *cmd)
|
||||||
{
|
{
|
||||||
/* TODO: */
|
u32 temp;
|
||||||
|
|
||||||
|
temp = readl(rst_manager_base_addr + SOCFPGA_RSTMGR_CTRL);
|
||||||
|
|
||||||
|
if (mode == 'h')
|
||||||
|
temp |= RSTMGR_CTRL_SWCOLDRSTREQ;
|
||||||
|
else
|
||||||
|
temp |= RSTMGR_CTRL_SWWARMRSTREQ;
|
||||||
|
writel(temp, rst_manager_base_addr + SOCFPGA_RSTMGR_CTRL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init socfpga_cyclone5_init(void)
|
static void __init socfpga_cyclone5_init(void)
|
||||||
|
|
Loading…
Reference in New Issue