svn commit: r335542 - stable/11/sys/dev/amdsbwd
Andriy Gapon
avg at FreeBSD.org
Fri Jun 22 09:25:26 UTC 2018
Author: avg
Date: Fri Jun 22 09:25:24 2018
New Revision: 335542
URL: https://svnweb.freebsd.org/changeset/base/335542
Log:
MFC r333269: amdsbwd: fix reboot status reporting
Modified:
stable/11/sys/dev/amdsbwd/amd_chipset.h
stable/11/sys/dev/amdsbwd/amdsbwd.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/dev/amdsbwd/amd_chipset.h
==============================================================================
--- stable/11/sys/dev/amdsbwd/amd_chipset.h Fri Jun 22 09:23:06 2018 (r335541)
+++ stable/11/sys/dev/amdsbwd/amd_chipset.h Fri Jun 22 09:25:24 2018 (r335542)
@@ -95,9 +95,10 @@
#define AMDSB8_WDT_32KHZ 0x00
#define AMDSB8_WDT_1HZ 0x03
#define AMDSB8_WDT_RES_MASK 0x03
-#define AMDSB8_PM_RESET_STATUS0 0xc0
-#define AMDSB8_PM_RESET_STATUS1 0xc1
-#define AMDSB8_WD_RST_STS 0x20
+#define AMDSB8_PM_RESET_STATUS 0xc0 /* 32 bit wide */
+#define AMDSB8_WD_RST_STS 0x2000000
+#define AMDSB8_PM_RESET_CTRL 0xc4
+#define AMDSB8_RST_STS_DIS 0x04
/*
* Newer FCH registers in the PMIO space.
Modified: stable/11/sys/dev/amdsbwd/amdsbwd.c
==============================================================================
--- stable/11/sys/dev/amdsbwd/amdsbwd.c Fri Jun 22 09:23:06 2018 (r335541)
+++ stable/11/sys/dev/amdsbwd/amdsbwd.c Fri Jun 22 09:25:24 2018 (r335542)
@@ -317,16 +317,23 @@ amdsbwd_probe_sb7xx(device_t dev, struct resource *pmr
static void
amdsbwd_probe_sb8xx(device_t dev, struct resource *pmres, uint32_t *addr)
{
- uint8_t val;
- int i;
+ uint32_t val;
+ int i;
/* Report cause of previous reset for user's convenience. */
- val = pmio_read(pmres, AMDSB8_PM_RESET_STATUS0);
+
+ val = pmio_read(pmres, AMDSB8_PM_RESET_CTRL);
+ if ((val & AMDSB8_RST_STS_DIS) != 0) {
+ val &= ~AMDSB8_RST_STS_DIS;
+ pmio_write(pmres, AMDSB8_PM_RESET_CTRL, val);
+ }
+ val = 0;
+ for (i = 3; i >= 0; i--) {
+ val <<= 8;
+ val |= pmio_read(pmres, AMDSB8_PM_RESET_STATUS + i);
+ }
if (val != 0)
- amdsbwd_verbose_printf(dev, "ResetStatus0 = %#04x\n", val);
- val = pmio_read(pmres, AMDSB8_PM_RESET_STATUS1);
- if (val != 0)
- amdsbwd_verbose_printf(dev, "ResetStatus1 = %#04x\n", val);
+ amdsbwd_verbose_printf(dev, "ResetStatus = 0x%08x\n", val);
if ((val & AMDSB8_WD_RST_STS) != 0)
device_printf(dev, "Previous Reset was caused by Watchdog\n");
More information about the svn-src-stable
mailing list