Commit b07bcf34 authored by Kevin Tang's avatar Kevin Tang Committed by Maarten Lankhorst
Browse files

drm/sprd: add Unisoc's drm display controller driver



Adds DPU(Display Processor Unit) support for the Unisoc's display
subsystem.
It's support multi planes, scaler, rotation, PQ(Picture Quality) and more.

v2:
  - Use drm_xxx to replace all DRM_XXX.
  - Use kzalloc to replace devm_kzalloc for sprd_dpu structure init.

v3:
  - Remove dpu_layer stuff layer and commit layers by aotmic_update

v4:
  - Use drmm_helpers to allocate crtc and planes.
  - Move rotation enum definitions to crtc layer reg bitfields.
  - Move allocate crtc and planes to bind function.

v5:
  - Fix the checkpatch warnings.
  - Use mode_set_nofb instead of mode_valid callback.
  - Follow the OF-Graph bindings, use of_graph_get_port_by_id
    instead of of_parse_phandle.
  - Use zpos to represent the layer position.
  - Rebase to last drm misc branch.

v6:
  - Disable and clear interrupts before register dpu IRQ
  - Init dpi config used by crtc_state->adjusted_mode on mode_set_nofb
  - Remove enable_irq and disable_irq function call.
  - Remove drm_format_info function call.

v7:
  - Remove iommu error interrupt handling function.

Cc: Orson Zhai <orsonzhai@gmail.com>
Cc: Chunyan Zhang <zhang.lyra@gmail.com>
Signed-off-by: default avatarKevin Tang <kevin.tang@unisoc.com>
Reviewed-by: default avatarMaxime Ripard <maxime@cerno.tech>
Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211207142717.30296-5-kevin3.tang@gmail.com
parent 8cae15c6
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ config DRM_SPRD
	select DRM_GEM_CMA_HELPER
	select DRM_KMS_CMA_HELPER
	select DRM_KMS_HELPER
	select VIDEOMODE_HELPERS
	help
	  Choose this option if you have a Unisoc chipset.
	  If M is selected the module will be called sprd_drm.
+2 −1
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0

obj-y := sprd_drm.o
obj-y := sprd_drm.o \
	sprd_dpu.o
+867 −0

File added.

Preview size limit exceeded, changes collapsed.

+109 −0

File added.

Preview size limit exceeded, changes collapsed.

+1 −0
Original line number Diff line number Diff line
@@ -180,6 +180,7 @@ static struct platform_driver sprd_drm_driver = {

static struct platform_driver *sprd_drm_drivers[]  = {
	&sprd_drm_driver,
	&sprd_dpu_driver,
};

static int __init sprd_drm_init(void)
Loading