Skip to content

Commit

Permalink
hwmon: (nct6775) Add support for multiple virtual temperature sources
Browse files Browse the repository at this point in the history
For virtual temperatures, the actual temperature values are written
by software, presumably by the BIOS. This functionality is (as of
right now) supported on NCT6791D, NCT6792D, and NCT6793D. On those chips,
the temperatures are written into registers 0xea..0xef on page 0.
This is known to be used on some Asus motherboards, where the actual
temperature source can be configured in the BIOS.

Report the 'virtual' temperatures for all monotoring sources to address
this situation.

Example for the resulting output (as seen with the 'sensors' command):

nct6791-isa-0290
Adapter: ISA adapter
...
Virtual_TEMP:           +31.0°C
PECI Agent 0:           +38.5°C
Virtual_TEMP:           +32.0°C
...

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
  • Loading branch information
Guenter Roeck committed Sep 18, 2016
1 parent dc8b73e commit 7ce4190
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions drivers/hwmon/nct6775.c
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,8 @@ superio_exit(int ioreg)

#define NUM_FAN 6

#define TEMP_SOURCE_VIRTUAL 0x1f

/* Common and NCT6775 specific data */

/* Voltage min/max registers for nr=7..14 are in bank 5 */
Expand Down Expand Up @@ -3940,7 +3942,7 @@ static int nct6775_probe(struct platform_device *pdev)
continue;

src = nct6775_read_value(data, data->REG_TEMP_SEL[i]) & 0x1f;
if (!src || (mask & (1 << src)))
if (!src)
continue;

if (src >= data->temp_label_num ||
Expand All @@ -3952,7 +3954,16 @@ static int nct6775_probe(struct platform_device *pdev)
continue;
}

mask |= 1 << src;
/*
* For virtual temperature sources, the 'virtual' temperature
* for each fan reflects a different temperature, and there
* are no duplicates.
*/
if (src != TEMP_SOURCE_VIRTUAL) {
if (mask & (1 << src))
continue;
mask |= 1 << src;
}

/* Use fixed index for SYSTIN(1), CPUTIN(2), AUXTIN(3) */
if (src <= data->temp_fixed_num) {
Expand Down

0 comments on commit 7ce4190

Please sign in to comment.