Add support for MEDIA_BUS_FMT_FIXED, which is e.g. requested for USB-C
DP chains as the last bridge in the chain (aux-hpd-bridge) does not
implement atomic_get_output_bus_fmts(), which results in the generic
drm_atomic_bridge_chain_select_bus_fmts() code using MEDIA_BUS_FMT_FIXED
instead.

Signed-off-by: Sebastian Reichel <[email protected]>
---
 drivers/gpu/drm/bridge/synopsys/dw-dp.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/bridge/synopsys/dw-dp.c 
b/drivers/gpu/drm/bridge/synopsys/dw-dp.c
index 36ee6e027af5..ac7779e42bb2 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-dp.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-dp.c
@@ -1528,6 +1528,7 @@ static int dw_dp_bridge_atomic_check(struct drm_bridge 
*bridge,
                                     struct drm_connector_state *conn_state)
 {
        struct drm_display_mode *adjusted_mode = &crtc_state->adjusted_mode;
+       unsigned int out_bus_format = bridge_state->output_bus_cfg.format;
        struct dw_dp *dp = bridge_to_dp(bridge);
        struct dw_dp_bridge_state *state;
        const struct dw_dp_output_format *fmt;
@@ -1538,7 +1539,10 @@ static int dw_dp_bridge_atomic_check(struct drm_bridge 
*bridge,
        state = to_dw_dp_bridge_state(bridge_state);
        mode = &state->mode;
 
-       fmt = dw_dp_get_output_format(bridge_state->output_bus_cfg.format);
+       if (out_bus_format == MEDIA_BUS_FMT_FIXED)
+               out_bus_format = MEDIA_BUS_FMT_RGB888_1X24;
+
+       fmt = dw_dp_get_output_format(out_bus_format);
        if (!fmt)
                return -EINVAL;
 

-- 
2.53.0

Reply via email to