diff -burN -X patches/dontdiff linux-clean/arch/arm/mach-sa1100/cpu-sa1110.c linux/arch/arm/mach-sa1100/cpu-sa1110.c
--- linux-clean/arch/arm/mach-sa1100/cpu-sa1110.c	Tue Jul 23 10:37:53 2002
+++ linux/arch/arm/mach-sa1100/cpu-sa1110.c	Tue Jul 23 10:26:28 2002
@@ -78,6 +78,16 @@
 	cas_latency:	     3,
 };
 
+static struct sdram_params samsung_k4s281632b_tc1L __initdata = {
+	rows:		    14,
+	tck:		    12,
+	trcd:		    18,
+	trp:		    20,
+	twr:		     9,
+	refresh:	 64000,
+	cas_latency:	     3,
+};
+
 static struct sdram_params sdram_params;
 
 /*
@@ -97,6 +107,10 @@
 {
 	u_int shift;
 
+	delayed = 0;
+	if (rcd <= 1)
+	    rcd = 2;
+
 	rcd = 2 * rcd - 1;
 	shift = delayed + 1 + rcd;
 
@@ -235,8 +249,11 @@
 	 * the programming.
 	 */
 	local_irq_save(flags);
-	asm("mcr p15, 0, %0, c10, c4" : : "r" (0));
+
+	/* now drain the write-buffer */
+	asm("mcr p15, 0, %0, c7, c10, 4" : : "r" (0));
 	udelay(10);
+
 	__asm__ __volatile__("
 		b	2f
 		.align	5
@@ -255,6 +272,7 @@
 		: "r" (&MDCNFG), "r" (&PPCR), "0" (sd.mdcnfg),
 		  "r" (sd.mdrefr), "r" (sd.mdcas[0]),
 		  "r" (sd.mdcas[1]), "r" (sd.mdcas[2]), "r" (ppcr));
+
 	local_irq_restore(flags);
 
 	/*
@@ -273,6 +291,9 @@
 	if (machine_is_pt_system3())
 		sdram = &samsung_k4s641632d_tc75;
 
+	if (machine_is_consus())
+	   sdram = &samsung_k4s281632b_tc1L;
+
 	if (sdram) {
 		printk(KERN_DEBUG "SDRAM: tck: %d trcd: %d trp: %d"
 			" twr: %d refresh: %d cas_latency: %d\n",
diff -burN -X patches/dontdiff linux-clean/arch/arm/mach-sa1100/generic.c linux/arch/arm/mach-sa1100/generic.c
--- linux-clean/arch/arm/mach-sa1100/generic.c	Tue Jul 23 10:37:53 2002
+++ linux/arch/arm/mach-sa1100/generic.c	Tue Jul 23 10:43:21 2002
@@ -86,7 +86,7 @@
 
 static int __init sa11x0_init_clock(void)
 {
-	cpufreq_init(cclk_frequency_100khz[PPCR & 0xf] * 100, 59000, 287000);
+       cpufreq_init(cclk_frequency_100khz[PPCR & 0xf] * 100, 88500, 221200);
 	return 0;
 }
 
