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

drm/bridge: Centralize error message when bridge attach fails

Being informed of a failure to attach a bridge is useful, and many
drivers prints an error message in that case. Move the message to
drm_bridge_attach() to avoid code duplication.

Suggested-by: Stephen Boyd <swboyd@chromium.org>
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Reviewed-by: Jyri Sarha <jyri.sarha@iki.fi>

+33 -103
+1 -8
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
··· 1583 1583 struct analogix_dp_device *dp) 1584 1584 { 1585 1585 struct drm_bridge *bridge; 1586 - int ret; 1587 1586 1588 1587 bridge = devm_kzalloc(drm_dev->dev, sizeof(*bridge), GFP_KERNEL); 1589 1588 if (!bridge) { ··· 1595 1596 bridge->driver_private = dp; 1596 1597 bridge->funcs = &analogix_dp_bridge_funcs; 1597 1598 1598 - ret = drm_bridge_attach(dp->encoder, bridge, NULL, 0); 1599 - if (ret) { 1600 - DRM_ERROR("failed to attach drm bridge\n"); 1601 - return -EINVAL; 1602 - } 1603 - 1604 - return 0; 1599 + return drm_bridge_attach(dp->encoder, bridge, NULL, 0); 1605 1600 } 1606 1601 1607 1602 static int analogix_dp_dt_parse_pdata(struct analogix_dp_device *dp)
+1 -4
drivers/gpu/drm/bridge/analogix/anx7625.c
··· 1359 1359 err = drm_bridge_attach(bridge->encoder, 1360 1360 ctx->pdata.panel_bridge, 1361 1361 &ctx->bridge, flags); 1362 - if (err) { 1363 - DRM_DEV_ERROR(dev, 1364 - "Fail to attach panel bridge: %d\n", err); 1362 + if (err) 1365 1363 return err; 1366 - } 1367 1364 } 1368 1365 1369 1366 ctx->bridge_attached = 1;
-1
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
··· 3474 3474 ret = drm_bridge_attach(encoder, &hdmi->bridge, NULL, 0); 3475 3475 if (ret) { 3476 3476 dw_hdmi_remove(hdmi); 3477 - DRM_ERROR("Failed to initialize bridge with drm\n"); 3478 3477 return ERR_PTR(ret); 3479 3478 } 3480 3479
+1 -9
drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
··· 1229 1229 */ 1230 1230 int dw_mipi_dsi_bind(struct dw_mipi_dsi *dsi, struct drm_encoder *encoder) 1231 1231 { 1232 - int ret; 1233 - 1234 - ret = drm_bridge_attach(encoder, &dsi->bridge, NULL, 0); 1235 - if (ret) { 1236 - DRM_ERROR("Failed to initialize bridge with drm\n"); 1237 - return ret; 1238 - } 1239 - 1240 - return ret; 1232 + return drm_bridge_attach(encoder, &dsi->bridge, NULL, 0); 1241 1233 } 1242 1234 EXPORT_SYMBOL_GPL(dw_mipi_dsi_bind); 1243 1235
+10
drivers/gpu/drm/drm_bridge.c
··· 28 28 #include <drm/drm_atomic_state_helper.h> 29 29 #include <drm/drm_bridge.h> 30 30 #include <drm/drm_encoder.h> 31 + #include <drm/drm_print.h> 31 32 32 33 #include "drm_crtc_internal.h" 33 34 ··· 226 225 bridge->dev = NULL; 227 226 bridge->encoder = NULL; 228 227 list_del(&bridge->chain_node); 228 + 229 + #ifdef CONFIG_OF 230 + DRM_ERROR("failed to attach bridge %pOF to encoder %s: %d\n", 231 + bridge->of_node, encoder->name, ret); 232 + #else 233 + DRM_ERROR("failed to attach bridge to encoder %s: %d\n", 234 + encoder->name, ret); 235 + #endif 236 + 229 237 return ret; 230 238 } 231 239 EXPORT_SYMBOL(drm_bridge_attach);
+1 -4
drivers/gpu/drm/exynos/exynos_dp.c
··· 109 109 if (dp->ptn_bridge) { 110 110 ret = drm_bridge_attach(&dp->encoder, dp->ptn_bridge, bridge, 111 111 0); 112 - if (ret) { 113 - DRM_DEV_ERROR(dp->dev, 114 - "Failed to attach bridge to drm\n"); 112 + if (ret) 115 113 return ret; 116 - } 117 114 } 118 115 119 116 return 0;
+1 -4
drivers/gpu/drm/exynos/exynos_hdmi.c
··· 970 970 drm_connector_helper_add(connector, &hdmi_connector_helper_funcs); 971 971 drm_connector_attach_encoder(connector, encoder); 972 972 973 - if (hdata->bridge) { 973 + if (hdata->bridge) 974 974 ret = drm_bridge_attach(encoder, hdata->bridge, NULL, 0); 975 - if (ret) 976 - DRM_DEV_ERROR(hdata->dev, "Failed to attach bridge\n"); 977 - } 978 975 979 976 cec_fill_conn_info_from_drm(&conn_info, connector); 980 977
+1 -8
drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c
··· 769 769 { 770 770 struct drm_encoder *encoder = &dsi->encoder; 771 771 struct drm_bridge *bridge = dsi->bridge; 772 - int ret; 773 772 774 773 /* associate the bridge to dsi encoder */ 775 - ret = drm_bridge_attach(encoder, bridge, NULL, 0); 776 - if (ret) { 777 - DRM_ERROR("failed to attach external bridge\n"); 778 - return ret; 779 - } 780 - 781 - return 0; 774 + return drm_bridge_attach(encoder, bridge, NULL, 0); 782 775 } 783 776 784 777 static int dsi_bind(struct device *dev, struct device *master, void *data)
+1 -4
drivers/gpu/drm/imx/dcss/dcss-kms.c
··· 93 93 94 94 ret = drm_bridge_attach(encoder, bridge, NULL, 95 95 DRM_BRIDGE_ATTACH_NO_CONNECTOR); 96 - if (ret < 0) { 97 - dev_err(ddev->dev, "Unable to attach bridge %pOF\n", 98 - bridge->of_node); 96 + if (ret < 0) 99 97 return ret; 100 - } 101 98 102 99 kms->connector = drm_bridge_connector_init(ddev, encoder); 103 100 if (IS_ERR(kms->connector)) {
+1 -3
drivers/gpu/drm/imx/imx-ldb.c
··· 465 465 466 466 if (imx_ldb_ch->bridge) { 467 467 ret = drm_bridge_attach(encoder, imx_ldb_ch->bridge, NULL, 0); 468 - if (ret) { 469 - DRM_ERROR("Failed to initialize bridge with drm\n"); 468 + if (ret) 470 469 return ret; 471 - } 472 470 } else { 473 471 /* 474 472 * We want to add the connector whenever there is no bridge
+1 -4
drivers/gpu/drm/imx/parallel-display.c
··· 294 294 295 295 if (imxpd->next_bridge) { 296 296 ret = drm_bridge_attach(encoder, imxpd->next_bridge, bridge, 0); 297 - if (ret < 0) { 298 - dev_err(imxpd->dev, "failed to attach bridge: %d\n", 299 - ret); 297 + if (ret < 0) 300 298 return ret; 301 - } 302 299 } else { 303 300 drm_connector_helper_add(connector, 304 301 &imx_pd_connector_helper_funcs);
+1 -3
drivers/gpu/drm/ingenic/ingenic-drm-drv.c
··· 1081 1081 drm_encoder_helper_add(encoder, &ingenic_drm_encoder_helper_funcs); 1082 1082 1083 1083 ret = drm_bridge_attach(encoder, bridge, NULL, 0); 1084 - if (ret) { 1085 - dev_err(dev, "Unable to attach bridge\n"); 1084 + if (ret) 1086 1085 return ret; 1087 - } 1088 1086 } 1089 1087 1090 1088 drm_for_each_encoder(encoder, drm) {
-1
drivers/gpu/drm/kmb/kmb_dsi.c
··· 1441 1441 ret = drm_bridge_attach(encoder, adv_bridge, NULL, 1442 1442 DRM_BRIDGE_ATTACH_NO_CONNECTOR); 1443 1443 if (ret) { 1444 - DRM_ERROR("failed to attach bridge to MIPI\n"); 1445 1444 drm_encoder_cleanup(encoder); 1446 1445 return ret; 1447 1446 }
+1 -8
drivers/gpu/drm/mcde/mcde_dsi.c
··· 1052 1052 { 1053 1053 struct mcde_dsi *d = bridge_to_mcde_dsi(bridge); 1054 1054 struct drm_device *drm = bridge->dev; 1055 - int ret; 1056 1055 1057 1056 if (!drm_core_check_feature(drm, DRIVER_ATOMIC)) { 1058 1057 dev_err(d->dev, "we need atomic updates\n"); ··· 1059 1060 } 1060 1061 1061 1062 /* Attach the DSI bridge to the output (panel etc) bridge */ 1062 - ret = drm_bridge_attach(bridge->encoder, d->bridge_out, bridge, flags); 1063 - if (ret) { 1064 - dev_err(d->dev, "failed to attach the DSI bridge\n"); 1065 - return ret; 1066 - } 1067 - 1068 - return 0; 1063 + return drm_bridge_attach(bridge->encoder, d->bridge_out, bridge, flags); 1069 1064 } 1070 1065 1071 1066 static const struct drm_bridge_funcs mcde_dsi_bridge_funcs = {
+1 -3
drivers/gpu/drm/mediatek/mtk_dpi.c
··· 714 714 715 715 ret = drm_bridge_attach(&dpi->encoder, &dpi->bridge, NULL, 716 716 DRM_BRIDGE_ATTACH_NO_CONNECTOR); 717 - if (ret) { 718 - dev_err(dev, "Failed to attach bridge: %d\n", ret); 717 + if (ret) 719 718 goto err_cleanup; 720 - } 721 719 722 720 dpi->connector = drm_bridge_connector_init(drm_dev, &dpi->encoder); 723 721 if (IS_ERR(dpi->connector)) {
+1 -4
drivers/gpu/drm/mediatek/mtk_hdmi.c
··· 1293 1293 if (hdmi->next_bridge) { 1294 1294 ret = drm_bridge_attach(bridge->encoder, hdmi->next_bridge, 1295 1295 bridge, flags); 1296 - if (ret) { 1297 - dev_err(hdmi->dev, 1298 - "Failed to attach external bridge: %d\n", ret); 1296 + if (ret) 1299 1297 return ret; 1300 - } 1301 1298 } 1302 1299 1303 1300 mtk_cec_set_hpd_event(hdmi->cec_dev, mtk_hdmi_hpd_event, hdmi->dev);
+1 -5
drivers/gpu/drm/omapdrm/omap_drv.c
··· 290 290 ret = drm_bridge_attach(pipe->encoder, 291 291 pipe->output->bridge, NULL, 292 292 DRM_BRIDGE_ATTACH_NO_CONNECTOR); 293 - if (ret < 0) { 294 - dev_err(priv->dev, 295 - "unable to attach bridge %pOF\n", 296 - pipe->output->bridge->of_node); 293 + if (ret < 0) 297 294 return ret; 298 - } 299 295 } 300 296 301 297 id = omap_display_id(pipe->output);
+1 -4
drivers/gpu/drm/rockchip/rockchip_lvds.c
··· 636 636 } 637 637 } else { 638 638 ret = drm_bridge_attach(encoder, lvds->bridge, NULL, 0); 639 - if (ret) { 640 - DRM_DEV_ERROR(drm_dev->dev, 641 - "failed to attach bridge: %d\n", ret); 639 + if (ret) 642 640 goto err_free_encoder; 643 - } 644 641 } 645 642 646 643 pm_runtime_enable(dev);
+1 -4
drivers/gpu/drm/rockchip/rockchip_rgb.c
··· 143 143 rgb->bridge = bridge; 144 144 145 145 ret = drm_bridge_attach(encoder, rgb->bridge, NULL, 0); 146 - if (ret) { 147 - DRM_DEV_ERROR(drm_dev->dev, 148 - "failed to attach bridge: %d\n", ret); 146 + if (ret) 149 147 goto err_free_encoder; 150 - } 151 148 152 149 return rgb; 153 150
+1 -3
drivers/gpu/drm/sti/sti_dvo.c
··· 463 463 drm_bridge_add(bridge); 464 464 465 465 err = drm_bridge_attach(encoder, bridge, NULL, 0); 466 - if (err) { 467 - DRM_ERROR("Failed to attach bridge\n"); 466 + if (err) 468 467 return err; 469 - } 470 468 471 469 dvo->bridge = bridge; 472 470 connector->encoder = encoder;
+1 -3
drivers/gpu/drm/sun4i/sun4i_lvds.c
··· 142 142 143 143 if (bridge) { 144 144 ret = drm_bridge_attach(encoder, bridge, NULL, 0); 145 - if (ret) { 146 - dev_err(drm->dev, "Couldn't attach our bridge\n"); 145 + if (ret) 147 146 goto err_cleanup_connector; 148 - } 149 147 } 150 148 151 149 return 0;
+1 -3
drivers/gpu/drm/sun4i/sun4i_rgb.c
··· 234 234 235 235 if (rgb->bridge) { 236 236 ret = drm_bridge_attach(encoder, rgb->bridge, NULL, 0); 237 - if (ret) { 238 - dev_err(drm->dev, "Couldn't attach our bridge\n"); 237 + if (ret) 239 238 goto err_cleanup_connector; 240 - } 241 239 } 242 240 243 241 return 0;
+1 -4
drivers/gpu/drm/tegra/rgb.c
··· 275 275 if (output->bridge) { 276 276 err = drm_bridge_attach(&output->encoder, output->bridge, 277 277 NULL, DRM_BRIDGE_ATTACH_NO_CONNECTOR); 278 - if (err) { 279 - dev_err(output->dev, "failed to attach bridge: %d\n", 280 - err); 278 + if (err) 281 279 return err; 282 - } 283 280 284 281 connector = drm_bridge_connector_init(drm, &output->encoder); 285 282 if (IS_ERR(connector)) {
+1 -3
drivers/gpu/drm/tidss/tidss_kms.c
··· 227 227 } 228 228 229 229 ret = drm_bridge_attach(enc, pipes[i].bridge, NULL, 0); 230 - if (ret) { 231 - dev_err(tidss->dev, "bridge attach failed: %d\n", ret); 230 + if (ret) 232 231 return ret; 233 - } 234 232 } 235 233 236 234 /* create overlay planes of the leftover planes */
+1 -3
drivers/gpu/drm/tilcdc/tilcdc_external.c
··· 93 93 priv->external_encoder->possible_crtcs = BIT(0); 94 94 95 95 ret = drm_bridge_attach(priv->external_encoder, bridge, NULL, 0); 96 - if (ret) { 97 - dev_err(ddev->dev, "drm_bridge_attach() failed %d\n", ret); 96 + if (ret) 98 97 return ret; 99 - } 100 98 101 99 tilcdc_crtc_set_panel_info(priv->crtc, &panel_info_default); 102 100
+1 -3
drivers/gpu/drm/vc4/vc4_dsi.c
··· 1646 1646 drm_encoder_helper_add(dsi->encoder, &vc4_dsi_encoder_helper_funcs); 1647 1647 1648 1648 ret = drm_bridge_attach(dsi->encoder, dsi->bridge, NULL, 0); 1649 - if (ret) { 1650 - dev_err(dev, "bridge attach failed: %d\n", ret); 1649 + if (ret) 1651 1650 return ret; 1652 - } 1653 1651 /* Disable the atomic helper calls into the bridge. We 1654 1652 * manually call the bridge pre_enable / enable / etc. calls 1655 1653 * from our driver, since we need to sequence them within the