]> www.infradead.org Git - users/jedix/linux-maple.git/commit
hwmon: (spd5118) Add support for Renesas/ITD SPD5118 hub controllers
authorGuenter Roeck <linux@roeck-us.net>
Fri, 14 Jun 2024 15:27:21 +0000 (08:27 -0700)
committerGuenter Roeck <linux@roeck-us.net>
Wed, 19 Jun 2024 03:07:42 +0000 (20:07 -0700)
commit1226a1b2e5611d17aae55a01ad9d6883879feab4
tree96e00734a4471943ed94e499104deae9337a5b20
parent27972a41423291b0ca438fc3f0b104429bf270f2
hwmon: (spd5118) Add support for Renesas/ITD SPD5118 hub controllers

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: Armin Wolf <W_Armin@gmx.de>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/spd5118.c