[coreboot-gerrit] Patch set updated for coreboot: 167735e baytrail: disable tco timer

Aaron Durbin (adurbin@google.com) gerrit at coreboot.org
Tue Jan 28 05:22:23 CET 2014


Aaron Durbin (adurbin at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/4862

-gerrit

commit 167735eed40e90658066bbefcd5e5786ab372301
Author: Aaron Durbin <adurbin at chromium.org>
Date:   Fri Oct 4 11:11:52 2013 -0500

    baytrail: disable tco timer
    
    The TCO timer always starts ticking out of reset.
    However, depending on microcode loading and punit
    initialization the TCO timing out has a different
    impact on the sytem. Without loading microcode
    or initializing the punit the tco times out and
    nothing happens. However, when microcode is loaded
    a timeout will reset the system. Lastly, if the
    punit is initialized but the microcode isn't loaded
    the TCO timeout will shut down the system.
    
    To fix all the weird symptoms disable the TCO.
    
    BUG=chrome-os-partner:22858
    BRANCH=None
    TEST=Built and booted with microcode loading. Reset doesn't
         occur.
    
    Change-Id: I49cd62f510726a96bf734ae728a352c671d1561e
    Signed-off-by: Aaron Durbin <adurbin at chromium.org>
    Reviewed-on: https://chromium-review.googlesource.com/171860
    Reviewed-by: Shawn Nematbakhsh <shawnn at chromium.org>
---
 src/soc/intel/baytrail/baytrail/pmc.h        | 10 ++++++++
 src/soc/intel/baytrail/baytrail/romstage.h   |  1 +
 src/soc/intel/baytrail/romstage/Makefile.inc |  1 +
 src/soc/intel/baytrail/romstage/pmc.c        | 36 ++++++++++++++++++++++++++++
 src/soc/intel/baytrail/romstage/romstage.c   |  3 ++-
 5 files changed, 50 insertions(+), 1 deletion(-)

diff --git a/src/soc/intel/baytrail/baytrail/pmc.h b/src/soc/intel/baytrail/baytrail/pmc.h
index 64de97a..2cf1f00 100644
--- a/src/soc/intel/baytrail/baytrail/pmc.h
+++ b/src/soc/intel/baytrail/baytrail/pmc.h
@@ -27,4 +27,14 @@
 #define GEN_PMCONF1	0x20
 #	define UART_EN		(1 << 24)
 
+/* IO Mapped registers behind ACPI_BASE_ADDRESS */
+#define TCO_RLD			0x60
+#define TCO_STS			0x64
+#	define SECOND_TO_STS	(1 << 17)
+#	define TCO_TIMEOUT	(1 << 3)
+#define TCO1_CNT		0x68
+#	define TCO_LOCK		(1 << 12)
+#	define TCO_TMR_HALT	(1 << 11)
+#define TCO_TMR			0x70
+
 #endif /* _BAYTRAIL_PMC_H_ */
diff --git a/src/soc/intel/baytrail/baytrail/romstage.h b/src/soc/intel/baytrail/baytrail/romstage.h
index b797e8e..760905c 100644
--- a/src/soc/intel/baytrail/baytrail/romstage.h
+++ b/src/soc/intel/baytrail/baytrail/romstage.h
@@ -47,6 +47,7 @@ void * asmlinkage romstage_main(unsigned long bist, uint32_t tsc_lo,
 void asmlinkage romstage_after_car(void);
 void raminit(struct mrc_params *mp, int prev_sleep_state);
 void gfx_init(void);
+void tco_disable(void);
 
 #if CONFIG_ENABLE_BUILTIN_COM1
 void byt_config_com1_and_enable(void);
diff --git a/src/soc/intel/baytrail/romstage/Makefile.inc b/src/soc/intel/baytrail/romstage/Makefile.inc
index 912298d..2ec975b 100644
--- a/src/soc/intel/baytrail/romstage/Makefile.inc
+++ b/src/soc/intel/baytrail/romstage/Makefile.inc
@@ -2,4 +2,5 @@ cpu_incs += $(src)/soc/intel/baytrail/romstage/cache_as_ram.inc
 romstage-y += romstage.c
 romstage-y += raminit.c
 romstage-y += gfx.c
+romstage-y += pmc.c
 romstage-$(CONFIG_ENABLE_BUILTIN_COM1) += com1.c
diff --git a/src/soc/intel/baytrail/romstage/pmc.c b/src/soc/intel/baytrail/romstage/pmc.c
new file mode 100644
index 0000000..414a6bb
--- /dev/null
+++ b/src/soc/intel/baytrail/romstage/pmc.c
@@ -0,0 +1,36 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2013 Google Inc.
+ *
+ * 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; version 2 of the License.
+ *
+ * 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 <stddef.h>
+#include <arch/io.h>
+#include <baytrail/iomap.h>
+#include <baytrail/iosf.h>
+#include <baytrail/pci_devs.h>
+#include <baytrail/pmc.h>
+#include <baytrail/romstage.h>
+
+void tco_disable(void)
+{
+	uint32_t reg;
+
+	reg = inl(ACPI_BASE_ADDRESS + TCO1_CNT);
+	reg |= TCO_TMR_HALT;
+	outl(reg, ACPI_BASE_ADDRESS + TCO1_CNT);
+}
+
diff --git a/src/soc/intel/baytrail/romstage/romstage.c b/src/soc/intel/baytrail/romstage/romstage.c
index f62aeac..3704069 100644
--- a/src/soc/intel/baytrail/romstage/romstage.c
+++ b/src/soc/intel/baytrail/romstage/romstage.c
@@ -29,7 +29,6 @@
 #include <timestamp.h>
 #include <baytrail/gpio.h>
 #include <baytrail/iomap.h>
-#include <baytrail/iosf.h>
 #include <baytrail/lpc.h>
 #include <baytrail/pci_devs.h>
 #include <baytrail/romstage.h>
@@ -121,6 +120,8 @@ void romstage_common(struct romstage_params *params)
 
 	program_base_addresses();
 
+	tco_disable();
+
 	byt_config_com1_and_enable();
 
 	console_init();



More information about the coreboot-gerrit mailing list