Commit 3b8164f8 authored by Luben Tuikov's avatar Luben Tuikov Committed by Alex Deucher

drm/amdgpu: Decouple RAS EEPROM addresses from chips

Abstract RAS I2C EEPROM addresses from chip names, and set their macro
definition names to the address they set, not the chip they attach
to. Since most chips either use I2C EEPROM address 0 or 40000h for the RAS
table start offset, this leaves us with only two macro definitions as
opposed to five, and removes the redundancy of four.

Cc: Candice Li <candice.li@amd.com>
Cc: Tao Zhou <tao.zhou1@amd.com>
Cc: Alex Deucher <Alexander.Deucher@amd.com>
Signed-off-by: default avatarLuben Tuikov <luben.tuikov@amd.com>
Reviewed-by: default avatarKent Russell <kent.russell@amd.com>
Reviewed-by: default avatarAlex Deucher <Alexander.Deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent da858dea
...@@ -51,12 +51,11 @@ ...@@ -51,12 +51,11 @@
* Depending on the size of the I2C EEPROM device(s), bits 18:16 may * Depending on the size of the I2C EEPROM device(s), bits 18:16 may
* address memory in a device or a device on the I2C bus, depending on * address memory in a device or a device on the I2C bus, depending on
* the status of pins 1-3. See top of amdgpu_eeprom.c. * the status of pins 1-3. See top of amdgpu_eeprom.c.
*
* The RAS table lives either at address 0 or address 40000h of EEPROM.
*/ */
#define EEPROM_I2C_MADDR_VEGA20 0x0 #define EEPROM_I2C_MADDR_0 0x0
#define EEPROM_I2C_MADDR_ARCTURUS 0x40000 #define EEPROM_I2C_MADDR_4 0x40000
#define EEPROM_I2C_MADDR_ARCTURUS_D342 0x0
#define EEPROM_I2C_MADDR_SIENNA_CICHLID 0x0
#define EEPROM_I2C_MADDR_ALDEBARAN 0x0
/* /*
* The 2 macros bellow represent the actual size in bytes that * The 2 macros bellow represent the actual size in bytes that
...@@ -135,9 +134,9 @@ static bool __get_eeprom_i2c_addr_arct(struct amdgpu_device *adev, ...@@ -135,9 +134,9 @@ static bool __get_eeprom_i2c_addr_arct(struct amdgpu_device *adev,
if (strnstr(atom_ctx->vbios_version, if (strnstr(atom_ctx->vbios_version,
"D342", "D342",
sizeof(atom_ctx->vbios_version))) sizeof(atom_ctx->vbios_version)))
control->i2c_address = EEPROM_I2C_MADDR_ARCTURUS_D342; control->i2c_address = EEPROM_I2C_MADDR_0;
else else
control->i2c_address = EEPROM_I2C_MADDR_ARCTURUS; control->i2c_address = EEPROM_I2C_MADDR_4;
return true; return true;
} }
...@@ -148,7 +147,7 @@ static bool __get_eeprom_i2c_addr_ip_discovery(struct amdgpu_device *adev, ...@@ -148,7 +147,7 @@ static bool __get_eeprom_i2c_addr_ip_discovery(struct amdgpu_device *adev,
switch (adev->ip_versions[MP1_HWIP][0]) { switch (adev->ip_versions[MP1_HWIP][0]) {
case IP_VERSION(13, 0, 0): case IP_VERSION(13, 0, 0):
case IP_VERSION(13, 0, 10): case IP_VERSION(13, 0, 10):
control->i2c_address = EEPROM_I2C_MADDR_ARCTURUS; control->i2c_address = EEPROM_I2C_MADDR_4;
return true; return true;
default: default:
return false; return false;
...@@ -180,18 +179,18 @@ static bool __get_eeprom_i2c_addr(struct amdgpu_device *adev, ...@@ -180,18 +179,18 @@ static bool __get_eeprom_i2c_addr(struct amdgpu_device *adev,
switch (adev->asic_type) { switch (adev->asic_type) {
case CHIP_VEGA20: case CHIP_VEGA20:
control->i2c_address = EEPROM_I2C_MADDR_VEGA20; control->i2c_address = EEPROM_I2C_MADDR_0;
break; break;
case CHIP_ARCTURUS: case CHIP_ARCTURUS:
return __get_eeprom_i2c_addr_arct(adev, control); return __get_eeprom_i2c_addr_arct(adev, control);
case CHIP_SIENNA_CICHLID: case CHIP_SIENNA_CICHLID:
control->i2c_address = EEPROM_I2C_MADDR_SIENNA_CICHLID; control->i2c_address = EEPROM_I2C_MADDR_0;
break; break;
case CHIP_ALDEBARAN: case CHIP_ALDEBARAN:
control->i2c_address = EEPROM_I2C_MADDR_ALDEBARAN; control->i2c_address = EEPROM_I2C_MADDR_0;
break; break;
case CHIP_IP_DISCOVERY: case CHIP_IP_DISCOVERY:
...@@ -203,7 +202,7 @@ static bool __get_eeprom_i2c_addr(struct amdgpu_device *adev, ...@@ -203,7 +202,7 @@ static bool __get_eeprom_i2c_addr(struct amdgpu_device *adev,
switch (adev->ip_versions[MP1_HWIP][0]) { switch (adev->ip_versions[MP1_HWIP][0]) {
case IP_VERSION(13, 0, 0): case IP_VERSION(13, 0, 0):
control->i2c_address = EEPROM_I2C_MADDR_ARCTURUS; control->i2c_address = EEPROM_I2C_MADDR_4;
break; break;
default: default:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment