Commit 3ced1c68 authored by Dmitry Baryshkov's avatar Dmitry Baryshkov
Browse files

drm/display: bridge_connector: handle ycbcr_420_allowed



Follow the interlace_allowed example and calculate drm_connector's
ycbcr_420_allowed flag as AND of all drm_bridge's ycbcr_420_allowed
flags in a chain. This is one of the gaps between several
bridge-specific connector implementations and drm_bridge_connector.

Reviewed-by: default avatarNeil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: default avatarMaxime Ripard <mripard@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20241019-bridge-yuv420-v1-1-d74efac9e4e6@linaro.org


Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
parent 91e21479
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -397,11 +397,11 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm,
	bridge_connector->encoder = encoder;

	/*
	 * TODO: Handle doublescan_allowed, stereo_allowed and
	 * ycbcr_420_allowed.
	 * TODO: Handle doublescan_allowed and stereo_allowed.
	 */
	connector = &bridge_connector->base;
	connector->interlace_allowed = true;
	connector->ycbcr_420_allowed = true;

	/*
	 * Initialise connector status handling. First locate the furthest
@@ -414,6 +414,8 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm,
	drm_for_each_bridge_in_chain(encoder, bridge) {
		if (!bridge->interlace_allowed)
			connector->interlace_allowed = false;
		if (!bridge->ycbcr_420_allowed)
			connector->ycbcr_420_allowed = false;

		if (bridge->ops & DRM_BRIDGE_OP_EDID)
			bridge_connector->bridge_edid = bridge;
+5 −0
Original line number Diff line number Diff line
@@ -802,6 +802,11 @@ struct drm_bridge {
	 * modes.
	 */
	bool interlace_allowed;
	/**
	 * @ycbcr_420_allowed: Indicate that the bridge can handle YCbCr 420
	 * output.
	 */
	bool ycbcr_420_allowed;
	/**
	 * @pre_enable_prev_first: The bridge requires that the prev
	 * bridge @pre_enable function is called before its @pre_enable,