[Freedreno] [RFC PULL] Add Display Support for Qualcomm SDM845
Rob Clark
robdclark at gmail.com
Tue Feb 13 20:00:09 UTC 2018
On Tue, Feb 13, 2018 at 2:18 PM, Sean Paul <seanpaul at chromium.org> wrote:
> Hi dri-devel,
> Qualcomm has been working for the past few weeks on forward porting their
> downstream drm driver from 4.14 to mainline. Please consider this PR as a
> request for review, rather than an attempt at mainlining the code as it
> currently stands. The goal is get this driver in shape over the next coming
> months.
>
> In the meantime, I'll be hosting a tree here [1] to stage the fixes. Patches
> will be posted and reviewed on linux-arm-msm at vger.kernel.org. Once things look
> good, I'll send another pull 4realz.
>
> To get the ball rolling, I've done some review on the new connector code, my
> comments are below.
>
> Thanks in advance for your constructive feedback :)
>
> Sean
>
> [1]- git://people.freedesktop.org/~seanpaul/dpu-staging
>
> Review feedback:
> ----------------
just so others aren't confused, s/sde/dpu/g in the list below (we did
our DAL->DC rename before sending first RFC :-P)
> - Solve the splash screen handling (or remove it)
> - Simplify devicetree binding (remove register offsets)
> feedback from reviewing sde_connector.c:
> - Rationalize backlight implementation in sde_connector (display_count static)
> - Sort out the dsi event passing between dsi/encoder/connector (move to encoder)
> - include/uapi/drm/msm_drm_pp.h needs opensource userspace (or removal)
> - connector->state access violations reading/writing mode_info
> - s/sde_rect/drm_rect/
> - sde_kms_info usage needs to be replaced with formal data structures (not
> stringified keypairs)
> - sde_connector_ops needs to be trimmed, duplicates connector helpers, info
> hooks circumvent state, and other hooks should be stored in state or
> prepopulated (get_dst_format)
> - sde_connector_get_dpms unused
> - esd status check should migrate to encoder from connector
> - backlight should be handled in panel drivers, not in the generic connector/dsi
> encoder
> - sde_connector_helper_bridge_disable is called from encoder and calls back into
> set_power encoder function. if backlight, and esd status are removed,
> pre_kickoff can probably go away
> - sde_connector_clk_ctrl is another example of encoder->connector->encoder call
> - RETIRE_FENCE connector property should be removed, opting for the native
> atomic fences
> - ROI (regions of interest) should be expressed per-plane instead of connector.
> there is work ongoing to support dirty_rects per-plane by Deepak Singh Rawat
> <drawat at vmware.com> and Lukasz Spintzyk <lukasz.spintzyk at displaylink.com>
> - Uma Shankar <uma.shankar at intel.com> has proposed HDR source metadata
> properties on the list, we should pivot to those instead of hand-rolling them
> in the sde driver
> - Convert HDCP implementation to upstream Content Protection property
> - Merge dsi and dsi_staging into one driver
> - Writeback connector has been proposed by ARM (Liviu Dudau and Brian Starkey),
> we should work with their proposal instead of rolling OUT_FB ourselves
> - sde_connector_set_property should be replaced with atomic helper
> - dsi hotplug can probably be punted to the panel driver
> - dpms should switch to enable/disable (or at least use the atomic helpers)
> - dsi mode handling should also defer to the panel driver
> - SDE_WB_CONFIG ioctl should be removed in favor of the existing ioctl to add
> user-defined modes
> - dp implementation should use the existing dp helpers wherever possible
> - lots of duplicated structures in dsi_defs.h that can be replaced with existing
> drm structs
> - mode_valid should be split up and implemented directly in connector/encoder as
> appropriate
> - sde_connector->aspace seems like it's unused?
>
To add to that, a few things I've noticed (but I've mostly only gotten
as far as the front-end of the pipeline, ie. dpu_plane):
- It looks like, as was the case with mdp4/mdp5 (and really most other hw)
there are still unequal capabilities for planes (ie. some can do YUV,
scaling, etc).
But drm-hwc (or weston) isn't going to know about that, so I think we'll
need to add support for dynamically assigning dpu_plane::pipe, similar
to what mdp5 does w/ plane<->hwpipe. (Which I actually added specifically
for drm-hwc ;-))
- I *think* we also need the same trick for combining mixers under one CRTC
for 4k modes too?
- in dpu_plane, and perhaps elsewhere, userspace pointers for things like CSC
and scaling coefficients need to be annotated w/ __user. (Except the should
probably be blob properties instead.. and we probably need to strip out the
custom properties and re-introduce them separately with some userspace +
review.)
- dpu_formats.c looks mostly like a superset of mdp_format.c, ie there is a
similar concept to how you describe the format to hw as mdp4/mdp5. Probably
the additions in dpu_formats should be folded back in mdp_format.
I'm not sure how we want to balance adding new features with cleanup
and hopefully removing some code. I suspect a fair chunk of dpu_plane
actually belongs in dpu_plane_state, so maybe we can handle that as
part of that cleanup.
Few more below
>
> The following changes since commit 9afe236df559d0dc6818f64e728a3f931a0a2231:
>
> drm/msm/dsi: Fix potential NULL pointer dereference in msm_dsi_modeset_init (2018-02-12 10:25:15 -0500)
>
> are available in the Git repository at:
>
> git://people.freedesktop.org/~seanpaul/dpu-staging for-next-compiles
>
> for you to fetch changes up to 672005da148f82021a62d4fa658728e19f13097e:
>
> ARM: dts: msm: add device tree changes for SDM845 (2018-02-13 13:14:43 -0500)
>
> ----------------------------------------------------------------
> Jeykumar Sankaran (9):
> dt-bindings: msm/dsi: Add mdp transfer time to msm dsi binding
> dt-bindings: msm/disp: Add bindings for Snapdragon 845 DPU
> drm: Core changes
> drm/msm: add DPU DRM driver to support SDM845
> drm/msm: Change mdp_get_format arguments
> drm/msm: Core msm changes
> drm/msm: Add DSI Staging driver
> drm/msm: Add DisplayPort support
> ARM: dts: msm: add device tree changes for SDM845
>
> Manasi Navare (1):
> drm/dp: Add HBR3 support in existing DRM DP helpers
>
> Rob Clark (1):
> drm/msm: rename mdp->disp
>
> .../devicetree/bindings/display/msm/dpu-rsc.txt | 96 +
> .../devicetree/bindings/display/msm/dpu.txt | 736 +++
> .../devicetree/bindings/display/msm/dsi.txt | 16 +
> .../devicetree/bindings/drm/msm/dpu-dp.txt | 217 +
> .../devicetree/bindings/drm/msm/dpu-dsi.txt | 102 +
> .../devicetree/bindings/drm/msm/dpu-wb.txt | 23 +
> .../devicetree/bindings/drm/msm/mdss-dsi-panel.txt | 772 +++
> .../devicetree/bindings/fb/mdss-dsi-panel.txt | 742 +++
> Documentation/devicetree/bindings/fb/mdss-pll.txt | 103 +
> .../devicetree/bindings/msm_hdcp/msm_hdcp.txt | 14 +
> arch/arm64/boot/dts/qcom/sdm845-dpu-display.dtsi | 248 +
> arch/arm64/boot/dts/qcom/sdm845-dpu.dtsi | 541 +++
> drivers/clk/qcom/mdss/mdss-pll.h | 240 +
> drivers/gpu/drm/drm_dp_helper.c | 4 +
> drivers/gpu/drm/drm_dp_mst_topology.c | 3 +
> drivers/gpu/drm/drm_edid.c | 77 +
> drivers/gpu/drm/drm_framebuffer.c | 3 +-
> drivers/gpu/drm/drm_mipi_dsi.c | 12 +-
Some of these changes in drm core need to be split out.
> drivers/gpu/drm/msm/Makefile | 98 +-
> drivers/gpu/drm/msm/disp/dpu1/dpu_ad4.h | 99 +
> .../gpu/drm/msm/disp/dpu1/dpu_color_processing.c | 1520 ++++++
> .../gpu/drm/msm/disp/dpu1/dpu_color_processing.h | 120 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_connector.c | 1381 ++++++
> drivers/gpu/drm/msm/disp/dpu1/dpu_connector.h | 581 +++
> drivers/gpu/drm/msm/disp/dpu1/dpu_core_irq.c | 640 +++
> drivers/gpu/drm/msm/disp/dpu1/dpu_core_irq.h | 192 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 818 ++++
> drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h | 144 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 5076 ++++++++++++++++++++
> drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h | 661 +++
> drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 3838 +++++++++++++++
> drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h | 220 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h | 561 +++
> .../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c | 1365 ++++++
> .../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c | 1045 ++++
> .../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c | 1369 ++++++
> drivers/gpu/drm/msm/disp/dpu1/dpu_fence.c | 404 ++
> drivers/gpu/drm/msm/disp/dpu1/dpu_fence.h | 190 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c | 1339 ++++++
> drivers/gpu/drm/msm/disp/dpu1/dpu_formats.h | 152 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ad4.c | 1443 ++++++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_blk.c | 155 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_blk.h | 53 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 3287 +++++++++++++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h | 1050 ++++
> .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h | 182 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.c | 329 ++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.h | 139 +
> .../msm/disp/dpu1/dpu_hw_color_proc_common_v4.h | 69 +
> .../gpu/drm/msm/disp/dpu1/dpu_hw_color_proc_v4.c | 242 +
> .../gpu/drm/msm/disp/dpu1/dpu_hw_color_proc_v4.h | 40 +
> .../drm/msm/disp/dpu1/dpu_hw_color_processing.h | 20 +
> .../msm/disp/dpu1/dpu_hw_color_processing_v1_7.c | 565 +++
> .../msm/disp/dpu1/dpu_hw_color_processing_v1_7.h | 92 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c | 657 +++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h | 275 ++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.c | 149 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.h | 111 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_dsc.c | 252 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_dsc.h | 100 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_dspp.c | 209 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_dspp.h | 220 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.c | 1235 +++++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.h | 289 ++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c | 373 ++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.h | 132 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c | 331 ++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h | 136 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h | 538 +++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_pingpong.c | 409 ++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_pingpong.h | 182 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_reg_dma_v1.c | 759 +++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_reg_dma_v1.h | 27 +
> .../msm/disp/dpu1/dpu_hw_reg_dma_v1_color_proc.c | 943 ++++
> .../msm/disp/dpu1/dpu_hw_reg_dma_v1_color_proc.h | 75 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_rot.c | 962 ++++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_rot.h | 192 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp.c | 1063 ++++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp.h | 574 +++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c | 461 ++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h | 227 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.c | 453 ++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h | 202 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_vbif.c | 275 ++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_vbif.h | 128 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_wb.c | 324 ++
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_wb.h | 187 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_hwio.h | 60 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_irq.c | 112 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_irq.h | 59 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 2099 ++++++++
> drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h | 547 +++
> drivers/gpu/drm/msm/disp/dpu1/dpu_kms_utils.c | 220 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 4774 ++++++++++++++++++
> drivers/gpu/drm/msm/disp/dpu1/dpu_plane.h | 296 ++
> drivers/gpu/drm/msm/disp/dpu1/dpu_reg_dma.c | 139 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_reg_dma.h | 310 ++
> drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c | 1394 ++++++
> drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h | 200 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h | 245 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c | 385 ++
> drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.h | 94 +
> drivers/gpu/drm/msm/disp/dpu1/dpu_wb.c | 781 +++
> drivers/gpu/drm/msm/disp/dpu1/dpu_wb.h | 232 +
> drivers/gpu/drm/msm/{mdp => disp}/mdp4/mdp4.xml.h | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp4/mdp4_crtc.c | 0
> .../drm/msm/{mdp => disp}/mdp4/mdp4_dsi_encoder.c | 0
> .../drm/msm/{mdp => disp}/mdp4/mdp4_dtv_encoder.c | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp4/mdp4_irq.c | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp4/mdp4_kms.c | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp4/mdp4_kms.h | 2 +-
> .../drm/msm/{mdp => disp}/mdp4/mdp4_lcdc_encoder.c | 0
> .../msm/{mdp => disp}/mdp4/mdp4_lvds_connector.c | 0
> .../gpu/drm/msm/{mdp => disp}/mdp4/mdp4_lvds_pll.c | 0
> .../gpu/drm/msm/{mdp => disp}/mdp4/mdp4_plane.c | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5.xml.h | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_cfg.c | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_cfg.h | 0
> .../drm/msm/{mdp => disp}/mdp5/mdp5_cmd_encoder.c | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_crtc.c | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_ctl.c | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_ctl.h | 0
> .../gpu/drm/msm/{mdp => disp}/mdp5/mdp5_encoder.c | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_irq.c | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_kms.c | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_kms.h | 2 +-
> drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_mdss.c | 0
> .../gpu/drm/msm/{mdp => disp}/mdp5/mdp5_mixer.c | 0
> .../gpu/drm/msm/{mdp => disp}/mdp5/mdp5_mixer.h | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_pipe.c | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_pipe.h | 0
> .../gpu/drm/msm/{mdp => disp}/mdp5/mdp5_plane.c | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_smp.c | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_smp.h | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp_common.xml.h | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp_format.c | 5 +-
> drivers/gpu/drm/msm/{mdp => disp}/mdp_kms.c | 0
> drivers/gpu/drm/msm/{mdp => disp}/mdp_kms.h | 2 +-
> drivers/gpu/drm/msm/dp/dp_audio.c | 796 +++
> drivers/gpu/drm/msm/dp/dp_audio.h | 81 +
> drivers/gpu/drm/msm/dp/dp_aux.c | 570 +++
> drivers/gpu/drm/msm/dp/dp_aux.h | 44 +
> drivers/gpu/drm/msm/dp/dp_catalog.c | 1320 +++++
> drivers/gpu/drm/msm/dp/dp_catalog.h | 163 +
> drivers/gpu/drm/msm/dp/dp_ctrl.c | 1474 ++++++
> drivers/gpu/drm/msm/dp/dp_ctrl.h | 50 +
> drivers/gpu/drm/msm/dp/dp_debug.c | 503 ++
> drivers/gpu/drm/msm/dp/dp_debug.h | 60 +
> drivers/gpu/drm/msm/dp/dp_display.c | 1262 +++++
> drivers/gpu/drm/msm/dp/dp_display.h | 52 +
> drivers/gpu/drm/msm/dp/dp_drm.c | 538 +++
> drivers/gpu/drm/msm/dp/dp_drm.h | 96 +
> drivers/gpu/drm/msm/dp/dp_hdcp2p2.c | 927 ++++
> drivers/gpu/drm/msm/dp/dp_link.c | 1548 ++++++
> drivers/gpu/drm/msm/dp/dp_link.h | 184 +
> drivers/gpu/drm/msm/dp/dp_panel.c | 531 ++
> drivers/gpu/drm/msm/dp/dp_panel.h | 116 +
> drivers/gpu/drm/msm/dp/dp_parser.c | 645 +++
> drivers/gpu/drm/msm/dp/dp_parser.h | 200 +
> drivers/gpu/drm/msm/dp/dp_power.c | 623 +++
> drivers/gpu/drm/msm/dp/dp_power.h | 58 +
> drivers/gpu/drm/msm/dp/dp_reg.h | 231 +
> drivers/gpu/drm/msm/dp/dp_usbpd.c | 491 ++
> drivers/gpu/drm/msm/dp/dp_usbpd.h | 101 +
> drivers/gpu/drm/msm/dpu_dbg.c | 3325 +++++++++++++
> drivers/gpu/drm/msm/dpu_dbg.h | 421 ++
> drivers/gpu/drm/msm/dpu_dbg_evtlog.c | 306 ++
> drivers/gpu/drm/msm/dpu_edid_parser.c | 657 +++
> drivers/gpu/drm/msm/dpu_edid_parser.h | 166 +
let's not have our own edid parser ;-)
I guess this is a symptom of some enhancements needed in drm_edid
> drivers/gpu/drm/msm/dpu_hdcp.h | 74 +
> drivers/gpu/drm/msm/dpu_hdcp_1x.c | 1579 ++++++
> drivers/gpu/drm/msm/dpu_io_util.c | 507 ++
> drivers/gpu/drm/msm/dpu_power_handle.c | 1128 +++++
> drivers/gpu/drm/msm/dpu_power_handle.h | 334 ++
> drivers/gpu/drm/msm/dpu_rsc.c | 1367 ++++++
> drivers/gpu/drm/msm/dpu_rsc_hw.c | 818 ++++
> drivers/gpu/drm/msm/dpu_rsc_priv.h | 191 +
> drivers/gpu/drm/msm/dsi-staging/dsi_catalog.c | 241 +
> drivers/gpu/drm/msm/dsi-staging/dsi_catalog.h | 201 +
> drivers/gpu/drm/msm/dsi-staging/dsi_clk.h | 276 ++
> drivers/gpu/drm/msm/dsi-staging/dsi_clk_manager.c | 1227 +++++
> drivers/gpu/drm/msm/dsi-staging/dsi_ctrl.c | 2862 +++++++++++
> drivers/gpu/drm/msm/dsi-staging/dsi_ctrl.h | 635 +++
> drivers/gpu/drm/msm/dsi-staging/dsi_ctrl_hw.h | 752 +++
> drivers/gpu/drm/msm/dsi-staging/dsi_ctrl_hw_1_4.c | 480 ++
> drivers/gpu/drm/msm/dsi-staging/dsi_ctrl_hw_2_0.c | 234 +
> drivers/gpu/drm/msm/dsi-staging/dsi_ctrl_hw_2_2.c | 42 +
> drivers/gpu/drm/msm/dsi-staging/dsi_ctrl_hw_cmn.c | 1312 +++++
> drivers/gpu/drm/msm/dsi-staging/dsi_ctrl_reg.h | 196 +
> drivers/gpu/drm/msm/dsi-staging/dsi_defs.h | 581 +++
> drivers/gpu/drm/msm/dsi-staging/dsi_display.c | 4325 +++++++++++++++++
> drivers/gpu/drm/msm/dsi-staging/dsi_display.h | 557 +++
> drivers/gpu/drm/msm/dsi-staging/dsi_display_test.c | 114 +
> drivers/gpu/drm/msm/dsi-staging/dsi_display_test.h | 31 +
> drivers/gpu/drm/msm/dsi-staging/dsi_drm.c | 708 +++
> drivers/gpu/drm/msm/dsi-staging/dsi_drm.h | 129 +
> drivers/gpu/drm/msm/dsi-staging/dsi_hw.h | 48 +
> drivers/gpu/drm/msm/dsi-staging/dsi_panel.c | 3521 ++++++++++++++
> drivers/gpu/drm/msm/dsi-staging/dsi_panel.h | 262 +
> drivers/gpu/drm/msm/dsi-staging/dsi_phy.c | 935 ++++
> drivers/gpu/drm/msm/dsi-staging/dsi_phy.h | 235 +
> drivers/gpu/drm/msm/dsi-staging/dsi_phy_hw.h | 260 +
> drivers/gpu/drm/msm/dsi-staging/dsi_phy_hw_v2_0.c | 252 +
> drivers/gpu/drm/msm/dsi-staging/dsi_phy_hw_v3_0.c | 447 ++
> .../gpu/drm/msm/dsi-staging/dsi_phy_timing_calc.c | 676 +++
> .../gpu/drm/msm/dsi-staging/dsi_phy_timing_calc.h | 144 +
> .../gpu/drm/msm/dsi-staging/dsi_phy_timing_v2_0.c | 126 +
> .../gpu/drm/msm/dsi-staging/dsi_phy_timing_v3_0.c | 107 +
getting rid of the 2nd dsi driver in dsi-staging will cut off a big
chunk of code, it is just shy of 25kloc
> drivers/gpu/drm/msm/dsi-staging/dsi_pwr.c | 365 ++
> drivers/gpu/drm/msm/dsi-staging/dsi_pwr.h | 93 +
> drivers/gpu/drm/msm/hdmi/hdmi_hdcp.c | 26 +-
> drivers/gpu/drm/msm/msm_atomic.c | 446 +-
> drivers/gpu/drm/msm/msm_drv.c | 919 +++-
> drivers/gpu/drm/msm/msm_drv.h | 486 +-
> drivers/gpu/drm/msm/msm_fb.c | 10 +-
> drivers/gpu/drm/msm/msm_kms.h | 90 +-
> drivers/gpu/drm/msm/msm_prop.c | 688 +++
> drivers/gpu/drm/msm/msm_prop.h | 438 ++
> drivers/gpu/drm/msm/msm_rd.c | 58 +-
> drivers/platform/msm/Kconfig | 21 +
> drivers/platform/msm/Makefile | 4 +
> drivers/platform/msm/msm_ext_display.c | 525 ++
I guess msm_ext_display.c needs to go away
> include/drm/drm_connector.h | 19 +
> include/drm/drm_dp_helper.h | 23 +
> include/drm/drm_mipi_dsi.h | 4 +
> include/drm/drm_mode_object.h | 2 +-
> include/linux/dpu_io_util.h | 113 +
> include/linux/dpu_rsc.h | 302 ++
> include/linux/msm_ext_display.h | 182 +
> include/uapi/drm/dpu_drm.h | 449 ++
> include/uapi/drm/drm_fourcc.h | 32 +
> include/uapi/drm/drm_mode.h | 5 +
> include/uapi/drm/msm_drm.h | 79 +
> include/uapi/drm/msm_drm_pp.h | 345 ++
> include/uapi/media/msm_media_info.h | 1376 ++++++
and this
> include/video/mipi_display.h | 4 +
> 236 files changed, 110234 insertions(+), 159 deletions(-)
jfwiw, Sean an I have already cut out ~15k insertions from the inital
version ;-)
BR,
-R
> create mode 100644 Documentation/devicetree/bindings/display/msm/dpu-rsc.txt
> create mode 100644 Documentation/devicetree/bindings/display/msm/dpu.txt
> create mode 100644 Documentation/devicetree/bindings/drm/msm/dpu-dp.txt
> create mode 100644 Documentation/devicetree/bindings/drm/msm/dpu-dsi.txt
> create mode 100644 Documentation/devicetree/bindings/drm/msm/dpu-wb.txt
> create mode 100644 Documentation/devicetree/bindings/drm/msm/mdss-dsi-panel.txt
> create mode 100644 Documentation/devicetree/bindings/fb/mdss-dsi-panel.txt
> create mode 100644 Documentation/devicetree/bindings/fb/mdss-pll.txt
> create mode 100644 Documentation/devicetree/bindings/msm_hdcp/msm_hdcp.txt
> create mode 100644 arch/arm64/boot/dts/qcom/sdm845-dpu-display.dtsi
> create mode 100644 arch/arm64/boot/dts/qcom/sdm845-dpu.dtsi
> create mode 100644 drivers/clk/qcom/mdss/mdss-pll.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_ad4.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_color_processing.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_color_processing.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_connector.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_connector.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_core_irq.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_core_irq.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_fence.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_fence.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_formats.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ad4.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_blk.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_blk.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog_format.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_color_proc_common_v4.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_color_proc_v4.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_color_proc_v4.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_color_processing.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_color_processing_v1_7.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_color_processing_v1_7.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_dsc.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_dsc.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_dspp.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_dspp.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_pingpong.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_pingpong.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_reg_dma_v1.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_reg_dma_v1.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_reg_dma_v1_color_proc.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_reg_dma_v1_color_proc.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_rot.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_rot.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_vbif.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_vbif.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_wb.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_wb.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hwio.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_irq.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_irq.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_kms_utils.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_plane.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_reg_dma.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_reg_dma.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.h
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_wb.c
> create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_wb.h
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp4/mdp4.xml.h (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp4/mdp4_crtc.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp4/mdp4_dsi_encoder.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp4/mdp4_dtv_encoder.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp4/mdp4_irq.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp4/mdp4_kms.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp4/mdp4_kms.h (99%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp4/mdp4_lcdc_encoder.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp4/mdp4_lvds_connector.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp4/mdp4_lvds_pll.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp4/mdp4_plane.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5.xml.h (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_cfg.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_cfg.h (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_cmd_encoder.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_crtc.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_ctl.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_ctl.h (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_encoder.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_irq.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_kms.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_kms.h (99%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_mdss.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_mixer.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_mixer.h (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_pipe.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_pipe.h (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_plane.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_smp.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp5/mdp5_smp.h (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp_common.xml.h (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp_format.c (98%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp_kms.c (100%)
> rename drivers/gpu/drm/msm/{mdp => disp}/mdp_kms.h (99%)
> create mode 100644 drivers/gpu/drm/msm/dp/dp_audio.c
> create mode 100644 drivers/gpu/drm/msm/dp/dp_audio.h
> create mode 100644 drivers/gpu/drm/msm/dp/dp_aux.c
> create mode 100644 drivers/gpu/drm/msm/dp/dp_aux.h
> create mode 100644 drivers/gpu/drm/msm/dp/dp_catalog.c
> create mode 100644 drivers/gpu/drm/msm/dp/dp_catalog.h
> create mode 100644 drivers/gpu/drm/msm/dp/dp_ctrl.c
> create mode 100644 drivers/gpu/drm/msm/dp/dp_ctrl.h
> create mode 100644 drivers/gpu/drm/msm/dp/dp_debug.c
> create mode 100644 drivers/gpu/drm/msm/dp/dp_debug.h
> create mode 100644 drivers/gpu/drm/msm/dp/dp_display.c
> create mode 100644 drivers/gpu/drm/msm/dp/dp_display.h
> create mode 100644 drivers/gpu/drm/msm/dp/dp_drm.c
> create mode 100644 drivers/gpu/drm/msm/dp/dp_drm.h
> create mode 100644 drivers/gpu/drm/msm/dp/dp_hdcp2p2.c
> create mode 100644 drivers/gpu/drm/msm/dp/dp_link.c
> create mode 100644 drivers/gpu/drm/msm/dp/dp_link.h
> create mode 100644 drivers/gpu/drm/msm/dp/dp_panel.c
> create mode 100644 drivers/gpu/drm/msm/dp/dp_panel.h
> create mode 100644 drivers/gpu/drm/msm/dp/dp_parser.c
> create mode 100644 drivers/gpu/drm/msm/dp/dp_parser.h
> create mode 100644 drivers/gpu/drm/msm/dp/dp_power.c
> create mode 100644 drivers/gpu/drm/msm/dp/dp_power.h
> create mode 100644 drivers/gpu/drm/msm/dp/dp_reg.h
> create mode 100644 drivers/gpu/drm/msm/dp/dp_usbpd.c
> create mode 100644 drivers/gpu/drm/msm/dp/dp_usbpd.h
> create mode 100644 drivers/gpu/drm/msm/dpu_dbg.c
> create mode 100644 drivers/gpu/drm/msm/dpu_dbg.h
> create mode 100644 drivers/gpu/drm/msm/dpu_dbg_evtlog.c
> create mode 100644 drivers/gpu/drm/msm/dpu_edid_parser.c
> create mode 100644 drivers/gpu/drm/msm/dpu_edid_parser.h
> create mode 100644 drivers/gpu/drm/msm/dpu_hdcp.h
> create mode 100644 drivers/gpu/drm/msm/dpu_hdcp_1x.c
> create mode 100644 drivers/gpu/drm/msm/dpu_io_util.c
> create mode 100644 drivers/gpu/drm/msm/dpu_power_handle.c
> create mode 100644 drivers/gpu/drm/msm/dpu_power_handle.h
> create mode 100644 drivers/gpu/drm/msm/dpu_rsc.c
> create mode 100644 drivers/gpu/drm/msm/dpu_rsc_hw.c
> create mode 100644 drivers/gpu/drm/msm/dpu_rsc_priv.h
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_catalog.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_catalog.h
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_clk.h
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_clk_manager.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_ctrl.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_ctrl.h
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_ctrl_hw.h
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_ctrl_hw_1_4.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_ctrl_hw_2_0.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_ctrl_hw_2_2.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_ctrl_hw_cmn.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_ctrl_reg.h
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_defs.h
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_display.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_display.h
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_display_test.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_display_test.h
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_drm.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_drm.h
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_hw.h
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_panel.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_panel.h
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_phy.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_phy.h
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_phy_hw.h
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_phy_hw_v2_0.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_phy_hw_v3_0.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_phy_timing_calc.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_phy_timing_calc.h
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_phy_timing_v2_0.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_phy_timing_v3_0.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_pwr.c
> create mode 100644 drivers/gpu/drm/msm/dsi-staging/dsi_pwr.h
> create mode 100644 drivers/gpu/drm/msm/msm_prop.c
> create mode 100644 drivers/gpu/drm/msm/msm_prop.h
> create mode 100644 drivers/platform/msm/Kconfig
> create mode 100644 drivers/platform/msm/Makefile
> create mode 100644 drivers/platform/msm/msm_ext_display.c
> create mode 100644 include/linux/dpu_io_util.h
> create mode 100644 include/linux/dpu_rsc.h
> create mode 100644 include/linux/msm_ext_display.h
> create mode 100644 include/uapi/drm/dpu_drm.h
> create mode 100644 include/uapi/drm/msm_drm_pp.h
> create mode 100644 include/uapi/media/msm_media_info.h
>
> --
> Sean Paul, Software Engineer, Google / Chromium OS
More information about the Freedreno
mailing list