drm/msm/dsi: Create a helper to check if there is a connected device
authorArchit Taneja <architt@codeaurora.org>
Mon, 3 Aug 2015 08:38:33 +0000 (14:08 +0530)
committerRob Clark <robdclark@gmail.com>
Sat, 15 Aug 2015 22:27:25 +0000 (18:27 -0400)
Create a helper msm_dsi_device_connected() which checks whether we have a
device connected to the dsi host or not. This check gets messy when we
have support external bridges too. Having an inline function makes it
more legible.

For now, the check only consists of msm_dsi->panel being non-NULL. Later,
this will check if we have an external bridge or not.

This helper isn't used in dsi_connector related code as that's specific
to only when a drm_panel is connected.

Signed-off-by: Archit Taneja <architt@codeaurora.org>
Signed-off-by: Rob Clark <robdclark@gmail.com>
drivers/gpu/drm/msm/dsi/dsi.c
drivers/gpu/drm/msm/dsi/dsi.h
drivers/gpu/drm/msm/dsi/dsi_manager.c

index 5c8fbc47583116b06c8a4afd90e3db0ee3b06cb9..ffaf77f623c62b87f25459bd38b4e9c339658a5a 100644 (file)
@@ -15,7 +15,7 @@
 
 struct drm_encoder *msm_dsi_get_encoder(struct msm_dsi *msm_dsi)
 {
-       if (!msm_dsi || !msm_dsi->panel)
+       if (!msm_dsi || !msm_dsi_device_connected(msm_dsi))
                return NULL;
 
        return (msm_dsi->device_flags & MIPI_DSI_MODE_VIDEO) ?
index 1a5990551c15ab085c26cea6c14d80a65cda6476..1636513347e0e5419a287313afac1a769977d5fb 100644 (file)
@@ -85,6 +85,11 @@ int msm_dsi_manager_register(struct msm_dsi *msm_dsi);
 void msm_dsi_manager_unregister(struct msm_dsi *msm_dsi);
 
 /* msm dsi */
+static inline bool msm_dsi_device_connected(struct msm_dsi *msm_dsi)
+{
+       return msm_dsi->panel;
+}
+
 struct drm_encoder *msm_dsi_get_encoder(struct msm_dsi *msm_dsi);
 
 /* dsi pll */
index f43c66ca81fbf1ccc783e257f24aed6e461d6001..60dbd829d7a9befcaae73cd9c8a83d701f0cb810 100644 (file)
@@ -344,7 +344,8 @@ static void dsi_mgr_bridge_pre_enable(struct drm_bridge *bridge)
        int ret;
 
        DBG("id=%d", id);
-       if (!panel || (is_dual_dsi && (DSI_1 == id)))
+       if (!msm_dsi_device_connected(msm_dsi) ||
+                       (is_dual_dsi && (DSI_1 == id)))
                return;
 
        ret = msm_dsi_host_power_on(host);
@@ -431,7 +432,8 @@ static void dsi_mgr_bridge_post_disable(struct drm_bridge *bridge)
 
        DBG("id=%d", id);
 
-       if (!panel || (is_dual_dsi && (DSI_1 == id)))
+       if (!msm_dsi_device_connected(msm_dsi) ||
+                       (is_dual_dsi && (DSI_1 == id)))
                return;
 
        ret = drm_panel_disable(panel);