Merge remote-tracking branch 'xen-tip/linux-next'
[deliverable/linux.git] / drivers / gpu / drm / tilcdc / tilcdc_external.c
index 03acb4f99982f6f219fabf701738fc916930440c..68e895021005cc62034110748f8f1bf028a2391d 100644 (file)
@@ -52,7 +52,7 @@ static int tilcdc_external_mode_valid(struct drm_connector *connector,
        return MODE_OK;
 }
 
-static int tilcdc_add_external_encoder(struct drm_device *dev, int *bpp,
+static int tilcdc_add_external_encoder(struct drm_device *dev,
                                       struct drm_connector *connector)
 {
        struct tilcdc_drm_private *priv = dev->dev_private;
@@ -64,7 +64,6 @@ static int tilcdc_add_external_encoder(struct drm_device *dev, int *bpp,
        /* Only tda998x is supported at the moment. */
        tilcdc_crtc_set_simulate_vesa_sync(priv->crtc, true);
        tilcdc_crtc_set_panel_info(priv->crtc, &panel_info_tda998x);
-       *bpp = panel_info_tda998x.bpp;
 
        connector_funcs = devm_kzalloc(dev->dev, sizeof(*connector_funcs),
                                       GFP_KERNEL);
@@ -94,7 +93,7 @@ static int tilcdc_add_external_encoder(struct drm_device *dev, int *bpp,
        return 0;
 }
 
-int tilcdc_add_external_encoders(struct drm_device *dev, int *bpp)
+int tilcdc_add_external_encoders(struct drm_device *dev)
 {
        struct tilcdc_drm_private *priv = dev->dev_private;
        struct drm_connector *connector;
@@ -108,7 +107,7 @@ int tilcdc_add_external_encoders(struct drm_device *dev, int *bpp)
                        if (connector == priv->connectors[i])
                                found = true;
                if (!found) {
-                       ret = tilcdc_add_external_encoder(dev, bpp, connector);
+                       ret = tilcdc_add_external_encoder(dev, connector);
                        if (ret)
                                return ret;
                }
@@ -138,14 +137,23 @@ static int dev_match_of(struct device *dev, void *data)
 int tilcdc_get_external_components(struct device *dev,
                                   struct component_match **match)
 {
+       struct device_node *node;
        struct device_node *ep = NULL;
        int count = 0;
 
-       while ((ep = of_graph_get_next_endpoint(dev->of_node, ep))) {
-               struct device_node *node;
+       /* Avoid error print by of_graph_get_next_endpoint() if there
+        * is no ports present.
+        */
+       node = of_get_child_by_name(dev->of_node, "ports");
+       if (!node)
+               node = of_get_child_by_name(dev->of_node, "port");
+       if (!node)
+               return 0;
+       of_node_put(node);
 
+       while ((ep = of_graph_get_next_endpoint(dev->of_node, ep))) {
                node = of_graph_get_remote_port_parent(ep);
-               if (!node && !of_device_is_available(node)) {
+               if (!node || !of_device_is_available(node)) {
                        of_node_put(node);
                        continue;
                }
This page took 0.029306 seconds and 5 git commands to generate.