Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp755880ybt; Wed, 8 Jul 2020 10:51:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzzLiDBYBbKihEWx27lRQVBVPoe8diH64KY5x5qzyIbe5tmqVvQmCpoXRe3E4HNVghhmnob X-Received: by 2002:a17:906:c40d:: with SMTP id u13mr51020947ejz.519.1594230696732; Wed, 08 Jul 2020 10:51:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594230696; cv=none; d=google.com; s=arc-20160816; b=HJZ8imSZIGAjter0ax1wB3Vk3he/TngOhoCjA+t2kozi3ysw0z228HMma1G3DppOFf RUCWk569XqFvy/UpLdBkk9DoDmK47aEkfFwSZtra0TrGzHIBSzjwze7g4G14qb8JUaMx sKa+UtQ8k0/gTob81uwU1bV9LsFRRH2S9nQd5d6EM2W6+NiN+Mh9XMZ6qX5SK46CexLe 2o65Oh+O2FXsDUBMegJ080ykGcHmBwozmUFKjG/6iYg4DfGKCWMKbKy/FPjfHZDG6jyJ ZbJfTIHcfuuD4IQM83EibiVKQBOcTlGa3/7FAh7inlOairjNofSV2k1txesVUMwKjGA1 oDpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=imK7Na+duZmRmfePws9Go/wcyLUu9qMlTwV9YYPboKQ=; b=ugQWiAPo3QAK7Lubm4VZUsynxPEdZOlQT8tTLlVEPLbtvqjyFay6aIdV+BZo5ETzcM bqgZllttjQUAIl39sG2Pl23ZMikFqmoykXh3amhW1u+lheRdenRbWkbW2oP3iW71YgYP 7p3JFUYKlUlttcANG7le/IqsR8Nb2rcRr7tE6++owiFkZenpjc2WlJGoni761tIVFP7q 8mqNSNhlncy2zD95G9aXmW7CxWvVQDbhCndV8uLz2y6v5aZYKdY/pRLm2I0HgR98sKqU JC167HeAKNkK+4X0bjr6XZ9Xh3FSFzXh12OIIxZsdoqqJopDeLkrqCCJB3vUEGD3dfe1 +KvQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm3 header.b=M3sowvlW; dkim=pass header.i=@messagingengine.com header.s=fm3 header.b=dXMpXop+; 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=cerno.tech Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cw21si391215edb.600.2020.07.08.10.51.14; Wed, 08 Jul 2020 10:51:36 -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=@cerno.tech header.s=fm3 header.b=M3sowvlW; dkim=pass header.i=@messagingengine.com header.s=fm3 header.b=dXMpXop+; 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=cerno.tech Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726599AbgGHRmx (ORCPT + 99 others); Wed, 8 Jul 2020 13:42:53 -0400 Received: from wnew4-smtp.messagingengine.com ([64.147.123.18]:51433 "EHLO wnew4-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726514AbgGHRmu (ORCPT ); Wed, 8 Jul 2020 13:42:50 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailnew.west.internal (Postfix) with ESMTP id 28F6BFE4; Wed, 8 Jul 2020 13:42:49 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Wed, 08 Jul 2020 13:42:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; s=fm3; bh=imK7Na+duZmRm fePws9Go/wcyLUu9qMlTwV9YYPboKQ=; b=M3sowvlWJZBdeV+Kdee8RwAkyr8iv thyWrWNYeTtXcHZCSdeMtG7urwlppfjQPzedZinIPZodVhIWFdOeNLncBghKfFOZ 8Np0l7JCSv4iH7no4ZfFDHN27zyEaqUht+j12ItzlZWgkcafAyM64UTrId0kfFIO L70NO//SflEMXzMdTVL+7axeIetxydtftQR6drBOczbJEUhoZ1rhfqXKlO5jTWHA BepHcn90hsjsZ4TK3irf2KidaNRmuM9YHPvY1vCvU+djdWtbCdYTgKHtRj/FVLkk KyAInH4++XAbN+zg/z21Hkm5WoVIvD31JGkNJIovcP2sFzu4PNIz8YlCA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:date:from :in-reply-to:message-id:mime-version:references:subject:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; bh=imK7Na+duZmRmfePws9Go/wcyLUu9qMlTwV9YYPboKQ=; b=dXMpXop+ cW7nvm1iTpF7nqelL/gUOyx0jwjFPc0HjNyMvFBpUeyPJLplSuxBAnfulQo37Tsp Im3YOlMV+cfq41hKUgUjeNMG5oZ9x96GTQPMEfto8Jtwgpv/x61WayImSSezjrxS mPoiy/SjaMV6Ds28LDysqfg7v+ZQZT33jyLxfMbGPCIIzhy3MxwR0VOYWRiMQJLd lsEEQlZIfnTai0OR75VQQcQI/9chExrxUYqFBRmynV7beCOwxk+2C3uDe2aalP/1 76tAQzZCPpVNN4NBx31F3Kv9qD+z3aLXD2vYqGGN1qTuo3cU125tI65ObMSe9Gsy yfOvUg/GiXfODQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudejgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpeforgigihhm vgcutfhiphgrrhguuceomhgrgihimhgvsegtvghrnhhordhtvggthheqnecuggftrfgrth htvghrnhepvdekleevfeffkeejhfffueelteelfeduieefheduudfggffhhfffheevveeh hedvnecukfhppeeltddrkeelrdeikedrjeeinecuvehluhhsthgvrhfuihiivgepuddune curfgrrhgrmhepmhgrihhlfhhrohhmpehmrgigihhmvgestggvrhhnohdrthgvtghh X-ME-Proxy: Received: from localhost (lfbn-tou-1-1502-76.w90-89.abo.wanadoo.fr [90.89.68.76]) by mail.messagingengine.com (Postfix) with ESMTPA id 63A933280060; Wed, 8 Jul 2020 13:42:48 -0400 (EDT) From: Maxime Ripard To: Nicolas Saenz Julienne , Eric Anholt Cc: dri-devel@lists.freedesktop.org, linux-rpi-kernel@lists.infradead.org, bcm-kernel-feedback-list@broadcom.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Dave Stevenson , Tim Gover , Phil Elwell , Maxime Ripard Subject: [PATCH v4 12/78] drm/vc4: crtc: Enable and disable the PV in atomic_enable / disable Date: Wed, 8 Jul 2020 19:41:20 +0200 Message-Id: <3d00592745e9559b754e84ffc74b4a727b82e8ab.1594230107.git-series.maxime@cerno.tech> X-Mailer: git-send-email 2.26.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The VIDEN bit in the pixelvalve currently being used to enable or disable the pixelvalve seems to not be enough in some situations, which whill end up with the pixelvalve stalling. In such a case, even re-enabling VIDEN doesn't bring it back and we need to clear the FIFO. This can only be done if the pixelvalve is disabled though. In order to overcome this, we can configure the pixelvalve during mode_set_no_fb, but only enable it in atomic_enable and flush the FIFO there, and in atomic_disable disable the pixelvalve again. Signed-off-by: Maxime Ripard --- drivers/gpu/drm/vc4/vc4_crtc.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c index cdeaa0cd981f..fe2e5675aed4 100644 --- a/drivers/gpu/drm/vc4/vc4_crtc.c +++ b/drivers/gpu/drm/vc4/vc4_crtc.c @@ -332,9 +332,7 @@ static void vc4_crtc_config_pv(struct drm_crtc *crtc) PV_CONTROL_TRIGGER_UNDERFLOW | PV_CONTROL_WAIT_HSTART | VC4_SET_FIELD(vc4_encoder->clock_select, - PV_CONTROL_CLK_SELECT) | - PV_CONTROL_FIFO_CLR | - PV_CONTROL_EN); + PV_CONTROL_CLK_SELECT)); } static void vc4_crtc_mode_set_nofb(struct drm_crtc *crtc) @@ -386,6 +384,8 @@ static void vc4_crtc_atomic_disable(struct drm_crtc *crtc, ret = wait_for(!(CRTC_READ(PV_V_CONTROL) & PV_VCONTROL_VIDEN), 1); WARN_ONCE(ret, "Timeout waiting for !PV_VCONTROL_VIDEN\n"); + CRTC_WRITE(PV_CONTROL, CRTC_READ(PV_CONTROL) & ~PV_CONTROL_EN); + vc4_hvs_atomic_disable(crtc, old_state); /* @@ -410,6 +410,10 @@ static void vc4_crtc_atomic_enable(struct drm_crtc *crtc, require_hvs_enabled(dev); + /* Reset the PV fifo. */ + CRTC_WRITE(PV_CONTROL, CRTC_READ(PV_CONTROL) | + PV_CONTROL_FIFO_CLR | PV_CONTROL_EN); + /* Enable vblank irq handling before crtc is started otherwise * drm_crtc_get_vblank() fails in vc4_crtc_update_dlist(). */ -- git-series 0.9.1