[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