Re: [RFT PATCH v2 2/3] hwmon: (spd5118) Use spd5118 specific read/write operations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/18/24 17:50, Thomas Weißschuh wrote:
On 2024-06-18 17:23:44+0000, Guenter Roeck wrote:
On 6/18/24 16:39, Paul Menzel wrote:
[Cc: +Heiner]


Dear Armin,


Am 19.06.24 um 01:28 schrieb Armin Wolf:
Am 19.06.24 um 00:28 schrieb Wolfram Sang:

to 86 degrees C. If that doesn't work, we'll be really out of luck
with that controller (or at least I don't have an idea what else to try).

Try CCing Heiner Kallweit for ideas about the i801 controller.

i am not Heiner Kallweit, but i found something interesting in
commit ba9ad2af7019 ("i2c: i801: Fix I2C Block Read on 8-Series/C220 and later").

Basically, it seems that the i802 i2c controller indeed features a SPD write disable bit which blocks all writes for slave addresses 0x50-0x57.

Does the i801 i2c controller driver print something like "SPD Write Disable is set" during boot?

Nice find. Yes, it does:


Yes, definitely. I didn't have any recent datasheets, so I missed that flag.
Oh well :-(.

      [    5.462605] i801_smbus 0000:00:1f.4: SPD Write Disable is set
      [    5.468399] i801_smbus 0000:00:1f.4: SMBus using PCI interrupt


Bummer. That explains the problem. It means that the BIOS effectively
blocks reading the eeprom on your system (because that would require writing
the page register), as well as changing temperature limits. That is really
annoying, but there is nothing we can do about it. Maybe the BIOS has a
configuration flag to enable or disable write protect, but I doubt it.

What about using 16bit addressing mode?

     Alternatively, at initial power on, the host can set the Table 112, “MR11” [3] = ‘1’ to address the entire 1024 bytes of
     non-volatile memory with 2 bytes of address and hence not required to go through page selection to address entire
     non-volatile memory.

regmap-i2c allows 16bit addresses when I2C_FUNC_SMBUS_I2C_BLOCK is supported,
which to me looks like it should be the case on i801 for ICH5.


Good idea, but it doesn't work. I can get write operations with
16-bit register addresses to work even on piix4, but read operations
require writing a 16-bit register address followed by byte reads (see
regmap_i2c_smbus_i2c_read_reg16). Unfortunately, spd5118 devices
don't auto-increment the address on byte read operations, meaning
each byte read returns data from address 0x00 (i.e., it returns
0x51). Try "i2cdump -y -f 0 0x50 c" and you'll see what I mean.
Maybe there is a way around it, but I have not found it.

On top of that, configuring 16-bit mode requires a write operation
into the page register, and that is blocked.

Thanks,
Guenter





[Index of Archives]     [LM Sensors]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux