From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5F506FDEE45 for ; Thu, 23 Apr 2026 19:06:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=tTwgeWxJjTj3zgZ7H2pPIg1FKRse0ow00ezleoUdZMU=; b=gTcvB/ZI+tLGO88EvbFTXjgwuC Cb8CXJt4z87IrlvxICfDqv+ipy3/tivT8FFOyYxBAyGEHzyVJ8wOcbTudaaWQssOwKhYexdUoWsO/ 9gqgPGTbmUl8+AobLh2eKXm2BQCXF/rs0P8qhcBYf6KE0zz4dkfGB/mo+nGC4tBEZrT8jd1Efgtb1 4iuPzYqLzXd13JX1mSIIXAiq3W2EXcCIrdMaWo1xGNBq/up6iy65ngZs9TKhBlUFSv070FY2jvFTt GvH3ifnnwTi7njBpRXtBz+yiSvbPtWUNJDQ4Rf0C9I0QrxTopmqbAxXYJpjuj3LRvITmVtwURkXec b3GSU3vw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1wFzNj-0000000CB4b-13H8; Thu, 23 Apr 2026 19:06:35 +0000 Received: from sender4-pp-f112.zoho.com ([136.143.188.112]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1wFzNY-0000000CAtX-2UkL; Thu, 23 Apr 2026 19:06:27 +0000 ARC-Seal: i=1; a=rsa-sha256; t=1776971120; cv=none; d=zohomail.com; s=zohoarc; b=D8pBdc3/tnggta8aXWJGkalpzLSoKkl9RI1kRRl8p4xXZ3tYdlAiPmqPEsRqtXhkAvIHZgReAjH7DG7x2D5wqH9COkZDwGlTer0zHP/7tw1XwzMNkWvOWM+e/GvXD9zAjRBmVK0wnBLlccu0yu4T4d5ta5WmZdZPmutMFdhhRAo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776971120; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=tTwgeWxJjTj3zgZ7H2pPIg1FKRse0ow00ezleoUdZMU=; b=g1SmoujqSrYvBw5rP1xPDBGHr2hCIAE11S0td7aLwyRhSQeSo2gvHsAQYCa32bLMw/qnHS+X6bf1PPju531+hMqyfiazXrIuDxxZTmJSr2U8ePcXdjg6Qne0ajmT/TuqmMiDCn50i/WQkEP1xCCAE0/T6F53+5inr7UD31qzLRs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=nicolas.frattaroli@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1776971120; s=zohomail; d=collabora.com; i=nicolas.frattaroli@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=tTwgeWxJjTj3zgZ7H2pPIg1FKRse0ow00ezleoUdZMU=; b=PW5IGQXn5/fqsoVnDzVpFnNW0j4+ag7FRX034TBZNlieh34iw9qrJPcwMZncfRo7 Ho2d8PS3SVCSWYO+MryNu8bjHp+2NhW7sTO7HtE+86jiYrANPfnxriA65VX2QNjmNc7 LYNMLDaeX42EC1kIVYSln9GBiC4eAXjW/HM9yy+o= Received: by mx.zohomail.com with SMTPS id 1776971117666621.558874860145; Thu, 23 Apr 2026 12:05:17 -0700 (PDT) From: Nicolas Frattaroli Date: Thu, 23 Apr 2026 21:03:34 +0200 Subject: [PATCH v14 11/28] drm/i915/hdmi: Add YCBCR444 handling for sink formats MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260423-color-format-v14-11-449a419ccbd4@collabora.com> References: <20260423-color-format-v14-0-449a419ccbd4@collabora.com> In-Reply-To: <20260423-color-format-v14-0-449a419ccbd4@collabora.com> To: Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Andy Yan , Jani Nikula , Rodrigo Vivi , Joonas Lahtinen , Tvrtko Ursulin , Dmitry Baryshkov , Sascha Hauer , Rob Herring , Jonathan Corbet , Shuah Khan Cc: kernel@collabora.com, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, linux-doc@vger.kernel.org, wayland-devel@lists.freedesktop.org, Nicolas Frattaroli X-Mailer: b4 0.15.2 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260423_120625_089024_3ECE16E5 X-CRM114-Status: GOOD ( 12.87 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org In anticipation of userspace being able to explicitly select supported sink formats, add handling of the YCBCR444 sink format. The AUTO path does not choose this format, but with explicit format selection added to the driver, it becomes a possibility. Check for YCBCR444 support on the sink in sink_bpc_possible, and on the source and sink in sink_format_valid. Signed-off-by: Nicolas Frattaroli --- drivers/gpu/drm/i915/display/intel_hdmi.c | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c index 874076a29da4..ee7a7655e9b4 100644 --- a/drivers/gpu/drm/i915/display/intel_hdmi.c +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c @@ -1966,6 +1966,8 @@ static bool intel_hdmi_sink_bpc_possible(struct drm_connector *_connector, if (sink_format == INTEL_OUTPUT_FORMAT_YCBCR420) return hdmi->y420_dc_modes & DRM_EDID_YCBCR420_DC_36; + else if (sink_format == INTEL_OUTPUT_FORMAT_YCBCR444) + return info->edid_hdmi_ycbcr444_dc_modes & DRM_EDID_HDMI_DC_36; else return info->edid_hdmi_rgb444_dc_modes & DRM_EDID_HDMI_DC_36; case 10: @@ -1974,6 +1976,8 @@ static bool intel_hdmi_sink_bpc_possible(struct drm_connector *_connector, if (sink_format == INTEL_OUTPUT_FORMAT_YCBCR420) return hdmi->y420_dc_modes & DRM_EDID_YCBCR420_DC_30; + else if (sink_format == INTEL_OUTPUT_FORMAT_YCBCR444) + return info->edid_hdmi_ycbcr444_dc_modes & DRM_EDID_HDMI_DC_30; else return info->edid_hdmi_rgb444_dc_modes & DRM_EDID_HDMI_DC_30; case 8: @@ -2021,6 +2025,27 @@ intel_hdmi_mode_clock_valid(struct drm_connector *_connector, int clock, return status; } +/** + * intel_hdmi_can_ycbcr444 - Check whether connector can output YCbCr444 + * @connector: pointer to &struct intel_connector to check + * + * Checks whether the hardware that backs @connector is capable of outputting + * YCbCr444 video over HDMI. Does not check whether currently connected sink is + * capable of receiving it. + * + * Returns: %true if source supports outputting YCbCr444, %false otherwise. + */ +static bool +intel_hdmi_can_ycbcr444(struct intel_connector *connector) +{ + const struct intel_display *display = to_intel_display(connector); + + if (HAS_GMCH(display)) + return true; + + return false; +} + static enum drm_mode_status intel_hdmi_sink_format_valid(struct intel_connector *connector, const struct drm_display_mode *mode, @@ -2038,6 +2063,13 @@ intel_hdmi_sink_format_valid(struct intel_connector *connector, return MODE_OK; case INTEL_OUTPUT_FORMAT_RGB: + return MODE_OK; + case INTEL_OUTPUT_FORMAT_YCBCR444: + if (!intel_hdmi_can_ycbcr444(connector)) + return MODE_BAD; + if (!(info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444))) + return MODE_BAD; + return MODE_OK; default: MISSING_CASE(sink_format); -- 2.53.0