Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[ARM] 3610/1: Make reboot work on Versatile

Patch from Deepak Saxena

This patch makes soft reboot work on the Versatile board. Thanks to
Catalin Marinas @ ARM for pointing out the proper way to do this.

Signed-off-by: Deepak Saxena <dsaxena@plexity.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

authored by

Deepak Saxena and committed by
Russell King
4af6fee1 098a4cb7

+63 -65
+56 -56
arch/arm/Kconfig
··· 93 93 prompt "ARM system type" 94 94 default ARCH_VERSATILE 95 95 96 + config ARCH_AAEC2000 97 + bool "Agilent AAEC-2000 based" 98 + select ARM_AMBA 99 + help 100 + This enables support for systems based on the Agilent AAEC-2000 101 + 102 + config ARCH_INTEGRATOR 103 + bool "ARM Ltd. Integrator family" 104 + select ARM_AMBA 105 + select ICST525 106 + help 107 + Support for ARM's Integrator platform. 108 + 109 + config ARCH_REALVIEW 110 + bool "ARM Ltd. RealView family" 111 + select ARM_AMBA 112 + select ICST307 113 + help 114 + This enables support for ARM Ltd RealView boards. 115 + 116 + config ARCH_VERSATILE 117 + bool "ARM Ltd. Versatile family" 118 + select ARM_AMBA 119 + select ARM_VIC 120 + select ICST307 121 + help 122 + This enables support for ARM Ltd Versatile board. 123 + 124 + config ARCH_AT91RM9200 125 + bool "Atmel AT91RM9200" 126 + help 127 + Say Y here if you intend to run this kernel on an Atmel 128 + AT91RM9200-based board. 129 + 96 130 config ARCH_CLPS7500 97 - bool "Cirrus-CL-PS7500FE" 131 + bool "Cirrus CL-PS7500FE" 98 132 select TIMER_ACORN 99 133 select ISA 100 134 help 101 135 Support for the Cirrus Logic PS7500FE system-on-a-chip. 102 136 103 137 config ARCH_CLPS711X 104 - bool "CLPS711x/EP721x-based" 138 + bool "Cirrus Logic CLPS711x/EP721x-based" 105 139 help 106 140 Support for Cirrus Logic 711x/721x based boards. 107 141 ··· 169 135 Support for systems based on the DC21285 companion chip 170 136 ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder. 171 137 172 - config ARCH_INTEGRATOR 173 - bool "Integrator" 174 - select ARM_AMBA 175 - select ICST525 138 + config ARCH_NETX 139 + bool "Hilscher NetX based" 140 + select ARM_VIC 176 141 help 177 - Support for ARM's Integrator platform. 142 + This enables support for systems based on the Hilscher NetX Soc 143 + 144 + config ARCH_H720X 145 + bool "Hynix HMS720x-based" 146 + select ISA_DMA_API 147 + help 148 + This enables support for systems based on the Hynix HMS720x 149 + 150 + config ARCH_IMX 151 + bool "IMX" 152 + help 153 + Support for Motorola's i.MX family of processors (MX1, MXL). 178 154 179 155 config ARCH_IOP3XX 180 156 bool "IOP3xx-based" ··· 221 177 222 178 If you have any questions or comments about the Linux kernel port 223 179 to this board, send e-mail to <sjhill@cotw.com>. 180 + 181 + config ARCH_PNX4008 182 + bool "Philips Nexperia PNX4008 Mobile" 183 + help 184 + This enables support for Philips PNX4008 mobile platform. 224 185 225 186 config ARCH_PXA 226 187 bool "PXA2xx-based" ··· 280 231 bool "TI OMAP" 281 232 help 282 233 Support for TI's OMAP platform (OMAP1 and OMAP2). 283 - 284 - config ARCH_VERSATILE 285 - bool "Versatile" 286 - select ARM_AMBA 287 - select ARM_VIC 288 - select ICST307 289 - help 290 - This enables support for ARM Ltd Versatile board. 291 - 292 - config ARCH_REALVIEW 293 - bool "RealView" 294 - select ARM_AMBA 295 - select ICST307 296 - help 297 - This enables support for ARM Ltd RealView boards. 298 - 299 - config ARCH_IMX 300 - bool "IMX" 301 - help 302 - Support for Motorola's i.MX family of processors (MX1, MXL). 303 - 304 - config ARCH_H720X 305 - bool "Hynix-HMS720x-based" 306 - select ISA_DMA_API 307 - help 308 - This enables support for systems based on the Hynix HMS720x 309 - 310 - config ARCH_AAEC2000 311 - bool "Agilent AAEC-2000 based" 312 - select ARM_AMBA 313 - help 314 - This enables support for systems based on the Agilent AAEC-2000 315 - 316 - config ARCH_AT91RM9200 317 - bool "AT91RM9200" 318 - help 319 - Say Y here if you intend to run this kernel on an Atmel 320 - AT91RM9200-based board. 321 - 322 - config ARCH_PNX4008 323 - bool "Philips Nexperia PNX4008 Mobile" 324 - help 325 - This enables support for Philips PNX4008 mobile platform. 326 - 327 - config ARCH_NETX 328 - bool "Hilscher NetX based" 329 - select ARM_VIC 330 - help 331 - This enables support for systems based on the Hilscher NetX Soc 332 234 333 235 endchoice 334 236
+7 -9
include/asm-arm/arch-versatile/system.h
··· 36 36 37 37 static inline void arch_reset(char mode) 38 38 { 39 - unsigned int hdr_ctrl = (IO_ADDRESS(VERSATILE_SYS_BASE) + VERSATILE_SYS_RESETCTL_OFFSET); 40 - unsigned int val; 39 + u32 val; 41 40 42 - /* 43 - * To reset, we hit the on-board reset register 44 - * in the system FPGA 45 - */ 46 - val = __raw_readl(hdr_ctrl); 47 - val |= VERSATILE_SYS_CTRL_RESET_CONFIGCLR; 48 - __raw_writel(val, hdr_ctrl); 41 + val = __raw_readl(IO_ADDRESS(VERSATILE_SYS_RESETCTL)) & ~0x7; 42 + val |= 0x105; 43 + 44 + __raw_writel(0xa05f, IO_ADDRESS(VERSATILE_SYS_LOCK)); 45 + __raw_writel(val, IO_ADDRESS(VERSATILE_SYS_RESETCTL)); 46 + __raw_writel(0, IO_ADDRESS(VERSATILE_SYS_LOCK)); 49 47 } 50 48 51 49 #endif