linux-stable/drivers/gpu/drm
Paul Kocialkowski efeeaefe9b drm: Add support for the LogiCVC display controller
Introduces a driver for the LogiCVC display controller, a programmable
logic controller optimized for use in Xilinx Zynq-7000 SoCs and other
Xilinx FPGAs. The controller is mostly configured at logic synthesis
time so only a subset of configuration is left for the driver to
handle.

The following features are implemented and tested:
- LVDS 4-bit interface;
- RGB565 pixel formats;
- Multiple layers and hardware composition;
- Layer-wide alpha mode;

The following features are implemented but untested:
- Other RGB pixel formats;
- Layer framebuffer configuration for version 4;
- Lowest-layer used as background color;
- Per-pixel alpha mode.

The following features are not implemented:
- YUV pixel formats;
- DVI, LVDS 3-bit, ITU656 and camera link interfaces;
- External parallel input for layer;
- Color-keying;
- LUT-based alpha modes.

Additional implementation-specific notes:
- Panels are only enabled after the first page flip to avoid flashing a
  white screen.
- Depth used in context of the LogiCVC driver only counts color components
  to match the definition of the synthesis parameters.

Support is implemented for both version 3 and 4 of the controller.

With version 3, framebuffers are stored in a dedicated contiguous
memory area, with a base address hardcoded for each layer. This requires
using a dedicated CMA pool registered at the base address and tweaking a
few offset-related registers to try to use any buffer allocated from
the pool. This is done on a best-effort basis to have the hardware cope
with the DRM framebuffer allocation model and there is no guarantee
that each buffer allocated by GEM CMA can be used for any layer.
In particular, buffers allocated below the base address for a layer are
guaranteed not to be configurable for that layer. See the implementation of
logicvc_layer_buffer_find_setup for specifics.

Version 4 allows configuring each buffer address directly, which
guarantees that any buffer can be configured.

Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Reviewed-by: Maxime Ripard <mripard@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20220520141555.1429041-2-paul.kocialkowski@bootlin.com
2022-06-09 16:49:56 +02:00
..
amd drm/amd/display: Move connector debugfs to drm 2022-05-23 11:27:44 +03:00
arm
armada
aspeed
ast drm/ast: Support multiple outputs 2022-06-08 13:16:15 +02:00
atmel-hlcdc
bridge drm/bridge: lt9611uxc: Cancel only driver's work 2022-06-07 14:57:47 +02:00
display drm/dp: Add callbacks to make using DP AUX bus properly easier 2022-06-02 15:14:16 -07:00
etnaviv drm/etnaviv: avoid cleaning up sched_job when submit succeeded 2022-05-04 14:09:34 +02:00
exynos drm: exynos: dsi: Use child panel or bridge find helpers 2022-05-04 17:07:14 +02:00
fsl-dcu
gma500 drm/gma500: Read EDID from the correct i2c adapter 2022-06-02 10:06:51 +02:00
gud
hisilicon
hyperv drm/hyperv : Removing the restruction of VRAM allocation with PCI bar size 2022-05-30 15:25:36 -07:00
i2c
i810
i915 drm/i915/display/debug: Expose crtc current bpc via debugfs 2022-05-23 11:27:41 +03:00
imx
ingenic
kmb
lib
lima
logicvc drm: Add support for the LogiCVC display controller 2022-06-09 16:49:56 +02:00
mcde Revert "drm: bridge: mcde_dsi: Switch to devm_drm_of_get_bridge" 2022-05-04 17:06:31 +02:00
mediatek
meson drm/meson: encoder_hdmi: Fix refcount leak in meson_encoder_hdmi_init 2022-06-07 14:25:16 +02:00
mga
mgag200 drm/mgag200: Include <linux/vmalloc.h> for G200 BIOS code 2022-06-09 11:18:21 +02:00
msm Linux 5.18-rc5 2022-05-03 16:08:48 +10:00
mxsfb drm: mxsfb: Implement LCDIF scanout CRC32 support 2022-05-05 01:03:49 +02:00
nouveau drm/nouveau/bios: Rename prom_init() and friends functions 2022-06-08 16:50:40 -04:00
omapdrm
panel drm/panel: nt36672a: add backlight support 2022-06-08 23:36:40 +05:30
panfrost drm/panfrost: Add arm,mali-valhall-jm compatible 2022-05-26 09:53:40 -04:00
pl111
qxl drm/qxl: remove qxl_log_level global 2022-06-09 07:30:12 +02:00
r128 drm/r128: Fix undefined behavior due to shift overflowing the constant 2022-05-21 18:02:47 +02:00
radeon Linux 5.18-rc5 2022-05-03 16:08:48 +10:00
rcar-du
rockchip drm/rockchip: vop2: unlock on error path in vop2_crtc_atomic_enable() 2022-05-15 21:53:37 +02:00
savage
scheduler drm/scheduler: Don't kill jobs in interrupt context 2022-05-17 10:06:41 -04:00
selftests
shmobile
sis
solomon drm/ssd130x: Only define a SPI device ID table when built as a module 2022-06-02 00:35:32 +02:00
sprd
sti
stm
sun4i Merge drm/drm-next into drm-misc-next 2022-05-03 11:53:42 +02:00
tdfx
tegra
tidss
tilcdc
tiny drm/bochs: Explicitly include linux/module.h 2022-06-09 07:30:12 +02:00
ttm drm/ttm: move default BO destructor into VMWGFX v2 2022-05-09 14:49:50 +02:00
tve200
udl drm/udl: Set VGA connector 2022-05-18 06:52:03 +02:00
v3d
vboxvideo
vc4 Merge drm/drm-next into drm-misc-next 2022-05-03 11:53:42 +02:00
vgem
via
virtio drm/virtio: Fix NULL vs IS_ERR checking in virtio_gpu_object_shmem_init 2022-06-09 07:30:13 +02:00
vkms drm/vkms: Update vkms_composer_worker documentation 2022-05-25 17:40:44 +02:00
vmwgfx drm/ttm: move default BO destructor into VMWGFX v2 2022-05-09 14:49:50 +02:00
xen
xlnx
drm_agpsupport.c
drm_aperture.c
drm_atomic_helper.c
drm_atomic_state_helper.c
drm_atomic_uapi.c drm: handle kernel fences in drm_gem_plane_helper_prepare_fb v2 2022-05-02 09:01:51 +02:00
drm_atomic.c
drm_auth.c
drm_blend.c
drm_bridge_connector.c
drm_bridge.c drm/bridge: Add devm_drm_bridge_add() 2022-06-02 15:15:10 -07:00
drm_buddy.c
drm_bufs.c
drm_cache.c
drm_client_modeset.c drm/client: Don't add new command-line mode 2022-05-16 13:43:24 +02:00
drm_client.c
drm_color_mgmt.c drm: fix typo in comment 2022-05-04 14:09:34 +02:00
drm_connector.c
drm_context.c
drm_crtc_helper_internal.h
drm_crtc_helper.c
drm_crtc_internal.h
drm_crtc.c
drm_damage_helper.c
drm_debugfs_crc.c
drm_debugfs.c drm/debug: Expose connector's max supported bpc via debugfs 2022-05-23 11:27:36 +03:00
drm_displayid.c drm/displayid: convert to drm_edid 2022-05-13 18:55:13 +03:00
drm_dma.c
drm_drv.c
drm_dumb_buffers.c
drm_edid_load.c
drm_edid.c drm/edid: convert version_greater() to drm_edid 2022-05-13 18:55:17 +03:00
drm_encoder_slave.c
drm_encoder.c drm: use ENOMEM for drmm_kzalloc allocation failures 2022-05-25 17:39:49 +02:00
drm_fb_cma_helper.c
drm_fb_helper.c fbdev: Rename pagelist to pagereflist for deferred I/O 2022-05-03 16:04:22 +02:00
drm_file.c
drm_flip_work.c
drm_format_helper.c drm/format-helper: Share implementation among conversion helpers 2022-05-05 08:54:09 +02:00
drm_fourcc.c
drm_framebuffer.c
drm_gem_atomic_helper.c drm/gem: Ignore color planes that are unused by framebuffer format 2022-05-19 19:25:02 +02:00
drm_gem_cma_helper.c drm/cma-helper: Describe what a "contiguous chunk" actually means 2022-06-08 17:36:15 +02:00
drm_gem_framebuffer_helper.c drm/gem: Warn on trying to use a non-existing framebuffer plane 2022-05-19 19:25:23 +02:00
drm_gem_shmem_helper.c
drm_gem_ttm_helper.c
drm_gem_vram_helper.c drm/gem-vram: Ignore planes that are unused by framebuffer format 2022-05-19 19:25:19 +02:00
drm_gem.c
drm_hashtab.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: Add DRM-managed mutex_init() 2022-05-05 09:04:10 +02:00
drm_memory.c
drm_mipi_dbi.c drm/mipi-dbi: align max_chunk to 2 in spi_transfer 2022-05-30 13:41:09 +02:00
drm_mipi_dsi.c
drm_mm.c
drm_mode_config.c
drm_mode_object.c
drm_modes.c drm: Always warn if user-defined modes are not supported 2022-05-16 13:42:49 +02:00
drm_modeset_helper.c
drm_modeset_lock.c
drm_nomodeset.c
drm_of.c
drm_panel_orientation_quirks.c
drm_panel.c
drm_pci.c
drm_plane_helper.c
drm_plane.c
drm_prime.c
drm_print.c
drm_privacy_screen_x86.c
drm_privacy_screen.c
drm_probe_helper.c drm/probe-helper: Default to 640x480 if no EDID on DP 2022-06-06 13:09:44 -07:00
drm_property.c
drm_rect.c
drm_scatter.c
drm_self_refresh_helper.c
drm_simple_kms_helper.c
drm_syncobj.c drm: use dma_fence_unwrap_merge() in drm_syncobj 2022-05-30 14:30:36 +02:00
drm_sysfs.c
drm_trace_points.c
drm_trace.h
drm_vblank_work.c
drm_vblank.c
drm_vm.c
drm_vma_manager.c
drm_writeback.c
Kconfig drm: Add support for the LogiCVC display controller 2022-06-09 16:49:56 +02:00
Makefile drm: Add support for the LogiCVC display controller 2022-06-09 16:49:56 +02:00