Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp5364741pxv; Wed, 7 Jul 2021 01:52:47 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy4WV3dRFxO/nTQ4akkvxzjc+z7Vy4cuZmt0XJuGBLDRzuOpqqGd9W4S7VVmc7kyEq80dKt X-Received: by 2002:a05:6402:198:: with SMTP id r24mr28813944edv.93.1625647967696; Wed, 07 Jul 2021 01:52:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625647967; cv=none; d=google.com; s=arc-20160816; b=MxHPvvMxhPg0ynGEQUbft9sMpk3qjdJnCzu34vM1Vh3ouFUGQu/IyA4+EVTsZqOVQA WUg2//iAzHMrbpbHYUvT4kJTlnOuW662Lu8atJGoyMazAuqO9AHRXyqx9sxwTUxKEDCd xxiRgkkoqq6ZKEf59ROjKi0j1H1kjGttgB12Rl/7U3vLZmo+Bf8AMBf6F45/eOzq1N20 TOTW7zk0hiPrNcUds12iadDjmvAbopuZivm5ECzA22K7LokpAISP2OmCiXF2sPWiF+HY XAckWGCYFulIf6bwZKSKgyV6kPxmMzb09AEWKR0McktL4K8ec+FxAyZggtEyOTNIBFvu aTiQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=c+/e+DeDuf9Q6Wz32tUPct5JYypt2bqbIG2Nw3u+iPc=; b=QcyjAcrNUoOgKrIvYivCpLNb025vSxSwGZPWVqQeHWZTj3QZwommZeFmV5WETS3Tun e41VzUfacZWXCTjkB8Ufkk7OoRQKMJnxNBlZjUHkLhUI58b2SigB9pXEdBJQ24AP2yHK igjI1xEj9457rJhwXVHMD+2yRvCwpKN/IvIlVq8gaNP67aLo2Uu0UxKpE79PqEfbjSu4 QwRg2Kr/RdwOnAlMgLIg9P7ccVxt+MZdJ4FZz+RnetviTtR7EGGRyIgbeGsepo07ajDc WxsP4Bl3Tn+mZ28wIhN1wuEnlYYvS9ovF++Kn72rha5qyG/uu1Gvj0EiJ1u9OL/Y3sae hz7A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm3 header.b=zWtNOf+2; dkim=pass header.i=@messagingengine.com header.s=fm3 header.b=NsSJYChT; 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 v7si17422711edj.541.2021.07.07.01.52.25; Wed, 07 Jul 2021 01:52:47 -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=zWtNOf+2; dkim=pass header.i=@messagingengine.com header.s=fm3 header.b=NsSJYChT; 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 S231253AbhGGIvH (ORCPT + 99 others); Wed, 7 Jul 2021 04:51:07 -0400 Received: from wnew2-smtp.messagingengine.com ([64.147.123.27]:43477 "EHLO wnew2-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231262AbhGGIvF (ORCPT ); Wed, 7 Jul 2021 04:51:05 -0400 Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailnew.west.internal (Postfix) with ESMTP id 1EEBC2B00944; Wed, 7 Jul 2021 04:48:24 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute6.internal (MEProxy); Wed, 07 Jul 2021 04:48:25 -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=c+/e+DeDuf9Q6 Wz32tUPct5JYypt2bqbIG2Nw3u+iPc=; b=zWtNOf+21qtVnlF393VzAGc5O3f2b C1EUWgKnBApN7AySwHmYwg9TEVHv5senE/aNBjy6Gj4GdWbTC25UIIv5G4otn97k PTuGeHSwPkl3He6DQRfMzhVv44fL4ui56qJzI9+CZwRYBM6kSfaRewVpkoMf0ULu k3b8+S35w3e054zNQwVtCKaRKdKLmeiVFKztbLjZvDKWBI2MRYtVk1Q6CYNJqofE pBgau5/imN7x1r1hq0qvgA+1t8eQlfKxJ0jY1vct0DRT/4+ycU5iXBTLq2IdbsrB N6bfWJH4Gtuq/O5COYPh4HurjqS5vIuN2pZK74mmNnV5awj4CpL9f/Z4g== 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=c+/e+DeDuf9Q6Wz32tUPct5JYypt2bqbIG2Nw3u+iPc=; b=NsSJYChT DsDhv3bIwsIB/NlrYmDuXRxOZPNuoqewkZ695fbuIiuOnlFvUqk560tNmUPaDB3g ZjX7Q1gXhX1ve0cZlSV7e3LSx6pm49i1ylqqVYF0HgsrCYG+H5Q3nYI8HxgwQIbO LIuRwS3ajZSeRi5+t0fGVEED1EvIkzmaYAOTDex/e1js03EnlVZxMYD8gUvW8hVU fsLFNOgH01q2W2Or7qndWvF6XoYPq6mOSLNQ7CaMLVps9aC2wzJJ2Mhz1HeZ1vIU JAr3OZuWCJq0prFzy84t5ut2edfc2cHxsT5Iv1UDGFVE+8KoAUsloD0mq6GqgA1F +WxldPEJhh2EoQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvtddrtddvgddtjecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepofgrgihimhgv ucftihhprghrugcuoehmrgigihhmvgestggvrhhnohdrthgvtghhqeenucggtffrrghtth gvrhhnpedvkeelveefffekjefhffeuleetleefudeifeehuddugffghffhffehveevheeh vdenucevlhhushhtvghrufhiiigvpedvnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrg igihhmvgestggvrhhnohdrthgvtghh X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 7 Jul 2021 04:48:23 -0400 (EDT) From: Maxime Ripard To: dri-devel@lists.freedesktop.org, Daniel Vetter , David Airlie , Maarten Lankhorst , Thomas Zimmermann , Maxime Ripard Cc: linux-rpi-kernel@lists.infradead.org, Maxime Ripard , Nicolas Saenz Julienne , Dave Stevenson , Phil Elwell , Tim Gover , Dom Cobley , Emma Anholt , bcm-kernel-feedback-list@broadcom.com, linux-kernel@vger.kernel.org Subject: [PATCH v6 09/10] drm/vc4: hdmi: Enable the scrambler on reconnection Date: Wed, 7 Jul 2021 10:47:44 +0200 Message-Id: <20210707084745.1365390-10-maxime@cerno.tech> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210707084745.1365390-1-maxime@cerno.tech> References: <20210707084745.1365390-1-maxime@cerno.tech> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If we have a state already and disconnect/reconnect the display, the SCDC messages won't be sent again since we didn't go through a disable / enable cycle. In order to fix this, let's call the vc4_hdmi_enable_scrambling function in the detect callback if there is a mode and it needs the scrambler to be enabled. Fixes: c85695a2016e ("drm/vc4: hdmi: Enable the scrambler") Signed-off-by: Maxime Ripard --- drivers/gpu/drm/vc4/vc4_hdmi.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index 40f995c43376..d478ec5ec8f3 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -160,6 +160,8 @@ static void vc4_hdmi_cec_update_clk_div(struct vc4_hdmi *vc4_hdmi) static void vc4_hdmi_cec_update_clk_div(struct vc4_hdmi *vc4_hdmi) {} #endif +static void vc4_hdmi_enable_scrambling(struct drm_encoder *encoder); + static enum drm_connector_status vc4_hdmi_connector_detect(struct drm_connector *connector, bool force) { @@ -184,6 +186,8 @@ vc4_hdmi_connector_detect(struct drm_connector *connector, bool force) } } + vc4_hdmi_enable_scrambling(&vc4_hdmi->encoder.base.base); + return connector_status_connected; } @@ -539,9 +543,13 @@ static bool vc4_hdmi_supports_scrambling(struct drm_encoder *encoder, static void vc4_hdmi_enable_scrambling(struct drm_encoder *encoder) { - struct drm_display_mode *mode = &encoder->crtc->state->adjusted_mode; + struct drm_display_mode *mode; struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); + if (!encoder->crtc || !encoder->crtc->state) + return; + + mode = &encoder->crtc->state->adjusted_mode; if (!vc4_hdmi_supports_scrambling(encoder, mode)) return; -- 2.31.1