Kernel driver eeprom
====================

Supported chips:
  * Any EEPROM chip in the designated address range
    Prefix: 'eeprom'
    Addresses scanned: I2C 0x50 - 0x57
    Datasheets: Publicly available from:
                Atmel (www.atmel.com),
                Catalyst (www.catsemi.com),
                Fairchild (www.fairchildsemi.com),
                Microchip (www.microchip.com),
                Philips (www.semiconductor.philips.com),
                Rohm (www.rohm.com),
                ST (www.st.com),
                Xicor (www.xicor.com),
                and others.

        Chip     Size (bits)    Address
        24C01     1K            0x50 (shadows at 0x51 - 0x57)
        24C01A    1K            0x50 - 0x57 (Typical device on DIMMs)
        24C02     2K            0x50 - 0x57
        24C04     4K            0x50, 0x52, 0x54, 0x56
                                (additional data at 0x51, 0x53, 0x55, 0x57)
        24C08     8K            0x50, 0x54 (additional data at 0x51, 0x52,
                                0x53, 0x55, 0x56, 0x57)
        24C16    16K            0x50 (additional data at 0x51 - 0x57)
        Sony      2K            0x57

        Atmel     34C02B  2K    0x50 - 0x57, SW write protect at 0x30-37
        Catalyst  34FC02  2K    0x50 - 0x57, SW write protect at 0x30-37
        Catalyst  34RC02  2K    0x50 - 0x57, SW write protect at 0x30-37
        Fairchild 34W02   2K    0x50 - 0x57, SW write protect at 0x30-37
        Microchip 24AA52  2K    0x50 - 0x57, SW write protect at 0x30-37
        ST        M34C02  2K    0x50 - 0x57, SW write protect at 0x30-37


Authors:
        Frodo Looijaard <frodol@dds.nl>,
        Philip Edelbrock <phil@netroedge.com>,
        Jean Delvare <khali@linux-fr.org>,
        Greg Kroah-Hartman <greg@kroah.com>,
        IBM Corp.

Description
-----------

This is a simple EEPROM module meant to enable reading the first 256 bytes
of an EEPROM (on a SDRAM DIMM for example). However, it will access serial
EEPROMs on any I2C adapter. The supported devices are generically called
24Cxx, and are listed above; however the numbering for these
industry-standard devices may vary by manufacturer.

This module was a programming exercise to get used to the new project
organization laid out by Frodo, but it should be at least completely
effective for decoding the contents of EEPROMs on DIMMs.

DIMMS will typically contain a 24C01A or 24C02, or the 34C02 variants.
The other devices will not be found on a DIMM because they respond to more
than one address.

DDC Monitors may contain any device. Often a 24C01, which responds to all 8
addresses, is found.

Recent Sony Vaio laptops have an EEPROM at 0x57. We couldn't get the
specification, so it is guess work and far from being complete.

The Microchip 24AA52/24LCS52, ST M34C02, and others support an additional
software write protect register at 0x30 - 0x37 (0x20 less than the memory
location). The chip responds to "write quick" detection at this address but
does not respond to byte reads. If this register is present, the lower 128
bytes of the memory array are not write protected. Any byte data write to
this address will write protect the memory array permanently, and the
device will no longer respond at the 0x30-37 address. The eeprom driver
does not support this register.

Lacking functionality:

* Full support for larger devices (24C04, 24C08, 24C16). These are not
typically found on a PC. These devices will appear as separate devices at
multiple addresses.

* Support for really large devices (24C32, 24C64, 24C128, 24C256, 24C512).
These devices require two-byte address fields and are not supported.

* Enable Writing. Again, no technical reason why not, but making it easy
to change the contents of the EEPROMs (on DIMMs anyway) also makes it easy
to disable the DIMMs (potentially preventing the computer from booting)
until the values are restored somehow.

Use:

After inserting the module (and any other required SMBus/i2c modules), you
should have some EEPROM directories in /sys/bus/i2c/devices/* of names such
as "0-0050". Inside each of these is a series of files, the eeprom file
contains the binary data from EEPROM.
