diff --git a/src/soc/qualcomm/common/include/soc/qcom_spmi.h b/src/soc/qualcomm/common/include/soc/qcom_spmi.h index 2c0d9416ab..65d2e17bba 100644 --- a/src/soc/qualcomm/common/include/soc/qcom_spmi.h +++ b/src/soc/qualcomm/common/include/soc/qcom_spmi.h @@ -11,5 +11,6 @@ int spmi_read8(uint32_t addr); int spmi_write8(uint32_t addr, uint8_t data); +int spmi_read_bytes(uint32_t addr, uint8_t *data, uint32_t num_bytes); #endif // __SOC_QCOM_SPMI_H__ diff --git a/src/soc/qualcomm/common/spmi.c b/src/soc/qualcomm/common/spmi.c index 51a37058b0..2409cbbf23 100644 --- a/src/soc/qualcomm/common/spmi.c +++ b/src/soc/qualcomm/common/spmi.c @@ -125,3 +125,19 @@ int spmi_write8(uint32_t addr, uint8_t data) return ret; } + +int spmi_read_bytes(uint32_t addr, uint8_t *data, uint32_t num_bytes) +{ + int spmi_result; + if (!data) + return -1; + + for (uint32_t i = 0; i < num_bytes; i++) { + spmi_result = spmi_read8(addr + i); + if (spmi_result < 0) + return -1; + *data = spmi_result & 0xff; + data++; + } + return 0; +}