Re: [PATCH 3/3] drm/amdgpu/discovery: optionally use fw based ip discovery

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 3/14/2025 3:24 PM, Flora Cui wrote:
> From: Alex Deucher <alexander.deucher@xxxxxxx>
> 
> On chips without native IP discovery support, use the fw binary
> if available, otherwise we can continue without it.
> 
> Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 38 +++++++++++++++----
>  1 file changed, 30 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
> index fff438baf64b..cf286fde18d5 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
> @@ -2536,6 +2536,36 @@ int amdgpu_discovery_set_ip_blocks(struct amdgpu_device *adev)
>  {
>  	int r;
>  
> +	switch (adev->asic_type) {
> +	case CHIP_VEGA10:
> +	case CHIP_VEGA12:
> +	case CHIP_RAVEN:
> +	case CHIP_VEGA20:
> +	case CHIP_ARCTURUS:
> +	case CHIP_ALDEBARAN:
> +		/* this is not fatal.  We have a fallback below
> +		 * if the new firmwares are not present.
> +		 */
> +		r = amdgpu_discovery_reg_base_init(adev);
> +		if (!r) {
> +			amdgpu_discovery_harvest_ip(adev);
> +			amdgpu_discovery_get_gfx_info(adev);
> +			amdgpu_discovery_get_mall_info(adev);
> +			amdgpu_discovery_get_vcn_info(adev);
> +		}
> +		break;
> +	default:
> +		r = amdgpu_discovery_reg_base_init(adev);
> +		if (r)
> +			return -EINVAL;
> +
> +		amdgpu_discovery_harvest_ip(adev);
> +		amdgpu_discovery_get_gfx_info(adev);
> +		amdgpu_discovery_get_mall_info(adev);
> +		amdgpu_discovery_get_vcn_info(adev);
> +		break;
> +	}
> +
>  	switch (adev->asic_type) {

Looks like this fallback gets executed regardless of the
presence/absence of new firmware.

Thanks,
Lijo

>  	case CHIP_VEGA10:
>  		vega10_reg_base_init(adev);
> @@ -2700,14 +2730,6 @@ int amdgpu_discovery_set_ip_blocks(struct amdgpu_device *adev)
>  		adev->ip_versions[XGMI_HWIP][0] = IP_VERSION(6, 1, 0);
>  		break;
>  	default:
> -		r = amdgpu_discovery_reg_base_init(adev);
> -		if (r)
> -			return -EINVAL;
> -
> -		amdgpu_discovery_harvest_ip(adev);
> -		amdgpu_discovery_get_gfx_info(adev);
> -		amdgpu_discovery_get_mall_info(adev);
> -		amdgpu_discovery_get_vcn_info(adev);
>  		break;
>  	}
>  




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux