• Serge Semin's avatar
    eeprom: Add IDT 89HPESx EEPROM/CSR driver · cfad6425
    Serge Semin authored
      This driver provides an access to EEPROM of IDT PCIe-switches. IDT PCIe-
    switches expose a simple SMBus interface to perform IO-operations from/to
    EEPROM, which is located at private (so called Master) SMBus. The driver
    creates a simple binary sysfs-file to have an access to the EEPROM using
    the SMBus-slave interface in the i2c-device susfs-directory:
         /sys/bus/i2c/devices/<bus>-<devaddr>/eeprom
    In case if read-only flag is specified at dts-node of the device, User-space
    applications won't be able to write to the EEPROM sysfs-node.
    
      Additionally IDT 89HPESx SMBus interface has an ability to read/write
    values of device CSRs. This driver exposes debugfs-file to perform simple
    IO-operations using that ability for just basic debug purpose. Particularly
    the next file is created in the specific debugfs-directory:
         /sys/kernel/debug/idt_csr/
    Format of the debugfs-file value is:
         $ cat /sys/kernel/debug/idt_csr/<bus>-<devaddr>/<devname>;
         <CSR address>:<CSR value>
    So reading the content of the file gives current CSR address and it value.
    If User-space application wishes to change current CSR address, it can just
    write a proper value to the sysfs-file:
         $ echo "<CSR address>" >
             /sys/kernel/debug/idt_csr/<bus>-<devaddr>/<devname>
    If it wants to change the CSR value as well, the format of the write
    operation is:
         $ echo "<CSR address>:<CSR value>" > \
             /sys/kernel/debug/idt_csr/<bus>-<devaddr>/<devname>;
    CSR address and value can be any of hexadecimal, decimal or octal format.
    Signed-off-by: default avatarSerge Semin <fancer.lancer@gmail.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    cfad6425
idt_89hpesx.c 43.6 KB