Loading drivers/gpu/drm/msm/dsi-staging/dsi_display.c +9 −0 Original line number Diff line number Diff line Loading @@ -4854,6 +4854,15 @@ static int dsi_display_bind(struct device *dev, if (!display->disp_node) return 0; /* defer bind if ext bridge driver is not loaded */ for (i = 0; i < display->ext_bridge_cnt; i++) { if (!of_drm_find_bridge(display->ext_bridge[i].node_of)) { pr_err("defer for bridge[%d] %s\n", i, display->ext_bridge[i].node_of->full_name); return -EPROBE_DEFER; } } mutex_lock(&display->display_lock); rc = dsi_display_validate_split_link(display); Loading drivers/gpu/drm/msm/sde/sde_kms.c +12 −14 Original line number Diff line number Diff line /* * Copyright (c) 2014-2018, The Linux Foundation. All rights reserved. * Copyright (c) 2014-2019, The Linux Foundation. All rights reserved. * Copyright (C) 2013 Red Hat * Author: Rob Clark <robdclark@gmail.com> * Loading Loading @@ -1467,6 +1467,17 @@ static int _sde_kms_setup_displays(struct drm_device *dev, SDE_ERROR("dsi %d connector init failed\n", i); dsi_display_drm_bridge_deinit(display); sde_encoder_destroy(encoder); continue; } rc = dsi_display_drm_ext_bridge_init(display, encoder, connector); if (rc) { SDE_ERROR("dsi %d ext bridge init failed\n", rc); dsi_display_drm_bridge_deinit(display); sde_encoder_destroy(encoder); sde_connector_destroy(connector); } } Loading Loading @@ -2359,7 +2370,6 @@ static void _sde_kms_post_open(struct msm_kms *kms, struct drm_file *file) struct drm_connector *connector = NULL; struct drm_connector_list_iter conn_iter; struct sde_connector *sde_conn = NULL; int i; if (!kms) { SDE_ERROR("invalid kms\n"); Loading @@ -2377,18 +2387,6 @@ static void _sde_kms_post_open(struct msm_kms *kms, struct drm_file *file) if (!dev->mode_config.poll_enabled) return; /* init external dsi bridge here to make sure ext bridge is probed*/ for (i = 0; i < sde_kms->dsi_display_count; ++i) { struct dsi_display *dsi_display; dsi_display = sde_kms->dsi_displays[i]; if (dsi_display->bridge) { dsi_display_drm_ext_bridge_init(dsi_display, dsi_display->bridge->base.encoder, dsi_display->drm_conn); } } mutex_lock(&dev->mode_config.mutex); drm_connector_list_iter_begin(dev, &conn_iter); drm_for_each_connector_iter(connector, &conn_iter) { Loading Loading
drivers/gpu/drm/msm/dsi-staging/dsi_display.c +9 −0 Original line number Diff line number Diff line Loading @@ -4854,6 +4854,15 @@ static int dsi_display_bind(struct device *dev, if (!display->disp_node) return 0; /* defer bind if ext bridge driver is not loaded */ for (i = 0; i < display->ext_bridge_cnt; i++) { if (!of_drm_find_bridge(display->ext_bridge[i].node_of)) { pr_err("defer for bridge[%d] %s\n", i, display->ext_bridge[i].node_of->full_name); return -EPROBE_DEFER; } } mutex_lock(&display->display_lock); rc = dsi_display_validate_split_link(display); Loading
drivers/gpu/drm/msm/sde/sde_kms.c +12 −14 Original line number Diff line number Diff line /* * Copyright (c) 2014-2018, The Linux Foundation. All rights reserved. * Copyright (c) 2014-2019, The Linux Foundation. All rights reserved. * Copyright (C) 2013 Red Hat * Author: Rob Clark <robdclark@gmail.com> * Loading Loading @@ -1467,6 +1467,17 @@ static int _sde_kms_setup_displays(struct drm_device *dev, SDE_ERROR("dsi %d connector init failed\n", i); dsi_display_drm_bridge_deinit(display); sde_encoder_destroy(encoder); continue; } rc = dsi_display_drm_ext_bridge_init(display, encoder, connector); if (rc) { SDE_ERROR("dsi %d ext bridge init failed\n", rc); dsi_display_drm_bridge_deinit(display); sde_encoder_destroy(encoder); sde_connector_destroy(connector); } } Loading Loading @@ -2359,7 +2370,6 @@ static void _sde_kms_post_open(struct msm_kms *kms, struct drm_file *file) struct drm_connector *connector = NULL; struct drm_connector_list_iter conn_iter; struct sde_connector *sde_conn = NULL; int i; if (!kms) { SDE_ERROR("invalid kms\n"); Loading @@ -2377,18 +2387,6 @@ static void _sde_kms_post_open(struct msm_kms *kms, struct drm_file *file) if (!dev->mode_config.poll_enabled) return; /* init external dsi bridge here to make sure ext bridge is probed*/ for (i = 0; i < sde_kms->dsi_display_count; ++i) { struct dsi_display *dsi_display; dsi_display = sde_kms->dsi_displays[i]; if (dsi_display->bridge) { dsi_display_drm_ext_bridge_init(dsi_display, dsi_display->bridge->base.encoder, dsi_display->drm_conn); } } mutex_lock(&dev->mode_config.mutex); drm_connector_list_iter_begin(dev, &conn_iter); drm_for_each_connector_iter(connector, &conn_iter) { Loading