svn commit: r286890 - head/sys/dev/ichwd

Fabien Thomas fabient at FreeBSD.org
Tue Aug 18 14:54:31 UTC 2015


Author: fabient
Date: Tue Aug 18 14:54:29 2015
New Revision: 286890
URL: https://svnweb.freebsd.org/changeset/base/286890

Log:
  Add ichwd TCO version 3 support (Bay Trail / Rangeley...)
  
  Reviewed by: jhb
  Obtained from: Cas-well
  Sponsored by: Stormshield

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

Modified: head/sys/dev/ichwd/ichwd.c
==============================================================================
--- head/sys/dev/ichwd/ichwd.c	Tue Aug 18 14:10:04 2015	(r286889)
+++ head/sys/dev/ichwd/ichwd.c	Tue Aug 18 14:54:29 2015	(r286890)
@@ -53,6 +53,7 @@
  * (document no. 252516-001) sections 9.10 and 9.11.
  *
  * ICH6/7/8 support by Takeharu KATO <takeharu1219 at ybb.ne.jp>
+ * SoC PMC support by Denir Li <denir.li at cas-well.com>
  */
 
 #include <sys/cdefs.h>
@@ -74,161 +75,216 @@ __FBSDID("$FreeBSD$");
 #include <dev/ichwd/ichwd.h>
 
 static struct ichwd_device ichwd_devices[] = {
-	{ DEVICEID_82801AA,  "Intel 82801AA watchdog timer",	1 },
-	{ DEVICEID_82801AB,  "Intel 82801AB watchdog timer",	1 },
-	{ DEVICEID_82801BA,  "Intel 82801BA watchdog timer",	2 },
-	{ DEVICEID_82801BAM, "Intel 82801BAM watchdog timer",	2 },
-	{ DEVICEID_82801CA,  "Intel 82801CA watchdog timer",	3 },
-	{ DEVICEID_82801CAM, "Intel 82801CAM watchdog timer",	3 },
-	{ DEVICEID_82801DB,  "Intel 82801DB watchdog timer",	4 },
-	{ DEVICEID_82801DBM, "Intel 82801DBM watchdog timer",	4 },
-	{ DEVICEID_82801E,   "Intel 82801E watchdog timer",	5 },
-	{ DEVICEID_82801EB,  "Intel 82801EB watchdog timer",	5 },
-	{ DEVICEID_82801EBR, "Intel 82801EB/ER watchdog timer",	5 },
-	{ DEVICEID_6300ESB,  "Intel 6300ESB watchdog timer",	5 },
-	{ DEVICEID_82801FBR, "Intel 82801FB/FR watchdog timer",	6 },
-	{ DEVICEID_ICH6M,    "Intel ICH6M watchdog timer",	6 },
-	{ DEVICEID_ICH6W,    "Intel ICH6W watchdog timer",	6 },
-	{ DEVICEID_ICH7,     "Intel ICH7 watchdog timer",	7 },
-	{ DEVICEID_ICH7DH,   "Intel ICH7DH watchdog timer",	7 },
-	{ DEVICEID_ICH7M,    "Intel ICH7M watchdog timer",	7 },
-	{ DEVICEID_ICH7MDH,  "Intel ICH7MDH watchdog timer",	7 },
-	{ DEVICEID_NM10,     "Intel NM10 watchdog timer",	7 },
-	{ DEVICEID_ICH8,     "Intel ICH8 watchdog timer",	8 },
-	{ DEVICEID_ICH8DH,   "Intel ICH8DH watchdog timer",	8 },
-	{ DEVICEID_ICH8DO,   "Intel ICH8DO watchdog timer",	8 },
-	{ DEVICEID_ICH8M,    "Intel ICH8M watchdog timer",	8 },
-	{ DEVICEID_ICH8ME,   "Intel ICH8M-E watchdog timer",	8 },
-	{ DEVICEID_63XXESB,  "Intel 63XXESB watchdog timer",	8 },
-	{ DEVICEID_ICH9,     "Intel ICH9 watchdog timer",	9 },
-	{ DEVICEID_ICH9DH,   "Intel ICH9DH watchdog timer",	9 },
-	{ DEVICEID_ICH9DO,   "Intel ICH9DO watchdog timer",	9 },
-	{ DEVICEID_ICH9M,    "Intel ICH9M watchdog timer",	9 },
-	{ DEVICEID_ICH9ME,   "Intel ICH9M-E watchdog timer",	9 },
-	{ DEVICEID_ICH9R,    "Intel ICH9R watchdog timer",	9 },
-	{ DEVICEID_ICH10,    "Intel ICH10 watchdog timer",	10 },
-	{ DEVICEID_ICH10D,   "Intel ICH10D watchdog timer",	10 },
-	{ DEVICEID_ICH10DO,  "Intel ICH10DO watchdog timer",	10 },
-	{ DEVICEID_ICH10R,   "Intel ICH10R watchdog timer",	10 },
-	{ DEVICEID_PCH,      "Intel PCH watchdog timer",	10 },
-	{ DEVICEID_PCHM,     "Intel PCH watchdog timer",	10 },
-	{ DEVICEID_P55,      "Intel P55 watchdog timer",	10 },
-	{ DEVICEID_PM55,     "Intel PM55 watchdog timer",	10 },
-	{ DEVICEID_H55,      "Intel H55 watchdog timer",	10 },
-	{ DEVICEID_QM57,     "Intel QM57 watchdog timer",       10 },
-	{ DEVICEID_H57,      "Intel H57 watchdog timer",        10 },
-	{ DEVICEID_HM55,     "Intel HM55 watchdog timer",       10 },
-	{ DEVICEID_Q57,      "Intel Q57 watchdog timer",        10 },
-	{ DEVICEID_HM57,     "Intel HM57 watchdog timer",       10 },
-	{ DEVICEID_PCHMSFF,  "Intel PCHMSFF watchdog timer",    10 },
-	{ DEVICEID_QS57,     "Intel QS57 watchdog timer",       10 },
-	{ DEVICEID_3400,     "Intel 3400 watchdog timer",       10 },
-	{ DEVICEID_3420,     "Intel 3420 watchdog timer",       10 },
-	{ DEVICEID_3450,     "Intel 3450 watchdog timer",       10 },
-	{ DEVICEID_CPT0,     "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT1,     "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT2,     "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT3,     "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT4,     "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT5,     "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT6,     "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT7,     "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT8,     "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT9,     "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT10,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT11,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT12,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT13,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT14,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT15,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT16,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT17,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT18,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT19,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT20,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT21,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT22,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT23,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT23,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT25,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT26,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT27,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT28,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT29,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT30,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_CPT31,    "Intel Cougar Point watchdog timer",	10 },
-	{ DEVICEID_PATSBURG_LPC1, "Intel Patsburg watchdog timer",	10 },
-	{ DEVICEID_PATSBURG_LPC2, "Intel Patsburg watchdog timer",	10 },
-	{ DEVICEID_PPT0,     "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT1,     "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT2,     "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT3,     "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT4,     "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT5,     "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT6,     "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT7,     "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT8,     "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT9,     "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT10,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT11,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT12,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT13,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT14,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT15,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT16,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT17,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT18,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT19,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT20,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT21,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT22,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT23,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT24,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT25,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT26,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT27,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT28,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT29,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT30,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_PPT31,    "Intel Panther Point watchdog timer",	10 },
-	{ DEVICEID_LPT0,     "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT1,     "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT2,     "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT3,     "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT4,     "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT5,     "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT6,     "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT7,     "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT8,     "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT9,     "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT10,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT11,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT12,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT13,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT14,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT15,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT16,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT17,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT18,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT19,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT20,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT21,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT22,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT23,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT24,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT25,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT26,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT27,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT28,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT29,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT30,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_LPT31,    "Intel Lynx Point watchdog timer",		10 },
-	{ DEVICEID_WCPT2,    "Intel Wildcat Point watchdog timer",	10 },
-	{ DEVICEID_WCPT4,    "Intel Wildcat Point watchdog timer",	10 },
-	{ DEVICEID_WCPT6,    "Intel Wildcat Point watchdog timer",	10 },
-	{ DEVICEID_DH89XXCC_LPC,  "Intel DH89xxCC watchdog timer",	10 },
-	{ DEVICEID_COLETOCRK_LPC, "Intel Coleto Creek watchdog timer",  10 },
-	{ 0, NULL, 0 },
+	{ DEVICEID_82801AA,  "Intel 82801AA watchdog timer",	1, 1 },
+	{ DEVICEID_82801AB,  "Intel 82801AB watchdog timer",	1, 1 },
+	{ DEVICEID_82801BA,  "Intel 82801BA watchdog timer",	2, 1 },
+	{ DEVICEID_82801BAM, "Intel 82801BAM watchdog timer",	2, 1 },
+	{ DEVICEID_82801CA,  "Intel 82801CA watchdog timer",	3, 1 },
+	{ DEVICEID_82801CAM, "Intel 82801CAM watchdog timer",	3, 1 },
+	{ DEVICEID_82801DB,  "Intel 82801DB watchdog timer",	4, 1 },
+	{ DEVICEID_82801DBM, "Intel 82801DBM watchdog timer",	4, 1 },
+	{ DEVICEID_82801E,   "Intel 82801E watchdog timer",	5, 1 },
+	{ DEVICEID_82801EB,  "Intel 82801EB watchdog timer",	5, 1 },
+	{ DEVICEID_82801EBR, "Intel 82801EB/ER watchdog timer",	5, 1 },
+	{ DEVICEID_6300ESB,  "Intel 6300ESB watchdog timer",	5, 1 },
+	{ DEVICEID_82801FBR, "Intel 82801FB/FR watchdog timer",	6, 2 },
+	{ DEVICEID_ICH6M,    "Intel ICH6M watchdog timer",	6, 2 },
+	{ DEVICEID_ICH6W,    "Intel ICH6W watchdog timer",	6, 2 },
+	{ DEVICEID_ICH7,     "Intel ICH7 watchdog timer",	7, 2 },
+	{ DEVICEID_ICH7DH,   "Intel ICH7DH watchdog timer",	7, 2 },
+	{ DEVICEID_ICH7M,    "Intel ICH7M watchdog timer",	7, 2 },
+	{ DEVICEID_ICH7MDH,  "Intel ICH7MDH watchdog timer",	7, 2 },
+	{ DEVICEID_NM10,     "Intel NM10 watchdog timer",	7, 2 },
+	{ DEVICEID_ICH8,     "Intel ICH8 watchdog timer",	8, 2 },
+	{ DEVICEID_ICH8DH,   "Intel ICH8DH watchdog timer",	8, 2 },
+	{ DEVICEID_ICH8DO,   "Intel ICH8DO watchdog timer",	8, 2 },
+	{ DEVICEID_ICH8M,    "Intel ICH8M watchdog timer",	8, 2 },
+	{ DEVICEID_ICH8ME,   "Intel ICH8M-E watchdog timer",	8, 2 },
+	{ DEVICEID_63XXESB,  "Intel 63XXESB watchdog timer",	8, 2 },
+	{ DEVICEID_ICH9,     "Intel ICH9 watchdog timer",	9, 2 },
+	{ DEVICEID_ICH9DH,   "Intel ICH9DH watchdog timer",	9, 2 },
+	{ DEVICEID_ICH9DO,   "Intel ICH9DO watchdog timer",	9, 2 },
+	{ DEVICEID_ICH9M,    "Intel ICH9M watchdog timer",	9, 2 },
+	{ DEVICEID_ICH9ME,   "Intel ICH9M-E watchdog timer",	9, 2 },
+	{ DEVICEID_ICH9R,    "Intel ICH9R watchdog timer",	9, 2 },
+	{ DEVICEID_ICH10,    "Intel ICH10 watchdog timer",	10, 2 },
+	{ DEVICEID_ICH10D,   "Intel ICH10D watchdog timer",	10, 2 },
+	{ DEVICEID_ICH10DO,  "Intel ICH10DO watchdog timer",	10, 2 },
+	{ DEVICEID_ICH10R,   "Intel ICH10R watchdog timer",	10, 2 },
+	{ DEVICEID_PCH,      "Intel PCH watchdog timer",	10, 2 },
+	{ DEVICEID_PCHM,     "Intel PCH watchdog timer",	10, 2 },
+	{ DEVICEID_P55,      "Intel P55 watchdog timer",	10, 2 },
+	{ DEVICEID_PM55,     "Intel PM55 watchdog timer",	10, 2 },
+	{ DEVICEID_H55,      "Intel H55 watchdog timer",	10, 2 },
+	{ DEVICEID_QM57,     "Intel QM57 watchdog timer",       10, 2 },
+	{ DEVICEID_H57,      "Intel H57 watchdog timer",        10, 2 },
+	{ DEVICEID_HM55,     "Intel HM55 watchdog timer",       10, 2 },
+	{ DEVICEID_Q57,      "Intel Q57 watchdog timer",        10, 2 },
+	{ DEVICEID_HM57,     "Intel HM57 watchdog timer",       10, 2 },
+	{ DEVICEID_PCHMSFF,  "Intel PCHMSFF watchdog timer",    10, 2 },
+	{ DEVICEID_QS57,     "Intel QS57 watchdog timer",       10, 2 },
+	{ DEVICEID_3400,     "Intel 3400 watchdog timer",       10, 2 },
+	{ DEVICEID_3420,     "Intel 3420 watchdog timer",       10, 2 },
+	{ DEVICEID_3450,     "Intel 3450 watchdog timer",       10, 2 },
+	{ DEVICEID_CPT0,     "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT1,     "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT2,     "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT3,     "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT4,     "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT5,     "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT6,     "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT7,     "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT8,     "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT9,     "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT10,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT11,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT12,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT13,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT14,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT15,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT16,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT17,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT18,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT19,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT20,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT21,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT22,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT23,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT24,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT25,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT26,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT27,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT28,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT29,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT30,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_CPT31,    "Intel Cougar Point watchdog timer",	10, 2 },
+	{ DEVICEID_PATSBURG_LPC1, "Intel Patsburg watchdog timer",	10, 2 },
+	{ DEVICEID_PATSBURG_LPC2, "Intel Patsburg watchdog timer",	10, 2 },
+	{ DEVICEID_PPT0,     "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT1,     "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT2,     "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT3,     "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT4,     "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT5,     "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT6,     "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT7,     "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT8,     "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT9,     "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT10,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT11,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT12,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT13,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT14,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT15,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT16,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT17,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT18,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT19,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT20,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT21,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT22,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT23,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT24,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT25,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT26,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT27,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT28,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT29,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT30,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_PPT31,    "Intel Panther Point watchdog timer",	10, 2 },
+	{ DEVICEID_LPT0,     "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT1,     "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT2,     "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT3,     "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT4,     "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT5,     "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT6,     "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT7,     "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT8,     "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT9,     "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT10,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT11,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT12,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT13,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT14,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT15,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT16,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT17,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT18,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT19,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT20,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT21,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT22,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT23,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT24,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT25,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT26,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT27,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT28,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT29,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT30,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_LPT31,    "Intel Lynx Point watchdog timer",		10, 2 },
+	{ DEVICEID_WCPT1,    "Intel Wildcat Point watchdog timer",	10, 2 },
+	{ DEVICEID_WCPT2,    "Intel Wildcat Point watchdog timer",	10, 2 },
+	{ DEVICEID_WCPT3,    "Intel Wildcat Point watchdog timer",	10, 2 },
+	{ DEVICEID_WCPT4,    "Intel Wildcat Point watchdog timer",	10, 2 },
+	{ DEVICEID_WCPT6,    "Intel Wildcat Point watchdog timer",	10, 2 },
+	{ DEVICEID_WBG0,     "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG1,     "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG2,     "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG3,     "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG4,     "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG5,     "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG6,     "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG7,     "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG8,     "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG9,     "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG10,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG11,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG12,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG13,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG14,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG15,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG16,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG17,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG18,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG19,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG20,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG21,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG22,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG23,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG24,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG25,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG26,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG27,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG28,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG29,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG30,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_WBG31,    "Intel Wellsburg watchdog timer",		10, 2 },
+	{ DEVICEID_LPT_LP0,  "Intel Lynx Point-LP watchdog timer",	10, 2 },
+	{ DEVICEID_LPT_LP1,  "Intel Lynx Point-LP watchdog timer",	10, 2 },
+	{ DEVICEID_LPT_LP2,  "Intel Lynx Point-LP watchdog timer",	10, 2 },
+	{ DEVICEID_LPT_LP3,  "Intel Lynx Point-LP watchdog timer",	10, 2 },
+	{ DEVICEID_LPT_LP4,  "Intel Lynx Point-LP watchdog timer",	10, 2 },
+	{ DEVICEID_LPT_LP5,  "Intel Lynx Point-LP watchdog timer",	10, 2 },
+	{ DEVICEID_LPT_LP6,  "Intel Lynx Point-LP watchdog timer",	10, 2 },
+	{ DEVICEID_LPT_LP7,  "Intel Lynx Point-LP watchdog timer",	10, 2 },
+	{ DEVICEID_WCPT_LP1, "Intel Wildcat Point-LP watchdog timer",	10, 2 },
+	{ DEVICEID_WCPT_LP2, "Intel Wildcat Point-LP watchdog timer",	10, 2 },
+	{ DEVICEID_WCPT_LP3, "Intel Wildcat Point-LP watchdog timer",	10, 2 },
+	{ DEVICEID_WCPT_LP5, "Intel Wildcat Point-LP watchdog timer",	10, 2 },
+	{ DEVICEID_WCPT_LP6, "Intel Wildcat Point-LP watchdog timer",	10, 2 },
+	{ DEVICEID_WCPT_LP7, "Intel Wildcat Point-LP watchdog timer",	10, 2 },
+	{ DEVICEID_WCPT_LP9, "Intel Wildcat Point-LP watchdog timer",	10, 2 },
+	{ DEVICEID_DH89XXCC_LPC,  "Intel DH89xxCC watchdog timer",	10, 2 },
+	{ DEVICEID_COLETOCRK_LPC, "Intel Coleto Creek watchdog timer",  10, 2 },
+	{ DEVICEID_AVN0,     "Intel Avoton/Rangeley SoC watchdog timer",10, 3 },
+	{ DEVICEID_AVN1,     "Intel Avoton/Rangeley SoC watchdog timer",10, 3 },
+	{ DEVICEID_AVN2,     "Intel Avoton/Rangeley SoC watchdog timer",10, 3 },
+	{ DEVICEID_AVN3,     "Intel Avoton/Rangeley SoC watchdog timer",10, 3 },
+	{ DEVICEID_BAYTRAIL, "Intel Bay Trail SoC watchdog timer",	10, 3 },
+	{ DEVICEID_BRASWELL, "Intel Braswell SoC watchdog timer",	10, 3 },
+	{ 0, NULL, 0, 0 },
 };
 
 static devclass_t ichwd_devclass;
@@ -243,6 +299,9 @@ static devclass_t ichwd_devclass;
 	bus_read_4((sc)->smi_res, (off))
 #define ichwd_read_gcs_4(sc, off) \
 	bus_read_4((sc)->gcs_res, (off))
+/* NB: TCO version 3 devices use the gcs_res resource for the PMC register. */
+#define ichwd_read_pmc_4(sc, off) \
+	bus_read_4((sc)->gcs_res, (off))
 
 #define ichwd_write_tco_1(sc, off, val) \
 	bus_write_1((sc)->tco_res, (off), (val))
@@ -254,6 +313,9 @@ static devclass_t ichwd_devclass;
 	bus_write_4((sc)->smi_res, (off), (val))
 #define ichwd_write_gcs_4(sc, off, val) \
 	bus_write_4((sc)->gcs_res, (off), (val))
+/* NB: TCO version 3 devices use the gcs_res resource for the PMC register. */
+#define ichwd_write_pmc_4(sc, off, val) \
+	bus_write_4((sc)->gcs_res, (off), (val))
 
 #define ichwd_verbose_printf(dev, ...) \
 	do {						\
@@ -352,7 +414,7 @@ ichwd_tmr_disable(struct ichwd_softc *sc
 static __inline void
 ichwd_tmr_reload(struct ichwd_softc *sc)
 {
-	if (sc->ich_version <= 5)
+	if (sc->tco_version == 1)
 		ichwd_write_tco_1(sc, TCO_RLD, 1);
 	else
 		ichwd_write_tco_2(sc, TCO_RLD, 1);
@@ -369,7 +431,7 @@ ichwd_tmr_set(struct ichwd_softc *sc, un
 	if (timeout < TCO_RLD_TMR_MIN)
 		timeout = TCO_RLD_TMR_MIN;
 
-	if (sc->ich_version <= 5) {
+	if (sc->tco_version == 1) {
 		uint8_t tmr_val8 = ichwd_read_tco_1(sc, TCO_TMR1);
 
 		tmr_val8 &= (~TCO_RLD1_TMR_MAX & 0xff);
@@ -399,20 +461,36 @@ ichwd_clear_noreboot(struct ichwd_softc 
 	int rc = 0;
 
 	/* try to clear the NO_REBOOT bit */
-	if (sc->ich_version <= 5) {
+	switch (sc->tco_version) {
+	case 1:
 		status = pci_read_config(sc->ich, ICH_GEN_STA, 1);
 		status &= ~ICH_GEN_STA_NO_REBOOT;
 		pci_write_config(sc->ich, ICH_GEN_STA, status, 1);
 		status = pci_read_config(sc->ich, ICH_GEN_STA, 1);
 		if (status & ICH_GEN_STA_NO_REBOOT)
 			rc = EIO;
-	} else {
+		break;
+	case 2:
 		status = ichwd_read_gcs_4(sc, 0);
 		status &= ~ICH_GCS_NO_REBOOT;
 		ichwd_write_gcs_4(sc, 0, status);
 		status = ichwd_read_gcs_4(sc, 0);
 		if (status & ICH_GCS_NO_REBOOT)
 			rc = EIO;
+		break;
+	case 3:
+		status = ichwd_read_pmc_4(sc, 0);
+		status &= ~ICH_PMC_NO_REBOOT;
+		ichwd_write_pmc_4(sc, 0, status);
+		status = ichwd_read_pmc_4(sc, 0);
+		if (status & ICH_PMC_NO_REBOOT)
+			rc = EIO;
+		break;
+	default:
+		ichwd_verbose_printf(sc->device,
+		    "Unknown TCO Version: %d, can't set NO_REBOOT.\n",
+		    sc->tco_version);
+		break;
 	}
 
 	if (rc)
@@ -463,7 +541,7 @@ ichwd_find_ich_lpc_bridge(struct ichwd_d
 		return (NULL);
 
 	ichwd_verbose_printf(ich, "found ICH%d or equivalent chipset: %s\n",
-	    id->version, id->desc);
+	    id->ich_version, id->desc);
 
 	if (id_p)
 		*id_p = id;
@@ -481,7 +559,7 @@ ichwd_identify(driver_t *driver, device_
 	struct ichwd_device *id_p;
 	device_t ich = NULL;
 	device_t dev;
-	uint32_t rcba;
+	uint32_t base_address;
 	int rc;
 
 	ich = ichwd_find_ich_lpc_bridge(&id_p);
@@ -497,14 +575,36 @@ ichwd_identify(driver_t *driver, device_
 
 	device_set_desc_copy(dev, id_p->desc);
 
-	if (id_p->version >= 6) {
+	switch (id_p->tco_version) {
+	case 1:
+		break;
+	case 2:
 		/* get RCBA (root complex base address) */
-		rcba = pci_read_config(ich, ICH_RCBA, 4);
+		base_address = pci_read_config(ich, ICH_RCBA, 4);
+		rc = bus_set_resource(ich, SYS_RES_MEMORY, 0,
+		    (base_address & 0xffffc000) + ICH_GCS_OFFSET,
+		    ICH_GCS_SIZE);
+		if (rc)
+			ichwd_verbose_printf(dev,
+			    "Can not set TCO v%d memory resource for RCBA\n",
+			    id_p->tco_version);
+		break;
+	case 3:
+		/* get PBASE (Power Management Controller base address) */
+		base_address = pci_read_config(ich, ICH_PBASE, 4);
 		rc = bus_set_resource(ich, SYS_RES_MEMORY, 0,
-		    (rcba & 0xffffc000) + ICH_GCS_OFFSET, ICH_GCS_SIZE);
+		    (base_address & 0xfffffe00) + ICH_PMC_OFFSET,
+		    ICH_PMC_SIZE);
 		if (rc)
 			ichwd_verbose_printf(dev,
-			    "Can not set memory resource for RCBA\n");
+			    "Can not set TCO v%d memory resource for PBASE\n",
+			    id_p->tco_version);
+		break;
+	default:
+		ichwd_verbose_printf(dev,
+		    "Can not set unknown TCO v%d memory resource for unknown base address\n",
+		    id_p->tco_version);
+		break;
 	}
 }
 
@@ -535,7 +635,8 @@ ichwd_attach(device_t dev)
 		goto fail;
 	}
 	sc->ich = ich;
-	sc->ich_version = id_p->version;
+	sc->ich_version = id_p->ich_version;
+	sc->tco_version = id_p->tco_version;
 
 	/* get ACPI base address */
 	pmbase = pci_read_config(ich, ICH_PMBASE, 2) & ICH_PMBASE_MASK;
@@ -564,7 +665,7 @@ ichwd_attach(device_t dev)
 	}
 
 	sc->gcs_rid = 0;
-	if (sc->ich_version >= 6) {
+	if (sc->tco_version >= 2) {
 		sc->gcs_res = bus_alloc_resource_any(ich, SYS_RES_MEMORY,
 		    &sc->gcs_rid, RF_ACTIVE|RF_SHAREABLE);
 		if (sc->gcs_res == NULL) {
@@ -577,7 +678,7 @@ ichwd_attach(device_t dev)
 		goto fail;
 
 	ichwd_verbose_printf(dev, "%s (ICH%d or equivalent)\n",
-	    device_get_desc(dev), sc->ich_version);
+	    id_p->desc, sc->ich_version);
 
 	/*
 	 * Determine if we are coming up after a watchdog-induced reset.  Some
@@ -648,7 +749,8 @@ ichwd_detach(device_t dev)
 	/* deallocate memory resource */
 	ich = ichwd_find_ich_lpc_bridge(NULL);
 	if (sc->gcs_res && ich)
-		bus_release_resource(ich, SYS_RES_MEMORY, sc->gcs_rid, sc->gcs_res);
+		bus_release_resource(ich, SYS_RES_MEMORY, sc->gcs_rid,
+		    sc->gcs_res);
 
 	return (0);
 }

Modified: head/sys/dev/ichwd/ichwd.h
==============================================================================
--- head/sys/dev/ichwd/ichwd.h	Tue Aug 18 14:10:04 2015	(r286889)
+++ head/sys/dev/ichwd/ichwd.h	Tue Aug 18 14:54:29 2015	(r286890)
@@ -34,13 +34,15 @@
 struct ichwd_device {
 	uint16_t		 device;
 	char			*desc;
-	unsigned int		 version;
+	unsigned int		 ich_version;
+	unsigned int		 tco_version;
 };
 
 struct ichwd_softc {
 	device_t		 device;
 	device_t		 ich;
 	int			 ich_version;
+	int			 tco_version;
 
 	int			 active;
 	unsigned int		 timeout;
@@ -59,6 +61,7 @@ struct ichwd_softc {
 };
 
 #define VENDORID_INTEL		0x8086
+#define DEVICEID_BAYTRAIL	0x0f1c
 #define DEVICEID_CPT0		0x1c40
 #define DEVICEID_CPT1		0x1c41
 #define DEVICEID_CPT2		0x1c42
@@ -125,6 +128,11 @@ struct ichwd_softc {
 #define DEVICEID_PPT29		0x1e5d
 #define DEVICEID_PPT30		0x1e5e
 #define DEVICEID_PPT31		0x1e5f
+#define DEVICEID_AVN0		0x1f38
+#define DEVICEID_AVN1		0x1f39
+#define DEVICEID_AVN2		0x1f3a
+#define DEVICEID_AVN3		0x1f3b
+#define DEVICEID_BRASWELL	0x229c
 #define DEVICEID_DH89XXCC_LPC	0x2310
 #define DEVICEID_COLETOCRK_LPC	0x2390
 #define DEVICEID_82801AA	0x2410
@@ -210,9 +218,58 @@ struct ichwd_softc {
 #define DEVICEID_LPT29		0x8c5d
 #define DEVICEID_LPT30		0x8c5e
 #define DEVICEID_LPT31		0x8c5f
+#define DEVICEID_WCPT1		0x8cc1
 #define DEVICEID_WCPT2		0x8cc2
+#define DEVICEID_WCPT3		0x8cc3
 #define DEVICEID_WCPT4		0x8cc4
 #define DEVICEID_WCPT6		0x8cc6
+#define DEVICEID_WBG0		0x8d40
+#define DEVICEID_WBG1		0x8d41
+#define DEVICEID_WBG2		0x8d42
+#define DEVICEID_WBG3		0x8d43
+#define DEVICEID_WBG4		0x8d44
+#define DEVICEID_WBG5		0x8d45
+#define DEVICEID_WBG6		0x8d46
+#define DEVICEID_WBG7		0x8d47
+#define DEVICEID_WBG8		0x8d48
+#define DEVICEID_WBG9		0x8d49
+#define DEVICEID_WBG10		0x8d4a
+#define DEVICEID_WBG11		0x8d4b
+#define DEVICEID_WBG12		0x8d4c
+#define DEVICEID_WBG13		0x8d4d
+#define DEVICEID_WBG14		0x8d4e
+#define DEVICEID_WBG15		0x8d4f
+#define DEVICEID_WBG16		0x8d50
+#define DEVICEID_WBG17		0x8d51
+#define DEVICEID_WBG18		0x8d52
+#define DEVICEID_WBG19		0x8d53
+#define DEVICEID_WBG20		0x8d54
+#define DEVICEID_WBG21		0x8d55
+#define DEVICEID_WBG22		0x8d56
+#define DEVICEID_WBG23		0x8d57
+#define DEVICEID_WBG24		0x8d58
+#define DEVICEID_WBG25		0x8d59
+#define DEVICEID_WBG26		0x8d5a
+#define DEVICEID_WBG27		0x8d5b
+#define DEVICEID_WBG28		0x8d5c
+#define DEVICEID_WBG29		0x8d5d
+#define DEVICEID_WBG30		0x8d5e
+#define DEVICEID_WBG31		0x8d5f
+#define DEVICEID_LPT_LP0	0x9c40
+#define DEVICEID_LPT_LP1	0x9c41
+#define DEVICEID_LPT_LP2	0x9c42
+#define DEVICEID_LPT_LP3	0x9c43
+#define DEVICEID_LPT_LP4	0x9c44
+#define DEVICEID_LPT_LP5	0x9c45
+#define DEVICEID_LPT_LP6	0x9c46
+#define DEVICEID_LPT_LP7	0x9c47
+#define DEVICEID_WCPT_LP1	0x9cc1
+#define DEVICEID_WCPT_LP2	0x9cc2
+#define DEVICEID_WCPT_LP3	0x9cc3
+#define DEVICEID_WCPT_LP5	0x9cc5
+#define DEVICEID_WCPT_LP6	0x9cc6
+#define DEVICEID_WCPT_LP7	0x9cc7
+#define DEVICEID_WCPT_LP9	0x9cc9
 
 /* ICH LPC Interface Bridge Registers (ICH5 and older) */
 #define ICH_GEN_STA		0xd4
@@ -226,6 +283,12 @@ struct ichwd_softc {
 #define ICH_GCS_SIZE		0x4
 #define ICH_GCS_NO_REBOOT	0x20
 
+/* SoC Power Management Configuration Registers */
+#define ICH_PBASE		0x44
+#define ICH_PMC_OFFSET		0x08
+#define ICH_PMC_SIZE		0x4
+#define ICH_PMC_NO_REBOOT	0x10
+
 /* register names and locations (relative to PMBASE) */
 #define SMI_BASE		0x30 /* base address for SMI registers */
 #define SMI_LEN			0x08


More information about the svn-src-all mailing list