• Guenter Roeck's avatar
    hwmon: (spd5118) Add support for Renesas/ITD SPD5118 hub controllers · 1226a1b2
    Guenter Roeck authored
    The SPD5118 specification says, in its documentation of the page bits
    in the MR11 register:
    
    "
    This register only applies to non-volatile memory (1024) Bytes) access of
    SPD5 Hub device.
    For volatile memory access, this register must be programmed to '000'.
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    "
    
    Renesas/ITD SPD5118 hub controllers take this literally and disable access
    to volatile memory if the page selected in MR11 is != 0. Since the BIOS or
    ROMMON will access the non-volatile memory and likely select a page != 0,
    this means that the driver will not instantiate since it can not identify
    the chip. Even if the driver instantiates, access to volatile registers
    is blocked after a nvram read operation which selects a page other than 0.
    
    To solve the problem, add initialization code to select page 0 during
    probe. Before doing that, use basic validation to ensure that this is
    really a SPD5118 device and not some random EEPROM.
    
    Cc: Sasha Kozachuk <skozachuk@google.com>
    Cc: John Hamrick <johnham@google.com>
    Cc: Chris Sarra <chrissarra@google.com>
    Tested-by: default avatarArmin Wolf <W_Armin@gmx.de>
    Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
    1226a1b2
spd5118.c 17.1 KB