diff -urpN -X ../dontdiff linux-2.6.19-rc6-h1940pm2/arch/arm/mach-s3c2410/Kconfig linux-2.6.19-rc6-h1940pm3/arch/arm/mach-s3c2410/Kconfig
--- linux-2.6.19-rc6-h1940pm2/arch/arm/mach-s3c2410/Kconfig	2006-11-28 23:18:58.000000000 +0000
+++ linux-2.6.19-rc6-h1940pm3/arch/arm/mach-s3c2410/Kconfig	2006-12-05 22:33:39.000000000 +0000
@@ -41,9 +41,16 @@ config BAST_PC104_IRQ
 	  Say Y	here to enable the PC104 IRQ routing on the
 	  Simtec BAST (EB2410ITX)
 
+config PM_H1940
+	bool
+	depends on PM
+	help
+	  Internal node for H1940 and related PM
+
 config ARCH_H1940
 	bool "IPAQ H1940"
 	select CPU_S3C2410
+	select PM_H1940
 	help
 	  Say Y here if you are using the HP IPAQ H1940
 
@@ -115,6 +122,7 @@ config MACH_VR1000
 config MACH_RX3715
 	bool "HP iPAQ rx3715"
 	select CPU_S3C2440
+	select PM_H1940
 	help
 	  Say Y here if you are using the HP iPAQ rx3715.
 
diff -urpN -X ../dontdiff linux-2.6.19-rc6-h1940pm2/arch/arm/mach-s3c2410/Makefile linux-2.6.19-rc6-h1940pm3/arch/arm/mach-s3c2410/Makefile
--- linux-2.6.19-rc6-h1940pm2/arch/arm/mach-s3c2410/Makefile	2006-11-28 23:56:58.000000000 +0000
+++ linux-2.6.19-rc6-h1940pm3/arch/arm/mach-s3c2410/Makefile	2006-12-05 22:30:11.000000000 +0000
@@ -31,6 +31,7 @@ obj-$(CONFIG_CPU_S3C2410_DMA)	+= s3c2410
 
 obj-$(CONFIG_PM)		+= pm.o sleep.o
 obj-$(CONFIG_PM_SIMTEC)		+= pm-simtec.o
+obj-$(CONFIG_PM_H1940)		+= pm-h1940.o
 
 # S3C2412 support
 obj-$(CONFIG_CPU_S3C2412)	+= s3c2412.o
@@ -77,7 +78,7 @@ obj-$(CONFIG_MACH_AML_M5900)	+= mach-aml
 obj-$(CONFIG_MACH_ANUBIS)	+= mach-anubis.o
 obj-$(CONFIG_MACH_OSIRIS)	+= mach-osiris.o
 obj-$(CONFIG_ARCH_BAST)		+= mach-bast.o usb-simtec.o
-obj-$(CONFIG_ARCH_H1940)	+= mach-h1940.o pm-h1940.o
+obj-$(CONFIG_ARCH_H1940)	+= mach-h1940.o
 obj-$(CONFIG_MACH_N30)		+= mach-n30.o
 obj-$(CONFIG_ARCH_SMDK2410)	+= mach-smdk2410.o
 obj-$(CONFIG_MACH_SMDK2413)	+= mach-smdk2413.o
diff -urpN -X ../dontdiff linux-2.6.19-rc6-h1940pm2/arch/arm/mach-s3c2410/mach-h1940.c linux-2.6.19-rc6-h1940pm3/arch/arm/mach-s3c2410/mach-h1940.c
diff -urpN -X ../dontdiff linux-2.6.19-rc6-h1940pm2/arch/arm/mach-s3c2410/mach-rx3715.c linux-2.6.19-rc6-h1940pm3/arch/arm/mach-s3c2410/mach-rx3715.c
--- linux-2.6.19-rc6-h1940pm2/arch/arm/mach-s3c2410/mach-rx3715.c	2006-09-20 04:42:06.000000000 +0100
+++ linux-2.6.19-rc6-h1940pm3/arch/arm/mach-s3c2410/mach-rx3715.c	2006-12-05 22:02:19.000000000 +0000
@@ -42,6 +42,7 @@
 #include <asm/arch/regs-gpio.h>
 #include <asm/arch/regs-lcd.h>
 
+#include <asm/arch/h1940.h>
 #include <asm/arch/nand.h>
 #include <asm/arch/fb.h>
 
@@ -224,7 +225,9 @@ static void __init rx3715_init_irq(void)
 
 static void __init rx3715_init_machine(void)
 {
+	memcpy(phys_to_virt(H1940_SUSPEND_RESUMEAT), h1940_pm_return, 1024);
 	s3c2410_pm_init();
+
 	s3c24xx_fb_set_platdata(&rx3715_lcdcfg);
 }
 
diff -urpN -X ../dontdiff linux-2.6.19-rc6-h1940pm2/arch/arm/mach-s3c2410/s3c2410-pm.c linux-2.6.19-rc6-h1940pm3/arch/arm/mach-s3c2410/s3c2410-pm.c
--- linux-2.6.19-rc6-h1940pm2/arch/arm/mach-s3c2410/s3c2410-pm.c	2006-12-05 21:39:27.000000000 +0000
+++ linux-2.6.19-rc6-h1940pm3/arch/arm/mach-s3c2410/s3c2410-pm.c	2006-12-05 21:56:42.000000000 +0000
@@ -66,6 +66,22 @@ static void s3c2410_pm_prepare(void)
 		__raw_writel(calc, phys_to_virt(H1940_SUSPEND_CHECKSUM));
 	}
 
+	/* the RX3715 uses similar code and the same H1940 and the
+	 * same offsets for resume and checksum pointers */
+
+	if (machine_is_rx3715()) {
+		void *base = phys_to_virt(H1940_SUSPEND_CHECK);
+		unsigned long ptr;
+		unsigned long calc = 0;
+
+		/* generate check for the bootloader to check on resume */
+
+		for (ptr = 0; ptr < 0x40000; ptr += 0x4)
+			calc += __raw_readl(base+ptr);
+
+		__raw_writel(calc, phys_to_virt(H1940_SUSPEND_CHECKSUM));
+	}
+
 	if ( machine_is_aml_m5900() )
 		s3c2410_gpio_setpin(S3C2410_GPF2, 1);
 

