Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F142693314
D16855.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
D16855.diff
View Options
Index: head/sys/dev/amdtemp/amdtemp.c
===================================================================
--- head/sys/dev/amdtemp/amdtemp.c
+++ head/sys/dev/amdtemp/amdtemp.c
@@ -115,8 +115,15 @@
/*
* Reported Temperature, Family 17h
+ *
+ * According to AMD OSRR for 17H, section 4.2.1, bits 31-21 of this register
+ * provide the current temp. bit 19, when clear, means the temp is reported in
+ * a range 0.."225C" (probable typo for 255C), and when set changes the range
+ * to -49..206C.
*/
-#define AMDTEMP_17H_CUR_TMP 0x59800
+#define AMDTEMP_17H_CUR_TMP 0x59800
+#define AMDTEMP_17H_CUR_TMP_RANGE_SEL (1 << 19)
+#define AMDTEMP_17H_CUR_TMP_RANGE_OFF 490
/*
* Thermaltrip Status Register (Family 0Fh only)
@@ -595,13 +602,15 @@
amdtemp_gettemp17h(device_t dev, amdsensor_t sensor)
{
struct amdtemp_softc *sc = device_get_softc(dev);
- uint32_t temp;
+ uint32_t temp, val;
int error;
- error = amdsmn_read(sc->sc_smn, AMDTEMP_17H_CUR_TMP, &temp);
+ error = amdsmn_read(sc->sc_smn, AMDTEMP_17H_CUR_TMP, &val);
KASSERT(error == 0, ("amdsmn_read"));
- temp = ((temp >> 21) & 0x7ff) * 5 / 4;
+ temp = ((val >> 21) & 0x7ff) * 5 / 4;
+ if ((val & AMDTEMP_17H_CUR_TMP_RANGE_SEL) != 0)
+ temp -= AMDTEMP_17H_CUR_TMP_RANGE_OFF;
temp += AMDTEMP_ZERO_C_TO_K + sc->sc_offset * 10;
return (temp);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Jan 23, 7:45 AM (14 h, 53 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27880611
Default Alt Text
D16855.diff (1 KB)
Attached To
Mode
D16855: Fix temperature reporting on AMD 2990WX
Attached
Detach File
Event Timeline
Log In to Comment