[PATCH 6/9] drm/amdgpu: add reset_method asic callback for navi

Kevin Wang kevwa at amd.com
Wed Jul 24 05:23:24 UTC 2019


Reviewed-by: Kevin Wang <kevin1.wang at amd.com>

On 7/24/19 1:00 PM, Alex Deucher wrote:
> Navi uses either mode1 or baco depending on various
> conditions.
>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/nv.c | 15 ++++++++++++++-
>   1 file changed, 14 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/nv.c b/drivers/gpu/drm/amd/amdgpu/nv.c
> index 6c59b64b9bb1..bf4cbcdeef78 100644
> --- a/drivers/gpu/drm/amd/amdgpu/nv.c
> +++ b/drivers/gpu/drm/amd/amdgpu/nv.c
> @@ -289,6 +289,18 @@ static int nv_asic_mode1_reset(struct amdgpu_device *adev)
>   
>   	return ret;
>   }
> +
> +static enum amd_reset_method
> +nv_asic_reset_method(struct amdgpu_device *adev)
> +{
> +	struct smu_context *smu = &adev->smu;
> +
> +	if (smu_baco_is_support(smu))
> +		return AMD_RESET_METHOD_BACO;
> +	else
> +		return AMD_RESET_METHOD_MODE1;
> +}
> +
>   static int nv_asic_reset(struct amdgpu_device *adev)
>   {
>   
> @@ -303,7 +315,7 @@ static int nv_asic_reset(struct amdgpu_device *adev)
>   	int ret = 0;
>   	struct smu_context *smu = &adev->smu;
>   
> -	if (smu_baco_is_support(smu))
> +	if (nv_asic_reset_method(adev) == AMD_RESET_METHOD_BACO)
>   		ret = smu_baco_reset(smu);
>   	else
>   		ret = nv_asic_mode1_reset(adev);
> @@ -500,6 +512,7 @@ static const struct amdgpu_asic_funcs nv_asic_funcs =
>   	.read_bios_from_rom = &nv_read_bios_from_rom,
>   	.read_register = &nv_read_register,
>   	.reset = &nv_asic_reset,
> +	.reset_method = &nv_asic_reset_method,
>   	.set_vga_state = &nv_vga_set_state,
>   	.get_xclk = &nv_get_xclk,
>   	.set_uvd_clocks = &nv_set_uvd_clocks,


More information about the amd-gfx mailing list