From patchwork Mon Jan 22 09:25:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 125353 Delivered-To: patch@linaro.org Received: by 10.46.66.141 with SMTP id h13csp1053827ljf; Mon, 22 Jan 2018 01:25:56 -0800 (PST) X-Google-Smtp-Source: AH8x226mVpQwdvoLnVn2zkJsXdkC8lREzjlSBnQ0TCEhoFwfsAPW5trcyubjrvhICbxSQlSkJEOR X-Received: by 2002:a17:902:6b89:: with SMTP id p9-v6mr3097035plk.377.1516613156836; Mon, 22 Jan 2018 01:25:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516613156; cv=none; d=google.com; s=arc-20160816; b=OZa0/dExPnFkLbp2ohiGRi0qhAics0GhlDNqb013f9GqBVJlsBOXo0bH8SvQs26ZJE uWs2MoeW3lEnQ/h5xVxVVO3NB0wLnQy1UvnAnfkNukVqk2e9PcYW8Wq9ezTjQiE9czB4 UySIK/R4KwTXU5yDvcUyaqf3CIjtSfGVxAF5WFvCgWs5tP3DRhkQSe2lUj4NkZjh8gp7 Sf0ct9IFAU1yQmWyDlGpk8XHy/7m2XGRIJcfwPLkp9WiDdoefUReWk5v2n4EETC71HTB VEGdqZ9Xzo01BIv082tb5M462B+xjbXqp/6X++nNdFlnPvdLuqNP5Rhnr+0PhiOLrfQb yN0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=lHP8zXpJKGx+sjerjC69E9+arDFp2PwLxFkDBEjJuC8=; b=VIzEC/fqpInlDad3yk+upupmI2iT/5n8NCa63n8brqnm54PTERCvQBfpsj+u8Uz2Xg nRUF4Oq7TkZSUmq1ewVOucgR9IwQzqh3Xy9DBlFBaCMBmFxd30Y0zVqZYye81ap8Stxw GBzRrEBwKhEwL7ZIIgbERSX2iDQIif8MByndksdGB7moUHSZUhXncTWJeRU4Mky0AsmN 1VpaJ1ZmaQNbfr5u6yQQh7Gfgy6mSZA8g7HOrZbUHmZWoTFMZf//NHOzD907kL1AyHZk Rj0Fs/BE8x3GmhHcI0k9rV2qIY4o/I/YsgVFCi+YsqOsjMNb1DAsJfcgCGiUyqbY3LPi m5qw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f9-v6si3236173plm.183.2018.01.22.01.25.56; Mon, 22 Jan 2018 01:25:56 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752235AbeAVJZx (ORCPT + 28 others); Mon, 22 Jan 2018 04:25:53 -0500 Received: from mail.free-electrons.com ([62.4.15.54]:44129 "EHLO mail.free-electrons.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752098AbeAVJZu (ORCPT ); Mon, 22 Jan 2018 04:25:50 -0500 Received: by mail.free-electrons.com (Postfix, from userid 110) id 6A31F20737; Mon, 22 Jan 2018 10:25:49 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mail.free-electrons.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT, URIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.4.0 Received: from localhost (LStLambert-657-1-97-87.w90-63.abo.wanadoo.fr [90.63.216.87]) by mail.free-electrons.com (Postfix) with ESMTPSA id 39D11207A4; Mon, 22 Jan 2018 10:25:33 +0100 (CET) From: Maxime Ripard To: Chen-Yu Tsai , Maxime Ripard Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, narmstrong@baylibre.com, thomas@vitsch.nl Subject: [PATCH v4 12/13] drm/sun4i: backend: Make sure we don't have a commit pending Date: Mon, 22 Jan 2018 10:25:26 +0100 Message-Id: <35604307e5bde2b85c674de79fa7c4d55700f085.1516613040.git-series.maxime.ripard@free-electrons.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If we try to read the backend registers while it fetches the new values, we end up with the value of some random register instead of the one we asked for. In order to prevent that, let's make sure that the very first thing we do during our atomic modesetting is to let the commit bit come to a rest. We don't have to worry about anything else since the only time we will trigger a new transaction is during the atomic_commit which comes much later. Reviewed-by: Chen-Yu Tsai Signed-off-by: Maxime Ripard --- drivers/gpu/drm/sun4i/sun4i_backend.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) -- git-series 0.9.1 diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.c b/drivers/gpu/drm/sun4i/sun4i_backend.c index 1b8e3dcbe47a..5d4a49e9ccc3 100644 --- a/drivers/gpu/drm/sun4i/sun4i_backend.c +++ b/drivers/gpu/drm/sun4i/sun4i_backend.c @@ -297,6 +297,17 @@ static bool sun4i_backend_plane_uses_frontend(struct drm_plane_state *state) return sun4i_backend_plane_uses_scaler(state); } +static void sun4i_backend_atomic_begin(struct sunxi_engine *engine, + struct drm_crtc_state *old_state) +{ + u32 val; + + WARN_ON(regmap_read_poll_timeout(engine->regs, + SUN4I_BACKEND_REGBUFFCTL_REG, + val, !(val & SUN4I_BACKEND_REGBUFFCTL_LOADCTL), + 100, 50000)); +} + static int sun4i_backend_atomic_check(struct sunxi_engine *engine, struct drm_crtc_state *crtc_state) { @@ -479,6 +490,7 @@ static struct sun4i_frontend *sun4i_backend_find_frontend(struct sun4i_drv *drv, } static const struct sunxi_engine_ops sun4i_backend_engine_ops = { + .atomic_begin = sun4i_backend_atomic_begin, .atomic_check = sun4i_backend_atomic_check, .commit = sun4i_backend_commit, .layers_init = sun4i_layers_init,