Re: [v1,1/1] hwmon: (nct7904) Add to read all of the SMI status registers in probe function.
From: Guenter Roeck
Date: Wed May 13 2020 - 11:21:10 EST
On Tue, May 12, 2020 at 02:25:23AM +0000, Amy.Shih@xxxxxxxxxxxxxxxx wrote:
> From: Amy Shih <amy.shih@xxxxxxxxxxxxxxxx>
>
> When nct7904 power up, it compares current sensor readings within the
> default threshold immediately, thus some of SMI status registers would
> get non zero values cause the false alarms on first reading. Add to
> read all of the SMI status registers in probe function to clear the
> alarms.
>
> Signed-off-by: Amy Shih <amy.shih@xxxxxxxxxxxxxxxx>
Applied.
Thanks,
Guenter
> ---
> drivers/hwmon/nct7904.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/hwmon/nct7904.c b/drivers/hwmon/nct7904.c
> index 571a649..6fb06f7 100644
> --- a/drivers/hwmon/nct7904.c
> +++ b/drivers/hwmon/nct7904.c
> @@ -45,6 +45,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 */
> @@ -1126,6 +1127,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);
> --
> 1.8.3.1
>