[PATCH] amd/dc/dce100: On dce100, set clocks to 0 on suspend

Harry Wentland harry.wentland at amd.com
Thu Jul 12 14:13:47 UTC 2018


On 2018-07-12 10:07 AM, David Francis wrote:
> [Why]
> When a dce100 asic was suspended, the clocks were not set to 0.
> Upon resume, the new clock was compared to the existing clock,
> they were found to be the same, and so the clock was not set.
> This resulted in a pernicious blackscreen.
> 
> [How]
> In atomic commit, check to see if there are any active pipes.
> If no, set clocks to 0
> 

Please add Fixes: tag with link to freedesktop bugzilla bug that this fixes.

I believe the issue is older than 4.18. Can you confirm? If so, please add

Cc: stable at vger.kernel.org

Harry

> Signed-off-by: David Francis <David.Francis at amd.com>
> ---
>  .../amd/display/dc/dce100/dce100_resource.c   | 19 ++++++++++++++++---
>  1 file changed, 16 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c b/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
> index 8ed8eace42be..ad8ad4e1437c 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
> @@ -678,9 +678,22 @@ bool dce100_validate_bandwidth(
>  	struct dc  *dc,
>  	struct dc_state *context)
>  {
> -	/* TODO implement when needed but for now hardcode max value*/
> -	context->bw.dce.dispclk_khz = 681000;
> -	context->bw.dce.yclk_khz = 250000 * MEMORY_TYPE_MULTIPLIER;
> +	int i;
> +	bool at_least_one_pipe = false;
> +
> +	for (i = 0; i < dc->res_pool->pipe_count; i++) {
> +		if (context->res_ctx.pipe_ctx[i].stream)
> +			at_least_one_pipe = true;
> +	}
> +
> +	if (at_least_one_pipe) {
> +		/* TODO implement when needed but for now hardcode max value*/
> +		context->bw.dce.dispclk_khz = 681000;
> +		context->bw.dce.yclk_khz = 250000 * MEMORY_TYPE_MULTIPLIER;
> +	} else {
> +		context->bw.dce.dispclk_khz = 0;
> +		context->bw.dce.yclk_khz = 0;
> +	}
>  
>  	return true;
>  }
> 


More information about the amd-gfx mailing list