1
0
Fork 0
alistair23-linux/drivers/gpu/drm
Linus Walleij ec219f1ba2 drm/panel: s6e63m0: Order enable/disable sequence
The upstream S6E63M0 driver has some peculiarities around
the prepare/enable disable/unprepare sequence: the screen
is taken out of sleep in prepare() as part of
s6e63m0_init() the put to on with MIPI_DCS_SET_DISPLAY_ON
in enable().

However it is just put into sleep mode directly in
disable(). As disable()/enable() can be called without
unprepare()/prepare() being called, this is unbalanced,
we should take the display out of sleep in enable()
then turn it off().

Further MIPI_DCS_SET_DISPLAY_OFF is never called
balanced with MIPI_DCS_SET_DISPLAY_ON.

The vendor driver for Samsung GT-I8190 (Golden) does all
of these things in strict order.

Augment the driver to do exit sleep/set display on in
enable() and set display off/enter sleep in disable().

Further send an explicit reset pulse in power_on() so we
come up in a known state, and issue the MCS_ERROR_CHECK
command after setting display on like the vendor driver
does. Also use the timings from the vendor driver in
the sequence.

Doing all of these things makes the display much more
stable on the Samsung GT-I8190 when enabling/disabling
the display pipeline.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
Cc: Stephan Gerhold <stephan@gerhold.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20200817213906.88207-1-linus.walleij@linaro.org
2020-09-05 01:28:11 +02:00
..
amd drm/amdgpu/ttm: remove unused parameter to move blit 2020-08-31 12:41:50 +10:00
arc drm/arc: Set GEM CMA functions with DRM_GEM_CMA_DRIVER_OPS 2020-06-10 09:02:03 +02:00
arm drm/malidp: Use struct drm_gem_object_funcs.get_sg_table internally 2020-08-18 15:26:32 +02:00
armada drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
aspeed Linux 5.8-rc6 2020-07-24 08:48:05 +10:00
ast drm: ast: fix double __iomem sparse warning 2020-08-19 09:14:40 +02:00
atmel-hlcdc drm/atomic-helper: reset vblank on crtc reset 2020-07-02 20:25:51 +02:00
bochs Linux 5.8 2020-08-11 11:58:31 +10:00
bridge drm/bridge: Fix the dsi remote end-points 2020-08-29 23:02:34 +02:00
etnaviv Merge branch 'etnaviv/next' of https://git.pengutronix.de/git/lst/linux into drm-next 2020-07-23 15:28:10 +10:00
exynos Linux 5.9-rc1 2020-08-18 14:14:25 +02:00
fsl-dcu drm: Remove unnecessary drm_panel_attach and drm_panel_detach 2020-08-08 09:06:33 +02: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 sound updates for 5.9 2020-08-06 14:27:31 -07:00
i810 drm/i810: switch from 'pci_' to 'dma_' API 2020-07-20 09:34:24 +02:00
i915 Linux 5.9-rc1 2020-08-18 14:14:25 +02:00
imx Merge drm/drm-next into drm-misc-next 2020-08-12 20:42:08 +02:00
ingenic drm/ingenic: ipu: Only enable clock when needed 2020-07-30 18:19:57 +02:00
lib
lima Linux 5.8 2020-08-11 11:58:31 +10:00
mcde drm/mcde: Retry DSI read/write transactions 2020-08-15 12:14:18 +02:00
mediatek drm: Remove unnecessary drm_panel_attach and drm_panel_detach 2020-08-08 09:06:33 +02:00
meson Linux 5.8-rc6 2020-07-24 08:48:05 +10:00
mga
mgag200 drm/mgag200: fix spelling mistake "expeced" -> "expected" 2020-08-27 11:17:52 +02:00
msm Linux 5.9-rc1 2020-08-18 14:14:25 +02:00
mxsfb drm: mxsfb: Support the alpha plane 2020-07-28 17:21:58 +02:00
nouveau drm/nouveau: move io_reserve_lru handling into the driver v5 2020-09-03 11:40:38 +02:00
omapdrm drm/omap: fix spelling mistake "propert" -> "property" 2020-08-21 15:15:11 +03:00
panel drm/panel: s6e63m0: Order enable/disable sequence 2020-09-05 01:28:11 +02:00
panfrost Linux 5.9-rc1 2020-08-18 14:14:25 +02:00
pl111 drm: pl111: Update documentation 2020-07-23 10:06:22 +02:00
qxl drm/ttm: init mem->bus in common code. 2020-08-24 17:00:48 +10:00
r128 drm: delete drm_pci.h 2020-04-03 17:11:41 +02:00
radeon drm/radeon/ttm: don't store driver copy of device pointer. 2020-08-31 12:42:40 +10:00
rcar-du Merge drm/drm-next into drm-misc-next 2020-08-12 20:42:08 +02:00
rockchip Linux 5.9-rc1 2020-08-18 14:14:25 +02:00
savage
scheduler This tree adds the sched_set_fifo*() encapsulation APIs to remove 2020-08-06 11:55:43 -07:00
selftests drm/mm/selftests: fix wrong return type casting 2020-06-23 15:57:30 +02:00
shmobile drm/shmobile: Set GEM CMA functions with DRM_GEM_CMA_DRIVER_OPS 2020-06-10 09:05:18 +02:00
sis
sti Linux 5.9-rc1 2020-08-18 14:14:25 +02:00
stm drm/stm: repair runtime power management 2020-07-08 11:47:01 +02:00
sun4i drm/sun4i: lvds: Invert the LVDS polarity 2020-08-27 17:55:50 +02:00
tdfx
tegra Merge drm/drm-next into drm-misc-next 2020-08-12 20:42:08 +02:00
tidss drm/tidss: implement WA for AM65xx erratum i2000 2020-08-21 15:17:05 +03:00
tilcdc drm/tilcdc: Use standard drm_atomic_helper_commit 2020-07-14 10:32:33 +02:00
tiny drm/mipi-dbi: Remove ->enabled 2020-06-24 09:17:34 +02:00
ttm drm/ttm: remove io_reserve_lru handling v3 2020-09-03 11:41:11 +02:00
tve200 drm/tve200: Set GEM CMA functions with DRM_GEM_CMA_DRIVER_OPS 2020-06-10 09:06:11 +02:00
udl drm/udl: Use GEM vmap/mmap function from SHMEM helpers 2020-06-10 10:17:21 +02:00
v3d drm/v3d: convert to use module_platform_driver 2020-08-10 15:32:00 +02:00
vboxvideo drm/vboxvideo: Replace HTTP links with HTTPS ones 2020-07-16 22:12:50 +02:00
vc4 drm/vc4: crtc: Remove the feed_txp tests 2020-07-07 10:51:58 +02:00
vgem drm/vgem: add missing platform_device_unregister() in vgem_init() 2020-08-10 15:31:02 +02:00
via
virtio drm/virtio: drop virtio_gpu_output->enabled 2020-09-02 08:09:57 +02:00
vkms drm/vkms: avoid warning in vkms_get_vblank_timestamp 2020-08-30 09:27:06 -04:00
vmwgfx drm/ttm: init mem->bus in common code. 2020-08-24 17:00:48 +10:00
xen xen: branch for v5.9-rc1b 2020-08-14 13:34:37 -07:00
xlnx drm: xlnx: zynqmp: Use switch - case for link rate downshift 2020-08-01 01:56:10 +00:00
zte sound updates for 5.9 2020-08-06 14:27:31 -07:00
Kconfig drm: xlnx: DRM/KMS driver for Xilinx ZynqMP DisplayPort Subsystem 2020-07-18 02:59:16 +03:00
Makefile Xilinx ZynqMP DisplayPort Subsystem driver 2020-07-23 15:31:38 +10:00
drm_agpsupport.c
drm_atomic.c drm : Insert blank lines after declarations. 2020-07-02 15:26:00 +02:00
drm_atomic_helper.c drm: bridge: Pass drm_display_info to drm_bridge_funcs .mode_valid() 2020-06-23 19:53:27 +02:00
drm_atomic_state_helper.c drm/atomic-helper: reset vblank on crtc reset 2020-07-02 20:25:51 +02:00
drm_atomic_uapi.c drm : Insert blank lines after declarations. 2020-07-02 15:26:00 +02:00
drm_auth.c drm/auth: make drm_{set,drop}master_ioctl symmetrical 2020-06-15 14:49:50 +01:00
drm_blend.c drm: plane: Verify that no or all planes have a zpos property 2020-05-14 02:10:52 +03:00
drm_bridge.c drm: bridge: Pass drm_display_info to drm_bridge_funcs .mode_valid() 2020-06-23 19:53:27 +02:00
drm_bridge_connector.c drm/bridge_connector: Set default status connected for eDP connectors 2020-08-26 19:11:41 +02:00
drm_bufs.c drm : Insert blank lines after declarations. 2020-07-02 15:26:00 +02:00
drm_cache.c
drm_client.c drm/client: Add drm_client_framebuffer_flush() 2020-05-26 13:31:01 +02:00
drm_client_modeset.c drm: Nuke mode->vrefresh 2020-05-27 14:31:42 +03:00
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: context: Clean up documentation 2020-03-16 09:23:55 +01:00
drm_crtc.c drm : Insert blank lines after declarations. 2020-07-02 15:26:00 +02:00
drm_crtc_helper.c drm : Insert blank lines after declarations. 2020-07-02 15:26:00 +02:00
drm_crtc_helper_internal.h drm/probe_helper: Add drm_connector_helper_funcs.mode_valid_ctx 2020-07-13 13:29:20 -04:00
drm_crtc_internal.h drm: convert .debugfs_init() hook to return void. 2020-03-18 17:53:28 +01:00
drm_damage_helper.c
drm_debugfs.c drm/debug: Expose connector VRR monitor range via debugfs 2020-06-25 15:47:14 -07:00
drm_debugfs_crc.c drm/crc-debugfs: Fix memleak in crc_control_write 2020-09-01 09:45:44 +02:00
drm_dma.c drm: delete drm_pci.h 2020-04-03 17:11:41 +02:00
drm_dp_aux_dev.c
drm_dp_cec.c
drm_dp_dual_mode_helper.c
drm_dp_helper.c drm: report dp downstream port type as a subconnector property 2020-08-11 14:06:04 +02:00
drm_dp_mst_topology.c drm/dp_mst: Support remote i2c writes 2020-09-01 12:18:13 +03:00
drm_dp_mst_topology_internal.h
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.c drm next for 5.9-rc1 2020-08-05 19:50:06 -07:00
drm_edid_load.c
drm_encoder.c
drm_encoder_slave.c drm: encoder_slave: use new I2C API 2020-06-19 09:20:21 +02:00
drm_fb_cma_helper.c drm: Fix misspellings of "Analog Devices" 2020-04-21 08:15:03 +02:00
drm_fb_helper.c Linux 5.8 2020-08-11 11:58:31 +10:00
drm_file.c drm : Insert blank lines after declarations. 2020-07-02 15:26:00 +02:00
drm_flip_work.c
drm_format_helper.c drm/format-helper: Add drm_fb_swab() 2020-05-26 13:33:08 +02:00
drm_fourcc.c drm: drm_fourcc: add NV15, Q410, Q401 YUV formats 2020-06-19 13:33:40 +01:00
drm_framebuffer.c drm : Insert blank lines after declarations. 2020-07-02 15:26:00 +02:00
drm_gem.c * backmerge from drm-fixes at v5.8-rc7 2020-08-11 12:00:30 +10:00
drm_gem_cma_helper.c drm: core: Convert device logging to drm_* functions. 2020-07-20 09:34:24 +02:00
drm_gem_framebuffer_helper.c drm: remove _unlocked suffix in drm_gem_object_put_unlocked 2020-05-19 22:31:31 +01:00
drm_gem_shmem_helper.c drm/shmem-helper: Only dma-buf imports are private obj 2020-06-16 19:11:51 +02:00
drm_gem_ttm_helper.c drm: remove _unlocked suffix in drm_gem_object_put_unlocked 2020-05-19 22:31:31 +01:00
drm_gem_vram_helper.c drm/ttm: init mem->bus in common code. 2020-08-24 17:00:48 +10:00
drm_hashtab.c
drm_hdcp.c drm: Fix HDCP failures when SRM fw is missing 2020-05-05 14:01:53 -04:00
drm_internal.h drm/vblank: Add vblank works 2020-07-16 18:16:31 -04:00
drm_ioc32.c drm : Insert blank lines after declarations. 2020-07-02 15:26:00 +02:00
drm_ioctl.c drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
drm_irq.c drm: use drm_dev_has_vblank more 2020-05-29 12:58:11 +02:00
drm_kms_helper_common.c
drm_lease.c drm : Insert blank lines after declarations. 2020-07-02 15:26:00 +02:00
drm_legacy.h
drm_legacy_misc.c
drm_lock.c drm : Insert blank lines after declarations. 2020-07-02 15:26:00 +02:00
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 Linux 5.8 2020-08-11 11:58:31 +10:00
drm_mipi_dsi.c drm: mipi-dsi: Convert logging to drm_* functions. 2020-07-10 20:21:45 +02:00
drm_mm.c drm/mm: cleanup and improve next_hole_*_addr() 2020-06-23 15:46:40 +02:00
drm_mode_config.c drm : Insert blank lines after declarations. 2020-07-02 15:26:00 +02:00
drm_mode_object.c drm: Replace drm_modeset_lock/unlock_all with DRM_MODESET_LOCK_ALL_* helpers 2020-05-05 10:51:56 +02:00
drm_modes.c drm: Replace HTTP links with HTTPS ones 2020-07-20 11:47:28 +02:00
drm_modeset_helper.c
drm_modeset_lock.c
drm_of.c Linux 5.8 2020-08-11 11:58:31 +10:00
drm_panel.c drm/panel: Add helper for reading DT rotation 2020-08-16 17:12:18 +02:00
drm_panel_orientation_quirks.c drm: Added orientation quirk for ASUS tablet model T103HAF 2020-08-04 11:45:23 +02:00
drm_pci.c drm : Insert blank lines after declarations. 2020-07-02 15:26:00 +02:00
drm_plane.c drm : Insert blank lines after declarations. 2020-07-02 15:26:00 +02:00
drm_plane_helper.c
drm_prime.c drm : Insert blank lines after declarations. 2020-07-02 15:26:00 +02:00
drm_print.c
drm_probe_helper.c Merge tag 'drm-intel-next-2020-07-15' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2020-07-31 14:42:37 +10:00
drm_property.c
drm_rect.c
drm_scatter.c gpu/drm: remove the powerpc hack in drm_legacy_sg_alloc 2020-06-02 10:59:11 -07:00
drm_scdc_helper.c
drm_self_refresh_helper.c
drm_simple_kms_helper.c drm/simple-kms: Fix documentation for drm_simple_encoder_init() 2020-03-06 09:24:29 +01:00
drm_syncobj.c drm/syncobj: Tune down unordered timeline DRM_ERROR 2020-08-02 15:22:31 +02:00
drm_sysfs.c drm/connector: notify userspace on hotplug after register complete 2020-06-03 10:24:23 +02:00
drm_trace.h
drm_trace_points.c
drm_vblank.c drm/vblank: Use spin_(un)lock_irq() in drm_crtc_queue_sequence_ioctl() 2020-07-21 11:08:35 -04:00
drm_vblank_work.c This tree adds the sched_set_fifo*() encapsulation APIs to remove 2020-08-06 11:55:43 -07:00
drm_vm.c drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
drm_vma_manager.c
drm_writeback.c drm/writeback: don't set fence->ops to default 2020-05-20 20:03:45 +02:00