@@ -584,9 +584,37 @@ static int intel_dp_aux_vesa_setup_backlight(struct intel_connector *connector,
584584 u8 current_mode ;
585585 int ret ;
586586
587- if (panel -> backlight .edp .vesa .luminance_control_support ) {
587+ ret = drm_edp_backlight_init (& intel_dp -> aux , & panel -> backlight .edp .vesa .info ,
588+ luminance_range -> max_luminance ,
589+ panel -> vbt .backlight .pwm_freq_hz ,
590+ intel_dp -> edp_dpcd , & current_level , & current_mode ,
591+ false);
592+ if (ret < 0 )
593+ return ret ;
594+
595+ drm_dbg_kms (display -> drm ,
596+ "[CONNECTOR:%d:%s] AUX VESA backlight enable is controlled through %s\n" ,
597+ connector -> base .base .id , connector -> base .name ,
598+ dpcd_vs_pwm_str (panel -> backlight .edp .vesa .info .aux_enable ));
599+ drm_dbg_kms (display -> drm ,
600+ "[CONNECTOR:%d:%s] AUX VESA backlight level is controlled through %s\n" ,
601+ connector -> base .base .id , connector -> base .name ,
602+ dpcd_vs_pwm_str (panel -> backlight .edp .vesa .info .aux_set ));
603+
604+ if (!panel -> backlight .edp .vesa .info .aux_set ||
605+ !panel -> backlight .edp .vesa .info .aux_enable ) {
606+ ret = panel -> backlight .pwm_funcs -> setup (connector , pipe );
607+ if (ret < 0 ) {
608+ drm_err (display -> drm ,
609+ "[CONNECTOR:%d:%s] Failed to setup PWM backlight controls for eDP backlight: %d\n" ,
610+ connector -> base .base .id , connector -> base .name , ret );
611+ return ret ;
612+ }
613+ }
614+
615+ if (panel -> backlight .edp .vesa .info .luminance_set ) {
588616 if (luminance_range -> max_luminance ) {
589- panel -> backlight .max = luminance_range -> max_luminance ;
617+ panel -> backlight .max = panel -> backlight . edp . vesa . info . max ;
590618 panel -> backlight .min = luminance_range -> min_luminance ;
591619 } else {
592620 panel -> backlight .max = 512 ;
@@ -597,56 +625,26 @@ static int intel_dp_aux_vesa_setup_backlight(struct intel_connector *connector,
597625 drm_dbg_kms (display -> drm ,
598626 "[CONNECTOR:%d:%s] AUX VESA Nits backlight level is controlled through DPCD\n" ,
599627 connector -> base .base .id , connector -> base .name );
600- } else {
601- ret = drm_edp_backlight_init (& intel_dp -> aux , & panel -> backlight .edp .vesa .info ,
602- luminance_range -> max_luminance ,
603- panel -> vbt .backlight .pwm_freq_hz ,
604- intel_dp -> edp_dpcd , & current_level , & current_mode ,
605- false);
606- if (ret < 0 )
607- return ret ;
608-
609- drm_dbg_kms (display -> drm ,
610- "[CONNECTOR:%d:%s] AUX VESA backlight enable is controlled through %s\n" ,
611- connector -> base .base .id , connector -> base .name ,
612- dpcd_vs_pwm_str (panel -> backlight .edp .vesa .info .aux_enable ));
613- drm_dbg_kms (display -> drm ,
614- "[CONNECTOR:%d:%s] AUX VESA backlight level is controlled through %s\n" ,
615- connector -> base .base .id , connector -> base .name ,
616- dpcd_vs_pwm_str (panel -> backlight .edp .vesa .info .aux_set ));
617-
618- if (!panel -> backlight .edp .vesa .info .aux_set ||
619- !panel -> backlight .edp .vesa .info .aux_enable ) {
620- ret = panel -> backlight .pwm_funcs -> setup (connector , pipe );
621- if (ret < 0 ) {
622- drm_err (display -> drm ,
623- "[CONNECTOR:%d:%s] Failed to setup PWM backlight controls for eDP backlight: %d\n" ,
624- connector -> base .base .id , connector -> base .name , ret );
625- return ret ;
626- }
628+ } else if (panel -> backlight .edp .vesa .info .aux_set ) {
629+ panel -> backlight .max = panel -> backlight .edp .vesa .info .max ;
630+ panel -> backlight .min = 0 ;
631+ if (current_mode == DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD ) {
632+ panel -> backlight .level = current_level ;
633+ panel -> backlight .enabled = panel -> backlight .level != 0 ;
634+ } else {
635+ panel -> backlight .level = panel -> backlight .max ;
636+ panel -> backlight .enabled = false;
627637 }
628-
629- if (panel -> backlight .edp .vesa .info .aux_set ) {
630- panel -> backlight .max = panel -> backlight .edp .vesa .info .max ;
631- panel -> backlight .min = 0 ;
632- if (current_mode == DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD ) {
633- panel -> backlight .level = current_level ;
634- panel -> backlight .enabled = panel -> backlight .level != 0 ;
635- } else {
636- panel -> backlight .level = panel -> backlight .max ;
637- panel -> backlight .enabled = false;
638- }
638+ } else {
639+ panel -> backlight .max = panel -> backlight .pwm_level_max ;
640+ panel -> backlight .min = panel -> backlight .pwm_level_min ;
641+ if (current_mode == DP_EDP_BACKLIGHT_CONTROL_MODE_PWM ) {
642+ panel -> backlight .level =
643+ panel -> backlight .pwm_funcs -> get (connector , pipe );
644+ panel -> backlight .enabled = panel -> backlight .pwm_enabled ;
639645 } else {
640- panel -> backlight .max = panel -> backlight .pwm_level_max ;
641- panel -> backlight .min = panel -> backlight .pwm_level_min ;
642- if (current_mode == DP_EDP_BACKLIGHT_CONTROL_MODE_PWM ) {
643- panel -> backlight .level =
644- panel -> backlight .pwm_funcs -> get (connector , pipe );
645- panel -> backlight .enabled = panel -> backlight .pwm_enabled ;
646- } else {
647- panel -> backlight .level = panel -> backlight .max ;
648- panel -> backlight .enabled = false;
649- }
646+ panel -> backlight .level = panel -> backlight .max ;
647+ panel -> backlight .enabled = false;
650648 }
651649 }
652650
0 commit comments