aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-socfpga
diff options
context:
space:
mode:
authorDinh Nguyen <dinguyen@opensource.altera.com>2015-07-20 12:23:13 -0400
committerDinh Nguyen <dinguyen@opensource.altera.com>2015-07-20 16:44:43 -0400
commitcd871d517d46f26943f3c8f61c0d2ac6665da6a2 (patch)
tree5abb55bbf4bb30df7694d27a4e783c4a4e5aadd1 /arch/arm/mach-socfpga
parentb33612e183dcbaa2cc2479cedff6984a6cccdf6a (diff)
ARM: socfpga: add reset for the Arria 10 platform
Since the Arria10's reset register offset is different from the Cyclone/Arria 5, it's best to add a new DT_MACHINE_START() for the Arria10. Signed-off-by: Dinh Nguyen <dinguyen@opensource.altera.com> --- v2: use altera_a10_dt_match for the A10 machine desc
Diffstat (limited to 'arch/arm/mach-socfpga')
-rw-r--r--arch/arm/mach-socfpga/core.h1
-rw-r--r--arch/arm/mach-socfpga/socfpga.c26
2 files changed, 27 insertions, 0 deletions
diff --git a/arch/arm/mach-socfpga/core.h b/arch/arm/mach-socfpga/core.h
index 7259c3732702..5bc6ea87cdf7 100644
--- a/arch/arm/mach-socfpga/core.h
+++ b/arch/arm/mach-socfpga/core.h
@@ -25,6 +25,7 @@
25#define SOCFPGA_RSTMGR_MODPERRST 0x14 25#define SOCFPGA_RSTMGR_MODPERRST 0x14
26#define SOCFPGA_RSTMGR_BRGMODRST 0x1c 26#define SOCFPGA_RSTMGR_BRGMODRST 0x1c
27 27
28#define SOCFPGA_A10_RSTMGR_CTRL 0xC
28#define SOCFPGA_A10_RSTMGR_MODMPURST 0x20 29#define SOCFPGA_A10_RSTMGR_MODMPURST 0x20
29 30
30/* System Manager bits */ 31/* System Manager bits */
diff --git a/arch/arm/mach-socfpga/socfpga.c b/arch/arm/mach-socfpga/socfpga.c
index 19643a756c48..a1c0efaa8794 100644
--- a/arch/arm/mach-socfpga/socfpga.c
+++ b/arch/arm/mach-socfpga/socfpga.c
@@ -74,6 +74,19 @@ static void socfpga_cyclone5_restart(enum reboot_mode mode, const char *cmd)
74 writel(temp, rst_manager_base_addr + SOCFPGA_RSTMGR_CTRL); 74 writel(temp, rst_manager_base_addr + SOCFPGA_RSTMGR_CTRL);
75} 75}
76 76
77static void socfpga_arria10_restart(enum reboot_mode mode, const char *cmd)
78{
79 u32 temp;
80
81 temp = readl(rst_manager_base_addr + SOCFPGA_A10_RSTMGR_CTRL);
82
83 if (mode == REBOOT_HARD)
84 temp |= RSTMGR_CTRL_SWCOLDRSTREQ;
85 else
86 temp |= RSTMGR_CTRL_SWWARMRSTREQ;
87 writel(temp, rst_manager_base_addr + SOCFPGA_A10_RSTMGR_CTRL);
88}
89
77static const char *altera_dt_match[] = { 90static const char *altera_dt_match[] = {
78 "altr,socfpga", 91 "altr,socfpga",
79 NULL 92 NULL
@@ -86,3 +99,16 @@ DT_MACHINE_START(SOCFPGA, "Altera SOCFPGA")
86 .restart = socfpga_cyclone5_restart, 99 .restart = socfpga_cyclone5_restart,
87 .dt_compat = altera_dt_match, 100 .dt_compat = altera_dt_match,
88MACHINE_END 101MACHINE_END
102
103static const char *altera_a10_dt_match[] = {
104 "altr,socfpga-arria10",
105 NULL
106};
107
108DT_MACHINE_START(SOCFPGA_A10, "Altera SOCFPGA Arria10")
109 .l2c_aux_val = 0,
110 .l2c_aux_mask = ~0,
111 .init_irq = socfpga_init_irq,
112 .restart = socfpga_arria10_restart,
113 .dt_compat = altera_a10_dt_match,
114MACHINE_END