Index: linux-2.6.24/arch/arm/mach-s3c2410/pm.c
===================================================================
--- linux-2.6.24.orig/arch/arm/mach-s3c2410/pm.c	2008-02-15 19:31:29.000000000 +0100
+++ linux-2.6.24/arch/arm/mach-s3c2410/pm.c	2008-02-16 11:54:13.000000000 +0100
@@ -44,6 +44,8 @@
 #define DBG(fmt...) printk(KERN_DEBUG fmt)
 #endif
 
+static unsigned long s3c24xx_resume_addr_save[4];
+
 static void s3c2410_pm_prepare(void)
 {
 	/* ensure at least GSTATUS3 has the resume address */
@@ -82,6 +84,11 @@
 		__raw_writel(calc, phys_to_virt(H1940_SUSPEND_CHECKSUM));
 	}
 
+	if (machine_is_g500()) {
+		memcpy(s3c24xx_resume_addr_save, phys_to_virt(G500_SUSPEND_RESUMEAT), 16);
+		memcpy(phys_to_virt(G500_SUSPEND_RESUMEAT), h1940_pm_return, 16);
+	}
+
 	if ( machine_is_aml_m5900() )
 		s3c2410_gpio_setpin(S3C2410_GPF2, 1);
 
@@ -90,7 +97,6 @@
 static int s3c2410_pm_resume(struct sys_device *dev)
 {
 	unsigned long tmp;
-
 	/* unset the return-from-sleep flag, to ensure reset */
 
 	tmp = __raw_readl(S3C2410_GSTATUS2);
@@ -100,6 +106,9 @@
 	if ( machine_is_aml_m5900() )
 		s3c2410_gpio_setpin(S3C2410_GPF2, 0);
 
+	if ( machine_is_g500() )
+		memcpy(phys_to_virt(G500_SUSPEND_RESUMEAT), s3c24xx_resume_addr_save, 16);
+
 	return 0;
 }
 
Index: linux-2.6.24/drivers/video/s3c2410fb.c
===================================================================
--- linux-2.6.24.orig/drivers/video/s3c2410fb.c	2008-02-16 11:49:02.000000000 +0100
+++ linux-2.6.24/drivers/video/s3c2410fb.c	2008-02-16 11:54:48.000000000 +0100
@@ -1027,6 +1027,7 @@
 	msleep(1);
 
 	s3c2410fb_init_registers(fbinfo);
+	s3c2410fb_activate_var(fbinfo);
 
 	return 0;
 }
Index: linux-2.6.24/include/asm-arm/arch-s3c2410/h1940.h
===================================================================
--- linux-2.6.24.orig/include/asm-arm/arch-s3c2410/h1940.h	2008-02-16 11:52:10.000000000 +0100
+++ linux-2.6.24/include/asm-arm/arch-s3c2410/h1940.h	2008-02-16 11:53:22.000000000 +0100
@@ -15,6 +15,7 @@
 #define H1940_SUSPEND_CHECKSUM		(0x30003ff8)
 #define H1940_SUSPEND_RESUMEAT		(0x30081000)
 #define H1940_SUSPEND_CHECK		(0x30080000)
+#define G500_SUSPEND_RESUMEAT		(0x30041000)
 
 extern void h1940_pm_return(void);
 

