lkml.org 
[lkml]   [2018]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.16 74/81] hwmon: (k10temp) Add temperature offset for Ryzen 2700X
    Date
    4.16-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Guenter Roeck <linux@roeck-us.net>

    commit 1b59788979acd230b9627276c76f6e6ba2c4709c upstream.

    Ryzen 2700X has a temperature offset of 10 degrees C. If bit 19 of the
    Temperature Control register is set, there is an additional offset of
    49 degrees C. Take this into account as well.

    Cc: stable@vger.kernel.org # v4.16+
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/hwmon/k10temp.c | 12 +++++++++---
    1 file changed, 9 insertions(+), 3 deletions(-)

    --- a/drivers/hwmon/k10temp.c
    +++ b/drivers/hwmon/k10temp.c
    @@ -72,6 +72,7 @@ struct k10temp_data {
    struct pci_dev *pdev;
    void (*read_tempreg)(struct pci_dev *pdev, u32 *regval);
    int temp_offset;
    + u32 temp_adjust_mask;
    };

    struct tctl_offset {
    @@ -84,6 +85,7 @@ static const struct tctl_offset tctl_off
    { 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,6 +131,8 @@ static ssize_t temp1_input_show(struct d

    data->read_tempreg(data->pdev, &regval);
    temp = (regval >> 21) * 125;
    + if (regval & data->temp_adjust_mask)
    + temp -= 49000;
    if (temp > data->temp_offset)
    temp -= data->temp_offset;
    else
    @@ -259,12 +263,14 @@ static int k10temp_probe(struct pci_dev
    data->pdev = pdev;

    if (boot_cpu_data.x86 == 0x15 && (boot_cpu_data.x86_model == 0x60 ||
    - boot_cpu_data.x86_model == 0x70))
    + boot_cpu_data.x86_model == 0x70)) {
    data->read_tempreg = read_tempreg_nb_f15;
    - else if (boot_cpu_data.x86 == 0x17)
    + } else if (boot_cpu_data.x86 == 0x17) {
    + data->temp_adjust_mask = 0x80000;
    data->read_tempreg = read_tempreg_nb_f17;
    - else
    + } else {
    data->read_tempreg = read_tempreg_pci;
    + }

    for (i = 0; i < ARRAY_SIZE(tctl_offset_table); i++) {
    const struct tctl_offset *entry = &tctl_offset_table[i];

    \
     
     \ /
      Last update: 2018-04-27 16:20    [W:3.800 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site