Skip to content

Commit

Permalink
hwmon: (nct6775) Detect and report additional temperature sources
Browse files Browse the repository at this point in the history
Scan all temperature sources used for fan control and report if additional
monitoring registers are available.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
  • Loading branch information
Guenter Roeck committed Apr 8, 2013
1 parent bbd8dec commit 8e9285b
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions drivers/hwmon/nct6775.c
Original file line number Diff line number Diff line change
Expand Up @@ -3364,6 +3364,32 @@ nct6775_check_fan_inputs(const struct nct6775_sio_data *sio_data,
return 0;
}

static void add_temp_sensors(struct nct6775_data *data, const u16 *regp,
int *available, int *mask)
{
int i;
u8 src;

for (i = 0; i < data->pwm_num && *available; i++) {
int index;

if (!regp[i])
continue;
src = nct6775_read_value(data, regp[i]);
src &= 0x1f;
if (!src || (*mask & (1 << src)))
continue;
if (src >= data->temp_label_num ||
!strlen(data->temp_label[src]))
continue;

index = __ffs(*available);
nct6775_write_value(data, data->REG_TEMP_SOURCE[index], src);
*available &= ~(1 << index);
*mask |= 1 << src;
}
}

static int nct6775_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
Expand Down Expand Up @@ -3614,6 +3640,13 @@ static int nct6775_probe(struct platform_device *pdev)
mask |= 1 << src;
}

/*
* Now find unmonitored temperature registers and enable monitoring
* if additional monitoring registers are available.
*/
add_temp_sensors(data, data->REG_TEMP_SEL, &available, &mask);
add_temp_sensors(data, data->REG_WEIGHT_TEMP_SEL, &available, &mask);

mask = 0;
s = NUM_TEMP_FIXED; /* First dynamic temperature attribute */
for (i = 0; i < num_reg_temp; i++) {
Expand Down

0 comments on commit 8e9285b

Please sign in to comment.