Re: [v1,1/1] hwmon: (nct7904) Fix the incorrect value of vsen_mask & tcpu_mask & temp_mode in nct7904_data struct.
From: Guenter Roeck
Date: Sun Oct 20 2019 - 12:23:28 EST
On Mon, Oct 14, 2019 at 04:24:51PM +0800, Amy.Shih@xxxxxxxxxxxxxxxx wrote:
> From: "amy.shih" <amy.shih@xxxxxxxxxxxxxxxx>
>
> Voltage sensors overlap with external temperature sensors. Detect
> the multi-function of voltage, thermal diode, thermistor and
> reserved from register VT_ADC_MD_REG to set value of vsen_mask &
> tcpu_mask & temp_mode in nct7904_data struct. If the value is
> reserved, needs to disable the vsen_mask & tcpu_mask.
>
> Signed-off-by: amy.shih <amy.shih@xxxxxxxxxxxxxxxx>
Applied.
Thanks,
Guenter
> ---
> drivers/hwmon/nct7904.c | 15 ++++++++++++---
> 1 file changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/hwmon/nct7904.c b/drivers/hwmon/nct7904.c
> index b26419dbe840..281c81edabc6 100644
> --- a/drivers/hwmon/nct7904.c
> +++ b/drivers/hwmon/nct7904.c
> @@ -82,6 +82,10 @@
> #define FANCTL1_FMR_REG 0x00 /* Bank 3; 1 reg per channel */
> #define FANCTL1_OUT_REG 0x10 /* Bank 3; 1 reg per channel */
>
> +#define VOLT_MONITOR_MODE 0x0
> +#define THERMAL_DIODE_MODE 0x1
> +#define THERMISTOR_MODE 0x3
> +
> #define ENABLE_TSI BIT(1)
>
> static const unsigned short normal_i2c[] = {
> @@ -935,11 +939,16 @@ static int nct7904_probe(struct i2c_client *client,
> for (i = 0; i < 4; i++) {
> val = (ret >> (i * 2)) & 0x03;
> bit = (1 << i);
> - if (val == 0) {
> + if (val == VOLT_MONITOR_MODE) {
> data->tcpu_mask &= ~bit;
> + } else if (val == THERMAL_DIODE_MODE && i < 2) {
> + data->temp_mode |= bit;
> + data->vsen_mask &= ~(0x06 << (i * 2));
> + } else if (val == THERMISTOR_MODE) {
> + data->vsen_mask &= ~(0x02 << (i * 2));
> } else {
> - if (val == 0x1 || val == 0x2)
> - data->temp_mode |= bit;
> + /* Reserved */
> + data->tcpu_mask &= ~bit;
> data->vsen_mask &= ~(0x06 << (i * 2));
> }
> }