Lines Matching full:backlight

27  * backlight through DP AUX can actually use two different interfaces: Intel's
28 * proprietary DP AUX backlight interface, and the standard VESA backlight
30 * advertise support for the standard VESA backlight interface when they
31 * don't properly support it. However, on these systems the Intel backlight
33 * usually just indicate that they use PWM backlight controls in their VBIOS
49 * DP AUX registers for Intel's proprietary HDR backlight interface. We define
113 /* Intel EDP backlight callbacks */
133 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] Detected %s HDR backlight interface version %d\n", in intel_dp_aux_supports_hdr_backlight()
143 * do not use Intel proprietary eDP backlight control if we in intel_dp_aux_supports_hdr_backlight()
153 …DR static metadata. Possible support for Intel HDR backlight interface is not used. If your backli… in intel_dp_aux_supports_hdr_backlight()
159 panel->backlight.edp.intel.sdr_uses_aux = in intel_dp_aux_supports_hdr_backlight()
175 drm_err(&i915->drm, "[CONNECTOR:%d:%s] Failed to read current backlight mode from DPCD\n", in intel_dp_aux_hdr_get_backlight()
181 if (!panel->backlight.edp.intel.sdr_uses_aux) { in intel_dp_aux_hdr_get_backlight()
182 u32 pwm_level = panel->backlight.pwm_funcs->get(connector, pipe); in intel_dp_aux_hdr_get_backlight()
187 /* Assume 100% brightness if backlight controls aren't enabled yet */ in intel_dp_aux_hdr_get_backlight()
188 return panel->backlight.max; in intel_dp_aux_hdr_get_backlight()
224 if (panel->backlight.edp.intel.sdr_uses_aux) { in intel_dp_aux_hdr_set_backlight()
248 drm_err(&i915->drm, "[CONNECTOR:%d:%s] Failed to read current backlight control mode: %d\n", in intel_dp_aux_hdr_enable_backlight()
254 if (panel->backlight.edp.intel.sdr_uses_aux) { in intel_dp_aux_hdr_enable_backlight()
260 panel->backlight.pwm_funcs->enable(crtc_state, conn_state, pwm_level); in intel_dp_aux_hdr_enable_backlight()
277 /* Nothing to do for AUX based backlight controls */ in intel_dp_aux_hdr_disable_backlight()
278 if (panel->backlight.edp.intel.sdr_uses_aux) in intel_dp_aux_hdr_disable_backlight()
282 panel->backlight.pwm_funcs->disable(conn_state, intel_backlight_invert_pwm_level(connector, 0)); in intel_dp_aux_hdr_disable_backlight()
299 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] SDR backlight is controlled through %s\n", in intel_dp_aux_hdr_setup_backlight()
301 dpcd_vs_pwm_str(panel->backlight.edp.intel.sdr_uses_aux)); in intel_dp_aux_hdr_setup_backlight()
303 if (!panel->backlight.edp.intel.sdr_uses_aux) { in intel_dp_aux_hdr_setup_backlight()
304 ret = panel->backlight.pwm_funcs->setup(connector, pipe); in intel_dp_aux_hdr_setup_backlight()
307 "[CONNECTOR:%d:%s] Failed to setup SDR backlight controls through PWM: %d\n", in intel_dp_aux_hdr_setup_backlight()
314 panel->backlight.max = luminance_range->max_luminance; in intel_dp_aux_hdr_setup_backlight()
315 panel->backlight.min = luminance_range->min_luminance; in intel_dp_aux_hdr_setup_backlight()
317 panel->backlight.max = 512; in intel_dp_aux_hdr_setup_backlight()
318 panel->backlight.min = 0; in intel_dp_aux_hdr_setup_backlight()
321 …drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] Using AUX HDR interface for backlight control (range %d… in intel_dp_aux_hdr_setup_backlight()
323 panel->backlight.min, panel->backlight.max); in intel_dp_aux_hdr_setup_backlight()
326 panel->backlight.level = intel_dp_aux_hdr_get_backlight(connector, pipe); in intel_dp_aux_hdr_setup_backlight()
327 panel->backlight.enabled = panel->backlight.level != 0; in intel_dp_aux_hdr_setup_backlight()
332 /* VESA backlight callbacks */
335 return connector->panel.backlight.level; in intel_dp_aux_vesa_get_backlight()
345 if (!panel->backlight.edp.vesa.info.aux_set) { in intel_dp_aux_vesa_set_backlight()
351 drm_edp_backlight_set_level(&intel_dp->aux, &panel->backlight.edp.vesa.info, level); in intel_dp_aux_vesa_set_backlight()
362 if (!panel->backlight.edp.vesa.info.aux_enable) { in intel_dp_aux_vesa_enable_backlight()
365 if (!panel->backlight.edp.vesa.info.aux_set) in intel_dp_aux_vesa_enable_backlight()
369 panel->backlight.pwm_level_max); in intel_dp_aux_vesa_enable_backlight()
371 panel->backlight.pwm_funcs->enable(crtc_state, conn_state, pwm_level); in intel_dp_aux_vesa_enable_backlight()
374 drm_edp_backlight_enable(&intel_dp->aux, &panel->backlight.edp.vesa.info, level); in intel_dp_aux_vesa_enable_backlight()
384 drm_edp_backlight_disable(&intel_dp->aux, &panel->backlight.edp.vesa.info); in intel_dp_aux_vesa_disable_backlight()
386 if (!panel->backlight.edp.vesa.info.aux_enable) in intel_dp_aux_vesa_disable_backlight()
387 panel->backlight.pwm_funcs->disable(old_conn_state, in intel_dp_aux_vesa_disable_backlight()
400 ret = drm_edp_backlight_init(&intel_dp->aux, &panel->backlight.edp.vesa.info, in intel_dp_aux_vesa_setup_backlight()
401 panel->vbt.backlight.pwm_freq_hz, intel_dp->edp_dpcd, in intel_dp_aux_vesa_setup_backlight()
406 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] AUX VESA backlight enable is controlled through %s\n", in intel_dp_aux_vesa_setup_backlight()
408 dpcd_vs_pwm_str(panel->backlight.edp.vesa.info.aux_enable)); in intel_dp_aux_vesa_setup_backlight()
409 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] AUX VESA backlight level is controlled through %s\n", in intel_dp_aux_vesa_setup_backlight()
411 dpcd_vs_pwm_str(panel->backlight.edp.vesa.info.aux_set)); in intel_dp_aux_vesa_setup_backlight()
413 if (!panel->backlight.edp.vesa.info.aux_set || !panel->backlight.edp.vesa.info.aux_enable) { in intel_dp_aux_vesa_setup_backlight()
414 ret = panel->backlight.pwm_funcs->setup(connector, pipe); in intel_dp_aux_vesa_setup_backlight()
417 "[CONNECTOR:%d:%s] Failed to setup PWM backlight controls for eDP backlight: %d\n", in intel_dp_aux_vesa_setup_backlight()
423 if (panel->backlight.edp.vesa.info.aux_set) { in intel_dp_aux_vesa_setup_backlight()
424 panel->backlight.max = panel->backlight.edp.vesa.info.max; in intel_dp_aux_vesa_setup_backlight()
425 panel->backlight.min = 0; in intel_dp_aux_vesa_setup_backlight()
427 panel->backlight.level = current_level; in intel_dp_aux_vesa_setup_backlight()
428 panel->backlight.enabled = panel->backlight.level != 0; in intel_dp_aux_vesa_setup_backlight()
430 panel->backlight.level = panel->backlight.max; in intel_dp_aux_vesa_setup_backlight()
431 panel->backlight.enabled = false; in intel_dp_aux_vesa_setup_backlight()
434 panel->backlight.max = panel->backlight.pwm_level_max; in intel_dp_aux_vesa_setup_backlight()
435 panel->backlight.min = panel->backlight.pwm_level_min; in intel_dp_aux_vesa_setup_backlight()
437 panel->backlight.level = panel->backlight.pwm_funcs->get(connector, pipe); in intel_dp_aux_vesa_setup_backlight()
438 panel->backlight.enabled = panel->backlight.pwm_enabled; in intel_dp_aux_vesa_setup_backlight()
440 panel->backlight.level = panel->backlight.max; in intel_dp_aux_vesa_setup_backlight()
441 panel->backlight.enabled = false; in intel_dp_aux_vesa_setup_backlight()
445 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] Using AUX VESA interface for backlight control\n", in intel_dp_aux_vesa_setup_backlight()
458 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] AUX Backlight Control Supported!\n", in intel_dp_aux_supports_vesa_backlight()
496 switch (panel->vbt.backlight.type) { in intel_dp_aux_init_backlight_funcs()
508 if (panel->vbt.backlight.type != INTEL_BACKLIGHT_VESA_EDP_AUX_INTERFACE) in intel_dp_aux_init_backlight_funcs()
522 * Since Intel has their own backlight control interface, the majority of machines out there in intel_dp_aux_init_backlight_funcs()
523 * using DPCD backlight controls with Intel GPUs will be using this interface as opposed to in intel_dp_aux_init_backlight_funcs()
529 * interfaces, the VESA backlight interface will stop working once we've programmed the in intel_dp_aux_init_backlight_funcs()
531 * backlight interface at all. This means that the only sensible way for us to detect both in intel_dp_aux_init_backlight_funcs()
535 drm_dbg_kms(dev, "[CONNECTOR:%d:%s] Using Intel proprietary eDP backlight controls\n", in intel_dp_aux_init_backlight_funcs()
537 panel->backlight.funcs = &intel_dp_hdr_bl_funcs; in intel_dp_aux_init_backlight_funcs()
542 drm_dbg_kms(dev, "[CONNECTOR:%d:%s] Using VESA eDP backlight controls\n", in intel_dp_aux_init_backlight_funcs()
544 panel->backlight.funcs = &intel_dp_vesa_bl_funcs; in intel_dp_aux_init_backlight_funcs()