Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp862489pxb; Thu, 15 Apr 2021 08:17:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyu+wAgByH2imz7tH5D6lIx99KgSHCZxt+nX8qQmyioXrs0dKIU1Yl0DqvecDuMcc1L3kI0 X-Received: by 2002:a63:8c4a:: with SMTP id q10mr3953943pgn.106.1618499836268; Thu, 15 Apr 2021 08:17:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618499836; cv=none; d=google.com; s=arc-20160816; b=rTEZtNqo8L4rw2OEuct+/ShmcPtFZKqGAtn4agLF29lEICLE9EYqju/VSn6AQBRItQ rfMvAHRYxQ2KSJ+mDC0Ag0Nhtsw1sIg4z3uhuXGOqNNd2wtzsEU0sEVfpIn0w7kIbR4s P7XIT/WAKFgYcG30lwtZH37RfEMDcArTN9L2TF78LHXgYO2FfPLWX9Yot2sVPJulMGni nqVEiDioTWMHfCrpsKvPDsA+fT920Htu7pEGS4WRzlwReQkqMdP5hN/X92DuMaxHFC+i pG88Mebq3pEsQQi9/IoXqJmSiGgw0RlxkaH+ywfJjwkEYenkfEBWlDtjLnRcOIGwhZET dYpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=OX43uf1lYhKBWJCsaB8Vf7fRzeFTA1J6gVpDPlCbd/g=; b=Av+K9Rb5emtSfZlQ5fVMAxr6nrWnd2K7uPqDA3p02QlDnKBeqWi1DDrsNz9CMRaBHS D6EzvACNp4vzH+sxcosx1ybhmGuDsM7a6aiQOXc6RSdQTrjA5HyUx47h4eiirPkqBx4G 3RvM8vupFr8HcwRrzfvUg9TWM0dKvxrnUvy/LH5qttaYyWeQW2w71e1twpkYF8d8cv28 UNCO/xX9osjPDG9deSYKPy3meCZR4R0RuhY0Tvift32WW7zdZny4VTfV4wLJtiru59JN XLcPX7vvOFxmqO4wgkTzGvPMnppAvaDWnciBorVS/Ivq4/sYbJsFfQsewOsqbnXOH79N thfg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=YasPwc8v; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bd8si3542603plb.157.2021.04.15.08.17.04; Thu, 15 Apr 2021 08:17:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=YasPwc8v; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235331AbhDOPOJ (ORCPT + 99 others); Thu, 15 Apr 2021 11:14:09 -0400 Received: from mail.kernel.org ([198.145.29.99]:48874 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234351AbhDOPDH (ORCPT ); Thu, 15 Apr 2021 11:03:07 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 9F1E061427; Thu, 15 Apr 2021 14:58:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1618498683; bh=lZ+6tZ0WD6uLmynFhUFnXuXQcGjNbd7zoLbJfUlbGqw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YasPwc8vokfv5URGY7XHoRG02zbI007PDk8vghZP8cNzwTtFemdavAYu+5ZZ6G0KC W3Y+7ixSuXS8MdVMk8HOFgAVJsAK94PwCBP5q39b0fjsAK66IGRlCtFl79wB98qUt+ adrcJoAM3PuQpPvtpPUbCbmQp/9TJlCtcwXRNUUQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Dmitry Osipenko , Thierry Reding , Sasha Levin Subject: [PATCH 5.10 09/25] drm/tegra: dc: Dont set PLL clock to 0Hz Date: Thu, 15 Apr 2021 16:48:03 +0200 Message-Id: <20210415144413.462797391@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210415144413.165663182@linuxfoundation.org> References: <20210415144413.165663182@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Dmitry Osipenko [ Upstream commit f8fb97c915954fc6de6513cdf277103b5c6df7b3 ] RGB output doesn't allow to change parent clock rate of the display and PCLK rate is set to 0Hz in this case. The tegra_dc_commit_state() shall not set the display clock to 0Hz since this change propagates to the parent clock. The DISP clock is defined as a NODIV clock by the tegra-clk driver and all NODIV clocks use the CLK_SET_RATE_PARENT flag. This bug stayed unnoticed because by default PLLP is used as the parent clock for the display controller and PLLP silently skips the erroneous 0Hz rate changes because it always has active child clocks that don't permit rate changes. The PLLP isn't acceptable for some devices that we want to upstream (like Samsung Galaxy Tab and ASUS TF700T) due to a display panel clock rate requirements that can't be fulfilled by using PLLP and then the bug pops up in this case since parent clock is set to 0Hz, killing the display output. Don't touch DC clock if pclk=0 in order to fix the problem. Signed-off-by: Dmitry Osipenko Signed-off-by: Thierry Reding Signed-off-by: Sasha Levin --- drivers/gpu/drm/tegra/dc.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c index 3a244ef7f30f..3aa9a7406085 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c @@ -1688,6 +1688,11 @@ static void tegra_dc_commit_state(struct tegra_dc *dc, dev_err(dc->dev, "failed to set clock rate to %lu Hz\n", state->pclk); + + err = clk_set_rate(dc->clk, state->pclk); + if (err < 0) + dev_err(dc->dev, "failed to set clock %pC to %lu Hz: %d\n", + dc->clk, state->pclk, err); } DRM_DEBUG_KMS("rate: %lu, div: %u\n", clk_get_rate(dc->clk), @@ -1698,11 +1703,6 @@ static void tegra_dc_commit_state(struct tegra_dc *dc, value = SHIFT_CLK_DIVIDER(state->div) | PIXEL_CLK_DIVIDER_PCD1; tegra_dc_writel(dc, value, DC_DISP_DISP_CLOCK_CONTROL); } - - err = clk_set_rate(dc->clk, state->pclk); - if (err < 0) - dev_err(dc->dev, "failed to set clock %pC to %lu Hz: %d\n", - dc->clk, state->pclk, err); } static void tegra_dc_stop(struct tegra_dc *dc) -- 2.30.2