[ARM] 3610/1: Make reboot work on Versatile
authorDeepak Saxena <dsaxena@plexity.net>
Tue, 20 Jun 2006 20:30:44 +0000 (21:30 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Tue, 20 Jun 2006 20:30:44 +0000 (21:30 +0100)
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>
arch/arm/Kconfig
include/asm-arm/arch-versatile/system.h

index dfb97fe045d0a5a49d8e5520f9820e810ef38311..1b7e5c2e90ef7696bc7ca251d2ca0759506d5310 100644 (file)
@@ -93,15 +93,49 @@ choice
        prompt "ARM system type"
        default ARCH_VERSATILE
 
+config ARCH_AAEC2000
+       bool "Agilent AAEC-2000 based"
+       select ARM_AMBA
+       help
+         This enables support for systems based on the Agilent AAEC-2000
+
+config ARCH_INTEGRATOR
+       bool "ARM Ltd. Integrator family"
+       select ARM_AMBA
+       select ICST525
+       help
+         Support for ARM's Integrator platform.
+
+config ARCH_REALVIEW
+       bool "ARM Ltd. RealView family"
+       select ARM_AMBA
+       select ICST307
+       help
+         This enables support for ARM Ltd RealView boards.
+
+config ARCH_VERSATILE
+       bool "ARM Ltd. Versatile family"
+       select ARM_AMBA
+       select ARM_VIC
+       select ICST307
+       help
+         This enables support for ARM Ltd Versatile board.
+
+config ARCH_AT91RM9200
+       bool "Atmel AT91RM9200"
+       help
+         Say Y here if you intend to run this kernel on an Atmel
+         AT91RM9200-based board.
+
 config ARCH_CLPS7500
-       bool "Cirrus-CL-PS7500FE"
+       bool "Cirrus CL-PS7500FE"
        select TIMER_ACORN
        select ISA
        help
          Support for the Cirrus Logic PS7500FE system-on-a-chip.
 
 config ARCH_CLPS711X
-       bool "CLPS711x/EP721x-based"
+       bool "Cirrus Logic CLPS711x/EP721x-based"
        help
          Support for Cirrus Logic 711x/721x based boards.
 
@@ -135,12 +169,22 @@ config ARCH_FOOTBRIDGE
          Support for systems based on the DC21285 companion chip
          ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder.
 
-config ARCH_INTEGRATOR
-       bool "Integrator"
-       select ARM_AMBA
-       select ICST525
+config ARCH_NETX
+       bool "Hilscher NetX based"
+       select ARM_VIC
        help
-         Support for ARM's Integrator platform.
+         This enables support for systems based on the Hilscher NetX Soc
+
+config ARCH_H720X
+       bool "Hynix HMS720x-based"
+       select ISA_DMA_API
+       help
+         This enables support for systems based on the Hynix HMS720x
+
+config ARCH_IMX
+       bool "IMX"
+       help
+         Support for Motorola's i.MX family of processors (MX1, MXL).
 
 config ARCH_IOP3XX
        bool "IOP3xx-based"
@@ -178,6 +222,11 @@ config ARCH_L7200
          If you have any questions or comments about the Linux kernel port
          to this board, send e-mail to <sjhill@cotw.com>.
 
+config ARCH_PNX4008
+       bool "Philips Nexperia PNX4008 Mobile"
+       help
+         This enables support for Philips PNX4008 mobile platform.
+
 config ARCH_PXA
        bool "PXA2xx-based"
        select ARCH_MTD_XIP
@@ -232,55 +281,6 @@ config ARCH_OMAP
        help
          Support for TI's OMAP platform (OMAP1 and OMAP2).
 
-config ARCH_VERSATILE
-       bool "Versatile"
-       select ARM_AMBA
-       select ARM_VIC
-       select ICST307
-       help
-         This enables support for ARM Ltd Versatile board.
-
-config ARCH_REALVIEW
-       bool "RealView"
-       select ARM_AMBA
-       select ICST307
-       help
-         This enables support for ARM Ltd RealView boards.
-
-config ARCH_IMX
-       bool "IMX"
-       help
-         Support for Motorola's i.MX family of processors (MX1, MXL).
-
-config ARCH_H720X
-       bool "Hynix-HMS720x-based"
-       select ISA_DMA_API
-       help
-         This enables support for systems based on the Hynix HMS720x
-
-config ARCH_AAEC2000
-       bool "Agilent AAEC-2000 based"
-       select ARM_AMBA
-       help
-         This enables support for systems based on the Agilent AAEC-2000
-
-config ARCH_AT91RM9200
-       bool "AT91RM9200"
-       help
-         Say Y here if you intend to run this kernel on an Atmel
-         AT91RM9200-based board.
-
-config ARCH_PNX4008
-       bool "Philips Nexperia PNX4008 Mobile"
-       help
-         This enables support for Philips PNX4008 mobile platform.
-
-config ARCH_NETX
-       bool "Hilscher NetX based"
-       select ARM_VIC
-       help
-         This enables support for systems based on the Hilscher NetX Soc
-
 endchoice
 
 source "arch/arm/mach-clps711x/Kconfig"
index 8889a189739f7f8e1ed7991f46a998f1a2539640..71c6254c0d9b4e5c2098a7c4db044303157f5ff3 100644 (file)
@@ -36,16 +36,14 @@ static inline void arch_idle(void)
 
 static inline void arch_reset(char mode)
 {
-       unsigned int hdr_ctrl = (IO_ADDRESS(VERSATILE_SYS_BASE) + VERSATILE_SYS_RESETCTL_OFFSET);
-       unsigned int val;
+       u32 val;
 
-       /*
-        * To reset, we hit the on-board reset register
-        * in the system FPGA
-        */
-       val = __raw_readl(hdr_ctrl);
-       val |= VERSATILE_SYS_CTRL_RESET_CONFIGCLR;
-       __raw_writel(val, hdr_ctrl);
+       val = __raw_readl(IO_ADDRESS(VERSATILE_SYS_RESETCTL)) & ~0x7;
+       val |= 0x105;
+
+       __raw_writel(0xa05f, IO_ADDRESS(VERSATILE_SYS_LOCK));
+       __raw_writel(val, IO_ADDRESS(VERSATILE_SYS_RESETCTL));
+       __raw_writel(0, IO_ADDRESS(VERSATILE_SYS_LOCK));
 }
 
 #endif