Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu: EEPROM: add explicit read and write

Add explicit amdgpu_eeprom_read() and
amdgpu_eeprom_write() for clarity.

Cc: Jean Delvare <jdelvare@suse.de>
Cc: Alexander Deucher <Alexander.Deucher@amd.com>
Cc: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
Cc: Lijo Lazar <Lijo.Lazar@amd.com>
Cc: Stanley Yang <Stanley.Yang@amd.com>
Cc: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Luben Tuikov <luben.tuikov@amd.com>
Acked-by: Alexander Deucher <Alexander.Deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Luben Tuikov and committed by
Alex Deucher
16ef7977 1fab841f

+23 -8
+16
drivers/gpu/drm/amd/amdgpu/amdgpu_eeprom.h
··· 29 29 int amdgpu_eeprom_xfer(struct i2c_adapter *i2c_adap, u32 eeprom_addr, 30 30 u8 *eeprom_buf, u16 bytes, bool read); 31 31 32 + static inline int amdgpu_eeprom_read(struct i2c_adapter *i2c_adap, 33 + u32 eeprom_addr, u8 *eeprom_buf, 34 + u16 bytes) 35 + { 36 + return amdgpu_eeprom_xfer(i2c_adap, eeprom_addr, eeprom_buf, bytes, 37 + true); 38 + } 39 + 40 + static inline int amdgpu_eeprom_write(struct i2c_adapter *i2c_adap, 41 + u32 eeprom_addr, u8 *eeprom_buf, 42 + u16 bytes) 43 + { 44 + return amdgpu_eeprom_xfer(i2c_adap, eeprom_addr, eeprom_buf, bytes, 45 + false); 46 + } 47 + 32 48 #endif
+2 -3
drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c
··· 66 66 { 67 67 int ret, size; 68 68 69 - ret = amdgpu_eeprom_xfer(&adev->pm.smu_i2c, addrptr, buff, 1, true); 69 + ret = amdgpu_eeprom_read(&adev->pm.smu_i2c, addrptr, buff, 1); 70 70 if (ret < 1) { 71 71 DRM_WARN("FRU: Failed to get size field"); 72 72 return ret; ··· 77 77 */ 78 78 size = buff[0] - I2C_PRODUCT_INFO_OFFSET; 79 79 80 - ret = amdgpu_eeprom_xfer(&adev->pm.smu_i2c, addrptr + 1, buff, size, 81 - true); 80 + ret = amdgpu_eeprom_read(&adev->pm.smu_i2c, addrptr + 1, buff, size); 82 81 if (ret < 1) { 83 82 DRM_WARN("FRU: Failed to get data field"); 84 83 return ret;
+5 -5
drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c
··· 151 151 152 152 /* i2c may be unstable in gpu reset */ 153 153 down_read(&adev->reset_sem); 154 - ret = amdgpu_eeprom_xfer(&adev->pm.smu_i2c, 155 - control->i2c_address + RAS_HDR_START, 156 - buff, RAS_TABLE_HEADER_SIZE, false); 154 + ret = amdgpu_eeprom_write(&adev->pm.smu_i2c, 155 + control->i2c_address + RAS_HDR_START, 156 + buff, RAS_TABLE_HEADER_SIZE); 157 157 up_read(&adev->reset_sem); 158 158 159 159 if (ret < 1) ··· 298 298 mutex_init(&control->tbl_mutex); 299 299 300 300 /* Read/Create table header from EEPROM address 0 */ 301 - ret = amdgpu_eeprom_xfer(&adev->pm.smu_i2c, 301 + ret = amdgpu_eeprom_read(&adev->pm.smu_i2c, 302 302 control->i2c_address + RAS_HDR_START, 303 - buff, RAS_TABLE_HEADER_SIZE, true); 303 + buff, RAS_TABLE_HEADER_SIZE); 304 304 if (ret < 1) { 305 305 DRM_ERROR("Failed to read EEPROM table header, ret:%d", ret); 306 306 return ret;