diff options
| author | Alex Deucher <alexander.deucher@amd.com> | 2023-03-27 20:09:08 -0400 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2023-04-13 00:13:23 -0400 | 
| commit | 6246059a19d4cd32ef1af42a6ab016b779cd68c4 (patch) | |
| tree | 40078420a030b4f86df18a3012294710e7ccfdaa /drivers/gpu/drm/amd | |
| parent | 27488686cb1835f1c69d3efb0eedeb411f675d73 (diff) | |
drm/amdgpu: simplify amdgpu_ras_eeprom.c
All chips that support RAS also support IP discovery, so
use the IP versions rather than a mix of IP versions and
asic types.  Checking the validity of the atom_ctx pointer
is not required as the vbios is already fetched at this
point.
v2: add comments to id asic types based on feedback from Luben
Reviewed-by: Luben Tuikov <luben.tuikov@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: Luben Tuikov <luben.tuikov@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c | 72 | 
1 files changed, 20 insertions, 52 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c index 3106fa8a15ef..c2c2a7718613 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c @@ -107,47 +107,12 @@  static bool __is_ras_eeprom_supported(struct amdgpu_device *adev)  { -	if (adev->asic_type == CHIP_IP_DISCOVERY) { -		switch (adev->ip_versions[MP1_HWIP][0]) { -		case IP_VERSION(13, 0, 0): -		case IP_VERSION(13, 0, 10): -			return true; -		default: -			return false; -		} -	} - -	return  adev->asic_type == CHIP_VEGA20 || -		adev->asic_type == CHIP_ARCTURUS || -		adev->asic_type == CHIP_SIENNA_CICHLID || -		adev->asic_type == CHIP_ALDEBARAN; -} - -static bool __get_eeprom_i2c_addr_arct(struct amdgpu_device *adev, -				       struct amdgpu_ras_eeprom_control *control) -{ -	struct atom_context *atom_ctx = adev->mode_info.atom_context; - -	if (!control || !atom_ctx) -		return false; - -	if (strnstr(atom_ctx->vbios_version, -	            "D342", -		    sizeof(atom_ctx->vbios_version))) -		control->i2c_address = EEPROM_I2C_MADDR_0; -	else -		control->i2c_address = EEPROM_I2C_MADDR_4; - -	return true; -} - -static bool __get_eeprom_i2c_addr_ip_discovery(struct amdgpu_device *adev, -				       struct amdgpu_ras_eeprom_control *control) -{  	switch (adev->ip_versions[MP1_HWIP][0]) { +	case IP_VERSION(11, 0, 2): /* VEGA20 and ARCTURUS */ +	case IP_VERSION(11, 0, 7): /* Sienna cichlid */  	case IP_VERSION(13, 0, 0): +	case IP_VERSION(13, 0, 2): /* Aldebaran */  	case IP_VERSION(13, 0, 10): -		control->i2c_address = EEPROM_I2C_MADDR_4;  		return true;  	default:  		return false; @@ -178,29 +143,32 @@ static bool __get_eeprom_i2c_addr(struct amdgpu_device *adev,  		return true;  	} -	switch (adev->asic_type) { -	case CHIP_VEGA20: -		control->i2c_address = EEPROM_I2C_MADDR_0; +	switch (adev->ip_versions[MP1_HWIP][0]) { +	case IP_VERSION(11, 0, 2): +		/* VEGA20 and ARCTURUS */ +		if (adev->asic_type == CHIP_VEGA20) +			control->i2c_address = EEPROM_I2C_MADDR_0; +		else if (strnstr(atom_ctx->vbios_version, +				 "D342", +				 sizeof(atom_ctx->vbios_version))) +			control->i2c_address = EEPROM_I2C_MADDR_0; +		else +			control->i2c_address = EEPROM_I2C_MADDR_4;  		return true; - -	case CHIP_ARCTURUS: -		return __get_eeprom_i2c_addr_arct(adev, control); - -	case CHIP_SIENNA_CICHLID: +	case IP_VERSION(11, 0, 7):  		control->i2c_address = EEPROM_I2C_MADDR_0;  		return true; - -	case CHIP_ALDEBARAN: +	case IP_VERSION(13, 0, 2):  		if (strnstr(atom_ctx->vbios_version, "D673",  			    sizeof(atom_ctx->vbios_version)))  			control->i2c_address = EEPROM_I2C_MADDR_4;  		else  			control->i2c_address = EEPROM_I2C_MADDR_0;  		return true; - -	case CHIP_IP_DISCOVERY: -		return __get_eeprom_i2c_addr_ip_discovery(adev, control); - +	case IP_VERSION(13, 0, 0): +	case IP_VERSION(13, 0, 10): +		control->i2c_address = EEPROM_I2C_MADDR_4; +		return true;  	default:  		return false;  	}  | 
