[coreboot] v2[PATCH]RCA RM4100 reboot patch

Joseph Smith joe at settoplinux.org
Thu May 15 03:39:14 CEST 2008


This patch allows the RCA RM4100 to reboot. Upon rebooting in auto.c it
detects if the memory is already initialized, if so it issues a hard reset
through the southbridge. It works pretty slick.

Signed-off-by: Joseph Smith <joe at settoplinux.org>


-- 
Thanks,
Joseph Smith
Set-Top-Linux
www.settoplinux.org
-------------- next part --------------
Index: src/mainboard/rca/rm4100/auto.c
===================================================================
--- src/mainboard/rca/rm4100/auto.c	(revision 3319)
+++ src/mainboard/rca/rm4100/auto.c	(working copy)
@@ -33,7 +33,9 @@
 #include "ram/ramtest.c"
 #include "superio/smsc/smscsuperio/smscsuperio_early_serial.c"
 #include "northbridge/intel/i82830/raminit.h"
+#include "northbridge/intel/i82830/memory_initialized.c"
 #include "southbridge/intel/i82801xx/i82801xx.h"
+#include "southbridge/intel/i82801xx/i82801xx_reset.c"
 #include "cpu/x86/mtrr/earlymtrr.c"
 #include "cpu/x86/bist.h"
 #include "spd_table.h"
@@ -95,6 +97,9 @@
 
 	if (bist == 0)
 		early_mtrr_init();
+		if (memory_initialized()) {
+			hard_reset();
+		}
 
 	enable_smbus();
 
@@ -103,6 +108,9 @@
 	uart_init();
 	console_init();
 
+	/* Prevent the TCO timer from rebooting us */
+	i82801xx_halt_tco_timer();
+
 	/* Halt if there was a built in self test failure. */
 	report_bist_failure(bist);
 
@@ -114,6 +122,5 @@
 	/* ram_check(0, 640 * 1024); */
 	/* ram_check(130048 * 1024, 131072 * 1024); */
 
-	i82801xx_halt_tco_timer();
 	ac97_io_enable();
 }
Index: src/northbridge/intel/i82830/memory_initialized.c
===================================================================
--- src/northbridge/intel/i82830/memory_initialized.c	(revision 0)
+++ src/northbridge/intel/i82830/memory_initialized.c	(revision 0)
@@ -0,0 +1,30 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2008 Joseph Smith <joe at settoplinux.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+
+#include "i82830.h"
+#define NB_DEV PCI_DEV(0, 0, 0)
+
+static inline int memory_initialized(void)
+{
+	u32 drc;
+	drc = pci_read_config32(NB_DEV, DRC);
+	return (drc & (1<<29));
+}


More information about the coreboot mailing list