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: do not store internal bridge pointer

Since the driver was switched to devm_drm_bridge_add(), there is no need
anymore to store the created bridge instance in struct msm_dsi. Drop
this field and pass data directly.

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

+15 -19
+5 -3
drivers/gpu/drm/msm/dsi/dsi.c
··· 216 216 int msm_dsi_modeset_init(struct msm_dsi *msm_dsi, struct drm_device *dev, 217 217 struct drm_encoder *encoder) 218 218 { 219 + struct drm_bridge *bridge; 219 220 int ret; 220 221 221 222 msm_dsi->dev = dev; ··· 238 237 239 238 msm_dsi->encoder = encoder; 240 239 241 - ret = msm_dsi_manager_bridge_init(msm_dsi); 242 - if (ret) { 240 + bridge = msm_dsi_manager_bridge_init(msm_dsi); 241 + if (IS_ERR(bridge)) { 242 + ret = PTR_ERR(bridge); 243 243 DRM_DEV_ERROR(dev->dev, "failed to create dsi bridge: %d\n", ret); 244 244 return ret; 245 245 } 246 246 247 - ret = msm_dsi_manager_ext_bridge_init(msm_dsi->id); 247 + ret = msm_dsi_manager_ext_bridge_init(msm_dsi->id, bridge); 248 248 if (ret) { 249 249 DRM_DEV_ERROR(dev->dev, 250 250 "failed to create dsi connector: %d\n", ret);
+2 -5
drivers/gpu/drm/msm/dsi/dsi.h
··· 35 35 struct drm_device *dev; 36 36 struct platform_device *pdev; 37 37 38 - /* internal dsi bridge attached to MDP interface */ 39 - struct drm_bridge *bridge; 40 - 41 38 struct mipi_dsi_host *host; 42 39 struct msm_dsi_phy *phy; 43 40 ··· 53 56 }; 54 57 55 58 /* dsi manager */ 56 - int msm_dsi_manager_bridge_init(struct msm_dsi *msm_dsi); 57 - int msm_dsi_manager_ext_bridge_init(u8 id); 59 + struct drm_bridge *msm_dsi_manager_bridge_init(struct msm_dsi *msm_dsi); 60 + int msm_dsi_manager_ext_bridge_init(u8 id, struct drm_bridge *int_bridge); 58 61 int msm_dsi_manager_cmd_xfer(int id, const struct mipi_dsi_msg *msg); 59 62 bool msm_dsi_manager_cmd_xfer_trigger(int id, u32 dma_base, u32 len); 60 63 int msm_dsi_manager_register(struct msm_dsi *msm_dsi);
+8 -11
drivers/gpu/drm/msm/dsi/dsi_manager.c
··· 466 466 }; 467 467 468 468 /* initialize bridge */ 469 - int msm_dsi_manager_bridge_init(struct msm_dsi *msm_dsi) 469 + struct drm_bridge *msm_dsi_manager_bridge_init(struct msm_dsi *msm_dsi) 470 470 { 471 - struct drm_bridge *bridge = NULL; 471 + struct drm_bridge *bridge; 472 472 struct dsi_bridge *dsi_bridge; 473 473 struct drm_encoder *encoder; 474 474 int ret; ··· 476 476 dsi_bridge = devm_kzalloc(msm_dsi->dev->dev, 477 477 sizeof(*dsi_bridge), GFP_KERNEL); 478 478 if (!dsi_bridge) 479 - return -ENOMEM; 479 + return ERR_PTR(-ENOMEM); 480 480 481 481 dsi_bridge->id = msm_dsi->id; 482 482 ··· 487 487 488 488 ret = devm_drm_bridge_add(msm_dsi->dev->dev, bridge); 489 489 if (ret) 490 - return ret; 490 + return ERR_PTR(ret); 491 491 492 492 ret = drm_bridge_attach(encoder, bridge, NULL, 0); 493 493 if (ret) 494 - return ret; 494 + return ERR_PTR(ret); 495 495 496 - msm_dsi->bridge = bridge; 497 - 498 - return 0; 496 + return bridge; 499 497 } 500 498 501 - int msm_dsi_manager_ext_bridge_init(u8 id) 499 + int msm_dsi_manager_ext_bridge_init(u8 id, struct drm_bridge *int_bridge) 502 500 { 503 501 struct msm_dsi *msm_dsi = dsi_mgr_get_dsi(id); 504 502 struct drm_device *dev = msm_dsi->dev; 505 503 struct drm_encoder *encoder; 506 - struct drm_bridge *int_bridge, *ext_bridge; 504 + struct drm_bridge *ext_bridge; 507 505 int ret; 508 506 509 - int_bridge = msm_dsi->bridge; 510 507 ext_bridge = devm_drm_of_get_bridge(&msm_dsi->pdev->dev, 511 508 msm_dsi->pdev->dev.of_node, 1, 0); 512 509 if (IS_ERR(ext_bridge))