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
47 * DP AUX registers for Intel's proprietary HDR backlight interface. We define
111 /* Intel EDP backlight callbacks */
129 "[CONNECTOR:%d:%s] Detected %s HDR backlight interface version %d\n", in intel_dp_aux_supports_hdr_backlight()
142 * do not use Intel proprietary eDP backlight control if we in intel_dp_aux_supports_hdr_backlight()
152 …DR static metadata. Possible support for Intel HDR backlight interface is not used. If your backli… in intel_dp_aux_supports_hdr_backlight()
158 panel->backlight.edp.intel_cap.sdr_uses_aux = in intel_dp_aux_supports_hdr_backlight()
160 panel->backlight.edp.intel_cap.supports_2084_decode = in intel_dp_aux_supports_hdr_backlight()
162 panel->backlight.edp.intel_cap.supports_2020_gamut = in intel_dp_aux_supports_hdr_backlight()
164 panel->backlight.edp.intel_cap.supports_segmented_backlight = in intel_dp_aux_supports_hdr_backlight()
166 panel->backlight.edp.intel_cap.supports_sdp_colorimetry = in intel_dp_aux_supports_hdr_backlight()
168 panel->backlight.edp.intel_cap.supports_tone_mapping = in intel_dp_aux_supports_hdr_backlight()
185 "[CONNECTOR:%d:%s] Failed to read current backlight mode from DPCD\n", in intel_dp_aux_hdr_get_backlight()
191 if (!panel->backlight.edp.intel_cap.sdr_uses_aux) { in intel_dp_aux_hdr_get_backlight()
192 u32 pwm_level = panel->backlight.pwm_funcs->get(connector, pipe); in intel_dp_aux_hdr_get_backlight()
197 /* Assume 100% brightness if backlight controls aren't enabled yet */ in intel_dp_aux_hdr_get_backlight()
198 return panel->backlight.max; in intel_dp_aux_hdr_get_backlight()
249 panel->backlight.edp.intel_cap.sdr_uses_aux) { in intel_dp_aux_hdr_set_backlight()
292 * According to spec segmented backlight needs to be set whenever panel is in in intel_dp_aux_fill_hdr_tcon_params()
303 if (panel->backlight.edp.intel_cap.supports_2020_gamut && in intel_dp_aux_fill_hdr_tcon_params()
309 if (panel->backlight.edp.intel_cap.supports_sdp_colorimetry && in intel_dp_aux_fill_hdr_tcon_params()
333 "[CONNECTOR:%d:%s] Failed to read current backlight control mode: %d\n", in intel_dp_aux_hdr_enable_backlight()
340 panel->backlight.edp.intel_cap.sdr_uses_aux) { in intel_dp_aux_hdr_enable_backlight()
347 panel->backlight.pwm_funcs->enable(crtc_state, conn_state, pwm_level); in intel_dp_aux_hdr_enable_backlight()
372 /* Nothing to do for AUX based backlight controls */ in intel_dp_aux_hdr_disable_backlight()
373 if (panel->backlight.edp.intel_cap.sdr_uses_aux) in intel_dp_aux_hdr_disable_backlight()
377 panel->backlight.pwm_funcs->disable(conn_state, intel_backlight_invert_pwm_level(connector, 0)); in intel_dp_aux_hdr_disable_backlight()
394 buf[0] = panel->backlight.min & 0xFF; in intel_dp_aux_write_panel_luminance_override()
395 buf[1] = (panel->backlight.min & 0xFF00) >> 8; in intel_dp_aux_write_panel_luminance_override()
396 buf[2] = panel->backlight.max & 0xFF; in intel_dp_aux_write_panel_luminance_override()
397 buf[3] = (panel->backlight.max & 0xFF00) >> 8; in intel_dp_aux_write_panel_luminance_override()
418 "[CONNECTOR:%d:%s] SDR backlight is controlled through %s\n", in intel_dp_aux_hdr_setup_backlight()
420 dpcd_vs_pwm_str(panel->backlight.edp.intel_cap.sdr_uses_aux)); in intel_dp_aux_hdr_setup_backlight()
422 if (!panel->backlight.edp.intel_cap.sdr_uses_aux) { in intel_dp_aux_hdr_setup_backlight()
423 ret = panel->backlight.pwm_funcs->setup(connector, pipe); in intel_dp_aux_hdr_setup_backlight()
426 "[CONNECTOR:%d:%s] Failed to setup SDR backlight controls through PWM: %d\n", in intel_dp_aux_hdr_setup_backlight()
433 panel->backlight.max = luminance_range->max_luminance; in intel_dp_aux_hdr_setup_backlight()
434 panel->backlight.min = luminance_range->min_luminance; in intel_dp_aux_hdr_setup_backlight()
436 panel->backlight.max = 512; in intel_dp_aux_hdr_setup_backlight()
437 panel->backlight.min = 0; in intel_dp_aux_hdr_setup_backlight()
443 "[CONNECTOR:%d:%s] Using AUX HDR interface for backlight control (range %d..%d)\n", in intel_dp_aux_hdr_setup_backlight()
445 panel->backlight.min, panel->backlight.max); in intel_dp_aux_hdr_setup_backlight()
447 panel->backlight.level = intel_dp_aux_hdr_get_backlight(connector, pipe); in intel_dp_aux_hdr_setup_backlight()
448 panel->backlight.enabled = panel->backlight.level != 0; in intel_dp_aux_hdr_setup_backlight()
453 /* VESA backlight callbacks */
462 if (panel->backlight.edp.vesa.luminance_control_support) { in intel_dp_aux_vesa_get_backlight()
476 return connector->panel.backlight.level; in intel_dp_aux_vesa_get_backlight()
511 if (panel->backlight.edp.vesa.luminance_control_support) { in intel_dp_aux_vesa_set_backlight()
516 if (!panel->backlight.edp.vesa.info.aux_set) { in intel_dp_aux_vesa_set_backlight()
522 drm_edp_backlight_set_level(&intel_dp->aux, &panel->backlight.edp.vesa.info, level); in intel_dp_aux_vesa_set_backlight()
534 if (panel->backlight.edp.vesa.luminance_control_support) { in intel_dp_aux_vesa_enable_backlight()
545 if (!panel->backlight.edp.vesa.info.aux_enable) { in intel_dp_aux_vesa_enable_backlight()
548 if (!panel->backlight.edp.vesa.info.aux_set) in intel_dp_aux_vesa_enable_backlight()
552 panel->backlight.pwm_level_max); in intel_dp_aux_vesa_enable_backlight()
554 panel->backlight.pwm_funcs->enable(crtc_state, conn_state, pwm_level); in intel_dp_aux_vesa_enable_backlight()
557 drm_edp_backlight_enable(&intel_dp->aux, &panel->backlight.edp.vesa.info, level); in intel_dp_aux_vesa_enable_backlight()
567 if (panel->backlight.edp.vesa.luminance_control_support) in intel_dp_aux_vesa_disable_backlight()
570 drm_edp_backlight_disable(&intel_dp->aux, &panel->backlight.edp.vesa.info); in intel_dp_aux_vesa_disable_backlight()
572 if (!panel->backlight.edp.vesa.info.aux_enable) in intel_dp_aux_vesa_disable_backlight()
573 panel->backlight.pwm_funcs->disable(old_conn_state, in intel_dp_aux_vesa_disable_backlight()
588 if (panel->backlight.edp.vesa.luminance_control_support) { in intel_dp_aux_vesa_setup_backlight()
590 panel->backlight.max = luminance_range->max_luminance; in intel_dp_aux_vesa_setup_backlight()
591 panel->backlight.min = luminance_range->min_luminance; in intel_dp_aux_vesa_setup_backlight()
593 panel->backlight.max = 512; in intel_dp_aux_vesa_setup_backlight()
594 panel->backlight.min = 0; in intel_dp_aux_vesa_setup_backlight()
596 panel->backlight.level = intel_dp_aux_vesa_get_backlight(connector, 0); in intel_dp_aux_vesa_setup_backlight()
597 panel->backlight.enabled = panel->backlight.level != 0; in intel_dp_aux_vesa_setup_backlight()
599 "[CONNECTOR:%d:%s] AUX VESA Nits backlight level is controlled through DPCD\n", in intel_dp_aux_vesa_setup_backlight()
602 ret = drm_edp_backlight_init(&intel_dp->aux, &panel->backlight.edp.vesa.info, in intel_dp_aux_vesa_setup_backlight()
603 panel->vbt.backlight.pwm_freq_hz, intel_dp->edp_dpcd, in intel_dp_aux_vesa_setup_backlight()
609 "[CONNECTOR:%d:%s] AUX VESA backlight enable is controlled through %s\n", in intel_dp_aux_vesa_setup_backlight()
611 dpcd_vs_pwm_str(panel->backlight.edp.vesa.info.aux_enable)); in intel_dp_aux_vesa_setup_backlight()
613 "[CONNECTOR:%d:%s] AUX VESA backlight level is controlled through %s\n", in intel_dp_aux_vesa_setup_backlight()
615 dpcd_vs_pwm_str(panel->backlight.edp.vesa.info.aux_set)); in intel_dp_aux_vesa_setup_backlight()
617 if (!panel->backlight.edp.vesa.info.aux_set || in intel_dp_aux_vesa_setup_backlight()
618 !panel->backlight.edp.vesa.info.aux_enable) { in intel_dp_aux_vesa_setup_backlight()
619 ret = panel->backlight.pwm_funcs->setup(connector, pipe); in intel_dp_aux_vesa_setup_backlight()
622 "[CONNECTOR:%d:%s] Failed to setup PWM backlight controls for eDP backlight: %d\n", in intel_dp_aux_vesa_setup_backlight()
628 if (panel->backlight.edp.vesa.info.aux_set) { in intel_dp_aux_vesa_setup_backlight()
629 panel->backlight.max = panel->backlight.edp.vesa.info.max; in intel_dp_aux_vesa_setup_backlight()
630 panel->backlight.min = 0; in intel_dp_aux_vesa_setup_backlight()
632 panel->backlight.level = current_level; in intel_dp_aux_vesa_setup_backlight()
633 panel->backlight.enabled = panel->backlight.level != 0; in intel_dp_aux_vesa_setup_backlight()
635 panel->backlight.level = panel->backlight.max; in intel_dp_aux_vesa_setup_backlight()
636 panel->backlight.enabled = false; in intel_dp_aux_vesa_setup_backlight()
639 panel->backlight.max = panel->backlight.pwm_level_max; in intel_dp_aux_vesa_setup_backlight()
640 panel->backlight.min = panel->backlight.pwm_level_min; in intel_dp_aux_vesa_setup_backlight()
642 panel->backlight.level = in intel_dp_aux_vesa_setup_backlight()
643 panel->backlight.pwm_funcs->get(connector, pipe); in intel_dp_aux_vesa_setup_backlight()
644 panel->backlight.enabled = panel->backlight.pwm_enabled; in intel_dp_aux_vesa_setup_backlight()
646 panel->backlight.level = panel->backlight.max; in intel_dp_aux_vesa_setup_backlight()
647 panel->backlight.enabled = false; in intel_dp_aux_vesa_setup_backlight()
653 "[CONNECTOR:%d:%s] Using AUX VESA interface for backlight control\n", in intel_dp_aux_vesa_setup_backlight()
668 "[CONNECTOR:%d:%s] AUX Luminance Based Backlight Control Supported!\n", in intel_dp_aux_supports_vesa_backlight()
670 panel->backlight.edp.vesa.luminance_control_support = true; in intel_dp_aux_supports_vesa_backlight()
676 "[CONNECTOR:%d:%s] AUX Backlight Control Supported!\n", in intel_dp_aux_supports_vesa_backlight()
714 switch (panel->vbt.backlight.type) { in intel_dp_aux_init_backlight_funcs()
726 if (panel->vbt.backlight.type != INTEL_BACKLIGHT_VESA_EDP_AUX_INTERFACE) in intel_dp_aux_init_backlight_funcs()
744 * Since Intel has their own backlight control interface, the majority of machines out there in intel_dp_aux_init_backlight_funcs()
745 * using DPCD backlight controls with Intel GPUs will be using this interface as opposed to in intel_dp_aux_init_backlight_funcs()
751 * interfaces, the VESA backlight interface will stop working once we've programmed the in intel_dp_aux_init_backlight_funcs()
753 * backlight interface at all. This means that the only sensible way for us to detect both in intel_dp_aux_init_backlight_funcs()
758 drm_dbg_kms(dev, "[CONNECTOR:%d:%s] Using Intel proprietary eDP backlight controls\n", in intel_dp_aux_init_backlight_funcs()
760 panel->backlight.funcs = &intel_dp_hdr_bl_funcs; in intel_dp_aux_init_backlight_funcs()
765 drm_dbg_kms(dev, "[CONNECTOR:%d:%s] Using VESA eDP backlight controls\n", in intel_dp_aux_init_backlight_funcs()
767 panel->backlight.funcs = &intel_dp_vesa_bl_funcs; in intel_dp_aux_init_backlight_funcs()