[PATCH] hwmon: (nct6683) Add another chip ID for NCT6687D sensor chip found on some MSI boards.

llyyr posted 1 patch 2 years, 8 months ago
drivers/hwmon/nct6683.c | 3 +++
1 file changed, 3 insertions(+)
[PATCH] hwmon: (nct6683) Add another chip ID for NCT6687D sensor chip found on some MSI boards.
Posted by llyyr 2 years, 8 months ago
This value was found on MSI Z690-A PRO DDR5, with a NCT6687D chip.

Signed-off-by: llyyr <llyyr.public@gmail.com>
---
 drivers/hwmon/nct6683.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/hwmon/nct6683.c b/drivers/hwmon/nct6683.c
index a872f783e..5df9b9ce7 100644
--- a/drivers/hwmon/nct6683.c
+++ b/drivers/hwmon/nct6683.c
@@ -14,6 +14,7 @@
  * nct6683d     21(1)   16      8       32(1) 0xc730
  * nct6686d     21(1)   16      8       32(1) 0xd440
  * nct6687d     21(1)   16      8       32(1) 0xd590
+ *                                           (0xd592)
  *
  * Notes:
  *	(1) Total number of vin and temp inputs is 32.
@@ -71,6 +72,7 @@ static const char * const nct6683_chip_names[] = {
 #define SIO_NCT6683_ID		0xc730
 #define SIO_NCT6686_ID		0xd440
 #define SIO_NCT6687_ID		0xd590
+#define SIO_NCT6687_ID2		0xd592
 #define SIO_ID_MASK		0xFFF0
 
 static inline void
@@ -1362,6 +1364,7 @@ static int __init nct6683_find(int sioaddr, struct nct6683_sio_data *sio_data)
 		sio_data->kind = nct6686;
 		break;
 	case SIO_NCT6687_ID:
+	case SIO_NCT6687_ID2:
 		sio_data->kind = nct6687;
 		break;
 	default:
-- 
2.40.1
Re: [PATCH] hwmon: (nct6683) Add another chip ID for NCT6687D sensor chip found on some MSI boards.
Posted by Guenter Roeck 2 years, 8 months ago
On Mon, May 15, 2023 at 02:55:46PM +0530, llyyr wrote:
> This value was found on MSI Z690-A PRO DDR5, with a NCT6687D chip.
> 
> Signed-off-by: llyyr <llyyr.public@gmail.com>
> ---
>  drivers/hwmon/nct6683.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/hwmon/nct6683.c b/drivers/hwmon/nct6683.c
> index a872f783e..5df9b9ce7 100644
> --- a/drivers/hwmon/nct6683.c
> +++ b/drivers/hwmon/nct6683.c
> @@ -14,6 +14,7 @@
>   * nct6683d     21(1)   16      8       32(1) 0xc730
>   * nct6686d     21(1)   16      8       32(1) 0xd440
>   * nct6687d     21(1)   16      8       32(1) 0xd590
> + *                                           (0xd592)
>   *
>   * Notes:
>   *	(1) Total number of vin and temp inputs is 32.
> @@ -71,6 +72,7 @@ static const char * const nct6683_chip_names[] = {
>  #define SIO_NCT6683_ID		0xc730
>  #define SIO_NCT6686_ID		0xd440
>  #define SIO_NCT6687_ID		0xd590
> +#define SIO_NCT6687_ID2		0xd592
>  #define SIO_ID_MASK		0xFFF0
>  
>  static inline void
> @@ -1362,6 +1364,7 @@ static int __init nct6683_find(int sioaddr, struct nct6683_sio_data *sio_data)
>  		sio_data->kind = nct6686;
>  		break;
>  	case SIO_NCT6687_ID:
> +	case SIO_NCT6687_ID2:
>  		sio_data->kind = nct6687;
>  		break;

The checked value is masked with SIO_ID_MASK, or 0xfff0. Why would it be
necessary or even make sense to compare that masked value with 0xd592 ?
Please provide evidence that and why this code is needed.

Guenter
Re: [PATCH] hwmon: (nct6683) Add another chip ID for NCT6687D sensor chip found on some MSI boards.
Posted by llyyr 2 years, 8 months ago
On 5/15/23 18:49, Guenter Roeck wrote:
> On Mon, May 15, 2023 at 02:55:46PM +0530, llyyr wrote:
>> This value was found on MSI Z690-A PRO DDR5, with a NCT6687D chip.
>>
>> Signed-off-by: llyyr <llyyr.public@gmail.com>
>> ---
>>   drivers/hwmon/nct6683.c | 3 +++
>>   1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/hwmon/nct6683.c b/drivers/hwmon/nct6683.c
>> index a872f783e..5df9b9ce7 100644
>> --- a/drivers/hwmon/nct6683.c
>> +++ b/drivers/hwmon/nct6683.c
>> @@ -14,6 +14,7 @@
>>    * nct6683d     21(1)   16      8       32(1) 0xc730
>>    * nct6686d     21(1)   16      8       32(1) 0xd440
>>    * nct6687d     21(1)   16      8       32(1) 0xd590
>> + *                                           (0xd592)
>>    *
>>    * Notes:
>>    *	(1) Total number of vin and temp inputs is 32.
>> @@ -71,6 +72,7 @@ static const char * const nct6683_chip_names[] = {
>>   #define SIO_NCT6683_ID		0xc730
>>   #define SIO_NCT6686_ID		0xd440
>>   #define SIO_NCT6687_ID		0xd590
>> +#define SIO_NCT6687_ID2		0xd592
>>   #define SIO_ID_MASK		0xFFF0
>>   
>>   static inline void
>> @@ -1362,6 +1364,7 @@ static int __init nct6683_find(int sioaddr, struct nct6683_sio_data *sio_data)
>>   		sio_data->kind = nct6686;
>>   		break;
>>   	case SIO_NCT6687_ID:
>> +	case SIO_NCT6687_ID2:
>>   		sio_data->kind = nct6687;
>>   		break;
> 
> The checked value is masked with SIO_ID_MASK, or 0xfff0. Why would it be
> necessary or even make sense to compare that masked value with 0xd592 ?
> Please provide evidence that and why this code is needed.
> 
> Guenter

You're right, sorry for the useless traffic. In my testing this only 
worked because I was loading the module with `force=1`. This is actually 
a case of missing customer ID, I'll be sending a different patch shortly.