aboutsummaryrefslogtreecommitdiffstats
path: root/include/drm
diff options
context:
space:
mode:
authorBoris Brezillon <boris.brezillon@collabora.com>2020-01-07 19:58:04 +0100
committerBoris Brezillon <boris.brezillon@collabora.com>2020-01-08 00:33:55 +0100
commit3dfbf2d3d05eccb0d4ffb4f30467519e601a5db6 (patch)
treedfebd5f661dc7360ffd01b7df058eba855080997 /include/drm
parentRevert "drm/bridge: Fix a NULL pointer dereference in drm_atomic_bridge_chain_check()" (diff)
downloadlinux-dev-3dfbf2d3d05eccb0d4ffb4f30467519e601a5db6.tar.xz
linux-dev-3dfbf2d3d05eccb0d4ffb4f30467519e601a5db6.zip
Revert "drm/bridge: Add the necessary bits to support bus format negotiation"
This reverts commit e351e4d5eaec ("drm/bridge: Add the necessary bits to support bus format negotiation"). Commit 6ed7e9625fa6 ("drm/bridge: Add a drm_bridge_state object") introduced a circular dependency between drm.ko and drm_kms_helper.ko which uncovered a misdesign in how the whole thing was implemented. Let's revert all patches depending on the bridge_state infrastructure for now. Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Acked-by: Neil Armstrong <narmstrong@baylibre.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200107185807.606999-3-boris.brezillon@collabora.com
Diffstat (limited to 'include/drm')
-rw-r--r--include/drm/drm_bridge.h124
1 files changed, 0 insertions, 124 deletions
diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
index 46e15526b087..ae0595c70132 100644
--- a/include/drm/drm_bridge.h
+++ b/include/drm/drm_bridge.h
@@ -36,38 +36,6 @@ struct drm_bridge_timings;
struct drm_panel;
/**
- * struct drm_bus_cfg - bus configuration
- *
- * This structure stores the configuration of a physical bus between two
- * components in an output pipeline, usually between two bridges, an encoder
- * and a bridge, or a bridge and a connector.
- *
- * The bus configuration is stored in &drm_bridge_state separately for the
- * input and output buses, as seen from the point of view of each bridge. The
- * bus configuration of a bridge output is usually identical to the
- * configuration of the next bridge's input, but may differ if the signals are
- * modified between the two bridges, for instance by an inverter on the board.
- * The input and output configurations of a bridge may differ if the bridge
- * modifies the signals internally, for instance by performing format
- * conversion, or modifying signals polarities.
- */
-struct drm_bus_cfg {
- /**
- * @format: format used on this bus (one of the MEDIA_BUS_FMT_* format)
- *
- * This field should not be directly modified by drivers
- * (&drm_atomic_bridge_chain_select_bus_fmts() takes care of the bus
- * format negotiation).
- */
- u32 format;
-
- /**
- * @flags: DRM_BUS_* flags used on this bus
- */
- u32 flags;
-};
-
-/**
* struct drm_bridge_state - Atomic bridge state object
* @base: inherit from &drm_private_state
* @bridge: the bridge this state refers to
@@ -76,16 +44,6 @@ struct drm_bridge_state {
struct drm_private_state base;
struct drm_bridge *bridge;
-
- /**
- * @input_bus_cfg: input bus configuration
- */
- struct drm_bus_cfg input_bus_cfg;
-
- /**
- * @output_bus_cfg: input bus configuration
- */
- struct drm_bus_cfg output_bus_cfg;
};
static inline struct drm_bridge_state *
@@ -430,72 +388,6 @@ struct drm_bridge_funcs {
struct drm_bridge_state *state);
/**
- * @atomic_get_output_bus_fmts:
- *
- * Return the supported bus formats on the output end of a bridge.
- * The returned array must be allocated with kmalloc() and will be
- * freed by the caller. If the allocation fails, NULL should be
- * returned. num_output_fmts must be set to the returned array size.
- * Formats listed in the returned array should be listed in decreasing
- * preference order (the core will try all formats until it finds one
- * that works).
- *
- * This method is only called on the last element of the bridge chain
- * as part of the bus format negotiation process that happens in
- * &drm_atomic_bridge_chain_select_bus_fmts().
- * This method is optional. When not implemented, the core will
- * fall back to &drm_connector.display_info.bus_formats[0] if
- * &drm_connector.display_info.num_bus_formats > 0,
- * or to MEDIA_BUS_FMT_FIXED otherwise.
- */
- u32 *(*atomic_get_output_bus_fmts)(struct drm_bridge *bridge,
- struct drm_bridge_state *bridge_state,
- struct drm_crtc_state *crtc_state,
- struct drm_connector_state *conn_state,
- unsigned int *num_output_fmts);
-
- /**
- * @atomic_get_input_bus_fmts:
- *
- * Return the supported bus formats on the input end of a bridge for
- * a specific output bus format.
- *
- * The returned array must be allocated with kmalloc() and will be
- * freed by the caller. If the allocation fails, NULL should be
- * returned. num_output_fmts must be set to the returned array size.
- * Formats listed in the returned array should be listed in decreasing
- * preference order (the core will try all formats until it finds one
- * that works). When the format is not supported NULL should be
- * returned and *num_output_fmts should be set to 0.
- *
- * This method is called on all elements of the bridge chain as part of
- * the bus format negotiation process that happens in
- * &drm_atomic_bridge_chain_select_bus_fmts().
- * This method is optional. When not implemented, the core will bypass
- * bus format negotiation on this element of the bridge without
- * failing, and the previous element in the chain will be passed
- * MEDIA_BUS_FMT_FIXED as its output bus format.
- *
- * Bridge drivers that need to support being linked to bridges that are
- * not supporting bus format negotiation should handle the
- * output_fmt == MEDIA_BUS_FMT_FIXED case appropriately, by selecting a
- * sensible default value or extracting this information from somewhere
- * else (FW property, &drm_display_mode, &drm_display_info, ...)
- *
- * Note: Even if input format selection on the first bridge has no
- * impact on the negotiation process (bus format negotiation stops once
- * we reach the first element of the chain), drivers are expected to
- * return accurate input formats as the input format may be used to
- * configure the CRTC output appropriately.
- */
- u32 *(*atomic_get_input_bus_fmts)(struct drm_bridge *bridge,
- struct drm_bridge_state *bridge_state,
- struct drm_crtc_state *crtc_state,
- struct drm_connector_state *conn_state,
- u32 output_fmt,
- unsigned int *num_input_fmts);
-
- /**
* @atomic_check:
*
* This method is responsible for checking bridge state correctness.
@@ -509,14 +401,6 @@ struct drm_bridge_funcs {
* called when &drm_bridge_funcs.atomic_check() is implemented, so only
* one of them should be provided.
*
- * If drivers need to tweak &drm_bridge_state.input_bus_cfg.flags or
- * &drm_bridge_state.output_bus_cfg.flags it should should happen in
- * this function. By default the &drm_bridge_state.output_bus_cfg.flags
- * field is set to the next bridge
- * &drm_bridge_state.input_bus_cfg.flags value or
- * &drm_connector.display_info.bus_flags if the bridge is the last
- * element in the chain.
- *
* RETURNS:
* zero if the check passed, a negative error code otherwise.
*/
@@ -704,14 +588,6 @@ void drm_atomic_bridge_chain_pre_enable(struct drm_bridge *bridge,
void drm_atomic_bridge_chain_enable(struct drm_bridge *bridge,
struct drm_atomic_state *state);
-u32 *
-drm_atomic_helper_bridge_propagate_bus_fmt(struct drm_bridge *bridge,
- struct drm_bridge_state *bridge_state,
- struct drm_crtc_state *crtc_state,
- struct drm_connector_state *conn_state,
- u32 output_fmt,
- unsigned int *num_input_fmts);
-
void __drm_atomic_helper_bridge_reset(struct drm_bridge *bridge,
struct drm_bridge_state *state);
void __drm_atomic_helper_bridge_duplicate_state(struct drm_bridge *bridge,