drm/analogix: dp: remove some function which cause loader logo flash
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / drm / rockchip / analogix_dp-rockchip.c
index 2ad0c89a5d7108bdf8f7c7eca310bcdd2295f68a..f32b39a2b0c34dd13bc68976e9ca22d32d001448 100644 (file)
@@ -230,12 +230,6 @@ static int rockchip_dp_init(struct rockchip_dp_device *dp)
                return ret;
        }
 
-       ret = rockchip_dp_pre_init(dp);
-       if (ret < 0) {
-               dev_err(dp->dev, "failed to pre init %d\n", ret);
-               return ret;
-       }
-
        return 0;
 }
 
@@ -267,9 +261,37 @@ static int rockchip_dp_bind(struct device *dev, struct device *master,
 {
        struct rockchip_dp_device *dp = dev_get_drvdata(dev);
        const struct rockchip_dp_chip_data *dp_data;
+       struct device_node *panel_node, *port, *endpoint;
+       struct drm_panel *panel = NULL;
        struct drm_device *drm_dev = data;
        int ret;
 
+       port = of_graph_get_port_by_id(dev->of_node, 1);
+       if (port) {
+               endpoint = of_get_child_by_name(port, "endpoint");
+               of_node_put(port);
+               if (!endpoint) {
+                       dev_err(dev, "no output endpoint found\n");
+                       return -EINVAL;
+               }
+
+               panel_node = of_graph_get_remote_port_parent(endpoint);
+               of_node_put(endpoint);
+               if (!panel_node) {
+                       dev_err(dev, "no output node found\n");
+                       return -EINVAL;
+               }
+
+               panel = of_drm_find_panel(panel_node);
+               if (!panel) {
+                       DRM_ERROR("failed to find panel\n");
+                       of_node_put(panel_node);
+                       return -EPROBE_DEFER;
+               }
+               of_node_put(panel_node);
+       }
+
+       dp->plat_data.panel = panel;
        /*
         * Just like the probe function said, we don't need the
         * device drvrate anymore, we should leave the charge to
@@ -319,43 +341,14 @@ static const struct component_ops rockchip_dp_component_ops = {
 static int rockchip_dp_probe(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
-       struct device_node *panel_node, *port, *endpoint;
-       struct drm_panel *panel = NULL;
        struct rockchip_dp_device *dp;
 
-       port = of_graph_get_port_by_id(dev->of_node, 1);
-       if (port) {
-               endpoint = of_get_child_by_name(port, "endpoint");
-               of_node_put(port);
-               if (!endpoint) {
-                       dev_err(dev, "no output endpoint found\n");
-                       return -EINVAL;
-               }
-
-               panel_node = of_graph_get_remote_port_parent(endpoint);
-               of_node_put(endpoint);
-               if (!panel_node) {
-                       dev_err(dev, "no output node found\n");
-                       return -EINVAL;
-               }
-
-               panel = of_drm_find_panel(panel_node);
-               if (!panel) {
-                       DRM_ERROR("failed to find panel\n");
-                       of_node_put(panel_node);
-                       return -EPROBE_DEFER;
-               }
-               of_node_put(panel_node);
-       }
-
        dp = devm_kzalloc(dev, sizeof(*dp), GFP_KERNEL);
        if (!dp)
                return -ENOMEM;
 
        dp->dev = dev;
 
-       dp->plat_data.panel = panel;
-
        /*
         * We just use the drvdata until driver run into component
         * add function, and then we would set drvdata to null, so