Skip to content

Commit e13af51

Browse files
committed
drm/i915/backlight: Use drm helper to initialize edp backlight
Now that drm_edp_backlight init has been modified to take into account the setup of lumininace based brightness manipulation we can just use that. --v2 -Fix commit message [Arun] Signed-off-by: Suraj Kandpal <[email protected]> Reviewed-by: Arun R Murthy <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent ba02bf8 commit e13af51

File tree

1 file changed

+48
-50
lines changed

1 file changed

+48
-50
lines changed

drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c

Lines changed: 48 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)