The RV3028-C7 driver currently uses i2c_dev_read_at() and
i2c_dev_write_at() for block transfers when accessing RTC registers.
These block transfer functions are not universally supported across all
I2C/SMBus controller implementations in coreboot.
Specifically, the Intel i801 SMBus controller does not implement block
read/write operations, causing the RV3028-C7 driver to fail on platforms
using this controller due to missing transfer ops.
Replace block transfers with byte-by-byte operations
i2c_dev_readb_at() and i2c_dev_writeb_at(). These functions are
supported by i801.
TEST=Verified new SMBus functionality on mc_ehl8 (i801 controller).
Verified I2C functionality still works on mc_ehl2.
Used i2ctools from OS to read out registers 0x00-0x06 and confirmed
values match date/time set in coreboot.
Change-Id: I8a40ae14e62e3acf7c3904a8654c1d58fe4eb813
Signed-off-by: Kilian Krause <kilian.krause@siemens.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/91199
Reviewed-by: Mario Scheithauer <mario.scheithauer@siemens.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
|
||
|---|---|---|
| .. | ||
| at24rf08c | ||
| ck505 | ||
| cs35l53 | ||
| cs42l42 | ||
| da7219 | ||
| designware | ||
| generic | ||
| gpiomux | ||
| hid | ||
| lm96000 | ||
| max98373 | ||
| max98390 | ||
| max98396 | ||
| max98927 | ||
| nau8825 | ||
| nct7802y | ||
| pca9538 | ||
| pcf8523 | ||
| pi608gp | ||
| ptn3460 | ||
| rt1011 | ||
| rt5645 | ||
| rt5663 | ||
| rtd2132 | ||
| rv3028c7 | ||
| rx6110sa | ||
| sx9310 | ||
| sx9324 | ||
| sx9360 | ||
| tas2563 | ||
| tas5825m | ||
| tpm | ||
| ww_ring | ||