From nobody Tue Apr 7 18:48:14 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5266C410D2C; Fri, 27 Feb 2026 13:59:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200799; cv=none; b=PCvYIXLpUTEjUxzh1px2o82d4kNqhKCgS1mwPh4UtoGcA+rZBTdkjYbS/4yrLRuSoJ/X1xg6YhcTYXOLSUT+I6aegRkyH/+56fu+SAXoQr1dsDNotsJiAmcmPmHOrK3FKl6Jx4fuK7ANOxpafnm0YSzGYZaraUQIcR3+bKezwzQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200799; c=relaxed/simple; bh=pALwRFzWIQKTpcLw9NIyZWrgGnwzLJRpPmwmiwUCRco=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=g+58kM4okpMrlBJG2mVZEdni2xf5AsLo/HqLCLqELzbA4gGXpn2JhBH7ST/HM7imYyf2hJE4etJWWZhwW54EOWNANZnbUWNmLJBKnME6K5afuhE87sAL4RjVhdWVphhrw5t7VmV93CiQRc4fr1TAsOdVNjfNO4qvv0/9mf0rzHI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=r0rtRgwK; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="r0rtRgwK" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 692F4C19423; Fri, 27 Feb 2026 13:59:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772200798; bh=pALwRFzWIQKTpcLw9NIyZWrgGnwzLJRpPmwmiwUCRco=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=r0rtRgwK7hc0thW6r5KKfgA/Ffz+6iVy/mi3osKF8lbOnewD7kN4ziqAek6hf5SXM iyBtrxh34JkLNd2FeA6bkfxIe08Q/GJ1D57H4hpFUnzp8jsdiwbYKHiNG5N3vUOHjH FfzQU6xmPS4zhaMkOD3yojiO062DD97cm5/8SUqTSoRr7tKYz4RZ3Fy+vPjPjYUcVW 8cuLp2+eq2iq4en5lZcPDJfw5//65u6a9s0Sa8lBEPovHteebZGLk5+KvDFam+SDoE +T6wLILmncNhdNoQnIa5iNKSF6aUogH8MD0Ks/pjsyxLoJd8t86ZurZqQO39CzNlNA rXN+or21bQDtg== From: Maxime Ripard Date: Fri, 27 Feb 2026 14:59:45 +0100 Subject: [PATCH v2 01/14] drm/connector: Introduce drm_output_color_format enum Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260227-drm-rework-color-formats-v2-1-8bd278e2af9d@kernel.org> References: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> In-Reply-To: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> To: Nicolas Frattaroli , Jani Nikula , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Andy Yan , Liviu Dudau , Chun-Kuang Hu , Philipp Zabel , Matthias Brugger , AngeloGioacchino Del Regno , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Liu Ying , Chen-Yu Tsai , Samuel Holland , Dave Stevenson , =?utf-8?q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4252; i=mripard@kernel.org; h=from:subject:message-id; bh=pALwRFzWIQKTpcLw9NIyZWrgGnwzLJRpPmwmiwUCRco=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkLFwfHlSzacXxhFLvW79vKTx9UHJxd2ZyQEym4Q/Dsy ieylq+jOqayMAhzMsiKKbI8kQk7vbx9cZWD/cofMHNYmUCGMHBxCsBEnF8yNpw51+9Y46fV6NS7 N2dlcj+r03n/mll7Vrzl7D93z7Lih7hAlq/V42g3p8n33sqvqv3rxtjwtLgg+oCXkfPs13KXFwh Pd65zvzO/8Rz/60kndH04/nYd/RvRVrs8V9W3XdVvxe+7D00A X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D The EDID parsing code initially introduced the DRM_COLOR_FORMAT_* defines to represent the sink capabilities. Since a given sink could support multiple formats, it was first defined as a bitmask. However, the core and drivers have since leveraged those defines to represent both the supported formats but also the current format being used. Considering the latter case, the more natural, and consistent, thing to do would be to create an enum of all the possible formats, and then list the supported formats using a bitmask of the individual enum values. Let's create a new enum following that pattern, drm_output_color_format, while maintaining the DRM_COLOR_FORMAT_* compatibility to make the transition easier. Acked-by: Jani Nikula Reviewed-by: Liviu Dudau Signed-off-by: Maxime Ripard --- include/drm/drm_connector.h | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h index c18be8c19de0ab1e02e7d7b1fcd9f2ab5ef1dd15..227f6190438679104f5336be088= a73f4529c15fa 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -554,10 +554,35 @@ enum drm_colorspace { DRM_MODE_COLORIMETRY_RGB_WIDE_FLOAT =3D 14, DRM_MODE_COLORIMETRY_BT601_YCC =3D 15, DRM_MODE_COLORIMETRY_COUNT }; =20 +/** + * enum drm_output_color_format - Output Color Format + * + * This enum is a consolidated color format list supported by + * connectors. It's only ever really been used for HDMI and DP so far, + * so it's not exhaustive and can be extended to represent other formats + * in the future. + * + * + * @DRM_OUTPUT_COLOR_FORMAT_RGB444: + * RGB output format + * @DRM_OUTPUT_COLOR_FORMAT_YCBCR444: + * YCbCr 4:4:4 output format (ie. not subsampled) + * @DRM_OUTPUT_COLOR_FORMAT_YCBCR422: + * YCbCr 4:2:2 output format (ie. with horizontal subsampling) + * @DRM_OUTPUT_COLOR_FORMAT_YCBCR420: + * YCbCr 4:2:0 output format (ie. with horizontal and vertical subsampli= ng) + */ +enum drm_output_color_format { + DRM_OUTPUT_COLOR_FORMAT_RGB444 =3D 0, + DRM_OUTPUT_COLOR_FORMAT_YCBCR444, + DRM_OUTPUT_COLOR_FORMAT_YCBCR422, + DRM_OUTPUT_COLOR_FORMAT_YCBCR420, +}; + /** * enum drm_bus_flags - bus_flags info for &drm_display_info * * This enum defines signal polarities and clock edge information for sign= als on * a bus as bitmask flags. @@ -697,14 +722,14 @@ struct drm_display_info { /** * @subpixel_order: Subpixel order of LCD panels. */ enum subpixel_order subpixel_order; =20 -#define DRM_COLOR_FORMAT_RGB444 (1<<0) -#define DRM_COLOR_FORMAT_YCBCR444 (1<<1) -#define DRM_COLOR_FORMAT_YCBCR422 (1<<2) -#define DRM_COLOR_FORMAT_YCBCR420 (1<<3) +#define DRM_COLOR_FORMAT_RGB444 (1 << DRM_OUTPUT_COLOR_FORMAT_RGB444) +#define DRM_COLOR_FORMAT_YCBCR444 (1 << DRM_OUTPUT_COLOR_FORMAT_YCBCR444) +#define DRM_COLOR_FORMAT_YCBCR422 (1 << DRM_OUTPUT_COLOR_FORMAT_YCBCR422) +#define DRM_COLOR_FORMAT_YCBCR420 (1 << DRM_OUTPUT_COLOR_FORMAT_YCBCR420) =20 /** * @panel_orientation: Read only connector property for built-in panels, * indicating the orientation of the panel vs the device's casing. * drm_connector_init() sets this to DRM_MODE_PANEL_ORIENTATION_UNKNOWN. @@ -712,14 +737,15 @@ struct drm_display_info { * fb to compensate and gets exported as prop to userspace. */ int panel_orientation; =20 /** - * @color_formats: HDMI Color formats, selects between RGB and YCrCb - * modes. Used DRM_COLOR_FORMAT\_ defines, which are _not_ the same ones - * as used to describe the pixel format in framebuffers, and also don't - * match the formats in @bus_formats which are shared with v4l. + * @color_formats: HDMI Color formats, selects between RGB and + * YCbCr modes. Uses a bitmask of DRM_OUTPUT_COLOR_FORMAT\_ + * defines, which are _not_ the same ones as used to describe + * the pixel format in framebuffers, and also don't match the + * formats in @bus_formats which are shared with v4l. */ u32 color_formats; =20 /** * @bus_formats: Pixel data format on the wire, somewhat redundant with --=20 2.53.0 From nobody Tue Apr 7 18:48:14 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7A668410D08; Fri, 27 Feb 2026 14:00:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200802; cv=none; b=UiR4a4/Cgjxn6mw8GLbXZaxeBMBN5jX7RX1GirOUBSoSpn/AgHbM/6JE0VDI30owUpMEj7pval/k/C9iAp+QTHkJliqI7Tnnzhu9BYOFqpODdk7rZrZINL6q8F9hw+9IHQYyXbplA8KDoPKfdgEViKOTixJ8FV6ZoHKCuNTSiA8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200802; c=relaxed/simple; bh=Ll7vX0iwBqlcAulvUYDlg1AF0/cayK4xOYfyyHaI++E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GL2tRRhSqWKIeRUka77/5o8EJCXAqG81KIATMSGYdSlYIW3gVvDMUvdzoqLWBN8ENNI1YGt7ol7i0JgncIJOMTyYlu8AgKrvjj1fTiNXMXkAEPSu5r0QRU1JVwGEBp7L4AZba105OeMDHiVFg1/BXCH3aB/uoxTRdwg5hvrC6I4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LkFRLbJU; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="LkFRLbJU" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 87B44C116C6; Fri, 27 Feb 2026 14:00:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772200802; bh=Ll7vX0iwBqlcAulvUYDlg1AF0/cayK4xOYfyyHaI++E=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=LkFRLbJUE/h2L82EhoDps7GICbdVeNGeo3Jj98LMhga8sR8eHV3pw0Lyqm1/3eAPQ Fy5qUbWEXt3AE2qNDaiRer3hfJtzVmL8OBSvP/bbAbTMCaO8VOR4MtCJO6Q1aX3orc R+73EwnBYSfvmPlHSvLVN2OAodIu/PeLrAwPtnPJx21r1+Gsc/7t8l1xKOwavVq6zo I2l8hEBwPfq+ot7iZwu1lQMmpZ+uwfdpdxNvGQqQeysL1jYhM7fwf3jkTO+SzNw5GN mNRMc/Zm6PUUXQMp4bm2KIr3cikTizq5thWItC7hYshT/V2lpyrd7pc+SO6JitkmGw IWIagwXl0uyLg== From: Maxime Ripard Date: Fri, 27 Feb 2026 14:59:46 +0100 Subject: [PATCH v2 02/14] drm/edid: Convert to drm_output_color_format enum Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260227-drm-rework-color-formats-v2-2-8bd278e2af9d@kernel.org> References: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> In-Reply-To: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> To: Nicolas Frattaroli , Jani Nikula , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Andy Yan , Liviu Dudau , Chun-Kuang Hu , Philipp Zabel , Matthias Brugger , AngeloGioacchino Del Regno , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Liu Ying , Chen-Yu Tsai , Samuel Holland , Dave Stevenson , =?utf-8?q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4310; i=mripard@kernel.org; h=from:subject:message-id; bh=Ll7vX0iwBqlcAulvUYDlg1AF0/cayK4xOYfyyHaI++E=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkLFwffWvT9vs2B82l8GvLtHY4yy7fIPd9TlGCvmBm+x fdE4Y/WjqksDMKcDLJiiixPZMJOL29fXOVgv/IHzBxWJpAhDFycAjCRpArGhq9BBVs9/djnJbgs Dp5zaoXTuuexgXOaMsMq4nVqGbkD/fV2z03+dWlCqoqHg00Tx4vVjLWCx/2LnvGaC9558t4mKdV lpWTXetVFhy97349nlyqf1X6TcZrUD6bmrbkuz5fZ3i0I5AEA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Now that we introduced a new drm_output_color_format enum to represent what DRM_COLOR_FORMAT_* bits were representing, we can switch to the new enum. The main difference is that while DRM_COLOR_FORMAT_ was a bitmask, drm_output_color_format is a proper enum. However, the enum was done is such a way than DRM_COLOR_FORMAT_X =3D BIT(DRM_OUTPUT_COLOR_FORMAT_X) so the transitition is easier. The only thing we need to consider is if the original code meant to use that value as a bitmask, in which case we do need to keep the bit shift, or as a discriminant in which case we don't. Acked-by: Jani Nikula Signed-off-by: Maxime Ripard --- drivers/gpu/drm/drm_edid.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index ff432ac6b5692d9178f4bfab039d2e52af68e952..5f9fcd7d9ce45d5b892077b7e7e= 78fed4aa88499 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -5314,11 +5314,11 @@ static void parse_cta_y420cmdb(struct drm_connector= *connector, for (i =3D 0; i < map_len; i++) map |=3D (u64)data[i] << (8 * i); =20 out: if (map) - info->color_formats |=3D DRM_COLOR_FORMAT_YCBCR420; + info->color_formats |=3D BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR420); =20 *y420cmdb_map =3D map; } =20 static int add_cea_modes(struct drm_connector *connector, @@ -6090,11 +6090,11 @@ static void parse_cta_y420vdb(struct drm_connector = *connector, =20 if (!drm_valid_cea_vic(vic)) continue; =20 bitmap_set(hdmi->y420_vdb_modes, vic, 1); - info->color_formats |=3D DRM_COLOR_FORMAT_YCBCR420; + info->color_formats |=3D BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR420); } } =20 static void drm_parse_vcdb(struct drm_connector *connector, const u8 *db) { @@ -6424,15 +6424,15 @@ static void drm_parse_cea_ext(struct drm_connector = *connector, "[CONNECTOR:%d:%s] CEA extension version mismatch %u !=3D %u\n", connector->base.id, connector->name, info->cea_rev, edid_ext[1]); =20 /* The existence of a CTA extension should imply RGB support */ - info->color_formats =3D DRM_COLOR_FORMAT_RGB444; + info->color_formats =3D BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444); if (edid_ext[3] & EDID_CEA_YCRCB444) - info->color_formats |=3D DRM_COLOR_FORMAT_YCBCR444; + info->color_formats |=3D BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444); if (edid_ext[3] & EDID_CEA_YCRCB422) - info->color_formats |=3D DRM_COLOR_FORMAT_YCBCR422; + info->color_formats |=3D BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422); if (edid_ext[3] & EDID_BASIC_AUDIO) info->has_audio =3D true; =20 } drm_edid_iter_end(&edid_iter); @@ -6696,11 +6696,11 @@ static void update_display_info(struct drm_connecto= r *connector, goto out; =20 if (!drm_edid_is_digital(drm_edid)) goto out; =20 - info->color_formats |=3D DRM_COLOR_FORMAT_RGB444; + info->color_formats |=3D BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444); drm_parse_cea_ext(connector, drm_edid); =20 update_displayid_info(connector, drm_edid); =20 /* @@ -6750,13 +6750,13 @@ static void update_display_info(struct drm_connecto= r *connector, drm_dbg_kms(connector->dev, "[CONNECTOR:%d:%s] Assigning EDID-1.4 digital sink color depth as %d= bpc.\n", connector->base.id, connector->name, info->bpc); =20 if (edid->features & DRM_EDID_FEATURE_RGB_YCRCB444) - info->color_formats |=3D DRM_COLOR_FORMAT_YCBCR444; + info->color_formats |=3D BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444); if (edid->features & DRM_EDID_FEATURE_RGB_YCRCB422) - info->color_formats |=3D DRM_COLOR_FORMAT_YCBCR422; + info->color_formats |=3D BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422); =20 drm_update_mso(connector, drm_edid); =20 out: if (drm_edid_has_internal_quirk(connector, EDID_QUIRK_NON_DESKTOP)) { @@ -7227,11 +7227,11 @@ static bool is_hdmi2_sink(const struct drm_connecto= r *connector) */ if (!connector) return true; =20 return connector->display_info.hdmi.scdc.supported || - connector->display_info.color_formats & DRM_COLOR_FORMAT_YCBCR420; + connector->display_info.color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBC= R420); } =20 static u8 drm_mode_hdmi_vic(const struct drm_connector *connector, const struct drm_display_mode *mode) { --=20 2.53.0 From nobody Tue Apr 7 18:48:14 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2B3BB410D1A; Fri, 27 Feb 2026 14:00:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200805; cv=none; b=Vy0g6SuEW0w26CjhGw+WRYjx/TKCgG1mosK6qz05VvUK4Ikm8NukP0JLXEmsKf4UIL7n2vLZczPkDkMjv85VvM6KW04Nb36kinU6drLc1lAuPK4kXLti8WfISgr7JIkLVjzzLM3PIruqtU01xAwIz0MT5JFDTMLFdov/EemiCAA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200805; c=relaxed/simple; bh=whHPoq+vF7W1Ov0nFP1p1BLZRLXz5nTvlyVtCZGm2ds=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FmWueb8k7vZUID8fyyme/PVl9is415Ix1MBzpjYid97IwKWE7U02qkTx7tp8xEQgRpNc1WeWQuL+8oMH16zJEqe5baefh8lwhov++kM0kVfhn1rTt5JPcNehVYyHIdfUHeB1JciKhVe40A2lSw0sKweZD37RGE+QLOmzCsW87XA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sutkrBVP; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="sutkrBVP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5036CC116C6; Fri, 27 Feb 2026 14:00:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772200804; bh=whHPoq+vF7W1Ov0nFP1p1BLZRLXz5nTvlyVtCZGm2ds=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=sutkrBVPIHhEKRjQ5w6GPu6ZjlEQsesQdZm4aITAkbWMHm3+EJxgpvOSK28nD2KpI zsVOK/WmwY7OQfnp5nNpupY/Nr0AP/xxR4hlC5Qexp3fC5XeM8cqTHXmyUyMVugq/6 NAf2tKA4nPPLvmW3O3kvTG816sWS5FDND+4IMDaB2aYjzE5xJEOyc4ZAw/sWzoKWc0 HmSzsKEgH89LPJN9eb/5muRdJySCihNSPKiVZf4wrbgpo7WeSE6EMBO1uksIQYwMZ/ XH8Wx70quJlj1TzI8V5DLmJUtXDyoVho1a9b1iyqjobdaDQDm8Ssdd0/777bKcv48Y AWBenXWBWwxiQ== From: Maxime Ripard Date: Fri, 27 Feb 2026 14:59:47 +0100 Subject: [PATCH v2 03/14] drm/display: hdmi: Convert to drm_output_color_format Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260227-drm-rework-color-formats-v2-3-8bd278e2af9d@kernel.org> References: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> In-Reply-To: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> To: Nicolas Frattaroli , Jani Nikula , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Andy Yan , Liviu Dudau , Chun-Kuang Hu , Philipp Zabel , Matthias Brugger , AngeloGioacchino Del Regno , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Liu Ying , Chen-Yu Tsai , Samuel Holland , Dave Stevenson , =?utf-8?q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3256; i=mripard@kernel.org; h=from:subject:message-id; bh=whHPoq+vF7W1Ov0nFP1p1BLZRLXz5nTvlyVtCZGm2ds=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkLF4esfvbi82NOpo8d1pdsQioWFnxa9ExZi+2R0fPqO YsLX17u6pjKwiDMySArpsjyRCbs9PL2xVUO9it/wMxhZQIZwsDFKQATeRfD2PA+efGbmzufSnom mtTHpJT9MvGcJXzQV9Jvv8g6Jw2t+38P1OySO7vvp6PLjZ9zH7n/387YMHmby4KHEjmr3lufj7B vSriyJulC08PmhUt+7LjXoBDi4/ztc37hypqnXB2zJYOmR5W1AgA= X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Now that we introduced a new drm_output_color_format enum to represent what DRM_COLOR_FORMAT_* bits were representing, we can switch to the new enum. The main difference is that while DRM_COLOR_FORMAT_ was a bitmask, drm_output_color_format is a proper enum. However, the enum was done is such a way than DRM_COLOR_FORMAT_X =3D BIT(DRM_OUTPUT_COLOR_FORMAT_X) so the transitition is easier. The only thing we need to consider is if the original code meant to use that value as a bitmask, in which case we do need to keep the bit shift, or as a discriminant in which case we don't. Acked-by: Jani Nikula Signed-off-by: Maxime Ripard --- drivers/gpu/drm/display/drm_hdmi_state_helper.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/= drm/display/drm_hdmi_state_helper.c index a1d16762ac7a9ebdc48f081c5d2f5e200d406099..f2aec6f65e7a374cea9a1e3adaf= b4f1cc4d6ab9a 100644 --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c @@ -426,11 +426,11 @@ sink_supports_format_bpc(const struct drm_connector *= connector, * color_formats field will be blank and not report any * format supported. In such a case, assume that RGB is * supported so we can keep things going and light up * the display. */ - if (!(info->color_formats & DRM_COLOR_FORMAT_RGB444)) + if (!(info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444))) drm_warn(dev, "HDMI Sink doesn't support RGB, something's wrong.\n"); =20 if (bpc =3D=3D 10 && !(info->edid_hdmi_rgb444_dc_modes & DRM_EDID_HDMI_D= C_30)) { drm_dbg_kms(dev, "10 BPC but sink doesn't support Deep Color 30.\n"); return false; @@ -446,11 +446,11 @@ sink_supports_format_bpc(const struct drm_connector *= connector, return true; =20 case HDMI_COLORSPACE_YUV420: drm_dbg_kms(dev, "YUV420 format, checking the constraints.\n"); =20 - if (!(info->color_formats & DRM_COLOR_FORMAT_YCBCR420)) { + if (!(info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR420))) { drm_dbg_kms(dev, "Sink doesn't support YUV420.\n"); return false; } =20 if (!drm_mode_is_420(info, mode)) { @@ -478,11 +478,11 @@ sink_supports_format_bpc(const struct drm_connector *= connector, return true; =20 case HDMI_COLORSPACE_YUV422: drm_dbg_kms(dev, "YUV422 format, checking the constraints.\n"); =20 - if (!(info->color_formats & DRM_COLOR_FORMAT_YCBCR422)) { + if (!(info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422))) { drm_dbg_kms(dev, "Sink doesn't support YUV422.\n"); return false; } =20 if (bpc > 12) { @@ -501,11 +501,11 @@ sink_supports_format_bpc(const struct drm_connector *= connector, return true; =20 case HDMI_COLORSPACE_YUV444: drm_dbg_kms(dev, "YUV444 format, checking the constraints.\n"); =20 - if (!(info->color_formats & DRM_COLOR_FORMAT_YCBCR444)) { + if (!(info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444))) { drm_dbg_kms(dev, "Sink doesn't support YUV444.\n"); return false; } =20 if (bpc =3D=3D 10 && !(info->edid_hdmi_ycbcr444_dc_modes & DRM_EDID_HDMI= _DC_30)) { --=20 2.53.0 From nobody Tue Apr 7 18:48:14 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5300C410D1A; Fri, 27 Feb 2026 14:00:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200808; cv=none; b=T9NjKVAOFOOuEDpTdWfIfkyOJJ5l5nbVFUixwWQtjHaF77Ib3oCGHc6lJ3jVLKQs8XxwPfQESkDAAeZ1IJGvPxhPIScFK57uCvz7z1Ev3441FaYI7280iZ4X0/bthsEme2Sd8zY4LCA5Y1i5/XE/AxUV2krm0vLDg0C3vSlMLe4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200808; c=relaxed/simple; bh=Bi7dzqSb0xTzyJ/T4zIX0511vvg8pddfBkr4pnB64SM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=L2Mog+esVW7Ld7Q6Eek5aS1AhrPT3pY7xpH72jWht0Y1eTNnCsTdkdXHosQJmFD6t8KZmIhi/4yJXmFcejqugrVGMQhclHA/bwdJDbCkiYdKAlfwGEzfMut8tC8W/5jvjrzm9XXuQtSE9ecTq8LfkJXJUWnacmYp4NfAwMM+lJc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GohLcTuY; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="GohLcTuY" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5BE09C19423; Fri, 27 Feb 2026 14:00:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772200807; bh=Bi7dzqSb0xTzyJ/T4zIX0511vvg8pddfBkr4pnB64SM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=GohLcTuYqlCpvsdkbjgY6knmX2/mJU6xDmQr39NAaSMdVgm0+vJjOqtUK4woss4Yx GrSprZN0cE1aoK599cv93c5jZIt3igoFcgkZ2GEr95F8XESuOnnvinU8cMHSV5RYw4 FKYCf11HP4jpgl0cjQ7WpUZG+6u4XcHfQ3UAKxMA6oRCKh8BwmPI8Boj9p2NQWDzQ/ 3OJ7zkga0r7lonHXBbDG3rGgdybymvLjJoxgbtybvYzCvDvfCWzWUzwABBJIW1POtK I7TspvMZTdD8MNfQDkawUdTsvAPsAhBhNZ+8mEZExNSNejlJ2+0cG/BPKjmePACv8V 6GS2v3fTVMLvQ== From: Maxime Ripard Date: Fri, 27 Feb 2026 14:59:48 +0100 Subject: [PATCH v2 04/14] drm/amdgpu: display: Convert to drm_output_color_format Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260227-drm-rework-color-formats-v2-4-8bd278e2af9d@kernel.org> References: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> In-Reply-To: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> To: Nicolas Frattaroli , Jani Nikula , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Andy Yan , Liviu Dudau , Chun-Kuang Hu , Philipp Zabel , Matthias Brugger , AngeloGioacchino Del Regno , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Liu Ying , Chen-Yu Tsai , Samuel Holland , Dave Stevenson , =?utf-8?q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2094; i=mripard@kernel.org; h=from:subject:message-id; bh=Bi7dzqSb0xTzyJ/T4zIX0511vvg8pddfBkr4pnB64SM=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkLF4f4Ra7ewKdauD7McQVbcoTR7xVBQfcPlX9ccey63 dNblqyNHVNZGIQ5GWTFFFmeyISdXt6+uMrBfuUPmDmsTCBDGLg4BWAiubmM9UWXAwIu/lWwbec3 XKOyNb34Wurkjr9xFzldX6meLL4mnnrlvHLGO82/BqcTWOZ6yXZWMTYcCajXeDCd888eufY/ux/ O3XS3oOrHK/t6z8Wfed8s6v0b97iG9diGqplZmW0Pg18dv8YBAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Now that we introduced a new drm_output_color_format enum to represent what DRM_COLOR_FORMAT_* bits were representing, we can switch to the new enum. The main difference is that while DRM_COLOR_FORMAT_ was a bitmask, drm_output_color_format is a proper enum. However, the enum was done is such a way than DRM_COLOR_FORMAT_X =3D BIT(DRM_OUTPUT_COLOR_FORMAT_X) so the transitition is easier. The only thing we need to consider is if the original code meant to use that value as a bitmask, in which case we do need to keep the bit shift, or as a discriminant in which case we don't. Acked-by: Jani Nikula Signed-off-by: Maxime Ripard --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gp= u/drm/amd/display/amdgpu_dm/amdgpu_dm.c index a8e4e3ab5e40276b3c723297ca6520688079e0a7..2fe9044e1e91d7581fd5032b988= 3548f8e5e1b43 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -6723,15 +6723,15 @@ static void fill_stream_properties_from_drm_display= _mode( timing_out->pixel_encoding =3D PIXEL_ENCODING_YCBCR420; else if (drm_mode_is_420_also(info, mode_in) && aconnector && aconnector->force_yuv420_output) timing_out->pixel_encoding =3D PIXEL_ENCODING_YCBCR420; - else if ((connector->display_info.color_formats & DRM_COLOR_FORMAT_YCBCR4= 22) + else if ((connector->display_info.color_formats & BIT(DRM_OUTPUT_COLOR_FO= RMAT_YCBCR422)) && aconnector && aconnector->force_yuv422_output) timing_out->pixel_encoding =3D PIXEL_ENCODING_YCBCR422; - else if ((connector->display_info.color_formats & DRM_COLOR_FORMAT_YCBCR4= 44) + else if ((connector->display_info.color_formats & BIT(DRM_OUTPUT_COLOR_FO= RMAT_YCBCR444)) && stream->signal =3D=3D SIGNAL_TYPE_HDMI_TYPE_A) timing_out->pixel_encoding =3D PIXEL_ENCODING_YCBCR444; else timing_out->pixel_encoding =3D PIXEL_ENCODING_RGB; =20 --=20 2.53.0 From nobody Tue Apr 7 18:48:14 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3E01341B376; Fri, 27 Feb 2026 14:00:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200811; cv=none; b=gQajz9xI/h6HWHA+hfKKkHMwYYV8IbJCtBREQnRanoBNO/7rwyjgsP4/1DdpI6pJu+cFe4xpM3EBf5KEItowa5xo/IvIC16scMj3wagkHRn7aR0KCBzQY0HTLu7gIrr8Djl/ODNfhISIuyvnIh7MUKmU73Jy7Q0hw4b4nI4uSZU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200811; c=relaxed/simple; bh=mcyTpts1idXA1vu80zdOnmLrCaVShS7ucVh8Fhvdnfw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uBt735h9gSMZNTv6Lh3hPuNSq9r8DuwCJ2cGEmqkOTwcss5sT73Z8ip4xtTcDDjkvNIL6K7hJivomRNzKGQJMG0ptQ8/BAsHqkEU+bgXB7yckXtPQxedg/Iy0PRqCWu3FhxNcjImz34rEKULcP7ELbuUTv7aquu+EI1NYFQaO2s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=c0ZbGZ9m; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="c0ZbGZ9m" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 23747C2BCB9; Fri, 27 Feb 2026 14:00:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772200810; bh=mcyTpts1idXA1vu80zdOnmLrCaVShS7ucVh8Fhvdnfw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=c0ZbGZ9m99SIaXsBhhpP75b7OIKQ5akIbEhjYGH/ociDImdSOjZs7mjWJRvyxUMEX R+1MgYCVnhR0mhqxo04Sr8+BMqNcqvxhmFFbkVxh0LLMTVcP+aXm527UHxv64iq30/ L4To7B5Gt3nsFdwkhwf8ZV+xFEcmzHD0Nkk3iqjBDi06iCdh+S9eaXk8EwJPfs+7jk ywKWySZkgx3thXh+x62WaJ2DC9+/O++WnaguUTndWmvJRAOtkcAEXuyoxT4U8reKUD v8WiH766yhGb6CmJKojxUgzGokM5CgZ//9M0k6J+UrOdKvZ6+l469p35joKCcuP/40 D1cxQ6yqF/98A== From: Maxime Ripard Date: Fri, 27 Feb 2026 14:59:49 +0100 Subject: [PATCH v2 05/14] drm/bridge: adv7511: Convert to drm_output_color_format Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260227-drm-rework-color-formats-v2-5-8bd278e2af9d@kernel.org> References: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> In-Reply-To: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> To: Nicolas Frattaroli , Jani Nikula , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Andy Yan , Liviu Dudau , Chun-Kuang Hu , Philipp Zabel , Matthias Brugger , AngeloGioacchino Del Regno , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Liu Ying , Chen-Yu Tsai , Samuel Holland , Dave Stevenson , =?utf-8?q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1622; i=mripard@kernel.org; h=from:subject:message-id; bh=mcyTpts1idXA1vu80zdOnmLrCaVShS7ucVh8Fhvdnfw=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkLF4eWOi48nB5rr1u0oFLc4LbNvRXzYtgqQtruNFvcL NnBVH61YyoLgzAng6yYIssTmbDTy9sXVznYr/wBM4eVCWQIAxenAExE3ZGx4WbILfMrJ/+FzXZm D3ZSuCJyr5Sr1FrmPWfC10ZnZ4YnNyovtjg/0Dd4s/zgz7ylUw5tYGzo7vto2CitbXWjxo1r4rm 8Nw8jiiMXzwp4pLeqY+OVN2+2bPuxdWnoDUF3Sf8JUR9CZ3MAAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Now that we introduced a new drm_output_color_format enum to represent what DRM_COLOR_FORMAT_* bits were representing, we can switch to the new enum. The main difference is that while DRM_COLOR_FORMAT_ was a bitmask, drm_output_color_format is a proper enum. However, the enum was done is such a way than DRM_COLOR_FORMAT_X =3D BIT(DRM_OUTPUT_COLOR_FORMAT_X) so the transitition is easier. The only thing we need to consider is if the original code meant to use that value as a bitmask, in which case we do need to keep the bit shift, or as a discriminant in which case we don't. Acked-by: Jani Nikula Signed-off-by: Maxime Ripard --- drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm= /bridge/adv7511/adv7511_drv.c index 1050bb62280bb4794f0b0ae01597269652c063d0..6bd76c1fb0071c8c9cd9c293b3a= 48a2b4487768e 100644 --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c @@ -226,11 +226,11 @@ static void adv7511_set_config_csc(struct adv7511 *ad= v7511, } else { config.csc_scaling_factor =3D ADV7511_CSC_SCALING_4; config.csc_coefficents =3D adv7511_csc_ycbcr_to_rgb; =20 if ((connector->display_info.color_formats & - DRM_COLOR_FORMAT_YCBCR422) && + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422)) && connector->display_info.is_hdmi) { config.csc_enable =3D false; output_format_422 =3D true; output_format_ycbcr =3D true; } else { --=20 2.53.0 From nobody Tue Apr 7 18:48:14 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E4D0641C2FA; Fri, 27 Feb 2026 14:00:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200814; cv=none; b=BzJL2JO+2KQuh+jjPFfQCoAaHf3POSATNfyWyX69NJPWmU9XXe047mFC96oO8aYtxEtfzMeIzjy0ujChyFCpVVbSx2Q9HEur686P7eUZSKF6bwe5aCzgo6XO+pbvdgc+tSDqy1r9LD5pIK9NVgA3X/ATWz7ebzbNAK+TsT9+eXU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200814; c=relaxed/simple; bh=sIOpPbGND5afLcivkJfIxu5waFc041nLNjD3trLHArs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=psHy1EfMCppqvcKGdlFWfzyHvXir/X7lQnHchyJUEHKabQ+Eps82Bt1E6ut+30SVJbdUVy1ljCxz4qrt02XbSftpUDpLqz4rgRKMDpOl/NuC43WG2o/psKy68fxx76x1E0QcfY8AdfZaz0MOMXoULA94eN2muDpiGaLeQfQHW+E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZaB0syc3; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ZaB0syc3" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0D499C19423; Fri, 27 Feb 2026 14:00:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772200813; bh=sIOpPbGND5afLcivkJfIxu5waFc041nLNjD3trLHArs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ZaB0syc3xQ5/A6LmXj7XJiGhCoiS+mpgxvMUOcUceDVOCrZSiALXSNoLBViC7wXfj WpEWrQBkbh6dBHZAAkVJ27/ZGjYCyplOBC7t+XwuzkmZvF5XkEBvMKXFx+YgjjnKHk 7rSgBNvLi0l8Q1Y7GkbWhl2JvRPtpmiQPzSzL61VTPqZF7x2TpoGgO4c4ngp/M6j/p TOonihCjIftpmNj5KKtlZmX4mSZLa9OXPAWJaCPVrqpNGCPCy2dlC5JQwppEy72+uU cWkQpyNGUsICWiqNiGfG0kUDg5c0fmJXhm8RHbBWl6Z/PhFsv8NYjXCWUL1sG7fmZ6 4LJ7w4zBnga3w== From: Maxime Ripard Date: Fri, 27 Feb 2026 14:59:50 +0100 Subject: [PATCH v2 06/14] drm/bridge: analogix: Convert to drm_output_color_format Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260227-drm-rework-color-formats-v2-6-8bd278e2af9d@kernel.org> References: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> In-Reply-To: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> To: Nicolas Frattaroli , Jani Nikula , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Andy Yan , Liviu Dudau , Chun-Kuang Hu , Philipp Zabel , Matthias Brugger , AngeloGioacchino Del Regno , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Liu Ying , Chen-Yu Tsai , Samuel Holland , Dave Stevenson , =?utf-8?q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1747; i=mripard@kernel.org; h=from:subject:message-id; bh=sIOpPbGND5afLcivkJfIxu5waFc041nLNjD3trLHArs=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkLF4deE1qudF+YZ2HK64yjMbenfI744mvYuidyvb051 6ll7+fs75jKwiDMySArpsjyRCbs9PL2xVUO9it/wMxhZQIZwsDFKQAT4ZrAWF998MdjzYqkOOVj ObaHuyLDcpr++baGZicpVTrb3+4vjimcb8979bBZ65TdS7e+jZVOZmyYtIvvvovKrY/nDq62EJq zudSYiaPWxVL7bLmr5sn6p5/exEpyvNsZ/nXTrmne0n+vT0sCAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Now that we introduced a new drm_output_color_format enum to represent what DRM_COLOR_FORMAT_* bits were representing, we can switch to the new enum. The main difference is that while DRM_COLOR_FORMAT_ was a bitmask, drm_output_color_format is a proper enum. However, the enum was done is such a way than DRM_COLOR_FORMAT_X =3D BIT(DRM_OUTPUT_COLOR_FORMAT_X) so the transitition is easier. The only thing we need to consider is if the original code meant to use that value as a bitmask, in which case we do need to keep the bit shift, or as a discriminant in which case we don't. Acked-by: Jani Nikula Signed-off-by: Maxime Ripard --- drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.c index b1687a4aa04739fa53f1039376da649ddcea7f41..1dd194bf49cd8f94a2b48f1f32b= aa262e5e5dbf9 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1221,13 +1221,13 @@ static void analogix_dp_bridge_mode_set(struct drm_= bridge *bridge, break; default: video->color_depth =3D COLOR_8; break; } - if (display_info->color_formats & DRM_COLOR_FORMAT_YCBCR444) + if (display_info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444)) video->color_space =3D COLOR_YCBCR444; - else if (display_info->color_formats & DRM_COLOR_FORMAT_YCBCR422) + else if (display_info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR4= 22)) video->color_space =3D COLOR_YCBCR422; else video->color_space =3D COLOR_RGB; =20 /* --=20 2.53.0 From nobody Tue Apr 7 18:48:14 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B2504410D3D; Fri, 27 Feb 2026 14:00:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200816; cv=none; b=CLyG4yUmz7s1/I0P91BbdXUmlm9rUFTOLNjKmSXv8aZNE+GI344Ma6r9PnRwOWGI2pvWejFh8M206NjZLJ26hlLPs0WALfY1TTA1NAE2n72B9xg2Fm/aiR6EKMHeXF3FwJJmZGDd4fedPta1BHAmtANy6Hrw/IatrqcqdMXyF3U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200816; c=relaxed/simple; bh=Uw9orBa+IcWl61fHU9gR/gF8n8W1ZP87ZlyWedYU6o0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Cts5LlUJDukxUWUX6IqocU1ZzvelufhLyDv/tbF6RDzriuC4wmqDUVIIMwCpgON6G8/2gTiKdOKhC0GQFpCVSRofGCjfOPwhbADBmVvCJ0t84t0cmISgsP6a35WcmAae63Tzz8COMpheszEGlwRVt/eSCVXH1Rc4n0hATXIMbLE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sMRx50P0; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="sMRx50P0" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C3EFFC2BCAF; Fri, 27 Feb 2026 14:00:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772200816; bh=Uw9orBa+IcWl61fHU9gR/gF8n8W1ZP87ZlyWedYU6o0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=sMRx50P0hX8wuZMBW8taf9Y68EKFlXWsHRybrH2xfEMhUY/e8wCLIOhHTJiS9aXTd MFeF2Du1P7xYVh+IdtTtz5O39uI+9RiyvJi/giSYXzJMwJpk0uZ3pL1E9fQHp+8/ee U0zKtSPkFRFr7SdFBrk/zY3a3p1XN7Y0O9vM/Gt5eSYqXS3B3s+CNDW6sIFQZ+ZtRC h7qFOxHpRuD4/bXJQbMZdywiEVCaHSlLdS1mOZtdkSkMEHBc6k/3oWS0vtdcX5lt85 WcrllsF/gX71evwtz9ycTyuMOZ8UIyHZc6oCuyoRoo0NB5NhYJwnomRWKlVyH99RIC 1S3x4zvEcqRVA== From: Maxime Ripard Date: Fri, 27 Feb 2026 14:59:51 +0100 Subject: [PATCH v2 07/14] drm/bridge: cadence: Convert to drm_output_color_format Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260227-drm-rework-color-formats-v2-7-8bd278e2af9d@kernel.org> References: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> In-Reply-To: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> To: Nicolas Frattaroli , Jani Nikula , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Andy Yan , Liviu Dudau , Chun-Kuang Hu , Philipp Zabel , Matthias Brugger , AngeloGioacchino Del Regno , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Liu Ying , Chen-Yu Tsai , Samuel Holland , Dave Stevenson , =?utf-8?q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4972; i=mripard@kernel.org; h=from:subject:message-id; bh=Uw9orBa+IcWl61fHU9gR/gF8n8W1ZP87ZlyWedYU6o0=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkLF4d5FhpsueF5KiZQQJrp9QXHGR+3WJd+cL93a8Zv3 dtyDpvqOqayMAhzMsiKKbI8kQk7vbx9cZWD/cofMHNYmUCGMHBxCsBEnEUYG6Zzas1ZVsZaFG/k NYs/b7X2gtc9conzXaa8U9otOOV5CfPGH1EeWm1l9ha3H2z+Uag+j7Hh7DuHhwxvLs/ZJaLEvv7 mskUfa5fuVDVvnGdf8mzFrMflKWVy5yJnMS8QWOUck3q7SmMfAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Now that we introduced a new drm_output_color_format enum to represent what DRM_COLOR_FORMAT_* bits were representing, we can switch to the new enum. The main difference is that while DRM_COLOR_FORMAT_ was a bitmask, drm_output_color_format is a proper enum. However, the enum was done is such a way than DRM_COLOR_FORMAT_X =3D BIT(DRM_OUTPUT_COLOR_FORMAT_X) so the transitition is easier. The only thing we need to consider is if the original code meant to use that value as a bitmask, in which case we do need to keep the bit shift, or as a discriminant in which case we don't. Acked-by: Jani Nikula Signed-off-by: Maxime Ripard --- .../gpu/drm/bridge/cadence/cdns-mhdp8546-core.c | 24 +++++++++++-------= ---- .../gpu/drm/bridge/cadence/cdns-mhdp8546-core.h | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c b/drivers/= gpu/drm/bridge/cadence/cdns-mhdp8546-core.c index 9392c226ff5b11189a93bf40e840bc3f8b287b1f..e38d59e37a777948ddc63e3e084= 83362c9e3ba64 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c @@ -1500,18 +1500,18 @@ static u32 cdns_mhdp_get_bpp(struct cdns_mhdp_displ= ay_fmt *fmt) =20 if (fmt->y_only) return fmt->bpc; =20 switch (fmt->color_format) { - case DRM_COLOR_FORMAT_RGB444: - case DRM_COLOR_FORMAT_YCBCR444: + case DRM_OUTPUT_COLOR_FORMAT_RGB444: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR444: bpp =3D fmt->bpc * 3; break; - case DRM_COLOR_FORMAT_YCBCR422: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR422: bpp =3D fmt->bpc * 2; break; - case DRM_COLOR_FORMAT_YCBCR420: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR420: bpp =3D fmt->bpc * 3 / 2; break; default: bpp =3D fmt->bpc * 3; WARN_ON(1); @@ -1710,30 +1710,30 @@ static void cdns_mhdp_configure_video(struct cdns_m= hdp_device *mhdp, =20 /* * If YCBCR supported and stream not SD, use ITU709 * Need to handle ITU version with YCBCR420 when supported */ - if ((pxlfmt =3D=3D DRM_COLOR_FORMAT_YCBCR444 || - pxlfmt =3D=3D DRM_COLOR_FORMAT_YCBCR422) && mode->crtc_vdisplay >=3D= 720) + if ((pxlfmt =3D=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR444 || + pxlfmt =3D=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR422) && mode->crtc_vdispl= ay >=3D 720) misc0 =3D DP_YCBCR_COEFFICIENTS_ITU709; =20 bpp =3D cdns_mhdp_get_bpp(&mhdp->display_fmt); =20 switch (pxlfmt) { - case DRM_COLOR_FORMAT_RGB444: + case DRM_OUTPUT_COLOR_FORMAT_RGB444: pxl_repr =3D CDNS_DP_FRAMER_RGB << CDNS_DP_FRAMER_PXL_FORMAT; misc0 |=3D DP_COLOR_FORMAT_RGB; break; - case DRM_COLOR_FORMAT_YCBCR444: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR444: pxl_repr =3D CDNS_DP_FRAMER_YCBCR444 << CDNS_DP_FRAMER_PXL_FORMAT; misc0 |=3D DP_COLOR_FORMAT_YCbCr444 | DP_TEST_DYNAMIC_RANGE_CEA; break; - case DRM_COLOR_FORMAT_YCBCR422: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR422: pxl_repr =3D CDNS_DP_FRAMER_YCBCR422 << CDNS_DP_FRAMER_PXL_FORMAT; misc0 |=3D DP_COLOR_FORMAT_YCbCr422 | DP_TEST_DYNAMIC_RANGE_CEA; break; - case DRM_COLOR_FORMAT_YCBCR420: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR420: pxl_repr =3D CDNS_DP_FRAMER_YCBCR420 << CDNS_DP_FRAMER_PXL_FORMAT; break; default: pxl_repr =3D CDNS_DP_FRAMER_Y_ONLY << CDNS_DP_FRAMER_PXL_FORMAT; } @@ -1825,11 +1825,11 @@ static void cdns_mhdp_configure_video(struct cdns_m= hdp_device *mhdp, mode->crtc_vtotal % 2 =3D=3D 0) misc1 =3D DP_TEST_INTERLACED; if (mhdp->display_fmt.y_only) misc1 |=3D CDNS_DP_TEST_COLOR_FORMAT_RAW_Y_ONLY; /* Use VSC SDP for Y420 */ - if (pxlfmt =3D=3D DRM_COLOR_FORMAT_YCBCR420) + if (pxlfmt =3D=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR420) misc1 =3D CDNS_DP_TEST_VSC_SDP; =20 cdns_mhdp_reg_write(mhdp, CDNS_DP_MSA_MISC(stream_id), misc0 | (misc1 << 8)); =20 @@ -2479,11 +2479,11 @@ static int cdns_mhdp_probe(struct platform_device *= pdev) mhdp->link.rate =3D mhdp->host.link_rate; mhdp->link.num_lanes =3D mhdp->host.lanes_cnt; =20 /* The only currently supported format */ mhdp->display_fmt.y_only =3D false; - mhdp->display_fmt.color_format =3D DRM_COLOR_FORMAT_RGB444; + mhdp->display_fmt.color_format =3D DRM_OUTPUT_COLOR_FORMAT_RGB444; mhdp->display_fmt.bpc =3D 8; =20 mhdp->bridge.of_node =3D pdev->dev.of_node; mhdp->bridge.ops =3D DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID | DRM_BRIDGE_OP_HPD; diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.h b/drivers/= gpu/drm/bridge/cadence/cdns-mhdp8546-core.h index bad2fc0c7306607a98b84730233c0e984c90576f..8e99a813db0f25eb92f0aa6675e= 1807c992750a6 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.h +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.h @@ -304,11 +304,11 @@ struct cdns_mhdp_sink { bool enhanced; bool ssc; }; =20 struct cdns_mhdp_display_fmt { - u32 color_format; + enum drm_output_color_format color_format; u32 bpc; bool y_only; }; =20 /* --=20 2.53.0 From nobody Tue Apr 7 18:48:14 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 687E241C2F2; Fri, 27 Feb 2026 14:00:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200819; cv=none; b=ngF0pTF+LZ3mXrhR99HU28arxRqmYsK7ph/bzMNOKPraOSaytRSLCvPawaL5rfFfk6FgS7PjktSCNGtUfEc0z3+UEPtUGP20iFdtYwumM/qNK2PmOFBnj2AD5FRS+EWUvYbD57MksutuO5XvW2Qw2dsKTY8ekOSNN5P/LiVre5I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200819; c=relaxed/simple; bh=Na0nXx9MM1pkachnTIMb0aILDfpGSRnkfs47ABWv/IY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZAJRJAwMurZZafW75giv9B9LIRugOLym8WF6FmuJJkjFWWMQ4OvbuBVb8it5leu9P58UbIg+NPSGm21lgssWSyKBr0MzHV+/7oHB2s63Dbm3uhAIM174GI+fn4SGluGrrZSiryny9xXiDdP5xYoM9M+ev34qlC8OLB46eMV4Myk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=m6DtMEWZ; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="m6DtMEWZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7B01BC2BC9E; Fri, 27 Feb 2026 14:00:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772200819; bh=Na0nXx9MM1pkachnTIMb0aILDfpGSRnkfs47ABWv/IY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=m6DtMEWZu4KOYmUhChviFPXXl10o++FW3x3ITNOA0IVwvzTVTc4ju1cxmjNdbTJ/r vodqpfbMcc6DozkOQ6xOj1W/CqYXhNtThUDKdOdpM/UWZej78FJJ3rThip1wHEZnM1 3gm+xDBY/H6T38IYoZBdnrHzlenMApu25hSb7zrXC0HFrpmii8xVlG4h7QfX/iLuhZ HZ1cY+u+89QK3g1nUXoWeViHE4pX8eyhMmQs8TfxtI9+Wvb9hxTGyNGjxVBj6dV5KL QfL4LiCPMCV+VYoKWlARum6XMd//s6uX1VNm250R+FE7RVkaqkKPC+4KBQG7sVsbIa Z5rXrr/1h3FUQ== From: Maxime Ripard Date: Fri, 27 Feb 2026 14:59:52 +0100 Subject: [PATCH v2 08/14] drm/bridge: synopsys: dw-dp: Convert to drm_output_color_format Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260227-drm-rework-color-formats-v2-8-8bd278e2af9d@kernel.org> References: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> In-Reply-To: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> To: Nicolas Frattaroli , Jani Nikula , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Andy Yan , Liviu Dudau , Chun-Kuang Hu , Philipp Zabel , Matthias Brugger , AngeloGioacchino Del Regno , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Liu Ying , Chen-Yu Tsai , Samuel Holland , Dave Stevenson , =?utf-8?q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=9554; i=mripard@kernel.org; h=from:subject:message-id; bh=Na0nXx9MM1pkachnTIMb0aILDfpGSRnkfs47ABWv/IY=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkLF4e9ltpd891eruTF1uyAjpimxU+MTK8FeHUcSlP8U P1CutmgYyoLgzAng6yYIssTmbDTy9sXVznYr/wBM4eVCWQIAxenAEykwpyxoU3jSZPfnuXFe4Ub 1ntttcy5utT69PHXdS67/p7iNRM9fVq1PF5q9qv587WrNxh13M9QZmzY5dgrJr9g3fv2nV9ebO2 8JKOTdE4818b0A0/g4hv1Wdevv+4M2Niq5uQV3+niYZQWkwwA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Now that we introduced a new drm_output_color_format enum to represent what DRM_COLOR_FORMAT_* bits were representing, we can switch to the new enum. The main difference is that while DRM_COLOR_FORMAT_ was a bitmask, drm_output_color_format is a proper enum. However, the enum was done is such a way than DRM_COLOR_FORMAT_X =3D BIT(DRM_OUTPUT_COLOR_FORMAT_X) so the transitition is easier. The only thing we need to consider is if the original code meant to use that value as a bitmask, in which case we do need to keep the bit shift, or as a discriminant in which case we don't. Acked-by: Jani Nikula Signed-off-by: Maxime Ripard --- drivers/gpu/drm/bridge/synopsys/dw-dp.c | 71 +++++++++++++++++------------= ---- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-dp.c b/drivers/gpu/drm/brid= ge/synopsys/dw-dp.c index 8d2ab81d4a740a3efef27d0b479a604782b4b2a1..b05ac7bfb05bb7fadf451fd05ca= 561c4328584b0 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-dp.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-dp.c @@ -377,28 +377,28 @@ enum { DW_DP_PHY_PATTERN_CP2520_2, }; =20 struct dw_dp_output_format { u32 bus_format; - u32 color_format; + enum drm_output_color_format color_format; u8 video_mapping; u8 bpc; u8 bpp; }; =20 #define to_dw_dp_bridge_state(s) container_of(s, struct dw_dp_bridge_state= , base) =20 static const struct dw_dp_output_format dw_dp_output_formats[] =3D { - { MEDIA_BUS_FMT_RGB101010_1X30, DRM_COLOR_FORMAT_RGB444, DW_DP_RGB_10BIT,= 10, 30 }, - { MEDIA_BUS_FMT_RGB888_1X24, DRM_COLOR_FORMAT_RGB444, DW_DP_RGB_8BIT, 8, = 24 }, - { MEDIA_BUS_FMT_YUV10_1X30, DRM_COLOR_FORMAT_YCBCR444, DW_DP_YCBCR444_10B= IT, 10, 30 }, - { MEDIA_BUS_FMT_YUV8_1X24, DRM_COLOR_FORMAT_YCBCR444, DW_DP_YCBCR444_8BIT= , 8, 24}, - { MEDIA_BUS_FMT_YUYV10_1X20, DRM_COLOR_FORMAT_YCBCR422, DW_DP_YCBCR422_10= BIT, 10, 20 }, - { MEDIA_BUS_FMT_YUYV8_1X16, DRM_COLOR_FORMAT_YCBCR422, DW_DP_YCBCR422_8BI= T, 8, 16 }, - { MEDIA_BUS_FMT_UYYVYY10_0_5X30, DRM_COLOR_FORMAT_YCBCR420, DW_DP_YCBCR42= 0_10BIT, 10, 15 }, - { MEDIA_BUS_FMT_UYYVYY8_0_5X24, DRM_COLOR_FORMAT_YCBCR420, DW_DP_YCBCR420= _8BIT, 8, 12 }, - { MEDIA_BUS_FMT_RGB666_1X24_CPADHI, DRM_COLOR_FORMAT_RGB444, DW_DP_RGB_6B= IT, 6, 18 }, + { MEDIA_BUS_FMT_RGB101010_1X30, DRM_OUTPUT_COLOR_FORMAT_RGB444, DW_DP_RGB= _10BIT, 10, 30 }, + { MEDIA_BUS_FMT_RGB888_1X24, DRM_OUTPUT_COLOR_FORMAT_RGB444, DW_DP_RGB_8B= IT, 8, 24 }, + { MEDIA_BUS_FMT_YUV10_1X30, DRM_OUTPUT_COLOR_FORMAT_YCBCR444, DW_DP_YCBCR= 444_10BIT, 10, 30 }, + { MEDIA_BUS_FMT_YUV8_1X24, DRM_OUTPUT_COLOR_FORMAT_YCBCR444, DW_DP_YCBCR4= 44_8BIT, 8, 24}, + { MEDIA_BUS_FMT_YUYV10_1X20, DRM_OUTPUT_COLOR_FORMAT_YCBCR422, DW_DP_YCBC= R422_10BIT, 10, 20 }, + { MEDIA_BUS_FMT_YUYV8_1X16, DRM_OUTPUT_COLOR_FORMAT_YCBCR422, DW_DP_YCBCR= 422_8BIT, 8, 16 }, + { MEDIA_BUS_FMT_UYYVYY10_0_5X30, DRM_OUTPUT_COLOR_FORMAT_YCBCR420, DW_DP_= YCBCR420_10BIT, 10, 15 }, + { MEDIA_BUS_FMT_UYYVYY8_0_5X24, DRM_OUTPUT_COLOR_FORMAT_YCBCR420, DW_DP_Y= CBCR420_8BIT, 8, 12 }, + { MEDIA_BUS_FMT_RGB666_1X24_CPADHI, DRM_OUTPUT_COLOR_FORMAT_RGB444, DW_DP= _RGB_6BIT, 6, 18 }, }; =20 static const struct dw_dp_output_format *dw_dp_get_output_format(u32 bus_f= ormat) { unsigned int i; @@ -1089,26 +1089,26 @@ static int dw_dp_send_vsc_sdp(struct dw_dp *dp) vsc.content_type =3D DP_CONTENT_TYPE_NOT_DEFINED; =20 sdp.flags =3D DW_DP_SDP_VERTICAL_INTERVAL; =20 switch (state->color_format) { - case DRM_COLOR_FORMAT_YCBCR444: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR444: vsc.pixelformat =3D DP_PIXELFORMAT_YUV444; break; - case DRM_COLOR_FORMAT_YCBCR420: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR420: vsc.pixelformat =3D DP_PIXELFORMAT_YUV420; break; - case DRM_COLOR_FORMAT_YCBCR422: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR422: vsc.pixelformat =3D DP_PIXELFORMAT_YUV422; break; - case DRM_COLOR_FORMAT_RGB444: + case DRM_OUTPUT_COLOR_FORMAT_RGB444: default: vsc.pixelformat =3D DP_PIXELFORMAT_RGB; break; } =20 - if (state->color_format =3D=3D DRM_COLOR_FORMAT_RGB444) { + if (state->color_format =3D=3D DRM_OUTPUT_COLOR_FORMAT_RGB444) { vsc.colorimetry =3D DP_COLORIMETRY_DEFAULT; vsc.dynamic_range =3D DP_DYNAMIC_RANGE_VESA; } else { vsc.colorimetry =3D DP_COLORIMETRY_BT709_YCC; vsc.dynamic_range =3D DP_DYNAMIC_RANGE_CTA; @@ -1146,35 +1146,36 @@ static bool dw_dp_video_need_vsc_sdp(struct dw_dp *= dp) return -EINVAL; =20 if (!link->vsc_sdp_supported) return false; =20 - if (state->color_format =3D=3D DRM_COLOR_FORMAT_YCBCR420) + if (state->color_format =3D=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR420) return true; =20 return false; } =20 -static int dw_dp_video_set_msa(struct dw_dp *dp, u8 color_format, u8 bpc, - u16 vstart, u16 hstart) +static int dw_dp_video_set_msa(struct dw_dp *dp, + enum drm_output_color_format color_format, + u8 bpc, u16 vstart, u16 hstart) { u16 misc =3D 0; =20 if (dw_dp_video_need_vsc_sdp(dp)) misc |=3D DP_MSA_MISC_COLOR_VSC_SDP; =20 switch (color_format) { - case DRM_COLOR_FORMAT_RGB444: + case DRM_OUTPUT_COLOR_FORMAT_RGB444: misc |=3D DP_MSA_MISC_COLOR_RGB; break; - case DRM_COLOR_FORMAT_YCBCR444: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR444: misc |=3D DP_MSA_MISC_COLOR_YCBCR_444_BT709; break; - case DRM_COLOR_FORMAT_YCBCR422: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR422: misc |=3D DP_MSA_MISC_COLOR_YCBCR_422_BT709; break; - case DRM_COLOR_FORMAT_YCBCR420: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR420: break; default: return -EINVAL; } =20 @@ -1302,13 +1303,13 @@ static int dw_dp_video_enable(struct dw_dp *dp) average_bytes_per_tu =3D ts / 1000; average_bytes_per_tu_frac =3D ts / 100 - average_bytes_per_tu * 10; if (dp->pixel_mode =3D=3D DW_DP_MP_SINGLE_PIXEL) { if (average_bytes_per_tu < 6) init_threshold =3D 32; - else if (hblank <=3D 80 && color_format !=3D DRM_COLOR_FORMAT_YCBCR420) + else if (hblank <=3D 80 && color_format !=3D DRM_OUTPUT_COLOR_FORMAT_YCB= CR420) init_threshold =3D 12; - else if (hblank <=3D 40 && color_format =3D=3D DRM_COLOR_FORMAT_YCBCR420) + else if (hblank <=3D 40 && color_format =3D=3D DRM_OUTPUT_COLOR_FORMAT_Y= CBCR420) init_threshold =3D 3; else init_threshold =3D 16; } else { u32 t1 =3D 0, t2 =3D 0, t3 =3D 0; @@ -1316,47 +1317,47 @@ static int dw_dp_video_enable(struct dw_dp *dp) switch (bpc) { case 6: t1 =3D (4 * 1000 / 9) * link->lanes; break; case 8: - if (color_format =3D=3D DRM_COLOR_FORMAT_YCBCR422) { + if (color_format =3D=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR422) { t1 =3D (1000 / 2) * link->lanes; } else { if (dp->pixel_mode =3D=3D DW_DP_MP_DUAL_PIXEL) t1 =3D (1000 / 3) * link->lanes; else t1 =3D (3000 / 16) * link->lanes; } break; case 10: - if (color_format =3D=3D DRM_COLOR_FORMAT_YCBCR422) + if (color_format =3D=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR422) t1 =3D (2000 / 5) * link->lanes; else t1 =3D (4000 / 15) * link->lanes; break; case 12: - if (color_format =3D=3D DRM_COLOR_FORMAT_YCBCR422) { + if (color_format =3D=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR422) { if (dp->pixel_mode =3D=3D DW_DP_MP_DUAL_PIXEL) t1 =3D (1000 / 6) * link->lanes; else t1 =3D (1000 / 3) * link->lanes; } else { t1 =3D (2000 / 9) * link->lanes; } break; case 16: - if (color_format !=3D DRM_COLOR_FORMAT_YCBCR422 && + if (color_format !=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR422 && dp->pixel_mode =3D=3D DW_DP_MP_DUAL_PIXEL) t1 =3D (1000 / 6) * link->lanes; else t1 =3D (1000 / 4) * link->lanes; break; default: return -EINVAL; } =20 - if (color_format =3D=3D DRM_COLOR_FORMAT_YCBCR420) + if (color_format =3D=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR420) t2 =3D (link->rate / 4) * 1000 / (mode->clock / 2); else t2 =3D (link->rate / 4) * 1000 / mode->clock; =20 if (average_bytes_per_tu_frac) @@ -1572,17 +1573,17 @@ static enum drm_mode_status dw_dp_bridge_mode_valid= (struct drm_bridge *bridge, { struct dw_dp *dp =3D bridge_to_dp(bridge); struct dw_dp_link *link =3D &dp->link; u32 min_bpp; =20 - if (info->color_formats & DRM_COLOR_FORMAT_YCBCR420 && + if (info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR420) && link->vsc_sdp_supported && (drm_mode_is_420_only(info, mode) || drm_mode_is_420_also(info, mode)= )) min_bpp =3D 12; - else if (info->color_formats & DRM_COLOR_FORMAT_YCBCR422) + else if (info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422)) min_bpp =3D 16; - else if (info->color_formats & DRM_COLOR_FORMAT_RGB444) + else if (info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444)) min_bpp =3D 18; else min_bpp =3D 24; =20 if (!link->vsc_sdp_supported && @@ -1775,18 +1776,18 @@ static u32 *dw_dp_bridge_atomic_get_output_bus_fmts= (struct drm_bridge *bridge, fmt =3D &dw_dp_output_formats[i]; =20 if (fmt->bpc > conn_state->max_bpc) continue; =20 - if (!(fmt->color_format & di->color_formats)) + if (!(BIT(fmt->color_format) & di->color_formats)) continue; =20 - if (fmt->color_format =3D=3D DRM_COLOR_FORMAT_YCBCR420 && + if (fmt->color_format =3D=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR420 && !link->vsc_sdp_supported) continue; =20 - if (fmt->color_format !=3D DRM_COLOR_FORMAT_YCBCR420 && + if (fmt->color_format !=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR420 && drm_mode_is_420_only(di, &mode)) continue; =20 if (!dw_dp_bandwidth_ok(dp, &mode, fmt->bpp, link->lanes, link->rate)) continue; --=20 2.53.0 From nobody Tue Apr 7 18:48:14 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DD04A413227; Fri, 27 Feb 2026 14:00:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200821; cv=none; b=MvA/I/pWDezaT/sWDszcH9/KTI1mlBqbkhNk3v2AeIWveZy+PnOMFn7plgkfaEgvl4/P4TUKh+JvdfoTKrGcN6vNocuQIZ6UzToq593u1VNOhuIva2nyytmZsP8Nq2XXZcf7SsUMYlxnCfe4T8Y7xmcruJgPJJTU/GyxwoIe398= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200821; c=relaxed/simple; bh=pmuV9XT5xz4TIGCX33nAahI5S0bV94XYGEmoM0J00kE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ngLJNcuMUsq7GHZV8Jqipwq79gh6TEsTZAoOufmwr79yPRf4jX+Ds9A5PTwjBy1TBeZYAjpm4axqVooeXviExCPWANx1ploaoahj79o2XnP0nalMF7ebAh5RVKcoF+jTck1x/9X93Uh65p85Y7qJdI8EsvSs34221w/HjXiOC8A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QU0F0kJ5; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="QU0F0kJ5" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 429D1C19423; Fri, 27 Feb 2026 14:00:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772200821; bh=pmuV9XT5xz4TIGCX33nAahI5S0bV94XYGEmoM0J00kE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=QU0F0kJ5NBlgWFhg738XGBv5DVWfKxPpFdsmRUjAYRflkwtxpQ5Gei814H2aTjtQP cm4zFGisMDOTjsgdrhSkJvgzhLlUYpd9VWazCXFEZ/UHHPFxJHSV82S7swMwxUwvVO fgu6HxZceVtp7b+sk9Vqs1CeB5XSmy3dkqF8XMlWPC1X7KBgBbvL6QDvfrZxfatjwH zfyljkcwr4VFZwYLK0N92JL8/LAqbxYJWJWyOj53vCJ1UTJPwfVmx5N1F5sZ3QD5ra o6iAtf8pWpmZ2d/wh45BBc0IA49nFp3nJrQkofK+ypA/5FLvKkZV8+ZHGQJHYvVGOd zcVQ0Rw3l5cTQ== From: Maxime Ripard Date: Fri, 27 Feb 2026 14:59:53 +0100 Subject: [PATCH v2 09/14] drm/bridge: synopsys: dw-hdmi: Convert to drm_output_color_format Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260227-drm-rework-color-formats-v2-9-8bd278e2af9d@kernel.org> References: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> In-Reply-To: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> To: Nicolas Frattaroli , Jani Nikula , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Andy Yan , Liviu Dudau , Chun-Kuang Hu , Philipp Zabel , Matthias Brugger , AngeloGioacchino Del Regno , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Liu Ying , Chen-Yu Tsai , Samuel Holland , Dave Stevenson , =?utf-8?q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3565; i=mripard@kernel.org; h=from:subject:message-id; bh=pmuV9XT5xz4TIGCX33nAahI5S0bV94XYGEmoM0J00kE=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkLF4d12J2ec9SgUd/+lbB1K6Oz7krdD6zXeANUI1O+S t09u3tjx1QWBmFOBlkxRZYnMmGnl7cvrnKwX/kDZg4rE8gQBi5OAZhI+QvGOrX6Y1dleQX5VHl+ XJk0SSKOO/Fw+ETn5DVKWlbZc90etBd8dJSdtHXisXv6K5Mfml61YqzTeC2kaeNweFLACqZS8W9 p6llsDiZst4TsT704sfyswKU9dWtVbzz+aZWhuD1ZqSLQSAEA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Now that we introduced a new drm_output_color_format enum to represent what DRM_COLOR_FORMAT_* bits were representing, we can switch to the new enum. The main difference is that while DRM_COLOR_FORMAT_ was a bitmask, drm_output_color_format is a proper enum. However, the enum was done is such a way than DRM_COLOR_FORMAT_X =3D BIT(DRM_OUTPUT_COLOR_FORMAT_X) so the transitition is easier. The only thing we need to consider is if the original code meant to use that value as a bitmask, in which case we do need to keep the bit shift, or as a discriminant in which case we don't. Reviewed-by: Philipp Zabel Acked-by: Jani Nikula Signed-off-by: Maxime Ripard --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index ee88c0e793b0416d20105a43448cb4037402e64b..0296e110ce65ffc284e120f4e3f= 92052474e83e5 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2662,11 +2662,11 @@ static u32 *dw_hdmi_bridge_atomic_get_output_bus_fm= ts(struct drm_bridge *bridge, struct drm_connector *conn =3D conn_state->connector; struct drm_display_info *info =3D &conn->display_info; struct drm_display_mode *mode =3D &crtc_state->mode; u8 max_bpc =3D conn_state->max_requested_bpc; bool is_hdmi2_sink =3D info->hdmi.scdc.supported || - (info->color_formats & DRM_COLOR_FORMAT_YCBCR420); + (info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR420)); u32 *output_fmts; unsigned int i =3D 0; =20 *num_output_fmts =3D 0; =20 @@ -2721,40 +2721,40 @@ static u32 *dw_hdmi_bridge_atomic_get_output_bus_fm= ts(struct drm_bridge *bridge, =20 /* Default 8bit RGB fallback */ output_fmts[i++] =3D MEDIA_BUS_FMT_RGB888_1X24; =20 if (max_bpc >=3D 16 && info->bpc =3D=3D 16) { - if (info->color_formats & DRM_COLOR_FORMAT_YCBCR444) + if (info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444)) output_fmts[i++] =3D MEDIA_BUS_FMT_YUV16_1X48; =20 output_fmts[i++] =3D MEDIA_BUS_FMT_RGB161616_1X48; } =20 if (max_bpc >=3D 12 && info->bpc >=3D 12) { - if (info->color_formats & DRM_COLOR_FORMAT_YCBCR422) + if (info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422)) output_fmts[i++] =3D MEDIA_BUS_FMT_UYVY12_1X24; =20 - if (info->color_formats & DRM_COLOR_FORMAT_YCBCR444) + if (info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444)) output_fmts[i++] =3D MEDIA_BUS_FMT_YUV12_1X36; =20 output_fmts[i++] =3D MEDIA_BUS_FMT_RGB121212_1X36; } =20 if (max_bpc >=3D 10 && info->bpc >=3D 10) { - if (info->color_formats & DRM_COLOR_FORMAT_YCBCR422) + if (info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422)) output_fmts[i++] =3D MEDIA_BUS_FMT_UYVY10_1X20; =20 - if (info->color_formats & DRM_COLOR_FORMAT_YCBCR444) + if (info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444)) output_fmts[i++] =3D MEDIA_BUS_FMT_YUV10_1X30; =20 output_fmts[i++] =3D MEDIA_BUS_FMT_RGB101010_1X30; } =20 - if (info->color_formats & DRM_COLOR_FORMAT_YCBCR422) + if (info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422)) output_fmts[i++] =3D MEDIA_BUS_FMT_UYVY8_1X16; =20 - if (info->color_formats & DRM_COLOR_FORMAT_YCBCR444) + if (info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444)) output_fmts[i++] =3D MEDIA_BUS_FMT_YUV8_1X24; =20 *num_output_fmts =3D i; =20 return output_fmts; --=20 2.53.0 From nobody Tue Apr 7 18:48:14 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EDFF838A71F; Fri, 27 Feb 2026 14:00:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200825; cv=none; b=IWEO+MjHM6pR6NPiHSYgLjvoD0LaGN40Al2mMAUALzcrwVCD0lpCXDIE8sci8hDtdxwMx1GMhysenwNQTSLrIZVAQjuxDSzBwk13xJ9/hNe8pvB65hly9/iMR4qy2cnIr/FIc8+CzkkXzrVNgVkQUX7SPVGNqQsO+cnPBuDp2Fo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200825; c=relaxed/simple; bh=UOPw4lyjLgO8th4KVe5p6838LUE8j5nBPpQHE2tj2aA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M4jcWjopDBauL9+hhcWaKLoTUxl9oifcWS07oUtD1UhbE+JxT8cBMhrfqq0i5DJPh5oE5GkHxUOiYDv6Bl3bdwzxZr2LlEJ/arlbbl2SqLHItx6acHNCNSVHQ1M6jC6frgfj/PJQ6O8lmjCZ7EioOpWGL+iRBhDPqhCrABt+Jxs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FYibSH2L; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="FYibSH2L" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 00B10C19423; Fri, 27 Feb 2026 14:00:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772200824; bh=UOPw4lyjLgO8th4KVe5p6838LUE8j5nBPpQHE2tj2aA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=FYibSH2LyS171XMctAmHbauqhNEnJWnVmbLIwRb7crCY/nxtcFOnquS9YyGGpnamL SnRg/U+X8Uq4BQJg9ntSQ4Uu6aV5H5RNnd3lMoeVytm/3BJOWzHEJDT+hBYvP2ssCp qVBokUBFNp+gT11I35srTtvTb7hEoK0ErPu6o3Rpt3JaIblNVPYcaWw1TYhDqGIuZ/ uxc/qNb/N2p82PA9TvyKJ+bswXkTJl79hqgb0K+rHtamAURzuVDoUEtAbI18yKTmAG cIyQ2kvSy43iLxkkPRyNhYWhvI/uVNcPK7cLm8n9Nc/EfjRh+/5tGEIcrdcMg4Q2kt ktMo9reM/U7dg== From: Maxime Ripard Date: Fri, 27 Feb 2026 14:59:54 +0100 Subject: [PATCH v2 10/14] drm/arm: komeda: Convert to drm_output_color_format Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260227-drm-rework-color-formats-v2-10-8bd278e2af9d@kernel.org> References: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> In-Reply-To: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> To: Nicolas Frattaroli , Jani Nikula , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Andy Yan , Liviu Dudau , Chun-Kuang Hu , Philipp Zabel , Matthias Brugger , AngeloGioacchino Del Regno , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Liu Ying , Chen-Yu Tsai , Samuel Holland , Dave Stevenson , =?utf-8?q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5568; i=mripard@kernel.org; h=from:subject:message-id; bh=UOPw4lyjLgO8th4KVe5p6838LUE8j5nBPpQHE2tj2aA=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkLF4fLz/he/vj+C7dvtmxNemZh55aXNM85s4tt5fyU7 JlsNX8UO6ayMAhzMsiKKbI8kQk7vbx9cZWD/cofMHNYmUCGMHBxCsBE0psYG3qN3M9srerasmLz j2kHX0he4Yt/9qxMW2N3VNxmc+MLxcY1M92z/q9j7bc1Wr/MZPt+d8ZaGbdY/bsvvOQzw0NvWBb zB3uZlc6yU8l/PVU2+GVp+d2Vz75LH3G7vSFkwtOtTZYmnWkA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Now that we introduced a new drm_output_color_format enum to represent what DRM_COLOR_FORMAT_* bits were representing, we can switch to the new enum. The main difference is that while DRM_COLOR_FORMAT_ was a bitmask, drm_output_color_format is a proper enum. However, the enum was done is such a way than DRM_COLOR_FORMAT_X =3D BIT(DRM_OUTPUT_COLOR_FORMAT_X) so the transitition is easier. The only thing we need to consider is if the original code meant to use that value as a bitmask, in which case we do need to keep the bit shift, or as a discriminant in which case we don't. Reviewed-by: Liviu Dudau Acked-by: Jani Nikula Signed-off-by: Maxime Ripard --- drivers/gpu/drm/arm/display/komeda/d71/d71_component.c | 14 +++++++---= ---- drivers/gpu/drm/arm/display/komeda/komeda_crtc.c | 2 +- drivers/gpu/drm/arm/display/komeda/komeda_pipeline.h | 5 +++-- drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c | 2 +- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/arm/display/komeda/d71/d71_component.c b/drive= rs/gpu/drm/arm/display/komeda/d71/d71_component.c index 67e5d3b4190f62549bc8da700deb4b15e138b515..27ca2930cdac6e76a058102ea2c= 1d8306d85e751 100644 --- a/drivers/gpu/drm/arm/display/komeda/d71/d71_component.c +++ b/drivers/gpu/drm/arm/display/komeda/d71/d71_component.c @@ -1078,15 +1078,15 @@ static void d71_improc_update(struct komeda_compone= nt *c, } =20 mask |=3D IPS_CTRL_YUV | IPS_CTRL_CHD422 | IPS_CTRL_CHD420; =20 /* config color format */ - if (st->color_format =3D=3D DRM_COLOR_FORMAT_YCBCR420) + if (st->color_format =3D=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR420) ctrl |=3D IPS_CTRL_YUV | IPS_CTRL_CHD422 | IPS_CTRL_CHD420; - else if (st->color_format =3D=3D DRM_COLOR_FORMAT_YCBCR422) + else if (st->color_format =3D=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR422) ctrl |=3D IPS_CTRL_YUV | IPS_CTRL_CHD422; - else if (st->color_format =3D=3D DRM_COLOR_FORMAT_YCBCR444) + else if (st->color_format =3D=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR444) ctrl |=3D IPS_CTRL_YUV; =20 malidp_write32_mask(reg, BLK_CONTROL, mask, ctrl); } =20 @@ -1143,16 +1143,16 @@ static int d71_improc_init(struct d71_dev *d71, return PTR_ERR(c); } =20 improc =3D to_improc(c); improc->supported_color_depths =3D BIT(8) | BIT(10); - improc->supported_color_formats =3D DRM_COLOR_FORMAT_RGB444 | - DRM_COLOR_FORMAT_YCBCR444 | - DRM_COLOR_FORMAT_YCBCR422; + improc->supported_color_formats =3D BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422); value =3D malidp_read32(reg, BLK_INFO); if (value & IPS_INFO_CHD420) - improc->supported_color_formats |=3D DRM_COLOR_FORMAT_YCBCR420; + improc->supported_color_formats |=3D BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR42= 0); =20 improc->supports_csc =3D true; improc->supports_gamma =3D true; =20 return 0; diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c b/drivers/gpu= /drm/arm/display/komeda/komeda_crtc.c index 9c8b8da531a7f169cb55f0daba3a898d29cdfdf9..714af5c889d742144113f6d86c7= 9b009d6a19384 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c @@ -38,11 +38,11 @@ void komeda_crtc_get_color_config(struct drm_crtc_state= *crtc_st, min_bpc =3D conn_bpc; } =20 /* connector doesn't config any color_format, use RGB444 as default */ if (!conn_color_formats) - conn_color_formats =3D DRM_COLOR_FORMAT_RGB444; + conn_color_formats =3D BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444); =20 *color_depths =3D GENMASK(min_bpc, 0); *color_formats =3D conn_color_formats; } =20 diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_pipeline.h b/drivers= /gpu/drm/arm/display/komeda/komeda_pipeline.h index 37b9e92202443cc72adc0666ed047d4f77d79782..bbee6da43164f7cc32340ff4479= d99609c18db7e 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_pipeline.h +++ b/drivers/gpu/drm/arm/display/komeda/komeda_pipeline.h @@ -317,20 +317,21 @@ struct komeda_splitter_state { u16 overlap; }; =20 struct komeda_improc { struct komeda_component base; - u32 supported_color_formats; /* DRM_RGB/YUV444/YUV420*/ + u32 supported_color_formats; /* BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444/YUV44= 4/YUV420) */ u32 supported_color_depths; /* BIT(8) | BIT(10)*/ u8 supports_degamma : 1; u8 supports_csc : 1; u8 supports_gamma : 1; }; =20 struct komeda_improc_state { struct komeda_component_state base; - u8 color_format, color_depth; + enum drm_output_color_format color_format; + u8 color_depth; u16 hsize, vsize; u32 fgamma_coeffs[KOMEDA_N_GAMMA_COEFFS]; u32 ctm_coeffs[KOMEDA_N_CTM_COEFFS]; }; =20 diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c b/d= rivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c index f4e76b46ca327a1c5db9bdbdd9550b45190b30d8..6f9b10cc831ff748296b9ed30b6= de398c90c4786 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c @@ -797,11 +797,11 @@ komeda_improc_validate(struct komeda_improc *improc, improc->supported_color_formats); return -EINVAL; } =20 st->color_depth =3D __fls(avail_depths); - st->color_format =3D BIT(__ffs(avail_formats)); + st->color_format =3D __ffs(avail_formats); } =20 if (kcrtc_st->base.color_mgmt_changed) { drm_lut_to_fgamma_coeffs(kcrtc_st->base.gamma_lut, st->fgamma_coeffs); --=20 2.53.0 From nobody Tue Apr 7 18:48:14 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AD78342188D; Fri, 27 Feb 2026 14:00:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200827; cv=none; b=WBcFK15w0tj9XjaltxYRRyANwOAF/+d107C8RWHcYwFjoWgw0e0dlxNj1BVQ6vLTXAHKzGvjFIU+S072q2luKRE6LAgG5YJ2g4KIVihI8tKBZJrEFZW9nekJO4uUNZGqIogWhloc3wUilTmjLu3JTiDx8HDSNkHWrODkGECGLtg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200827; c=relaxed/simple; bh=skFI5P2haIGjdD0+W8BO9ttWB17k7eh3BIV8frGuT1I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=r6a+y+4KstYOUsikvwKfYrkJXO2Ln+/lX9QKRFvoJ8cxhBG8KBfthtp7iTysYXeneGd91Bf+yPe7Z0kroi36CFhMDVP9v0G79+AkeZFk9jFN4TRlr8JwZbiON6i2mqFGqiGsmrhU+TKnXNn8GA89MduqPhZZHA9qxcbGWD4+j04= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OVuqYxxV; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="OVuqYxxV" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B3B42C19423; Fri, 27 Feb 2026 14:00:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772200827; bh=skFI5P2haIGjdD0+W8BO9ttWB17k7eh3BIV8frGuT1I=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=OVuqYxxVosJaZvlaSAxD1wNFUzIXwFaoC+zjwuLuLSiTayScMcGIugaIUoAx378xq mMmFNqMqPku7/0ZC1B+yFnsPk+dN2gn7B4bpnKrQQP+5B/950G1td+im81uogsnPpU szfYwIPFrRc1qv5VoZN6abJfcavvpfbSP5tldfRNivSW0kvk8coO7YzxY9zOYWNFR9 wRZ38urlkNpz3CpogWe1N4fdQMNvNLamG2kWUxrGbOO2A86pM3MhGjpg92A0VUGdFI jpNGJ7Y/TfCtHzOAVidRrPTf6ebh6z7T4GQiGlTXX6IfJRQSO+BzVydngr+TzWsBVA tWM9sqkNp6Bcw== From: Maxime Ripard Date: Fri, 27 Feb 2026 14:59:55 +0100 Subject: [PATCH v2 11/14] drm/mediatek: dp: Convert to drm_output_color_format Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260227-drm-rework-color-formats-v2-11-8bd278e2af9d@kernel.org> References: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> In-Reply-To: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> To: Nicolas Frattaroli , Jani Nikula , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Andy Yan , Liviu Dudau , Chun-Kuang Hu , Philipp Zabel , Matthias Brugger , AngeloGioacchino Del Regno , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Liu Ying , Chen-Yu Tsai , Samuel Holland , Dave Stevenson , =?utf-8?q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2376; i=mripard@kernel.org; h=from:subject:message-id; bh=skFI5P2haIGjdD0+W8BO9ttWB17k7eh3BIV8frGuT1I=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkLF4dP1JdPOR58uuXK0+8z9EQCp0bbRKdO/nI0u2nq4 g9S6Q5hHVNZGIQ5GWTFFFmeyISdXt6+uMrBfuUPmDmsTCBDGLg4BWAim54zNryae/D8ioC61UzG bb5Rd/4q/XaxVPr8aEL85+Z7ordNlxz0dGdaGMAqpNLFmmnM7jw/nLGGs5v1ztISrc0SvjtahTM frGlwSlRa877r+jP9ltdntDgjGFiY8k8wPNCbffBz2E0tzWoA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Now that we introduced a new drm_output_color_format enum to represent what DRM_COLOR_FORMAT_* bits were representing, we can switch to the new enum. The main difference is that while DRM_COLOR_FORMAT_ was a bitmask, drm_output_color_format is a proper enum. However, the enum was done is such a way than DRM_COLOR_FORMAT_X =3D BIT(DRM_OUTPUT_COLOR_FORMAT_X) so the transitition is easier. The only thing we need to consider is if the original code meant to use that value as a bitmask, in which case we do need to keep the bit shift, or as a discriminant in which case we don't. Reviewed-by: Philipp Zabel Acked-by: Jani Nikula Signed-off-by: Maxime Ripard --- drivers/gpu/drm/mediatek/mtk_dp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/mediatek/mtk_dp.c b/drivers/gpu/drm/mediatek/m= tk_dp.c index 08c4d64b87b944dbcf57294dc48c740a37374469..c52cc7c2e20063b9dcc99be46bc= 7de50d67b0d6b 100644 --- a/drivers/gpu/drm/mediatek/mtk_dp.c +++ b/drivers/gpu/drm/mediatek/mtk_dp.c @@ -2452,11 +2452,11 @@ static enum drm_mode_status mtk_dp_bridge_mode_valid(struct drm_bridge *bridge, const struct drm_display_info *info, const struct drm_display_mode *mode) { struct mtk_dp *mtk_dp =3D mtk_dp_from_bridge(bridge); - u32 bpp =3D info->color_formats & DRM_COLOR_FORMAT_YCBCR422 ? 16 : 24; + u32 bpp =3D info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422) ?= 16 : 24; u32 lane_count_min =3D mtk_dp->train_info.lane_count; u32 rate =3D drm_dp_bw_code_to_link_rate(mtk_dp->train_info.link_rate) * lane_count_min; =20 /* @@ -2519,11 +2519,11 @@ static u32 *mtk_dp_bridge_atomic_get_input_bus_fmts= (struct drm_bridge *bridge, * datarate of YUV422 and sink device supports YUV422, we output YUV422 * format. Use this condition, we can support more resolution. */ if (((rate * 97 / 100) < (mode->clock * 24 / 8)) && ((rate * 97 / 100) > (mode->clock * 16 / 8)) && - (display_info->color_formats & DRM_COLOR_FORMAT_YCBCR422)) { + (display_info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422))= ) { input_fmts =3D kcalloc(1, sizeof(*input_fmts), GFP_KERNEL); if (!input_fmts) return NULL; *num_input_fmts =3D 1; input_fmts[0] =3D MEDIA_BUS_FMT_YUYV8_1X16; --=20 2.53.0 From nobody Tue Apr 7 18:48:14 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1C79F421896; Fri, 27 Feb 2026 14:00:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200830; cv=none; b=oJXza0sFG3SHFkNP7HC/akxdhMf9z8MTPiUSQJc7LAYlanwiSBI6FWeP1AOqnFlWrNbK6vY2bVajpZZNRI9UiOYEiTFcK173JNF9l9L6a4bztb5D0hsWjAjYYFtwPuZWi2TyuXYwUwovl88TzyV7n5DRw+8izE5QBi6bpoL5cMk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200830; c=relaxed/simple; bh=uP3ezNFnJxO2oGz8kzraRalxMbsjayeIpXlAa0HLzJU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tdNlS8TqezikqvX4D+oyTmDTk1hCaA0EzpzI+4YzoezcdQjOQc+bMk4kX5dIzfBFM67eIchxakCh/o6FnSduzmW+ztXEXga8Nq+vdq3dNCqb+/jjm/ucyc/zHj4e5r9pX5Phy9gVUrPYpeaRa2yL9dlO50pUE98Q6/IxINXvQhU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=HnWlPy7E; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="HnWlPy7E" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7634AC2BC9E; Fri, 27 Feb 2026 14:00:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772200830; bh=uP3ezNFnJxO2oGz8kzraRalxMbsjayeIpXlAa0HLzJU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=HnWlPy7EGaKTTf3MiCh/VqrNCgIgxj1pd9cXQUpN51SmxXXFMWx18GHzNScsvjDQw Qu1fM+pKBx7XFZrjrJTrGQhlQLzE33xZI2I0YE8NkWNSYXvbWdlMnKMpoXSz4T9aLi 0SanUs8PtGfj6ZJJ/412de5Z1cT8YDarJJyxRGLXbyWvzTFMy91gy9/85vYspAriyP cM1z4nkU6WHXvO7qASOu9BtZUvbxbh1nOGuFXqtvhYCXO1BcCjus+JHDk6JZAHvW9m xfO/k2gb10lLKwKwdPrTda9fjurjC0q+6hYMpkLfPqOW3rHuvk6Fb5ns4AKRZ2ekql ss9XOd9G0Slyg== From: Maxime Ripard Date: Fri, 27 Feb 2026 14:59:56 +0100 Subject: [PATCH v2 12/14] drm/rockchip: analogix: Convert to drm_output_color_format Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260227-drm-rework-color-formats-v2-12-8bd278e2af9d@kernel.org> References: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> In-Reply-To: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> To: Nicolas Frattaroli , Jani Nikula , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Andy Yan , Liviu Dudau , Chun-Kuang Hu , Philipp Zabel , Matthias Brugger , AngeloGioacchino Del Regno , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Liu Ying , Chen-Yu Tsai , Samuel Holland , Dave Stevenson , =?utf-8?q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1938; i=mripard@kernel.org; h=from:subject:message-id; bh=uP3ezNFnJxO2oGz8kzraRalxMbsjayeIpXlAa0HLzJU=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkLF0c4vmvb4fSKbeHusn+rnH5qTIlf6bz81Jq2dfV+B 5acPjZ/ecdUFgZhTgZZMUWWJzJhp5e3L65ysF/5A2YOKxPIEAYuTgGYyOIVjA03rK7lz539xEnR 0PRQxeY7bBuV6ve1lNfvVovj0s2/anW79Ybu+vW8jc03hHTYj6TpnGWs0zV967mr3nr5LIN67cx ja95f9s9I6GVc4PH58sPIHUGV36dteOxi/vjinWUzDxxfuy9uFwA= X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Now that we introduced a new drm_output_color_format enum to represent what DRM_COLOR_FORMAT_* bits were representing, we can switch to the new enum. The main difference is that while DRM_COLOR_FORMAT_ was a bitmask, drm_output_color_format is a proper enum. However, the enum was done is such a way than DRM_COLOR_FORMAT_X =3D BIT(DRM_OUTPUT_COLOR_FORMAT_X) so the transitition is easier. The only thing we need to consider is if the original code meant to use that value as a bitmask, in which case we do need to keep the bit shift, or as a discriminant in which case we don't. Acked-by: Jani Nikula Signed-off-by: Maxime Ripard --- drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/= drm/rockchip/analogix_dp-rockchip.c index fdab71d51e2a71d644f128b1bf1c39429b4ad52a..96bd3dd239d251af3d5a7d0fbd4= dd74942d44f2d 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -169,16 +169,16 @@ static int rockchip_dp_powerdown(struct analogix_dp_p= lat_data *plat_data) static int rockchip_dp_get_modes(struct analogix_dp_plat_data *plat_data, struct drm_connector *connector) { struct drm_display_info *di =3D &connector->display_info; /* VOP couldn't output YUV video format for eDP rightly */ - u32 mask =3D DRM_COLOR_FORMAT_YCBCR444 | DRM_COLOR_FORMAT_YCBCR422; + u32 mask =3D BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444) | BIT(DRM_OUTPUT_COLOR= _FORMAT_YCBCR422); =20 if ((di->color_formats & mask)) { DRM_DEBUG_KMS("Swapping display color format from YUV to RGB\n"); di->color_formats &=3D ~mask; - di->color_formats |=3D DRM_COLOR_FORMAT_RGB444; + di->color_formats |=3D BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444); di->bpc =3D 8; } =20 return 0; } --=20 2.53.0 From nobody Tue Apr 7 18:48:14 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 375EF4219FB; Fri, 27 Feb 2026 14:00:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200833; cv=none; b=uqJBrGYYdnMmwW6tcIrcZzLYt2rJJHRbxyMWXswYjOCJ5PPjrecbUtryxBOnrxryKZrlC7Yf9WM3y9aI+JOrhV3uq2x4re4S0rv8VO2qb6/FiVXSgBfqkzwaCgN5e96MUhPBHnDx/1XHedJY1JWxr+3ZOBxhXo5Sy+M1YRAJwug= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200833; c=relaxed/simple; bh=YVQvpGLZ5wA3mAnHs4fX4YhU+wAN3umweSoHZOXTpbw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lc1rWDYVX0e3c2WG7GJJ9Kylb8yyKHdAXgOxr6A/qjRS0elZP2tYsih8SM1Kb8i+805J901dNxQtUM3DSOioizz04PEgGOn9hdggpxK0X/e6tkXc2NTNGATyzFYiKnF7EQ+z5uUbj6GQ1VOZ2pPY7BtK5SvlX0v42+foUOX5dNM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ITVEy0Ss; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ITVEy0Ss" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3FD67C19425; Fri, 27 Feb 2026 14:00:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772200832; bh=YVQvpGLZ5wA3mAnHs4fX4YhU+wAN3umweSoHZOXTpbw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ITVEy0SsJyKTpL/ORMk5qp3PfBoxVUBtV25w4T22cWYan2OH4z/q4Tgr50VXYXT9/ Ek3xP6PGxTvjoPIl9nI9DVtMUo6B/vKQsTb9mKZrfxvnECP/HJdHNQp0vsWHNAM/bT yymBEJhLN72Xk3TmoSjkaZecwpbzmFG+gc0oQuVm0sUiIV69ugT1z88PzVvBOSlSPC GG6WLUwXD/Ua5CkiPeFFJQTfRmNQO6InMRj/pEnyxY5rlCVP2Qj4LMXJPvui6G4JL9 krNQ/UoGp9KkUgrl+lcSk1Ky9VW97Jd7Pf1ShbUvdsPm3a0H1Q3BPC0RJb3MBh6AZX j5KXn2oRDp3uQ== From: Maxime Ripard Date: Fri, 27 Feb 2026 14:59:57 +0100 Subject: [PATCH v2 13/14] drm/connector: Remove DRM_COLOR_FORMAT defines Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260227-drm-rework-color-formats-v2-13-8bd278e2af9d@kernel.org> References: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> In-Reply-To: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> To: Nicolas Frattaroli , Jani Nikula , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Andy Yan , Liviu Dudau , Chun-Kuang Hu , Philipp Zabel , Matthias Brugger , AngeloGioacchino Del Regno , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Liu Ying , Chen-Yu Tsai , Samuel Holland , Dave Stevenson , =?utf-8?q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1320; i=mripard@kernel.org; h=from:subject:message-id; bh=YVQvpGLZ5wA3mAnHs4fX4YhU+wAN3umweSoHZOXTpbw=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkLF0d4TpkVErTi0775E/s0i1qd1/cazCl9WfTSUPjk6 ftle0w4OqayMAhzMsiKKbI8kQk7vbx9cZWD/cofMHNYmUCGMHBxCsBEVmgzNlz5rsXs79HSZzZT lX9FqJ5gIavqHp89EQvtdVVNPL6dO1/cL+nLuFN3ikvbpzvODEpXGeuzXm9+tm9qa2IVs4VneKC nd6bfZ8XWDufvXW/YyoNOMQXacf38WXZ51frsPR/47h6dIAYA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Now that all users of DRM_COLOR_FORMAT_* defines have been converted to the new enum, we can get rid of those defines. Acked-by: Jani Nikula Signed-off-by: Maxime Ripard --- include/drm/drm_connector.h | 5 ----- 1 file changed, 5 deletions(-) diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h index 227f6190438679104f5336be088a73f4529c15fa..562f6da90facdacc98307c50177= 792e26f2dece6 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -722,15 +722,10 @@ struct drm_display_info { /** * @subpixel_order: Subpixel order of LCD panels. */ enum subpixel_order subpixel_order; =20 -#define DRM_COLOR_FORMAT_RGB444 (1 << DRM_OUTPUT_COLOR_FORMAT_RGB444) -#define DRM_COLOR_FORMAT_YCBCR444 (1 << DRM_OUTPUT_COLOR_FORMAT_YCBCR444) -#define DRM_COLOR_FORMAT_YCBCR422 (1 << DRM_OUTPUT_COLOR_FORMAT_YCBCR422) -#define DRM_COLOR_FORMAT_YCBCR420 (1 << DRM_OUTPUT_COLOR_FORMAT_YCBCR420) - /** * @panel_orientation: Read only connector property for built-in panels, * indicating the orientation of the panel vs the device's casing. * drm_connector_init() sets this to DRM_MODE_PANEL_ORIENTATION_UNKNOWN. * When not UNKNOWN this gets used by the drm_fb_helpers to rotate the --=20 2.53.0 From nobody Tue Apr 7 18:48:14 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EC84F4219FB; Fri, 27 Feb 2026 14:00:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200836; cv=none; b=nPCAaWmYvQU4UzkSgzSY2HcFuvjKp+KBmgW3HRV9iuUaSDpp8Kk4tOohvP3tLgnJrWb0osFcaMpy5CBmi3pOJ/kaCjhjpluQQgLIzLCwSuKdI5R2b8UcRYqzQ0YxcT7n1n/nQ4qw8qYF0UGCqOehTjTox4drYxn+rEDwb4aF5l0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772200836; c=relaxed/simple; bh=3vD2pidAfmuEKESyi6GUFXXUhhM3dHWkMlRgZBLxROo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EjwPyVV8gCJx1U/Ahyrms8RBJ+hHScBT+6eqG0RI/mLto6Ml14O6J7pO3FKaFGH4XxHP/DCbjrNDPvoHvmgAOjLCozQ2Aecq9QVKz2rQBFUkAEvqRJZK6nXxKAADctkWOS9xhNkaan1Cl0tFSr5iwAteRberg9lnoqwM9e9Hyzc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Gu2ZREWw; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Gu2ZREWw" Received: by smtp.kernel.org (Postfix) with ESMTPSA id F127DC19425; Fri, 27 Feb 2026 14:00:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772200835; bh=3vD2pidAfmuEKESyi6GUFXXUhhM3dHWkMlRgZBLxROo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Gu2ZREWw+QLi0kJ2iUM1Zvko6XlzI5E4Lrhr9WcC5XGMKjo1uUjeUj8gATBqa0o5V q1K96MFmzsKD7FK5Hr9BD5BAJ7cuBiCfNs2kab1uTXV4ZU7f+tjTjZxqgOtHdPNeVD 3N1n4S8l4Iac/gl5Q/CCO3uSsEiAPdgnGsmP9iWpCfiE5RYiCY6Ma3dMuPI3BuSSrc qZvDkP/gJwtEvpwFWi0zPb2B3MT6RAHjXjnMaZdRTui+PJwcgLevcUEOUieZJIj347 jCMvOcZwLElfp65tCwXhvbERuSqoXhGfOw2/qA8FsiZ6iH3jBzq2oLYZaX4AfSHrpy QdZdeHyt9uQyA== From: Maxime Ripard Date: Fri, 27 Feb 2026 14:59:58 +0100 Subject: [PATCH v2 14/14] drm/display: hdmi: Use drm_output_color_format instead of hdmi_colorspace Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260227-drm-rework-color-formats-v2-14-8bd278e2af9d@kernel.org> References: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> In-Reply-To: <20260227-drm-rework-color-formats-v2-0-8bd278e2af9d@kernel.org> To: Nicolas Frattaroli , Jani Nikula , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Andy Yan , Liviu Dudau , Chun-Kuang Hu , Philipp Zabel , Matthias Brugger , AngeloGioacchino Del Regno , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Liu Ying , Chen-Yu Tsai , Samuel Holland , Dave Stevenson , =?utf-8?q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=80679; i=mripard@kernel.org; h=from:subject:message-id; bh=3vD2pidAfmuEKESyi6GUFXXUhhM3dHWkMlRgZBLxROo=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkLF0c6cbqZic3Tn1z/4b5XT72mZNjrgta7PhETj11Kt p2SzuTRMZWFQZiTQVZMkeWJTNjp5e2LqxzsV/6AmcPKBDKEgYtTACbizM7YsOllvu7Ee1dlLiU6 PmBee/je+X0fH6kZPlslfjtbLmvOklZH32kFvM3pM2z1nsw50rvmHWND9/+ad9wdmQuN9nx0l2N 8rXVR07WFPeqlwvkdK49tfH1Dv4J1/+/4UJZsljcn50jaB8wFAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D The hdmi_colorspace enum was defined to represent the colorspace value of the HDMI infoframes. It was later used by some HDMI drivers to express the output format they should be setting up. During the introduction of the HDMI helpers, it then was used to represent it in the drm_connector_hdmi_state structure. However, it's always been somewhat redundant with the DRM_COLOR_FORMAT_* defines, and now with the drm_output_color_format enum. Let's consolidate around drm_output_color_format in drm_connector_hdmi_state to facilitate the current effort to provide a global output format selection mechanism. Acked-by: Jani Nikula Signed-off-by: Maxime Ripard --- drivers/gpu/drm/bridge/inno-hdmi.c | 6 +- drivers/gpu/drm/bridge/ite-it6263.c | 2 +- drivers/gpu/drm/display/drm_bridge_connector.c | 4 +- drivers/gpu/drm/display/drm_hdmi_helper.c | 7 +- drivers/gpu/drm/display/drm_hdmi_state_helper.c | 52 ++++-- drivers/gpu/drm/drm_bridge.c | 2 +- drivers/gpu/drm/drm_connector.c | 14 +- drivers/gpu/drm/mediatek/mtk_hdmi_v2.c | 8 +- drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 2 +- drivers/gpu/drm/tests/drm_connector_test.c | 80 ++++----- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 182 ++++++++++-------= ---- drivers/gpu/drm/vc4/vc4_hdmi.c | 18 +- drivers/gpu/drm/vc4/vc4_hdmi.h | 2 +- include/drm/bridge/dw_hdmi_qp.h | 2 +- include/drm/display/drm_hdmi_helper.h | 3 +- include/drm/drm_connector.h | 7 +- 16 files changed, 208 insertions(+), 183 deletions(-) diff --git a/drivers/gpu/drm/bridge/inno-hdmi.c b/drivers/gpu/drm/bridge/in= no-hdmi.c index a26b99b101c4ad04cae15306ce18060fbc52d51a..87422d15d9a2148498fb2576670= 49939788071fd 100644 --- a/drivers/gpu/drm/bridge/inno-hdmi.c +++ b/drivers/gpu/drm/bridge/inno-hdmi.c @@ -651,11 +651,11 @@ static int inno_hdmi_config_video_csc(struct inno_hdm= i *hdmi, value =3D v_VIDEO_INPUT_BITS(VIDEO_INPUT_8BITS) | v_VIDEO_OUTPUT_COLOR(0) | v_VIDEO_INPUT_CSP(0); hdmi_writeb(hdmi, HDMI_VIDEO_CONTRL2, value); =20 - if (conn_state->hdmi.output_format =3D=3D HDMI_COLORSPACE_RGB) { + if (conn_state->hdmi.output_format =3D=3D DRM_OUTPUT_COLOR_FORMAT_RGB444)= { if (conn_state->hdmi.is_limited_range) { csc_mode =3D CSC_RGB_0_255_TO_RGB_16_235_8BIT; auto_csc =3D AUTO_CSC_DISABLE; c0_c2_change =3D C0_C2_CHANGE_DISABLE; csc_enable =3D v_CSC_ENABLE; @@ -670,18 +670,18 @@ static int inno_hdmi_config_video_csc(struct inno_hdm= i *hdmi, v_VIDEO_C0_C2_SWAP(C0_C2_CHANGE_DISABLE)); return 0; } } else { if (colorimetry =3D=3D HDMI_COLORIMETRY_ITU_601) { - if (conn_state->hdmi.output_format =3D=3D HDMI_COLORSPACE_YUV444) { + if (conn_state->hdmi.output_format =3D=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR= 444) { csc_mode =3D CSC_RGB_0_255_TO_ITU601_16_235_8BIT; auto_csc =3D AUTO_CSC_DISABLE; c0_c2_change =3D C0_C2_CHANGE_DISABLE; csc_enable =3D v_CSC_ENABLE; } } else { - if (conn_state->hdmi.output_format =3D=3D HDMI_COLORSPACE_YUV444) { + if (conn_state->hdmi.output_format =3D=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR= 444) { csc_mode =3D CSC_RGB_0_255_TO_ITU709_16_235_8BIT; auto_csc =3D AUTO_CSC_DISABLE; c0_c2_change =3D C0_C2_CHANGE_DISABLE; csc_enable =3D v_CSC_ENABLE; } diff --git a/drivers/gpu/drm/bridge/ite-it6263.c b/drivers/gpu/drm/bridge/i= te-it6263.c index e77681047bb25f9a87844a282ecfd4ca8748482a..4f3ebb7af4d4d845f2458caa739= fa56991fc78a7 100644 --- a/drivers/gpu/drm/bridge/ite-it6263.c +++ b/drivers/gpu/drm/bridge/ite-it6263.c @@ -664,11 +664,11 @@ it6263_bridge_mode_valid(struct drm_bridge *bridge, const struct drm_display_info *info, const struct drm_display_mode *mode) { unsigned long long rate; =20 - rate =3D drm_hdmi_compute_mode_clock(mode, 8, HDMI_COLORSPACE_RGB); + rate =3D drm_hdmi_compute_mode_clock(mode, 8, DRM_OUTPUT_COLOR_FORMAT_RGB= 444); if (rate =3D=3D 0) return MODE_NOCLOCK; =20 return bridge->funcs->hdmi_tmds_char_rate_valid(bridge, mode, rate); } diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/d= rm/display/drm_bridge_connector.c index f686aa5c0ed9b84dbe5e0957df22d08aff2f1945..39cc18f78eda11ba35954f75315= f646c0cb0d8e6 100644 --- a/drivers/gpu/drm/display/drm_bridge_connector.c +++ b/drivers/gpu/drm/display/drm_bridge_connector.c @@ -787,11 +787,11 @@ struct drm_connector *drm_bridge_connector_init(struc= t drm_device *drm, { struct drm_bridge_connector *bridge_connector; struct drm_connector *connector; struct i2c_adapter *ddc =3D NULL; struct drm_bridge *panel_bridge __free(drm_bridge_put) =3D NULL; - unsigned int supported_formats =3D BIT(HDMI_COLORSPACE_RGB); + unsigned int supported_formats =3D BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444); unsigned int max_bpc =3D 8; bool support_hdcp =3D false; int connector_type; int ret; =20 @@ -958,11 +958,11 @@ struct drm_connector *drm_bridge_connector_init(struc= t drm_device *drm, if (connector_type =3D=3D DRM_MODE_CONNECTOR_Unknown) return ERR_PTR(-EINVAL); =20 if (bridge_connector->bridge_hdmi) { if (!connector->ycbcr_420_allowed) - supported_formats &=3D ~BIT(HDMI_COLORSPACE_YUV420); + supported_formats &=3D ~BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR420); =20 bridge_connector->hdmi_funcs =3D drm_bridge_connector_hdmi_funcs; =20 if (bridge_connector->bridge_hdmi->ops & DRM_BRIDGE_OP_HDMI_AUDIO) bridge_connector->hdmi_funcs.audio =3D diff --git a/drivers/gpu/drm/display/drm_hdmi_helper.c b/drivers/gpu/drm/di= splay/drm_hdmi_helper.c index a237dc55805d0decf0773f3dccb71868861486c2..5cb0b033b1713ee9e3aee46503a= eaa2cdb8306b1 100644 --- a/drivers/gpu/drm/display/drm_hdmi_helper.c +++ b/drivers/gpu/drm/display/drm_hdmi_helper.c @@ -208,11 +208,12 @@ EXPORT_SYMBOL(drm_hdmi_avi_infoframe_content_type); * RETURNS: * The TMDS Character Rate, in Hertz, or 0 on error. */ unsigned long long drm_hdmi_compute_mode_clock(const struct drm_display_mode *mode, - unsigned int bpc, enum hdmi_colorspace fmt) + unsigned int bpc, + enum drm_output_color_format fmt) { unsigned long long clock =3D mode->clock * 1000ULL; unsigned int vic =3D drm_match_cea_mode(mode); =20 /* @@ -220,11 +221,11 @@ drm_hdmi_compute_mode_clock(const struct drm_display_= mode *mode, * mandates that VIC 1 always uses 8 bpc. */ if (vic =3D=3D 1 && bpc !=3D 8) return 0; =20 - if (fmt =3D=3D HDMI_COLORSPACE_YUV422) { + if (fmt =3D=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR422) { /* * HDMI 1.0 Spec, section 6.5 - Pixel Encoding states that * YUV422 sends 24 bits over three channels, with Cb and Cr * components being sent on odd and even pixels, respectively. * @@ -246,11 +247,11 @@ drm_hdmi_compute_mode_clock(const struct drm_display_= mode *mode, /* * HDMI 2.0 Spec, Section 7.1 - YCbCr 4:2:0 Pixel Encoding * specifies that YUV420 encoding is carried at a TMDS Character Rate * equal to half the pixel clock rate. */ - if (fmt =3D=3D HDMI_COLORSPACE_YUV420) + if (fmt =3D=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR420) clock =3D clock / 2; =20 if (mode->flags & DRM_MODE_FLAG_DBLCLK) clock =3D clock * 2; =20 diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/= drm/display/drm_hdmi_state_helper.c index f2aec6f65e7a374cea9a1e3adafb4f1cc4d6ab9a..9f3b696aceeb4b60e6e7dea6bc5= 458ce5027a4aa 100644 --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c @@ -324,10 +324,29 @@ void __drm_atomic_helper_connector_hdmi_reset(struct = drm_connector *connector, new_conn_state->max_requested_bpc =3D max_bpc; new_conn_state->hdmi.broadcast_rgb =3D DRM_HDMI_BROADCAST_RGB_AUTO; } EXPORT_SYMBOL(__drm_atomic_helper_connector_hdmi_reset); =20 +static enum hdmi_colorspace +output_color_format_to_hdmi_colorspace(const struct drm_connector *connect= or, + enum drm_output_color_format fmt) +{ + switch (fmt) { + case DRM_OUTPUT_COLOR_FORMAT_YCBCR420: + return HDMI_COLORSPACE_YUV420; + case DRM_OUTPUT_COLOR_FORMAT_YCBCR422: + return HDMI_COLORSPACE_YUV422; + case DRM_OUTPUT_COLOR_FORMAT_YCBCR444: + return HDMI_COLORSPACE_YUV444; + default: + drm_warn(connector->dev, "Unsupported output color format. Defaulting to= RGB."); + fallthrough; + case DRM_OUTPUT_COLOR_FORMAT_RGB444: + return HDMI_COLORSPACE_RGB; + } +} + static const struct drm_display_mode * connector_state_get_mode(const struct drm_connector_state *conn_state) { struct drm_atomic_state *state; struct drm_crtc_state *crtc_state; @@ -358,11 +377,11 @@ static bool hdmi_is_limited_range(const struct drm_co= nnector *connector, /* * The Broadcast RGB property only applies to RGB format, and * i915 just assumes limited range for YCbCr output, so let's * just do the same. */ - if (conn_state->hdmi.output_format !=3D HDMI_COLORSPACE_RGB) + if (conn_state->hdmi.output_format !=3D DRM_OUTPUT_COLOR_FORMAT_RGB444) return true; =20 if (conn_state->hdmi.broadcast_rgb =3D=3D DRM_HDMI_BROADCAST_RGB_FULL) return false; =20 @@ -377,11 +396,12 @@ static bool hdmi_is_limited_range(const struct drm_co= nnector *connector, =20 static bool sink_supports_format_bpc(const struct drm_connector *connector, const struct drm_display_info *info, const struct drm_display_mode *mode, - unsigned int format, unsigned int bpc) + enum drm_output_color_format format, + unsigned int bpc) { struct drm_device *dev =3D connector->dev; u8 vic =3D drm_match_cea_mode(mode); =20 /* @@ -398,28 +418,28 @@ sink_supports_format_bpc(const struct drm_connector *= connector, drm_dbg_kms(dev, "VIC1 requires a bpc of 8, got %u\n", bpc); return false; } =20 if (!info->is_hdmi && - (format !=3D HDMI_COLORSPACE_RGB || bpc !=3D 8)) { + (format !=3D DRM_OUTPUT_COLOR_FORMAT_RGB444 || bpc !=3D 8)) { drm_dbg_kms(dev, "DVI Monitors require an RGB output at 8 bpc\n"); return false; } =20 if (!(connector->hdmi.supported_formats & BIT(format))) { drm_dbg_kms(dev, "%s format unsupported by the connector.\n", drm_hdmi_connector_get_output_format_name(format)); return false; } =20 - if (drm_mode_is_420_only(info, mode) && format !=3D HDMI_COLORSPACE_YUV42= 0) { + if (drm_mode_is_420_only(info, mode) && format !=3D DRM_OUTPUT_COLOR_FORM= AT_YCBCR420) { drm_dbg_kms(dev, "Mode can be only supported in YUV420 format.\n"); return false; } =20 switch (format) { - case HDMI_COLORSPACE_RGB: + case DRM_OUTPUT_COLOR_FORMAT_RGB444: drm_dbg_kms(dev, "RGB Format, checking the constraints.\n"); =20 /* * In some cases, like when the EDID readout fails, or * is not an HDMI compliant EDID for some reason, the @@ -443,11 +463,11 @@ sink_supports_format_bpc(const struct drm_connector *= connector, =20 drm_dbg_kms(dev, "RGB format supported in that configuration.\n"); =20 return true; =20 - case HDMI_COLORSPACE_YUV420: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR420: drm_dbg_kms(dev, "YUV420 format, checking the constraints.\n"); =20 if (!(info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR420))) { drm_dbg_kms(dev, "Sink doesn't support YUV420.\n"); return false; @@ -475,11 +495,11 @@ sink_supports_format_bpc(const struct drm_connector *= connector, =20 drm_dbg_kms(dev, "YUV420 format supported in that configuration.\n"); =20 return true; =20 - case HDMI_COLORSPACE_YUV422: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR422: drm_dbg_kms(dev, "YUV422 format, checking the constraints.\n"); =20 if (!(info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422))) { drm_dbg_kms(dev, "Sink doesn't support YUV422.\n"); return false; @@ -498,11 +518,11 @@ sink_supports_format_bpc(const struct drm_connector *= connector, =20 drm_dbg_kms(dev, "YUV422 format supported in that configuration.\n"); =20 return true; =20 - case HDMI_COLORSPACE_YUV444: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR444: drm_dbg_kms(dev, "YUV444 format, checking the constraints.\n"); =20 if (!(info->color_formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444))) { drm_dbg_kms(dev, "Sink doesn't support YUV444.\n"); return false; @@ -551,11 +571,11 @@ hdmi_clock_valid(const struct drm_connector *connecto= r, =20 static int hdmi_compute_clock(const struct drm_connector *connector, struct drm_connector_state *conn_state, const struct drm_display_mode *mode, - unsigned int bpc, enum hdmi_colorspace fmt) + unsigned int bpc, enum drm_output_color_format fmt) { enum drm_mode_status status; unsigned long long clock; =20 clock =3D drm_hdmi_compute_mode_clock(mode, bpc, fmt); @@ -573,11 +593,11 @@ hdmi_compute_clock(const struct drm_connector *connec= tor, =20 static bool hdmi_try_format_bpc(const struct drm_connector *connector, struct drm_connector_state *conn_state, const struct drm_display_mode *mode, - unsigned int bpc, enum hdmi_colorspace fmt) + unsigned int bpc, enum drm_output_color_format fmt) { const struct drm_display_info *info =3D &connector->display_info; struct drm_device *dev =3D connector->dev; int ret; =20 @@ -609,11 +629,11 @@ hdmi_try_format_bpc(const struct drm_connector *conne= ctor, =20 static int hdmi_compute_format_bpc(const struct drm_connector *connector, struct drm_connector_state *conn_state, const struct drm_display_mode *mode, - unsigned int max_bpc, enum hdmi_colorspace fmt) + unsigned int max_bpc, enum drm_output_color_format fmt) { struct drm_device *dev =3D connector->dev; unsigned int bpc; int ret; =20 @@ -650,16 +670,16 @@ hdmi_compute_config(const struct drm_connector *conne= ctor, conn_state->max_bpc, 8, connector->max_bpc); int ret; =20 ret =3D hdmi_compute_format_bpc(connector, conn_state, mode, max_bpc, - HDMI_COLORSPACE_RGB); + DRM_OUTPUT_COLOR_FORMAT_RGB444); if (ret) { if (connector->ycbcr_420_allowed) { ret =3D hdmi_compute_format_bpc(connector, conn_state, mode, max_bpc, - HDMI_COLORSPACE_YUV420); + DRM_OUTPUT_COLOR_FORMAT_YCBCR420); if (ret) drm_dbg_kms(connector->dev, "YUV420 output format doesn't work.\n"); } else { drm_dbg_kms(connector->dev, @@ -689,11 +709,13 @@ static int hdmi_generate_avi_infoframe(const struct d= rm_connector *connector, =20 ret =3D drm_hdmi_avi_infoframe_from_display_mode(frame, connector, mode); if (ret) return ret; =20 - frame->colorspace =3D conn_state->hdmi.output_format; + frame->colorspace =3D + output_color_format_to_hdmi_colorspace(connector, + conn_state->hdmi.output_format); =20 /* * FIXME: drm_hdmi_avi_infoframe_quant_range() doesn't handle * YUV formats at all at the moment, so if we ever support YUV * formats this needs to be revised. @@ -887,11 +909,11 @@ enum drm_mode_status drm_hdmi_connector_mode_valid(struct drm_connector *connector, const struct drm_display_mode *mode) { unsigned long long clock; =20 - clock =3D drm_hdmi_compute_mode_clock(mode, 8, HDMI_COLORSPACE_RGB); + clock =3D drm_hdmi_compute_mode_clock(mode, 8, DRM_OUTPUT_COLOR_FORMAT_RG= B444); if (!clock) return MODE_ERROR; =20 return hdmi_clock_valid(connector, mode, clock); } diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index f8b0333a0a3bf5bdf4036d2f7ca5565934e44b4c..6d894741994031d96b7393bfc7a= d629d2513464d 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -385,11 +385,11 @@ void drm_bridge_add(struct drm_bridge *bridge) =20 mutex_init(&bridge->hpd_mutex); =20 if (bridge->ops & DRM_BRIDGE_OP_HDMI) bridge->ycbcr_420_allowed =3D !!(bridge->supported_formats & - BIT(HDMI_COLORSPACE_YUV420)); + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR420)); =20 mutex_lock(&bridge_lock); list_add_tail(&bridge->list, &bridge_list); mutex_unlock(&bridge_lock); } diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connecto= r.c index e70699c59c436d28c2995decd209532eba3ea735..23dcc504ffe73c6aef6efa465a6= a401688ecb1c9 100644 --- a/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c @@ -589,14 +589,14 @@ int drmm_connector_hdmi_init(struct drm_device *dev, =20 if (!(connector_type =3D=3D DRM_MODE_CONNECTOR_HDMIA || connector_type =3D=3D DRM_MODE_CONNECTOR_HDMIB)) return -EINVAL; =20 - if (!supported_formats || !(supported_formats & BIT(HDMI_COLORSPACE_RGB))) + if (!supported_formats || !(supported_formats & BIT(DRM_OUTPUT_COLOR_FORM= AT_RGB444))) return -EINVAL; =20 - if (connector->ycbcr_420_allowed !=3D !!(supported_formats & BIT(HDMI_COL= ORSPACE_YUV420))) + if (connector->ycbcr_420_allowed !=3D !!(supported_formats & BIT(DRM_OUTP= UT_COLOR_FORMAT_YCBCR420))) return -EINVAL; =20 if (!(max_bpc =3D=3D 8 || max_bpc =3D=3D 10 || max_bpc =3D=3D 12)) return -EINVAL; =20 @@ -1429,25 +1429,25 @@ drm_hdmi_connector_get_broadcast_rgb_name(enum drm_= hdmi_broadcast_rgb broadcast_ return broadcast_rgb_names[broadcast_rgb].name; } EXPORT_SYMBOL(drm_hdmi_connector_get_broadcast_rgb_name); =20 static const char * const output_format_str[] =3D { - [HDMI_COLORSPACE_RGB] =3D "RGB", - [HDMI_COLORSPACE_YUV420] =3D "YUV 4:2:0", - [HDMI_COLORSPACE_YUV422] =3D "YUV 4:2:2", - [HDMI_COLORSPACE_YUV444] =3D "YUV 4:4:4", + [DRM_OUTPUT_COLOR_FORMAT_RGB444] =3D "RGB", + [DRM_OUTPUT_COLOR_FORMAT_YCBCR420] =3D "YUV 4:2:0", + [DRM_OUTPUT_COLOR_FORMAT_YCBCR422] =3D "YUV 4:2:2", + [DRM_OUTPUT_COLOR_FORMAT_YCBCR444] =3D "YUV 4:4:4", }; =20 /* * drm_hdmi_connector_get_output_format_name() - Return a string for HDMI = connector output format * @fmt: Output format to compute name of * * Returns: the name of the output format, or NULL if the type is not * valid. */ const char * -drm_hdmi_connector_get_output_format_name(enum hdmi_colorspace fmt) +drm_hdmi_connector_get_output_format_name(enum drm_output_color_format fmt) { if (fmt >=3D ARRAY_SIZE(output_format_str)) return NULL; =20 return output_format_str[fmt]; diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi_v2.c b/drivers/gpu/drm/media= tek/mtk_hdmi_v2.c index 279ca896b0a2a25e9dfd254be120e6ed0108b513..b5c738380dc2537d0a8deee73e9= 9c95dde1d2c37 100644 --- a/drivers/gpu/drm/mediatek/mtk_hdmi_v2.c +++ b/drivers/gpu/drm/mediatek/mtk_hdmi_v2.c @@ -745,27 +745,27 @@ static void mtk_hdmi_v2_change_video_resolution(struc= t mtk_hdmi *hdmi, /* Enable scrambling if tmds clock is 340MHz or more */ mtk_hdmi_v2_enable_scrambling(hdmi, hdmi->mode.clock >=3D 340 * KILO); =20 switch (conn_state->hdmi.output_format) { default: - case HDMI_COLORSPACE_RGB: - case HDMI_COLORSPACE_YUV444: + case DRM_OUTPUT_COLOR_FORMAT_RGB444: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR444: /* Disable YUV420 downsampling for RGB and YUV444 */ mtk_hdmi_yuv420_downsampling(hdmi, false); break; - case HDMI_COLORSPACE_YUV422: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR422: /* * YUV420 downsampling is special and needs a bit of setup * so we disable everything there before doing anything else. * * YUV422 downsampling instead just needs one bit to be set. */ mtk_hdmi_yuv420_downsampling(hdmi, false); regmap_set_bits(hdmi->regs, VID_DOWNSAMPLE_CONFIG, C444_C422_CONFIG_ENABLE); break; - case HDMI_COLORSPACE_YUV420: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR420: mtk_hdmi_yuv420_downsampling(hdmi, true); break; } } =20 diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c b/drivers/gpu/drm/sun4i= /sun4i_hdmi_enc.c index a50f260c73e41493528e545591aaad0e3f138be2..dd2a78defdb4b93f454d2af6167= a3d4e83e3d542 100644 --- a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c +++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c @@ -659,11 +659,11 @@ static int sun4i_hdmi_bind(struct device *dev, struct= device *master, "AW", "HDMI", &sun4i_hdmi_connector_funcs, &sun4i_hdmi_hdmi_connector_funcs, DRM_MODE_CONNECTOR_HDMIA, hdmi->ddc_i2c, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); if (ret) { dev_err(dev, "Couldn't initialise the HDMI connector\n"); goto err_cleanup_connector; diff --git a/drivers/gpu/drm/tests/drm_connector_test.c b/drivers/gpu/drm/t= ests/drm_connector_test.c index 86860ad0861c8eadbd7afd5d36500b7ab4d57433..beb1d50a6646419fed8d1e3b213= decefbf18e190 100644 --- a/drivers/gpu/drm/tests/drm_connector_test.c +++ b/drivers/gpu/drm/tests/drm_connector_test.c @@ -673,11 +673,11 @@ static void drm_test_connector_hdmi_init_valid(struct= kunit *test) "Vendor", "Product", &dummy_funcs, &dummy_hdmi_funcs, DRM_MODE_CONNECTOR_HDMIA, &priv->ddc, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_EXPECT_EQ(test, ret, 0); } =20 /* @@ -693,11 +693,11 @@ static void drm_test_connector_hdmi_init_null_ddc(str= uct kunit *test) "Vendor", "Product", &dummy_funcs, &dummy_hdmi_funcs, DRM_MODE_CONNECTOR_HDMIA, NULL, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_EXPECT_EQ(test, ret, 0); } =20 /* @@ -713,11 +713,11 @@ static void drm_test_connector_hdmi_init_null_vendor(= struct kunit *test) NULL, "Product", &dummy_funcs, &dummy_hdmi_funcs, DRM_MODE_CONNECTOR_HDMIA, &priv->ddc, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_EXPECT_LT(test, ret, 0); } =20 /* @@ -733,11 +733,11 @@ static void drm_test_connector_hdmi_init_null_product= (struct kunit *test) "Vendor", NULL, &dummy_funcs, &dummy_hdmi_funcs, DRM_MODE_CONNECTOR_HDMIA, &priv->ddc, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_EXPECT_LT(test, ret, 0); } =20 /* @@ -759,11 +759,11 @@ static void drm_test_connector_hdmi_init_product_vali= d(struct kunit *test) "Vendor", product_name, &dummy_funcs, &dummy_hdmi_funcs, DRM_MODE_CONNECTOR_HDMIA, &priv->ddc, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_EXPECT_EQ(test, ret, 0); KUNIT_EXPECT_MEMEQ(test, priv->connector.hdmi.product, expected_product, @@ -792,11 +792,11 @@ static void drm_test_connector_hdmi_init_product_leng= th_exact(struct kunit *test "Vendor", product_name, &dummy_funcs, &dummy_hdmi_funcs, DRM_MODE_CONNECTOR_HDMIA, &priv->ddc, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_EXPECT_EQ(test, ret, 0); KUNIT_EXPECT_MEMEQ(test, priv->connector.hdmi.product, expected_product, @@ -819,11 +819,11 @@ static void drm_test_connector_hdmi_init_product_leng= th_too_long(struct kunit *t "Vendor", product_name, &dummy_funcs, &dummy_hdmi_funcs, DRM_MODE_CONNECTOR_HDMIA, &priv->ddc, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_EXPECT_LT(test, ret, 0); } =20 /* @@ -845,11 +845,11 @@ static void drm_test_connector_hdmi_init_vendor_valid= (struct kunit *test) vendor_name, "Product", &dummy_funcs, &dummy_hdmi_funcs, DRM_MODE_CONNECTOR_HDMIA, &priv->ddc, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_EXPECT_EQ(test, ret, 0); KUNIT_EXPECT_MEMEQ(test, priv->connector.hdmi.vendor, expected_vendor, @@ -877,11 +877,11 @@ static void drm_test_connector_hdmi_init_vendor_lengt= h_exact(struct kunit *test) vendor_name, "Product", &dummy_funcs, &dummy_hdmi_funcs, DRM_MODE_CONNECTOR_HDMIA, &priv->ddc, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_EXPECT_EQ(test, ret, 0); KUNIT_EXPECT_MEMEQ(test, priv->connector.hdmi.vendor, expected_vendor, @@ -904,11 +904,11 @@ static void drm_test_connector_hdmi_init_vendor_lengt= h_too_long(struct kunit *te vendor_name, "Product", &dummy_funcs, &dummy_hdmi_funcs, DRM_MODE_CONNECTOR_HDMIA, &priv->ddc, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_EXPECT_LT(test, ret, 0); } =20 /* @@ -924,11 +924,11 @@ static void drm_test_connector_hdmi_init_bpc_invalid(= struct kunit *test) "Vendor", "Product", &dummy_funcs, &dummy_hdmi_funcs, DRM_MODE_CONNECTOR_HDMIA, &priv->ddc, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 9); KUNIT_EXPECT_LT(test, ret, 0); } =20 /* @@ -944,11 +944,11 @@ static void drm_test_connector_hdmi_init_bpc_null(str= uct kunit *test) "Vendor", "Product", &dummy_funcs, &dummy_hdmi_funcs, DRM_MODE_CONNECTOR_HDMIA, &priv->ddc, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 0); KUNIT_EXPECT_LT(test, ret, 0); } =20 /* @@ -969,11 +969,11 @@ static void drm_test_connector_hdmi_init_bpc_8(struct= kunit *test) "Vendor", "Product", &dummy_funcs, &dummy_hdmi_funcs, DRM_MODE_CONNECTOR_HDMIA, &priv->ddc, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_EXPECT_EQ(test, ret, 0); =20 prop =3D connector->max_bpc_property; KUNIT_ASSERT_NOT_NULL(test, prop); @@ -1010,11 +1010,11 @@ static void drm_test_connector_hdmi_init_bpc_10(str= uct kunit *test) "Vendor", "Product", &dummy_funcs, &dummy_hdmi_funcs, DRM_MODE_CONNECTOR_HDMIA, &priv->ddc, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 10); KUNIT_EXPECT_EQ(test, ret, 0); =20 prop =3D connector->max_bpc_property; KUNIT_ASSERT_NOT_NULL(test, prop); @@ -1051,11 +1051,11 @@ static void drm_test_connector_hdmi_init_bpc_12(str= uct kunit *test) "Vendor", "Product", &dummy_funcs, &dummy_hdmi_funcs, DRM_MODE_CONNECTOR_HDMIA, &priv->ddc, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 12); KUNIT_EXPECT_EQ(test, ret, 0); =20 prop =3D connector->max_bpc_property; KUNIT_ASSERT_NOT_NULL(test, prop); @@ -1107,11 +1107,11 @@ static void drm_test_connector_hdmi_init_formats_no= _rgb(struct kunit *test) "Vendor", "Product", &dummy_funcs, &dummy_hdmi_funcs, DRM_MODE_CONNECTOR_HDMIA, &priv->ddc, - BIT(HDMI_COLORSPACE_YUV422), + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422), 8); KUNIT_EXPECT_LT(test, ret, 0); } =20 struct drm_connector_hdmi_init_formats_yuv420_allowed_test { @@ -1120,21 +1120,21 @@ struct drm_connector_hdmi_init_formats_yuv420_allow= ed_test { int expected_result; }; =20 #define YUV420_ALLOWED_TEST(_formats, _allowed, _result) \ { \ - .supported_formats =3D BIT(HDMI_COLORSPACE_RGB) | (_formats), \ + .supported_formats =3D BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444) | (_formats),= \ .yuv420_allowed =3D _allowed, \ .expected_result =3D _result, \ } =20 static const struct drm_connector_hdmi_init_formats_yuv420_allowed_test drm_connector_hdmi_init_formats_yuv420_allowed_tests[] =3D { - YUV420_ALLOWED_TEST(BIT(HDMI_COLORSPACE_YUV420), true, 0), - YUV420_ALLOWED_TEST(BIT(HDMI_COLORSPACE_YUV420), false, -EINVAL), - YUV420_ALLOWED_TEST(BIT(HDMI_COLORSPACE_YUV422), true, -EINVAL), - YUV420_ALLOWED_TEST(BIT(HDMI_COLORSPACE_YUV422), false, 0), + YUV420_ALLOWED_TEST(BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR420), true, 0), + YUV420_ALLOWED_TEST(BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR420), false, -EINVAL= ), + YUV420_ALLOWED_TEST(BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422), true, -EINVAL), + YUV420_ALLOWED_TEST(BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422), false, 0), }; =20 static void drm_connector_hdmi_init_formats_yuv420_allowed_desc(const struct drm_conne= ctor_hdmi_init_formats_yuv420_allowed_test *t, char *desc) @@ -1186,11 +1186,11 @@ static void drm_test_connector_hdmi_init_type_valid= (struct kunit *test) "Vendor", "Product", &dummy_funcs, &dummy_hdmi_funcs, connector_type, &priv->ddc, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_EXPECT_EQ(test, ret, 0); } =20 static const unsigned int drm_connector_hdmi_init_type_valid_tests[] =3D { @@ -1221,11 +1221,11 @@ static void drm_test_connector_hdmi_init_type_inval= id(struct kunit *test) "Vendor", "Product", &dummy_funcs, &dummy_hdmi_funcs, connector_type, &priv->ddc, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_EXPECT_LT(test, ret, 0); } =20 static const unsigned int drm_connector_hdmi_init_type_invalid_tests[] =3D= { @@ -1430,14 +1430,14 @@ static void drm_test_drm_hdmi_connector_get_output_= format_name(struct kunit *tes } =20 static const struct drm_hdmi_connector_get_output_format_name_test drm_hdmi_connector_get_output_format_name_valid_tests[] =3D { - OUTPUT_FORMAT_TEST(HDMI_COLORSPACE_RGB, "RGB"), - OUTPUT_FORMAT_TEST(HDMI_COLORSPACE_YUV420, "YUV 4:2:0"), - OUTPUT_FORMAT_TEST(HDMI_COLORSPACE_YUV422, "YUV 4:2:2"), - OUTPUT_FORMAT_TEST(HDMI_COLORSPACE_YUV444, "YUV 4:4:4"), + OUTPUT_FORMAT_TEST(DRM_OUTPUT_COLOR_FORMAT_RGB444, "RGB"), + OUTPUT_FORMAT_TEST(DRM_OUTPUT_COLOR_FORMAT_YCBCR420, "YUV 4:2:0"), + OUTPUT_FORMAT_TEST(DRM_OUTPUT_COLOR_FORMAT_YCBCR422, "YUV 4:2:2"), + OUTPUT_FORMAT_TEST(DRM_OUTPUT_COLOR_FORMAT_YCBCR444, "YUV 4:4:4"), }; =20 static void drm_hdmi_connector_get_output_format_name_valid_desc(const struct drm_hdmi= _connector_get_output_format_name_test *t, char *desc) @@ -1498,11 +1498,11 @@ static void drm_test_drm_connector_attach_broadcast= _rgb_property_hdmi_connector( "Vendor", "Product", &dummy_funcs, &dummy_hdmi_funcs, DRM_MODE_CONNECTOR_HDMIA, &priv->ddc, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_EXPECT_EQ(test, ret, 0); =20 ret =3D drm_connector_attach_broadcast_rgb_property(connector); KUNIT_ASSERT_EQ(test, ret, 0); @@ -1538,11 +1538,11 @@ static void drm_test_drm_hdmi_compute_mode_clock_rg= b(struct kunit *test) mode =3D drm_kunit_display_mode_from_cea_vic(test, drm, 16); KUNIT_ASSERT_NOT_NULL(test, mode); =20 KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); =20 - rate =3D drm_hdmi_compute_mode_clock(mode, 8, HDMI_COLORSPACE_RGB); + rate =3D drm_hdmi_compute_mode_clock(mode, 8, DRM_OUTPUT_COLOR_FORMAT_RGB= 444); KUNIT_ASSERT_GT(test, rate, 0); KUNIT_EXPECT_EQ(test, mode->clock * 1000ULL, rate); } =20 /* @@ -1559,11 +1559,11 @@ static void drm_test_drm_hdmi_compute_mode_clock_rg= b_10bpc(struct kunit *test) mode =3D drm_kunit_display_mode_from_cea_vic(test, drm, 16); KUNIT_ASSERT_NOT_NULL(test, mode); =20 KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); =20 - rate =3D drm_hdmi_compute_mode_clock(mode, 10, HDMI_COLORSPACE_RGB); + rate =3D drm_hdmi_compute_mode_clock(mode, 10, DRM_OUTPUT_COLOR_FORMAT_RG= B444); KUNIT_ASSERT_GT(test, rate, 0); KUNIT_EXPECT_EQ(test, mode->clock * 1250, rate); } =20 /* @@ -1578,11 +1578,11 @@ static void drm_test_drm_hdmi_compute_mode_clock_rg= b_10bpc_vic_1(struct kunit *t struct drm_device *drm =3D &priv->drm; =20 mode =3D drm_kunit_display_mode_from_cea_vic(test, drm, 1); KUNIT_ASSERT_NOT_NULL(test, mode); =20 - rate =3D drm_hdmi_compute_mode_clock(mode, 10, HDMI_COLORSPACE_RGB); + rate =3D drm_hdmi_compute_mode_clock(mode, 10, DRM_OUTPUT_COLOR_FORMAT_RG= B444); KUNIT_EXPECT_EQ(test, rate, 0); } =20 /* * Test that for a given mode, with 12bpc and an RGB output the TMDS @@ -1598,11 +1598,11 @@ static void drm_test_drm_hdmi_compute_mode_clock_rg= b_12bpc(struct kunit *test) mode =3D drm_kunit_display_mode_from_cea_vic(test, drm, 16); KUNIT_ASSERT_NOT_NULL(test, mode); =20 KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); =20 - rate =3D drm_hdmi_compute_mode_clock(mode, 12, HDMI_COLORSPACE_RGB); + rate =3D drm_hdmi_compute_mode_clock(mode, 12, DRM_OUTPUT_COLOR_FORMAT_RG= B444); KUNIT_ASSERT_GT(test, rate, 0); KUNIT_EXPECT_EQ(test, mode->clock * 1500, rate); } =20 /* @@ -1617,11 +1617,11 @@ static void drm_test_drm_hdmi_compute_mode_clock_rg= b_12bpc_vic_1(struct kunit *t struct drm_device *drm =3D &priv->drm; =20 mode =3D drm_kunit_display_mode_from_cea_vic(test, drm, 1); KUNIT_ASSERT_NOT_NULL(test, mode); =20 - rate =3D drm_hdmi_compute_mode_clock(mode, 12, HDMI_COLORSPACE_RGB); + rate =3D drm_hdmi_compute_mode_clock(mode, 12, DRM_OUTPUT_COLOR_FORMAT_RG= B444); KUNIT_EXPECT_EQ(test, rate, 0); } =20 /* * Test that for a mode with the pixel repetition flag, the TMDS @@ -1637,11 +1637,11 @@ static void drm_test_drm_hdmi_compute_mode_clock_rg= b_double(struct kunit *test) mode =3D drm_kunit_display_mode_from_cea_vic(test, drm, 6); KUNIT_ASSERT_NOT_NULL(test, mode); =20 KUNIT_ASSERT_TRUE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); =20 - rate =3D drm_hdmi_compute_mode_clock(mode, 8, HDMI_COLORSPACE_RGB); + rate =3D drm_hdmi_compute_mode_clock(mode, 8, DRM_OUTPUT_COLOR_FORMAT_RGB= 444); KUNIT_ASSERT_GT(test, rate, 0); KUNIT_EXPECT_EQ(test, (mode->clock * 1000ULL) * 2, rate); } =20 /* @@ -1660,11 +1660,11 @@ static void drm_test_connector_hdmi_compute_mode_cl= ock_yuv420_valid(struct kunit mode =3D drm_kunit_display_mode_from_cea_vic(test, drm, vic); KUNIT_ASSERT_NOT_NULL(test, mode); =20 KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); =20 - rate =3D drm_hdmi_compute_mode_clock(mode, 8, HDMI_COLORSPACE_YUV420); + rate =3D drm_hdmi_compute_mode_clock(mode, 8, DRM_OUTPUT_COLOR_FORMAT_YCB= CR420); KUNIT_ASSERT_GT(test, rate, 0); KUNIT_EXPECT_EQ(test, (mode->clock * 1000ULL) / 2, rate); } =20 static const unsigned int drm_hdmi_compute_mode_clock_yuv420_vic_valid_tes= ts[] =3D { @@ -1697,11 +1697,11 @@ static void drm_test_connector_hdmi_compute_mode_cl= ock_yuv420_10_bpc(struct kuni mode =3D drm_kunit_display_mode_from_cea_vic(test, drm, vic); KUNIT_ASSERT_NOT_NULL(test, mode); =20 KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); =20 - rate =3D drm_hdmi_compute_mode_clock(mode, 10, HDMI_COLORSPACE_YUV420); + rate =3D drm_hdmi_compute_mode_clock(mode, 10, DRM_OUTPUT_COLOR_FORMAT_YC= BCR420); KUNIT_ASSERT_GT(test, rate, 0); =20 KUNIT_EXPECT_EQ(test, mode->clock * 625, rate); } =20 @@ -1722,11 +1722,11 @@ static void drm_test_connector_hdmi_compute_mode_cl= ock_yuv420_12_bpc(struct kuni mode =3D drm_kunit_display_mode_from_cea_vic(test, drm, vic); KUNIT_ASSERT_NOT_NULL(test, mode); =20 KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); =20 - rate =3D drm_hdmi_compute_mode_clock(mode, 12, HDMI_COLORSPACE_YUV420); + rate =3D drm_hdmi_compute_mode_clock(mode, 12, DRM_OUTPUT_COLOR_FORMAT_YC= BCR420); KUNIT_ASSERT_GT(test, rate, 0); =20 KUNIT_EXPECT_EQ(test, mode->clock * 750, rate); } =20 @@ -1745,11 +1745,11 @@ static void drm_test_connector_hdmi_compute_mode_cl= ock_yuv422_8_bpc(struct kunit mode =3D drm_kunit_display_mode_from_cea_vic(test, drm, 16); KUNIT_ASSERT_NOT_NULL(test, mode); =20 KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); =20 - rate =3D drm_hdmi_compute_mode_clock(mode, 8, HDMI_COLORSPACE_YUV422); + rate =3D drm_hdmi_compute_mode_clock(mode, 8, DRM_OUTPUT_COLOR_FORMAT_YCB= CR422); KUNIT_ASSERT_GT(test, rate, 0); KUNIT_EXPECT_EQ(test, mode->clock * 1000, rate); } =20 /* @@ -1767,11 +1767,11 @@ static void drm_test_connector_hdmi_compute_mode_cl= ock_yuv422_10_bpc(struct kuni mode =3D drm_kunit_display_mode_from_cea_vic(test, drm, 16); KUNIT_ASSERT_NOT_NULL(test, mode); =20 KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); =20 - rate =3D drm_hdmi_compute_mode_clock(mode, 10, HDMI_COLORSPACE_YUV422); + rate =3D drm_hdmi_compute_mode_clock(mode, 10, DRM_OUTPUT_COLOR_FORMAT_YC= BCR422); KUNIT_ASSERT_GT(test, rate, 0); KUNIT_EXPECT_EQ(test, mode->clock * 1000, rate); } =20 /* @@ -1789,11 +1789,11 @@ static void drm_test_connector_hdmi_compute_mode_cl= ock_yuv422_12_bpc(struct kuni mode =3D drm_kunit_display_mode_from_cea_vic(test, drm, 16); KUNIT_ASSERT_NOT_NULL(test, mode); =20 KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); =20 - rate =3D drm_hdmi_compute_mode_clock(mode, 12, HDMI_COLORSPACE_YUV422); + rate =3D drm_hdmi_compute_mode_clock(mode, 12, DRM_OUTPUT_COLOR_FORMAT_YC= BCR422); KUNIT_ASSERT_GT(test, rate, 0); KUNIT_EXPECT_EQ(test, mode->clock * 1000, rate); } =20 static struct kunit_case drm_hdmi_compute_mode_clock_tests[] =3D { diff --git a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c b/drivers/g= pu/drm/tests/drm_hdmi_state_helper_test.c index 4bdcea3c7435146aebb1716f38d7302ddb7c6296..a4357efaa983dbd10262b4f77fb= 0581d8d9690c8 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -237,11 +237,11 @@ __connector_hdmi_init(struct kunit *test, KUNIT_ASSERT_EQ(test, ret, 0); =20 enc->possible_crtcs =3D drm_crtc_mask(priv->crtc); =20 conn =3D &priv->connector; - conn->ycbcr_420_allowed =3D !!(formats & BIT(HDMI_COLORSPACE_YUV420)); + conn->ycbcr_420_allowed =3D !!(formats & BIT(DRM_OUTPUT_COLOR_FORMAT_YCBC= R420)); =20 ret =3D drmm_connector_hdmi_init(drm, conn, "Vendor", "Product", &dummy_connector_funcs, hdmi_funcs, @@ -298,11 +298,11 @@ static void drm_test_check_broadcast_rgb_crtc_mode_ch= anged(struct kunit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; @@ -373,11 +373,11 @@ static void drm_test_check_broadcast_rgb_crtc_mode_no= t_changed(struct kunit *tes struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; @@ -448,11 +448,11 @@ static void drm_test_check_broadcast_rgb_auto_cea_mod= e(struct kunit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; @@ -515,11 +515,11 @@ static void drm_test_check_broadcast_rgb_auto_cea_mod= e_vic_1(struct kunit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; conn =3D &priv->connector; @@ -582,11 +582,11 @@ static void drm_test_check_broadcast_rgb_full_cea_mod= e(struct kunit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; @@ -651,11 +651,11 @@ static void drm_test_check_broadcast_rgb_full_cea_mod= e_vic_1(struct kunit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; conn =3D &priv->connector; @@ -720,11 +720,11 @@ static void drm_test_check_broadcast_rgb_limited_cea_= mode(struct kunit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; @@ -789,11 +789,11 @@ static void drm_test_check_broadcast_rgb_limited_cea_= mode_vic_1(struct kunit *te struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; conn =3D &priv->connector; @@ -861,12 +861,12 @@ static void drm_test_check_broadcast_rgb_cea_mode_yuv= 420(struct kunit *test) int ret; =20 broadcast_rgb =3D *(enum drm_hdmi_broadcast_rgb *)test->param_value; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB) | - BIT(HDMI_COLORSPACE_YUV420), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR420), 8, &dummy_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_yuv_4k_yuv420_dc_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -916,11 +916,11 @@ static void drm_test_check_broadcast_rgb_cea_mode_yuv= 420(struct kunit *test) =20 conn_state =3D drm_atomic_get_new_connector_state(state, conn); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); =20 KUNIT_ASSERT_EQ(test, conn_state->hdmi.broadcast_rgb, broadcast_rgb); - KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_YUV= 420); + KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_format, DRM_OUTPUT_COLOR_FO= RMAT_YCBCR420); =20 KUNIT_EXPECT_TRUE(test, conn_state->hdmi.is_limited_range); =20 drm_modeset_drop_locks(&ctx); drm_modeset_acquire_fini(&ctx); @@ -961,11 +961,11 @@ static void drm_test_check_output_bpc_crtc_mode_chang= ed(struct kunit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 10, &dummy_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -1043,11 +1043,11 @@ static void drm_test_check_output_bpc_crtc_mode_not= _changed(struct kunit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 10, &dummy_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -1120,13 +1120,13 @@ static void drm_test_check_output_bpc_dvi(struct ku= nit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB) | - BIT(HDMI_COLORSPACE_YUV422) | - BIT(HDMI_COLORSPACE_YUV444), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444), 12, &dummy_connector_hdmi_funcs, test_edid_dvi_1080p); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -1155,11 +1155,11 @@ static void drm_test_check_output_bpc_dvi(struct ku= nit *test) =20 conn_state =3D conn->state; KUNIT_ASSERT_NOT_NULL(test, conn_state); =20 KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_bpc, 8); - KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB= ); + KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, DRM_OUTPUT_COLOR_FO= RMAT_RGB444); =20 drm_modeset_drop_locks(&ctx); drm_modeset_acquire_fini(&ctx); } =20 @@ -1177,11 +1177,11 @@ static void drm_test_check_tmds_char_rate_rgb_8bpc(= struct kunit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8, &dummy_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -1208,11 +1208,11 @@ static void drm_test_check_tmds_char_rate_rgb_8bpc(= struct kunit *test) =20 conn_state =3D conn->state; KUNIT_ASSERT_NOT_NULL(test, conn_state); =20 KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_bpc, 8); - KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB= ); + KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_format, DRM_OUTPUT_COLOR_FO= RMAT_RGB444); KUNIT_EXPECT_EQ(test, conn_state->hdmi.tmds_char_rate, preferred->clock *= 1000); =20 drm_modeset_drop_locks(&ctx); drm_modeset_acquire_fini(&ctx); } @@ -1232,11 +1232,11 @@ static void drm_test_check_tmds_char_rate_rgb_10bpc= (struct kunit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 10, &dummy_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -1263,11 +1263,11 @@ static void drm_test_check_tmds_char_rate_rgb_10bpc= (struct kunit *test) =20 conn_state =3D conn->state; KUNIT_ASSERT_NOT_NULL(test, conn_state); =20 KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_bpc, 10); - KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB= ); + KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_format, DRM_OUTPUT_COLOR_FO= RMAT_RGB444); KUNIT_EXPECT_EQ(test, conn_state->hdmi.tmds_char_rate, preferred->clock *= 1250); =20 drm_modeset_drop_locks(&ctx); drm_modeset_acquire_fini(&ctx); } @@ -1287,11 +1287,11 @@ static void drm_test_check_tmds_char_rate_rgb_12bpc= (struct kunit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 12, &dummy_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -1318,11 +1318,11 @@ static void drm_test_check_tmds_char_rate_rgb_12bpc= (struct kunit *test) =20 conn_state =3D conn->state; KUNIT_ASSERT_NOT_NULL(test, conn_state); =20 KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_bpc, 12); - KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB= ); + KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_format, DRM_OUTPUT_COLOR_FO= RMAT_RGB444); KUNIT_EXPECT_EQ(test, conn_state->hdmi.tmds_char_rate, preferred->clock *= 1500); =20 drm_modeset_drop_locks(&ctx); drm_modeset_acquire_fini(&ctx); } @@ -1346,11 +1346,11 @@ static void drm_test_check_hdmi_funcs_reject_rate(s= truct kunit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; @@ -1414,11 +1414,11 @@ static void drm_test_check_max_tmds_rate_bpc_fallba= ck_rgb(struct kunit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 12, &dummy_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -1431,14 +1431,14 @@ static void drm_test_check_max_tmds_rate_bpc_fallba= ck_rgb(struct kunit *test) =20 preferred =3D find_preferred_mode(conn); KUNIT_ASSERT_NOT_NULL(test, preferred); KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK); =20 - rate =3D drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_RGB); + rate =3D drm_hdmi_compute_mode_clock(preferred, 12, DRM_OUTPUT_COLOR_FORM= AT_RGB444); KUNIT_ASSERT_GT(test, rate, info->max_tmds_clock * 1000); =20 - rate =3D drm_hdmi_compute_mode_clock(preferred, 10, HDMI_COLORSPACE_RGB); + rate =3D drm_hdmi_compute_mode_clock(preferred, 10, DRM_OUTPUT_COLOR_FORM= AT_RGB444); KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000); =20 drm_modeset_acquire_init(&ctx, 0); =20 retry_conn_enable: @@ -1455,11 +1455,11 @@ static void drm_test_check_max_tmds_rate_bpc_fallba= ck_rgb(struct kunit *test) =20 conn_state =3D conn->state; KUNIT_ASSERT_NOT_NULL(test, conn_state); =20 KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_bpc, 10); - KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB= ); + KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, DRM_OUTPUT_COLOR_FO= RMAT_RGB444); KUNIT_EXPECT_EQ(test, conn_state->hdmi.tmds_char_rate, preferred->clock *= 1250); =20 drm_modeset_drop_locks(&ctx); drm_modeset_acquire_fini(&ctx); } @@ -1488,12 +1488,12 @@ static void drm_test_check_max_tmds_rate_bpc_fallba= ck_yuv420(struct kunit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB) | - BIT(HDMI_COLORSPACE_YUV420), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR420), 12, &dummy_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_yuv_4k_yuv420_dc_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -1507,14 +1507,14 @@ static void drm_test_check_max_tmds_rate_bpc_fallba= ck_yuv420(struct kunit *test) =20 yuv420_only_mode =3D drm_kunit_display_mode_from_cea_vic(test, drm, 95); KUNIT_ASSERT_NOT_NULL(test, yuv420_only_mode); KUNIT_ASSERT_TRUE(test, drm_mode_is_420_only(info, yuv420_only_mode)); =20 - rate =3D drm_hdmi_compute_mode_clock(yuv420_only_mode, 12, HDMI_COLORSPAC= E_YUV420); + rate =3D drm_hdmi_compute_mode_clock(yuv420_only_mode, 12, DRM_OUTPUT_COL= OR_FORMAT_YCBCR420); KUNIT_ASSERT_GT(test, rate, info->max_tmds_clock * 1000); =20 - rate =3D drm_hdmi_compute_mode_clock(yuv420_only_mode, 10, HDMI_COLORSPAC= E_YUV420); + rate =3D drm_hdmi_compute_mode_clock(yuv420_only_mode, 10, DRM_OUTPUT_COL= OR_FORMAT_YCBCR420); KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000); =20 drm_modeset_acquire_init(&ctx, 0); =20 retry_conn_enable: @@ -1529,11 +1529,11 @@ static void drm_test_check_max_tmds_rate_bpc_fallba= ck_yuv420(struct kunit *test) =20 conn_state =3D conn->state; KUNIT_ASSERT_NOT_NULL(test, conn_state); =20 KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_bpc, 10); - KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_YUV= 420); + KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, DRM_OUTPUT_COLOR_FO= RMAT_YCBCR420); KUNIT_EXPECT_EQ(test, conn_state->hdmi.tmds_char_rate, yuv420_only_mode->= clock * 625); =20 drm_modeset_drop_locks(&ctx); drm_modeset_acquire_fini(&ctx); } @@ -1563,13 +1563,13 @@ static void drm_test_check_max_tmds_rate_bpc_fallba= ck_ignore_yuv422(struct kunit struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB) | - BIT(HDMI_COLORSPACE_YUV422) | - BIT(HDMI_COLORSPACE_YUV444), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444), 12, &dummy_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -1582,17 +1582,17 @@ static void drm_test_check_max_tmds_rate_bpc_fallba= ck_ignore_yuv422(struct kunit =20 preferred =3D find_preferred_mode(conn); KUNIT_ASSERT_NOT_NULL(test, preferred); KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK); =20 - rate =3D drm_hdmi_compute_mode_clock(preferred, 10, HDMI_COLORSPACE_RGB); + rate =3D drm_hdmi_compute_mode_clock(preferred, 10, DRM_OUTPUT_COLOR_FORM= AT_RGB444); KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000); =20 - rate =3D drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_RGB); + rate =3D drm_hdmi_compute_mode_clock(preferred, 12, DRM_OUTPUT_COLOR_FORM= AT_RGB444); KUNIT_ASSERT_GT(test, rate, info->max_tmds_clock * 1000); =20 - rate =3D drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_YUV42= 2); + rate =3D drm_hdmi_compute_mode_clock(preferred, 12, DRM_OUTPUT_COLOR_FORM= AT_YCBCR422); KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000); =20 drm_modeset_acquire_init(&ctx, 0); =20 retry_conn_enable: @@ -1609,11 +1609,11 @@ static void drm_test_check_max_tmds_rate_bpc_fallba= ck_ignore_yuv422(struct kunit =20 conn_state =3D conn->state; KUNIT_ASSERT_NOT_NULL(test, conn_state); =20 KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_bpc, 10); - KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB= ); + KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, DRM_OUTPUT_COLOR_FO= RMAT_RGB444); =20 drm_modeset_drop_locks(&ctx); drm_modeset_acquire_fini(&ctx); } =20 @@ -1642,12 +1642,12 @@ static void drm_test_check_max_tmds_rate_bpc_fallba= ck_ignore_yuv420(struct kunit struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB) | - BIT(HDMI_COLORSPACE_YUV420), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR420), 12, &dummy_connector_hdmi_funcs, test_edid_hdmi_4k_rgb_yuv420_dc_max_340mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -1662,17 +1662,17 @@ static void drm_test_check_max_tmds_rate_bpc_fallba= ck_ignore_yuv420(struct kunit preferred =3D find_preferred_mode(conn); KUNIT_ASSERT_NOT_NULL(test, preferred); KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK); KUNIT_ASSERT_TRUE(test, drm_mode_is_420_also(info, preferred)); =20 - rate =3D drm_hdmi_compute_mode_clock(preferred, 8, HDMI_COLORSPACE_RGB); + rate =3D drm_hdmi_compute_mode_clock(preferred, 8, DRM_OUTPUT_COLOR_FORMA= T_RGB444); KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000); =20 - rate =3D drm_hdmi_compute_mode_clock(preferred, 10, HDMI_COLORSPACE_RGB); + rate =3D drm_hdmi_compute_mode_clock(preferred, 10, DRM_OUTPUT_COLOR_FORM= AT_RGB444); KUNIT_ASSERT_GT(test, rate, info->max_tmds_clock * 1000); =20 - rate =3D drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_YUV42= 0); + rate =3D drm_hdmi_compute_mode_clock(preferred, 12, DRM_OUTPUT_COLOR_FORM= AT_YCBCR420); KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000); =20 drm_modeset_acquire_init(&ctx, 0); =20 retry_conn_enable: @@ -1687,11 +1687,11 @@ static void drm_test_check_max_tmds_rate_bpc_fallba= ck_ignore_yuv420(struct kunit =20 conn_state =3D conn->state; KUNIT_ASSERT_NOT_NULL(test, conn_state); =20 KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_bpc, 8); - KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB= ); + KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, DRM_OUTPUT_COLOR_FO= RMAT_RGB444); =20 drm_modeset_drop_locks(&ctx); drm_modeset_acquire_fini(&ctx); } =20 @@ -1713,11 +1713,11 @@ static void drm_test_check_driver_unsupported_fallb= ack_yuv420(struct kunit *test struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 12, &dummy_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_yuv_4k_yuv420_dc_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -1748,11 +1748,11 @@ static void drm_test_check_driver_unsupported_fallb= ack_yuv420(struct kunit *test } KUNIT_EXPECT_EQ(test, ret, 0); =20 conn_state =3D conn->state; KUNIT_ASSERT_NOT_NULL(test, conn_state); - KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB= ); + KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, DRM_OUTPUT_COLOR_FO= RMAT_RGB444); =20 state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); =20 retry_crtc_state: @@ -1798,13 +1798,13 @@ static void drm_test_check_output_bpc_format_vic_1(= struct kunit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB) | - BIT(HDMI_COLORSPACE_YUV422) | - BIT(HDMI_COLORSPACE_YUV444), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444), 12, &dummy_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -1845,11 +1845,11 @@ static void drm_test_check_output_bpc_format_vic_1(= struct kunit *test) =20 conn_state =3D conn->state; KUNIT_ASSERT_NOT_NULL(test, conn_state); =20 KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_bpc, 8); - KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB= ); + KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, DRM_OUTPUT_COLOR_FO= RMAT_RGB444); =20 drm_modeset_drop_locks(&ctx); drm_modeset_acquire_fini(&ctx); } =20 @@ -1869,11 +1869,11 @@ static void drm_test_check_output_bpc_format_driver= _rgb_only(struct kunit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 12, &dummy_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -1894,14 +1894,14 @@ static void drm_test_check_output_bpc_format_driver= _rgb_only(struct kunit *test) * by the display, and YUV422 works for that display. * * But since the driver only supports RGB, we should fallback to * a lower bpc with RGB. */ - rate =3D drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_RGB); + rate =3D drm_hdmi_compute_mode_clock(preferred, 12, DRM_OUTPUT_COLOR_FORM= AT_RGB444); KUNIT_ASSERT_GT(test, rate, info->max_tmds_clock * 1000); =20 - rate =3D drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_YUV42= 2); + rate =3D drm_hdmi_compute_mode_clock(preferred, 12, DRM_OUTPUT_COLOR_FORM= AT_YCBCR422); KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000); =20 drm_modeset_acquire_init(&ctx, 0); =20 retry_conn_enable: @@ -1918,11 +1918,11 @@ static void drm_test_check_output_bpc_format_driver= _rgb_only(struct kunit *test) =20 conn_state =3D conn->state; KUNIT_ASSERT_NOT_NULL(test, conn_state); =20 KUNIT_EXPECT_LT(test, conn_state->hdmi.output_bpc, 12); - KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB= ); + KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, DRM_OUTPUT_COLOR_FO= RMAT_RGB444); =20 drm_modeset_drop_locks(&ctx); drm_modeset_acquire_fini(&ctx); } =20 @@ -1942,13 +1942,13 @@ static void drm_test_check_output_bpc_format_displa= y_rgb_only(struct kunit *test struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB) | - BIT(HDMI_COLORSPACE_YUV422) | - BIT(HDMI_COLORSPACE_YUV444), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444), 12, &dummy_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -1969,14 +1969,14 @@ static void drm_test_check_output_bpc_format_displa= y_rgb_only(struct kunit *test * by the display, and YUV422 works for that display. * * But since the display only supports RGB, we should fallback to * a lower bpc with RGB. */ - rate =3D drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_RGB); + rate =3D drm_hdmi_compute_mode_clock(preferred, 12, DRM_OUTPUT_COLOR_FORM= AT_RGB444); KUNIT_ASSERT_GT(test, rate, info->max_tmds_clock * 1000); =20 - rate =3D drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_YUV42= 2); + rate =3D drm_hdmi_compute_mode_clock(preferred, 12, DRM_OUTPUT_COLOR_FORM= AT_YCBCR422); KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000); =20 drm_modeset_acquire_init(&ctx, 0); =20 retry_conn_enable: @@ -1993,11 +1993,11 @@ static void drm_test_check_output_bpc_format_displa= y_rgb_only(struct kunit *test =20 conn_state =3D conn->state; KUNIT_ASSERT_NOT_NULL(test, conn_state); =20 KUNIT_EXPECT_LT(test, conn_state->hdmi.output_bpc, 12); - KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB= ); + KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, DRM_OUTPUT_COLOR_FO= RMAT_RGB444); =20 drm_modeset_drop_locks(&ctx); drm_modeset_acquire_fini(&ctx); } =20 @@ -2018,11 +2018,11 @@ static void drm_test_check_output_bpc_format_driver= _8bpc_only(struct kunit *test struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8, &dummy_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -2038,11 +2038,11 @@ static void drm_test_check_output_bpc_format_driver= _8bpc_only(struct kunit *test =20 /* * We're making sure that we have headroom on the TMDS character * clock to actually use 12bpc. */ - rate =3D drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_RGB); + rate =3D drm_hdmi_compute_mode_clock(preferred, 12, DRM_OUTPUT_COLOR_FORM= AT_RGB444); KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000); =20 drm_modeset_acquire_init(&ctx, 0); =20 retry_conn_enable: @@ -2059,11 +2059,11 @@ static void drm_test_check_output_bpc_format_driver= _8bpc_only(struct kunit *test =20 conn_state =3D conn->state; KUNIT_ASSERT_NOT_NULL(test, conn_state); =20 KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_bpc, 8); - KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB= ); + KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, DRM_OUTPUT_COLOR_FO= RMAT_RGB444); =20 drm_modeset_drop_locks(&ctx); drm_modeset_acquire_fini(&ctx); } =20 @@ -2084,13 +2084,13 @@ static void drm_test_check_output_bpc_format_displa= y_8bpc_only(struct kunit *tes struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB) | - BIT(HDMI_COLORSPACE_YUV422) | - BIT(HDMI_COLORSPACE_YUV444), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444), 12, &dummy_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_max_340mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -2106,11 +2106,11 @@ static void drm_test_check_output_bpc_format_displa= y_8bpc_only(struct kunit *tes =20 /* * We're making sure that we have headroom on the TMDS character * clock to actually use 12bpc. */ - rate =3D drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_RGB); + rate =3D drm_hdmi_compute_mode_clock(preferred, 12, DRM_OUTPUT_COLOR_FORM= AT_RGB444); KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000); =20 drm_modeset_acquire_init(&ctx, 0); =20 retry_conn_enable: @@ -2127,11 +2127,11 @@ static void drm_test_check_output_bpc_format_displa= y_8bpc_only(struct kunit *tes =20 conn_state =3D conn->state; KUNIT_ASSERT_NOT_NULL(test, conn_state); =20 KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_bpc, 8); - KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB= ); + KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, DRM_OUTPUT_COLOR_FO= RMAT_RGB444); =20 drm_modeset_drop_locks(&ctx); drm_modeset_acquire_fini(&ctx); } =20 @@ -2148,11 +2148,11 @@ static void drm_test_check_disable_connector(struct= kunit *test) struct drm_device *drm; struct drm_crtc *crtc; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm_modeset_acquire_init(&ctx, 0); =20 @@ -2253,11 +2253,11 @@ static void drm_test_check_broadcast_rgb_value(stru= ct kunit *test) struct drm_atomic_helper_connector_hdmi_priv *priv; struct drm_connector_state *conn_state; struct drm_connector *conn; =20 priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_ASSERT_NOT_NULL(test, priv); =20 conn =3D &priv->connector; conn_state =3D conn->state; @@ -2275,11 +2275,11 @@ static void drm_test_check_bpc_8_value(struct kunit= *test) struct drm_atomic_helper_connector_hdmi_priv *priv; struct drm_connector_state *conn_state; struct drm_connector *conn; =20 priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_ASSERT_NOT_NULL(test, priv); =20 conn =3D &priv->connector; conn_state =3D conn->state; @@ -2299,11 +2299,11 @@ static void drm_test_check_bpc_10_value(struct kuni= t *test) struct drm_atomic_helper_connector_hdmi_priv *priv; struct drm_connector_state *conn_state; struct drm_connector *conn; =20 priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 10); KUNIT_ASSERT_NOT_NULL(test, priv); =20 conn =3D &priv->connector; conn_state =3D conn->state; @@ -2323,11 +2323,11 @@ static void drm_test_check_bpc_12_value(struct kuni= t *test) struct drm_atomic_helper_connector_hdmi_priv *priv; struct drm_connector_state *conn_state; struct drm_connector *conn; =20 priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 12); KUNIT_ASSERT_NOT_NULL(test, priv); =20 conn =3D &priv->connector; conn_state =3D conn->state; @@ -2345,13 +2345,13 @@ static void drm_test_check_format_value(struct kuni= t *test) struct drm_atomic_helper_connector_hdmi_priv *priv; struct drm_connector_state *conn_state; struct drm_connector *conn; =20 priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB) | - BIT(HDMI_COLORSPACE_YUV422) | - BIT(HDMI_COLORSPACE_YUV444), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444), 8); KUNIT_ASSERT_NOT_NULL(test, priv); =20 conn =3D &priv->connector; conn_state =3D conn->state; @@ -2367,13 +2367,13 @@ static void drm_test_check_tmds_char_value(struct k= unit *test) struct drm_atomic_helper_connector_hdmi_priv *priv; struct drm_connector_state *conn_state; struct drm_connector *conn; =20 priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB) | - BIT(HDMI_COLORSPACE_YUV422) | - BIT(HDMI_COLORSPACE_YUV444), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444), 12); KUNIT_ASSERT_NOT_NULL(test, priv); =20 conn =3D &priv->connector; conn_state =3D conn->state; @@ -2405,11 +2405,11 @@ static void drm_test_check_mode_valid(struct kunit = *test) struct drm_atomic_helper_connector_hdmi_priv *priv; struct drm_connector *conn; struct drm_display_mode *preferred; =20 priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8); KUNIT_ASSERT_NOT_NULL(test, priv); =20 conn =3D &priv->connector; preferred =3D find_preferred_mode(conn); @@ -2429,11 +2429,11 @@ static void drm_test_check_mode_valid_reject_rate(s= truct kunit *test) { struct drm_atomic_helper_connector_hdmi_priv *priv; struct drm_display_mode *preferred; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8, &reject_100mhz_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -2461,11 +2461,11 @@ static void drm_test_check_mode_valid_reject(struct= kunit *test) struct drm_display_mode *preferred; unsigned char no_edid[] =3D {}; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8, &reject_connector_hdmi_funcs, no_edid); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -2491,11 +2491,11 @@ static void drm_test_check_mode_valid_reject_max_cl= ock(struct kunit *test) struct drm_atomic_helper_connector_hdmi_priv *priv; struct drm_connector *conn; struct drm_display_mode *preferred; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8, &dummy_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_max_100mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -2538,11 +2538,11 @@ static void drm_test_check_infoframes(struct kunit = *test) struct drm_crtc *crtc; int old_hdmi_update_failures; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8, &dummy_connector_hdmi_funcs, test_edid_hdmi_1080p_rgb_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -2641,11 +2641,11 @@ static void drm_test_check_reject_avi_infoframe(str= uct kunit *test) struct drm_crtc *crtc; int old_hdmi_update_failures; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8, &reject_avi_infoframe_hdmi_funcs, test_edid_hdmi_1080p_rgb_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -2745,11 +2745,11 @@ static void drm_test_check_reject_hdr_infoframe_bpc= _8(struct kunit *test) struct drm_crtc *crtc; int old_hdmi_update_failures; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8, &reject_hdr_infoframe_hdmi_funcs, test_edid_hdmi_1080p_rgb_max_200mhz_hdr); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -2859,11 +2859,11 @@ static void drm_test_check_reject_hdr_infoframe_bpc= _10(struct kunit *test) struct drm_property_blob *hdr_blob; bool replaced; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 10, &reject_hdr_infoframe_hdmi_funcs, test_edid_hdmi_1080p_rgb_max_200mhz_hdr); KUNIT_ASSERT_NOT_NULL(test, priv); =20 @@ -2994,11 +2994,11 @@ static void drm_test_check_reject_audio_infoframe(s= truct kunit *test) int old_hdmi_update_failures; struct hdmi_audio_infoframe cea; int ret; =20 priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, - BIT(HDMI_COLORSPACE_RGB), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444), 8, &reject_audio_infoframe_hdmi_funcs, test_edid_hdmi_1080p_rgb_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index 9ce90a694c3c2f2fcb8d9f1239753f3552b20195..6bd6404d23e2f44fbd0f9e7786e= 9b51bf298b1db 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -131,11 +131,11 @@ static bool vc4_hdmi_supports_scrambling(struct vc4_h= dmi *vc4_hdmi) return true; } =20 static bool vc4_hdmi_mode_needs_scrambling(const struct drm_display_mode *= mode, unsigned int bpc, - enum hdmi_colorspace fmt) + enum drm_output_color_format fmt) { unsigned long long clock =3D drm_hdmi_compute_mode_clock(mode, bpc, fmt); =20 return clock > HDMI_14_MAX_TMDS_CLK; } @@ -442,11 +442,11 @@ static int vc4_hdmi_connector_get_modes(struct drm_co= nnector *connector) if (!vc4->hvs->vc5_hdmi_enable_hdmi_20) { struct drm_device *drm =3D connector->dev; const struct drm_display_mode *mode; =20 list_for_each_entry(mode, &connector->probed_modes, head) { - if (vc4_hdmi_mode_needs_scrambling(mode, 8, HDMI_COLORSPACE_RGB)) { + if (vc4_hdmi_mode_needs_scrambling(mode, 8, DRM_OUTPUT_COLOR_FORMAT_RGB= 444)) { drm_warn_once(drm, "The core clock cannot reach frequencies high enoug= h to support 4k @ 60Hz."); drm_warn_once(drm, "Please change your config.txt file to add hdmi_ena= ble_4kp60."); } } } @@ -545,13 +545,13 @@ static int vc4_hdmi_connector_init(struct drm_device = *dev, "Broadcom", "Videocore", &vc4_hdmi_connector_funcs, &vc4_hdmi_hdmi_connector_funcs, DRM_MODE_CONNECTOR_HDMIA, vc4_hdmi->ddc, - BIT(HDMI_COLORSPACE_RGB) | - BIT(HDMI_COLORSPACE_YUV422) | - BIT(HDMI_COLORSPACE_YUV444), + BIT(DRM_OUTPUT_COLOR_FORMAT_RGB444) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR422) | + BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444), max_bpc); if (ret) return ret; =20 ret =3D drm_connector_hdmi_audio_init(connector, dev->dev, @@ -1212,17 +1212,17 @@ static void vc5_hdmi_csc_setup(struct vc4_hdmi *vc4= _hdmi, return; =20 spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); =20 switch (state->hdmi.output_format) { - case HDMI_COLORSPACE_YUV444: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR444: csc =3D vc5_hdmi_find_yuv_csc_coeffs(vc4_hdmi, state->colorspace, !!lim_= range); =20 vc5_hdmi_set_csc_coeffs_swap(vc4_hdmi, csc); break; =20 - case HDMI_COLORSPACE_YUV422: + case DRM_OUTPUT_COLOR_FORMAT_YCBCR422: csc =3D vc5_hdmi_find_yuv_csc_coeffs(vc4_hdmi, state->colorspace, !!lim_= range); =20 csc_ctl |=3D VC4_SET_FIELD(VC5_MT_CP_CSC_CTL_FILTER_MODE_444_TO_422_STAN= DARD, VC5_MT_CP_CSC_CTL_FILTER_MODE_444_TO_422) | VC5_MT_CP_CSC_CTL_USE_444_TO_422 | @@ -1235,11 +1235,11 @@ static void vc5_hdmi_csc_setup(struct vc4_hdmi *vc4= _hdmi, VC5_DVP_HT_VEC_INTERFACE_CFG_SEL_422); =20 vc5_hdmi_set_csc_coeffs(vc4_hdmi, csc); break; =20 - case HDMI_COLORSPACE_RGB: + case DRM_OUTPUT_COLOR_FORMAT_RGB444: if_xbar =3D 0x354021; =20 vc5_hdmi_set_csc_coeffs(vc4_hdmi, vc5_hdmi_csc_full_rgb_to_rgb[lim_range= ]); break; =20 @@ -1392,11 +1392,11 @@ static void vc5_hdmi_set_timings(struct vc4_hdmi *v= c4_hdmi, =20 /* * YCC422 is always 36-bit and not considered deep colour so * doesn't signal in GCP. */ - if (state->hdmi.output_format =3D=3D HDMI_COLORSPACE_YUV422) { + if (state->hdmi.output_format =3D=3D DRM_OUTPUT_COLOR_FORMAT_YCBCR422) { gcp =3D 0; } =20 reg =3D HDMI_READ(HDMI_DEEP_COLOR_CONFIG_1); reg &=3D ~(VC5_HDMI_DEEP_COLOR_CONFIG_1_INIT_PACK_PHASE_MASK | diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h index 8d069718df00d9afc13aadbb12648e2bb75a1721..29d461d4ee49fdee29edd6a102e= 70ded9067a64b 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.h +++ b/drivers/gpu/drm/vc4/vc4_hdmi.h @@ -208,11 +208,11 @@ struct vc4_hdmi { /** * @output_format: Copy of * @drm_connector_state.hdmi.output_format for use outside of * KMS hooks. Protected by @mutex. */ - enum hdmi_colorspace output_format; + enum drm_output_color_format output_format; =20 /** * @hdmi_jack: Represents the connection state of the HDMI plug, for * ALSA jack detection. */ diff --git a/include/drm/bridge/dw_hdmi_qp.h b/include/drm/bridge/dw_hdmi_q= p.h index 3af12f82da2c1bd81968360bab965cb2810e7f0b..6ea9c561cfef6d74f396666e156= 7b2ee5c0b68df 100644 --- a/include/drm/bridge/dw_hdmi_qp.h +++ b/include/drm/bridge/dw_hdmi_qp.h @@ -23,11 +23,11 @@ struct dw_hdmi_qp_plat_data { const struct dw_hdmi_qp_phy_ops *phy_ops; void *phy_data; int main_irq; int cec_irq; unsigned long ref_clk_rate; - /* Supported output formats: bitmask of @hdmi_colorspace */ + /* Supported output formats: bitmask of @drm_output_color_format */ unsigned int supported_formats; /* Maximum bits per color channel: 8, 10 or 12 */ unsigned int max_bpc; }; =20 diff --git a/include/drm/display/drm_hdmi_helper.h b/include/drm/display/dr= m_hdmi_helper.h index 09145c9ee9fc0cd839242f2373b305940e06e157..9c31ed90516b850555598eee351= b205bf4bb8a94 100644 --- a/include/drm/display/drm_hdmi_helper.h +++ b/include/drm/display/drm_hdmi_helper.h @@ -6,10 +6,11 @@ #include =20 struct drm_connector; struct drm_connector_state; struct drm_display_mode; +enum drm_output_color_format; =20 void drm_hdmi_avi_infoframe_colorimetry(struct hdmi_avi_infoframe *frame, const struct drm_connector_state *conn_state); =20 @@ -24,11 +25,11 @@ drm_hdmi_infoframe_set_hdr_metadata(struct hdmi_drm_inf= oframe *frame, void drm_hdmi_avi_infoframe_content_type(struct hdmi_avi_infoframe *frame, const struct drm_connector_state *conn_state); =20 unsigned long long drm_hdmi_compute_mode_clock(const struct drm_display_mode *mode, - unsigned int bpc, enum hdmi_colorspace fmt); + unsigned int bpc, enum drm_output_color_format fmt); =20 void drm_hdmi_acr_get_n_cts(unsigned long long tmds_char_rate, unsigned int sample_rate, unsigned int *out_n, diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h index 562f6da90facdacc98307c50177792e26f2dece6..4af91e252fbd6e586163eea39d1= dd6530434d9eb 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -400,12 +400,10 @@ enum drm_hdmi_broadcast_rgb { DRM_HDMI_BROADCAST_RGB_LIMITED, }; =20 const char * drm_hdmi_connector_get_broadcast_rgb_name(enum drm_hdmi_broadcast_rgb broa= dcast_rgb); -const char * -drm_hdmi_connector_get_output_format_name(enum hdmi_colorspace fmt); =20 /** * struct drm_monitor_range_info - Panel's Monitor range in EDID for * &drm_display_info * @@ -579,10 +577,13 @@ enum drm_output_color_format { DRM_OUTPUT_COLOR_FORMAT_YCBCR444, DRM_OUTPUT_COLOR_FORMAT_YCBCR422, DRM_OUTPUT_COLOR_FORMAT_YCBCR420, }; =20 +const char * +drm_hdmi_connector_get_output_format_name(enum drm_output_color_format fmt= ); + /** * enum drm_bus_flags - bus_flags info for &drm_display_info * * This enum defines signal polarities and clock edge information for sign= als on * a bus as bitmask flags. @@ -1010,11 +1011,11 @@ struct drm_connector_hdmi_state { unsigned int output_bpc; =20 /** * @output_format: Pixel format to output in. */ - enum hdmi_colorspace output_format; + enum drm_output_color_format output_format; =20 /** * @tmds_char_rate: TMDS Character Rate, in Hz. */ unsigned long long tmds_char_rate; --=20 2.53.0