From: Alex Deucher <[email protected]>

Use the new helper rather than doing i2c transfers directly.

v2: fix typo

Signed-off-by: Alex Deucher <[email protected]>
Reviewed-by: Luben Tuikov <[email protected]>
---
 .../gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c    | 22 +++++--------------
 1 file changed, 6 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c
index 39b6c6bfab4533..224da573ba1b59 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c
@@ -27,9 +27,9 @@
 #include "smu_v11_0_i2c.h"
 #include "atom.h"
 #include "amdgpu_fru_eeprom.h"
+#include "amdgpu_eeprom.h"
 
 #define I2C_PRODUCT_INFO_ADDR          0xAC
-#define I2C_PRODUCT_INFO_ADDR_SIZE     0x2
 #define I2C_PRODUCT_INFO_OFFSET                0xC0
 
 static bool is_fru_eeprom_supported(struct amdgpu_device *adev)
@@ -65,16 +65,9 @@ static int amdgpu_fru_read_eeprom(struct amdgpu_device 
*adev, uint32_t addrptr,
                           unsigned char *buff)
 {
        int ret, size;
-       struct i2c_msg msg = {
-                       .addr   = I2C_PRODUCT_INFO_ADDR,
-                       .flags  = I2C_M_RD,
-                       .buf    = buff,
-       };
-       buff[0] = 0;
-       buff[1] = addrptr;
-       msg.len = I2C_PRODUCT_INFO_ADDR_SIZE + 1;
-       ret = i2c_transfer(&adev->pm.smu_i2c, &msg, 1);
 
+       ret = amdgpu_eeprom_xfer(&adev->pm.smu_i2c, I2C_PRODUCT_INFO_ADDR,
+                                addrptr, buff, 1, true);
        if (ret < 1) {
                DRM_WARN("FRU: Failed to get size field");
                return ret;
@@ -83,13 +76,10 @@ static int amdgpu_fru_read_eeprom(struct amdgpu_device 
*adev, uint32_t addrptr,
        /* The size returned by the i2c requires subtraction of 0xC0 since the
         * size apparently always reports as 0xC0+actual size.
         */
-       size = buff[2] - I2C_PRODUCT_INFO_OFFSET;
-       /* Add 1 since address field was 1 byte */
-       buff[1] = addrptr + 1;
-
-       msg.len = I2C_PRODUCT_INFO_ADDR_SIZE + size;
-       ret = i2c_transfer(&adev->pm.smu_i2c, &msg, 1);
+       size = buff[0] - I2C_PRODUCT_INFO_OFFSET;
 
+       ret = amdgpu_eeprom_xfer(&adev->pm.smu_i2c, I2C_PRODUCT_INFO_ADDR,
+                                addrptr + 1, buff, size, true);
        if (ret < 1) {
                DRM_WARN("FRU: Failed to get data field");
                return ret;
-- 
2.32.0

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to