drivers/i2c/tpm: Work around missing firmware_version in Ti50 < 0.0.15
Ti50 firmware versions below 0.0.15 don't support the firmware_version register and trying to access it causes I2C errors. Some nissa boards are still using Ti50 0.0.12, so add a workaround Kconfig to skip reading the firmware version and select it for nissa. The firmware version is only read to print it to the console, so it's fine to skip this. This workaround will be removed once all ODM stocks are updated to 0.0.15 or higher. A similar workaround Kconfig was added in CB:63011 then removed in CB:63158 which added support for separate handling of Cr50 and Ti50. But we actually still need this workaround until all Ti50 stocks are upgraded to 0.0.15 or higher. BUG=b:224650720 TEST=Boot to OS on nereid with Ti50 0.0.14 Change-Id: Ia30d44ac231c42eba3ffb1cb1e6d83bb6593f926 Signed-off-by: Reka Norman <rekanorman@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/64202 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
parent
6cb787b19a
commit
d88233ecd3
|
@ -191,6 +191,13 @@ enum cb_err cr50_get_firmware_version(struct cr50_firmware_version *version)
|
||||||
cr50_firmware_version.minor)
|
cr50_firmware_version.minor)
|
||||||
goto success;
|
goto success;
|
||||||
|
|
||||||
|
if (CONFIG(TI50_FIRMWARE_VERSION_NOT_SUPPORTED)) {
|
||||||
|
printk(BIOS_ERR, "Reading Ti50 firmware version is not supported\n");
|
||||||
|
if (version)
|
||||||
|
*version = cr50_firmware_version;
|
||||||
|
return CB_ERR;
|
||||||
|
}
|
||||||
|
|
||||||
int chunk_count = 0;
|
int chunk_count = 0;
|
||||||
size_t chunk_size = 50;
|
size_t chunk_size = 50;
|
||||||
char version_str[301];
|
char version_str[301];
|
||||||
|
|
|
@ -67,6 +67,7 @@ config BOARD_GOOGLE_BASEBOARD_NISSA
|
||||||
select SOC_INTEL_ALDERLAKE_PCH_N
|
select SOC_INTEL_ALDERLAKE_PCH_N
|
||||||
select SOC_INTEL_CSE_LITE_COMPRESS_ME_RW
|
select SOC_INTEL_CSE_LITE_COMPRESS_ME_RW
|
||||||
select SYSTEM_TYPE_LAPTOP
|
select SYSTEM_TYPE_LAPTOP
|
||||||
|
select TI50_FIRMWARE_VERSION_NOT_SUPPORTED
|
||||||
select TPM_GOOGLE_TI50
|
select TPM_GOOGLE_TI50
|
||||||
|
|
||||||
if BOARD_GOOGLE_BRYA_COMMON
|
if BOARD_GOOGLE_BRYA_COMMON
|
||||||
|
|
|
@ -30,4 +30,14 @@ config CR50_USE_LONG_INTERRUPT_PULSES
|
||||||
Whether to request longer interrupt pulses using Cr50 BOARD_CFG register.
|
Whether to request longer interrupt pulses using Cr50 BOARD_CFG register.
|
||||||
If the Cr50 firmware is too old, it will not be able to honor the request.
|
If the Cr50 firmware is too old, it will not be able to honor the request.
|
||||||
|
|
||||||
|
config TI50_FIRMWARE_VERSION_NOT_SUPPORTED
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Ti50 FW versions below 0.15 don't support the firmware_version register,
|
||||||
|
and trying to access it causes I2C errors. This config will skip accesses
|
||||||
|
to the register, and should be selected for boards using Ti50 chips with
|
||||||
|
FW < 0.0.15. The config will be removed once all Ti50 stocks are updated to
|
||||||
|
0.0.15 or higher.
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
Loading…
Reference in New Issue