Linux-Hwmon Archive on lore.kernel.org
 help / color / Atom feed
* hwmon (nct6775): Please fix Invalid temperature source error for NCT6798D
@ 2020-07-03 16:03 Stefan Dietrich
  2020-07-03 17:10 ` Guenter Roeck
  0 siblings, 1 reply; 12+ messages in thread
From: Stefan Dietrich @ 2020-07-03 16:03 UTC (permalink / raw)
  To: linux-hwmon

Hi all,

with my Asus Formula XII Z490 and 5.7.0-7.1-liquorix-amd64 I'm getting
the following error messages during boot:

nct6775: Found NCT6798D or compatible chip at 0x2e:0x290
nct6775 nct6775.656: Invalid temperature source 28 at index 0, source
register 0x100, temp register 0x73
nct6775 nct6775.656: Invalid temperature source 28 at index 1, source
register 0x200, temp register 0x75
nct6775 nct6775.656: Invalid temperature source 28 at index 2, source
register 0x300, temp register 0x77
nct6775 nct6775.656: Invalid temperature source 28 at index 3, source
register 0x800, temp register 0x79
nct6775 nct6775.656: Invalid temperature source 28 at index 4, source
register 0x900, temp register 0x7b
nct6775 nct6775.656: Invalid temperature source 28 at index 5, source
register 0xa00, temp register 0x7d

During sensors-detect, most of the standard temperature, voltage and
rpm sources are recognized, however, some of the values, particularly
voltages, are off quite a bit. In addition, output of additional
temperature sensors (via headers on the mainboard) which are reported
fine in BIOS, are missing.

Booting with acpi_enforce_resources=lax doesn't solve this issue.

I'd be happy if anyone would be able to fix this issue or give any
pointers on how to do so. Unfortunately I only have very basic coding
skills, but I'll be happy to assist in debugging.


Cheers,
Stefan


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: hwmon (nct6775): Please fix Invalid temperature source error for NCT6798D
  2020-07-03 16:03 hwmon (nct6775): Please fix Invalid temperature source error for NCT6798D Stefan Dietrich
@ 2020-07-03 17:10 ` Guenter Roeck
  2020-07-05 13:20   ` Stefan Dietrich
       [not found]   ` <48f415c34f4ca3f5239650711daaf1e11342da8e.camel@gmx.de>
  0 siblings, 2 replies; 12+ messages in thread
From: Guenter Roeck @ 2020-07-03 17:10 UTC (permalink / raw)
  To: Stefan Dietrich, linux-hwmon

On 7/3/20 9:03 AM, Stefan Dietrich wrote:
> Hi all,
> 
> with my Asus Formula XII Z490 and 5.7.0-7.1-liquorix-amd64 I'm getting
> the following error messages during boot:
> 
> nct6775: Found NCT6798D or compatible chip at 0x2e:0x290
> nct6775 nct6775.656: Invalid temperature source 28 at index 0, source
> register 0x100, temp register 0x73
> nct6775 nct6775.656: Invalid temperature source 28 at index 1, source
> register 0x200, temp register 0x75
> nct6775 nct6775.656: Invalid temperature source 28 at index 2, source
> register 0x300, temp register 0x77
> nct6775 nct6775.656: Invalid temperature source 28 at index 3, source
> register 0x800, temp register 0x79
> nct6775 nct6775.656: Invalid temperature source 28 at index 4, source
> register 0x900, temp register 0x7b
> nct6775 nct6775.656: Invalid temperature source 28 at index 5, source
> register 0xa00, temp register 0x7d
> 

There is nothing much if anything we can do about that. The NCT6798D
datasheet reports temperature source 28 as reserved. You could ask
Asus for support, but their usual response is that they don't support
Linux.

> During sensors-detect, most of the standard temperature, voltage and
> rpm sources are recognized, however, some of the values, particularly
> voltages, are off quite a bit. In addition, output of additional

Voltages need to be scaled. Scaling factors are mainboard specific and
would have to be determined by comparing BIOS reported voltages with
raw voltages (board vendors usually don't provide the information).
Scaling factors can then be entered into /etc/sensors3.conf.

> temperature sensors (via headers on the mainboard) which are reported
> fine in BIOS, are missing.
> 

Again, this is mainboard specific. We don't know how the hardware reports
those values. Only ASUS could provide the necessary information.
Unfortunately, as mentioned above, they are not exactly known to be
Linux friendly.

Guenter

> Booting with acpi_enforce_resources=lax doesn't solve this issue.
> 
> I'd be happy if anyone would be able to fix this issue or give any
> pointers on how to do so. Unfortunately I only have very basic coding
> skills, but I'll be happy to assist in debugging.
> 
> 
> Cheers,
> Stefan
> 


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: hwmon (nct6775): Please fix Invalid temperature source error for NCT6798D
  2020-07-03 17:10 ` Guenter Roeck
@ 2020-07-05 13:20   ` Stefan Dietrich
       [not found]   ` <48f415c34f4ca3f5239650711daaf1e11342da8e.camel@gmx.de>
  1 sibling, 0 replies; 12+ messages in thread
From: Stefan Dietrich @ 2020-07-05 13:20 UTC (permalink / raw)
  To: linux-hwmon

On Fri, 2020-07-03 at 10:10 -0700, Guenter Roeck wrote:
> On 7/3/20 9:03 AM, Stefan Dietrich wrote:
> > Hi all,
> >
> > with my Asus Formula XII Z490 and 5.7.0-7.1-liquorix-amd64 I'm
> > getting
> > the following error messages during boot:
> >
> > nct6775: Found NCT6798D or compatible chip at 0x2e:0x290
> > nct6775 nct6775.656: Invalid temperature source 28 at index 0,
> > source
> > register 0x100, temp register 0x73
> > nct6775 nct6775.656: Invalid temperature source 28 at index 1,
> > source
> > register 0x200, temp register 0x75
> > nct6775 nct6775.656: Invalid temperature source 28 at index 2,
> > source
> > register 0x300, temp register 0x77
> > nct6775 nct6775.656: Invalid temperature source 28 at index 3,
> > source
> > register 0x800, temp register 0x79
> > nct6775 nct6775.656: Invalid temperature source 28 at index 4,
> > source
> > register 0x900, temp register 0x7b
> > nct6775 nct6775.656: Invalid temperature source 28 at index 5,
> > source
> > register 0xa00, temp register 0x7d
> >
>
> There is nothing much if anything we can do about that. The NCT6798D
> datasheet reports temperature source 28 as reserved. You could ask
> Asus for support, but their usual response is that they don't support
> Linux.

Thanks for the quick reply. Would you briefly outline why this makes it
inaccessible for the NCT6776 driver? Is there a pool of registers that
I might probe for values that could be related to the desired
temperature values, even if they need to be scaled?


Thanks,
Stefan

> > During sensors-detect, most of the standard temperature, voltage
> > and
> > rpm sources are recognized, however, some of the values,
> > particularly
> > voltages, are off quite a bit. In addition, output of additional
>
> Voltages need to be scaled. Scaling factors are mainboard specific
> and
> would have to be determined by comparing BIOS reported voltages with
> raw voltages (board vendors usually don't provide the information).
> Scaling factors can then be entered into /etc/sensors3.conf.
>
> > temperature sensors (via headers on the mainboard) which are
> > reported
> > fine in BIOS, are missing.
> >
>
> Again, this is mainboard specific. We don't know how the hardware
> reports
> those values. Only ASUS could provide the necessary information.
> Unfortunately, as mentioned above, they are not exactly known to be
> Linux friendly.
>
> Guenter
>
> > Booting with acpi_enforce_resources=lax doesn't solve this issue.
> >
> > I'd be happy if anyone would be able to fix this issue or give any
> > pointers on how to do so. Unfortunately I only have very basic
> > coding
> > skills, but I'll be happy to assist in debugging.
> >
> >
> > Cheers,
> > Stefan
> >


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: hwmon (nct6775): Please fix Invalid temperature source error for NCT6798D
       [not found]     ` <d54732db-255c-54be-ab43-997369e0da87@roeck-us.net>
@ 2020-07-05 15:47       ` Stefan Dietrich
       [not found]       ` <e02ef4f8633e035ecf6019abb72e3a22bfc29732.camel@gmx.de>
  1 sibling, 0 replies; 12+ messages in thread
From: Stefan Dietrich @ 2020-07-05 15:47 UTC (permalink / raw)
  To: Guenter Roeck, linux-hwmon

On Sun, 2020-07-05 at 07:21 -0700, Guenter Roeck wrote:
> On 7/5/20 6:19 AM, Stefan Dietrich wrote:
> > On Fri, 2020-07-03 at 10:10 -0700, Guenter Roeck wrote:
> > > On 7/3/20 9:03 AM, Stefan Dietrich wrote:
> > > > Hi all,
> > > >
> > > > with my Asus Formula XII Z490 and 5.7.0-7.1-liquorix-amd64 I'm
> > > > getting
> > > > the following error messages during boot:
> > > >
> > > > nct6775: Found NCT6798D or compatible chip at 0x2e:0x290
> > > > nct6775 nct6775.656: Invalid temperature source 28 at index 0,
> > > > source
> > > > register 0x100, temp register 0x73
> > > > nct6775 nct6775.656: Invalid temperature source 28 at index 1,
> > > > source
> > > > register 0x200, temp register 0x75
> > > > nct6775 nct6775.656: Invalid temperature source 28 at index 2,
> > > > source
> > > > register 0x300, temp register 0x77
> > > > nct6775 nct6775.656: Invalid temperature source 28 at index 3,
> > > > source
> > > > register 0x800, temp register 0x79
> > > > nct6775 nct6775.656: Invalid temperature source 28 at index 4,
> > > > source
> > > > register 0x900, temp register 0x7b
> > > > nct6775 nct6775.656: Invalid temperature source 28 at index 5,
> > > > source
> > > > register 0xa00, temp register 0x7d
> > > >
> > >
> > > There is nothing much if anything we can do about that. The
> > > NCT6798D
> > > datasheet reports temperature source 28 as reserved.
> >
> > Thanks for the quick reply. Would you briefly outline why this
> > makes it
> > inaccessible for the NCT6776 driver? Is there a pool of registers
> > that
> > I might probe for values that could be related to the desired
> > temperature values, even if they need to be scaled?
> >
>
> Reserved means invalid for use. We don't know what happens if we
> would
> let the driver use those values. That has nothing to do with scaling.
>
> If you like, feel free to modify the driver to accept temperature
> source
> 28 for NCT6798D and report the results. That should give us an idea
> if
> the datasheet is at fault or the board BIOS.

Ok, thanks. Unfortunately, a look at the code tells me that this is
beyond my current skills, but I might start toying around with it some
day ;-)


Stefan

> Guenter


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: hwmon (nct6775): Please fix Invalid temperature source error for NCT6798D
       [not found]         ` <20200712224620.GA19097@roeck-us.net>
@ 2020-07-13 17:40           ` Stefan Dietrich
  2020-07-14  5:18             ` Guenter Roeck
  0 siblings, 1 reply; 12+ messages in thread
From: Stefan Dietrich @ 2020-07-13 17:40 UTC (permalink / raw)
  To: Guenter Roeck; +Cc: linux-hwmon

On Sun, 2020-07-12 at 15:46 -0700, Guenter Roeck wrote:
> On Sun, Jul 12, 2020 at 09:51:42AM +0200, Stefan Dietrich wrote:
> > On Sun, 2020-07-05 at 07:21 -0700, Guenter Roeck wrote:
> [ ... ]
> > Would you mind giving me a pointer on how this would be done? I
> > assume
> > for those familiar with the driver it will be less than a handful
> > of
> > lines of code?!
> > I will certainly report back as soon as I have obtained any
> > results.
>
> Something like the diffs below should do. Caution - this is cut-and-
> paste,
> so you'll have to make the changes manually.
>
> Guenter
>
> ---
> diff --git a/drivers/hwmon/nct6775.c b/drivers/hwmon/nct6775.c
> index 7efa6bfef060..ec427ce503f0 100644
> --- a/drivers/hwmon/nct6775.c
> +++ b/drivers/hwmon/nct6775.c
> @@ -786,9 +786,9 @@ static const char *const nct6798_temp_label[] = {
>         "Agent1 Dimm1",
>         "BYTE_TEMP0",
>         "BYTE_TEMP1",
> -       "",
> -       "",
> -       "",
> +       "Unknown28",
> +       "Unknown29",
> +       "Unknown30",
>         "Virtual_TEMP"
>  };

Dankeschoen - I just tried that, but I'm still getting

[  324.901595] nct6775 nct6775.656: Invalid temperature source 28 at
index 0, source register 0x100, temp register 0x73
[  324.901637] nct6775 nct6775.656: Invalid temperature source 28 at
index 1, source register 0x200, temp register 0x75
[  324.901679] nct6775 nct6775.656: Invalid temperature source 28 at
index 2, source register 0x300, temp register 0x77
[  324.901722] nct6775 nct6775.656: Invalid temperature source 28 at
index 3, source register 0x800, temp register 0x79
[  324.901765] nct6775 nct6775.656: Invalid temperature source 28 at
index 4, source register 0x900, temp register 0x7b
[  324.901807] nct6775 nct6775.656: Invalid temperature source 28 at
index 5, source register 0xa00, temp register 0x7d

I double checked that it really is the modified driver that is loaded.
Now does that mean the diffs did not do the trick, or that there's
really nothing to see here?


Thanks,
Stefan


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: hwmon (nct6775): Please fix Invalid temperature source error for NCT6798D
  2020-07-13 17:40           ` Stefan Dietrich
@ 2020-07-14  5:18             ` Guenter Roeck
  2020-07-14 17:19               ` Stefan Dietrich
  0 siblings, 1 reply; 12+ messages in thread
From: Guenter Roeck @ 2020-07-14  5:18 UTC (permalink / raw)
  To: Stefan Dietrich; +Cc: linux-hwmon

On 7/13/20 10:40 AM, Stefan Dietrich wrote:
> On Sun, 2020-07-12 at 15:46 -0700, Guenter Roeck wrote:
>> On Sun, Jul 12, 2020 at 09:51:42AM +0200, Stefan Dietrich wrote:
>>> On Sun, 2020-07-05 at 07:21 -0700, Guenter Roeck wrote:
>> [ ... ]
>>> Would you mind giving me a pointer on how this would be done? I
>>> assume
>>> for those familiar with the driver it will be less than a handful
>>> of
>>> lines of code?!
>>> I will certainly report back as soon as I have obtained any
>>> results.
>>
>> Something like the diffs below should do. Caution - this is cut-and-
>> paste,
>> so you'll have to make the changes manually.
>>
>> Guenter
>>
>> ---
>> diff --git a/drivers/hwmon/nct6775.c b/drivers/hwmon/nct6775.c
>> index 7efa6bfef060..ec427ce503f0 100644
>> --- a/drivers/hwmon/nct6775.c
>> +++ b/drivers/hwmon/nct6775.c
>> @@ -786,9 +786,9 @@ static const char *const nct6798_temp_label[] = {
>>         "Agent1 Dimm1",
>>         "BYTE_TEMP0",
>>         "BYTE_TEMP1",
>> -       "",
>> -       "",
>> -       "",
>> +       "Unknown28",
>> +       "Unknown29",
>> +       "Unknown30",
>>         "Virtual_TEMP"
>>  };
> 
> Dankeschoen - I just tried that, but I'm still getting
> 
> [  324.901595] nct6775 nct6775.656: Invalid temperature source 28 at
> index 0, source register 0x100, temp register 0x73
> [  324.901637] nct6775 nct6775.656: Invalid temperature source 28 at
> index 1, source register 0x200, temp register 0x75
> [  324.901679] nct6775 nct6775.656: Invalid temperature source 28 at
> index 2, source register 0x300, temp register 0x77
> [  324.901722] nct6775 nct6775.656: Invalid temperature source 28 at
> index 3, source register 0x800, temp register 0x79
> [  324.901765] nct6775 nct6775.656: Invalid temperature source 28 at
> index 4, source register 0x900, temp register 0x7b
> [  324.901807] nct6775 nct6775.656: Invalid temperature source 28 at
> index 5, source register 0xa00, temp register 0x7d
> 
> I double checked that it really is the modified driver that is loaded.
> Now does that mean the diffs did not do the trick, or that there's
> really nothing to see here?
> 


I forgot: Also change NCT6798_TEMP_MASK to 0xffff0ffe.

Guenter

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: hwmon (nct6775): Please fix Invalid temperature source error for NCT6798D
  2020-07-14  5:18             ` Guenter Roeck
@ 2020-07-14 17:19               ` Stefan Dietrich
  2020-07-14 21:29                 ` Guenter Roeck
  0 siblings, 1 reply; 12+ messages in thread
From: Stefan Dietrich @ 2020-07-14 17:19 UTC (permalink / raw)
  To: Guenter Roeck; +Cc: linux-hwmon

On Mon, 2020-07-13 at 22:18 -0700, Guenter Roeck wrote:
> On 7/13/20 10:40 AM, Stefan Dietrich wrote:
> > On Sun, 2020-07-12 at 15:46 -0700, Guenter Roeck wrote:
> > > On Sun, Jul 12, 2020 at 09:51:42AM +0200, Stefan Dietrich wrote:
> > > > On Sun, 2020-07-05 at 07:21 -0700, Guenter Roeck wrote:
> > > [ ... ]
> > > > Would you mind giving me a pointer on how this would be done? I
> > > > assume
> > > > for those familiar with the driver it will be less than a
> > > > handful
> > > > of
> > > > lines of code?!
> > > > I will certainly report back as soon as I have obtained any
> > > > results.
> > >
> > > Something like the diffs below should do. Caution - this is cut-
> > > and-
> > > paste,
> > > so you'll have to make the changes manually.
> > >
> > > Guenter
> > >
> > > ---
> > > diff --git a/drivers/hwmon/nct6775.c b/drivers/hwmon/nct6775.c
> > > index 7efa6bfef060..ec427ce503f0 100644
> > > --- a/drivers/hwmon/nct6775.c
> > > +++ b/drivers/hwmon/nct6775.c
> > > @@ -786,9 +786,9 @@ static const char *const nct6798_temp_label[]
> > > = {
> > >         "Agent1 Dimm1",
> > >         "BYTE_TEMP0",
> > >         "BYTE_TEMP1",
> > > -       "",
> > > -       "",
> > > -       "",
> > > +       "Unknown28",
> > > +       "Unknown29",
> > > +       "Unknown30",
> > >         "Virtual_TEMP"
> > >  };
> >
> > Dankeschoen - I just tried that, but I'm still getting
> >
> > [  324.901595] nct6775 nct6775.656: Invalid temperature source 28
> > at
> > index 0, source register 0x100, temp register 0x73
> > [  324.901637] nct6775 nct6775.656: Invalid temperature source 28
> > at
> > index 1, source register 0x200, temp register 0x75
> > [  324.901679] nct6775 nct6775.656: Invalid temperature source 28
> > at
> > index 2, source register 0x300, temp register 0x77
> > [  324.901722] nct6775 nct6775.656: Invalid temperature source 28
> > at
> > index 3, source register 0x800, temp register 0x79
> > [  324.901765] nct6775 nct6775.656: Invalid temperature source 28
> > at
> > index 4, source register 0x900, temp register 0x7b
> > [  324.901807] nct6775 nct6775.656: Invalid temperature source 28
> > at
> > index 5, source register 0xa00, temp register 0x7d
> >
> > I double checked that it really is the modified driver that is
> > loaded.
> > Now does that mean the diffs did not do the trick, or that there's
> > really nothing to see here?
> >
>
> I forgot: Also change NCT6798_TEMP_MASK to 0xffff0ffe.

The error messages are gone and sensors now shows a value for source
Unknown28. However, I did not figure out which component's temperature
it corresponds to. It is definitely not one of the three 2-pin
temperature sensor headers on the mainboard, as I swapped external temp
sensors on these without impact on the reported value. The shown value
is in the range of the CPU core temperatures (that is, somewhere
between roughly 30 and 80°C) and varies with 0.5°C resolution.

However - thanks a lot for your assistance. If I may be of help in
further debugging for that particular NCT chip / mainboard, please let
me know!

Thanks,
Stefan


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: hwmon (nct6775): Please fix Invalid temperature source error for NCT6798D
  2020-07-14 17:19               ` Stefan Dietrich
@ 2020-07-14 21:29                 ` Guenter Roeck
  0 siblings, 0 replies; 12+ messages in thread
From: Guenter Roeck @ 2020-07-14 21:29 UTC (permalink / raw)
  To: Stefan Dietrich; +Cc: linux-hwmon

On 7/14/20 10:19 AM, Stefan Dietrich wrote:
> On Mon, 2020-07-13 at 22:18 -0700, Guenter Roeck wrote:
>> On 7/13/20 10:40 AM, Stefan Dietrich wrote:
>>> On Sun, 2020-07-12 at 15:46 -0700, Guenter Roeck wrote:
>>>> On Sun, Jul 12, 2020 at 09:51:42AM +0200, Stefan Dietrich wrote:
>>>>> On Sun, 2020-07-05 at 07:21 -0700, Guenter Roeck wrote:
>>>> [ ... ]
>>>>> Would you mind giving me a pointer on how this would be done? I
>>>>> assume
>>>>> for those familiar with the driver it will be less than a
>>>>> handful
>>>>> of
>>>>> lines of code?!
>>>>> I will certainly report back as soon as I have obtained any
>>>>> results.
>>>>
>>>> Something like the diffs below should do. Caution - this is cut-
>>>> and-
>>>> paste,
>>>> so you'll have to make the changes manually.
>>>>
>>>> Guenter
>>>>
>>>> ---
>>>> diff --git a/drivers/hwmon/nct6775.c b/drivers/hwmon/nct6775.c
>>>> index 7efa6bfef060..ec427ce503f0 100644
>>>> --- a/drivers/hwmon/nct6775.c
>>>> +++ b/drivers/hwmon/nct6775.c
>>>> @@ -786,9 +786,9 @@ static const char *const nct6798_temp_label[]
>>>> = {
>>>>         "Agent1 Dimm1",
>>>>         "BYTE_TEMP0",
>>>>         "BYTE_TEMP1",
>>>> -       "",
>>>> -       "",
>>>> -       "",
>>>> +       "Unknown28",
>>>> +       "Unknown29",
>>>> +       "Unknown30",
>>>>         "Virtual_TEMP"
>>>>  };
>>>
>>> Dankeschoen - I just tried that, but I'm still getting
>>>
>>> [  324.901595] nct6775 nct6775.656: Invalid temperature source 28
>>> at
>>> index 0, source register 0x100, temp register 0x73
>>> [  324.901637] nct6775 nct6775.656: Invalid temperature source 28
>>> at
>>> index 1, source register 0x200, temp register 0x75
>>> [  324.901679] nct6775 nct6775.656: Invalid temperature source 28
>>> at
>>> index 2, source register 0x300, temp register 0x77
>>> [  324.901722] nct6775 nct6775.656: Invalid temperature source 28
>>> at
>>> index 3, source register 0x800, temp register 0x79
>>> [  324.901765] nct6775 nct6775.656: Invalid temperature source 28
>>> at
>>> index 4, source register 0x900, temp register 0x7b
>>> [  324.901807] nct6775 nct6775.656: Invalid temperature source 28
>>> at
>>> index 5, source register 0xa00, temp register 0x7d
>>>
>>> I double checked that it really is the modified driver that is
>>> loaded.
>>> Now does that mean the diffs did not do the trick, or that there's
>>> really nothing to see here?
>>>
>>
>> I forgot: Also change NCT6798_TEMP_MASK to 0xffff0ffe.
> 
> The error messages are gone and sensors now shows a value for source
> Unknown28. However, I did not figure out which component's temperature
> it corresponds to. It is definitely not one of the three 2-pin
> temperature sensor headers on the mainboard, as I swapped external temp
> sensors on these without impact on the reported value. The shown value
> is in the range of the CPU core temperatures (that is, somewhere
> between roughly 30 and 80°C) and varies with 0.5°C resolution.

On NCT6797D, it is "PECI Agent 0 Calibration", or in other words the
CPU temperature. Presumably it is the same here, only undocumented.
I'll change the driver accordingly.

Thanks,
Guenter

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: hwmon (nct6775): Please fix Invalid temperature source error for NCT6798D
  2020-07-15  0:19   ` Alexey Galakhov
@ 2020-07-15  2:33     ` Guenter Roeck
  0 siblings, 0 replies; 12+ messages in thread
From: Guenter Roeck @ 2020-07-15  2:33 UTC (permalink / raw)
  To: Alexey Galakhov, linux-hwmon

On 7/14/20 5:19 PM, Alexey Galakhov wrote:
> On Tue, 14 Jul 2020 16:58:29 -0700
> Guenter Roeck <linux@roeck-us.net> wrote:
> 
>> On 7/14/20 4:17 PM, Alexey Galakhov wrote:
>>> Hi,
>>>
>>> I'm facing the same problem. I did some research on my machine.
>>>
>>> On Fri, 2020-07-03 at 10:10 -0700, Guenter Roeck wrote:
>>>   
>>>> There is nothing much if anything we can do about that. The NCT6798D
>>>> datasheet reports temperature source 28 as reserved. You could ask
>>>> Asus for support, but their usual response is that they don't support
>>>> Linux.  
>>>
>>> Looks like there are different versions of the datasheet. The one of
>>> NCT6796D, Revision 0.6 states that 28 (0x1c or 11100) is "Select PECI  
>>
>> We are talking about NCT6798D here.
> 
> I have NCT6798D on my machine and I also double-checked the chip marking
> on the motherboard. I just looked at the 96's datasheet (not found a
> 98's one). Even with 98 this configuration seems to be correct. Looks
> like at least on some revisions of 98 it is not reserved and usable.
> The fan in controlled correctly with this setting.
> 

FWIW: https://patchwork.kernel.org/patch/11663841/

>> I have no idea how to access the "HM Read-Only" registers. The datasheets
>> are not exactly verbal about it.
> 
> I successfully accessed them. The access procedure is poorly described
> but quite simple.
> 
> Each of these "HM Read-Only" registers is just a plain I/O port. Just
> inb() reads them. Their addresses are sequential. The base address
> (address of register 00) is configured similar to the main I/O address
> (the one which is usually 0x295). Its MSB is in register 0x64 and its
> LSB is in 0x65 of the SuperIO. Like that:
> 
>   superio_select(sioreg, NCT6775_LD_HWM);
>   hm_ro_base = superio_inb(sioreg, 0x64) << 8;
>   hm_ro_base |= superio_inb(sioreg, 0x65);
> 
>   // on my machine hm_ro_base == 0x800
> 
>   val = inb(hm_io_base + hm_reg);
> 
> Hope this helps.
> 
Interesting. I'll keep it in mind, but I don't think I'll be able to
submit any patches anytime soon.

Thanks,
Guenter

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: hwmon (nct6775): Please fix Invalid temperature source error for NCT6798D
  2020-07-14 23:58 ` Guenter Roeck
@ 2020-07-15  0:19   ` Alexey Galakhov
  2020-07-15  2:33     ` Guenter Roeck
  0 siblings, 1 reply; 12+ messages in thread
From: Alexey Galakhov @ 2020-07-15  0:19 UTC (permalink / raw)
  To: linux-hwmon

On Tue, 14 Jul 2020 16:58:29 -0700
Guenter Roeck <linux@roeck-us.net> wrote:

> On 7/14/20 4:17 PM, Alexey Galakhov wrote:
> > Hi,
> > 
> > I'm facing the same problem. I did some research on my machine.
> > 
> > On Fri, 2020-07-03 at 10:10 -0700, Guenter Roeck wrote:
> >   
> >> There is nothing much if anything we can do about that. The NCT6798D
> >> datasheet reports temperature source 28 as reserved. You could ask
> >> Asus for support, but their usual response is that they don't support
> >> Linux.  
> > 
> > Looks like there are different versions of the datasheet. The one of
> > NCT6796D, Revision 0.6 states that 28 (0x1c or 11100) is "Select PECI  
> 
> We are talking about NCT6798D here.

I have NCT6798D on my machine and I also double-checked the chip marking
on the motherboard. I just looked at the 96's datasheet (not found a
98's one). Even with 98 this configuration seems to be correct. Looks
like at least on some revisions of 98 it is not reserved and usable.
The fan in controlled correctly with this setting.

> I have no idea how to access the "HM Read-Only" registers. The datasheets
> are not exactly verbal about it.

I successfully accessed them. The access procedure is poorly described
but quite simple.

Each of these "HM Read-Only" registers is just a plain I/O port. Just
inb() reads them. Their addresses are sequential. The base address
(address of register 00) is configured similar to the main I/O address
(the one which is usually 0x295). Its MSB is in register 0x64 and its
LSB is in 0x65 of the SuperIO. Like that:

  superio_select(sioreg, NCT6775_LD_HWM);
  hm_ro_base = superio_inb(sioreg, 0x64) << 8;
  hm_ro_base |= superio_inb(sioreg, 0x65);

  // on my machine hm_ro_base == 0x800

  val = inb(hm_io_base + hm_reg);

Hope this helps.

Regards,

Alexey

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: hwmon (nct6775): Please fix Invalid temperature source error for NCT6798D
  2020-07-14 23:17 Alexey Galakhov
@ 2020-07-14 23:58 ` Guenter Roeck
  2020-07-15  0:19   ` Alexey Galakhov
  0 siblings, 1 reply; 12+ messages in thread
From: Guenter Roeck @ 2020-07-14 23:58 UTC (permalink / raw)
  To: Alexey Galakhov, linux-hwmon

On 7/14/20 4:17 PM, Alexey Galakhov wrote:
> Hi,
> 
> I'm facing the same problem. I did some research on my machine.
> 
> On Fri, 2020-07-03 at 10:10 -0700, Guenter Roeck wrote:
> 
>> There is nothing much if anything we can do about that. The NCT6798D
>> datasheet reports temperature source 28 as reserved. You could ask
>> Asus for support, but their usual response is that they don't support
>> Linux.
> 
> Looks like there are different versions of the datasheet. The one of
> NCT6796D, Revision 0.6 states that 28 (0x1c or 11100) is "Select PECI

We are talking about NCT6798D here.

> Agent 0 Calibration as CPUFAN monitoring source." This seems to be correct
> since the fan in question is the CPU one and the value of "PECI Agent 0
> Calibration" is actually very similar to the CPU temperature and rises
> with CPU load.
> 
> Also, looking at the driver code I found no signs of reading so-called
> "HM Read-Only Registers". They are described in section 9.481 of the
> above datasheet. They are I/O ports (readable with `inb`) with their
> base address located in configuration registers 0x64 and 0x65 of the
> SuperIO. Some temperatures seem to be directly readable only through
> these registers. Looks like the driver monitors all temperatures only
> indirectly via switchable channels, is it true?
> 
I have no idea how to access the "HM Read-Only" registers. The datasheets
are not exactly verbal about it.

Guenter

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: hwmon (nct6775): Please fix Invalid temperature source error for NCT6798D
@ 2020-07-14 23:17 Alexey Galakhov
  2020-07-14 23:58 ` Guenter Roeck
  0 siblings, 1 reply; 12+ messages in thread
From: Alexey Galakhov @ 2020-07-14 23:17 UTC (permalink / raw)
  To: linux-hwmon

Hi,

I'm facing the same problem. I did some research on my machine.

On Fri, 2020-07-03 at 10:10 -0700, Guenter Roeck wrote:

> There is nothing much if anything we can do about that. The NCT6798D
> datasheet reports temperature source 28 as reserved. You could ask
> Asus for support, but their usual response is that they don't support
> Linux.

Looks like there are different versions of the datasheet. The one of
NCT6796D, Revision 0.6 states that 28 (0x1c or 11100) is "Select PECI
Agent 0 Calibration as CPUFAN monitoring source." This seems to be correct
since the fan in question is the CPU one and the value of "PECI Agent 0
Calibration" is actually very similar to the CPU temperature and rises
with CPU load.

Also, looking at the driver code I found no signs of reading so-called
"HM Read-Only Registers". They are described in section 9.481 of the
above datasheet. They are I/O ports (readable with `inb`) with their
base address located in configuration registers 0x64 and 0x65 of the
SuperIO. Some temperatures seem to be directly readable only through
these registers. Looks like the driver monitors all temperatures only
indirectly via switchable channels, is it true?

Regards,
Alexey
  

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, back to index

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-03 16:03 hwmon (nct6775): Please fix Invalid temperature source error for NCT6798D Stefan Dietrich
2020-07-03 17:10 ` Guenter Roeck
2020-07-05 13:20   ` Stefan Dietrich
     [not found]   ` <48f415c34f4ca3f5239650711daaf1e11342da8e.camel@gmx.de>
     [not found]     ` <d54732db-255c-54be-ab43-997369e0da87@roeck-us.net>
2020-07-05 15:47       ` Stefan Dietrich
     [not found]       ` <e02ef4f8633e035ecf6019abb72e3a22bfc29732.camel@gmx.de>
     [not found]         ` <20200712224620.GA19097@roeck-us.net>
2020-07-13 17:40           ` Stefan Dietrich
2020-07-14  5:18             ` Guenter Roeck
2020-07-14 17:19               ` Stefan Dietrich
2020-07-14 21:29                 ` Guenter Roeck
2020-07-14 23:17 Alexey Galakhov
2020-07-14 23:58 ` Guenter Roeck
2020-07-15  0:19   ` Alexey Galakhov
2020-07-15  2:33     ` Guenter Roeck

Linux-Hwmon Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-hwmon/0 linux-hwmon/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-hwmon linux-hwmon/ https://lore.kernel.org/linux-hwmon \
		linux-hwmon@vger.kernel.org
	public-inbox-index linux-hwmon

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-hwmon


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git