diff --git a/msm/sde/sde_connector.c b/msm/sde/sde_connector.c index cad8b112fa7a..f799d82b8a88 100644 --- a/msm/sde/sde_connector.c +++ b/msm/sde/sde_connector.c @@ -188,15 +188,16 @@ static int sde_backlight_setup(struct sde_connector *c_conn, return -EINVAL; sde_kms = to_sde_kms(priv->kms); - if (sde_in_trusted_vm(sde_kms)) + display = (struct dsi_display *) c_conn->display; + bl_config = &display->panel->bl_config; + + if (bl_config->type != DSI_BACKLIGHT_DCS && + sde_in_trusted_vm(sde_kms)) return 0; memset(&props, 0, sizeof(props)); props.type = BACKLIGHT_RAW; props.power = FB_BLANK_UNBLANK; - - display = (struct dsi_display *) c_conn->display; - bl_config = &display->panel->bl_config; props.max_brightness = bl_config->brightness_max_level; props.brightness = bl_config->brightness_max_level; snprintf(bl_node_name, BL_NODE_NAME_SIZE, "panel%u-backlight", @@ -210,6 +211,14 @@ static int sde_backlight_setup(struct sde_connector *c_conn, return -ENODEV; } c_conn->thermal_max_brightness = bl_config->brightness_max_level; + + /** + * In TVM, thermal cooling device is not enabled. Registering with dummy + * thermal device will return a NULL leading to a failure. So skip it. + */ + if (sde_in_trusted_vm(sde_kms)) + goto done; + c_conn->n.notifier_call = sde_backlight_cooling_cb; c_conn->cdev = backlight_cdev_register(dev->dev, c_conn->bl_device, &c_conn->n); @@ -220,6 +229,8 @@ static int sde_backlight_setup(struct sde_connector *c_conn, c_conn->bl_device = NULL; return -ENODEV; } + +done: display_count++; return 0;