On 2024-06-18 18:02:51+0000, Guenter Roeck wrote: > 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. Thanks for the pointer to regmap_i2c_smbus_i2c_read_reg16(). I'm not really familiar with I2C/SMBUS ... Did you look into "2.6.8.3 Default Read Address Pointer Mode"? I am failing to understand how that address pointer mode would ever make sense without address auto-increment. > On top of that, configuring 16-bit mode requires a write operation > into the page register, and that is blocked. ... this one on the other hand is really obvious. Thanks, Thomas