[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
 
        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
 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
        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.
 
        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.
 
          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
        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"
 
 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>.
 
          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
 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).
 
        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"
 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)
 {
 
 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
 }
 
 #endif