• Kevin Tang's avatar
    drm/sprd: add Unisoc's drm display controller driver · b07bcf34
    Kevin Tang authored
    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
    b07bcf34
sprd_dpu.c 21.9 KB