Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/msm/dsi: stop calling set_split_display

Since the commit 8b03ad30e314 ("drm/msm/dsi: Use one connector for dual
DSI mode"), the second DSI host in the bonded pair will not be
associated with the encoder and will not get the bridges, thus making
condition in msm_dsi_manager_set_split_display() always false.

Technically that change broke bonded DSI support in the MDP5 driver. But
since nobody complained in the last 5.5 years, it seems that nobody
cares enough.

Drop the msm_dsi_manager_set_split_display() completely and stop calling
the set_split_display() KMS callback. Also remove the
msm_dsi::external_bridge field which was only used by the mentioned
function.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/561695/
Link: https://lore.kernel.org/r/20231009205727.2781802-4-dmitry.baryshkov@linaro.org

-40
-5
drivers/gpu/drm/msm/dsi/dsi.h
··· 38 38 struct mipi_dsi_host *host; 39 39 struct msm_dsi_phy *phy; 40 40 41 - /* 42 - * external_bridge connected to dsi bridge output 43 - */ 44 - struct drm_bridge *external_bridge; 45 - 46 41 struct device *phy_dev; 47 42 bool phy_enabled; 48 43
-35
drivers/gpu/drm/msm/dsi/dsi_manager.c
··· 198 198 return dsi_bridge->id; 199 199 } 200 200 201 - static void msm_dsi_manager_set_split_display(u8 id) 202 - { 203 - struct msm_dsi *msm_dsi = dsi_mgr_get_dsi(id); 204 - struct msm_dsi *other_dsi = dsi_mgr_get_other_dsi(id); 205 - struct msm_drm_private *priv = msm_dsi->dev->dev_private; 206 - struct msm_kms *kms = priv->kms; 207 - struct msm_dsi *master_dsi, *slave_dsi; 208 - 209 - if (IS_BONDED_DSI() && !IS_MASTER_DSI_LINK(id)) { 210 - master_dsi = other_dsi; 211 - slave_dsi = msm_dsi; 212 - } else { 213 - master_dsi = msm_dsi; 214 - slave_dsi = other_dsi; 215 - } 216 - 217 - if (!msm_dsi->external_bridge || !IS_BONDED_DSI()) 218 - return; 219 - 220 - /* 221 - * Set split display info to kms once bonded DSI panel is connected to 222 - * both hosts. 223 - */ 224 - if (other_dsi && other_dsi->external_bridge && kms->funcs->set_split_display) { 225 - kms->funcs->set_split_display(kms, master_dsi->encoder, 226 - slave_dsi->encoder, 227 - msm_dsi_is_cmd_mode(msm_dsi)); 228 - } 229 - } 230 - 231 201 static int dsi_mgr_bridge_power_on(struct drm_bridge *bridge) 232 202 { 233 203 int id = dsi_mgr_bridge_get_id(bridge); ··· 474 504 if (IS_ERR(ext_bridge)) 475 505 return PTR_ERR(ext_bridge); 476 506 477 - msm_dsi->external_bridge = ext_bridge; 478 - 479 507 encoder = msm_dsi->encoder; 480 508 481 509 /* ··· 505 537 if (ret < 0) 506 538 return ret; 507 539 } 508 - 509 - /* The pipeline is ready, ping encoders if necessary */ 510 - msm_dsi_manager_set_split_display(id); 511 540 512 541 return 0; 513 542 }