i2c: Add i2c block transaction support
The previous code always uses SMBus block read/write.
On some PSU (e.g. FP5280G2's PSU) the I2C block read/write is
required, so add that support.
Specifically, add a Mode enum class and add the parameter for block
read/write to indicate whether SMBus or I2C block read/write is to be
called.
Tested: Verify the code works on FP5280G2 with I2C block write.
Note: Currently there is no case for I2C block read, so that function is
not tested.
Signed-off-by: Lei YU <mine260309@gmail.com>
Change-Id: I5f77ffe6900d14f3703dae7241799a7b37c5a726
diff --git a/tools/i2c/test/mocked_i2c_interface.hpp b/tools/i2c/test/mocked_i2c_interface.hpp
index feb8f74..5bb0a3a 100644
--- a/tools/i2c/test/mocked_i2c_interface.hpp
+++ b/tools/i2c/test/mocked_i2c_interface.hpp
@@ -15,13 +15,15 @@
MOCK_METHOD(void, read, (uint8_t & data), (override));
MOCK_METHOD(void, read, (uint8_t addr, uint8_t& data), (override));
MOCK_METHOD(void, read, (uint8_t addr, uint16_t& data), (override));
- MOCK_METHOD(void, read, (uint8_t addr, uint8_t& size, uint8_t* data),
+ MOCK_METHOD(void, read,
+ (uint8_t addr, uint8_t& size, uint8_t* data, Mode mode),
(override));
MOCK_METHOD(void, write, (uint8_t data), (override));
MOCK_METHOD(void, write, (uint8_t addr, uint8_t data), (override));
MOCK_METHOD(void, write, (uint8_t addr, uint16_t data), (override));
- MOCK_METHOD(void, write, (uint8_t addr, uint8_t size, const uint8_t* data),
+ MOCK_METHOD(void, write,
+ (uint8_t addr, uint8_t size, const uint8_t* data, Mode mode),
(override));
};