On 2022/2/22 16:27, Maxime Ripard wrote:
+       if (!of_device_is_available(output)) {
+               of_node_put(output);
+               drm_info(ddev, "connector%d is not available\n", index);
+               return NULL;
+       }
+
+       disp_tims_np = of_get_child_by_name(output, "display-timings");
+       if (disp_tims_np) {
+               lsdc_get_display_timings_from_dtb(output, &lconn->disp_tim);
+               lconn->has_disp_tim = true;
+               of_node_put(disp_tims_np);
+               drm_info(ddev, "Found display timings provided by 
connector%d\n", index);
+       }
+
+       connector_type = lsdc_get_connector_type(ddev, output, index);
+
+       if (output) {
+               of_node_put(output);
+               output = NULL;
+       }
+
+DT_SKIPED:
+
+       /* Only create the i2c channel if display timing is not provided */
+       if (!lconn->has_disp_tim) {
+               const struct lsdc_chip_desc * const desc = ldev->desc;
+
+               if (desc->have_builtin_i2c)
+                       lconn->ddc = lsdc_create_i2c_chan(ddev, index);
+               else
+                       lconn->ddc = lsdc_get_i2c_adapter(ddev, index);
This looks weird: the connector bindings have a property to store the
i2c controller connected to the DDC lines, so you should use that
instead.

This is not  weird,  ast, mgag200, hibmc do the same thing.

Reply via email to