On Tue, 14 Jul 2020 16:58:29 -0700 Guenter Roeck <linux@xxxxxxxxxxxx> 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