]> git.sur5r.net Git - groeck-k10temp/blobdiff - k10temp.c
Add optional 49 degrees C temperature offset
[groeck-k10temp] / k10temp.c
index c62ffe8dd7b16e5c56a922b12d03db5aaa4219fc..e4a179d491bed6da66eb36a8c1efed2eec1a15b1 100644 (file)
--- a/k10temp.c
+++ b/k10temp.c
@@ -81,9 +81,10 @@ struct tctl_offset {
 };
 
 static const struct tctl_offset tctl_offset_table[] = {
-       { 0x17, "AMD Ryzen 7 1600X", 20000 },
+       { 0x17, "AMD Ryzen 5 1600X", 20000 },
        { 0x17, "AMD Ryzen 7 1700X", 20000 },
        { 0x17, "AMD Ryzen 7 1800X", 20000 },
+       { 0x17, "AMD Ryzen 7 2700X", 10000 },
        { 0x17, "AMD Ryzen Threadripper 1950X", 27000 },
        { 0x17, "AMD Ryzen Threadripper 1920X", 27000 },
        { 0x17, "AMD Ryzen Threadripper 1900X", 27000 },
@@ -129,7 +130,13 @@ static ssize_t temp1_input_show(struct device *dev,
 
        data->read_tempreg(data->pdev, &regval);
        temp = (regval >> 21) * 125;
-       temp -= data->temp_offset;
+       /* bit 20 indicates an additional temp offset of 49 degrees C */
+       if (regval & 0x80000)
+               temp -= 49000;
+       if (temp > data->temp_offset)
+               temp -= data->temp_offset;
+       else
+               temp = 0;
 
        return sprintf(buf, "%u\n", temp);
 }