diff --git a/arch/ppc/kernel/setup.c b/arch/ppc/kernel/setup.c
index 9c44588..545cfd0 100644
--- a/arch/ppc/kernel/setup.c
+++ b/arch/ppc/kernel/setup.c
@@ -623,10 +623,8 @@
 /* Checks wdt=x and wdt_period=xx command-line option */
 int __init early_parse_wdt(char *p)
 {
-	extern u32 wdt_enable;
-
 	if (p && strncmp(p, "0", 1) != 0)
-	       wdt_enable = 1;
+	       booke_wdt_enabled = 1;
 
 	return 0;
 }
@@ -634,10 +632,8 @@
 
 int __init early_parse_wdt_period (char *p)
 {
-	extern u32 wdt_period;
-
 	if (p)
-		wdt_period = simple_strtoul(p, NULL, 0);
+		booke_wdt_period = simple_strtoul(p, NULL, 0);
 
 	return 0;
 }
diff --git a/drivers/char/watchdog/Kconfig b/drivers/char/watchdog/Kconfig
index 95335b4..c3898af 100644
--- a/drivers/char/watchdog/Kconfig
+++ b/drivers/char/watchdog/Kconfig
@@ -349,6 +349,9 @@
 config BOOKE_WDT
 	tristate "PowerPC Book-E Watchdog Timer"
 	depends on WATCHDOG && (BOOKE || 4xx)
+	---help---
+	  Please see Documentation/watchdog/watchdog-api.txt for
+	  more information.
 
 # MIPS Architecture
 
diff --git a/drivers/char/watchdog/booke_wdt.c b/drivers/char/watchdog/booke_wdt.c
index 7281f39..abc30cc 100644
--- a/drivers/char/watchdog/booke_wdt.c
+++ b/drivers/char/watchdog/booke_wdt.c
@@ -23,6 +23,7 @@
 
 #include <asm/reg_booke.h>
 #include <asm/uaccess.h>
+#include <asm/system.h>
 
 /* If the kernel parameter wdt_enable=1, the watchdog will be enabled at boot.
  * Also, the wdt_period sets the watchdog timer period timeout.
@@ -38,8 +39,8 @@
 #define WDT_PERIOD_DEFAULT 4	/* Refer to the PPC40x and PPC4xx manuals */
 #endif				/* for timing information */
 
-u32 wdt_enable = 0;
-u32 wdt_period = WDT_PERIOD_DEFAULT;
+u32 booke_wdt_enabled = 0;
+u32 booke_wdt_period = WDT_PERIOD_DEFAULT;
 
 #ifdef	CONFIG_FSL_BOOKE
 #define WDTP(x)		((((63-x)&0x3)<<30)|(((63-x)&0x3c)<<15))
@@ -55,7 +56,7 @@
 	u32 val;
 
 	val = mfspr(SPRN_TCR);
-	val |= (TCR_WIE|TCR_WRC(WRC_CHIP)|WDTP(wdt_period));
+	val |= (TCR_WIE|TCR_WRC(WRC_CHIP)|WDTP(booke_wdt_period));
 
 	mtspr(SPRN_TCR, val);
 }
@@ -108,12 +109,12 @@
 		booke_wdt_ping();
 		return 0;
 	case WDIOC_SETTIMEOUT:
-		if (get_user(wdt_period, (u32 *) arg))
+		if (get_user(booke_wdt_period, (u32 *) arg))
 			return -EFAULT;
-		mtspr(SPRN_TCR, (mfspr(SPRN_TCR)&~WDTP(0))|WDTP(wdt_period));
+		mtspr(SPRN_TCR, (mfspr(SPRN_TCR)&~WDTP(0))|WDTP(booke_wdt_period));
 		return 0;
 	case WDIOC_GETTIMEOUT:
-		return put_user(wdt_period, (u32 *) arg);
+		return put_user(booke_wdt_period, (u32 *) arg);
 	case WDIOC_SETOPTIONS:
 		if (get_user(tmp, (u32 *) arg))
 			return -EINVAL;
@@ -134,11 +135,11 @@
  */
 static int booke_wdt_open (struct inode *inode, struct file *file)
 {
-	if (wdt_enable == 0) {
-		wdt_enable = 1;
+	if (booke_wdt_enabled == 0) {
+		booke_wdt_enabled = 1;
 		booke_wdt_enable();
 		printk (KERN_INFO "PowerPC Book-E Watchdog Timer Enabled (wdt_period=%d)\n",
-				wdt_period);
+				booke_wdt_period);
 	}
 
 	return 0;
@@ -180,9 +181,9 @@
 		return ret;
 	}
 
-	if (wdt_enable == 1) {
+	if (booke_wdt_enabled == 1) {
 		printk (KERN_INFO "PowerPC Book-E Watchdog Timer Enabled (wdt_period=%d)\n",
-				wdt_period);
+				booke_wdt_period);
 		booke_wdt_enable();
 	}
 
diff --git a/include/asm-ppc/system.h b/include/asm-ppc/system.h
index 82395f3..be65577 100644
--- a/include/asm-ppc/system.h
+++ b/include/asm-ppc/system.h
@@ -87,6 +87,10 @@
 extern int do_page_fault(struct pt_regs *, unsigned long, unsigned long);
 extern void bad_page_fault(struct pt_regs *, unsigned long, int);
 extern void die(const char *, struct pt_regs *, long);
+#ifdef CONFIG_BOOKE_WDT
+extern u32 booke_wdt_enabled;
+extern u32 booke_wdt_period;
+#endif /* CONFIG_BOOKE_WDT */
 
 struct device_node;
 extern void note_scsi_host(struct device_node *, void *);
