Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp3503592pxv; Mon, 28 Jun 2021 06:09:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwTbuDjQ6GwLNFADHaiYDnWQo7hi9jTn+WAFIySBXvxm/ZD9aSGXNrTYfMl27o3tIUAd2hI X-Received: by 2002:a17:906:4f14:: with SMTP id t20mr23906839eju.398.1624885776113; Mon, 28 Jun 2021 06:09:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624885776; cv=none; d=google.com; s=arc-20160816; b=NUsKQWdMaCVZBu6fIAZFj7UoFMg5Ca3Jscjb8r+S/YP2TArCPNvfEO5pEp0xhbfBv0 NRmbK2Qyyk7UEPYnNceVUXWldqioA5BSt2caXTHoM3ZsQqlo3Emepzi6lFViscJqy7YQ R3N/bREKKmjd4PgPApZb1vRtZOkk/6SVMVmKwa8YIzuBpS2mNw+sETtzyVL+mKqalHya E7qpdzuSQ5LO2AnCvGba0JKmEg7kLWDl+MRS2+nAM8rsxlrejenD6jmqg93h79T4V/qo IhoxKQ9QfKBH/tvuy2BH9K0ulQSNIKr8e5sW76oMgyI7WMKSEcm/CNovfopAdbRdm94w LUeg== 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 :message-id:date:subject:cc:to:from:dkim-signature:dkim-signature; bh=pJDoaEKICoxjXDVlY/UTHzlsuRSeWoO2PgHJjPp/Lyg=; b=Vao2QK4hFbEp6K9UQ2BzOIxpWYOR0HAC6dHymnJwL+j4IqHyO8GdbnUTkUzC9qS7Xq G8qmDlFvf/2/zbM2/b9WTZWv98OG13gxyezzYQfJlfSiCQfnq0wq7jyJhHGPG+u7K0DG o994S962rHbsmVUkWiBrBFdDBml4ikavK/gU0yW+b7bLJZFyBUTHo0kiR5s6OrO80iua 4uu1yBL/9/6yiY199NgwnA4gEYy0ob3BDHBm3g02v/jbaARWhfybdUfnBTS4O9vNYTII RWttogLeD5qsasPiENsIWi9sDLc4CQ56OrEylW4vKl1qql33Y6Wcspw1FbMbukQf2GhV +1gA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm3 header.b=RppTGqKq; dkim=pass header.i=@messagingengine.com header.s=fm3 header.b=nBxkdVJT; 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 h6si9312372edb.458.2021.06.28.06.09.11; Mon, 28 Jun 2021 06:09: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=RppTGqKq; dkim=pass header.i=@messagingengine.com header.s=fm3 header.b=nBxkdVJT; 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 S233071AbhF1NIG (ORCPT + 99 others); Mon, 28 Jun 2021 09:08:06 -0400 Received: from new3-smtp.messagingengine.com ([66.111.4.229]:59869 "EHLO new3-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232502AbhF1NID (ORCPT ); Mon, 28 Jun 2021 09:08:03 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailnew.nyi.internal (Postfix) with ESMTP id B087D5806B1; Mon, 28 Jun 2021 09:05:37 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Mon, 28 Jun 2021 09:05:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h= from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; s=fm3; bh=pJDoaEKICoxjXDVlY/UTHzlsuR SeWoO2PgHJjPp/Lyg=; b=RppTGqKqcZhZzad1XqGjUzuADb9IG7wCZFBSOGyQVt MzSfS7XvGomrP/nvAY2QUWvzBqBeY1c3uWLTja8ivcHwHGTgkyPo/KR1gJOwFWnF JDXp8AejsnHiMtuXLrioSPhN8CnMsj3a5/agIKFygTHFyBZiwn8igkEznCSt1Uiw +lOkMqfaJjd24mu27RFRdKzzAvm9hcPSjeTb84WIFCncu36gu/mHKUgDGJSB3Mw+ 3Vpca9Cn15hzm3XEZ0pr8+LiFPxB1gJKfnZEM5CwxR6Pp4sJt4DZxZ9aqtdd4Eg5 Lx5rSiRdz8QxQDWS6JwLVm4HPe12VFoTd0vcFj3yDlgA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:date:from :message-id:mime-version:subject:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=pJDoaEKICoxjXDVlY /UTHzlsuRSeWoO2PgHJjPp/Lyg=; b=nBxkdVJTfocxYD9oLD54LH7HsEfKlZZQs xKNJltEukCFEDVHgrZZ16ZSQkAsUFrv/nGfUF/udhS6UXvpMgSzSPnzQMeXcFLEo e2S5l3lri8Sk3vpeWEEjru6pl3sMr4x7qnhLDnfWRCrMgO6K0KsOxLb8NtkqKJPn zpA4Ai3/Xmw5RJf+M6ARx8Aq2FR0rnFntjX/HBzqDo6M9ieldhwKmfhw0UJqNonz L8BXwq6GKdVZ8s6akS10PYkZHHAnD62nGGEVzBium1o05//1swgBOb8uqkeVym3L sj6BWYKv/uuxWEiObu6vfyDJ9hOHsHX2FluiLT5mjvo/j61D7utEg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrfeehgedgheelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvufffkffoggfgsedtkeertdertddtnecuhfhrohhmpeforgigihhmvgcu tfhiphgrrhguuceomhgrgihimhgvsegtvghrnhhordhtvggthheqnecuggftrfgrthhtvg hrnhepjeffheduvddvvdelhfegleelfffgieejvdehgfeijedtieeuteejteefueekjeeg necuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrgi himhgvsegtvghrnhhordhtvggthh X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 28 Jun 2021 09:05:35 -0400 (EDT) From: Maxime Ripard To: dri-devel@lists.freedesktop.org, Daniel Vetter , David Airlie , Maarten Lankhorst , Thomas Zimmermann , Maxime Ripard Cc: Emma Anholt , Daniel Vetter , Maxime Ripard , linux-kernel@vger.kernel.org, Nicolas Saenz Julienne , linux-rpi-kernel@lists.infradead.org, bcm-kernel-feedback-list@broadcom.com, Dave Stevenson , Phil Elwell , Tim Gover , Dom Cobley Subject: [PATCH] drm: vc4: Fix pixel-wrap issue with DVP teardown Date: Mon, 28 Jun 2021 15:05:33 +0200 Message-Id: <20210628130533.144617-1-maxime@cerno.tech> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Tim Gover Adjust the DVP enable/disable sequence to avoid a pixel getting stuck in an internal, non resettable FIFO within PixelValve when changing HDMI resolution. The blank pixels features of the DVP can prevent signals back to pixelvalve causing it to not clear the FIFO. Adjust the ordering and timing of operations to ensure the clear signal makes it through to pixelvalve. Signed-off-by: Tim Gover Signed-off-by: Maxime Ripard --- drivers/gpu/drm/vc4/vc4_hdmi.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index 4ebe216b10a9..472a9d6b5866 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -605,12 +605,12 @@ static void vc4_hdmi_encoder_post_crtc_disable(struct drm_encoder *encoder, HDMI_WRITE(HDMI_RAM_PACKET_CONFIG, 0); - HDMI_WRITE(HDMI_VID_CTL, HDMI_READ(HDMI_VID_CTL) | - VC4_HD_VID_CTL_CLRRGB | VC4_HD_VID_CTL_CLRSYNC); + HDMI_WRITE(HDMI_VID_CTL, HDMI_READ(HDMI_VID_CTL) | VC4_HD_VID_CTL_CLRRGB); + + mdelay(1); HDMI_WRITE(HDMI_VID_CTL, - HDMI_READ(HDMI_VID_CTL) | VC4_HD_VID_CTL_BLANKPIX); - + HDMI_READ(HDMI_VID_CTL) & ~VC4_HD_VID_CTL_ENABLE); vc4_hdmi_disable_scrambling(encoder); } @@ -620,12 +620,12 @@ static void vc4_hdmi_encoder_post_crtc_powerdown(struct drm_encoder *encoder, struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); int ret; + HDMI_WRITE(HDMI_VID_CTL, + HDMI_READ(HDMI_VID_CTL) | VC4_HD_VID_CTL_BLANKPIX); + if (vc4_hdmi->variant->phy_disable) vc4_hdmi->variant->phy_disable(vc4_hdmi); - HDMI_WRITE(HDMI_VID_CTL, - HDMI_READ(HDMI_VID_CTL) & ~VC4_HD_VID_CTL_ENABLE); - clk_disable_unprepare(vc4_hdmi->pixel_bvb_clock); clk_disable_unprepare(vc4_hdmi->hsm_clock); clk_disable_unprepare(vc4_hdmi->pixel_clock); @@ -1017,6 +1017,7 @@ static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder, HDMI_WRITE(HDMI_VID_CTL, VC4_HD_VID_CTL_ENABLE | + VC4_HD_VID_CTL_CLRRGB | VC4_HD_VID_CTL_UNDERFLOW_ENABLE | VC4_HD_VID_CTL_FRAME_COUNTER_RESET | (vsync_pos ? 0 : VC4_HD_VID_CTL_VSYNC_LOW) | -- 2.31.1