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));
 };