linux/drivers/gpu/drm/msm
Jeykumar Sankaran 25fdd5933e drm/msm: Add SDM845 DPU support
SDM845 SoC includes the Mobile Display Sub System (MDSS) which is a
top level wrapper consisting of Display Processing Unit (DPU) and
display peripheral modules such as Display Serial Interface (DSI)
and DisplayPort (DP).

MDSS functions essentially as a back-end composition engine. It blends
video and graphic images stored in the frame buffers and scans out the
composed image to a display sink (over DSI/DP).

The following diagram represents hardware blocks for a simple pipeline
(two planes are present on a given crtc which is connected to a DSI
connector):

       MDSS
      +---------------------------------+
      | +-----------------------------+ |
      | | DPU                         | |
      | |  +--------+  +--------+     | |
      | |  |  SSPP  |  |  SSPP  |     | |
      | |  +----+---+  +----+---+     | |
      | |       |           |         | |
      | |  +----v-----------v---+     | |
      | |  |  Layer Mixer (LM)  |     | |
      | |  +--------------------+     | |
      | |  +--------------------+     | |
      | |  |    PingPong (PP)   |     | |
      | |  +--------------------+     | |
      | |  +--------------------+     | |
      | |  |  INTERFACE (VIDEO) |     | |
      | |  +---+----------------+     | |
      | +------|----------------------+ |
      |        |                        |
      | +------|---------------------+  |
      | |      | DISPLAY PERIPHERALS |  |
      | |  +---v-+      +-----+      |  |
      | |  | DSI |      |  DP |      |  |
      | |  +-----+      +-----+      |  |
      | +----------------------------+  |
      +---------------------------------+

The number of DPU sub-blocks (i.e. SSPPs, LMs, PP blocks and INTFs)
depends on SoC capabilities.

Overview of DPU sub-blocks:
---------------------------
* Source Surface Processor (SSPP):
 Refers to any of hardware pipes like ViG, DMA etc. Only ViG pipes are
 capable of performing format conversion, scaling and quality improvement
 for source surfaces.

* Layer Mixer (LM):
 Blend source surfaces together (in requested zorder)

* PingPong (PP):
 This block controls frame done interrupt output, EOL and EOF generation,
 overflow/underflow control.

* Display interface (INTF):
 Timing generator and interface connecting the display peripherals.

DRM components mapping to DPU architecture:
------------------------------------------
PLANEs maps to SSPPs
CRTC maps to LMs
Encoder maps to PPs, INTFs

Data flow setup:
---------------
MDSS hardware can support various data flows (e.g.):
  - Dual pipe: Output from two LMs combined to single display.
  - Split display: Output from two LMs connected to two separate
                   interfaces.

The hardware capabilities determine the number of concurrent data paths
possible. Any control path (i.e. pipeline w/i DPU) can be routed to any
of the hardware data paths. A given control path can be triggered,
flushed and controlled independently.

Changes in v3:
- Move msm_media_info.h from uapi to dpu/ subdir
- Remove preclose callback dpu (it's handled in core)
- Fix kbuild warnings with parent_ops
- Remove unused functions from dpu_core_irq
- Rename mdss_phys to mdss
- Rename mdp_phys address space to mdp
- Drop _phys from vbif and regdma binding names

Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
Signed-off-by: Archit Taneja <architt@codeaurora.org>
Signed-off-by: Chandan Uddaraju <chandanu@codeaurora.org>
Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org>
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
Signed-off-by: Rajesh Yadav <ryadav@codeaurora.org>
Signed-off-by: Sravanthi Kollukuduru <skolluku@codeaurora.org>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
[robclark minor rebase]
Signed-off-by: Rob Clark <robdclark@gmail.com>
2018-07-26 10:45:04 -04:00
..
adreno drm/msm/gpu: Increase the pm runtime autosuspend for 5xx 2018-07-25 07:51:04 -04:00
disp drm/msm: Add SDM845 DPU support 2018-07-26 10:45:04 -04:00
dsi drm/msm: higher values of pclk can exceed 32 bits when multiplied by a factor 2018-07-26 10:40:15 -04:00
edp drm: drop _mode_ from drm_mode_connector_attach_encoder 2018-07-13 18:40:27 +02:00
hdmi drm: drop _mode_ from drm_mode_connector_attach_encoder 2018-07-13 18:40:27 +02:00
Kconfig drm/msm/dsi: Add skeleton 10nm PHY/PLL code 2018-02-20 10:41:20 -05:00
Makefile drm/msm: Add SDM845 DPU support 2018-07-26 10:45:04 -04:00
msm_atomic.c drm/msm: Add .commit() callback to msm_kms functions 2018-07-26 10:40:16 -04:00
msm_debugfs.c drm/msm: Don't setup control node debugfs files 2018-05-03 21:26:10 +02:00
msm_debugfs.h drm/msm: Remove msm_debugfs_cleanup() 2017-03-08 11:24:45 +01:00
msm_drv.c drm/msm: Add SDM845 DPU support 2018-07-26 10:45:04 -04:00
msm_drv.h drm/msm: Add SDM845 DPU support 2018-07-26 10:45:04 -04:00
msm_fb.c drm/msm: Add modifier to mdp_get_format arguments 2018-06-03 16:48:59 -04:00
msm_fbdev.c drm/msm: don't deref error pointer in the msm_fbdev_create error path 2018-06-03 16:49:00 -04:00
msm_fence.c drm/msm: Support multiple ringbuffers 2017-10-28 11:01:36 -04:00
msm_fence.h drm/msm: strip out msm_fence_cb 2018-03-19 06:33:35 -04:00
msm_gem_prime.c drm/msm: Expose our reservation object when exporting a dmabuf. 2017-05-27 13:48:26 -04:00
msm_gem_shrinker.c drm/msm: Separate locking of buffer resources from struct_mutex 2017-06-17 08:03:07 -04:00
msm_gem_submit.c drm/msm: add sudo flag to submit ioctl 2018-02-20 10:41:20 -05:00
msm_gem_vma.c drm/msm: Pass the correct aperture end to drm_mm_init 2018-02-20 10:41:22 -05:00
msm_gem.c drm/msm: Fix possible null dereference on failure of get_pages() 2018-06-03 16:48:59 -04:00
msm_gem.h drm/msm: add sudo flag to submit ioctl 2018-02-20 10:41:20 -05:00
msm_gpu.c drm/msm/gpu: Set number of clocks to 0 if the list allocation fails 2018-02-20 10:41:22 -05:00
msm_gpu.h drm/msm: add a5xx specific debugfs 2018-02-20 10:41:20 -05:00
msm_iommu.c drm/msm: pm runtime support for iommu 2017-04-08 06:59:31 -04:00
msm_kms.h drm/msm: Add SDM845 DPU support 2018-07-26 10:45:04 -04:00
msm_mmu.h drm/msm: let gpu wire up it's own fault handler 2017-02-06 11:28:42 -05:00
msm_perf.c drm/msm: Remove msm_debugfs_cleanup() 2017-03-08 11:24:45 +01:00
msm_rd.c Linux 4.14-rc7 2017-11-02 12:40:41 +10:00
msm_ringbuffer.c drm/msm: Replace gem_object deprecated functions 2018-02-20 10:41:21 -05:00
msm_ringbuffer.h drm/msm: Implement preemption for A5XX targets 2017-10-28 11:01:38 -04:00
msm_submitqueue.c drm/msm: Support multiple ringbuffers 2017-10-28 11:01:36 -04:00
NOTES