diff options
Diffstat (limited to 'arch/arm/mach-socfpga/socfpga.c')
-rw-r--r-- | arch/arm/mach-socfpga/socfpga.c | 26 |
1 files changed, 26 insertions, 0 deletions
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 | ||
77 | static 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 | |||
77 | static const char *altera_dt_match[] = { | 90 | static 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, |
88 | MACHINE_END | 101 | MACHINE_END |
102 | |||
103 | static const char *altera_a10_dt_match[] = { | ||
104 | "altr,socfpga-arria10", | ||
105 | NULL | ||
106 | }; | ||
107 | |||
108 | DT_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, | ||
114 | MACHINE_END | ||