On Wed, Aug 25, 2021 at 2:32 PM Luben Tuikov <luben.tuikov@xxxxxxx> wrote: > > We can now process any RAS EEPROM address from > VBIOS. Generalize so as to compute the top three > bits of the 19-bit EEPROM address, from any byte > returned as the "i2c address" from VBIOS. > > Cc: John Clements <john.clements@xxxxxxx> > Cc: Hawking Zhang <Hawking.Zhang@xxxxxxx> > Cc: Alex Deucher <Alexander.Deucher@xxxxxxx> > Signed-off-by: Luben Tuikov <luben.tuikov@xxxxxxx> Series is: Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > .../gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c | 25 ++++++++++--------- > 1 file changed, 13 insertions(+), 12 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c > index 194590252bb952..dc44c946a2442a 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c > @@ -114,21 +114,22 @@ static bool __get_eeprom_i2c_addr_arct(struct amdgpu_device *adev, > static bool __get_eeprom_i2c_addr(struct amdgpu_device *adev, > struct amdgpu_ras_eeprom_control *control) > { > + u8 i2c_addr; > + > if (!control) > return false; > > - control->i2c_address = 0; > - > - if (amdgpu_atomfirmware_ras_rom_addr(adev, (uint8_t*)&control->i2c_address)) > - { > - if (control->i2c_address == 0xA0) > - control->i2c_address = 0; > - else if (control->i2c_address == 0xA8) > - control->i2c_address = 0x40000; > - else { > - dev_warn(adev->dev, "RAS EEPROM I2C address not supported"); > - return false; > - } > + if (amdgpu_atomfirmware_ras_rom_addr(adev, &i2c_addr)) { > + /* The address given by VBIOS is an 8-bit, wire-format > + * address, i.e. the most significant byte. > + * > + * Normalize it to a 19-bit EEPROM address. Remove the > + * device type identifier and make it a 7-bit address; > + * then make it a 19-bit EEPROM address. See top of > + * amdgpu_eeprom.c. > + */ > + i2c_addr = (i2c_addr & 0x0F) >> 1; > + control->i2c_address = ((u32) i2c_addr) << 16; > > return true; > } > -- > 2.32.0 >