Browse Source

[ARM] Kirkwood: Add the watchdog timer as a platform device.

The Kirkwood architecture uses the same watchdog device as the Orion
architecture. This patch adds orion5x_wdt as a platform device for
Kirkwood.

Signed-off-by: Thomas Reitmayr <treitmayr@devbase.at>
Tested-by: Martin Michlmayr <tbm@cyrius.com>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Thomas Reitmayr 16 years ago
parent
commit
054bd3f053

+ 25 - 0
arch/arm/mach-kirkwood/common.c

@@ -30,6 +30,7 @@
 #include <plat/mvsdio.h>
 #include <plat/mvsdio.h>
 #include <plat/mv_xor.h>
 #include <plat/mv_xor.h>
 #include <plat/orion_nand.h>
 #include <plat/orion_nand.h>
+#include <plat/orion5x_wdt.h>
 #include <plat/time.h>
 #include <plat/time.h>
 #include "common.h"
 #include "common.h"
 
 
@@ -767,6 +768,29 @@ static void __init kirkwood_xor1_init(void)
 }
 }
 
 
 
 
+/*****************************************************************************
+ * Watchdog
+ ****************************************************************************/
+static struct orion5x_wdt_platform_data kirkwood_wdt_data = {
+	.tclk		= 0,
+};
+
+static struct platform_device kirkwood_wdt_device = {
+	.name		= "orion5x_wdt",
+	.id		= -1,
+	.dev		= {
+		.platform_data	= &kirkwood_wdt_data,
+	},
+	.num_resources	= 0,
+};
+
+static void __init kirkwood_wdt_init(void)
+{
+	kirkwood_wdt_data.tclk = kirkwood_tclk;
+	platform_device_register(&kirkwood_wdt_device);
+}
+
+
 /*****************************************************************************
 /*****************************************************************************
  * Time handling
  * Time handling
  ****************************************************************************/
  ****************************************************************************/
@@ -859,6 +883,7 @@ void __init kirkwood_init(void)
 
 
 	/* internal devices that every board has */
 	/* internal devices that every board has */
 	kirkwood_rtc_init();
 	kirkwood_rtc_init();
+	kirkwood_wdt_init();
 	kirkwood_xor0_init();
 	kirkwood_xor0_init();
 	kirkwood_xor1_init();
 	kirkwood_xor1_init();
 }
 }

+ 3 - 0
arch/arm/mach-kirkwood/include/mach/bridge-regs.h

@@ -17,12 +17,15 @@
 #define CPU_RESET		0x00000002
 #define CPU_RESET		0x00000002
 
 
 #define RSTOUTn_MASK		(BRIDGE_VIRT_BASE | 0x0108)
 #define RSTOUTn_MASK		(BRIDGE_VIRT_BASE | 0x0108)
+#define WDT_RESET_OUT_EN	0x00000002
 #define SOFT_RESET_OUT_EN	0x00000004
 #define SOFT_RESET_OUT_EN	0x00000004
 
 
 #define SYSTEM_SOFT_RESET	(BRIDGE_VIRT_BASE | 0x010c)
 #define SYSTEM_SOFT_RESET	(BRIDGE_VIRT_BASE | 0x010c)
 #define SOFT_RESET		0x00000001
 #define SOFT_RESET		0x00000001
 
 
 #define BRIDGE_CAUSE		(BRIDGE_VIRT_BASE | 0x0110)
 #define BRIDGE_CAUSE		(BRIDGE_VIRT_BASE | 0x0110)
+#define WDT_INT_REQ		0x0008
+
 #define BRIDGE_MASK		(BRIDGE_VIRT_BASE | 0x0114)
 #define BRIDGE_MASK		(BRIDGE_VIRT_BASE | 0x0114)
 #define BRIDGE_INT_TIMER0	0x0002
 #define BRIDGE_INT_TIMER0	0x0002
 #define BRIDGE_INT_TIMER1	0x0004
 #define BRIDGE_INT_TIMER1	0x0004

+ 2 - 2
drivers/watchdog/Kconfig

@@ -233,10 +233,10 @@ config DAVINCI_WATCHDOG
 
 
 config ORION5X_WATCHDOG
 config ORION5X_WATCHDOG
 	tristate "Orion5x watchdog"
 	tristate "Orion5x watchdog"
-	depends on ARCH_ORION5X
+	depends on ARCH_ORION5X || ARCH_KIRKWOOD
 	help
 	help
 	  Say Y here if to include support for the watchdog timer
 	  Say Y here if to include support for the watchdog timer
-	  in the Orion5x ARM SoCs.
+	  in the Orion5x and Kirkwood ARM SoCs.
 	  To compile this driver as a module, choose M here: the
 	  To compile this driver as a module, choose M here: the
 	  module will be called orion5x_wdt.
 	  module will be called orion5x_wdt.