summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorNarendra Muppalla <NarendraM@codeaurora.org>2017-01-25 11:24:58 -0800
committerNarendra Muppalla <NarendraM@codeaurora.org>2017-01-25 17:32:21 -0800
commit036dde397c84dfd65a3f6223cbfc69fcaae260a5 (patch)
tree9f01366e57b8c8aca28e0c6b9e19d8c51cee5ac6 /drivers/gpu
parent31aa8c69388578beb46b1d5989b54a7dac5ff56a (diff)
Revert "drm/msm/sde: move sde encoder to new display interface"
This reverts 'commit 0190e3c975d2 ("drm/msm/sde: move sde encoder to new display interface")' This is partial change for display drm driver, that will break drm/sde merge commit. Change-Id: I810da6da7df48bba1df68c81e2843f6597e4ca27 Signed-off-by: Narendra Muppalla <NarendraM@codeaurora.org>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/msm/sde/sde_encoder.c72
1 files changed, 37 insertions, 35 deletions
diff --git a/drivers/gpu/drm/msm/sde/sde_encoder.c b/drivers/gpu/drm/msm/sde/sde_encoder.c
index 25c8d1f2503e..f4bb230df98b 100644
--- a/drivers/gpu/drm/msm/sde/sde_encoder.c
+++ b/drivers/gpu/drm/msm/sde/sde_encoder.c
@@ -22,7 +22,8 @@
#include "sde_mdp_formats.h"
#include "sde_encoder_phys.h"
-#include "display_manager.h"
+
+#include "../dsi-staging/dsi_display.h"
#define to_sde_encoder_virt(x) container_of(x, struct sde_encoder_virt, base)
@@ -371,29 +372,29 @@ static int sde_encoder_setup_hdmi(struct sde_encoder_virt *sde_enc,
static int sde_encoder_setup_dsi(struct sde_encoder_virt *sde_enc,
struct sde_kms *sde_kms,
- struct display_info *disp_info)
+ struct dsi_display_info *dsi_info)
{
int ret = 0;
int i = 0;
DBG("");
- WARN_ON(disp_info->num_of_h_tiles < 1);
+ WARN_ON(dsi_info->num_of_h_tiles < 1);
- if (disp_info->num_of_h_tiles == 0)
- disp_info->num_of_h_tiles = 1;
+ if (dsi_info->num_of_h_tiles == 0)
+ dsi_info->num_of_h_tiles = 1;
- DBG("num_of_h_tiles %d h_tile_instance_0 %d h_tile_instance_1 %d\n",
- disp_info->num_of_h_tiles, disp_info->h_tile_instance[0],
- disp_info->h_tile_instance[1]);
+ DBG("dsi_info->num_of_h_tiles %d h_tiled %d dsi_info->h_tile_ids %d ",
+ dsi_info->num_of_h_tiles, dsi_info->h_tiled,
+ dsi_info->h_tile_ids[0]);
- for (i = 0; i < disp_info->num_of_h_tiles && !ret; i++) {
+ for (i = 0; i < dsi_info->num_of_h_tiles && !ret; i++) {
enum sde_intf intf_idx = INTF_MAX;
enum sde_ctl ctl_idx = CTL_0;
intf_idx = sde_encoder_get_intf(sde_kms->catalog,
INTF_DSI,
- disp_info->h_tile_instance[i]);
+ dsi_info->h_tile_ids[i]);
if (intf_idx == INTF_MAX) {
DBG("Error: could not get the interface id");
ret = -EINVAL;
@@ -412,7 +413,7 @@ static int sde_encoder_setup_dsi(struct sde_encoder_virt *sde_enc,
struct display_probe_info {
enum sde_intf_type type;
- struct display_info disp_info;
+ struct dsi_display_info dsi_info;
int hdmi_info;
};
@@ -436,9 +437,8 @@ static struct drm_encoder *sde_encoder_virt_init(struct drm_device *dev,
if (display->type == INTF_DSI) {
drm_encoder_mode = DRM_MODE_ENCODER_DSI;
- ret = sde_encoder_setup_dsi(sde_enc,
- sde_kms,
- &display->disp_info);
+ ret =
+ sde_encoder_setup_dsi(sde_enc, sde_kms, &display->dsi_info);
} else if (display->type == INTF_HDMI) {
drm_encoder_mode = DRM_MODE_ENCODER_TMDS;
@@ -500,12 +500,10 @@ static int sde_encoder_probe_dsi(struct drm_device *dev)
u32 ret = 0;
u32 i = 0;
u32 num_displays = 0;
- struct display_manager *dm = priv->dm;
- struct display_probe_info probe_info = { 0 };
DBG("");
- num_displays = display_manager_get_count(dm);
+ num_displays = dsi_display_get_num_of_displays();
DBG("num_displays %d", num_displays);
if (priv->num_encoders + num_displays > ARRAY_SIZE(priv->encoders)) {
@@ -514,28 +512,32 @@ static int sde_encoder_probe_dsi(struct drm_device *dev)
}
for (i = 0; i < num_displays; i++) {
- struct drm_encoder *enc;
- ret = display_manager_get_info_by_index(dm, i,
- &probe_info.disp_info);
- if (ret) {
- pr_err("Failed to get display info, %d\n", ret);
- return ret;
- }
+ struct dsi_display *dsi = dsi_display_get_display_by_index(i);
- enc = sde_encoder_virt_init(dev, &probe_info);
- if (IS_ERR_OR_NULL(enc)) {
- pr_err("encoder virt init failed\n");
- return PTR_ERR(enc);
- }
+ if (dsi_display_is_active(dsi)) {
+ struct drm_encoder *enc = NULL;
+ struct display_probe_info probe_info = { 0 };
- ret = display_manager_drm_init_by_index(dm, i, enc);
- if (ret) {
- pr_err("display drm init failed\n");
- return ret;
- }
+ probe_info.type = INTF_DSI;
- priv->encoders[priv->num_encoders++] = enc;
+ DBG("display %d is active", i);
+
+ ret = dsi_display_get_info(dsi, &probe_info.dsi_info);
+ if (ret)
+ return ret;
+
+ enc = sde_encoder_virt_init(dev, &probe_info);
+ if (IS_ERR(enc))
+ return PTR_ERR(enc);
+
+ ret = dsi_display_drm_init(dsi, enc);
+ if (ret)
+ return ret;
+
+ /* Register new encoder with the upper layer */
+ priv->encoders[priv->num_encoders++] = enc;
+ }
}
return ret;