linux/drivers/gpu/drm
Sean Paul b8a2948fa2 drm/panel: simple: Add ability to override typical timing
This patch adds the ability to override the typical display timing for a
given panel. This is useful for devices which have timing constraints
that do not apply across the entire display driver (eg: to avoid
crosstalk between panel and digitizer on certain laptops). The rules are
as follows:

- panel must not specify fixed mode (since the override mode will
  either be the same as the fixed mode, or we'll be unable to
  check the bounds of the overried)
- panel must specify at least one display_timing range which will be
  used to ensure the override mode fits within its bounds

Changes in v2:
 - Parse the full display-timings node (using the native-mode) (Rob)
Changes in v3:
 - No longer parse display-timings subnode, use panel-timing (Rob)
Changes in v4:
 - Don't add mode from timing if override was specified (Thierry)
 - Add warning if timing and fixed mode was specified (Thierry)
 - Don't add fixed mode if timing was specified (Thierry)
 - Refactor/rename a bit to avoid extra indentation from "if" tests
 - i should be unsigned (Thierry)
 - Add annoying WARN_ONs for some cases (Thierry)
 - Simplify 'No display_timing found' handling (Thierry)
 - Rename to panel_simple_parse_override_mode() (Thierry)
Changes in v5:
 - Added Heiko's Tested-by
Changes in v6:
 - Rebased to drm-misc next
 - Added tags

Cc: Doug Anderson <dianders@chromium.org>
Cc: Eric Anholt <eric@anholt.net>
Cc: Heiko Stuebner <heiko@sntech.de>
Cc: Jeffy Chen <jeffy.chen@rock-chips.com>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Stéphane Marchesin <marcheu@chromium.org>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: devicetree@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Tested-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Acked-by: Thierry Reding <thierry.reding@gmail.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20190711203455.125667-2-dianders@chromium.org
2019-07-12 07:55:46 +02:00
..
amd drm/prime: Align gem_prime_export with obj_funcs.export 2019-06-21 17:30:49 +02:00
arc drm/arc: Drop drm_gem_prime_export/import 2019-06-21 20:02:10 +02:00
arm drm/arm: Drop drm_gem_prime_export/import 2019-06-21 20:02:38 +02:00
armada drm/prime: Align gem_prime_export with obj_funcs.export 2019-06-21 17:30:49 +02:00
aspeed drm/prime: Actually remove DRIVER_PRIME everywhere 2019-06-21 17:30:32 +02:00
ast drm/ast: Replace struct ast_fbdev with generic framebuffer emulation 2019-07-09 10:25:12 +02:00
atmel-hlcdc drm/atmel: Drop drm_gem_prime_export/import 2019-06-21 20:03:05 +02:00
bochs drm/bochs: Use shadow buffer for bochs framebuffer console 2019-07-09 10:25:31 +02:00
bridge drm/bridge: ti-sn65dsi86: correct dsi mode_flags 2019-07-04 15:10:08 +02:00
cirrus drm/prime: Actually remove DRIVER_PRIME everywhere 2019-06-21 17:30:32 +02:00
etnaviv drm/etnaviv: drop DRM_AUTH usage from the driver 2019-06-26 15:00:39 +01:00
exynos Revert "drm/gem: Rename drm_gem_dumb_map_offset() to drm_gem_map_offset()" 2019-07-03 16:38:50 -06:00
fsl-dcu drm/fsl-dcu: Drop drm_gem_prime_export/import 2019-06-21 20:04:14 +02:00
gma500 Linux 5.2-rc5 2019-06-19 12:07:29 +02:00
hisilicon drm/hibmc: Update struct drm_driver for GEM object functions 2019-07-03 09:32:19 +02:00
i2c
i810
i915 drm/i915: remove irrelevant DRM_UNLOCKED flag 2019-06-26 15:00:37 +01:00
imx drm/imx: Drop drm_gem_prime_export/import 2019-06-21 20:06:14 +02:00
ingenic DRM: ingenic: Add support for panels with 8-bit serial bus 2019-07-02 00:38:57 +02:00
lib
lima drm/lima: drop DRM_AUTH usage from the driver 2019-06-26 15:00:39 +01:00
mcde drm/mcde: Fix uninitialized variable 2019-06-25 00:10:24 +02:00
mediatek drm/mediatek: Use drm_atomic_helper_wait_for_fences 2019-06-25 18:12:57 +02:00
meson drm/meson: Drop drm_gem_prime_export/import 2019-06-21 20:07:10 +02:00
mga drm/mga: drop use of drmP.h 2019-06-30 09:48:05 +02:00
mgag200 drm/mgag200: Replace struct mga_fbdev with generic framebuffer emulation 2019-07-09 10:25:47 +02:00
msm drm/msm: Use drm_gem_fb_prepare_fb 2019-06-28 00:27:59 +02:00
mxsfb drm/mxsfb: Drop drm_gem_prime_export/import 2019-06-21 20:07:41 +02:00
nouveau drm/nouveau: drop DRM_AUTH from DRM_RENDER_ALLOW ioctls 2019-06-26 15:00:40 +01:00
omapdrm drm/omap: drop DRM_AUTH from DRM_RENDER_ALLOW ioctls 2019-06-26 15:00:40 +01:00
panel drm/panel: simple: Add ability to override typical timing 2019-07-12 07:55:46 +02:00
panfrost Revert "drm/panfrost: Use drm_gem_map_offset()" 2019-07-03 16:37:12 -06:00
pl111 drm/pl111: Drop drm_gem_prime_export/import 2019-06-21 20:08:08 +02:00
qxl drm/qxl: Drop drm_gem_prime_export/import 2019-06-21 20:08:18 +02:00
r128
radeon drm/radeon: Drop drm_gem_prime_import 2019-06-21 20:11:30 +02:00
rcar-du drm/rcar-du: Drop drm_gem_prime_export/import 2019-06-21 20:08:38 +02:00
rockchip drm/rockchip: Drop drm_gem_prime_export/import 2019-06-21 20:08:56 +02:00
savage
scheduler
selftests drm/selftests: Add command line parser selftests 2019-06-19 12:17:52 +02:00
shmobile drm/shmob: Drop drm_gem_prime_export/import 2019-06-21 20:09:15 +02:00
sis
sti drm/sti: Try to fix up the tvout possible clones 2019-07-09 09:45:07 +02:00
stm drm/stm: drop use of drmP.h 2019-07-01 10:48:57 +02:00
sun4i drm/sun4i: Eliminate pointless on stack copy of drm_display_info 2019-06-24 18:34:21 +03:00
tdfx
tegra drm/tegra: remove irrelevant DRM_UNLOCKED flag 2019-06-26 15:00:37 +01:00
tilcdc drm/tilcdc: Drop drm_gem_prime_export/import 2019-06-21 20:10:46 +02:00
tinydrm drm/prime: Actually remove DRIVER_PRIME everywhere 2019-06-21 17:30:32 +02:00
ttm drm: Permit video-buffers writecombine mapping for MIPS 2019-06-18 15:41:33 -04:00
tve200 drm/tve2000: Drop drm_gem_prime_export/import 2019-06-21 20:10:55 +02:00
udl drm/prime: Align gem_prime_export with obj_funcs.export 2019-06-21 17:30:49 +02:00
v3d drm/prime: Actually remove DRIVER_PRIME everywhere 2019-06-21 17:30:32 +02:00
vboxvideo drm/vbox: Remove empty PRIME functions 2019-07-03 09:32:27 +02:00
vc4 drm/vc4: Use drm_gem_fb_prepare_fb 2019-06-28 00:27:59 +02:00
vgem drm/vgem: drop DRM_AUTH usage from the driver 2019-06-26 15:00:40 +01:00
via
virtio drm/virtio: drop DRM_AUTH usage from the driver 2019-06-26 15:00:41 +01:00
vkms drm/vkms: Rename vkms_crc.c into vkms_composer.c 2019-07-12 00:46:02 -03:00
vmwgfx drm/vmwgfx: Don't look at state->allow_modeset 2019-06-28 19:03:18 +02:00
xen drm/xen: Drop drm_gem_prime_export/import 2019-06-21 20:12:05 +02:00
zte drm/zte: Drop drm_gem_prime_export/import 2019-06-21 20:12:25 +02:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic.c drm: Add helpers to kick off self refresh mode in drivers 2019-06-13 14:31:10 -04:00
drm_atomic_helper.c Linux 5.2-rc5 2019-06-19 12:07:29 +02:00
drm_atomic_state_helper.c drm/atomic: Add a function to reset connector TV properties 2019-06-19 12:17:52 +02:00
drm_atomic_uapi.c drm: Add helpers to kick off self refresh mode in drivers 2019-06-13 14:31:10 -04:00
drm_auth.c
drm_blend.c
drm_bridge.c drm: Add atomic variants for bridge enable/disable 2019-06-13 13:00:29 -04:00
drm_bufs.c
drm_cache.c
drm_client.c drm/client: remove the exporting of drm_client_close 2019-07-09 11:34:39 +02:00
drm_client_modeset.c drm/modes: Allow to specify rotation and reflection on the commandline 2019-06-19 12:17:51 +02:00
drm_color_mgmt.c
drm_connector.c drm/connector: Fix warning in debug message 2019-06-24 15:41:02 +02:00
drm_context.c
drm_crtc.c drm: no need to check return value of debugfs_create functions 2019-06-13 16:39:16 +02:00
drm_crtc_helper.c
drm_crtc_helper_internal.h
drm_crtc_internal.h drm/atomic: Move __drm_atomic_helper_disable_plane/set_config() 2019-06-08 16:46:37 +02:00
drm_damage_helper.c
drm_debugfs.c drm: debugfs: make drm_debugfs_create_files() never fail 2019-06-14 16:59:51 +02:00
drm_debugfs_crc.c drm: no need to check return value of debugfs_create functions 2019-06-13 16:39:16 +02:00
drm_dma.c
drm_dp_aux_dev.c
drm_dp_cec.c
drm_dp_dual_mode_helper.c
drm_dp_helper.c drm/dp: Add DP_DPCD_QUIRK_NO_SINK_COUNT 2019-06-14 19:11:10 +03:00
drm_dp_mst_topology.c
drm_drv.c drm/kms: Catch mode_object lifetime errors 2019-07-10 17:17:14 +02:00
drm_dsc.c
drm_dumb_buffers.c Revert "drm/gem: Rename drm_gem_dumb_map_offset() to drm_gem_map_offset()" 2019-07-03 16:38:50 -06:00
drm_edid.c Linux 5.2-rc5 2019-06-19 12:07:29 +02:00
drm_edid_load.c
drm_encoder.c
drm_encoder_slave.c
drm_fb_cma_helper.c
drm_fb_helper.c drm/fb-helper: Instanciate shadow FB if configured in device's mode_config 2019-07-09 10:25:02 +02:00
drm_file.c drm/prime: Unconditionally set up the prime file private 2019-06-21 11:48:09 +02:00
drm_flip_work.c
drm_format_helper.c
drm_fourcc.c
drm_framebuffer.c
drm_gem.c Revert "drm/gem: Rename drm_gem_dumb_map_offset() to drm_gem_map_offset()" 2019-07-03 16:38:50 -06:00
drm_gem_cma_helper.c Linux 5.2-rc5 2019-06-19 12:07:29 +02:00
drm_gem_framebuffer_helper.c drm/fb-helper: use gem_bo.resv, not dma_buf.resv in prepare_fb 2019-06-28 00:27:59 +02:00
drm_gem_shmem_helper.c drm/gem_shmem: Use a writecombine mapping for ->vaddr 2019-06-10 09:14:01 -06:00
drm_gem_vram_helper.c drm/vram: Don't export driver callback functions for PRIME 2019-07-03 09:32:36 +02:00
drm_hashtab.c
drm_hdcp.c
drm_internal.h drm/gem: Unexport drm_gem_(un)pin/v(un)map 2019-06-17 17:37:01 +02:00
drm_ioc32.c drm/ioctl: Ditch DRM_UNLOCKED except for the legacy vblank ioctl 2019-06-21 19:13:10 +02:00
drm_ioctl.c drm/ioctl: Ditch DRM_UNLOCKED except for the legacy vblank ioctl 2019-06-21 19:13:10 +02:00
drm_irq.c
drm_kms_helper_common.c
drm_lease.c Linux 5.2-rc5 2019-06-19 12:07:29 +02:00
drm_legacy.h
drm_legacy_misc.c
drm_lock.c
drm_memory.c
drm_mipi_dsi.c
drm_mm.c drm: Allow range of 0 for drm_mm_insert_node_in_range() 2019-06-26 21:13:12 +01:00
drm_mode_config.c
drm_mode_object.c drm/kms: Catch mode_object lifetime errors 2019-07-10 17:17:14 +02:00
drm_modes.c drm: WARN on illegal aspect ratio when converting a mode to umode 2019-06-24 18:08:55 +03:00
drm_modeset_helper.c
drm_modeset_lock.c
drm_of.c
drm_panel.c
drm_panel_orientation_quirks.c drm: panel-orientation-quirks: Add quirk for GPD MicroPC 2019-06-08 15:07:06 +02:00
drm_pci.c
drm_plane.c
drm_plane_helper.c
drm_prime.c drm/prime: automatically set gem_obj->resv on import 2019-06-21 22:14:55 +02:00
drm_print.c
drm_probe_helper.c Linux 5.2-rc5 2019-06-19 12:07:29 +02:00
drm_property.c
drm_rect.c
drm_scatter.c
drm_scdc_helper.c
drm_self_refresh_helper.c drm/self_refresh: Fix possible NULL deref in failure path 2019-06-20 10:03:21 -04:00
drm_simple_kms_helper.c Linux 5.2-rc5 2019-06-19 12:07:29 +02:00
drm_syncobj.c
drm_sysfs.c Linux 5.2-rc5 2019-06-19 12:07:29 +02:00
drm_trace.h
drm_trace_points.c
drm_vblank.c drm: add debug print to update_vblank_count 2019-06-14 19:10:04 +03:00
drm_vm.c drm: Permit video-buffers writecombine mapping for MIPS 2019-06-18 15:41:33 -04:00
drm_vma_manager.c
drm_vram_helper_common.c
drm_vram_mm_helper.c
drm_writeback.c
Kconfig DRM: Add KMS driver for the Ingenic JZ47xx SoCs 2019-06-19 13:24:14 +02:00
Makefile DRM: Add KMS driver for the Ingenic JZ47xx SoCs 2019-06-19 13:24:14 +02:00