Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp858436pxb; Thu, 15 Apr 2021 08:12:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyBI0cCsn8GLHO16291pteRlz2I9LW7DxKqPJzD3vxFybZtakyAAJlYXMwPCCCxCf6NXoJR X-Received: by 2002:a65:6a0d:: with SMTP id m13mr4008777pgu.43.1618499550106; Thu, 15 Apr 2021 08:12:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618499550; cv=none; d=google.com; s=arc-20160816; b=r4V6dUkn1F2xo396tKJjH/hb+nZvhsoLToabgYLs/N8XJMB3R1Lh4om/nyH37SYdSM 3UpA64Ufxp2cdszCIVXqXrH+sdrFC632/pL0EhzafiJeifZwO8VM/vb6MzEvW4IgioqG JYW9jeDb637rkDlgWKGO6LA3dbwpBYAps8nZd14p6i0xUZ9cNaGtn6pXrw2PvBqR2hT9 xLcr5IJrMv/pHvi1SfXXbPnU1MpWWHxnoKhws+XRFazcWPegFe6kCr0gedUBrknqhJQZ 1KA+jYcQ9BDsTvU1gar6aCQh34k7p4XOfUn4CChXiGVVfBbBd0qI/Fjy1IxKhTRx/uVZ kOCA== 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=GSgZ6V8OtBgH6xPVi9T+/q1lXMKhnwCaDz5oo/WYpgs=; b=kxriTCjkwRVcuaz9ogwMACA9Zdqg4/oKIB5NV1rDheC59wbBINP8lpvjSCWl/NRAsk EqwKoFOFrEZyflP+QX2EBXakWWaZ+n/kUXwR2JjyFgwjsNw34eQ51pnS+KN/yw3MnofE U+DNvgLrMfRdRbN83Tw9YGCYXwC927usHcyYHDd19gHA34EIuNkT4qzm67JfZ7eyn71s C0sjitP6W/zNeMh0l/yW8C1zJuaYxWDGrSIqepnSOVTmiOSqPsfZ0l7YvPT3fQckf4dZ 6el3j5Avgd2JmWsYXNT/FbOJoBKqbI7d19NNbNjhnCvj6onfGzY6awJnVLZSHyZV32Os pxjQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=QEbIGlg8; 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 y21si3359267pjp.129.2021.04.15.08.12.17; Thu, 15 Apr 2021 08:12:30 -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=QEbIGlg8; 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 S234313AbhDOPJu (ORCPT + 99 others); Thu, 15 Apr 2021 11:09:50 -0400 Received: from mail.kernel.org ([198.145.29.99]:46150 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235171AbhDOPA0 (ORCPT ); Thu, 15 Apr 2021 11:00:26 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 1951C6044F; Thu, 15 Apr 2021 14:56:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1618498592; bh=TXztknuaVtG48pbylDS46y44Jtupw/59hlWRCyx51hY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QEbIGlg80nPXihYPNsIy7nkcemYyxXZWkAS0v9vbfhPexR507gx5Gn/GwwOkFDyKX JF1icvqURHGUq9J0z/CuI+99gmJ42frpzfv7rLvQO1z/a1SfnWoX/i15y5BAAWola8 U3ZFnVGzViJJrSaAdYxySkxor/6tinJp2MZXRIVE= 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.4 06/18] drm/tegra: dc: Dont set PLL clock to 0Hz Date: Thu, 15 Apr 2021 16:47:59 +0200 Message-Id: <20210415144413.254896444@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210415144413.055232956@linuxfoundation.org> References: <20210415144413.055232956@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 fbf57bc3cdab..617cbe468aec 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c @@ -1667,6 +1667,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), @@ -1677,11 +1682,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