From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DF085C2D0E4 for ; Thu, 19 Nov 2020 09:20:54 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4187F221EB for ; Thu, 19 Nov 2020 09:20:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="c3xZji/L"; dkim=temperror (0-bit key) header.d=cerno.tech header.i=@cerno.tech header.b="koyLmdO+"; dkim=temperror (0-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="rmmzHNfH" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4187F221EB Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=cerno.tech Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To:From: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=9ybDOSFES4+9ejJQBn/PUYeZh/JGveKnFFaIOpdYRLk=; b=c3xZji/L1C9s2nbLrr0fRF9vSh jQWqJUBAIS3sYejzgq5O0qG92hwJ7v8aA4EQS3Cg7ZrtE8+W/ETVMFOgPQWnxi/nosGTVmBM97gub cKtJ2WFbmLvaCTF33BCWtawy94G3KGk/baoe3kzQOlOXz6kfS3PiJeo1pNuaE0URnCDkByEcXWOM9 rAbx58Ci2ofmfOpgtt9mP9ZAntpw4uopbHJJSK1RmBhCiMOR8UQ+HY8slLE1Wp2ujneeLhWvn5qkP GAX1V8Zco9iz6YCW3W29XhaLb66npJXd9XE8aLlwCIdoPjE5lsXDSH3CuTacZo9JTBtp9PcyN3+bP NdVnBx+A==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kfg73-0005xO-U4; Thu, 19 Nov 2020 09:20:21 +0000 Received: from new1-smtp.messagingengine.com ([66.111.4.221]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kfg70-0005wg-Fg; Thu, 19 Nov 2020 09:20:19 +0000 Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailnew.nyi.internal (Postfix) with ESMTP id BD56F58056B; Thu, 19 Nov 2020 04:20:17 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute6.internal (MEProxy); Thu, 19 Nov 2020 04:20:17 -0500 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=fm1; bh=4cp2xre+gdaTRhZd8Lqk7ewdF0 77tnpCwdXrx58ZT2A=; b=koyLmdO+SnLyFfJxeR9eIIV2/FhpG9gwTpAOmRxtJA jxkqllusj/5YcV7H8JEk6Xtaw15KjO7bHHn3cUid/rGpbaepwOxkQJ/KdW/ciAsg cdJxvtuqVZKiRqxplcsFgQm8vnhuxPqh/qNQg5/ORSB7Fopx7edKmDgBVL87KSa6 ZDYvExuIV+ssQxLuMQXFdkIhYupn3NrHC/9iS8pwm5IfnXb49Psh5E3dHnkaJPc7 SCD0oU0BH/GWJX57YtoL2FXjU4FdOG+Gm+Ky8+tclChVGx23hzTqFRWeOR13f9mu MVB0QgwVWiIh4fz/xVTp48CqJhCeAwBH4c9H0EYWQzBQ== 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=fm1; bh=4cp2xre+gdaTRhZd8 Lqk7ewdF077tnpCwdXrx58ZT2A=; b=rmmzHNfHEyqf8s9Vt0JvWDR9kiPObEAXk obNMqqk9u0J+ayTn6UNVO30+DYEaaWNoeiyAj2JKXhXcuGjvia+KEEsgzpOfm2hn nxXFoKrLCcX2XKLRXJstGEgRxNRMu+RyQhZDdeBZ69aYiwFKqHskDpqtdXK8QHxU NeVUQyg+Nzmqtfm8okfP5NtkKw/RFwnXPddrv/mbq+wxROo2vt5GxaMo4fWk1lLI +P/lWVRfiF6v0Nzl/9CscqotktUUeXzEQ5kEYDU4ir+D+sPyIGq4ipZZqIvimwYj YW1lR3Yrc3HNxGiDGfj9YOhKGRbcMX6RHdZcYDIB9VO7+qs4Sh23Q== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrudefjedgtdduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvufffkffoggfgsedtkeertdertddtnecuhfhrohhmpeforgigihhmvgcu tfhiphgrrhguuceomhgrgihimhgvsegtvghrnhhordhtvggthheqnecuggftrfgrthhtvg hrnhepjeffheduvddvvdelhfegleelfffgieejvdehgfeijedtieeuteejteefueekjeeg necukfhppeeltddrkeelrdeikedrjeeinecuvehluhhsthgvrhfuihiivgeptdenucfrrg hrrghmpehmrghilhhfrhhomhepmhgrgihimhgvsegtvghrnhhordhtvggthh 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 8F0C4328005D; Thu, 19 Nov 2020 04:20:14 -0500 (EST) From: Maxime Ripard To: Daniel Vetter , David Airlie , Maarten Lankhorst , Thomas Zimmermann , Maxime Ripard , Eric Anholt Subject: [PATCH] drm/vc4: hdmi: Don't poll for the infoframes status on setup Date: Thu, 19 Nov 2020 10:20:12 +0100 Message-Id: <20201119092012.759575-1-maxime@cerno.tech> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201119_042018_607794_98FEEA5B X-CRM114-Status: GOOD ( 14.80 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-arm-kernel@lists.infradead.org, bcm-kernel-feedback-list@broadcom.com, linux-rpi-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, Dave Stevenson Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The infoframes are sent at a regular interval as a data island packet, so we don't need to wait for them to be sent when we're setting them up. However, we do need to poll when we're disabling since the we can't update the packet RAM until it has been sent. Let's add a boolean flag to tell whether we want to poll or not to support both cases. Suggested-by: Dave Stevenson Signed-off-by: Maxime Ripard --- drivers/gpu/drm/vc4/vc4_hdmi.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index 285c871b02fb..e1bbdba646db 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -265,7 +265,8 @@ static int vc4_hdmi_connector_init(struct drm_device *dev, } static int vc4_hdmi_stop_packet(struct drm_encoder *encoder, - enum hdmi_infoframe_type type) + enum hdmi_infoframe_type type, + bool poll) { struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); u32 packet_id = type - 0x80; @@ -273,6 +274,9 @@ static int vc4_hdmi_stop_packet(struct drm_encoder *encoder, HDMI_WRITE(HDMI_RAM_PACKET_CONFIG, HDMI_READ(HDMI_RAM_PACKET_CONFIG) & ~BIT(packet_id)); + if (!poll) + return 0; + return wait_for(!(HDMI_READ(HDMI_RAM_PACKET_STATUS) & BIT(packet_id)), 100); } @@ -299,7 +303,7 @@ static void vc4_hdmi_write_infoframe(struct drm_encoder *encoder, if (len < 0) return; - ret = vc4_hdmi_stop_packet(encoder, frame->any.type); + ret = vc4_hdmi_stop_packet(encoder, frame->any.type, false); if (ret) { DRM_ERROR("Failed to wait for infoframe to go idle: %d\n", ret); return; @@ -1055,7 +1059,7 @@ static void vc4_hdmi_audio_reset(struct vc4_hdmi *vc4_hdmi) int ret; vc4_hdmi->audio.streaming = false; - ret = vc4_hdmi_stop_packet(encoder, HDMI_INFOFRAME_TYPE_AUDIO); + ret = vc4_hdmi_stop_packet(encoder, HDMI_INFOFRAME_TYPE_AUDIO, true); if (ret) dev_err(dev, "Failed to stop audio infoframe: %d\n", ret); -- 2.28.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel