1. 06 9月, 2005 6 次提交
  2. 30 7月, 2005 1 次提交
    • J
      [PATCH] I2C: 24RF08 corruption prevention (again) · 0d73adc1
      Jean Delvare 提交于
      The 24RF08 corruption prevention in the eeprom and max6875 drivers wasn't
      complete. For one thing, the additional quick write should happen as soon
      as possible and unconditionally, while both drivers had error paths before.
      For another, when a given chip is forced, the core does not emit a quick
      write, so a second quick write would cause the corruption rather than
      prevent it.
      
      I plan to move the corruption prevention in the core in the long run, so
      that individual drivers don't have to care anymore. But I need to merge
      i2c_probe and i2c_detect before I do (work in progress).
      Signed-off-by: NJean Delvare <khali@linux-fr.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      0d73adc1
  3. 12 7月, 2005 1 次提交
    • J
      [PATCH] I2C: New max6875 driver may corrupt EEPROMs · 9ab1ee2a
      Jean Delvare 提交于
      After a careful code analysis on the new max6875 driver
      (drivers/i2c/chips/max6875.c), I have come to the conclusion that this
      driver may cause EEPROM corruptions if used on random systems.
      
      The EEPROM part of the MAX6875 chip is accessed using rather uncommon
      I2C sequences. What is seen by the MAX6875 as reads can be seen by a
      standard EEPROM (24C02) as writes. If you check the detection method
      used by the driver, you'll find that the first SMBus command it will
      send on the bus is i2c_smbus_write_byte_data(client, 0x80, 0x40). For
      the MAX6875 it makes an internal pointer point to a specific offset of
      the EEPROM waiting for a subsequent read command, so it's not an actual
      data write operation, but for a standard EEPROM, this instead means
      writing value 0x40 to offset 0x80. Blame Philips and Intel for the
      obscure protocol.
      
      Since the MAX6875 and the standard, common 24C02 EEPROMs share two I2C
      addresses (0x50 and 0x52), loading the max6875 driver on a system with
      standard EEPROMs at either address will trigger a write on these
      EEPROMs, which will lead to their corruption if they happen not to be
      write protected. This kind of EEPROMs can be found on memory modules
      (SPD), ethernet adapters (MAC address), laptops (proprietary data) and
      displays (EDID/DDC). Most of these are hopefully write-protected, but
      not all of them.
      
      For this reason, I would recommend that the max6875 driver be
      neutralized, in a way that nobody can corrupt his/her EEPROMs by just
      loading the driver. This means either deleting the driver completely, or
      not listing any default address for it. I'd like this to be done before
      2.6.13-rc1 is released.
      
      Additionally, the max6875 driver lacks the 24RF08 corruption preventer
      present in the eeprom driver, which means that loading this driver in a
      system with such a chip would corrupt it as well.
      
      Here is a proposed quick patch addressing the issue, although I wouldn't
      mind a complete removal if it makes everyone feel safer. I think Ben
      has plans to replace this driver by a much simplified one anyway.
      Signed-off-by: NJean Delvare <khali@linux-fr.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      9ab1ee2a
  4. 22 6月, 2005 1 次提交