@@ -279,10 +279,10 @@ static int jdi_panel_enable(struct drm_panel *panel)
279279 if (jdi -> enabled )
280280 return 0 ;
281281
282- backlight_enable (jdi -> backlight );
283-
284282 jdi -> enabled = true;
285283
284+ backlight_enable (jdi -> backlight );
285+
286286 return 0 ;
287287}
288288
@@ -326,10 +326,14 @@ static int jdi_panel_get_modes(struct drm_panel *panel,
326326
327327static int dsi_dcs_bl_get_brightness (struct backlight_device * bl )
328328{
329- struct mipi_dsi_device * dsi = bl_get_data (bl );
329+ struct jdi_panel * jdi = bl_get_data (bl );
330+ struct mipi_dsi_device * dsi = jdi -> dsi ;
330331 int ret ;
331332 u16 brightness = bl -> props .brightness ;
332333
334+ if (!jdi -> enabled )
335+ return brightness ;
336+
333337 dsi -> mode_flags &= ~MIPI_DSI_MODE_LPM ;
334338
335339 ret = mipi_dsi_dcs_get_display_brightness (dsi , & brightness );
@@ -343,9 +347,13 @@ static int dsi_dcs_bl_get_brightness(struct backlight_device *bl)
343347
344348static int dsi_dcs_bl_update_status (struct backlight_device * bl )
345349{
346- struct mipi_dsi_device * dsi = bl_get_data (bl );
350+ struct jdi_panel * jdi = bl_get_data (bl );
351+ struct mipi_dsi_device * dsi = jdi -> dsi ;
347352 int ret ;
348353
354+ if (!jdi -> enabled )
355+ return 0 ;
356+
349357 dsi -> mode_flags &= ~MIPI_DSI_MODE_LPM ;
350358
351359 ret = mipi_dsi_dcs_set_display_brightness (dsi , bl -> props .brightness );
@@ -363,8 +371,9 @@ static const struct backlight_ops dsi_bl_ops = {
363371};
364372
365373static struct backlight_device *
366- drm_panel_create_dsi_backlight (struct mipi_dsi_device * dsi )
374+ drm_panel_create_dsi_backlight (struct jdi_panel * jdi )
367375{
376+ struct mipi_dsi_device * dsi = jdi -> dsi ;
368377 struct device * dev = & dsi -> dev ;
369378 struct backlight_properties props ;
370379
@@ -373,7 +382,7 @@ drm_panel_create_dsi_backlight(struct mipi_dsi_device *dsi)
373382 props .brightness = 255 ;
374383 props .max_brightness = 255 ;
375384
376- return devm_backlight_device_register (dev , dev_name (dev ), dev , dsi ,
385+ return devm_backlight_device_register (dev , dev_name (dev ), dev , jdi ,
377386 & dsi_bl_ops , & props );
378387}
379388
@@ -424,7 +433,7 @@ static int jdi_panel_add(struct jdi_panel *jdi)
424433 return dev_err_probe (dev , PTR_ERR (jdi -> dcdc_en_gpio ),
425434 "cannot get dcdc-en-gpio %d\n" , ret );
426435
427- jdi -> backlight = drm_panel_create_dsi_backlight (jdi -> dsi );
436+ jdi -> backlight = drm_panel_create_dsi_backlight (jdi );
428437 if (IS_ERR (jdi -> backlight ))
429438 return dev_err_probe (dev , PTR_ERR (jdi -> backlight ),
430439 "failed to register backlight %d\n" , ret );
0 commit comments