linux_dsm_epyc7002/drivers/gpu/drm
Enric Balletbo i Serra 46f206304d drm/bridge: ps8640: Rework power state handling
The get_edid() callback can be triggered anytime by an ioctl, i.e

  drm_mode_getconnector (ioctl)
    -> drm_helper_probe_single_connector_modes
       -> drm_bridge_connector_get_modes
          -> ps8640_bridge_get_edid

Actually if the bridge pre_enable() function was not called before
get_edid(), the driver will not be able to get the EDID properly and
display will not work until a second get_edid() call is issued and if
pre_enable() is called before. The side effect of this, for example, is
that you see anything when `Frecon` starts, neither the splash screen,
until the graphical session manager starts.

To fix this we need to make sure that all we need is enabled before
reading the EDID. This means the following:

1. If get_edid() is called before having the device powered we need to
   power on the device. In such case, the driver will power off again the
   device.

2. If get_edid() is called after having the device powered, all should
   just work. We added a powered flag in order to avoid recurrent calls
   to ps8640_bridge_poweron() and unneeded delays.

3. This seems to be specific for this device, but we need to make sure
   the panel is powered on before do a power on cycle on this device.
   Otherwise the device fails to retrieve the EDID.

Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Tested-by: Bilal Wasim <bwasim.lkml@gmail.com>
Acked-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200827085911.944899-2-enric.balletbo@collabora.com
2020-09-15 15:12:24 +02:00
..
amd drm/atomic-helper: Remove the timestamping constant update from drm_atomic_helper_update_legacy_modeset_state() 2020-09-14 22:37:31 +03:00
arc
arm Linux 5.9-rc4 2020-09-08 14:41:40 +10:00
armada drm/armada: Don't use drm_device->dev_private 2020-09-11 10:47:19 +02:00
aspeed drm/aspeed: Use managed drmm_mode_config_cleanup 2020-09-11 10:47:19 +02:00
ast Linux 5.9-rc4 2020-09-08 14:41:40 +10:00
atmel-hlcdc
bochs
bridge drm/bridge: ps8640: Rework power state handling 2020-09-15 15:12:24 +02:00
etnaviv Merge drm/drm-next into drm-misc-next 2020-09-14 18:11:40 +02:00
exynos Linux 5.9-rc4 2020-09-08 14:41:40 +10:00
fsl-dcu Linux 5.9-rc4 2020-09-08 14:41:40 +10:00
gma500 drm/gma500: Constify static structs 2020-09-01 15:30:27 +02:00
hisilicon drm/hisilicon: Removed the dependency on the mmu 2020-08-30 20:35:55 -04:00
i2c
i810 drm/i810: make i810_flush_queue() return void 2020-09-11 10:54:17 +02:00
i915 drm/i915: Drop the drm_atomic_helper_calc_timestamping_constants() call 2020-09-14 22:37:31 +03:00
imx Merge drm/drm-next into drm-misc-next 2020-09-14 18:11:40 +02:00
ingenic gpu/drm: ingenic: Add option to mmap GEM buffers cached 2020-09-15 01:32:26 +02:00
lib
lima
mcde
mediatek
meson treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
mga
mgag200 drm/mgag200: fix spelling mistake "expeced" -> "expected" 2020-08-27 11:17:52 +02:00
msm Merge drm/drm-next into drm-misc-next 2020-09-14 18:11:40 +02:00
mxsfb
nouveau drm/atomic-helper: Remove the timestamping constant update from drm_atomic_helper_update_legacy_modeset_state() 2020-09-14 22:37:31 +03:00
omapdrm Linux 5.9-rc4 2020-09-08 14:41:40 +10:00
panel drm/panel: s6e63m0: Add missing MODULE_LICENSE 2020-09-10 08:53:06 +02:00
panfrost drm/panfrost: Ensure GPU quirks are always initialised 2020-09-10 14:12:33 +01:00
pl111
qxl Merge drm/drm-next into drm-misc-next 2020-09-14 18:11:40 +02:00
r128
radeon Merge drm/drm-next into drm-misc-next 2020-09-14 18:11:40 +02:00
rcar-du
rockchip drm: allow limiting the scatter list size. 2020-09-09 07:58:56 +02:00
savage treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
scheduler Merge tag 'amd-drm-next-5.10-2020-09-03' of git://people.freedesktop.org/~agd5f/linux into drm-next 2020-09-08 16:40:13 +10:00
selftests
shmobile
sis
sti Linux 5.9-rc4 2020-09-08 14:41:40 +10:00
stm
sun4i Linux 5.9-rc5 2020-09-14 17:19:11 +02:00
tdfx
tegra Merge drm/drm-next into drm-misc-next 2020-09-14 18:11:40 +02:00
tidss drm/tidss: implement WA for AM65xx erratum i2000 2020-08-21 15:17:05 +03:00
tilcdc treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
tiny
ttm Merge drm/drm-next into drm-misc-next 2020-09-14 18:11:40 +02:00
tve200 drm/tve200: Stabilize enable/disable 2020-09-03 21:14:09 +02:00
udl
v3d
vboxvideo drm/vboxvideo: Use drm_gem_vram_vmap() interfaces 2020-09-14 09:12:24 +02:00
vc4 drm/vc4: Fix bitwise OR versus ternary operator in vc4_plane_mode_set 2020-09-11 11:30:20 +02:00
vgem drm/vgem: Use devm_drm_dev_alloc 2020-09-11 10:47:19 +02:00
via treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
virtio drm/virtio: add virtio_gpu_cmd_unref_resource error handling 2020-09-15 13:30:53 +02:00
vkms drm/vkms: Use devm_drm_dev_alloc 2020-09-11 10:47:19 +02:00
vmwgfx drm/ttm: nuke memory type flags 2020-09-11 13:31:23 +02:00
xen Merge drm/drm-next into drm-misc-next 2020-09-14 18:11:40 +02:00
xlnx Merge drm/drm-next into drm-misc-next 2020-09-14 18:11:40 +02:00
zte
drm_agpsupport.c
drm_atomic_helper.c drm/atomic-helper: Remove the timestamping constant update from drm_atomic_helper_update_legacy_modeset_state() 2020-09-14 22:37:31 +03:00
drm_atomic_state_helper.c
drm_atomic_uapi.c
drm_atomic.c
drm_auth.c
drm_blend.c
drm_bridge_connector.c drm/bridge_connector: Set default status connected for eDP connectors 2020-08-26 19:11:41 +02:00
drm_bridge.c
drm_bufs.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
drm_cache.c
drm_client_modeset.c
drm_client.c
drm_color_mgmt.c
drm_connector.c drm: Replace mode->export_head with a boolean 2020-09-01 13:38:34 +03:00
drm_context.c
drm_crtc_helper_internal.h
drm_crtc_helper.c
drm_crtc_internal.h
drm_crtc.c Linux 5.9-rc2 2020-08-25 11:00:02 +02:00
drm_damage_helper.c
drm_debugfs_crc.c drm/crc-debugfs: Fix memleak in crc_control_write 2020-09-01 09:45:44 +02:00
drm_debugfs.c
drm_dma.c
drm_dp_aux_dev.c
drm_dp_cec.c
drm_dp_dual_mode_helper.c
drm_dp_helper.c Merge tag 'topic/nouveau-i915-dp-helpers-and-cleanup-2020-08-31-1' of git://anongit.freedesktop.org/drm/drm-misc into drm-next 2020-09-09 12:27:13 +10:00
drm_dp_mst_topology_internal.h
drm_dp_mst_topology.c Merge drm/drm-next into drm-misc-next 2020-09-14 18:11:40 +02:00
drm_drv.c drm/managed: Cleanup of unused functions and polishing docs 2020-09-03 16:25:06 +02:00
drm_dsc.c
drm_dumb_buffers.c
drm_edid_load.c
drm_edid.c
drm_encoder_slave.c
drm_encoder.c
drm_fb_cma_helper.c
drm_fb_helper.c
drm_file.c
drm_flip_work.c
drm_format_helper.c
drm_fourcc.c
drm_framebuffer.c gpu/drm: cleanup coding style a bit 2020-09-09 11:45:18 +02:00
drm_gem_cma_helper.c
drm_gem_framebuffer_helper.c
drm_gem_shmem_helper.c drm: allow limiting the scatter list size. 2020-09-09 07:58:56 +02:00
drm_gem_ttm_helper.c drm/ttm: merge offset and base in ttm_bus_placement 2020-09-08 10:43:30 +02:00
drm_gem_vram_helper.c drm: fix double free for gbo in drm_gem_vram_init and drm_gem_vram_create 2020-09-14 14:28:47 +02:00
drm_gem.c
drm_hashtab.c
drm_hdcp.c
drm_internal.h
drm_ioc32.c
drm_ioctl.c
drm_irq.c
drm_kms_helper_common.c
drm_lease.c
drm_legacy_misc.c
drm_legacy.h
drm_lock.c
drm_managed.c drm/managed: Cleanup of unused functions and polishing docs 2020-09-03 16:25:06 +02:00
drm_memory.c
drm_mipi_dbi.c
drm_mipi_dsi.c
drm_mm.c
drm_mode_config.c
drm_mode_object.c
drm_modes.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
drm_modeset_helper.c
drm_modeset_lock.c
drm_of.c
drm_panel_orientation_quirks.c
drm_panel.c
drm_pci.c
drm_plane_helper.c
drm_plane.c Linux 5.9-rc2 2020-08-25 11:00:02 +02:00
drm_prime.c drm: allow limiting the scatter list size. 2020-09-09 07:58:56 +02:00
drm_print.c
drm_probe_helper.c
drm_property.c
drm_rect.c
drm_scatter.c
drm_scdc_helper.c
drm_self_refresh_helper.c
drm_simple_kms_helper.c
drm_syncobj.c
drm_sysfs.c
drm_trace_points.c
drm_trace.h
drm_vblank_work.c
drm_vblank.c drm/atomic-helper: Remove the timestamping constant update from drm_atomic_helper_update_legacy_modeset_state() 2020-09-14 22:37:31 +03:00
drm_vm.c
drm_vma_manager.c
drm_writeback.c
Kconfig
Makefile drm/imx: compile imx directory by default 2020-09-09 16:39:48 +02:00