linux_dsm_epyc7002/drivers/gpu/drm/i915/display
Lyude Paul 662884a9ad drm/i915: Fix DPCD register order in intel_dp_aux_enable_backlight()
For eDP panels, it appears it's expected that so long as the panel is in
DPCD control mode that the brightness value is never set to 0. Instead,
if the desired effect is to set the panel's backlight to 0 we're
expected to simply turn off the backlight through the
DP_EDP_DISPLAY_CONTROL_REGISTER.

We already do the latter correctly in intel_dp_aux_disable_backlight().
But, we make the mistake of writing the DPCD registers in the wrong
order when enabling the backlight in intel_dp_aux_enable_backlight()
since we currently enable the backlight through
DP_EDP_DISPLAY_CONTROL_REGISTER before writing the brightness level. On
the X1 Extreme 2nd Generation, this appears to have the potential of
confusing the panel in such a way that further attempts to set the
brightness don't actually change the backlight as expected and leave it
off. Presumably, this happens because the incorrect register writing
order briefly leaves the panel with DPCD mode enabled and a 0 brightness
level set.

So, reverse the order we write the DPCD registers when enabling the
panel backlight so that we write the brightness value first, and enable
the backlight second. This fix appears to be the final bit needed to get
the backlight on the ThinkPad X1 Extreme 2nd Generation's AMOLED screen
working.

Tested-by: AceLan Kao <acelan.kao@canonical.com>
Tested-by: Perry Yuan <pyuan@redhat.com>
Signed-off-by: Lyude Paul <lyude@redhat.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200116211623.53799-4-lyude@redhat.com
2020-01-17 13:41:06 +02:00
..
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
icl_dsi.c drm/i915: Pass intel_encoder to enc_to_*() 2020-01-13 20:10:51 +02:00
intel_acpi.c
intel_acpi.h
intel_atomic_plane.c drm/i915: Make sure CCS YUV semiplanar format checks work 2019-12-23 13:51:02 +02:00
intel_atomic_plane.h
intel_atomic.c drm/i915/display: Force the state compute phase once to enable PSR 2020-01-08 08:12:01 -08:00
intel_atomic.h drm/i915/tgl: Select master transcoder for MST stream 2019-12-23 09:26:41 -08:00
intel_audio.c drm/i915: Use the passed in encoder 2020-01-13 20:12:46 +02:00
intel_audio.h
intel_bios.c drm/i915/vbt: Rename BDB_LVDS_POWER to BDB_LFP_POWER 2020-01-14 12:38:59 -08:00
intel_bios.h drm/i915/bios: add support for querying DSC details for encoder 2019-12-11 07:39:47 +02:00
intel_bw.c drm/i915/display: cleanup intel_bw_state on i915 module removal 2019-12-24 15:01:50 +05:30
intel_bw.h drm/i915/display: cleanup intel_bw_state on i915 module removal 2019-12-24 15:01:50 +05:30
intel_cdclk.c drm/i915: Bump up CDCLK to eliminate underruns on TGL 2020-01-13 13:44:11 +02:00
intel_cdclk.h
intel_color.c drm/i915: Preload LUTs if the hw isn't currently using them 2019-11-18 09:20:27 -08:00
intel_color.h
intel_combo_phy.c
intel_combo_phy.h
intel_connector.c
intel_connector.h
intel_crt.c drm/i915: Pass intel_connector to intel_attached_*() 2020-01-13 19:33:34 +02:00
intel_crt.h
intel_ddi.c drm/i915/dp/tgl+: Update combo phy vswing tables 2020-01-14 12:28:21 -08:00
intel_ddi.h drm/i915: Call hsw_fdi_link_train() directly() 2019-12-18 16:47:34 +02:00
intel_display_power.c drm/i915: Pass intel_encoder to enc_to_*() 2020-01-13 20:10:51 +02:00
intel_display_power.h drm/i915: fix comment for POWER_DOMAIN_TRANSCODER_VDSC_PW2 2019-12-23 11:58:49 +02:00
intel_display_types.h drm/i915: Fix eDP DPCD aux max backlight calculations 2020-01-17 13:41:00 +02:00
intel_display.c drm/i915/fbc: Move the plane state check into the fbc functions 2020-01-15 17:16:32 +02:00
intel_display.h drm/i915/tgl: Gen-12 display can decompress surfaces compressed by the media engine 2020-01-07 13:16:49 +02:00
intel_dp_aux_backlight.c drm/i915: Fix DPCD register order in intel_dp_aux_enable_backlight() 2020-01-17 13:41:06 +02:00
intel_dp_aux_backlight.h
intel_dp_link_training.c
intel_dp_link_training.h
intel_dp_mst.c drm/i915: Pass intel_encoder to enc_to_*() 2020-01-13 20:10:51 +02:00
intel_dp_mst.h drm/i915/tgl: Select master transcoder for MST stream 2019-12-23 09:26:41 -08:00
intel_dp.c drm/i915: Pass intel_encoder to enc_to_*() 2020-01-13 20:10:51 +02:00
intel_dp.h
intel_dpio_phy.c drm/i915: Pass intel_encoder to enc_to_*() 2020-01-13 20:10:51 +02:00
intel_dpio_phy.h
intel_dpll_mgr.c drm/i915: Pass intel_encoder to enc_to_*() 2020-01-13 20:10:51 +02:00
intel_dpll_mgr.h
intel_dsb.c drm/i915/dsb: fix cmd_buf being wrongly set 2019-12-02 10:06:25 -08:00
intel_dsb.h drm/i915/dsb: remove atomic operations 2019-11-18 13:27:09 -08:00
intel_dsi_dcs_backlight.c drm/i915: Pass intel_encoder to enc_to_*() 2020-01-13 20:10:51 +02:00
intel_dsi_dcs_backlight.h
intel_dsi_vbt.c drm/i915/dsi: Lookup the i2c bus from ACPI NS only if CONFIG_ACPI=y (v2) 2020-01-17 13:12:33 +02:00
intel_dsi.c
intel_dsi.h drm/i915: Pass intel_encoder to enc_to_*() 2020-01-13 20:10:51 +02:00
intel_dvo_dev.h
intel_dvo.c drm/i915: Pass intel_connector to intel_attached_*() 2020-01-13 19:33:34 +02:00
intel_dvo.h
intel_fbc.c drm/i915/fbc: Add fbc tracepoints 2020-01-15 17:19:59 +02:00
intel_fbc.h drm/i915/fbc: Move the plane state check into the fbc functions 2020-01-15 17:16:32 +02:00
intel_fbdev.c drm-misc-next for v5.6: 2019-12-17 13:57:54 +01:00
intel_fbdev.h
intel_fifo_underrun.c drm/i915: prefer 3-letter acronym for ivybridge 2019-12-28 13:38:08 -08:00
intel_fifo_underrun.h
intel_frontbuffer.c drm/i915: Hold reference to intel_frontbuffer as we track activity 2019-12-18 12:09:57 +00:00
intel_frontbuffer.h drm/i915: Hold reference to intel_frontbuffer as we track activity 2019-12-18 12:09:57 +00:00
intel_gmbus.c
intel_gmbus.h
intel_hdcp.c drm/i915/hdcp: Nuke intel_hdcp_transcoder_config() 2019-12-10 12:37:53 +02:00
intel_hdcp.h drm/i915/hdcp: Nuke intel_hdcp_transcoder_config() 2019-12-10 12:37:53 +02:00
intel_hdmi.c drm/i915: Pass intel_encoder to enc_to_*() 2020-01-13 20:10:51 +02:00
intel_hdmi.h drm/i915: Pass intel_encoder to enc_to_*() 2020-01-13 20:10:51 +02:00
intel_hotplug.c drm/i915: Pass intel_encoder to enc_to_*() 2020-01-13 20:10:51 +02:00
intel_hotplug.h
intel_lpe_audio.c
intel_lpe_audio.h
intel_lspcon.c drm/i915: Pass intel_encoder to enc_to_*() 2020-01-13 20:10:51 +02:00
intel_lspcon.h
intel_lvds.c
intel_lvds.h
intel_opregion.c drm/i915: opregion: set opregion chpd value to indicate the driver handles hotplug 2019-12-16 21:38:05 +01:00
intel_opregion.h
intel_overlay.c drm/i915/gt: Pull GT initialisation under intel_gt_init() 2019-12-22 12:51:32 +00:00
intel_overlay.h
intel_panel.c drm/i915: DSI: select correct PWM controller to use based on the VBT 2019-12-17 11:24:48 +01:00
intel_panel.h
intel_pipe_crc.c drm/i915: Pass intel_encoder to enc_to_*() 2020-01-13 20:10:51 +02:00
intel_pipe_crc.h
intel_psr.c drm/i915/psr: Share the computation of idle frames 2020-01-16 10:22:39 -08:00
intel_psr.h drm/i915/display: Force the state compute phase once to enable PSR 2020-01-08 08:12:01 -08:00
intel_quirks.c
intel_quirks.h
intel_sdvo_regs.h
intel_sdvo.c drm/i915: Pass intel_connector to intel_attached_*() 2020-01-13 19:33:34 +02:00
intel_sdvo.h
intel_sprite.c drm/i915/tgl: Gen-12 display can decompress surfaces compressed by the media engine 2020-01-07 13:16:49 +02:00
intel_sprite.h
intel_tc.c
intel_tc.h
intel_tv.c drm/i915: Pass intel_connector to intel_attached_*() 2020-01-13 19:33:34 +02:00
intel_tv.h
intel_vbt_defs.h drm/i915/vbt: Rename BDB_LVDS_POWER to BDB_LFP_POWER 2020-01-14 12:38:59 -08:00
intel_vdsc.c drm/i915: Pass intel_encoder to enc_to_*() 2020-01-13 20:10:51 +02:00
intel_vdsc.h drm/i915/dsc: add basic hardware state readout support 2019-12-11 08:16:16 +02:00
intel_vga.c
intel_vga.h
vlv_dsi_pll.c drm/i915: Pass intel_encoder to enc_to_*() 2020-01-13 20:10:51 +02:00
vlv_dsi.c drm/i915: Pass intel_encoder to enc_to_*() 2020-01-13 20:10:51 +02:00