Merge tag 'hwmon-for-v5.7-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
Pull hwmon fixes from Guenter Roeck: - Fix ADC access synchronization problem with da9052 driver - Fix temperature limit and status reporting in nct7904 driver - Fix drivetemp temperature reporting if SCT is supported but SCT data tables are not. * tag 'hwmon-for-v5.7-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: hwmon: (da9052) Synchronize access with mfd hwmon: (nct7904) Fix incorrect range of temperature limit registers hwmon: (nct7904) Read all SMI status registers in probe function hwmon: (drivetemp) Fix SCT support if SCT data tables are not supported
This commit is contained in:
@@ -244,9 +244,9 @@ static ssize_t da9052_tsi_show(struct device *dev,
|
||||
int channel = to_sensor_dev_attr(devattr)->index;
|
||||
int ret;
|
||||
|
||||
mutex_lock(&hwmon->hwmon_lock);
|
||||
mutex_lock(&hwmon->da9052->auxadc_lock);
|
||||
ret = __da9052_read_tsi(dev, channel);
|
||||
mutex_unlock(&hwmon->hwmon_lock);
|
||||
mutex_unlock(&hwmon->da9052->auxadc_lock);
|
||||
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
@@ -346,7 +346,7 @@ static int drivetemp_identify_sata(struct drivetemp_data *st)
|
||||
st->have_temp_highest = temp_is_valid(buf[SCT_STATUS_TEMP_HIGHEST]);
|
||||
|
||||
if (!have_sct_data_table)
|
||||
goto skip_sct;
|
||||
goto skip_sct_data;
|
||||
|
||||
/* Request and read temperature history table */
|
||||
memset(buf, '\0', sizeof(st->smartdata));
|
||||
|
||||
+11
-1
@@ -41,6 +41,7 @@
|
||||
#define FANCTL_MAX 4 /* Counted from 1 */
|
||||
#define TCPU_MAX 8 /* Counted from 1 */
|
||||
#define TEMP_MAX 4 /* Counted from 1 */
|
||||
#define SMI_STS_MAX 10 /* Counted from 1 */
|
||||
|
||||
#define VT_ADC_CTRL0_REG 0x20 /* Bank 0 */
|
||||
#define VT_ADC_CTRL1_REG 0x21 /* Bank 0 */
|
||||
@@ -361,6 +362,7 @@ static int nct7904_read_temp(struct device *dev, u32 attr, int channel,
|
||||
struct nct7904_data *data = dev_get_drvdata(dev);
|
||||
int ret, temp;
|
||||
unsigned int reg1, reg2, reg3;
|
||||
s8 temps;
|
||||
|
||||
switch (attr) {
|
||||
case hwmon_temp_input:
|
||||
@@ -466,7 +468,8 @@ static int nct7904_read_temp(struct device *dev, u32 attr, int channel,
|
||||
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
*val = ret * 1000;
|
||||
temps = ret;
|
||||
*val = temps * 1000;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1009,6 +1012,13 @@ static int nct7904_probe(struct i2c_client *client,
|
||||
data->fan_mode[i] = ret;
|
||||
}
|
||||
|
||||
/* Read all of SMI status register to clear alarms */
|
||||
for (i = 0; i < SMI_STS_MAX; i++) {
|
||||
ret = nct7904_read_reg(data, BANK_0, SMI_STS1_REG + i);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
hwmon_dev =
|
||||
devm_hwmon_device_register_with_info(dev, client->name, data,
|
||||
&nct7904_chip_info, NULL);
|
||||
|
||||
Reference in New Issue
Block a user