Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 10 Sep 2017 12:10:27 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r323387 - head/sys/dev/ichwd
Message-ID:  <201709101210.v8ACARaH088255@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Sun Sep 10 12:10:27 2017
New Revision: 323387
URL: https://svnweb.freebsd.org/changeset/base/323387

Log:
  Add definitions of (new) bits for TCO registers from the
  Lewisburg/Sunrise Point documentation.
  
  Sponsored by:	The FreeBSD Foundation
  MFC after:	1 week

Modified:
  head/sys/dev/ichwd/ichwd.h

Modified: head/sys/dev/ichwd/ichwd.h
==============================================================================
--- head/sys/dev/ichwd/ichwd.h	Sun Sep 10 11:57:02 2017	(r323386)
+++ head/sys/dev/ichwd/ichwd.h	Sun Sep 10 12:10:27 2017	(r323387)
@@ -309,6 +309,8 @@ struct ichwd_softc {
 #define	TCO2_CNT		0x08 /* TCO Control 2 */
 #define	TCO_MESSAGE1		0x0c /* TCO Message 1 */
 #define	TCO_MESSAGE2		0x0d /* TCO Message 2 */
+#define	TCO_WDSTATUS		0x0e /* TCO Watchdog status */
+#define	TCO_TMR			0x12 /* TCP Reload value */
 
 /* bit definitions for SMI_EN and SMI_STS */
 #define	SMI_TCO_EN		0x2000
@@ -317,23 +319,45 @@ struct ichwd_softc {
 
 /* timer value mask for TCO_RLD and TCO_TMR */
 #define	TCO_TIMER_MASK		0x1f
+#define	TCO_TIMER_MASK2		0x2f
 
 /* status bits for TCO1_STS */
-#define	TCO_NEWCENTURY		0x80 /* set for RTC year roll over (99 to 00) */
-#define	TCO_TIMEOUT		0x08 /* timed out */
-#define	TCO_INT_STS		0x04 /* data out (DO NOT USE) */
-#define	TCO_SMI_STS		0x02 /* data in (DO NOT USE) */
+#define	TCO_SLVSEL		0x2000	/* TCO Slave Select Soft Strap */
+#define	TCO_CPUSERR_STS		0x1000
+#define	TCO_CPUSMI_STS		0x0400
+#define	TCO_CPUSCI_STS		0x0200
+#define	TCO_BIOSWR_STS		0x0100
+#define	TCO_NEWCENTURY		0x0080	/* set for RTC year roll over
+					   (99 to 00) */
+#define	TCO_TIMEOUT		0x0008	/* timed out */
+#define	TCO_INT_STS		0x0004	/* data out (DO NOT USE) */
+#define	TCO_SMI_STS		0x0002	/* data in (DO NOT USE) */
+#define	TCO_NMI2SMI_STS		0x0001
 
 /* status bits for TCO2_STS */
-#define	TCO_BOOT_STS		0x04 /* failed to come out of reset */
-#define	TCO_SECOND_TO_STS	0x02 /* ran down twice */
+#define	TCO_SMLINK_SLAVE_SMI	0x0010
+#define	TCO_BOOT_STS		0x0004	/* failed to come out of reset */
+#define	TCO_SECOND_TO_STS	0x0002	/* ran down twice */
+#define	TCO_INTRD_DET		0x0001
 
 /* control bits for TCO1_CNT */
+#define	TCO_LOCK		0x1000		/* SMI_BASE.TCO_EN locked */
 #define	TCO_TMR_HALT		0x0800		/* clear to enable WDT */
 #define	TCO_NMI2SMI_EN		0x0200		/* convert NMIs to SMIs */
 #define	TCO_CNT_PRESERVE	TCO_NMI2SMI_EN	/* preserve these bits */
 #define	TCO_NMI_NOW		0x0100		/* trigger an NMI */
 
+/* control bits for TCO2_CNT */
+#define	TCO_OS_POLICY		0x0030		/* mask */
+#define	TC0_OS_POLICY_BOOT	0x0000
+#define	TCO_OS_POLICY_SHUTD	0x0010
+#define	TCO_OS_POLICY_NOLOAD	0x0020
+#define	TCO_SMB_ALERT_DISABLE	0x0008
+#define	TCO_INTRD_SEL		0x0003		/* mask */
+#define	TCO_INTRD_SEL_SILENT	0x0000
+#define	TCO_INTRD_SEL_INTR	0x0001
+#define	TCO_INTRD_SEL_SMI	0x0002
+
 /*
  * Masks for the TCO timer value field in TCO_RLD.
  * If the datasheets are to be believed, the minimum value actually varies
@@ -345,9 +369,15 @@ struct ichwd_softc {
 #define	TCO_RLD1_TMR_MAX	0x003f
 #define	TCO_RLD2_TMR_MAX	0x03ff
 
-/* approximate length in nanoseconds of one WDT tick (about 0.6 sec) for TCO v1/v2 */
+/*
+ * Approximate length in nanoseconds of one WDT tick (about 0.6 sec)
+ * for TCO v1/v2/v4
+ */
 #define	ICHWD_TICK		600000000
-/* approximate length in nanoseconds of one WDT tick (about 1.0 sec) for TCO v3 */
+/*
+ * Approximate length in nanoseconds of one WDT tick (about 1.0 sec)
+ * for TCO v3
+ */
 #define	ICHWD_TCO_V3_TICK	1000000000
 
 #endif



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201709101210.v8ACARaH088255>