From patchwork Fri Sep 26 20:06:11 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Paul X-Patchwork-Id: 393947 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 0A851140188 for ; Sat, 27 Sep 2014 06:06:39 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755930AbaIZUGc (ORCPT ); Fri, 26 Sep 2014 16:06:32 -0400 Received: from mail-yk0-f173.google.com ([209.85.160.173]:36782 "EHLO mail-yk0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755431AbaIZUG3 (ORCPT ); Fri, 26 Sep 2014 16:06:29 -0400 Received: by mail-yk0-f173.google.com with SMTP id 131so551347ykp.32 for ; Fri, 26 Sep 2014 13:06:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id; bh=sdafDTWNtR4LydvxfZURIYJyIj5OXovZhc/mdgv5Fj8=; b=jB3CpO3icO7ECLR4BaQzakghpjPX/8LLUX4J40WnMleAYrJOC9wme7pSQN938fCdWY Et66vQmfABuHuYRkva3UTqz2W0hkUqXqRgG2JLNihO0UTiiRXl4dfs2NQMjgxA2iT2KS qEvdUo6TmcMR7OQxu/fBCSgAkBBK0OLrKqLPI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=sdafDTWNtR4LydvxfZURIYJyIj5OXovZhc/mdgv5Fj8=; b=Acdh7GBqhSRtbVKnXUcYZJPIwlTD2rty7OuJjWIQTpRWn+8QNcTkBhvSTqajc0O3Qa 4aAjtsE43ZwJMmphTYrw/b4/oNB0JFXNz8TmtJYwa8cEOew6rSIGK76XAOM+0mB+QC2X 0y1hPKXnJZfGWrqCBmh5t5pTUHq57gjx99Yd1A9qzXu1Q7FBJ9ljkUtqN75oOcaPDgVm Knqnzx9ZP798TQ6yim+mYXF1sNEAaL24HTL6aJWVhb26ALwhCWifNOU0k8e22izuJoRg 651yuSg1ELCs1DLgGpeJsSUe5UUlLpmhfXxig3S36Er+uitCpJTEMKJzFrJOYEqD0blY V+Yg== X-Gm-Message-State: ALoCoQkfVj9jV04sKeQNd41qGz22UWV+Efzu22alKJ8ybgTBOng4m3UJtBHKRJX9SCPN6JAK6wDA X-Received: by 10.236.194.79 with SMTP id l55mr3335518yhn.146.1411761988839; Fri, 26 Sep 2014 13:06:28 -0700 (PDT) Received: from localhost.localdomain (cpe-173-095-180-236.nc.res.rr.com. [173.95.180.236]) by mx.google.com with ESMTPSA id q40sm2955032yhg.32.2014.09.26.13.06.27 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 26 Sep 2014 13:06:28 -0700 (PDT) From: Sean Paul To: thierry.reding@gmail.com, dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org Cc: Sean Paul Subject: [PATCH] drm/tegra: Setup PHY_TIMING & BTA_TIMING registers in setup_clock() Date: Fri, 26 Sep 2014 16:06:11 -0400 Message-Id: <1411761971-6510-1-git-send-email-seanpaul@chromium.org> X-Mailer: git-send-email 2.1.1 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Make sure we initialize the dsi PHY_TIMING and BTA_TIMING registers when we setup the clocks, as opposed to in dsi_configure. The phy timings must be initialized before drm_panel prepare() so that any DCS commands sent at this time are using the appropriate timings. Signed-off-by: Sean Paul --- drivers/gpu/drm/tegra/dsi.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/tegra/dsi.c b/drivers/gpu/drm/tegra/dsi.c index c0258ae..6923c9b 100644 --- a/drivers/gpu/drm/tegra/dsi.c +++ b/drivers/gpu/drm/tegra/dsi.c @@ -369,6 +369,9 @@ static int tegra_dsi_set_phy_timing(struct tegra_dsi *dsi) DSI_TIMING_FIELD(timing.tago, period, 1); tegra_dsi_writel(dsi, value, DSI_BTA_TIMING); + if (dsi->slave) + return tegra_dsi_set_phy_timing(dsi->slave); + return 0; } @@ -482,10 +485,6 @@ static int tegra_output_dsi_enable(struct tegra_output *output) value &= ~DSI_CONTROL_HOST_ENABLE; tegra_dsi_writel(dsi, value, DSI_CONTROL); - err = tegra_dsi_set_phy_timing(dsi); - if (err < 0) - return err; - for (i = 0; i < NUM_PKT_SEQ; i++) tegra_dsi_writel(dsi, pkt_seq[i], DSI_PKT_SEQ_0_LO + i); @@ -660,6 +659,12 @@ static int tegra_output_dsi_setup_clock(struct tegra_output *output, value = DSI_TALLY_TA(0) | DSI_TALLY_LRX(0) | DSI_TALLY_HTX(0); tegra_dsi_writel(dsi, value, DSI_TO_TALLY); + err = tegra_dsi_set_phy_timing(dsi); + if (err) { + dev_err(dsi->dev, "failed to setup phy timing: %d\n", err); + return err; + } + return 0; }