From patchwork Wed Dec 7 16:07:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 30911 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp271562wrr; Wed, 7 Dec 2022 08:10:32 -0800 (PST) X-Google-Smtp-Source: AA0mqf6ZemDp1dlFlTze3EiVVKLYcfG4w2fInXgtTXbEyKO0Cj1IUQ2XM7stJyB4xlDbdNJcx3hb X-Received: by 2002:a17:907:62a8:b0:7c1:ac7:843d with SMTP id nd40-20020a17090762a800b007c10ac7843dmr6792916ejc.643.1670429431931; Wed, 07 Dec 2022 08:10:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670429431; cv=none; d=google.com; s=arc-20160816; b=tmFLHpjwJEbxyLRbglmkQKYRlFCRTzmnopa93p86mTRrSouXlRm9WPLsoK8tjeq57q zv3we1dNbRQL3TZBnHG+RA3i+ZzpjVHm5Y+TYSFQIbYbVCEaFElRDCFbgGwq7vsRdQ2S p6Hj2FYHQUL2E3SUUt8S2iezhHvr7L7Sydrl3CxHQyjCjUTMCMBj2m+A1f3TMitXAVtl KMeN6EWM46A9aJHRm8V/rUPBDfa0OGk6Bzq6Y5ZO3aqlFcBRGYdE47Br89KY38ftcDMq OxHJ62i5rfEs9kcBR34NwvZYQO011Ef0Nk6xlDhtE+dLu6kaFcuY0BlCqqZu7Ve9B1Uy iR7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :feedback-id:dkim-signature:dkim-signature; bh=Mq5aA9U7Au9SdBfuWfKmxSGYdNinh4Uk6f7mzeVUm/Q=; b=qiUq/a1EwKMVuOX0UBQt08tuJ9lBnf3twMK7yn9p13NlS/oup/O1AmGM+67vHwzJ7s wavM/+k39BByBqvkwh4AgUql+FEuPwtNr3w1hsmZv8gKwpEB4rtQHg0LSNnPbSHnVPoc JyTLH8lsko9jyV0tN2WoCXXV0ObySrxw6J+EtXnLO9OxsAtHnISr+9h/+iQYC+UElsm/ jgDN1C0py2vlk5R0ES2VuUWISECOzOXLGm1JgLIyuhJFq8475YZKyPbvZt5LroxiK9+y VgGFNkfvDdmORXX0T3pTAaMijIFxiZJuHsWAXsQbCn2zZBHQ73V2EHEOy1VOXDHmmKAW raxQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b=P3HnIVad; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=UE7DqAG5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cerno.tech Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id wu14-20020a170906eece00b00783ac0b4d32si16286835ejb.941.2022.12.07.08.10.07; Wed, 07 Dec 2022 08:10:31 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b=P3HnIVad; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=UE7DqAG5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S229944AbiLGQJR (ORCPT + 99 others); Wed, 7 Dec 2022 11:09:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36744 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229565AbiLGQJL (ORCPT ); Wed, 7 Dec 2022 11:09:11 -0500 Received: from out4-smtp.messagingengine.com (out4-smtp.messagingengine.com [66.111.4.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C951D62EAF for ; Wed, 7 Dec 2022 08:09:09 -0800 (PST) Received: from compute6.internal (compute6.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 906485C018B; Wed, 7 Dec 2022 11:09:08 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute6.internal (MEProxy); Wed, 07 Dec 2022 11:09:08 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1670429348; x= 1670515748; bh=Mq5aA9U7Au9SdBfuWfKmxSGYdNinh4Uk6f7mzeVUm/Q=; b=P 3HnIVad3ldAmGacbFk19Z05sKhm666Pnd92ETbHaCLQ+grTy+tupXG8MDAoH2jD9 kkS0fNenD+w+c7uuqd4WZiZaVHpkVr4Bf91VZbG1XOBz6hLarrxJJkN/iSTzmQvj r5OBEJq6SD92WaxYIb1CSrOcTUT+uhJ8vd09hesBegJFEWwDDlRjwmY2CQ5s2N7q t3s5YQyS4GzsmuMhgn1fVCNbI0QBmRt63iIPJAbBe9P4F+FWxq8UwdteV+uNwH85 lRCRs5BQe+XP4aDjmuSmIi2b6UVSij2vsha6GFZolnqsrh58Q8ypdOT2vdZfbj9T zHAtGkcpWGJY0P9341vAQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1670429348; x= 1670515748; bh=Mq5aA9U7Au9SdBfuWfKmxSGYdNinh4Uk6f7mzeVUm/Q=; b=U E7DqAG5wNvreHLmbQKJLUDqmHNM4ne9xtUZJMLO0IlyZErU6W/rXBR8hUvPNAWp8 QwLPeV2QN5xQJjgBCqqZY61GTo/vwNXh+h7e50l0vlTFqKafLpstu+s6QZbDNVLH CeEDYecA6Fhl5gAuSGPhMTVeX6/8y0oVaiJ8fRxdS+vHGyKfPFtFubPNiH23JBTJ QJleyaGavSAlq70R+VJ1VegoIFDGFGIv2vabaBt7mWPfEmlYA8ttZ97nzSlM6QQn O8tgJVA10TV1flGw7BfOcFgcOXdiW1WLwVlRfaHHW/DUpoabPdLawRa27PPxeWGA XnIyc3wxCfCIMytAgiv9Q== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudekgdekhecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeenucfhrhhomhepofgrgihi mhgvucftihhprghrugcuoehmrgigihhmvgestggvrhhnohdrthgvtghhqeenucggtffrrg htthgvrhhnpefgffegieetveehffdugfektedvvdfhudeiffdtleehgeduvefgveefleff keffudenucffohhmrghinhepmhgrrhhgihhnshdrthhophenucevlhhushhtvghrufhiii gvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrgigihhmvgestggvrhhnohdrthgv tghh X-ME-Proxy: Feedback-ID: i8771445c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 7 Dec 2022 11:09:07 -0500 (EST) From: Maxime Ripard Date: Wed, 07 Dec 2022 17:07:45 +0100 Subject: [PATCH 1/9] drm/vc4: hdmi: Update all the planes if the TV margins are changed MIME-Version: 1.0 Message-Id: <20221207-rpi-hdmi-improvements-v1-1-6b15f774c13a@cerno.tech> References: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> In-Reply-To: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> To: Emma Anholt , Maxime Ripard , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Dave Stevenson , Maxime Ripard X-Mailer: b4 0.11.0-dev-8c583 X-Developer-Signature: v=1; a=openpgp-sha256; l=1645; i=maxime@cerno.tech; h=from:subject:message-id; bh=XInLZaSZElEYW1YjY5hSU2D+3FpWCp2LOTFzMps4gHo=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDMkTdgVNS1OXe2KQbFTBoy7yX/DpP3vP570eJlPWrfSwXvJE ncu7o5SFQYyLQVZMkSVG2HxJ3KlZrzvZ+ObBzGFlAhnCwMUpABNRWMDIcDDd4XkFe9qa2U+ffniu9W HX11DNj7OspUznvJ3rrnpP/QHDP/UNc/aZmO54vk1Wu5l/of0+zi+flzDM3PTrxb8jPiKd59kB X-Developer-Key: i=maxime@cerno.tech; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS, T_PDS_OTHER_BAD_TLD autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1751572211959246504?= X-GMAIL-MSGID: =?utf-8?q?1751572211959246504?= On VC4, the TV margins on the HDMI connector are implemented by scaling the planes. However, if only the TV margins or the connector are changed by a new state, the planes ending up on that connector won't be. Thus, they won't be updated properly and we'll effectively ignore that change until the next commit affecting these planes. Let's make sure to add all the planes attached to the connector so that we can update them properly. Signed-off-by: Maxime Ripard Reviewed-by: Thomas Zimmermann --- drivers/gpu/drm/vc4/vc4_hdmi.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index 12a00d644b61..0eafaf0b76e5 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -522,6 +522,22 @@ static int vc4_hdmi_connector_atomic_check(struct drm_connector *connector, if (!crtc) return 0; + if (old_state->tv.margins.left != new_state->tv.margins.left || + old_state->tv.margins.right != new_state->tv.margins.right || + old_state->tv.margins.top != new_state->tv.margins.top || + old_state->tv.margins.bottom != new_state->tv.margins.bottom) { + struct drm_crtc_state *crtc_state; + int ret; + + crtc_state = drm_atomic_get_crtc_state(state, crtc); + if (IS_ERR(crtc_state)) + return PTR_ERR(crtc_state); + + ret = drm_atomic_add_affected_planes(state, crtc); + if (ret) + return ret; + } + if (old_state->colorspace != new_state->colorspace || !drm_connector_atomic_hdr_metadata_equal(old_state, new_state)) { struct drm_crtc_state *crtc_state; From patchwork Wed Dec 7 16:07:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 30910 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp271435wrr; Wed, 7 Dec 2022 08:10:15 -0800 (PST) X-Google-Smtp-Source: AA0mqf7fMi4IxcCAaF9Zb3kh8xL8bHBjW8oJicvean3DWyfk1rEyHqXYGa50GGDBpBFyKd97h3rW X-Received: by 2002:a63:7111:0:b0:478:a6de:4d1b with SMTP id m17-20020a637111000000b00478a6de4d1bmr17062939pgc.95.1670429415113; Wed, 07 Dec 2022 08:10:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670429415; cv=none; d=google.com; s=arc-20160816; b=dRaYvnkAWTuYtmHRCT2yfbdXjeZJimsDn+jdvLaQwycdrcZmakmGfTD0AHCoDWUSer YCvF77qIGK8nPCPNRCEq1Sb5CoA9lkZ+vt0zwviPyjCvi961D4F1nX9mwVmHY1RQnTm9 rNkoXefAWC4EZOacmDKr4DwNxg8Wxiv8WFKbLjtjT8DzvVy2miEOVaFh5X4+AhRR5yGZ 9EoFc+9QDQeZnI75gtDj3pxYeyzXxXMkdqd5GiD62NMHAsngZ/pfsjPl/8qzxdXa65MR PEy9CB8/FOoEyP5nBhnPE6n7Q+scOHVw5qbGv93YSicb9ikHHfwFBSWBndCq0HIzQWib WHHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :feedback-id:dkim-signature:dkim-signature; bh=px2+MbhbeI+jrnsZ/vqUEifAPSMXpR4NGEBEX3i+hsw=; b=XQsQ41ew7+ozE4YA/mH32pBc9nb76ZjvL8dVRC+HUYvaCSGkHRWpfeaw6JHI0A6l0b wRxCONjBLX3mWZvEyiZGh4CUK4SdoLiLKjw+CRwgCR1V9CvmJRpjSdSK8rwXn5auQkhO bmsXbsNkCdUhNTJtaPZkr1nh0ohkd4Jwh64pb1Ac51E8XSAKS7KbOd4Fx8wMOvaTNooS HmcUhG2UnNjhvK98IuQ1ordA076FfAgK4n6tU52XuB9+g1RF1SR7IX+MA9kXxI4c8bLZ e2qrhfrNAQF2Z7Lpb/3OG3uMIqvbsqRPeQp526vl2HbgGtSntUmMhrCRUIg3quVw7Bne 4Hmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b=YCaxLUsx; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=lanFwiR4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cerno.tech Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s24-20020a056a00179800b00576caf113acsi11642139pfg.8.2022.12.07.08.09.59; Wed, 07 Dec 2022 08:10:15 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b=YCaxLUsx; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=lanFwiR4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S229804AbiLGQJO (ORCPT + 99 others); Wed, 7 Dec 2022 11:09:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36746 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229548AbiLGQJL (ORCPT ); Wed, 7 Dec 2022 11:09:11 -0500 Received: from out4-smtp.messagingengine.com (out4-smtp.messagingengine.com [66.111.4.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DF93D54B23 for ; Wed, 7 Dec 2022 08:09:10 -0800 (PST) Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 57F075C00A6; Wed, 7 Dec 2022 11:09:10 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Wed, 07 Dec 2022 11:09:10 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1670429350; x= 1670515750; bh=px2+MbhbeI+jrnsZ/vqUEifAPSMXpR4NGEBEX3i+hsw=; b=Y CaxLUsx7sbkNkpYxwbVV5dtH3TbJG0pr0L1judfcJdwMCQJzJCnZiIavSMV0g7Ks YyF0gdwyjwrG8q2N12xJsmPVQokQJsajMUdflALXTZKRVAnyeFpcGV2SCDnoFvEq V79ab1iMFu0eCrT6zMrjypZoNueZBiBvenCg7nmpEClMlFr/BmbujZxd8E3VnC3x u3Dn0QB5/qszbtHKgTdimHbu2gbvoNKcibQV9UMz6OigNVMxIrswoqqXyLBRqJ2h vaKQWFvb7Z3XIXoYVYeGTTnzM6rFfhw1XTCEd3NM1j0wEGxOh0+sKJGwuZxHKuAV NIa+wcCDnwzADN9rZQ0LA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1670429350; x= 1670515750; bh=px2+MbhbeI+jrnsZ/vqUEifAPSMXpR4NGEBEX3i+hsw=; b=l anFwiR4bWUyMdKHuFjfIMQCTitktsAklfKzRoMPcyJXuMmRlc7VZKWoKmTiPGQB+ dLSNYHA38TqvPt7u1jFmf7hWoASTn0ndYdI5GdGSwLA8F8wNiuzWEI5Q56Rh/f8O 8xvGrVJZYncHbJJFZcCso28KaXesRnt24L1lzCs4579Znz1RG/2XzghORO0cJee9 FMJIuJrclpggKINshV+qLTfYNKYOedP/miEgzm9G+ocvnxii9cUgqUBs130ifRuN gCVoVq3BxWRXZWpK6dNOBRgyXAAXdgMyCsRhvbbCiXXRiOOZD1I6pxHXvGxYr8d+ fhsjsSZXDHWVlBpoP1qBA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudekgdekgecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeenucfhrhhomhepofgrgihi mhgvucftihhprghrugcuoehmrgigihhmvgestggvrhhnohdrthgvtghhqeenucggtffrrg htthgvrhhnpeevvdelieejgedvkeffheekheeilefhgefgffehteekueelvddtueffheet ledtffenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe hmrgigihhmvgestggvrhhnohdrthgvtghh X-ME-Proxy: Feedback-ID: i8771445c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 7 Dec 2022 11:09:09 -0500 (EST) From: Maxime Ripard Date: Wed, 07 Dec 2022 17:07:46 +0100 Subject: [PATCH 2/9] drm/vc4: hdmi: Constify container_of wrappers MIME-Version: 1.0 Message-Id: <20221207-rpi-hdmi-improvements-v1-2-6b15f774c13a@cerno.tech> References: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> In-Reply-To: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> To: Emma Anholt , Maxime Ripard , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Dave Stevenson , Maxime Ripard X-Mailer: b4 0.11.0-dev-8c583 X-Developer-Signature: v=1; a=openpgp-sha256; l=1406; i=maxime@cerno.tech; h=from:subject:message-id; bh=dCH6llKR5UwxqNbbxar32+yc+y4RRk/F+4gf1CbtXyE=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDMkTdgV1SruruN33CH23+ET6vpLqMvtVofxOG6dtXczKW7FN Uq+to5SFQYyLQVZMkSVG2HxJ3KlZrzvZ+ObBzGFlAhnCwMUpABMRVWVkeCSoY/rAvPPKJk29p7d+3h VrrQ38mDPROPXpxY9ma43PTGD47zP35PuuwqorzNf7lJSuTX4YvHnBq8u/rnI3RcTFq1+dzgEA X-Developer-Key: i=maxime@cerno.tech; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1751572194637318983?= X-GMAIL-MSGID: =?utf-8?q?1751572194637318983?= None of our wrappers around container_of to access our objects from the DRM object pointer actually modify the latter. Let's make them const. Signed-off-by: Maxime Ripard --- drivers/gpu/drm/vc4/vc4_hdmi.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h index dc3ccd8002a0..023ea64ef006 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.h +++ b/drivers/gpu/drm/vc4/vc4_hdmi.h @@ -224,13 +224,13 @@ struct vc4_hdmi { }; static inline struct vc4_hdmi * -connector_to_vc4_hdmi(struct drm_connector *connector) +connector_to_vc4_hdmi(const struct drm_connector *connector) { return container_of(connector, struct vc4_hdmi, connector); } static inline struct vc4_hdmi * -encoder_to_vc4_hdmi(struct drm_encoder *encoder) +encoder_to_vc4_hdmi(const struct drm_encoder *encoder) { struct vc4_encoder *_encoder = to_vc4_encoder(encoder); return container_of(_encoder, struct vc4_hdmi, encoder); @@ -244,7 +244,7 @@ struct vc4_hdmi_connector_state { }; static inline struct vc4_hdmi_connector_state * -conn_state_to_vc4_hdmi_conn_state(struct drm_connector_state *conn_state) +conn_state_to_vc4_hdmi_conn_state(const struct drm_connector_state *conn_state) { return container_of(conn_state, struct vc4_hdmi_connector_state, base); } From patchwork Wed Dec 7 16:07:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 30912 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp271634wrr; Wed, 7 Dec 2022 08:10:37 -0800 (PST) X-Google-Smtp-Source: AA0mqf7V0li5hs1CtG9i+P9dJSdf0+IedTKsHUPPyuJ9SlqO/tlII14ehtknQo5imObB6Hn+2k5H X-Received: by 2002:a17:906:5156:b0:7c0:efb6:8744 with SMTP id jr22-20020a170906515600b007c0efb68744mr12596650ejc.267.1670429437482; Wed, 07 Dec 2022 08:10:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670429437; cv=none; d=google.com; s=arc-20160816; b=btqw21FLWetlisuN878VAuxozQCi8u0Gjchl/lwlCDPo0s2kqw4Q/bO/7dfS+L4N5G wD+ng9mn+6InPWTUuuiBxsW7f8+sYTuJzQPh66su6YVuh6Q8fMGGcmEP1EU8LFq551wg F4zvbSJJspjbKc7DluQQhYG8on+RV7FpSNBRdHBmEKIH1d60EDpYnzPtjL+YZqYetIcF PpfBNspw32c7NbPJzFtVo9xf9l2sCWNDsHFXVosNPxL2RD3oeo2km8ocT3naVEgYLHmA kDeDjwAKIbzUsX9PPn5BXRIZv8a0X/ORRc8R9x962OJQuzTbAssvEOINOXQuZRpJ8bCJ froA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :feedback-id:dkim-signature:dkim-signature; bh=7vOQ4kY2xlVuqIbP2mOJ++PsRwhZhQVpILcjOtlTWic=; b=DTPuwrXZ615THnT7RK3HwMEgS4bJ9u9u8ZTqOr8HEwfKRuSEZVN7NxRS+xAxvwgJ6E dhvQn1OY9gtTuolHDtoSkiIJ06nArUBJFAODsSsxZ0Kq/TWJTHVRHzsLKVBeGUKuVmjx jXDH7X++ItSx6xNEcjk5/5aTgKYPlfyJVL2PROu6dCqYtQ4ye6ozj3W+7oyXxUPjQnMd paSzDM1RV82hs+Lrz+5LRv4/sAZBTu4LU0saWHCun9FMp3I5T5cT2QXAnxBzdqjX9jBt nU3cUAFb7yP7l7hfz3t/+FaokRi+NCDtA+qqmARveprQ2BTVxVRI317L+iCeGZXWH+78 O3ZQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b=GB6R5APP; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=o9KHYHuh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cerno.tech Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id cm26-20020a0564020c9a00b0046c72d49d6fsi3940907edb.596.2022.12.07.08.10.13; Wed, 07 Dec 2022 08:10:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b=GB6R5APP; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=o9KHYHuh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S229977AbiLGQJX (ORCPT + 99 others); Wed, 7 Dec 2022 11:09:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36766 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229797AbiLGQJN (ORCPT ); Wed, 7 Dec 2022 11:09:13 -0500 Received: from out4-smtp.messagingengine.com (out4-smtp.messagingengine.com [66.111.4.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DF5515FBB4 for ; Wed, 7 Dec 2022 08:09:12 -0800 (PST) Received: from compute6.internal (compute6.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 4CBFB5C0178; Wed, 7 Dec 2022 11:09:12 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute6.internal (MEProxy); Wed, 07 Dec 2022 11:09:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1670429352; x= 1670515752; bh=7vOQ4kY2xlVuqIbP2mOJ++PsRwhZhQVpILcjOtlTWic=; b=G B6R5APPyYEZtroiQFtMXJ9CGldbB0NrOFU2UqqgSjFS0raQrfkhp0M4MiBMRUON7 haBUee1UstM6mR7fbftJBvBiPTBf6CRqf/fQk2jwQwmEKt3+b5FPDvlYlKHfjxWa h7O79Q76x8QAhS7uBl6eainxP0y+CUqMoyWD8PlxZh7k25cnIzaBXscBdGdiYbF3 /KC8kP1Q0gxMsNfCbKuUDef3Gwd90apF89/wzRVrTXF8ZZmWyNrMGBwPj6JV4wgJ uN8IQHdxDUtRbipbd+fJVEnQszOCemsbWrp/F675AuGM6jOryOrkocFemKdfpFii bd7IUPbXyBrYeNg0WLy1A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1670429352; x= 1670515752; bh=7vOQ4kY2xlVuqIbP2mOJ++PsRwhZhQVpILcjOtlTWic=; b=o 9KHYHuhI/pvdvFmhYGzsGgRSW5vvR+EL8OXIU3p+7eLkEKdNpuUZMCm28hp7oTXd ZCWlWqQqA/mGRbbF3JS7b58xVIptTAzI6nU+T0DtT2ywtQ1v9AbS+jgWeF1KD9mB euwVP2uPM6SHacjPbr+nnqZPDHARdMjLwbOa9m5jWNaWY0gArJe6z62fKVmxSAQi z4h9Yq9t4YyJ9P+lu82zawXECwwFgfX/XVev602NI5Qpsotsb2bpozxq6qKjdWDO JLEoxHynTXfRXN2HYc0xklFfhneTziX56qYEvH36eWARhI+WY7LPheKcm5qEoyIW 2MbdsG+ph6eekcx2GM+Mg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudekgdekhecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeenucfhrhhomhepofgrgihi mhgvucftihhprghrugcuoehmrgigihhmvgestggvrhhnohdrthgvtghhqeenucggtffrrg htthgvrhhnpeevvdelieejgedvkeffheekheeilefhgefgffehteekueelvddtueffheet ledtffenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe hmrgigihhmvgestggvrhhnohdrthgvtghh X-ME-Proxy: Feedback-ID: i8771445c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 7 Dec 2022 11:09:11 -0500 (EST) From: Maxime Ripard Date: Wed, 07 Dec 2022 17:07:47 +0100 Subject: [PATCH 3/9] drm/vc4: hdmi: Add Broadcast RGB property to allow override of RGB range MIME-Version: 1.0 Message-Id: <20221207-rpi-hdmi-improvements-v1-3-6b15f774c13a@cerno.tech> References: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> In-Reply-To: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> To: Emma Anholt , Maxime Ripard , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Dave Stevenson , Maxime Ripard X-Mailer: b4 0.11.0-dev-8c583 X-Developer-Signature: v=1; a=openpgp-sha256; l=7949; i=maxime@cerno.tech; h=from:subject:message-id; bh=+kPKqlCCsqLPoCGeW5qfUUrf7WllrgcP3sp7IFnD31o=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDMkTdgX9VDy9zs014Nmuvrmxfxc/KywqebiN4cfBZ64zL/st 7L/b3lHKwiDGxSArpsgSI2y+JO7UrNedbHzzYOawMoEMYeDiFICJXORn+B+yyW/JNKcFKpY1U93Om7 z+Ufb8xQR/w5Vvph5ItLRc87KX4b+XwLMvExo57xbalHN7JWidWzGFuaWw9Uh/Q8bBrGBZTkYA X-Developer-Key: i=maxime@cerno.tech; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1751572218003848342?= X-GMAIL-MSGID: =?utf-8?q?1751572218003848342?= From: Dave Stevenson Copy Intel's "Broadcast RGB" property semantics to add manual override of the HDMI pixel range for monitors that don't abide by the content of the AVI Infoframe. Signed-off-by: Dave Stevenson Signed-off-by: Maxime Ripard --- drivers/gpu/drm/vc4/vc4_hdmi.c | 87 ++++++++++++++++++++++++++++++++++++++++++ drivers/gpu/drm/vc4/vc4_hdmi.h | 15 ++++++++ 2 files changed, 102 insertions(+) diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index 0eafaf0b76e5..488a4012d422 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -154,6 +154,11 @@ static bool vc4_hdmi_is_full_range_rgb(struct vc4_hdmi *vc4_hdmi, { struct drm_display_info *display = &vc4_hdmi->connector.display_info; + if (vc4_hdmi->broadcast_rgb == VC4_HDMI_BROADCAST_RGB_LIMITED) + return false; + else if (vc4_hdmi->broadcast_rgb == VC4_HDMI_BROADCAST_RGB_FULL) + return true; + return !display->is_hdmi || drm_default_rgb_quant_range(mode) == HDMI_QUANTIZATION_RANGE_FULL; } @@ -515,8 +520,12 @@ static int vc4_hdmi_connector_atomic_check(struct drm_connector *connector, { struct drm_connector_state *old_state = drm_atomic_get_old_connector_state(state, connector); + struct vc4_hdmi_connector_state *old_vc4_state = + conn_state_to_vc4_hdmi_conn_state(old_state); struct drm_connector_state *new_state = drm_atomic_get_new_connector_state(state, connector); + struct vc4_hdmi_connector_state *new_vc4_state = + conn_state_to_vc4_hdmi_conn_state(new_state); struct drm_crtc *crtc = new_state->crtc; if (!crtc) @@ -539,6 +548,7 @@ static int vc4_hdmi_connector_atomic_check(struct drm_connector *connector, } if (old_state->colorspace != new_state->colorspace || + old_vc4_state->broadcast_rgb != new_vc4_state->broadcast_rgb || !drm_connector_atomic_hdr_metadata_equal(old_state, new_state)) { struct drm_crtc_state *crtc_state; @@ -552,6 +562,49 @@ static int vc4_hdmi_connector_atomic_check(struct drm_connector *connector, return 0; } +static int vc4_hdmi_connector_get_property(struct drm_connector *connector, + const struct drm_connector_state *state, + struct drm_property *property, + uint64_t *val) +{ + struct drm_device *drm = connector->dev; + struct vc4_hdmi *vc4_hdmi = + connector_to_vc4_hdmi(connector); + struct vc4_hdmi_connector_state *vc4_conn_state = + conn_state_to_vc4_hdmi_conn_state(state); + + if (property == vc4_hdmi->broadcast_rgb_property) { + *val = vc4_conn_state->broadcast_rgb; + } else { + drm_dbg(drm, "Unknown property [PROP:%d:%s]\n", + property->base.id, property->name); + return -EINVAL; + } + + return 0; +} + +static int vc4_hdmi_connector_set_property(struct drm_connector *connector, + struct drm_connector_state *state, + struct drm_property *property, + uint64_t val) +{ + struct drm_device *drm = connector->dev; + struct vc4_hdmi *vc4_hdmi = + connector_to_vc4_hdmi(connector); + struct vc4_hdmi_connector_state *vc4_conn_state = + conn_state_to_vc4_hdmi_conn_state(state); + + if (property == vc4_hdmi->broadcast_rgb_property) { + vc4_conn_state->broadcast_rgb = val; + return 0; + } + + drm_dbg(drm, "Unknown property [PROP:%d:%s]\n", + property->base.id, property->name); + return -EINVAL; +} + static void vc4_hdmi_connector_reset(struct drm_connector *connector) { struct vc4_hdmi_connector_state *old_state = @@ -571,6 +624,7 @@ static void vc4_hdmi_connector_reset(struct drm_connector *connector) new_state->base.max_bpc = 8; new_state->base.max_requested_bpc = 8; new_state->output_format = VC4_HDMI_OUTPUT_RGB; + new_state->broadcast_rgb = VC4_HDMI_BROADCAST_RGB_AUTO; drm_atomic_helper_connector_tv_margins_reset(connector); } @@ -588,6 +642,7 @@ vc4_hdmi_connector_duplicate_state(struct drm_connector *connector) new_state->tmds_char_rate = vc4_state->tmds_char_rate; new_state->output_bpc = vc4_state->output_bpc; new_state->output_format = vc4_state->output_format; + new_state->broadcast_rgb = vc4_state->broadcast_rgb; __drm_atomic_helper_connector_duplicate_state(connector, &new_state->base); return &new_state->base; @@ -598,6 +653,8 @@ static const struct drm_connector_funcs vc4_hdmi_connector_funcs = { .reset = vc4_hdmi_connector_reset, .atomic_duplicate_state = vc4_hdmi_connector_duplicate_state, .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, + .atomic_get_property = vc4_hdmi_connector_get_property, + .atomic_set_property = vc4_hdmi_connector_set_property, }; static const struct drm_connector_helper_funcs vc4_hdmi_connector_helper_funcs = { @@ -606,6 +663,33 @@ static const struct drm_connector_helper_funcs vc4_hdmi_connector_helper_funcs = .atomic_check = vc4_hdmi_connector_atomic_check, }; +static const struct drm_prop_enum_list broadcast_rgb_names[] = { + { VC4_HDMI_BROADCAST_RGB_AUTO, "Automatic" }, + { VC4_HDMI_BROADCAST_RGB_FULL, "Full" }, + { VC4_HDMI_BROADCAST_RGB_LIMITED, "Limited 16:235" }, +}; + +static void +vc4_hdmi_attach_broadcast_rgb_property(struct drm_device *dev, + struct vc4_hdmi *vc4_hdmi) +{ + struct drm_property *prop = vc4_hdmi->broadcast_rgb_property; + + if (!prop) { + prop = drm_property_create_enum(dev, DRM_MODE_PROP_ENUM, + "Broadcast RGB", + broadcast_rgb_names, + ARRAY_SIZE(broadcast_rgb_names)); + if (!prop) + return; + + vc4_hdmi->broadcast_rgb_property = prop; + } + + drm_object_attach_property(&vc4_hdmi->connector.base, prop, + VC4_HDMI_BROADCAST_RGB_AUTO); +} + static int vc4_hdmi_connector_init(struct drm_device *dev, struct vc4_hdmi *vc4_hdmi) { @@ -652,6 +736,8 @@ static int vc4_hdmi_connector_init(struct drm_device *dev, if (vc4_hdmi->variant->supports_hdr) drm_connector_attach_hdr_output_metadata_property(connector); + vc4_hdmi_attach_broadcast_rgb_property(dev, vc4_hdmi); + drm_connector_attach_encoder(connector, encoder); return 0; @@ -1690,6 +1776,7 @@ static void vc4_hdmi_encoder_atomic_mode_set(struct drm_encoder *encoder, mutex_lock(&vc4_hdmi->mutex); drm_mode_copy(&vc4_hdmi->saved_adjusted_mode, &crtc_state->adjusted_mode); + vc4_hdmi->broadcast_rgb = vc4_state->broadcast_rgb; vc4_hdmi->output_bpc = vc4_state->output_bpc; vc4_hdmi->output_format = vc4_state->output_format; mutex_unlock(&vc4_hdmi->mutex); diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h index 023ea64ef006..d423f175339f 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.h +++ b/drivers/gpu/drm/vc4/vc4_hdmi.h @@ -117,6 +117,12 @@ enum vc4_hdmi_output_format { VC4_HDMI_OUTPUT_YUV420, }; +enum vc4_hdmi_broadcast_rgb { + VC4_HDMI_BROADCAST_RGB_AUTO, + VC4_HDMI_BROADCAST_RGB_FULL, + VC4_HDMI_BROADCAST_RGB_LIMITED, +}; + /* General HDMI hardware state. */ struct vc4_hdmi { struct vc4_hdmi_audio audio; @@ -129,6 +135,8 @@ struct vc4_hdmi { struct delayed_work scrambling_work; + struct drm_property *broadcast_rgb_property; + struct i2c_adapter *ddc; void __iomem *hdmicore_regs; void __iomem *hd_regs; @@ -221,6 +229,12 @@ struct vc4_hdmi { * for use outside of KMS hooks. Protected by @mutex. */ enum vc4_hdmi_output_format output_format; + + /** + * @broadcast_rgb: Copy of @vc4_connector_state.broadcast_rgb + * for use outside of KMS hooks. Protected by @mutex. + */ + enum vc4_hdmi_broadcast_rgb broadcast_rgb; }; static inline struct vc4_hdmi * @@ -241,6 +255,7 @@ struct vc4_hdmi_connector_state { unsigned long long tmds_char_rate; unsigned int output_bpc; enum vc4_hdmi_output_format output_format; + int broadcast_rgb; }; static inline struct vc4_hdmi_connector_state * From patchwork Wed Dec 7 16:07:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 30913 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp271726wrr; Wed, 7 Dec 2022 08:10:47 -0800 (PST) X-Google-Smtp-Source: AA0mqf7nNT7Kxy8eSZp/7obj6af51ygaLqLpaiwW5ZEeMcc/Jxmbg1g8BdMKbyryd3LbewQ9JDVM X-Received: by 2002:a17:906:3952:b0:7b9:2a28:f6ff with SMTP id g18-20020a170906395200b007b92a28f6ffmr59559804eje.61.1670429446963; Wed, 07 Dec 2022 08:10:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670429446; cv=none; d=google.com; s=arc-20160816; b=e+QMSeExBZM46/PJAHZWcV9QVA9ruXIZ0zW6SzO8P+QZdd0ozPaPZ9NQYBsDGbVecE ybFkV7JyOH3CgcdRQzyZmkBs71U7SejJJsbbCPVf0XdyhP4JKMtwTgi9+wSudwfeuyzT 8/bztcCoocqXdtbQPu11HiVBx03iMl/awIp5szxYv3yRHR7fZjxc3czdTjdb9J6k8lTl Z2wdPoGumrRg6M/rxDAlZBN6AAEtNnhjdu4U8ho9lfC8oI7wkT7sMMD0OS7NLWJMHCzW /KIiDAJKyX3+u8mIsuE10O+EQU5Ky++rUK0Clab+Gl3dMyP+gGjGF2T1k4vGi4PkxEBA 7URg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :feedback-id:dkim-signature:dkim-signature; bh=wOH8b02xWJ0mRQcHqZZQHEuSYyhICsE6ixqlZb6HdKs=; b=k+2QmNbvsGTqkgGQpslFKlMgdEdVvfA9M112ppoCySoeIhPfRiWBN1/9fc8ae+V4ZN 3jnsVi94UV+nFYyNKiIO+pLwWToiJsxJiPu4kIXxbBCs1N1rnrO4hosIHBEq7qE44CzG 3S77bUOwXq990oQX9hVi6Df2J+mVQ+ffp/AC5Agm7sPB6y1RRSf33KjuGQh201Pb7FpZ juRScJ49XA4zqhW8k1BxQbaAsYOjryAtx3smCqSTLhIy6xJMsPKy/ofOiIT485y1zfb4 WuoslzOMmr10sdjQrjt4THUelleIUi/TBNZaJByfOTd9i+lW3AUc8DBvi8wzOG+0Nyfz GuTA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b=nZjRCRXS; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=XVTpAOgL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cerno.tech Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w1-20020a056402268100b0046b3638938bsi5563604edd.536.2022.12.07.08.10.23; Wed, 07 Dec 2022 08:10:46 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b=nZjRCRXS; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=XVTpAOgL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S229979AbiLGQJ1 (ORCPT + 99 others); Wed, 7 Dec 2022 11:09:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36804 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229875AbiLGQJP (ORCPT ); Wed, 7 Dec 2022 11:09:15 -0500 Received: from out4-smtp.messagingengine.com (out4-smtp.messagingengine.com [66.111.4.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E8AA062EB3 for ; Wed, 7 Dec 2022 08:09:14 -0800 (PST) Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id 60D8C5C00C5; Wed, 7 Dec 2022 11:09:14 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Wed, 07 Dec 2022 11:09:14 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1670429354; x= 1670515754; bh=wOH8b02xWJ0mRQcHqZZQHEuSYyhICsE6ixqlZb6HdKs=; b=n ZjRCRXSXFDQcGdh9cZ7f93KRo2hSU5HpiluUE1BpSQAazB/QdOS4nrisMgMYpEDO UcmCKOekw2iPJW9jBQugsSNUFnJPgTAnnb3kE1aVY6eeA5GQlQUEP00oyYroZWTs O+Ewh7wM/8uFnXpK+7G4LDe4ryY6Gob3BX6Ae+HGrZnsYTR4f5EDaB/jGDLIRBSe Qh+daFX9nyMigC2rTuLoqFCNHYag7ygZE6qBRD7oyO21Y5o302sWQ9sLlUEhHhky 9LZA37GQiDAFHNy89PUkRAQqg6nhXzU1xQT+Exqu8CfbSh7L8UzAf/5//3eptHY5 hvn+5F0sBfSKaL6d26rJw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1670429354; x= 1670515754; bh=wOH8b02xWJ0mRQcHqZZQHEuSYyhICsE6ixqlZb6HdKs=; b=X VTpAOgL3rJmqLfBe801kzt+97X4nUTYMGH/80eXEwO4+PFouyxotZu5y6rdZFLsv SDof97mDYVmRyWGfuemlTsXMovgMNPCvZLjnavsvbgCaGcyAY4EqwgmxUTmBNu6W HGlrtlPaVFz9GVE8ZLrMb/Xla1MeZ+BwnMu6c8i6THPUCQeXSyhAKYMJDDbItTfO Psq15og/cLLGugi9ogyJN7tN6MmeoMsrQZGMXzyb/6uPLsl2VfFnWcD3VHANN+H9 BlbbRg3xCtj2ZoT5Q4yJ35iNslczB1vWdBSF6fFEWzQFZxs3BJiHU2wW1dNpbAIH cKZ2rmxuc8EPMQDtSHsQg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudekgdekgecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeenucfhrhhomhepofgrgihi mhgvucftihhprghrugcuoehmrgigihhmvgestggvrhhnohdrthgvtghhqeenucggtffrrg htthgvrhhnpeevvdelieejgedvkeffheekheeilefhgefgffehteekueelvddtueffheet ledtffenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe hmrgigihhmvgestggvrhhnohdrthgvtghh X-ME-Proxy: Feedback-ID: i8771445c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 7 Dec 2022 11:09:13 -0500 (EST) From: Maxime Ripard Date: Wed, 07 Dec 2022 17:07:48 +0100 Subject: [PATCH 4/9] drm/vc4: hdmi: Rename full range helper MIME-Version: 1.0 Message-Id: <20221207-rpi-hdmi-improvements-v1-4-6b15f774c13a@cerno.tech> References: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> In-Reply-To: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> To: Emma Anholt , Maxime Ripard , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Dave Stevenson , Maxime Ripard X-Mailer: b4 0.11.0-dev-8c583 X-Developer-Signature: v=1; a=openpgp-sha256; l=2384; i=maxime@cerno.tech; h=from:subject:message-id; bh=vvagXCydGCs7AAmT7tK7VEtuwCOyOXRnqiXl7KI3dvs=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDMkTdgXdrNgfPKvm5vyJG9b+UJjzcNnR30z7zy07W6jz8laN 7ml93Y5SFgYxLgZZMUWWGGHzJXGnZr3uZOObBzOHlQlkCAMXpwBMZBoPI8ParTlfz1wsMHy3xnvnW5 fWg/unfV6V4yK74eClnOnBarnzGRkuOCe8+r9rE+PhhoBFyYIv1p7L/rp7V7T+ibfv5rprWTHzAAA= X-Developer-Key: i=maxime@cerno.tech; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1751572227729818279?= X-GMAIL-MSGID: =?utf-8?q?1751572227729818279?= From: Dave Stevenson The VC4 HDMI driver has a helper function to figure out whether full range or limited range RGB is being used called vc4_hdmi_is_full_range_rgb(). We'll need it to support other colorspaces, so let's rename it to vc4_hdmi_is_full_range(). Signed-off-by: Dave Stevenson Signed-off-by: Maxime Ripard Reviewed-by: Thomas Zimmermann --- drivers/gpu/drm/vc4/vc4_hdmi.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index 488a4012d422..51469939a8b4 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -149,8 +149,8 @@ static bool vc4_hdmi_mode_needs_scrambling(const struct drm_display_mode *mode, return clock > HDMI_14_MAX_TMDS_CLK; } -static bool vc4_hdmi_is_full_range_rgb(struct vc4_hdmi *vc4_hdmi, - const struct drm_display_mode *mode) +static bool vc4_hdmi_is_full_range(struct vc4_hdmi *vc4_hdmi, + const struct drm_display_mode *mode) { struct drm_display_info *display = &vc4_hdmi->connector.display_info; @@ -892,7 +892,7 @@ static void vc4_hdmi_set_avi_infoframe(struct drm_encoder *encoder) drm_hdmi_avi_infoframe_quant_range(&frame.avi, connector, mode, - vc4_hdmi_is_full_range_rgb(vc4_hdmi, mode) ? + vc4_hdmi_is_full_range(vc4_hdmi, mode) ? HDMI_QUANTIZATION_RANGE_FULL : HDMI_QUANTIZATION_RANGE_LIMITED); drm_hdmi_avi_infoframe_colorimetry(&frame.avi, cstate); @@ -1145,7 +1145,7 @@ static void vc4_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, csc_ctl = VC4_SET_FIELD(VC4_HD_CSC_CTL_ORDER_BGR, VC4_HD_CSC_CTL_ORDER); - if (!vc4_hdmi_is_full_range_rgb(vc4_hdmi, mode)) { + if (!vc4_hdmi_is_full_range(vc4_hdmi, mode)) { /* CEA VICs other than #1 requre limited range RGB * output unless overridden by an AVI infoframe. * Apply a colorspace conversion to squash 0-255 down @@ -1298,7 +1298,7 @@ static void vc5_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, case VC4_HDMI_OUTPUT_RGB: if_xbar = 0x354021; - if (!vc4_hdmi_is_full_range_rgb(vc4_hdmi, mode)) + if (!vc4_hdmi_is_full_range(vc4_hdmi, mode)) vc5_hdmi_set_csc_coeffs(vc4_hdmi, vc5_hdmi_csc_full_rgb_to_limited_rgb); else vc5_hdmi_set_csc_coeffs(vc4_hdmi, vc5_hdmi_csc_full_rgb_unity); From patchwork Wed Dec 7 16:07:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 30915 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp271835wrr; Wed, 7 Dec 2022 08:10:57 -0800 (PST) X-Google-Smtp-Source: AA0mqf6g836Ys1HHk8ErBnQBJf3lP4MWUPzXj/HenZGa4B1dU64UfwlRSVYhXVusCNmeREwbzYIi X-Received: by 2002:a05:6402:b81:b0:45c:a651:8849 with SMTP id cf1-20020a0564020b8100b0045ca6518849mr12908743edb.209.1670429457578; Wed, 07 Dec 2022 08:10:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670429457; cv=none; d=google.com; s=arc-20160816; b=S/x43wwMdKzAapsySeqkWTBUP8fgaC4U2rQIBJMVlZdaYctSbfD6LiGPpupQd4KPEc kp1Ec0HnR6mUX3S6LKCXbmLWbVxH1Y0E2xiiczcd0GuW0VyWUGdIPv0qNcKPTnpOgJuP q1VcPL7PaLL7EWbAGK077JLkkrObmkm1xRUW76AJqNkyMJfIpIElqdNj7okkl1fGD8CO bSOdwq3RNv1Z4++QfWZqJ9yQpMfQp3uCm2JqoTbL1TCfiDAQ4VSf9UCnGLWdRl6W9wOw hYpHsFDvyWcQYHqJzo1BMPYinm000Rpe82eNqUOZhQicHkrZLfpZRSQWA2SLJmMKZufe HfPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :feedback-id:dkim-signature:dkim-signature; bh=nzYXVlpHr4DJEniOQFydXkuv2oHucdJP3nm3LsVi7Wg=; b=kzlTpiFv9ZPJeJxqIZ9NfV3OJlZ8G981EYIYC+MzgRXQml1B5ikEbMkcxSa7nhkRBk gMqWNVkn7hB9XSC9tN1EHTZu/4dYGpyZ8NQYcedFWNyB2lQFGOOEIx7RWQRkLv+gPAV6 9cVL5apH/NOv+uj0cMWOWdIwq6xT3Wkbs/esA6P0csL9s0vw1Wz/eHCO2oh5RIgj31aR V5lNaWxwM45vpHxz7qJk65pxOwQ6lE/7GwF/tigqjDQOAyFr8RauEa6QxURPD9j7M1Ro SrbuLKeh9TX49T/4P+dhhOu7IDiyaP9fhz8OttjclW26gtD2ORgI9KxXIAzBM+PBqahx o0Yg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b=caji4xJi; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=wWYx8Bps; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cerno.tech Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id qb2-20020a1709077e8200b0078db719e54csi17846765ejc.98.2022.12.07.08.10.30; Wed, 07 Dec 2022 08:10:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b=caji4xJi; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=wWYx8Bps; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S229989AbiLGQJc (ORCPT + 99 others); Wed, 7 Dec 2022 11:09:32 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36884 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229604AbiLGQJT (ORCPT ); Wed, 7 Dec 2022 11:09:19 -0500 Received: from out4-smtp.messagingengine.com (out4-smtp.messagingengine.com [66.111.4.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 15D3763B9B for ; Wed, 7 Dec 2022 08:09:16 -0800 (PST) Received: from compute6.internal (compute6.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 502FB5C018F; Wed, 7 Dec 2022 11:09:16 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute6.internal (MEProxy); Wed, 07 Dec 2022 11:09:16 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1670429356; x= 1670515756; bh=nzYXVlpHr4DJEniOQFydXkuv2oHucdJP3nm3LsVi7Wg=; b=c aji4xJiESE4sWG1qqfVNzHZJmcLRaGZPSu1L/m5MRBqef9QOjSJO4UBgGLtpt7sZ RjscuSTIkVho93yh6AapcbfwdTimKok0+03k460+mmIHqvrM8kFXFNAg2sqEM087 um2/QDrsIygN5cj/D4HwwfKDf0yOCwm2zclL5uhXJXK1MY6FA6BUQVyhzA3kipAQ fq6MfOgWM5h0jWlb/QyhtGVlRroNMxkBVc2GoQ0Y5O71I3i242+3GQyI/HieVodt 9xro4GndnsD76M8C2DELUmCEGAFkOW7nSVAh5ascCutrkMMWg0CBgey5VZTMCS3m F4WPU7zftAg8ZfsKxPKoA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1670429356; x= 1670515756; bh=nzYXVlpHr4DJEniOQFydXkuv2oHucdJP3nm3LsVi7Wg=; b=w WYx8Bpss8nIwjHu69NP2rtZ0AyYXQpmpUiXnPQ08LDc7aRt5IT0E9xYnKeMboS/A RV5Y5r5O1cgnGdVlLoCNKIgsz5APfD95h3f5yjS3w8/mU3HMjQ7ugwuj2mlGU7Gf 3VFm0UEhOjLAL0zbOzgXM1iXtsVAW7ZGo/BdbL0X20weyphj8jHtr3sfvpw1HAWl Is5p766dEfN0JCdX2gAxVve7e4GqXHbi55M1nOnfptZzG6wp7S5DF8fQsvYlbCsb G1T7+YhbKLWOyUVEDpUbpogTtwDHIwunFxTkiqhSe9bUiGx6uoAjlwkAMs5z8/pA sZ/kGlMdKS18OpBqi6/zA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudekgdekhecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeenucfhrhhomhepofgrgihi mhgvucftihhprghrugcuoehmrgigihhmvgestggvrhhnohdrthgvtghhqeenucggtffrrg htthgvrhhnpeevvdelieejgedvkeffheekheeilefhgefgffehteekueelvddtueffheet ledtffenucevlhhushhtvghrufhiiigvpedunecurfgrrhgrmhepmhgrihhlfhhrohhmpe hmrgigihhmvgestggvrhhnohdrthgvtghh X-ME-Proxy: Feedback-ID: i8771445c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 7 Dec 2022 11:09:15 -0500 (EST) From: Maxime Ripard Date: Wed, 07 Dec 2022 17:07:49 +0100 Subject: [PATCH 5/9] drm/vc4: hdmi: Rework the CSC matrices organization MIME-Version: 1.0 Message-Id: <20221207-rpi-hdmi-improvements-v1-5-6b15f774c13a@cerno.tech> References: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> In-Reply-To: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> To: Emma Anholt , Maxime Ripard , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Dave Stevenson , Maxime Ripard X-Mailer: b4 0.11.0-dev-8c583 X-Developer-Signature: v=1; a=openpgp-sha256; l=6415; i=maxime@cerno.tech; h=from:subject:message-id; bh=G1kYxw4a/X7kQqYgZh8cknQwFpSgW5utRkEkpGJILs4=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDMkTdgV9y4zdJ/v/y/2z7qL7bp77qCV9LN801c15on/KSfsK piMnO0pZGMS4GGTFFFlihM2XxJ2a9bqTjW8ezBxWJpAhDFycAjCRzbcZGWZk2L0z5FKcbuTQYLPRce PNz45rt52e3BZcf7mu6dbCRe8Y/iltiX9zs/How6jTk8y/8D8Mennf0nX/qUruE1sUTj8TKeUBAA== X-Developer-Key: i=maxime@cerno.tech; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1751572238893475962?= X-GMAIL-MSGID: =?utf-8?q?1751572238893475962?= From: Dave Stevenson The CSC matrices were stored as separate matrix for each colorspace, and if we wanted a limited or full RGB output. This created some gaps in our support and we would not always pick the relevant matrix. Let's rework our data structure to store one per colorspace, and then a matrix for limited range and one for full range. This makes us add a new matrix to support full range BT709 YUV output, and drops the redundant (but somehow different) BT709 YUV444 vs YUV422 matrix. Signed-off-by: Dave Stevenson Signed-off-by: Maxime Ripard --- drivers/gpu/drm/vc4/vc4_hdmi.c | 124 +++++++++++++++++++++-------------------- 1 file changed, 63 insertions(+), 61 deletions(-) diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index 51469939a8b4..299a8fe7a2ae 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -1178,68 +1178,72 @@ static void vc4_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, } /* - * If we need to output Full Range RGB, then use the unity matrix + * Matrices for (internal) RGB to RGB output. * - * [ 1 0 0 0] - * [ 0 1 0 0] - * [ 0 0 1 0] - * - * Matrix is signed 2p13 fixed point, with signed 9p6 offsets - */ -static const u16 vc5_hdmi_csc_full_rgb_unity[3][4] = { - { 0x2000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x2000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x2000, 0x0000 }, -}; - -/* - * CEA VICs other than #1 require limited range RGB output unless - * overridden by an AVI infoframe. Apply a colorspace conversion to - * squash 0-255 down to 16-235. The matrix here is: - * - * [ 0.8594 0 0 16] - * [ 0 0.8594 0 16] - * [ 0 0 0.8594 16] - * - * Matrix is signed 2p13 fixed point, with signed 9p6 offsets + * Matrices are signed 2p13 fixed point, with signed 9p6 offsets */ -static const u16 vc5_hdmi_csc_full_rgb_to_limited_rgb[3][4] = { - { 0x1b80, 0x0000, 0x0000, 0x0400 }, - { 0x0000, 0x1b80, 0x0000, 0x0400 }, - { 0x0000, 0x0000, 0x1b80, 0x0400 }, +static const u16 vc5_hdmi_csc_full_rgb_to_rgb[2][3][4] = { + { + /* + * Full range - unity + * + * [ 1 0 0 0] + * [ 0 1 0 0] + * [ 0 0 1 0] + */ + { 0x2000, 0x0000, 0x0000, 0x0000 }, + { 0x0000, 0x2000, 0x0000, 0x0000 }, + { 0x0000, 0x0000, 0x2000, 0x0000 }, + }, + { + /* + * Limited range + * + * CEA VICs other than #1 require limited range RGB + * output unless overridden by an AVI infoframe. Apply a + * colorspace conversion to squash 0-255 down to 16-235. + * The matrix here is: + * + * [ 0.8594 0 0 16] + * [ 0 0.8594 0 16] + * [ 0 0 0.8594 16] + */ + { 0x1b80, 0x0000, 0x0000, 0x0400 }, + { 0x0000, 0x1b80, 0x0000, 0x0400 }, + { 0x0000, 0x0000, 0x1b80, 0x0400 }, + }, }; /* - * Conversion between Full Range RGB and Full Range YUV422 using the - * BT.709 Colorspace - * - * - * [ 0.181906 0.611804 0.061758 16 ] - * [ -0.100268 -0.337232 0.437500 128 ] - * [ 0.437500 -0.397386 -0.040114 128 ] - * - * Matrix is signed 2p13 fixed point, with signed 9p6 offsets - */ -static const u16 vc5_hdmi_csc_full_rgb_to_limited_yuv422_bt709[3][4] = { - { 0x05d2, 0x1394, 0x01fa, 0x0400 }, - { 0xfccc, 0xf536, 0x0e00, 0x2000 }, - { 0x0e00, 0xf34a, 0xfeb8, 0x2000 }, -}; - -/* - * Conversion between Full Range RGB and Full Range YUV444 using the - * BT.709 Colorspace - * - * [ -0.100268 -0.337232 0.437500 128 ] - * [ 0.437500 -0.397386 -0.040114 128 ] - * [ 0.181906 0.611804 0.061758 16 ] + * Conversion between Full Range RGB and YUV using the BT.709 Colorspace * - * Matrix is signed 2p13 fixed point, with signed 9p6 offsets + * Matrices are signed 2p13 fixed point, with signed 9p6 offsets */ -static const u16 vc5_hdmi_csc_full_rgb_to_limited_yuv444_bt709[3][4] = { - { 0xfccc, 0xf536, 0x0e00, 0x2000 }, - { 0x0e00, 0xf34a, 0xfeb8, 0x2000 }, - { 0x05d2, 0x1394, 0x01fa, 0x0400 }, +static const u16 vc5_hdmi_csc_full_rgb_to_yuv_bt709[2][3][4] = { + { + /* + * Full Range + * + * [ 0.212600 0.715200 0.072200 0 ] + * [ -0.114572 -0.385428 0.500000 128 ] + * [ 0.500000 -0.454153 -0.045847 128 ] + */ + { 0x06ce, 0x16e3, 0x024f, 0x0000 }, + { 0xfc56, 0xf3ac, 0x1000, 0x2000 }, + { 0x1000, 0xf179, 0xfe89, 0x2000 }, + }, + { + /* + * Limited Range + * + * [ 0.181906 0.611804 0.061758 16 ] + * [ -0.100268 -0.337232 0.437500 128 ] + * [ 0.437500 -0.397386 -0.040114 128 ] + */ + { 0x05d2, 0x1394, 0x01fa, 0x0400 }, + { 0xfccc, 0xf536, 0x0e00, 0x2000 }, + { 0x0e00, 0xf34a, 0xfeb8, 0x2000 }, + }, }; static void vc5_hdmi_set_csc_coeffs(struct vc4_hdmi *vc4_hdmi, @@ -1262,6 +1266,7 @@ static void vc5_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, struct drm_device *drm = vc4_hdmi->connector.dev; struct vc4_hdmi_connector_state *vc4_state = conn_state_to_vc4_hdmi_conn_state(state); + unsigned int lim_range = vc4_hdmi_is_full_range(vc4_hdmi, mode) ? 0 : 1; unsigned long flags; u32 if_cfg = 0; u32 if_xbar = 0x543210; @@ -1277,7 +1282,7 @@ static void vc5_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, switch (vc4_state->output_format) { case VC4_HDMI_OUTPUT_YUV444: - vc5_hdmi_set_csc_coeffs(vc4_hdmi, vc5_hdmi_csc_full_rgb_to_limited_yuv444_bt709); + vc5_hdmi_set_csc_coeffs(vc4_hdmi, vc5_hdmi_csc_full_rgb_to_yuv_bt709[lim_range]); break; case VC4_HDMI_OUTPUT_YUV422: @@ -1292,16 +1297,13 @@ static void vc5_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, if_cfg |= VC4_SET_FIELD(VC5_DVP_HT_VEC_INTERFACE_CFG_SEL_422_FORMAT_422_LEGACY, VC5_DVP_HT_VEC_INTERFACE_CFG_SEL_422); - vc5_hdmi_set_csc_coeffs(vc4_hdmi, vc5_hdmi_csc_full_rgb_to_limited_yuv422_bt709); + vc5_hdmi_set_csc_coeffs(vc4_hdmi, vc5_hdmi_csc_full_rgb_to_yuv_bt709[lim_range]); break; case VC4_HDMI_OUTPUT_RGB: if_xbar = 0x354021; - if (!vc4_hdmi_is_full_range(vc4_hdmi, mode)) - vc5_hdmi_set_csc_coeffs(vc4_hdmi, vc5_hdmi_csc_full_rgb_to_limited_rgb); - else - vc5_hdmi_set_csc_coeffs(vc4_hdmi, vc5_hdmi_csc_full_rgb_unity); + vc5_hdmi_set_csc_coeffs(vc4_hdmi, vc5_hdmi_csc_full_rgb_to_rgb[lim_range]); break; default: From patchwork Wed Dec 7 16:07:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 30914 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp271818wrr; Wed, 7 Dec 2022 08:10:55 -0800 (PST) X-Google-Smtp-Source: AA0mqf6nv/vNLDyR1uBpVv4wB7oMw/zsiOWs7LfKtTBXzDsti9cDNEAG803AQHiMU8K1+IyHs9FL X-Received: by 2002:a17:902:b10b:b0:189:bf5d:c963 with SMTP id q11-20020a170902b10b00b00189bf5dc963mr25181886plr.119.1670429455349; Wed, 07 Dec 2022 08:10:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670429455; cv=none; d=google.com; s=arc-20160816; b=tC1j69fDlKb2jfySGBNC7nOZfk6ezWK2fFvK60BjF2vhDcnRm/mDgZSPneucVz4InP hDAiaB5MiV8OUwT4jFcZKSSYi/H3sSVWCRRbAsyvesh5jID9p0buThgNz5EuRbBIK7SU BZnanU/a1yg1p9Pu0+6+RrMJaVLVt0PXoHD2ebYP4AdYCmLBsIKHepWzJj1Qh9xl4hbv bH0gG0vhWbDSHs1N9IDAUjc7Dca2Ywx+ZwhR3oPHmb3eKoBVAPTfY2ec+zEeIbdPOiJb l+wscP0NpUvpnacGkdHEZ2ATO9tEI7mj4GeppjcRG9K2zy989lx2v5FYECeCWPD8gkpp dqdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :feedback-id:dkim-signature:dkim-signature; bh=aU3+SAGNsaXTIACYBbikYt5EqyP0a5oCez925jVkFE4=; b=VW1IvXt7SHd8eA1iqcHAN+Gg0xyO9JhrpL+aa1JYzKeZh8hcKFRmaXzX+KGxTBWp0h xJbh7qPYNZfqCrrGYCwi0YhLxtWbO7ht6DOFF7x/1nQQxGOSuABTyXSlnLmifEOJXUE8 0o4r4uFGUI4OR0lpwgS1x0csUtyVBvsINiXa2xh8kJItJyELoZpInFjOcVTCSohWgoIF udoJROKtBONUN63P1juMobwG1MdtNLkpLTBYZh44stOHpX+6D2soXpdenrtwig3AlhRn T9vWyqf8RNP7Cmny1OfQmlndWaOu+2qJB3poBNxJYd1JxRnsGiq17UgouliTRouvVxFk /m8A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b=J2ChyCnA; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=dVCvYLmS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cerno.tech Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q4-20020a170902dac400b0018725c072a3si23245579plx.539.2022.12.07.08.10.38; Wed, 07 Dec 2022 08:10:55 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b=J2ChyCnA; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=dVCvYLmS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S229691AbiLGQJk (ORCPT + 99 others); Wed, 7 Dec 2022 11:09:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37036 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229975AbiLGQJX (ORCPT ); Wed, 7 Dec 2022 11:09:23 -0500 Received: from out4-smtp.messagingengine.com (out4-smtp.messagingengine.com [66.111.4.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C08CD62EAF for ; Wed, 7 Dec 2022 08:09:18 -0800 (PST) Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id 326A15C0154; Wed, 7 Dec 2022 11:09:18 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Wed, 07 Dec 2022 11:09:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1670429358; x= 1670515758; bh=aU3+SAGNsaXTIACYBbikYt5EqyP0a5oCez925jVkFE4=; b=J 2ChyCnA2225kuUEj6xBgak1VxM4FF3b3EAwTiuRS9A6ffLxm2Jg8o//EDv+/dExx 579xkMQVm5XtCZgZqCXAteYeKtFJ7Q2WQQOhg+QISpWo9KNNEk4+7Ksq/1oCfgOq 5BHQi7L1iF2s9Bd0GM7cAEBSVGAp9jyzWKGNq2vMWRD8P/bukehW7z/6AGLP12dw bMAQ3y58vJ85ier0RMKuewR+IgpJvlsg3fN3ZpQMpMc3pHtFdOD/t+kT7Hq3vO0y qfU71BSNDerBcAHMHUrL05wDemPAReHG6wUE6jOH/pkUmNoDI9qH0Vee/xmTGfPV AmfXBAdr7U+sr8Su22UGQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1670429358; x= 1670515758; bh=aU3+SAGNsaXTIACYBbikYt5EqyP0a5oCez925jVkFE4=; b=d VCvYLmSr9I+7Mk70730rJXmpEHXudXrNEFo35GtIxKnxJVob4qO3uoO3JZUmSAc3 hPGfwvBXEJDlLyZ5x+Xvr/QfUnQGnM6xxcRPT1WE2bHn4/itfbNNENAr1YwV7WxK MhIoLBhWES1j3cOOjZzCTzrczBF4ou88B6plZNA0b42o2s5N7c/bXpPY3DLkxaGv VMtcNkS23a9mkLdvlIMSWn30FUCPrUCm11DTGtqLbjWzqDRQB+BTyolRAmIXEoh5 o9XKm9sKYCdQKGTqhPbT+45Vf3x9i3CJd4XqKloC2t8fpYhBdGBoconDChWLUynE 3Cmiefqccfn47qou4zD5w== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudekgdekgecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeenucfhrhhomhepofgrgihi mhgvucftihhprghrugcuoehmrgigihhmvgestggvrhhnohdrthgvtghhqeenucggtffrrg htthgvrhhnpeevvdelieejgedvkeffheekheeilefhgefgffehteekueelvddtueffheet ledtffenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe hmrgigihhmvgestggvrhhnohdrthgvtghh X-ME-Proxy: Feedback-ID: i8771445c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 7 Dec 2022 11:09:17 -0500 (EST) From: Maxime Ripard Date: Wed, 07 Dec 2022 17:07:50 +0100 Subject: [PATCH 6/9] drm/vc4: hdmi: Swap CSC matrix channels for YUV444 MIME-Version: 1.0 Message-Id: <20221207-rpi-hdmi-improvements-v1-6-6b15f774c13a@cerno.tech> References: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> In-Reply-To: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> To: Emma Anholt , Maxime Ripard , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Dave Stevenson , Maxime Ripard X-Mailer: b4 0.11.0-dev-8c583 X-Developer-Signature: v=1; a=openpgp-sha256; l=1941; i=maxime@cerno.tech; h=from:subject:message-id; bh=PjOw181ve0z7NoRfNls2DdNyUoLxdXweXksOmPbbBG8=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDMkTdgWp3Z8faOn3KUxnnUda5jPha3pPXx+9HHJ8Q8y0+Wtl exfv6yhlYRDjYpAVU2SJETZfEndq1utONr55MHNYmUCGMHBxCsBEZvUz/C8rkLhZxr6mOu+K9gXF5x Gh7rf/zBfe4H7IqfDwh3k+dtsY/teWXvksp3W3O/eVrrJ6wvvWGpbDLPNcnywq/iTGUmC/ghkA X-Developer-Key: i=maxime@cerno.tech; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1751572236292652156?= X-GMAIL-MSGID: =?utf-8?q?1751572236292652156?= From: Dave Stevenson YUV444 requires the matrix coefficients to be programmed in a different way than the other formats. Let's add a function to program it properly. Signed-off-by: Dave Stevenson Signed-off-by: Maxime Ripard Reviewed-by: Thomas Zimmermann --- drivers/gpu/drm/vc4/vc4_hdmi.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index 299a8fe7a2ae..cb92d07680f0 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -1259,6 +1259,20 @@ static void vc5_hdmi_set_csc_coeffs(struct vc4_hdmi *vc4_hdmi, HDMI_WRITE(HDMI_CSC_34_33, (coeffs[2][3] << 16) | coeffs[2][2]); } +static void vc5_hdmi_set_csc_coeffs_swap(struct vc4_hdmi *vc4_hdmi, + const u16 coeffs[3][4]) +{ + lockdep_assert_held(&vc4_hdmi->hw_lock); + + /* YUV444 needs the CSC matrices using the channels in a different order */ + HDMI_WRITE(HDMI_CSC_12_11, (coeffs[2][1] << 16) | coeffs[2][0]); + HDMI_WRITE(HDMI_CSC_14_13, (coeffs[2][3] << 16) | coeffs[2][2]); + HDMI_WRITE(HDMI_CSC_22_21, (coeffs[0][1] << 16) | coeffs[0][0]); + HDMI_WRITE(HDMI_CSC_24_23, (coeffs[0][3] << 16) | coeffs[0][2]); + HDMI_WRITE(HDMI_CSC_32_31, (coeffs[1][1] << 16) | coeffs[1][0]); + HDMI_WRITE(HDMI_CSC_34_33, (coeffs[1][3] << 16) | coeffs[1][2]); +} + static void vc5_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, struct drm_connector_state *state, const struct drm_display_mode *mode) @@ -1282,7 +1296,8 @@ static void vc5_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, switch (vc4_state->output_format) { case VC4_HDMI_OUTPUT_YUV444: - vc5_hdmi_set_csc_coeffs(vc4_hdmi, vc5_hdmi_csc_full_rgb_to_yuv_bt709[lim_range]); + vc5_hdmi_set_csc_coeffs_swap(vc4_hdmi, + vc5_hdmi_csc_full_rgb_to_yuv_bt709[lim_range]); break; case VC4_HDMI_OUTPUT_YUV422: From patchwork Wed Dec 7 16:07:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 30916 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp271834wrr; Wed, 7 Dec 2022 08:10:57 -0800 (PST) X-Google-Smtp-Source: AA0mqf73h46Tq3367K1WkeMJjlcgaEh6hAGrXhRHqbJc/iq2ZF/aVLkicLc6D/rCVqDHSMU3M4/b X-Received: by 2002:a05:6a00:21c8:b0:562:e0fb:3c79 with SMTP id t8-20020a056a0021c800b00562e0fb3c79mr74719862pfj.39.1670429457383; Wed, 07 Dec 2022 08:10:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670429457; cv=none; d=google.com; s=arc-20160816; b=YDMxHzXwjyi9+ZFVCY//M/2JMPsRwCCaxli9YcPfs+sUohoZ37y7LgbQ7sjYGbelfv +GC+e7466ttQr+eZqWgEcTGdLT0bb7XgL+1xFPlez0W86fzVgCko0uQVnEpjIIxqAMr1 dG14RCvyq7C9qa8oTtwefdmOMQLukYXBMhpWMhRFY4KwV9o8DcwXvXU5dji5FSAMU9ZN u4lUVOd9PUT9gSDiw5SzQzYIOK+J9jPPH8QAMW+j5mfxgM+l0qRwKDDhYM8yV9Xb1JQf bN49PjTXBfB8oUl4TPms2yKyTyBn0FNwIOKnogG8sDk7vuN72M7Ugz3WtzyBtKMi3ufj uKqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :feedback-id:dkim-signature:dkim-signature; bh=VANsvsLz3xnVIYxpgJjZLKq+5JcSs2mZ7cYzZ7vM/6c=; b=gWCpX4dw+PYtbZumKhhXzFvxVn50LBf38581kKR68jzItm3txqylPf8VzFVuvbtGy1 QQReR9wfhPOvlb/UdND4ZnAGCQxxIjOIx/vOxu9UuEj0vzmrE2erMJ/JwmALJguzM3E4 r5AMRKbYsMNWnlONUxJPeF4XAPdCA4IJZvAk8WMSl3TCHzX5WmfMc8IYk+hBvEnByjJr d4jNXYbKP2m6h3uUK5TH7ku4nJ8JNfAoR5WeLoFYFGD5aiv29o1cMlhDnrV3JkGY2Ksn HEH8MHdrN4f9xB7KRzJepNEp/lxJoM+iN9LN8OOOnjEWJEjRCY5ygJfVCtptxOqkCKTS KzMg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b=bH2bT59M; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=O2ESWZHo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cerno.tech Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h7-20020a056a00170700b005251a2f06bbsi22975607pfc.59.2022.12.07.08.10.41; Wed, 07 Dec 2022 08:10:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b=bH2bT59M; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=O2ESWZHo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S229972AbiLGQJo (ORCPT + 99 others); Wed, 7 Dec 2022 11:09:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36916 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229948AbiLGQJ0 (ORCPT ); Wed, 7 Dec 2022 11:09:26 -0500 Received: from out4-smtp.messagingengine.com (out4-smtp.messagingengine.com [66.111.4.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A8B2C654C7 for ; Wed, 7 Dec 2022 08:09:20 -0800 (PST) Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id 0AB795C00D4; Wed, 7 Dec 2022 11:09:20 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Wed, 07 Dec 2022 11:09:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1670429360; x= 1670515760; bh=VANsvsLz3xnVIYxpgJjZLKq+5JcSs2mZ7cYzZ7vM/6c=; b=b H2bT59MZI6UEavku6zf6hrDgDiCyinlPOlRsZe4isagAWVAYOqMuVoA5trznEEfk Yv5YMmC7BxJq/PJ/8PHQ7CbNyktc3SXgcUmad+B+WO0ZFt9KwWy4eIA2ijObjQO3 RN5wcwymOjc2pa9h96mktqAA+a5l8rVR9knwpCzE9lgyOV6QrodzzSbEgxXRHFqD POv3XE6c9K2dVZCo+GsPBEFLhHuWp1JEW1VgpYzS5O9zGPuRyXE2cFlZG1iq8p7W 8tJD4VsJhr1vp/ZmBz/MI/yvw3JzzDSCFnG5jlxAMkuWKb9KA875BCju+lU+yqA1 uSmYZKFm+ogNniC4c3nEw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1670429360; x= 1670515760; bh=VANsvsLz3xnVIYxpgJjZLKq+5JcSs2mZ7cYzZ7vM/6c=; b=O 2ESWZHo5gccbRd1u91NFcyZrreNEK44zT4xL7c/vgtI3noUsGVh4FFrOqOK4iw4r 7sMcHiLx19IFbUGGb12AQzzM1isX/jrJdf/zTs5By9dClA2WG6ulcR/lDO8BYhBX i2HMdsWPpulBs9M79XIZaVY2cC/XYwi7/SBEXUSHRcecxBKr0yC9jxRWL2RE8iaq WT7ux3SvSvzewG60o0ROFbATt2af1Tw3JmytnNXbrhvH/XKM2QyyPM7BdaFo0J1K C88+UfxNaySbBqR9J+LQL++5GH/pUWiI2IeBekQyP4wEnDJ56+30oRvfUubNyoco 377qr94WVuTUdUQ0zb/tg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudekgdekgecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeenucfhrhhomhepofgrgihi mhgvucftihhprghrugcuoehmrgigihhmvgestggvrhhnohdrthgvtghhqeenucggtffrrg htthgvrhhnpeevvdelieejgedvkeffheekheeilefhgefgffehteekueelvddtueffheet ledtffenucevlhhushhtvghrufhiiigvpedunecurfgrrhgrmhepmhgrihhlfhhrohhmpe hmrgigihhmvgestggvrhhnohdrthgvtghh X-ME-Proxy: Feedback-ID: i8771445c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 7 Dec 2022 11:09:19 -0500 (EST) From: Maxime Ripard Date: Wed, 07 Dec 2022 17:07:51 +0100 Subject: [PATCH 7/9] drm/vc4: hdmi: Add a function to retrieve the CSC matrix MIME-Version: 1.0 Message-Id: <20221207-rpi-hdmi-improvements-v1-7-6b15f774c13a@cerno.tech> References: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> In-Reply-To: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> To: Emma Anholt , Maxime Ripard , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Dave Stevenson , Maxime Ripard X-Mailer: b4 0.11.0-dev-8c583 X-Developer-Signature: v=1; a=openpgp-sha256; l=2861; i=maxime@cerno.tech; h=from:subject:message-id; bh=xAmnB0avYsRh5WF1+mP80EaoZr0FJhVVGPCw1ocrG8c=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDMkTdgWvVm95c+vmnI//4vpjc8xXb3r8+8PdA6d/q36Kd7+w a7qNfkcpC4MYF4OsmCJLjLD5krhTs153svHNg5nDygQyhIGLUwAmIhbA8N/9Udiz5eYmvtO2ybVPuv KJg9nr09F1EpPWL/DN//hrRf5jRoZ52x/cMt1+WniHlCxfb7rHnj/dT+7O+6q0dfHrwmPqX1lZAA== X-Developer-Key: i=maxime@cerno.tech; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1751572238513029827?= X-GMAIL-MSGID: =?utf-8?q?1751572238513029827?= From: Dave Stevenson The CSC matrix to use depends on the output format, its range and the colorspace. Since we're going to add more colorspaces, let's move the CSC matrix retrieval to a function. Signed-off-by: Dave Stevenson Signed-off-by: Maxime Ripard Reviewed-by: Thomas Zimmermann --- drivers/gpu/drm/vc4/vc4_hdmi.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index cb92d07680f0..cd6775429b5e 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -1273,6 +1273,20 @@ static void vc5_hdmi_set_csc_coeffs_swap(struct vc4_hdmi *vc4_hdmi, HDMI_WRITE(HDMI_CSC_34_33, (coeffs[1][3] << 16) | coeffs[1][2]); } +static const u16 +(*vc5_hdmi_get_yuv_csc_coeffs(struct vc4_hdmi *vc4_hdmi, u32 colorspace, bool limited))[4] +{ + switch (colorspace) { + default: + case DRM_MODE_COLORIMETRY_NO_DATA: + case DRM_MODE_COLORIMETRY_BT709_YCC: + case DRM_MODE_COLORIMETRY_XVYCC_709: + case DRM_MODE_COLORIMETRY_RGB_WIDE_FIXED: + case DRM_MODE_COLORIMETRY_RGB_WIDE_FLOAT: + return vc5_hdmi_csc_full_rgb_to_yuv_bt709[limited]; + } +} + static void vc5_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, struct drm_connector_state *state, const struct drm_display_mode *mode) @@ -1282,6 +1296,7 @@ static void vc5_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, conn_state_to_vc4_hdmi_conn_state(state); unsigned int lim_range = vc4_hdmi_is_full_range(vc4_hdmi, mode) ? 0 : 1; unsigned long flags; + const u16 (*csc)[4]; u32 if_cfg = 0; u32 if_xbar = 0x543210; u32 csc_chan_ctl = 0; @@ -1296,11 +1311,16 @@ static void vc5_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, switch (vc4_state->output_format) { case VC4_HDMI_OUTPUT_YUV444: - vc5_hdmi_set_csc_coeffs_swap(vc4_hdmi, - vc5_hdmi_csc_full_rgb_to_yuv_bt709[lim_range]); + csc = vc5_hdmi_get_yuv_csc_coeffs(vc4_hdmi, state->colorspace, + vc4_hdmi_is_full_range(vc4_hdmi, mode)); + + vc5_hdmi_set_csc_coeffs_swap(vc4_hdmi, csc); break; case VC4_HDMI_OUTPUT_YUV422: + csc = vc5_hdmi_get_yuv_csc_coeffs(vc4_hdmi, state->colorspace, + vc4_hdmi_is_full_range(vc4_hdmi, mode)); + csc_ctl |= VC4_SET_FIELD(VC5_MT_CP_CSC_CTL_FILTER_MODE_444_TO_422_STANDARD, VC5_MT_CP_CSC_CTL_FILTER_MODE_444_TO_422) | VC5_MT_CP_CSC_CTL_USE_444_TO_422 | @@ -1312,7 +1332,7 @@ static void vc5_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, if_cfg |= VC4_SET_FIELD(VC5_DVP_HT_VEC_INTERFACE_CFG_SEL_422_FORMAT_422_LEGACY, VC5_DVP_HT_VEC_INTERFACE_CFG_SEL_422); - vc5_hdmi_set_csc_coeffs(vc4_hdmi, vc5_hdmi_csc_full_rgb_to_yuv_bt709[lim_range]); + vc5_hdmi_set_csc_coeffs(vc4_hdmi, csc); break; case VC4_HDMI_OUTPUT_RGB: From patchwork Wed Dec 7 16:07:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 30917 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp272387wrr; Wed, 7 Dec 2022 08:11:52 -0800 (PST) X-Google-Smtp-Source: AA0mqf7OwUxo4oWxK0xPCrW39OUfZZD9EQ1RE7YbLBmk81ZcXkYUxsrkEftoMBokm04GVV6bZsKx X-Received: by 2002:a17:902:bb10:b0:189:6292:827e with SMTP id im16-20020a170902bb1000b001896292827emr63127782plb.97.1670429512462; Wed, 07 Dec 2022 08:11:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670429512; cv=none; d=google.com; s=arc-20160816; b=jzjXyEyCfBX07/Vs+TzdiK4rVTnXiLFUzdx2oOzWRArf+JHvmX602H2hElbEpmjwLS DoCoIForoFWkST1xtoFyorgA5VjW1SMMfQ1ZZA/ckTL43gpJhKrEnFTRO2GKOzZEb8sc Vq1VQF8qZq/CCrJrpoddsa2ZdmI5GrGOT7uRjzXWMnl/o+SO8Lw3IayWBxo/eihcoihh Pq2alDfHDQqe6YsALItbx7dnHxMMavycfjWlbY007G2Pz+3Yr6d4LopDZZMZSCSk/50w 193RxmXGTDd8GCoKFQaTFVFwiK6xuhI8qJklrz9XyLxaYSmjJGoYM3Rm8IhZoXLbMO14 XE5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :feedback-id:dkim-signature:dkim-signature; bh=YHRLmuQhYpWVXrMM0zJgMc8WtAAfUasmH7iyil8sVlg=; b=zh5ktPyAwRb7wZChpHrByl46925BfQTVolYl7u8gaBPIMcv8/7LEI4fPjCqnVtHxaw /Yfjq8Prmlu6Hegbiz+vf0GYM6vY0vB8TbRIGFsVo2aL7Ofbsr+w89zXgo4c2ZePAJ2M qnv62PrJOQYNcG3H2Typz97fVzQ+yFDIxUbFZ9/3H9KfQjYCL5RqXISL2falHlHSIZwL xNvKn0PYPm/TDuL+8KpO36437aLLNq+GvIu3lDAFbKwE85nhSKvVDrMWx2JjP63JCt3o x+yC9TBT0hWeUPohjXOM7UnW9TgR6dSMfxST24LRd/m+oy0NsI4mLgH/lbMCO7Pw0rxZ RJ6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b=QBIQ1Ofm; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=sgG5OWan; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cerno.tech Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id r134-20020a632b8c000000b0046edec119f6si21976015pgr.227.2022.12.07.08.11.31; Wed, 07 Dec 2022 08:11:52 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b=QBIQ1Ofm; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=sgG5OWan; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S229866AbiLGQJs (ORCPT + 99 others); Wed, 7 Dec 2022 11:09:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37262 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229978AbiLGQJ1 (ORCPT ); Wed, 7 Dec 2022 11:09:27 -0500 Received: from out4-smtp.messagingengine.com (out4-smtp.messagingengine.com [66.111.4.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D7AF3654F4 for ; Wed, 7 Dec 2022 08:09:22 -0800 (PST) Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id CE3655C018B; Wed, 7 Dec 2022 11:09:21 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Wed, 07 Dec 2022 11:09:21 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1670429361; x= 1670515761; bh=YHRLmuQhYpWVXrMM0zJgMc8WtAAfUasmH7iyil8sVlg=; b=Q BIQ1OfmHXibD+vIWxQJj8IeuQ0eJRI1lyD2CIfN86rxVJfv+WA1UcDUDXq9Tal6b L0NuDfzknTYOgIcqqMgvaZ4cycHCG/tGbBgfiqrchxHVHHm3iYxTl2tLYYzQMtKv LfuZsVyszV3Gl4+LGm51ODuSIXzJGl+C2MCNf1N824tRYH9y5lpD3uhRIlPxcJ2+ wGU3cbQeZ7C5yA1vXiUBd7anQ5iATJ0GumbJcJSiOpbPHiq8qMn0I0hxA0VpOVAS cbs8SOIw51Xx0W+ZTglhJAdS/WGFjzWhXiLTTlvXKB33csLJCQWYNIGeGhk+4Yyv DKuYnl77ImdRDhvV5txvA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1670429361; x= 1670515761; bh=YHRLmuQhYpWVXrMM0zJgMc8WtAAfUasmH7iyil8sVlg=; b=s gG5OWanettho9cIYEbb0lTxRJ8HdaTrAgZ8JkVdTtA/ZAuAoNBtq0eAkJuxBTIzD QZtzfn4OVutL8eG1hJw7pfgSAJ1NBOmCausFWBvT4HCSbRARWAD/LLcwHIicBrup GXZfY8z6MuevjYMHxGcI9P80AtDZMpt9ffNXv+Ju7QeTKp7gwyv2WLPyn6ihHtyB wOMFmSY0xHFsPn4pi6f2z3YkgAH2WNU6BzCQRmzv4ieg2Kh7LzHYIgrH50ifRIP5 3geR5hL2WEXMcY4RVK3ST8QNpO1yw35kZrgcBSSbgH1CcZU+fZIzGcbegnui8YWK S0m+EuzujkLzikjwqXmvg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudekgdekhecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeenucfhrhhomhepofgrgihi mhgvucftihhprghrugcuoehmrgigihhmvgestggvrhhnohdrthgvtghhqeenucggtffrrg htthgvrhhnpeevvdelieejgedvkeffheekheeilefhgefgffehteekueelvddtueffheet ledtffenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe hmrgigihhmvgestggvrhhnohdrthgvtghh X-ME-Proxy: Feedback-ID: i8771445c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 7 Dec 2022 11:09:21 -0500 (EST) From: Maxime Ripard Date: Wed, 07 Dec 2022 17:07:52 +0100 Subject: [PATCH 8/9] drm/vc4: hdmi: Add BT.601 Support MIME-Version: 1.0 Message-Id: <20221207-rpi-hdmi-improvements-v1-8-6b15f774c13a@cerno.tech> References: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> In-Reply-To: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> To: Emma Anholt , Maxime Ripard , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Dave Stevenson , Maxime Ripard X-Mailer: b4 0.11.0-dev-8c583 X-Developer-Signature: v=1; a=openpgp-sha256; l=2131; i=maxime@cerno.tech; h=from:subject:message-id; bh=iIbI5HLac1bVrGiMm7IXYnTLI/x/+D9iamG0JUy4yek=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDMkTdgUbLdBY/JRru++U1SzMb1593THxwZXbb+Zv4EvyZuR+ yvPBsaOUhUGMi0FWTJElRth8SdypWa872fjmwcxhZQIZwsDFKQATma7H8D80ybLxv2Ziy+M8tkozG1 e/0DM3Cs5/n56mkN90Z01FmS/DP9PstU3zJm43lJypuzCNc5NQQ+zk9WLtc5rqVeve61+5zgoA X-Developer-Key: i=maxime@cerno.tech; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1751572296425964554?= X-GMAIL-MSGID: =?utf-8?q?1751572296425964554?= From: Dave Stevenson Even though we report that we support the BT601 Colorspace, we were always using the BT.709 conversion matrices. Let's add the BT601 ones. Signed-off-by: Dave Stevenson Signed-off-by: Maxime Ripard Reviewed-by: Thomas Zimmermann --- drivers/gpu/drm/vc4/vc4_hdmi.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index cd6775429b5e..e3428fb2c22d 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -1214,6 +1214,37 @@ static const u16 vc5_hdmi_csc_full_rgb_to_rgb[2][3][4] = { }, }; +/* + * Conversion between Full Range RGB and YUV using the BT.601 Colorspace + * + * Matrices are signed 2p13 fixed point, with signed 9p6 offsets + */ +static const u16 vc5_hdmi_csc_full_rgb_to_yuv_bt601[2][3][4] = { + { + /* + * Full Range + * + * [ 0.299000 0.587000 0.114000 0 ] + * [ -0.168736 -0.331264 0.500000 128 ] + * [ 0.500000 -0.418688 -0.081312 128 ] + */ + { 0x0991, 0x12c9, 0x03a6, 0x0000 }, + { 0xfa9b, 0xf567, 0x1000, 0x2000 }, + { 0x1000, 0xf29b, 0xfd67, 0x2000 }, + }, + { + /* Limited Range + * + * [ 0.255785 0.502160 0.097523 16 ] + * [ -0.147644 -0.289856 0.437500 128 ] + * [ 0.437500 -0.366352 -0.071148 128 ] + */ + { 0x082f, 0x1012, 0x031f, 0x0400 }, + { 0xfb48, 0xf6ba, 0x0e00, 0x2000 }, + { 0x0e00, 0xf448, 0xfdba, 0x2000 }, + }, +}; + /* * Conversion between Full Range RGB and YUV using the BT.709 Colorspace * @@ -1277,6 +1308,13 @@ static const u16 (*vc5_hdmi_get_yuv_csc_coeffs(struct vc4_hdmi *vc4_hdmi, u32 colorspace, bool limited))[4] { switch (colorspace) { + case DRM_MODE_COLORIMETRY_SMPTE_170M_YCC: + case DRM_MODE_COLORIMETRY_XVYCC_601: + case DRM_MODE_COLORIMETRY_SYCC_601: + case DRM_MODE_COLORIMETRY_OPYCC_601: + case DRM_MODE_COLORIMETRY_BT601_YCC: + return vc5_hdmi_csc_full_rgb_to_yuv_bt601[limited]; + default: case DRM_MODE_COLORIMETRY_NO_DATA: case DRM_MODE_COLORIMETRY_BT709_YCC: From patchwork Wed Dec 7 16:07:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 30918 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp272405wrr; Wed, 7 Dec 2022 08:11:54 -0800 (PST) X-Google-Smtp-Source: AA0mqf5BmPgUqf+cmsXTgejj4uN7A1ovpKeHUv3NUFYCiU3q05tNlcvKSEIGXgjBMllxgSGmGV1g X-Received: by 2002:a17:902:f095:b0:189:95a7:7430 with SMTP id p21-20020a170902f09500b0018995a77430mr44686829pla.124.1670429514295; Wed, 07 Dec 2022 08:11:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670429514; cv=none; d=google.com; s=arc-20160816; b=YAp+g4Z1IfHXUXLpRU/WcF3scA/WjclAcywboSEM1nCZQ4nky9iDHZiZYP5piT0+Sg /21PxCuxsZVP7eE9J3cQb45Xqv1WhIRlr74ar9/tYADmeDbNZsscWjSBhcNLwCOrWR+c Mbvg3wsyfvppQq+DsYwKYF5zLDCZBoxwQR/tYuoUdEkEzQIfEsXxINvatLdrexQk8J4W ziE2P2Y57M4QrQ0OxVQy1SeAjdIPRBdCRGbwLjPStZX0ytffR4YaNWRDqD/th4mnZTnj CndAGVnZUtqN96CYquqJ6ceMGOHKymvYIZaiE/s5OkyAH5IZeLJi+Tyko5U1bZxQ2bRq unmA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :feedback-id:dkim-signature:dkim-signature; bh=o3govFPZ9TDXWjhwGjG9dUBjhZnBpew2lQenIBrTic0=; b=xfa0448Q8LhgX928PAlI9evBR8qLYNN7XFQnEt+R7t3pDrakmQaqogKTtjqgYZvXmm 0ar/LLY1W9XNkWL5+RJrxUCLsVjroeS9pIalk3MzufbWaKsSDHGN/1VpSy7Lof9/BJCd JxewHF36NbwspYMX/YA/r8eak5Hv8mqwdTw4ar0V1uny31D9vl9sgwYQN1ZaQblkLUzd I/rRZzyxpN7H7fIfHveFguxnlMEpFp1J6Z/8h/IBI7x1LfNddtA3BOHjDdn3AB9bI4mB 72dnkCL0Mfg9sWWfRxC7wZLKXiXpv45XFk0x3w4ErZOun55MDX47Qgqx6OdwYAgC9Y3P x+aA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b="Lpky/gaT"; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=Cm0a8s3Y; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cerno.tech Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c2-20020a170902b68200b0018905bd4a58si19148284pls.169.2022.12.07.08.11.37; Wed, 07 Dec 2022 08:11:54 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm2 header.b="Lpky/gaT"; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=Cm0a8s3Y; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S229566AbiLGQJx (ORCPT + 99 others); Wed, 7 Dec 2022 11:09:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37566 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229998AbiLGQJf (ORCPT ); Wed, 7 Dec 2022 11:09:35 -0500 Received: from out4-smtp.messagingengine.com (out4-smtp.messagingengine.com [66.111.4.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 43DDF66CA9 for ; Wed, 7 Dec 2022 08:09:24 -0800 (PST) Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 97F9A5C00C5; Wed, 7 Dec 2022 11:09:23 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Wed, 07 Dec 2022 11:09:23 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1670429363; x= 1670515763; bh=o3govFPZ9TDXWjhwGjG9dUBjhZnBpew2lQenIBrTic0=; b=L pky/gaTHoHPSiTmxucEilxu9Aucfqj03cabHlZqFv9joCzF4kuw82zwjaSLKSBp7 fW0qrqK+lXUdCq5L82tY5XnSHwivbuew+sAJyv+T7V0O4EAYiUE9L23eefAWROVs Xt3y0c2SUrT05qm57CEPzWq/M/u9lEm+mkO7RN4/sHradi+Ymqd7EglVsxMt/OqO dc6LGQK4zUFdoOO+q05lGNnmXPmHHS3lwz5NPlVh3Ddj0662tMCMUgSmo++wzjJ1 +18nS1a1K11JeN/lSzFpdfBEVu6tx48uffpaPksLbP9VTMw2kphH2QIFxg42OJtT Rmkolgvvto+jX2ZeXY8AA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1670429363; x= 1670515763; bh=o3govFPZ9TDXWjhwGjG9dUBjhZnBpew2lQenIBrTic0=; b=C m0a8s3Ykv+j1YiMnCxiI7GH9WWjqFmAji3VOlRJEIfDG+CPxpbEzPTfBmZb8SLGl imi4a7LG58Aou3x9JgeJKWyttHvETaaXUuvE0ImBQ9UcxddvC1Smz7JY7TmjcPlb MfUaZXtDFxNl2+xIsxVbty/mMOJs531vtCWsNgpMl+Hxx7ZlOwy0Kb3YY8508+lA 2wJ+0d6uq6mlRCTtelLvxGWFpSChGRRUo2sa6For8CmbSmG8uwqjkGmhZndN2FYJ HslNFvdeygnQhI0TjvgnREXTYpZJmKJNgvqG6nLh8dV7GcqxbZ0ShQF+NlZNpgex HMULWfeQQrTmubK79ZM1g== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudekgdekhecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeenucfhrhhomhepofgrgihi mhgvucftihhprghrugcuoehmrgigihhmvgestggvrhhnohdrthgvtghhqeenucggtffrrg htthgvrhhnpeevvdelieejgedvkeffheekheeilefhgefgffehteekueelvddtueffheet ledtffenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe hmrgigihhmvgestggvrhhnohdrthgvtghh X-ME-Proxy: Feedback-ID: i8771445c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 7 Dec 2022 11:09:22 -0500 (EST) From: Maxime Ripard Date: Wed, 07 Dec 2022 17:07:53 +0100 Subject: [PATCH 9/9] drm/vc4: hdmi: Add BT.2020 Support MIME-Version: 1.0 Message-Id: <20221207-rpi-hdmi-improvements-v1-9-6b15f774c13a@cerno.tech> References: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> In-Reply-To: <20221207-rpi-hdmi-improvements-v1-0-6b15f774c13a@cerno.tech> To: Emma Anholt , Maxime Ripard , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Dave Stevenson , Maxime Ripard X-Mailer: b4 0.11.0-dev-8c583 X-Developer-Signature: v=1; a=openpgp-sha256; l=2122; i=maxime@cerno.tech; h=from:subject:message-id; bh=7EgvINvx0LZ5GQlV8rxr2sFz+Jzwj1VfMAT/EoLsgRo=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDMkTdgU7T0hc8v+wYqTmitC7ZuIb++csueHh2P9OS45p+Qvp 7dEnO0pZGMS4GGTFFFlihM2XxJ2a9bqTjW8ezBxWJpAhDFycAjCRQ0wM/6zu6ueol0qsszoQkv1S8C WzfOVF66U3L9ZGxRqsryvmLmP47+27j2Pv756ItwohC7duTG+wSEk3e7y9UkZMUlKkeVUuDwA= X-Developer-Key: i=maxime@cerno.tech; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1751572298632109529?= X-GMAIL-MSGID: =?utf-8?q?1751572298632109529?= From: Dave Stevenson Even though we report that we support the BT.2020 Colorspace, we were always using the BT.709 conversion matrices. Let's add the BT.2020 ones. Signed-off-by: Dave Stevenson Signed-off-by: Maxime Ripard Reviewed-by: Thomas Zimmermann --- drivers/gpu/drm/vc4/vc4_hdmi.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index e3428fb2c22d..2734cab34660 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -1277,6 +1277,37 @@ static const u16 vc5_hdmi_csc_full_rgb_to_yuv_bt709[2][3][4] = { }, }; +/* + * Conversion between Full Range RGB and YUV using the BT.2020 Colorspace + * + * Matrices are signed 2p13 fixed point, with signed 9p6 offsets + */ +static const u16 vc5_hdmi_csc_full_rgb_to_yuv_bt2020[2][3][4] = { + { + /* + * Full Range + * + * [ 0.262700 0.678000 0.059300 0 ] + * [ -0.139630 -0.360370 0.500000 128 ] + * [ 0.500000 -0.459786 -0.040214 128 ] + */ + { 0x0868, 0x15b2, 0x01e6, 0x0000 }, + { 0xfb89, 0xf479, 0x1000, 0x2000 }, + { 0x1000, 0xf14a, 0xfeb8, 0x2000 }, + }, + { + /* Limited Range + * + * [ 0.224732 0.580008 0.050729 16 ] + * [ -0.122176 -0.315324 0.437500 128 ] + * [ 0.437500 -0.402312 -0.035188 128 ] + */ + { 0x082f, 0x1012, 0x031f, 0x0400 }, + { 0xfb48, 0xf6ba, 0x0e00, 0x2000 }, + { 0x0e00, 0xf448, 0xfdba, 0x2000 }, + }, +}; + static void vc5_hdmi_set_csc_coeffs(struct vc4_hdmi *vc4_hdmi, const u16 coeffs[3][4]) { @@ -1322,6 +1353,13 @@ static const u16 case DRM_MODE_COLORIMETRY_RGB_WIDE_FIXED: case DRM_MODE_COLORIMETRY_RGB_WIDE_FLOAT: return vc5_hdmi_csc_full_rgb_to_yuv_bt709[limited]; + + case DRM_MODE_COLORIMETRY_BT2020_CYCC: + case DRM_MODE_COLORIMETRY_BT2020_YCC: + case DRM_MODE_COLORIMETRY_BT2020_RGB: + case DRM_MODE_COLORIMETRY_DCI_P3_RGB_D65: + case DRM_MODE_COLORIMETRY_DCI_P3_RGB_THEATER: + return vc5_hdmi_csc_full_rgb_to_yuv_bt2020[limited]; } }