From nobody Tue Apr 7 18:48:21 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 1D71D374E64; Thu, 5 Mar 2026 09:05:06 +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=1772701507; cv=none; b=hxfFLeULsGDs+8Ile7xZLbEvpRBhRQ537sY5wPQ1EE/lnJdisN/NAYpJzFTO1e6LP8Y5lpmBeW4/9VNFRCs2HPIQE02OTC4fvW7R1Vw84HppVcLdb7/utdH3w808VOPgFVpe2pTEXAnYTwuxyU0vaqBjogWjczhDluZXVBT7NMY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772701507; c=relaxed/simple; bh=pALwRFzWIQKTpcLw9NIyZWrgGnwzLJRpPmwmiwUCRco=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uef4KSdXHiWJHCEoUMh6JLcue5sklKB4ANRd2DXBj0acfRcdprEOAzMxbq7tgxS7uoztPBClJtUNxcE4f0ow0mzhWfbvtbVBhoAQM9gSKx93az2Trw3GUr452SnQmjzc2c69hx8feZTJ9DBlstJY+VAHvDZs/pqjbzZFNNTt3HY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kOccXVVp; 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="kOccXVVp" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 303BAC116C6; Thu, 5 Mar 2026 09:05:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772701506; bh=pALwRFzWIQKTpcLw9NIyZWrgGnwzLJRpPmwmiwUCRco=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=kOccXVVpzQJcoK4ZH1qTKM3+cnAQeelrqtoUyy1JqsNlr1R8sMgpP0+IUjaLut8LB STkK8FUuw4Joye8r5/jx8Xc87nLEzLulTTEVhwqKQ5Eae4xnZ4KUDH5DKkcFxPZwAx tWME1d/v7hz/JPYdfurBhneA/DX/y4xz2wGTB9GifjSTu9hyT16AE8cd1lstlyZr5h gwVga/FXeCeBhElapZ3OC8O5/ODOk+DPZbSr7z8ErgVEr3Q83GxhUd0FE9UgrR44c7 ukmVy0Kr30393ldmezE1vAZuvdnwer/hIO0bxScSIb/ethb3odHJuN/tkv7ebqyBsA OYlH+Pbu5glHw== From: Maxime Ripard Date: Thu, 05 Mar 2026 10:04:53 +0100 Subject: [PATCH v3 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: <20260305-drm-rework-color-formats-v3-1-f3935f6db579@kernel.org> References: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@kernel.org> In-Reply-To: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@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=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkr3c0uiehK3JxY4pAnEdi8pPXmK+NPb/WuJ7M5hL3m0 BN7f+5Mx1QWBmFOBlkxRZYnMmGnl7cvrnKwX/kDZg4rE8gQBi5OAZhI0j/GhvdXVjaW/XFoMX7H edi2M87TwFpK/uwdt8uRi/pMeV47s2zJn7hs/seMzfVs/o65SpdSGWv4VlkkuLtYvVsT6KLmknY +s3dFYZVrXV3S8QzZs8ZmGbJbXNudVq3IT8iturXAIf09AwA= 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 Reviewed-by: Dmitry Baryshkov --- 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:21 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 CD11A377005; Thu, 5 Mar 2026 09:05:09 +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=1772701509; cv=none; b=EOKFeyhjrYvhN1suhl/DITE0I+g0kOJfUFVxX40/M4rnfIOIkZE3xYY+Xnlj3MduCHr76zAEJDnNzK72l7HzBcc94WURLMlauuXceZiB4nUn3oR2v/qUR2VRQBfAmVMAw+rRk6BQH3dsVQIwwDBbeg8YtVZFOm75xEZ/cahI98o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772701509; c=relaxed/simple; bh=Ll7vX0iwBqlcAulvUYDlg1AF0/cayK4xOYfyyHaI++E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M/O93Kf/M/leb7ij0XhKVfUyGKc4dSUgIDu46r8cfr36VBDo6Mt282t5fcMYuITUvcMZnAcXPHMti6K3yYE/LOTrNCEIa/1s7gC6sFFkksVJzXBVwJOJJpYPLiOPi2jy8qf66eA/hooi2mz9QfBAmeUh6wxMfgsIhxBgIPGRQtU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=lnSgtYuJ; 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="lnSgtYuJ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7862C2BCB2; Thu, 5 Mar 2026 09:05:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772701509; bh=Ll7vX0iwBqlcAulvUYDlg1AF0/cayK4xOYfyyHaI++E=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=lnSgtYuJJtg3IXuD0bcarNYHq4jV7do9cEExTj4hXU9vBiIhA9W/sC/Q4HdBa1uOf T04hNZoGYRxY78DIdKdQiJGOSDawfx/wjgxdkS/8wCmZAZMy7DJASFntpQF8XD2wa0 IYEMcMb/tC12kSFfgemeMawDGVdmDPxtEK8evUfeGxuxwPEyXSCKMFinPMZndvp2tn bzxkySHACTB2dHZ7FXWdzbpKZdrHZy1zYrHUVJAg2U3Fy64Kn0WzDpUdPoBmTJ0kds NQsq0zUXGkbW2kKbZ8hR6TaAGHduG7Bzw9tKsWS3oOzirYbeW4z3geXLUh48l0tJ3o lPKBjZnIfNBuA== From: Maxime Ripard Date: Thu, 05 Mar 2026 10:04:54 +0100 Subject: [PATCH v3 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: <20260305-drm-rework-color-formats-v3-2-f3935f6db579@kernel.org> References: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@kernel.org> In-Reply-To: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@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=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkr3c1fP0m4lROx8rSsPncYk7J1h8qT9fEsr9bN/FH5R ftwn0Bix1QWBmFOBlkxRZYnMmGnl7cvrnKwX/kDZg4rE8gQBi5OAZiIeRFjrdT06klTYu/1WTt0 sc7U0VPnXL7DgMdA4uhaUWllzynuFYGKT5m2Mx70bT+4UO2RRpsiY32xtHaZmG+J/eb58+aYhvJ XrZJ2Pah1vPRVv/er22dW3y/hfSexRJP3tWOS8i8Vva1HzAA= 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 Reviewed-by: Dmitry Baryshkov --- 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:21 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 09172377578; Thu, 5 Mar 2026 09:05:12 +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=1772701513; cv=none; b=f/CmY9oYY2P7EmN+P1UoNMgpjQy15Px1VtMadELVF/o463L04dhnPbGNRomkKSd05VxvPpXAQO2L8rh5bUQzjrLXrXGUNR9iks86ZCQy+Yj/Gp+VBqAxFBFwI+c0coY/kb1+fZlv4LeYgZ3KYrHapa0s8aB68EKkYN7PUG4qaYU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772701513; c=relaxed/simple; bh=whHPoq+vF7W1Ov0nFP1p1BLZRLXz5nTvlyVtCZGm2ds=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CxWsMOAmD1PQJwF/2nADBiP4iKGO5wZBwd5TAFRy95IEsJwPPuCx8Lhid68QDmuMkJOAShRXHE2yzNyJDxb7VdckmIs4hU4LCn2ktyUn21C2hKGplRaAAVRKObnbNibKaT/sZNEhXJI6kuAAGKHmAhWxbuk1I5I+Uw8p/WIrGwQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bvGiHwq0; 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="bvGiHwq0" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D1102C116C6; Thu, 5 Mar 2026 09:05:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772701512; bh=whHPoq+vF7W1Ov0nFP1p1BLZRLXz5nTvlyVtCZGm2ds=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=bvGiHwq0lGnwj7HJ65PcQXkGm+3TNJR0OfOIJoN+HFB9As8LihDX+ciMNE8GA3g76 Sk0EJN8tPPn4Sc2e/E84Y/T1Z0w5bhU8/CUP03rTVBHMs5zt9K884WyNRjU4g8QXKt 4NFgfMfdsZZrhnYJCRfA7+T0hX7LhO45cIvfcld8JBgCSAcHdjHGYQZZ/r7/OwCX/c w1y03KvuXcFA2Qzs60MftFo8N6UCnk4jTvPvHrcu0JfiNDmFqBz4dnintuX90elwYu ZWf+zn4doYx7A0sMVCc1Q6WHEAQcqzH1it2MNNOjTmyr3rzzqPoMEb1ILYlFv5peH4 c1rXL/PPr62ag== From: Maxime Ripard Date: Thu, 05 Mar 2026 10:04:55 +0100 Subject: [PATCH v3 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: <20260305-drm-rework-color-formats-v3-3-f3935f6db579@kernel.org> References: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@kernel.org> In-Reply-To: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@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=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkr3c0jNtf9k99+5lud4C8v+fZT09QnsXGl6wR/P7Nno fnFMJYvHVNZGIQ5GWTFFFmeyISdXt6+uMrBfuUPmDmsTCBDGLg4BWAioW2MDev3Zea9/rpi6v0F G8rXBl8v5ly62Vd2YUun76kljCrX2GJ/niiZZ7vhD9chhy0bfO+lNTJWs53d4ONaeW+N5rSu3IJ 3x48zh15jnMrhq6sypWpr9ixpn/7ceOfKOwphCx6Y+Rcu3L0GAA== 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 Reviewed-by: Dmitry Baryshkov --- 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:21 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 03499377ED4; Thu, 5 Mar 2026 09:05:15 +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=1772701516; cv=none; b=qo4r1Fyq8PfYExwHEJnGuLTfc0i8hOP0WW6TKKQUnn7Rl3YUK6SOru3+WpHDlF12/LfhdbMlX7L7QdvTjTviC/KSxVJ7CV+vrrdEuiLamyO1qJb9NEsBLiqG0y7PQBoHXOuNlc8j75uvb4zYhisIYXEhnHKeGBtXjrePPF/q6YU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772701516; c=relaxed/simple; bh=Bi7dzqSb0xTzyJ/T4zIX0511vvg8pddfBkr4pnB64SM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RRPOBH+R8EBmlMgbVAen6QFr50VBSIvpoPw2W/0VHOIKO35iogl04gRYJ+lu8/cs0qaNKUbXUbWQUDB8BvyCtLnffqew2UmNlWk23Cudy6xQaqJgdxC2ZQfAsEfUDFdDmjV8Ab+voIA7cq6r2ZDe7ckZ1KvreRxegbVjN4LwsOI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=EVEox1Eq; 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="EVEox1Eq" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 07046C2BCAF; Thu, 5 Mar 2026 09:05:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772701515; bh=Bi7dzqSb0xTzyJ/T4zIX0511vvg8pddfBkr4pnB64SM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=EVEox1EqmbtV1utZkz+RzKWiDUb0h5Kk7iM2hm4bclF75JIknKHAsH4acyxtxuRL0 YHCLfUkaNxaIPzkT3n1yVt5XuD8zF/m9eCeEywShk2B1/R4LEP+OUsaDcJe2kaLfrp NSwjDOm4rl8MSp+Gq0uXAM3jrREitRTJwqgCOw2bnPD9d9qb0vjM6oCLtbEJCok7vG 7TWOeEzD8WZ/eqYPuAFLVRzHmXShRjbOQqxD1pKcAIGtABxD9trgOVyzSH73mt/AN9 A7N00vmML9JAfiD+KJAjsGH8EfA1eJFsyjwgPONIRgkQ+GNm4s8eFLex8xUh3f0oSk d5LsaHNq/Y29w== From: Maxime Ripard Date: Thu, 05 Mar 2026 10:04:56 +0100 Subject: [PATCH v3 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: <20260305-drm-rework-color-formats-v3-4-f3935f6db579@kernel.org> References: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@kernel.org> In-Reply-To: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@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=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkr3S0uRef/nNDU9unHkR9tiZXPNnlP8c/b7jFRglW+f KFh52/xjqksDMKcDLJiiixPZMJOL29fXOVgv/IHzBxWJpAhDFycAjARFjXG+ngv458W1Y4Pl5p8 PPN5Sao9X3d3SM8Cxmof8S/tRxn6hfuT8p91+5bd33nh7adaZT9BxoaTziHRl5cyVr41fHV0frV bFZ/A7DJB4bf/P98XMYj+PSX/oUW079sFiobGRblJtbUFIgA= 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 Tested-by: Nicolas Frattaroli --- 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:21 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 E518037754B; Thu, 5 Mar 2026 09:05:18 +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=1772701519; cv=none; b=oEtHh7xCZXkLhILS2yc7arJ/Sf6EMsvo4h7XMQ/Vfyu89EZl/MmpiDiQZ4VzH7kRZ5oipDv992fh+l8iovpg7ElCpRi3TcXOY+FddZrHs6h8zjfR5hDwYToe/0oXKzKqN5LTER9Jh1kDSObXrJYVgAJfxt6Vg/Znr1F7jsSkS/Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772701519; c=relaxed/simple; bh=mcyTpts1idXA1vu80zdOnmLrCaVShS7ucVh8Fhvdnfw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M2X1pGKqqQCEhBHRGfI0xtCW+eFLsRTQnecfsJQdf4TzLSiE+0ZDmCMQhbef3bqHyBHI5F/8NA44ewd8bkaH7U1bVYHOF+nKOtzlxxerIAr/wD1IVi8YOmbooqKUHLXzkvkpNVhnW7CKrRgeoLsJ6DCgQuY6BYFPGhWSOj2Y2vk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oMKJeaeC; 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="oMKJeaeC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 15846C2BCB1; Thu, 5 Mar 2026 09:05:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772701518; bh=mcyTpts1idXA1vu80zdOnmLrCaVShS7ucVh8Fhvdnfw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=oMKJeaeCBNfRSdTHQV65iZf0OC/XxltWnoMkR2I/g2jRt1CwyyHDYsJ4eRNrLPjA8 kZwO6TAGDLFowkw/Uy/xvn+nGqCHPF3kCurbI8GvWlylcA3SrkZGUx0DVq3ue03h/F J6XktzjscgI8DDzceFU9vYeFvmPPiIrhYFz/MIjy5u5bJXw/ZG3c0WevvH+V9IYtoR fbZoALGEFWz43ZLoten1jMDnDnMWUg1/Mzcjo6sSbobqtSRiBZwkFnF43ZoSoPRCZS JuwHU65OnEqnlQDMjolUKKgpruPNgtq43n3HYtpFl97WwKaOwBZ0XWEFXtvua9bcCD 8o2HEWrJlNP7A== From: Maxime Ripard Date: Thu, 05 Mar 2026 10:04:57 +0100 Subject: [PATCH v3 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: <20260305-drm-rework-color-formats-v3-5-f3935f6db579@kernel.org> References: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@kernel.org> In-Reply-To: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@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=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkr3S0437UdS2Mtvn9gY8uDGysWLP3a8XMut9llEav1f peOGc660TGVhUGYk0FWTJHliUzY6eXti6sc7Ff+gJnDygQyhIGLUwAmsjKJsT5waUTbd99rX6Wn l/z+fXba93y+85n7Dt8VzvVzzFkrqvVl+pZ5s25HB2R57r3QKHDzSARjrfzpCdtX+x794ajTlvj 9qZPSJoN9B+2k5aVri7l3Lnq+dr+rq4jbBu7osic7smbnqeTfBQA= 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 Reviewed-by: Dmitry Baryshkov --- 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:21 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 BC90937754B; Thu, 5 Mar 2026 09:05: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=1772701521; cv=none; b=IVyOLFqWx6WWtcFmtkwrh9yNHnnR5QWbPc8LEKhM8wOkya+W5juSq/NrgiztlbZMzzITyD02lFT7eb3OQuLyN6ZpSGxANdd8VOVWdz1QlYtdw9iXQg6kQeVXseQXVSxWacZxCDWHl2Akma5ALLQKNkWnhrse1+5+uGqpeaGIwFA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772701521; c=relaxed/simple; bh=sIOpPbGND5afLcivkJfIxu5waFc041nLNjD3trLHArs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=X8H7Y56XWeD6RgmpTcY1HTUvoWxJ8vEaBWRhqLhOwxupTZwHmimmKn0V87RmvFFR8tuGr31rVgR8t/2ilKUMmlQVgVFCx8ufC+S+n7I8oHkmR/TOkEdSbSvH6QH/y2y+elvKyOsvHGBlxmPoXvEoGgY+r4sh+DYfUmKZU9sZdLs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SdiZzGCk; 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="SdiZzGCk" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CEED7C116C6; Thu, 5 Mar 2026 09:05:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772701521; bh=sIOpPbGND5afLcivkJfIxu5waFc041nLNjD3trLHArs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=SdiZzGCk0jG//olHlzTWO/kOiEJpJ7o6c9g50CKSWxebcaVcxhBh1aHCsCaaXrxn1 lFbskQe6oMlYkyH2Xpg2r9gDsUBIYg5elnYFsSMaOpIKpuSNs9utcQN/T6D9sacupI lfsM9qTWlEk5B1hs8US0ZLUoy3yut6wckc0dO2Y76SZFyJ8fnvrKnAnTDIaSZX3ZO5 9HaXROAQXiG5bKyWhDSjMsuNUv3WPyYiaNvGYMuR3YhyxS+Mxb7GPdvDFt7FswoJyL tYKvWcfFQVcb7YIbX74rPx1qMzyWlPWxCQ0EdY8bYEbD3outgsKh4UtYf877bSe3zD hyccnJEyKmOng== From: Maxime Ripard Date: Thu, 05 Mar 2026 10:04:58 +0100 Subject: [PATCH v3 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: <20260305-drm-rework-color-formats-v3-6-f3935f6db579@kernel.org> References: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@kernel.org> In-Reply-To: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@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=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkr3S1vBT4IWX79y+djb19r7181f/WX3b0NyikBqbnKZ dc/mk3S6pjKwiDMySArpsjyRCbs9PL2xVUO9it/wMxhZQIZwsDFKQATsb7F2HDKIOitk5KmySlh s1OXZZckvdmyJ9ey6WHr7Mm2xjZ7t504xXK88vTbpevzIiflV+zQjGJsOKlrxCD8JU5N5+4i7Rs 5q7tW129bLXygy/Pj+a+ly5pkjT/+3Kn3e4LneSPbNxkP91pLAAA= 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 Reviewed-by: Dmitry Baryshkov --- 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:21 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 35B7737649C; Thu, 5 Mar 2026 09:05: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=1772701524; cv=none; b=WCtEs6g95gKflGcZ0vEtwyTSxD8xZa5hoCBN2kL+usMasRiqtqGy8ut2N/8/DYZ3T9iI3pNliJAGRjkGN4EFxbpmrRVVnjjtC+RQYGh6+2VlmrLvWCTCUqn1cRRUe9AFj4ppA3wMCReS7P0mF3x+05t++PMLlfqs9f356qSbDaI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772701524; c=relaxed/simple; bh=Uw9orBa+IcWl61fHU9gR/gF8n8W1ZP87ZlyWedYU6o0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Cn7iz1a2ZMZ91cdnQxOpLKhz0S7xG+1RBE4EPDRsghFU3fd7YskF9wBftHebkyay9LFQGO2PCjxBnnsbPmo/aOOoZTVlpkwFxnUn+XzYGLt8FA6AzXeQDBazbhV2amIflLq12Iw7O4llc1damY++SAJH20MgxHxoW0cHLVQhRXU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=W9n4BNeA; 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="W9n4BNeA" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8B135C116C6; Thu, 5 Mar 2026 09:05:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772701524; bh=Uw9orBa+IcWl61fHU9gR/gF8n8W1ZP87ZlyWedYU6o0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=W9n4BNeAR+a9xYl1ZZxbIMAGKMHoLvuxPzck6um0J6B+AXU8/FyuPEV/BbD3mPk/n O3bY9g4aqH2VgPx/EptPTBq66yMQV+zbIwBXjOjFOJel2Hj+CGvJO28k1Yo5jjPVUZ 55i1ilXL9Bh3B8YvpQCybvBpvykTNze6meX1EHSSr/lc1p2dZ8io3vfZiulih2ciK0 0uoLY7tOhD51wr/I/6KcePj5xR9QLDBjrzh4Mob+aRU+eTIAAcKkMxd6JDmCmfrh4F LsXoSWaQiED+0vli/1vhOcsrIOKeseaIvyf+yLUwYgjn8Zra34LHklr2vFlPR3ALmI VUPLb2cj06zRA== From: Maxime Ripard Date: Thu, 05 Mar 2026 10:04:59 +0100 Subject: [PATCH v3 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: <20260305-drm-rework-color-formats-v3-7-f3935f6db579@kernel.org> References: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@kernel.org> In-Reply-To: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@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=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkr3S1Lua4cNO/oqj1zN319rrD59z6jo7UnDMrl4hyU1 bYLHMrpmMrCIMzJICumyPJEJuz08vbFVQ72K3/AzGFlAhnCwMUpABM5XM9Yn7r0fMTxJ3+0Xu8Q nrR+NduCpTXGXXx9Eyudb2bM3uZdxy6z7UcXx0+HPz6SB7kM90+6yNjQf2v9cjldtjQf+/K4Elm 2N99TG7ayWPR7qd4J4rvGI+7IVba5yGHv/7k+TCrLY5vcjwMA 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:21 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 4D614378829; Thu, 5 Mar 2026 09:05: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=1772701527; cv=none; b=lObxiQCI2R39biPu8skAK24+MR8AUlYdoIHSkIWNHbr/Ejw0TDPUpDXxTnw1pXSNI5LtcgNmIRgCWWtD91Nu6YXI+PipV4xTkwuxc4KXa6WV5/mx+Z5oucUNe4FReA3J3FN+nfMq5ZcK0hsC5oQUpAAeYnS1UGUldlLOKiTrIxE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772701527; c=relaxed/simple; bh=8B8JtzDFuZLy9KjteSKdgn1Z1TYnFMm7twCZx63a4Uw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fzDAryiar3guYCLkx5xyluh74oPQAZK7nTSrjpQXqw8MXNB6AhEyKJQFGvQ0RtFax3mskXMdC27iZL15R/jcJkpDmUyUjsVjPAHKcrkhzCeu+d49bV1YGM6lipSeXsFZMnRMNQ3Ex65GUOJG/7ebHLRRCpiEdFYfas0DZ5IJVho= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=n3Q1hDNF; 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="n3Q1hDNF" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 59E9BC19423; Thu, 5 Mar 2026 09:05:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772701526; bh=8B8JtzDFuZLy9KjteSKdgn1Z1TYnFMm7twCZx63a4Uw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=n3Q1hDNFP4pOAUAdjmu14HR7I1BlYaqkeJhRZpn4BDztr1Kyctwn7aSNusQWjawXC YNd6OBz+mVW40oB8C73mWXXXfxWuraCz/9w+YlokDxEgKZpmepa4M1qwEHB8QN6IK/ S0ijgL8jaDQlmFWJN/nxhCzrp7ETSwmL1XgXnF5So9xq6QkveUEXkf9atXCozQIead pBlPeWD1ib2XQsHj9sCUDSKw8bsJ91JQGV49uEzVREezS3kgEclSkp8NNyrXSk89LW jqMPXnigjB5GAJZeVJ0LvwmMKbj3HEGX3wCYb0k1XF8S/J8QkfV+JRa5fKnruweEwz QAKzhap3hN7Xg== From: Maxime Ripard Date: Thu, 05 Mar 2026 10:05:00 +0100 Subject: [PATCH v3 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: <20260305-drm-rework-color-formats-v3-8-f3935f6db579@kernel.org> References: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@kernel.org> In-Reply-To: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@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=8B8JtzDFuZLy9KjteSKdgn1Z1TYnFMm7twCZx63a4Uw=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkr3S2Dzmjde7p2R/Y6Ia2e0OwXNimLUxb8O/e+JW1Nw irW3evaOqayMAhzMsiKKbI8kQk7vbx9cZWD/cofMHNYmUCGMHBxCsBEwi0YG1oDA6qWHjN8vzzp v+IMx71xU7PfvtDeqXyPWfJqxcaMnkn3o6N/PTRN6BCXNNy+IszhCmPDns699lYfLy9atf3W7Xk BV87rFzY7f0zrZ9F+ueBVZsqJ9z4uu5QTN/eI/k+LCUyZnBcFAA== 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 Reviewed-by: Dmitry Baryshkov --- 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 e7bef9150f6a8eaf0338a4cb6fab516e295c70f7..45b37885d719dcf291383499a69= d7e27c36513b2 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:21 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 0CB0137649E; Thu, 5 Mar 2026 09:05:29 +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=1772701530; cv=none; b=gco8Au0zKl/3jiycUCqJftQd2FW/u4CPCAUJiwLSoKXkJmS5eYVpvuHHFz0llE32yNXjnGB9KHd95zFD4skIYAz8/Tfiklnp04egRLHXEy3GLqthJcQ70tHaQruqlY6FtX3LBmUGvYZwjkaUbCwJffB0lSTN+gPq7WrfJqfbxdU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772701530; c=relaxed/simple; bh=pmuV9XT5xz4TIGCX33nAahI5S0bV94XYGEmoM0J00kE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XuVkZKpDTiQJSYV1moI3AIncGT5L6X83EwZ4M5+4or0kVpNhLA9zYe2JMdq/u4kK81PmUEvIZbsqXzXRaP5azc0hn/sckUW43gt9+5WgRSFp4P4pmTBM1g/0C/tOLyNcfpyQMN1pkQz9Wfe6N93EM+2W8buHAoXStGsOFwzgMEs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jC4+HHcu; 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="jC4+HHcu" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 24164C116C6; Thu, 5 Mar 2026 09:05:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772701529; bh=pmuV9XT5xz4TIGCX33nAahI5S0bV94XYGEmoM0J00kE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=jC4+HHcuntcj30yBeEVQDbJX3a3dAd9y5IWsKthessjg7RHnQEqjw2M+og+ij1/sn WQOlvUJ9PjW9OnbFtkpWT9E63UNHfKjuBeZsDjXNTCG2T2ckGQ4ooEygXFaVqXs+ki dV5yrJefX/M4rtvoXA2z7M1PBehVHns8m/CtIOFNvRLqW8iVS87+iCu4WqJEPcIqk/ ysB6L9Z3Z7suwqesUI9jHaF/Ur1xtYJQI+TDgkee+ff+bDQxO6T/kraorvO1K72hOD qI5qBSaR8kVKofSm068dRkk/Zz8clPJpTwoZeif8mo1f05AubwAmgVZ1Hn2cT48myl EoW+kqiNGFsgw== From: Maxime Ripard Date: Thu, 05 Mar 2026 10:05:01 +0100 Subject: [PATCH v3 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: <20260305-drm-rework-color-formats-v3-9-f3935f6db579@kernel.org> References: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@kernel.org> In-Reply-To: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@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=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkr3a2kPVZY9ibPfcBY5r9ATHlhts9q4Tcsjg8v7LvIv PWsWMjZjqksDMKcDLJiiixPZMJOL29fXOVgv/IHzBxWJpAhDFycAjARnomMdTa9L/ySirxdT05R vew7ZX3ETJb8pDM+Hx7vuP37afasXW4fJld+/D6Z46H9Saa0RKuwJsb6gom3uPkcJfrOP72eG2c w6Xj2pWv+kZUGjpNiOjrXH74sWfvFZKtt/A/lJwLL1Gv/FD0HAA== 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 Reviewed-by: Dmitry Baryshkov --- 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:21 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 85741376BD0; Thu, 5 Mar 2026 09:05: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=1772701532; cv=none; b=ggPnfiE3rGDMo6aHrL30Po7P6XBXlXtEF6EjvZizivmcfhtDMtxTaxduVofBeGVTQfzoz4SLZlhnuExOO1/YUtpnoi5yn+wligtHgZAEwWLRXc0U5wdvKpCZgxXE4mnATgjuUnkTTw8TsPI83/oLuGZkJF332l/F+AUEAFwyxSM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772701532; c=relaxed/simple; bh=UOPw4lyjLgO8th4KVe5p6838LUE8j5nBPpQHE2tj2aA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QXaMWRMeviboeAxKlxHzjWV5uKTv2wbdG6X6HdbYc4lnnCqy/bBMRPd9V25wIDjZ/D0ZRvUD4AeJnGFkN4IWv5cjC1OGvX0Dv02E4m/bmsjEdWCqZtT+jSGoW9zlRuM7CgVgKVOKpVTOfCrSLT/XX5Xyuod0kb5oFho9mZLJynU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oxXcjh1E; 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="oxXcjh1E" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D6091C19423; Thu, 5 Mar 2026 09:05:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772701532; bh=UOPw4lyjLgO8th4KVe5p6838LUE8j5nBPpQHE2tj2aA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=oxXcjh1E7AHB4pzmQyzC0aCcZFUVaswymWC0qjjAkz8/kiUX6dX4yhfE2oND2mRh4 UIBoXEdyU3zSU8whjodAYgBYr69ZyqnYhvojtJEIHoODsIETL4W3mOkERpxKL/DVMy ZjDcLGh/82UXeVNiCslaFmdrh/FQhXg0mTkmPWNcFWzRqmbxS/NLiX9qtqBM4Ac5Xu uUOyR0Jtnbf/WBqQScrWIAiTX6vOo+Ux6pyCwerpzwLpJC6PzwnOZQyBeG+7h1gJIR 6wAS8SoUS97I93A+bVr7Xh//H98I41LMI7ofm0FoMAODJVhZzofwfr5eHIjci7pJIp mNiu7duxt0ztg== From: Maxime Ripard Date: Thu, 05 Mar 2026 10:05:02 +0100 Subject: [PATCH v3 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: <20260305-drm-rework-color-formats-v3-10-f3935f6db579@kernel.org> References: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@kernel.org> In-Reply-To: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@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=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkr3a0clsl8SFsevO5gyuvw6LnWr+4vsFD7Grd07evYo Ehu7qSqjqksDMKcDLJiiixPZMJOL29fXOVgv/IHzBxWJpAhDFycAjCRA08ZGz6+OOuSln8572bn csZLC2fsjhe01Vppy9squbK4gl/c1Secc1mmU6LBo1L+BLXmzf1/GWuFDrN/kqr/sXfL59fH7sy 1nZH6p2X7yttiN3J6f57sSGfq37y+bmXAs11HDxYl9eQ7aN0FAA== 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:21 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 979363793A8; Thu, 5 Mar 2026 09:05: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=1772701535; cv=none; b=M83RMQTiRSrFFzMlXC0cw6AMqNoTqCMabsrKFzSyAG9vHguhIsn5l19o7VWlm+rEQditdPZGaYTery3XHdkIRu9bnXlKjtqN2nudjX+s0ce+hsSwTjbXm9gXw5mVKoJV2cvtSBFUr0Ck/BFLxOOT0NLqZGB9agv5cUx6/Y0QM4U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772701535; c=relaxed/simple; bh=skFI5P2haIGjdD0+W8BO9ttWB17k7eh3BIV8frGuT1I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Lb7KpNgUfhFJfeoPd9HLl1Nh+GX6TEzkr1SXt5ZWllebo5jhDc9kP5M2mY01qAFPMzcMZ+jviUutFEvZsRZUsE8mRrLXx62Df5mxQr/GqqocVIuw460lEAUDg7plcr0H8QKa0yVmQezkqYOKAeejhwy1eJ5jifSotGQoeTmKgMs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bF4sJ2R3; 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="bF4sJ2R3" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A6DE4C116C6; Thu, 5 Mar 2026 09:05:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772701535; bh=skFI5P2haIGjdD0+W8BO9ttWB17k7eh3BIV8frGuT1I=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=bF4sJ2R3g6drItQMyUx0FiiZuCIqTLETK2ukzmc476ghhRR4QChpE1FU1IjZ5FmYH gkKFIcmUS3np8smnw6+Wmu/YID4pOEyveFVhCbATnvZc2EjJVu2V1vpwwCmwOoklVn IzHvhYq64l7d4pL5fC9oGHzuC9sD4Y1WeOvXRTtjaDtJeuShiA12Nq6jGg/DQ0Gf5E DsVzAFCKqcffkeNgUwiSVuMMKeTxRabbw0EaNgfpGU8zcqfYx+ew5V9ocrxi/Yx9c5 x0oTq0/mEE1DAK/ZllEb8aJVRSh2m7yNtQugPF0kEKIUzrWGybxt3WyPA+KH7OAC/P 4e2XexvXEoTrw== From: Maxime Ripard Date: Thu, 05 Mar 2026 10:05:03 +0100 Subject: [PATCH v3 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: <20260305-drm-rework-color-formats-v3-11-f3935f6db579@kernel.org> References: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@kernel.org> In-Reply-To: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@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=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkr3a35ckLMraXmTGBSrvYOvOW/o3y6TX77h69zD++/b qH3ToqnYyoLgzAng6yYIssTmbDTy9sXVznYr/wBM4eVCWQIAxenAEzksCtjQ5uc1jqjvQlXbu/6 HO/JJuNuy3TA/POilA0Ots8WsJWmLRX29L++9MyfNUulvKxk/9uLM9aHGN7a/vayY9tExiVpxW6 6v399z0hUya69eDVV8Fmi8lXFFerPLyuKG+9czGTbZvFo51sA 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 Acked-by: Chun-Kuang Hu --- 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:21 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 59CB93793A5; Thu, 5 Mar 2026 09:05:38 +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=1772701538; cv=none; b=uzEcxAYos6b/SwqOOm05yfGL6sTtaw4V8uuT2WQOD4cysh1yPg4jYEWdCVH8KRlVAOyIAvpkWcX/mNcsQB90DVj9WPGrb7B7weJ//XNvvFKpqNclPT99SQBcDe+tYVCS1hHPb1n0yFgTvfyJcelA46zvjSTML3GkzWd9ZzS9FAA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772701538; c=relaxed/simple; bh=uP3ezNFnJxO2oGz8kzraRalxMbsjayeIpXlAa0HLzJU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fzYEBYN9VTAN7K2QOZK7S868hPwew1xwPZ/PY2x63e7jiT/j2q/cWguBvDJsiBywQAP3HQRBwFS/5apK1y93rSWqYh+JioKAh6LsdYYTY1n6dAHCqsQASb5ojU4PcHPeee9D98hAy6GZr/cDhbu7JbzJ5pSpsxDNVT+BH5mqe+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=Mi+CmIBz; 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="Mi+CmIBz" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6838DC2BC9E; Thu, 5 Mar 2026 09:05:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772701537; bh=uP3ezNFnJxO2oGz8kzraRalxMbsjayeIpXlAa0HLzJU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Mi+CmIBzbKeQdabEIDe4sqxkKLNPn7IbpoCDNPNi+xxlv89Zv4SZwkQqXjC1ZRjVi W/4+W4CdxEcQiK9zsdr7n3u8Q+kObc0cTt47zrbkOi4GPhXNkc5j7Ni4Sq9t20h1Eb 1QHn5Jns8P++/SvucsbzXAGInb6R5G4UNKf6izIJByaD1CBFHK8F3VxWm3zjh9Gn8U jh3eLS3jGPZ7eQ0JBQtUFJEZMFzRqYGCkjfntmUEMylhUhZwTVBzMBdHQJNxQkSmy+ mkgK3g78mzilKqZGDz0zBqlT5yY/EUWKZ+TPPyVSspwJ6MAKL4e+QHx+jleqLRZ2B3 Psq3n5XBiwskQ== From: Maxime Ripard Date: Thu, 05 Mar 2026 10:05:04 +0100 Subject: [PATCH v3 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: <20260305-drm-rework-color-formats-v3-12-f3935f6db579@kernel.org> References: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@kernel.org> In-Reply-To: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@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=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkr3a1P2TEnX7XTmTdDSe2K0W07LyvZW1fFQlsr3J5km Kw7q7+yYyoLgzAng6yYIssTmbDTy9sXVznYr/wBM4eVCWQIAxenAEzkkThjvY/UOpf+3uy9efsv RofOPqZfM79V+ll//nGDmB3HZv2LLTILTihYazGFRSPV2SPpwrntjA0TmwUUdzFafM2czcX0ni/ SZoKmyPXqeXyRZVlbqjR/PLM0r6uep8aXnBMsf5ml2an4MQA= 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:21 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 CF3C93793A8; Thu, 5 Mar 2026 09:05:40 +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=1772701540; cv=none; b=XW2PvwKinHoi+mkhEnEucsQzc7ylqZaWIOUWAt0Na9y9cyaFVPYqlzcDfop3tfn4CJRz3OLMesWNvBONteJ+obfaKPELKq5L1VY8BZeoTMWFXOuB/YVK1j6bHt7ZQgTqAAbegiKj6XqNfWdR4TeW1HV/0Tg3ycNGWOukN/jDrOQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772701540; c=relaxed/simple; bh=YVQvpGLZ5wA3mAnHs4fX4YhU+wAN3umweSoHZOXTpbw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p5K/vjIVtXm0ZDyuSybQ4yHtMkbOy3KcPRDotr2PscMfBjFLRlxXIIoBqYp2EkwxH1IVfwY9AknsYHJSN2bX0axCN98j4sV/VEMzH6Q8XO0GdY4pTehYXYaOSlT9KysMc/NrHcPRTPghb7K4r0sCGRS4GyG7EedSpkTrX59yG8E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DqJjjIiU; 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="DqJjjIiU" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2B351C116C6; Thu, 5 Mar 2026 09:05:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772701540; bh=YVQvpGLZ5wA3mAnHs4fX4YhU+wAN3umweSoHZOXTpbw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=DqJjjIiUo7T8edAXBOy6y0f/LpuRACzvTfloTKVQvZ/hiW25Tp6oa+klH4oASgy91 o7Jld+9r4aPNEGBwcW2D+ctohbwbnJEma8GQrAQGspXp6cWgBeYpY2PCt0W2l3SEiL 9qUeXThFkRcZF35TPeqfSSi+2kr+Jx1jeJZFvNvgOubTITJYCQhFcz3x8recvCBsL9 EGWX/674Y9Yg73VV7weFCbgpJOonW0v2IQvCmstHSbq5xEM7FQQdLRwdejXC4Lktnt cOmE2v1d4Hr+gjDRsuCfCKMI+y2JI6t0bI0NL7QbjfWf8bE7Pk9TI9Eb4RXZQCdk+l gbPB5cxRjEaTg== From: Maxime Ripard Date: Thu, 05 Mar 2026 10:05:05 +0100 Subject: [PATCH v3 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: <20260305-drm-rework-color-formats-v3-13-f3935f6db579@kernel.org> References: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@kernel.org> In-Reply-To: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@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=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkr3W12NxfszUkUeOctufRV1teZQrZlhVXHimtM0qbHP Pnh2bChYyoLgzAng6yYIssTmbDTy9sXVznYr/wBM4eVCWQIAxenAExEcBljrWRd4qTFa1K3rWO0 CFqkP/XC7Ql2y+7E91/S6DjNbmKen+qxpKU50PP1ZdWUGXfXy7e0MDYcni6qlGbAv+eTZcrcham nYrKjCg06nsd+lbgTXFqk/n6Lc2RE0/+T6ypWPbtR+vJflx4A 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:21 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 3787D375F97; Thu, 5 Mar 2026 09:05:43 +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=1772701544; cv=none; b=TgPrTYUxi0/xb3aHji81R2t2ioa2JXDlgEL5Kqz6/Olupa7Jt3eF6Agv18/84G/ANHEdaXA5rpfh2LxfPBu2XpcqIr8UHaz/mg/76gZ3Gz/9uytKqNCZBGSjIU4qw2P9JoSOtSs83YjCPqg92L9ACAUgsVb7FxaWSCfFTtS/nBk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772701544; c=relaxed/simple; bh=u6Qfk7+xLQ5MNEXJtA2jfrqeuV8PI440AHCyDk5ba1s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lsKxkjHPk+bWtNLUHsCBWg2emEzmskrR7MH4xzaMQj7cgjQ62MlOCLwcX2Bu2aOMM7JXJ5cbj2j30PLHxzXTCIMCAr3L9pVYh2t4z2TbhCgZTRotZr6rtwS14wcn9izQfWuWJL+k8RllYWIHHJ/Mrs0h2XSK09s05LHAnzTsKOM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=lpWlJq9q; 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="lpWlJq9q" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7CBFC116C6; Thu, 5 Mar 2026 09:05:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772701543; bh=u6Qfk7+xLQ5MNEXJtA2jfrqeuV8PI440AHCyDk5ba1s=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=lpWlJq9qp2/RYoaXQBiCq1A2h6apyApi1VUqEHLnSdQgYAXOxG7rA8BaorKGHSQbi 3GIs6HmXzJS52dO/wpOPIBgyshYTzdLgWjtM1Bl99ZaKS64Y6lh3QzDPCMP+kOuou0 d2P1S0n6MRQBzD8cutPg06yHHD6AFEy+DRGCDcMTCN/6FgXGzC2aZGhwYbCiiXBTgX Pemd/xtTNkaSL+TWp1GJjmzvdugoOInmmejcen/aOePeT/c/6Hoo3+tmllXqtDct8H ajiFr4WgHXZLaeuRpSFHycUIIn4zB1wuV64X8Gqed5TXRiaeQfzvuwvf9pp5LtuSCq CduuimgPy7rOQ== From: Maxime Ripard Date: Thu, 05 Mar 2026 10:05:06 +0100 Subject: [PATCH v3 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: <20260305-drm-rework-color-formats-v3-14-f3935f6db579@kernel.org> References: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@kernel.org> In-Reply-To: <20260305-drm-rework-color-formats-v3-0-f3935f6db579@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=82635; i=mripard@kernel.org; h=from:subject:message-id; bh=u6Qfk7+xLQ5MNEXJtA2jfrqeuV8PI440AHCyDk5ba1s=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDJkr3W0uqHFZbnKbK2+4ZZXMXN7k14EPHhfJps0sqyiZ0 /rxlrJix1QWBmFOBlkxRZYnMmGnl7cvrnKwX/kDZg4rE8gQBi5OAZhIdiRjw88L++Nzd13i3sSz uJRvy5NfT0vCY6Ri+RsnaAlNWO39M3LmJtugV/VKsjfNjxzz0Ob+zNjQ4OQk9bZoy50b8YY/dhZ 8OLVD0Y3BjcvHQshuc+jUiTv5H2eJP+U2PBL9YWWpTMZ0o3AA 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 | 16 +- 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_bridge.h | 5 +- include/drm/drm_connector.h | 9 +- 17 files changed, 213 insertions(+), 187 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..47dc53c4a738ffef8b21ccdd646= 05bc43137d827 100644 --- a/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c @@ -550,11 +550,11 @@ EXPORT_SYMBOL(drmm_connector_init); * @product: HDMI Controller Product name * @funcs: callbacks for this connector * @hdmi_funcs: HDMI-related callbacks for this connector * @connector_type: user visible type of the connector * @ddc: optional pointer to the associated ddc adapter - * @supported_formats: Bitmask of @hdmi_colorspace listing supported outpu= t formats + * @supported_formats: Bitmask of @drm_output_color_format listing support= ed output formats * @max_bpc: Maximum bits per char the HDMI connector supports * * Initialises a preallocated HDMI connector. Connectors can be * subclassed as part of driver connector objects. * @@ -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_bridge.h b/include/drm/drm_bridge.h index 4f19f7064ee31eea5e54c8732266588b57af8692..cbb07537b2688de8a26d1cf60d2= 7d719d02c2f2d 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -1186,12 +1186,13 @@ struct drm_bridge { * generation. This is required if @DRM_BRIDGE_OP_HDMI is set. */ const char *product; =20 /** - * @supported_formats: Bitmask of @hdmi_colorspace listing supported - * output formats. This is only relevant if @DRM_BRIDGE_OP_HDMI is set. + * @supported_formats: Bitmask of @drm_output_color_format listing + * supported output formats. This is only relevant if + * @DRM_BRIDGE_OP_HDMI is set. */ unsigned int supported_formats; =20 /** * @max_bpc: Maximum bits per char the HDMI bridge supports. Allowed diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h index 562f6da90facdacc98307c50177792e26f2dece6..af8b92d2d5b7a4431b57f214cb5= 4f0a3f8c4ba56 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; @@ -1898,11 +1899,11 @@ struct drm_connector_hdmi { * @product: HDMI Controller Product Name */ unsigned char product[DRM_CONNECTOR_HDMI_PRODUCT_LEN] __nonstring; =20 /** - * @supported_formats: Bitmask of @hdmi_colorspace + * @supported_formats: Bitmask of @drm_output_color_format * supported by the controller. */ unsigned long supported_formats; =20 /** --=20 2.53.0