All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PULL] Add Display Support for Qualcomm SDM845
@ 2018-02-13 19:18 Sean Paul
  2018-02-13 20:00 ` Rob Clark
                   ` (3 more replies)
  0 siblings, 4 replies; 17+ messages in thread
From: Sean Paul @ 2018-02-13 19:18 UTC (permalink / raw)
  To: dri-devel, linux-arm-msm, freedreno
  Cc: jeykumar, abhinavk, nganji, Dave Airlie, chandanu,
	Kristian H. Kristensen, mkavm

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@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:
----------------
- 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@vmware.com> and Lukasz Spintzyk <lukasz.spintzyk@displaylink.com>
- Uma Shankar <uma.shankar@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?


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 +-
 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 +
 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 +
 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 ++
 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 ++++++
 include/video/mipi_display.h                       |    4 +
 236 files changed, 110234 insertions(+), 159 deletions(-)
 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
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC PULL] Add Display Support for Qualcomm SDM845
  2018-02-13 19:18 [RFC PULL] Add Display Support for Qualcomm SDM845 Sean Paul
@ 2018-02-13 20:00 ` Rob Clark
       [not found]   ` <CAF6AEGtt6Eaw=pSOYUy2u0P7k_+Pepv-Ox-VKcC_9NF68kzoug-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
                     ` (2 more replies)
  2018-02-14  0:02 ` Jordan Crouse
                   ` (2 subsequent siblings)
  3 siblings, 3 replies; 17+ messages in thread
From: Rob Clark @ 2018-02-13 20:00 UTC (permalink / raw)
  To: Sean Paul
  Cc: Dave Airlie, Sankaran, Jeykumar, Manoj Kumar AVM, linux-arm-msm,
	dri-devel, Ganji, Nagamalleswararao, Abhinav Kumar,
	Chandan Uddaraju, Kristian H. Kristensen, freedreno

On Tue, Feb 13, 2018 at 2:18 PM, Sean Paul <seanpaul@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@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@vmware.com> and Lukasz Spintzyk <lukasz.spintzyk@displaylink.com>
> - Uma Shankar <uma.shankar@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
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC PULL] Add Display Support for Qualcomm SDM845
  2018-02-13 19:18 [RFC PULL] Add Display Support for Qualcomm SDM845 Sean Paul
  2018-02-13 20:00 ` Rob Clark
@ 2018-02-14  0:02 ` Jordan Crouse
  2018-02-14  0:43   ` [Freedreno] " Rob Clark
  2018-02-15 20:15 ` Jordan Crouse
  2018-02-16  1:25 ` [RFC PULL] Add Display Support for Qualcomm SDM845 Rob Herring
  3 siblings, 1 reply; 17+ messages in thread
From: Jordan Crouse @ 2018-02-14  0:02 UTC (permalink / raw)
  To: Sean Paul
  Cc: jeykumar-jfJNa2p1gH1BDgjK7y7TUQ, mkavm-jfJNa2p1gH1BDgjK7y7TUQ,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Rob Clark,
	nganji-jfJNa2p1gH1BDgjK7y7TUQ, abhinavk-jfJNa2p1gH1BDgjK7y7TUQ,
	Dave Airlie, Kristian H. Kristensen,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	chandanu-jfJNa2p1gH1BDgjK7y7TUQ

On Tue, Feb 13, 2018 at 02:18:13PM -0500, Sean Paul 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@vger.kernel.org. Once things look
> good, I'll send another pull 4realz.
> 
>  drivers/gpu/drm/msm/msm_rd.c                       |   58 +-

These changes are somewhat overzealous pointer verification, If
struct file * and/or struct inode * are NULL in a fops function your system is
already having a bad day. The only check that might be somewhat reasonable is
for gpu->funcs->get_param but that hook is defined on all targets so I don't
think it is unreasonable to assume that it should be there (and if it isn't the
unit test sure better catch it). We can safely drop these changes.

Jordan

-- 
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Freedreno] [RFC PULL] Add Display Support for Qualcomm SDM845
  2018-02-14  0:02 ` Jordan Crouse
@ 2018-02-14  0:43   ` Rob Clark
  0 siblings, 0 replies; 17+ messages in thread
From: Rob Clark @ 2018-02-14  0:43 UTC (permalink / raw)
  To: Sean Paul, dri-devel, linux-arm-msm, freedreno, Sankaran,
	Jeykumar, Abhinav Kumar, Rob Clark, Ganji, Nagamalleswararao,
	Dave Airlie, Chandan Uddaraju, Kristian H. Kristensen,
	Manoj Kumar AVM

On Tue, Feb 13, 2018 at 7:02 PM, Jordan Crouse <jcrouse@codeaurora.org> wrote:
> On Tue, Feb 13, 2018 at 02:18:13PM -0500, Sean Paul 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@vger.kernel.org. Once things look
>> good, I'll send another pull 4realz.
>>
>>  drivers/gpu/drm/msm/msm_rd.c                       |   58 +-
>
> These changes are somewhat overzealous pointer verification, If
> struct file * and/or struct inode * are NULL in a fops function your system is
> already having a bad day. The only check that might be somewhat reasonable is
> for gpu->funcs->get_param but that hook is defined on all targets so I don't
> think it is unreasonable to assume that it should be there (and if it isn't the
> unit test sure better catch it). We can safely drop these changes.
>

thanks, this was something I didn't notice (or test) yet.. a couple of
the other 'elfring fixes' I encountered (I guess there are probably
some coding standards or static analysis behind this?) actually broke
things and I have already reverted in the course of unbreaking
display/gpu on db410c..

But yeah, ->get_param() is mandatory in the ioctl path (which is
something you don't need debugfs access for).. for the paranoid
probably the better thing would be a WARN_ON(!gpu->get_param) in gpu
init path.

BR,
-R

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC PULL] Add Display Support for Qualcomm SDM845
       [not found]   ` <CAF6AEGtt6Eaw=pSOYUy2u0P7k_+Pepv-Ox-VKcC_9NF68kzoug-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2018-02-14  8:30     ` Daniel Stone
  2018-02-14 12:22       ` Rob Clark
  2018-02-14 16:13     ` Rob Clark
  1 sibling, 1 reply; 17+ messages in thread
From: Daniel Stone @ 2018-02-14  8:30 UTC (permalink / raw)
  To: Rob Clark
  Cc: freedreno, Sankaran, Jeykumar, linux-arm-msm, dri-devel,
	Sean Paul, Ganji, Nagamalleswararao, Abhinav Kumar, Dave Airlie,
	Kristian H. Kristensen, Manoj Kumar AVM, Chandan Uddaraju

Hi Rob,

On 13 February 2018 at 20:00, Rob Clark <robdclark@gmail.com> wrote:
> On Tue, Feb 13, 2018 at 2:18 PM, Sean Paul <seanpaul@chromium.org> wrote:
>> 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.
>
> 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)

Heh, and it is quite a bit of code to dig through. I haven't yet got a
chance to fully check it out.

>> - include/uapi/drm/msm_drm_pp.h needs opensource userspace (or removal)

We don't really have a good story for pixel-processing API anywhere tbh.

> 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 ;-))

Formats/modifiers we do at least get per-plane. We won't know about
scaling, but at least Weston will go through trying each plane in
sequence until it finds one which accepts the configuration. Could HWC
do something like that with atomic, or does it rely on coming up with
a plan first rather than the brute-force testing approach? I haven't
seen its planner at all recently I'm afraid.

>  - I *think* we also need the same trick for combining mixers under one CRTC
>    for 4k modes too?

This one I guess you can't get around though. Can they still run from
the one plane, or do you secretly consume two planes?

>  - 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.)

It'd be good to know if the CSC could use the CRTC GAMMA_LUT -> CTM ->
DEGAMMA_LUT properties, if they were moved over to planes. (And if
not, why not; if there's any functionality missing from those, what it
is, etc.)

Cheers,
Daniel
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC PULL] Add Display Support for Qualcomm SDM845
  2018-02-14  8:30     ` Daniel Stone
@ 2018-02-14 12:22       ` Rob Clark
  2018-02-14 13:50         ` Sean Paul
  0 siblings, 1 reply; 17+ messages in thread
From: Rob Clark @ 2018-02-14 12:22 UTC (permalink / raw)
  To: Daniel Stone
  Cc: freedreno, Sankaran, Jeykumar, linux-arm-msm, dri-devel, Ganji,
	Nagamalleswararao, Abhinav Kumar, Dave Airlie,
	Kristian H. Kristensen, Manoj Kumar AVM, Chandan Uddaraju

On Wed, Feb 14, 2018 at 3:30 AM, Daniel Stone <daniel@fooishbar.org> wrote:
> Hi Rob,
>
> On 13 February 2018 at 20:00, Rob Clark <robdclark@gmail.com> wrote:
>> On Tue, Feb 13, 2018 at 2:18 PM, Sean Paul <seanpaul@chromium.org> wrote:
>>> 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.
>>
>> 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)
>
> Heh, and it is quite a bit of code to dig through. I haven't yet got a
> chance to fully check it out.
>
>>> - include/uapi/drm/msm_drm_pp.h needs opensource userspace (or removal)
>
> We don't really have a good story for pixel-processing API anywhere tbh.
>
>> 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 ;-))
>
> Formats/modifiers we do at least get per-plane. We won't know about
> scaling, but at least Weston will go through trying each plane in
> sequence until it finds one which accepts the configuration. Could HWC
> do something like that with atomic, or does it rely on coming up with
> a plan first rather than the brute-force testing approach? I haven't
> seen its planner at all recently I'm afraid.
>
>>  - I *think* we also need the same trick for combining mixers under one CRTC
>>    for 4k modes too?
>
> This one I guess you can't get around though. Can they still run from
> the one plane, or do you secretly consume two planes?
>

I think it is still the case, like mdp5, that you need two hw pipes..
but actually it gets more crazy, since there are some cases where two
planes could share a hw pipe.  Not sure that weston or drm-hwc is
going to have much hope in being able to deal with that, so I think
virtualizing the planes and crtcs is the better route.

BR,
-R

>>  - 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.)
>
> It'd be good to know if the CSC could use the CRTC GAMMA_LUT -> CTM ->
> DEGAMMA_LUT properties, if they were moved over to planes. (And if
> not, why not; if there's any functionality missing from those, what it
> is, etc.)
>
> Cheers,
> Daniel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC PULL] Add Display Support for Qualcomm SDM845
  2018-02-14 12:22       ` Rob Clark
@ 2018-02-14 13:50         ` Sean Paul
  2018-02-14 14:37           ` Daniel Stone
  0 siblings, 1 reply; 17+ messages in thread
From: Sean Paul @ 2018-02-14 13:50 UTC (permalink / raw)
  To: Rob Clark
  Cc: freedreno, Sankaran, Jeykumar, linux-arm-msm, dri-devel, Ganji,
	Nagamalleswararao, Abhinav Kumar, Dave Airlie,
	Kristian H. Kristensen, Manoj Kumar AVM, Chandan Uddaraju

On Wed, Feb 14, 2018 at 07:22:53AM -0500, Rob Clark wrote:
> On Wed, Feb 14, 2018 at 3:30 AM, Daniel Stone <daniel@fooishbar.org> wrote:
> > Hi Rob,
> >
> > On 13 February 2018 at 20:00, Rob Clark <robdclark@gmail.com> wrote:
> >> On Tue, Feb 13, 2018 at 2:18 PM, Sean Paul <seanpaul@chromium.org> wrote:
> >>> 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.
> >>
> >> 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)
> >
> > Heh, and it is quite a bit of code to dig through. I haven't yet got a
> > chance to fully check it out.
> >
> >>> - include/uapi/drm/msm_drm_pp.h needs opensource userspace (or removal)
> >
> > We don't really have a good story for pixel-processing API anywhere tbh.
> >
> >> 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 ;-))
> >
> > Formats/modifiers we do at least get per-plane. We won't know about
> > scaling, but at least Weston will go through trying each plane in
> > sequence until it finds one which accepts the configuration. Could HWC
> > do something like that with atomic, or does it rely on coming up with
> > a plan first rather than the brute-force testing approach? I haven't
> > seen its planner at all recently I'm afraid.

It could definitely build up a plan a la weston, it just doesn't atm.


> >
> >>  - I *think* we also need the same trick for combining mixers under one CRTC
> >>    for 4k modes too?
> >
> > This one I guess you can't get around though. Can they still run from
> > the one plane, or do you secretly consume two planes?
> >
> 
> I think it is still the case, like mdp5, that you need two hw pipes..
> but actually it gets more crazy, since there are some cases where two
> planes could share a hw pipe.  

Right. Large fbs might require 2 pipes, and multiple overlapping or adjacent small fbs
can be serviced with 1 pipe.

> Not sure that weston or drm-hwc is
> going to have much hope in being able to deal with that, so I think
> virtualizing the planes and crtcs is the better route.

Agreed. I think kernel is in the best place to make these decisions.

Sean

> 
> BR,
> -R
> 
> >>  - 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.)
> >
> > It'd be good to know if the CSC could use the CRTC GAMMA_LUT -> CTM ->
> > DEGAMMA_LUT properties, if they were moved over to planes. (And if
> > not, why not; if there's any functionality missing from those, what it
> > is, etc.)
> >
> > Cheers,
> > Daniel

-- 
Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC PULL] Add Display Support for Qualcomm SDM845
  2018-02-14 13:50         ` Sean Paul
@ 2018-02-14 14:37           ` Daniel Stone
  0 siblings, 0 replies; 17+ messages in thread
From: Daniel Stone @ 2018-02-14 14:37 UTC (permalink / raw)
  To: Sean Paul
  Cc: Rob Clark, Dave Airlie, Sankaran, Jeykumar, Manoj Kumar AVM,
	linux-arm-msm, dri-devel, Ganji, Nagamalleswararao,
	Abhinav Kumar, Chandan Uddaraju, Kristian H. Kristensen,
	freedreno

Hi,

On 14 February 2018 at 13:50, Sean Paul <seanpaul@chromium.org> wrote:
> On Wed, Feb 14, 2018 at 07:22:53AM -0500, Rob Clark wrote:
>> On Wed, Feb 14, 2018 at 3:30 AM, Daniel Stone <daniel@fooishbar.org> wrote:
>> > This one I guess you can't get around though. Can they still run from
>> > the one plane, or do you secretly consume two planes?
>>
>> I think it is still the case, like mdp5, that you need two hw pipes..
>> but actually it gets more crazy, since there are some cases where two
>> planes could share a hw pipe.
>
> Right. Large fbs might require 2 pipes, and multiple overlapping or adjacent small fbs
> can be serviced with 1 pipe.

I didn't know about using a single pipe for multiple framebuffers.
That's quite special indeed.

I think virtualising probably makes sense in that case: rather than
just getting around limitations, it's seeming like more of a VC4
situation where they just really aren't actually planes in the first
place.

Cheers,
Daniel

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC PULL] Add Display Support for Qualcomm SDM845
       [not found]   ` <CAF6AEGtt6Eaw=pSOYUy2u0P7k_+Pepv-Ox-VKcC_9NF68kzoug-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  2018-02-14  8:30     ` Daniel Stone
@ 2018-02-14 16:13     ` Rob Clark
  1 sibling, 0 replies; 17+ messages in thread
From: Rob Clark @ 2018-02-14 16:13 UTC (permalink / raw)
  To: Sean Paul
  Cc: Dave Airlie, Sankaran, Jeykumar, Manoj Kumar AVM, linux-arm-msm,
	dri-devel, Ganji, Nagamalleswararao, Abhinav Kumar,
	Chandan Uddaraju, Kristian H. Kristensen, freedreno

On Tue, Feb 13, 2018 at 3:00 PM, Rob Clark <robdclark@gmail.com> wrote:
> On Tue, Feb 13, 2018 at 2:18 PM, Sean Paul <seanpaul@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@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@vmware.com> and Lukasz Spintzyk <lukasz.spintzyk@displaylink.com>
>> - Uma Shankar <uma.shankar@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.

one more to add to the TODO list:

 - fix direct callers of msm_gem_free_object() to use drm_gem_object_put()

BR,
-R

>
> 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
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC PULL] Add Display Support for Qualcomm SDM845
  2018-02-13 20:00 ` Rob Clark
       [not found]   ` <CAF6AEGtt6Eaw=pSOYUy2u0P7k_+Pepv-Ox-VKcC_9NF68kzoug-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2018-02-14 18:17   ` jsanka
  2018-02-14 19:08     ` Rob Clark
  2018-02-19 14:45   ` Daniel Vetter
  2 siblings, 1 reply; 17+ messages in thread
From: jsanka @ 2018-02-14 18:17 UTC (permalink / raw)
  To: Rob Clark, Sean Paul
  Cc: Dave Airlie, Sankaran, Jeykumar, Manoj Kumar AVM, linux-arm-msm,
	dri-devel, Ganji, Nagamalleswararao, Abhinav Kumar,
	Chandan Uddaraju, Kristian H. Kristensen, freedreno



On 2/13/2018 12:00 PM, Rob Clark wrote:
> On Tue, Feb 13, 2018 at 2:18 PM, Sean Paul <seanpaul@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@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@vmware.com> and Lukasz Spintzyk <lukasz.spintzyk@displaylink.com>
>> - Uma Shankar <uma.shankar@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 ;-))
We are working on plane virtualization focused primarily to support 4K / 
wider displays which cannot
be catered by one hwpipe. The plan is to gang up two *fixed* hwpipes of 
similar capabilities (in terms of formats,
sub hw blocks like scalar, post processing ) and expose them as a single 
plane so that user space
compositor ( drm-hwc or weston) need not worry about max pixel width 
supported by the planes. But mapping
planes <-> hwpipe dynamically may need more than just virtualization. 
Kernel need to keep track of hwpipes
especially when dealing with multiple displays. And it get complicated 
when planes start moving around CRTC's
for different sized buffers.

Given that DRM exposes planes with its own list of format/modifiers, I 
think its not that big of a deal for a
compositor to look up for plane to support the format and use it.
>
>   - I *think* we also need the same trick for combining mixers under one CRTC
>     for 4k modes too?
The uploaded patch set handles this case. We attach two layer mixers 
under one CRTC. Kernel also
takes care of dividing the given list of planes (and its hwpipes) to 
stage on the respective layer mixers
based on the destination coordinates (CRTC_X, _Y,  _W and _H)
>
>   - 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
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC PULL] Add Display Support for Qualcomm SDM845
  2018-02-14 18:17   ` jsanka
@ 2018-02-14 19:08     ` Rob Clark
       [not found]       ` <CAF6AEGsPTWFzaHTATeGAoQkCiOObZ4WzKr1yPFFd3k3wO1=AnA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 17+ messages in thread
From: Rob Clark @ 2018-02-14 19:08 UTC (permalink / raw)
  To: jsanka
  Cc: Sean Paul, Dave Airlie, Sankaran, Jeykumar, Manoj Kumar AVM,
	linux-arm-msm, dri-devel, Ganji, Nagamalleswararao,
	Abhinav Kumar, Chandan Uddaraju, Kristian H. Kristensen,
	freedreno

On Wed, Feb 14, 2018 at 1:17 PM, jsanka <jsanka@codeaurora.org> wrote:
>
>
> On 2/13/2018 12:00 PM, Rob Clark wrote:
>>
>> On Tue, Feb 13, 2018 at 2:18 PM, Sean Paul <seanpaul@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@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@vmware.com> and Lukasz Spintzyk
>>> <lukasz.spintzyk@displaylink.com>
>>> - Uma Shankar <uma.shankar@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 ;-))
>
> We are working on plane virtualization focused primarily to support 4K /
> wider displays which cannot
> be catered by one hwpipe. The plan is to gang up two *fixed* hwpipes of
> similar capabilities (in terms of formats,
> sub hw blocks like scalar, post processing ) and expose them as a single
> plane so that user space
> compositor ( drm-hwc or weston) need not worry about max pixel width
> supported by the planes. But mapping
> planes <-> hwpipe dynamically may need more than just virtualization. Kernel
> need to keep track of hwpipes
> especially when dealing with multiple displays. And it get complicated when
> planes start moving around CRTC's
> for different sized buffers.

Hmm, a fixed mapping of hw pipe to plane might be an ok stepping
stone.  I'm not sure it is a terribly good final solution, esp. when
it comes to external displays, since you may never need 4k+ scanout,
depending on what the user plugs in, so you end up wasting a lot of hw
pipes.

Keeping track of the hwpipes as part of the driver global atomic state
isn't actually *that* hard.  Have a look at what mdp5 does.  We still
need to move mdp5 to drm_private_obj instead of subclassing
drm_atomic_state (see Archit's RFC, "drm/msm/mdp5: Add global state as
a private atomic object"), but other than that detail, I think
something along those lines is a better approach.

> Given that DRM exposes planes with its own list of format/modifiers, I think
> its not that big of a deal for a
> compositor to look up for plane to support the format and use it.
>>
>>
>>   - I *think* we also need the same trick for combining mixers under one
>> CRTC
>>     for 4k modes too?
>
> The uploaded patch set handles this case. We attach two layer mixers under
> one CRTC. Kernel also
> takes care of dividing the given list of planes (and its hwpipes) to stage
> on the respective layer mixers
> based on the destination coordinates (CRTC_X, _Y,  _W and _H)

ahh, ok, good to know.. from a quick look (I haven't gotten thru the
dpu_crtc.c code very far yet), I think you probably want to move the
state about which mixers/ctls are used by the crtc into the crtc's
atomic state, so that they can be dynamically assigned and (if
necessary) the atomic update rejected at the test phase if there are
insufficient mixers avail.  (I guess how much that matters depends on
whether there is ever a case that there aren't enough mixers to assign
2 to every crtc/output..)

BR,
-R

>>
>>
>>   - 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
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
>
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux
> Foundation Collaborative Project
>

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Freedreno] [RFC PULL] Add Display Support for Qualcomm SDM845
  2018-02-13 19:18 [RFC PULL] Add Display Support for Qualcomm SDM845 Sean Paul
  2018-02-13 20:00 ` Rob Clark
  2018-02-14  0:02 ` Jordan Crouse
@ 2018-02-15 20:15 ` Jordan Crouse
  2018-02-15 20:45   ` [PATCH] drm/msm/dpu: Remove unused code and move the header Jordan Crouse
  2018-02-16  1:25 ` [RFC PULL] Add Display Support for Qualcomm SDM845 Rob Herring
  3 siblings, 1 reply; 17+ messages in thread
From: Jordan Crouse @ 2018-02-15 20:15 UTC (permalink / raw)
  To: Sean Paul
  Cc: dri-devel, linux-arm-msm, freedreno, jeykumar, abhinavk,
	Rob Clark, nganji, Dave Airlie, chandanu, Kristian H. Kristensen,
	mkavm

On Tue, Feb 13, 2018 at 02:18:13PM -0500, Sean Paul 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@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:
> ----------------
> - 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@vmware.com> and Lukasz Spintzyk <lukasz.spintzyk@displaylink.com>
> - Uma Shankar <uma.shankar@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?
> 
> 
> 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
> 
>  drivers/gpu/drm/msm/dpu_io_util.c                  |  507 ++
>  include/linux/dpu_io_util.h                        |  113 +

This looks like it was borrowed from some older downstream code - its mostly a
wrapper for iomem and clock operations and a goodly chuck of dead i2c and gpio
code too. The header definitely doesn't need to be in include/linux and we might
be able to save a bit of space by merging the iomem wrappers with the code we
already have.

Jordan
-- 
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH] drm/msm/dpu: Remove unused code and move the header
  2018-02-15 20:15 ` Jordan Crouse
@ 2018-02-15 20:45   ` Jordan Crouse
       [not found]     ` <20180215204535.29510-1-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
  0 siblings, 1 reply; 17+ messages in thread
From: Jordan Crouse @ 2018-02-15 20:45 UTC (permalink / raw)
  To: seanpaul
  Cc: freedreno, jeykumar, linux-arm-msm, dri-devel, nganji, abhinavk,
	airlied, hoegsberg, mkavm, chandanu

Remove unused code from dpu_io_util.c.  The functions are only
used inside of the msm driver so remove the EXPORT_SYMBOL
tags and move the header dpu_io_util.h from include/linux.

Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
---
 drivers/gpu/drm/msm/dp/dp_parser.h                 |   2 +-
 drivers/gpu/drm/msm/dpu_io_util.c                  | 154 ++-------------------
 .../linux => drivers/gpu/drm/msm}/dpu_io_util.h    |  10 --
 drivers/gpu/drm/msm/dpu_power_handle.c             |   1 -
 drivers/gpu/drm/msm/dpu_power_handle.h             |   2 +-
 drivers/gpu/drm/msm/dpu_rsc_priv.h                 |   1 -
 drivers/gpu/drm/msm/msm_drv.h                      |   1 -
 7 files changed, 14 insertions(+), 157 deletions(-)
 rename {include/linux => drivers/gpu/drm/msm}/dpu_io_util.h (86%)

diff --git a/drivers/gpu/drm/msm/dp/dp_parser.h b/drivers/gpu/drm/msm/dp/dp_parser.h
index a9cfd03fa5ed..703acb010c8b 100644
--- a/drivers/gpu/drm/msm/dp/dp_parser.h
+++ b/drivers/gpu/drm/msm/dp/dp_parser.h
@@ -15,7 +15,7 @@
 #ifndef _DP_PARSER_H_
 #define _DP_PARSER_H_
 
-#include <linux/dpu_io_util.h>
+#include "dpu_io_util.h"
 
 #define DP_LABEL "MDSS DP DISPLAY"
 #define AUX_CFG_LEN	10
diff --git a/drivers/gpu/drm/msm/dpu_io_util.c b/drivers/gpu/drm/msm/dpu_io_util.c
index a18bc992c136..f39ae38e4cfa 100644
--- a/drivers/gpu/drm/msm/dpu_io_util.c
+++ b/drivers/gpu/drm/msm/dpu_io_util.c
@@ -16,9 +16,9 @@
 #include <linux/io.h>
 #include <linux/regulator/consumer.h>
 #include <linux/delay.h>
-#include <linux/dpu_io_util.h>
 
-#define MAX_I2C_CMDS  16
+#include "dpu_io_util.h"
+
 void dss_reg_w(struct dss_io_data *io, u32 offset, u32 value, u32 debug)
 {
 	u32 in_val;
@@ -42,8 +42,7 @@ void dss_reg_w(struct dss_io_data *io, u32 offset, u32 value, u32 debug)
 			(u32)(unsigned long)(io->base + offset),
 			value, in_val);
 	}
-} /* dss_reg_w */
-EXPORT_SYMBOL(dss_reg_w);
+}
 
 u32 dss_reg_r(struct dss_io_data *io, u32 offset, u32 debug)
 {
@@ -67,30 +66,7 @@ u32 dss_reg_r(struct dss_io_data *io, u32 offset, u32 debug)
 			(u32)(unsigned long)(io->base + offset), value);
 
 	return value;
-} /* dss_reg_r */
-EXPORT_SYMBOL(dss_reg_r);
-
-void dss_reg_dump(void __iomem *base, u32 length, const char *prefix,
-	u32 debug)
-{
-	if (debug)
-		print_hex_dump(KERN_INFO, prefix, DUMP_PREFIX_OFFSET, 32, 4,
-			(void *)base, length, false);
-} /* dss_reg_dump */
-EXPORT_SYMBOL(dss_reg_dump);
-
-static struct resource *msm_dss_get_res_byname(struct platform_device *pdev,
-	unsigned int type, const char *name)
-{
-	struct resource *res = NULL;
-
-	res = platform_get_resource_byname(pdev, type, name);
-	if (!res)
-		DEV_ERR("%s: '%s' resource not found\n", __func__, name);
-
-	return res;
-} /* msm_dss_get_res_byname */
-EXPORT_SYMBOL(msm_dss_get_res_byname);
+}
 
 int msm_dss_ioremap_byname(struct platform_device *pdev,
 	struct dss_io_data *io_data, const char *name)
@@ -103,7 +79,7 @@ int msm_dss_ioremap_byname(struct platform_device *pdev,
 		return -EINVAL;
 	}
 
-	res = msm_dss_get_res_byname(pdev, IORESOURCE_MEM, name);
+	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, name);
 	if (!res) {
 		DEV_ERR("%pS->%s: '%s' msm_dss_get_res_byname failed\n",
 			__builtin_return_address(0), __func__, name);
@@ -119,8 +95,7 @@ int msm_dss_ioremap_byname(struct platform_device *pdev,
 	}
 
 	return 0;
-} /* msm_dss_ioremap_byname */
-EXPORT_SYMBOL(msm_dss_ioremap_byname);
+}
 
 void msm_dss_iounmap(struct dss_io_data *io_data)
 {
@@ -135,8 +110,7 @@ void msm_dss_iounmap(struct dss_io_data *io_data)
 		io_data->base = NULL;
 	}
 	io_data->len = 0;
-} /* msm_dss_iounmap */
-EXPORT_SYMBOL(msm_dss_iounmap);
+}
 
 int msm_dss_config_vreg(struct device *dev, struct dss_vreg *in_vreg,
 	int num_vreg, int config)
@@ -211,8 +185,7 @@ if (type == DSS_REG_LDO)
 		goto vreg_unconfig;
 	}
 	return rc;
-} /* msm_dss_config_vreg */
-EXPORT_SYMBOL(msm_dss_config_vreg);
+}
 
 int msm_dss_enable_vreg(struct dss_vreg *in_vreg, int num_vreg, int enable)
 {
@@ -283,48 +256,7 @@ int msm_dss_enable_vreg(struct dss_vreg *in_vreg, int num_vreg, int enable)
 	}
 
 	return rc;
-} /* msm_dss_enable_vreg */
-EXPORT_SYMBOL(msm_dss_enable_vreg);
-
-int msm_dss_enable_gpio(struct dss_gpio *in_gpio, int num_gpio, int enable)
-{
-	int i = 0, rc = 0;
-
-	if (enable) {
-		for (i = 0; i < num_gpio; i++) {
-			DEV_DBG("%pS->%s: %s enable\n",
-				__builtin_return_address(0), __func__,
-				in_gpio[i].gpio_name);
-
-			rc = gpio_request(in_gpio[i].gpio,
-				in_gpio[i].gpio_name);
-			if (rc < 0) {
-				DEV_ERR("%pS->%s: %s enable failed\n",
-					__builtin_return_address(0), __func__,
-					in_gpio[i].gpio_name);
-				goto disable_gpio;
-			}
-			gpio_set_value(in_gpio[i].gpio, in_gpio[i].value);
-		}
-	} else {
-		for (i = num_gpio-1; i >= 0; i--) {
-			DEV_DBG("%pS->%s: %s disable\n",
-				__builtin_return_address(0), __func__,
-				in_gpio[i].gpio_name);
-			if (in_gpio[i].gpio)
-				gpio_free(in_gpio[i].gpio);
-		}
-	}
-	return rc;
-
-disable_gpio:
-	for (i--; i >= 0; i--)
-		if (in_gpio[i].gpio)
-			gpio_free(in_gpio[i].gpio);
-
-	return rc;
-} /* msm_dss_enable_gpio */
-EXPORT_SYMBOL(msm_dss_enable_gpio);
+}
 
 void msm_dss_put_clk(struct dss_clk *clk_arry, int num_clk)
 {
@@ -335,8 +267,7 @@ void msm_dss_put_clk(struct dss_clk *clk_arry, int num_clk)
 			clk_put(clk_arry[i].clk);
 		clk_arry[i].clk = NULL;
 	}
-} /* msm_dss_put_clk */
-EXPORT_SYMBOL(msm_dss_put_clk);
+}
 
 int msm_dss_get_clk(struct device *dev, struct dss_clk *clk_arry, int num_clk)
 {
@@ -363,8 +294,7 @@ int msm_dss_get_clk(struct device *dev, struct dss_clk *clk_arry, int num_clk)
 	}
 
 	return rc;
-} /* msm_dss_get_clk */
-EXPORT_SYMBOL(msm_dss_get_clk);
+}
 
 int msm_dss_clk_set_rate(struct dss_clk *clk_arry, int num_clk)
 {
@@ -397,8 +327,7 @@ int msm_dss_clk_set_rate(struct dss_clk *clk_arry, int num_clk)
 	}
 
 	return rc;
-} /* msm_dss_clk_set_rate */
-EXPORT_SYMBOL(msm_dss_clk_set_rate);
+}
 
 int msm_dss_enable_clk(struct dss_clk *clk_arry, int num_clk, int enable)
 {
@@ -445,63 +374,4 @@ int msm_dss_enable_clk(struct dss_clk *clk_arry, int num_clk, int enable)
 	}
 
 	return rc;
-} /* msm_dss_enable_clk */
-EXPORT_SYMBOL(msm_dss_enable_clk);
-
-
-int dpu_i2c_byte_read(struct i2c_client *client, uint8_t slave_addr,
-			uint8_t reg_offset, uint8_t *read_buf)
-{
-	struct i2c_msg msgs[2];
-	int ret = -1;
-
-	pr_debug("%s: reading from slave_addr=[%x] and offset=[%x]\n",
-		 __func__, slave_addr, reg_offset);
-
-	msgs[0].addr = slave_addr >> 1;
-	msgs[0].flags = 0;
-	msgs[0].buf = &reg_offset;
-	msgs[0].len = 1;
-
-	msgs[1].addr = slave_addr >> 1;
-	msgs[1].flags = I2C_M_RD;
-	msgs[1].buf = read_buf;
-	msgs[1].len = 1;
-
-	ret = i2c_transfer(client->adapter, msgs, 2);
-	if (ret < 1) {
-		pr_err("%s: I2C READ FAILED=[%d]\n", __func__, ret);
-		return -EACCES;
-	}
-	pr_debug("%s: i2c buf is [%x]\n", __func__, *read_buf);
-	return 0;
-}
-EXPORT_SYMBOL(dpu_i2c_byte_read);
-
-int dpu_i2c_byte_write(struct i2c_client *client, uint8_t slave_addr,
-			uint8_t reg_offset, uint8_t *value)
-{
-	struct i2c_msg msgs[1];
-	uint8_t data[2];
-	int status = -EACCES;
-
-	pr_debug("%s: writing from slave_addr=[%x] and offset=[%x]\n",
-		 __func__, slave_addr, reg_offset);
-
-	data[0] = reg_offset;
-	data[1] = *value;
-
-	msgs[0].addr = slave_addr >> 1;
-	msgs[0].flags = 0;
-	msgs[0].len = 2;
-	msgs[0].buf = data;
-
-	status = i2c_transfer(client->adapter, msgs, 1);
-	if (status < 1) {
-		pr_err("I2C WRITE FAILED=[%d]\n", status);
-		return -EACCES;
-	}
-	pr_debug("%s: I2C write status=%x\n", __func__, status);
-	return status;
 }
-EXPORT_SYMBOL(dpu_i2c_byte_write);
diff --git a/include/linux/dpu_io_util.h b/drivers/gpu/drm/msm/dpu_io_util.h
similarity index 86%
rename from include/linux/dpu_io_util.h
rename to drivers/gpu/drm/msm/dpu_io_util.h
index 7c7389999577..c590bd38e940 100644
--- a/include/linux/dpu_io_util.h
+++ b/drivers/gpu/drm/msm/dpu_io_util.h
@@ -35,7 +35,6 @@ struct dss_io_data {
 
 void dss_reg_w(struct dss_io_data *io, u32 offset, u32 value, u32 debug);
 u32 dss_reg_r(struct dss_io_data *io, u32 offset, u32 debug);
-void dss_reg_dump(void __iomem *base, u32 len, const char *prefix, u32 debug);
 
 #define DSS_REG_W_ND(io, offset, val)  dss_reg_w(io, offset, val, false)
 #define DSS_REG_W(io, offset, val)     dss_reg_w(io, offset, val, true)
@@ -69,7 +68,6 @@ struct dss_gpio {
 enum dss_clk_type {
 	DSS_CLK_AHB, /* no set rate. rate controlled through rpm */
 	DSS_CLK_PCLK,
-	DSS_CLK_OTHER,
 };
 
 struct dss_clk {
@@ -93,9 +91,6 @@ int msm_dss_ioremap_byname(struct platform_device *pdev,
 	struct dss_io_data *io_data, const char *name);
 void msm_dss_iounmap(struct dss_io_data *io_data);
 
-int msm_dss_enable_gpio(struct dss_gpio *in_gpio, int num_gpio, int enable);
-int msm_dss_gpio_enable(struct dss_gpio *in_gpio, int num_gpio, int enable);
-
 int msm_dss_config_vreg(struct device *dev, struct dss_vreg *in_vreg,
 	int num_vreg, int config);
 int msm_dss_enable_vreg(struct dss_vreg *in_vreg, int num_vreg,	int enable);
@@ -105,9 +100,4 @@ void msm_dss_put_clk(struct dss_clk *clk_arry, int num_clk);
 int msm_dss_clk_set_rate(struct dss_clk *clk_arry, int num_clk);
 int msm_dss_enable_clk(struct dss_clk *clk_arry, int num_clk, int enable);
 
-int dpu_i2c_byte_read(struct i2c_client *client, uint8_t slave_addr,
-		       uint8_t reg_offset, uint8_t *read_buf);
-int dpu_i2c_byte_write(struct i2c_client *client, uint8_t slave_addr,
-			uint8_t reg_offset, uint8_t *value);
-
 #endif /* __DPU_IO_UTIL_H__ */
diff --git a/drivers/gpu/drm/msm/dpu_power_handle.c b/drivers/gpu/drm/msm/dpu_power_handle.c
index 477ea9f2778c..48c7d1b6072b 100644
--- a/drivers/gpu/drm/msm/dpu_power_handle.c
+++ b/drivers/gpu/drm/msm/dpu_power_handle.c
@@ -25,7 +25,6 @@
 #include <linux/msm-bus.h>
 #include <linux/msm-bus-board.h>
 #endif
-#include <linux/dpu_io_util.h>
 #include <linux/dpu_rsc.h>
 
 #include "dpu_power_handle.h"
diff --git a/drivers/gpu/drm/msm/dpu_power_handle.h b/drivers/gpu/drm/msm/dpu_power_handle.h
index 25a00b1589be..5e270becf9a9 100644
--- a/drivers/gpu/drm/msm/dpu_power_handle.h
+++ b/drivers/gpu/drm/msm/dpu_power_handle.h
@@ -21,7 +21,7 @@
 #define DPU_POWER_HANDLE_ENABLE_BUS_IB_QUOTA	1600000000
 #define DPU_POWER_HANDLE_DISABLE_BUS_IB_QUOTA	0
 
-#include <linux/dpu_io_util.h>
+#include "dpu_io_util.h"
 
 /* event will be triggered before power handler disable */
 #define DPU_POWER_EVENT_PRE_DISABLE	0x1
diff --git a/drivers/gpu/drm/msm/dpu_rsc_priv.h b/drivers/gpu/drm/msm/dpu_rsc_priv.h
index b28a339be17a..29751832eeb9 100644
--- a/drivers/gpu/drm/msm/dpu_rsc_priv.h
+++ b/drivers/gpu/drm/msm/dpu_rsc_priv.h
@@ -15,7 +15,6 @@
 #define _DPU_RSC_PRIV_H_
 
 #include <linux/kernel.h>
-#include <linux/dpu_io_util.h>
 #include <linux/dpu_rsc.h>
 
 #include <soc/qcom/tcs.h>
diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h
index 6c2f24b34fd0..c2b8059eb8ff 100644
--- a/drivers/gpu/drm/msm/msm_drv.h
+++ b/drivers/gpu/drm/msm/msm_drv.h
@@ -33,7 +33,6 @@
 #include <linux/types.h>
 #include <linux/of_graph.h>
 #include <linux/of_device.h>
-#include <linux/dpu_io_util.h>
 #include <asm/sizes.h>
 #include <linux/kthread.h>
 
-- 
2.16.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [RFC PULL] Add Display Support for Qualcomm SDM845
  2018-02-13 19:18 [RFC PULL] Add Display Support for Qualcomm SDM845 Sean Paul
                   ` (2 preceding siblings ...)
  2018-02-15 20:15 ` Jordan Crouse
@ 2018-02-16  1:25 ` Rob Herring
  3 siblings, 0 replies; 17+ messages in thread
From: Rob Herring @ 2018-02-16  1:25 UTC (permalink / raw)
  To: Sean Paul
  Cc: jeykumar, mkavm, linux-arm-msm, dri-devel, nganji, abhinavk,
	Dave Airlie, Kristian H. Kristensen, freedreno, chandanu

On Tue, Feb 13, 2018 at 1:18 PM, Sean Paul <seanpaul@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@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 :)


>  .../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 +++

Not a correct path with /drm/.

772 lines for a panel or DSI!? I look at it when it is shorter...

>  .../devicetree/bindings/fb/mdss-dsi-panel.txt      |  742 +++

Hopefully just duplicated?

>  Documentation/devicetree/bindings/fb/mdss-pll.txt  |  103 +

Not a correct path either.

>  .../devicetree/bindings/msm_hdcp/msm_hdcp.txt      |   14 +

ditto.

Rob
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC PULL] Add Display Support for Qualcomm SDM845
  2018-02-13 20:00 ` Rob Clark
       [not found]   ` <CAF6AEGtt6Eaw=pSOYUy2u0P7k_+Pepv-Ox-VKcC_9NF68kzoug-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  2018-02-14 18:17   ` jsanka
@ 2018-02-19 14:45   ` Daniel Vetter
  2 siblings, 0 replies; 17+ messages in thread
From: Daniel Vetter @ 2018-02-19 14:45 UTC (permalink / raw)
  To: Rob Clark
  Cc: freedreno, Sankaran, Jeykumar, linux-arm-msm, dri-devel, Ganji,
	Nagamalleswararao, Abhinav Kumar, Dave Airlie,
	Kristian H. Kristensen, Manoj Kumar AVM, Chandan Uddaraju

On Tue, Feb 13, 2018 at 03:00:09PM -0500, Rob Clark wrote:
> On Tue, Feb 13, 2018 at 2:18 PM, Sean Paul <seanpaul@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@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@vmware.com> and Lukasz Spintzyk <lukasz.spintzyk@displaylink.com>
> > - Uma Shankar <uma.shankar@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?

Sounds like this should reuse the mdp5 framework in msm, at least in
parts? Reinventing the same virtualization will get boring :-)

>  - 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.)

Just a general reminder: uapi is uapi, even if it's hidden behind pointers
or properties, or other stuff. So usual rules apply:
- we need proper review of the stuff
- we need real open source userspace for it all
- where it makes sense, we really need to have it standardized across
  drivers (we've dug ourselves a bit a hole in that regard with the
  initial set of plane/crtc properties, which was a bit too much free for
  all).

My recommendation for new driver codebases is to just disable all the
nonstandard stuff for the initial upstreaming (you can keep the back-end
code, that's what we've done in parts with DC). This unblocks the basic
enabling from the uapi discussions.

But most of it is highlighted in Sean's mail already.

>  - 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.

Wrt the precise balance between getting things upstream quickly and not
ending up with a complete turd that reinvents everything I'll leave that
to you and Sean to figure out. Imo the much more important part is whether
the original authors want (and actually can, and have shown to) engage
with upstream. That's what made me ack AMD's DC, not so much the state of
the code itself - given how fast gpus move, that will always be in slight
state of disrepair :-)

Cheers, Daniel

> 
> 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
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH] drm/msm/dpu: Remove unused code and move the header
       [not found]     ` <20180215204535.29510-1-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
@ 2018-02-20 14:52       ` Rob Clark
  0 siblings, 0 replies; 17+ messages in thread
From: Rob Clark @ 2018-02-20 14:52 UTC (permalink / raw)
  To: Jordan Crouse
  Cc: freedreno, Sankaran, Jeykumar, linux-arm-msm, dri-devel,
	Sean Paul, Ganji, Nagamalleswararao, Abhinav Kumar, Dave Airlie,
	Kristian H. Kristensen, Manoj Kumar AVM, Chandan Uddaraju

On Thu, Feb 15, 2018 at 3:45 PM, Jordan Crouse <jcrouse@codeaurora.org> wrote:
> Remove unused code from dpu_io_util.c.  The functions are only
> used inside of the msm driver so remove the EXPORT_SYMBOL
> tags and move the header dpu_io_util.h from include/linux.
>
> Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>

Thanks,

Reviewed-by: Rob Clark <robdclark@gmail.com>

> ---
>  drivers/gpu/drm/msm/dp/dp_parser.h                 |   2 +-
>  drivers/gpu/drm/msm/dpu_io_util.c                  | 154 ++-------------------
>  .../linux => drivers/gpu/drm/msm}/dpu_io_util.h    |  10 --
>  drivers/gpu/drm/msm/dpu_power_handle.c             |   1 -
>  drivers/gpu/drm/msm/dpu_power_handle.h             |   2 +-
>  drivers/gpu/drm/msm/dpu_rsc_priv.h                 |   1 -
>  drivers/gpu/drm/msm/msm_drv.h                      |   1 -
>  7 files changed, 14 insertions(+), 157 deletions(-)
>  rename {include/linux => drivers/gpu/drm/msm}/dpu_io_util.h (86%)
>
> diff --git a/drivers/gpu/drm/msm/dp/dp_parser.h b/drivers/gpu/drm/msm/dp/dp_parser.h
> index a9cfd03fa5ed..703acb010c8b 100644
> --- a/drivers/gpu/drm/msm/dp/dp_parser.h
> +++ b/drivers/gpu/drm/msm/dp/dp_parser.h
> @@ -15,7 +15,7 @@
>  #ifndef _DP_PARSER_H_
>  #define _DP_PARSER_H_
>
> -#include <linux/dpu_io_util.h>
> +#include "dpu_io_util.h"
>
>  #define DP_LABEL "MDSS DP DISPLAY"
>  #define AUX_CFG_LEN    10
> diff --git a/drivers/gpu/drm/msm/dpu_io_util.c b/drivers/gpu/drm/msm/dpu_io_util.c
> index a18bc992c136..f39ae38e4cfa 100644
> --- a/drivers/gpu/drm/msm/dpu_io_util.c
> +++ b/drivers/gpu/drm/msm/dpu_io_util.c
> @@ -16,9 +16,9 @@
>  #include <linux/io.h>
>  #include <linux/regulator/consumer.h>
>  #include <linux/delay.h>
> -#include <linux/dpu_io_util.h>
>
> -#define MAX_I2C_CMDS  16
> +#include "dpu_io_util.h"
> +
>  void dss_reg_w(struct dss_io_data *io, u32 offset, u32 value, u32 debug)
>  {
>         u32 in_val;
> @@ -42,8 +42,7 @@ void dss_reg_w(struct dss_io_data *io, u32 offset, u32 value, u32 debug)
>                         (u32)(unsigned long)(io->base + offset),
>                         value, in_val);
>         }
> -} /* dss_reg_w */
> -EXPORT_SYMBOL(dss_reg_w);
> +}
>
>  u32 dss_reg_r(struct dss_io_data *io, u32 offset, u32 debug)
>  {
> @@ -67,30 +66,7 @@ u32 dss_reg_r(struct dss_io_data *io, u32 offset, u32 debug)
>                         (u32)(unsigned long)(io->base + offset), value);
>
>         return value;
> -} /* dss_reg_r */
> -EXPORT_SYMBOL(dss_reg_r);
> -
> -void dss_reg_dump(void __iomem *base, u32 length, const char *prefix,
> -       u32 debug)
> -{
> -       if (debug)
> -               print_hex_dump(KERN_INFO, prefix, DUMP_PREFIX_OFFSET, 32, 4,
> -                       (void *)base, length, false);
> -} /* dss_reg_dump */
> -EXPORT_SYMBOL(dss_reg_dump);
> -
> -static struct resource *msm_dss_get_res_byname(struct platform_device *pdev,
> -       unsigned int type, const char *name)
> -{
> -       struct resource *res = NULL;
> -
> -       res = platform_get_resource_byname(pdev, type, name);
> -       if (!res)
> -               DEV_ERR("%s: '%s' resource not found\n", __func__, name);
> -
> -       return res;
> -} /* msm_dss_get_res_byname */
> -EXPORT_SYMBOL(msm_dss_get_res_byname);
> +}
>
>  int msm_dss_ioremap_byname(struct platform_device *pdev,
>         struct dss_io_data *io_data, const char *name)
> @@ -103,7 +79,7 @@ int msm_dss_ioremap_byname(struct platform_device *pdev,
>                 return -EINVAL;
>         }
>
> -       res = msm_dss_get_res_byname(pdev, IORESOURCE_MEM, name);
> +       res = platform_get_resource_byname(pdev, IORESOURCE_MEM, name);
>         if (!res) {
>                 DEV_ERR("%pS->%s: '%s' msm_dss_get_res_byname failed\n",
>                         __builtin_return_address(0), __func__, name);
> @@ -119,8 +95,7 @@ int msm_dss_ioremap_byname(struct platform_device *pdev,
>         }
>
>         return 0;
> -} /* msm_dss_ioremap_byname */
> -EXPORT_SYMBOL(msm_dss_ioremap_byname);
> +}
>
>  void msm_dss_iounmap(struct dss_io_data *io_data)
>  {
> @@ -135,8 +110,7 @@ void msm_dss_iounmap(struct dss_io_data *io_data)
>                 io_data->base = NULL;
>         }
>         io_data->len = 0;
> -} /* msm_dss_iounmap */
> -EXPORT_SYMBOL(msm_dss_iounmap);
> +}
>
>  int msm_dss_config_vreg(struct device *dev, struct dss_vreg *in_vreg,
>         int num_vreg, int config)
> @@ -211,8 +185,7 @@ if (type == DSS_REG_LDO)
>                 goto vreg_unconfig;
>         }
>         return rc;
> -} /* msm_dss_config_vreg */
> -EXPORT_SYMBOL(msm_dss_config_vreg);
> +}
>
>  int msm_dss_enable_vreg(struct dss_vreg *in_vreg, int num_vreg, int enable)
>  {
> @@ -283,48 +256,7 @@ int msm_dss_enable_vreg(struct dss_vreg *in_vreg, int num_vreg, int enable)
>         }
>
>         return rc;
> -} /* msm_dss_enable_vreg */
> -EXPORT_SYMBOL(msm_dss_enable_vreg);
> -
> -int msm_dss_enable_gpio(struct dss_gpio *in_gpio, int num_gpio, int enable)
> -{
> -       int i = 0, rc = 0;
> -
> -       if (enable) {
> -               for (i = 0; i < num_gpio; i++) {
> -                       DEV_DBG("%pS->%s: %s enable\n",
> -                               __builtin_return_address(0), __func__,
> -                               in_gpio[i].gpio_name);
> -
> -                       rc = gpio_request(in_gpio[i].gpio,
> -                               in_gpio[i].gpio_name);
> -                       if (rc < 0) {
> -                               DEV_ERR("%pS->%s: %s enable failed\n",
> -                                       __builtin_return_address(0), __func__,
> -                                       in_gpio[i].gpio_name);
> -                               goto disable_gpio;
> -                       }
> -                       gpio_set_value(in_gpio[i].gpio, in_gpio[i].value);
> -               }
> -       } else {
> -               for (i = num_gpio-1; i >= 0; i--) {
> -                       DEV_DBG("%pS->%s: %s disable\n",
> -                               __builtin_return_address(0), __func__,
> -                               in_gpio[i].gpio_name);
> -                       if (in_gpio[i].gpio)
> -                               gpio_free(in_gpio[i].gpio);
> -               }
> -       }
> -       return rc;
> -
> -disable_gpio:
> -       for (i--; i >= 0; i--)
> -               if (in_gpio[i].gpio)
> -                       gpio_free(in_gpio[i].gpio);
> -
> -       return rc;
> -} /* msm_dss_enable_gpio */
> -EXPORT_SYMBOL(msm_dss_enable_gpio);
> +}
>
>  void msm_dss_put_clk(struct dss_clk *clk_arry, int num_clk)
>  {
> @@ -335,8 +267,7 @@ void msm_dss_put_clk(struct dss_clk *clk_arry, int num_clk)
>                         clk_put(clk_arry[i].clk);
>                 clk_arry[i].clk = NULL;
>         }
> -} /* msm_dss_put_clk */
> -EXPORT_SYMBOL(msm_dss_put_clk);
> +}
>
>  int msm_dss_get_clk(struct device *dev, struct dss_clk *clk_arry, int num_clk)
>  {
> @@ -363,8 +294,7 @@ int msm_dss_get_clk(struct device *dev, struct dss_clk *clk_arry, int num_clk)
>         }
>
>         return rc;
> -} /* msm_dss_get_clk */
> -EXPORT_SYMBOL(msm_dss_get_clk);
> +}
>
>  int msm_dss_clk_set_rate(struct dss_clk *clk_arry, int num_clk)
>  {
> @@ -397,8 +327,7 @@ int msm_dss_clk_set_rate(struct dss_clk *clk_arry, int num_clk)
>         }
>
>         return rc;
> -} /* msm_dss_clk_set_rate */
> -EXPORT_SYMBOL(msm_dss_clk_set_rate);
> +}
>
>  int msm_dss_enable_clk(struct dss_clk *clk_arry, int num_clk, int enable)
>  {
> @@ -445,63 +374,4 @@ int msm_dss_enable_clk(struct dss_clk *clk_arry, int num_clk, int enable)
>         }
>
>         return rc;
> -} /* msm_dss_enable_clk */
> -EXPORT_SYMBOL(msm_dss_enable_clk);
> -
> -
> -int dpu_i2c_byte_read(struct i2c_client *client, uint8_t slave_addr,
> -                       uint8_t reg_offset, uint8_t *read_buf)
> -{
> -       struct i2c_msg msgs[2];
> -       int ret = -1;
> -
> -       pr_debug("%s: reading from slave_addr=[%x] and offset=[%x]\n",
> -                __func__, slave_addr, reg_offset);
> -
> -       msgs[0].addr = slave_addr >> 1;
> -       msgs[0].flags = 0;
> -       msgs[0].buf = &reg_offset;
> -       msgs[0].len = 1;
> -
> -       msgs[1].addr = slave_addr >> 1;
> -       msgs[1].flags = I2C_M_RD;
> -       msgs[1].buf = read_buf;
> -       msgs[1].len = 1;
> -
> -       ret = i2c_transfer(client->adapter, msgs, 2);
> -       if (ret < 1) {
> -               pr_err("%s: I2C READ FAILED=[%d]\n", __func__, ret);
> -               return -EACCES;
> -       }
> -       pr_debug("%s: i2c buf is [%x]\n", __func__, *read_buf);
> -       return 0;
> -}
> -EXPORT_SYMBOL(dpu_i2c_byte_read);
> -
> -int dpu_i2c_byte_write(struct i2c_client *client, uint8_t slave_addr,
> -                       uint8_t reg_offset, uint8_t *value)
> -{
> -       struct i2c_msg msgs[1];
> -       uint8_t data[2];
> -       int status = -EACCES;
> -
> -       pr_debug("%s: writing from slave_addr=[%x] and offset=[%x]\n",
> -                __func__, slave_addr, reg_offset);
> -
> -       data[0] = reg_offset;
> -       data[1] = *value;
> -
> -       msgs[0].addr = slave_addr >> 1;
> -       msgs[0].flags = 0;
> -       msgs[0].len = 2;
> -       msgs[0].buf = data;
> -
> -       status = i2c_transfer(client->adapter, msgs, 1);
> -       if (status < 1) {
> -               pr_err("I2C WRITE FAILED=[%d]\n", status);
> -               return -EACCES;
> -       }
> -       pr_debug("%s: I2C write status=%x\n", __func__, status);
> -       return status;
>  }
> -EXPORT_SYMBOL(dpu_i2c_byte_write);
> diff --git a/include/linux/dpu_io_util.h b/drivers/gpu/drm/msm/dpu_io_util.h
> similarity index 86%
> rename from include/linux/dpu_io_util.h
> rename to drivers/gpu/drm/msm/dpu_io_util.h
> index 7c7389999577..c590bd38e940 100644
> --- a/include/linux/dpu_io_util.h
> +++ b/drivers/gpu/drm/msm/dpu_io_util.h
> @@ -35,7 +35,6 @@ struct dss_io_data {
>
>  void dss_reg_w(struct dss_io_data *io, u32 offset, u32 value, u32 debug);
>  u32 dss_reg_r(struct dss_io_data *io, u32 offset, u32 debug);
> -void dss_reg_dump(void __iomem *base, u32 len, const char *prefix, u32 debug);
>
>  #define DSS_REG_W_ND(io, offset, val)  dss_reg_w(io, offset, val, false)
>  #define DSS_REG_W(io, offset, val)     dss_reg_w(io, offset, val, true)
> @@ -69,7 +68,6 @@ struct dss_gpio {
>  enum dss_clk_type {
>         DSS_CLK_AHB, /* no set rate. rate controlled through rpm */
>         DSS_CLK_PCLK,
> -       DSS_CLK_OTHER,
>  };
>
>  struct dss_clk {
> @@ -93,9 +91,6 @@ int msm_dss_ioremap_byname(struct platform_device *pdev,
>         struct dss_io_data *io_data, const char *name);
>  void msm_dss_iounmap(struct dss_io_data *io_data);
>
> -int msm_dss_enable_gpio(struct dss_gpio *in_gpio, int num_gpio, int enable);
> -int msm_dss_gpio_enable(struct dss_gpio *in_gpio, int num_gpio, int enable);
> -
>  int msm_dss_config_vreg(struct device *dev, struct dss_vreg *in_vreg,
>         int num_vreg, int config);
>  int msm_dss_enable_vreg(struct dss_vreg *in_vreg, int num_vreg,        int enable);
> @@ -105,9 +100,4 @@ void msm_dss_put_clk(struct dss_clk *clk_arry, int num_clk);
>  int msm_dss_clk_set_rate(struct dss_clk *clk_arry, int num_clk);
>  int msm_dss_enable_clk(struct dss_clk *clk_arry, int num_clk, int enable);
>
> -int dpu_i2c_byte_read(struct i2c_client *client, uint8_t slave_addr,
> -                      uint8_t reg_offset, uint8_t *read_buf);
> -int dpu_i2c_byte_write(struct i2c_client *client, uint8_t slave_addr,
> -                       uint8_t reg_offset, uint8_t *value);
> -
>  #endif /* __DPU_IO_UTIL_H__ */
> diff --git a/drivers/gpu/drm/msm/dpu_power_handle.c b/drivers/gpu/drm/msm/dpu_power_handle.c
> index 477ea9f2778c..48c7d1b6072b 100644
> --- a/drivers/gpu/drm/msm/dpu_power_handle.c
> +++ b/drivers/gpu/drm/msm/dpu_power_handle.c
> @@ -25,7 +25,6 @@
>  #include <linux/msm-bus.h>
>  #include <linux/msm-bus-board.h>
>  #endif
> -#include <linux/dpu_io_util.h>
>  #include <linux/dpu_rsc.h>
>
>  #include "dpu_power_handle.h"
> diff --git a/drivers/gpu/drm/msm/dpu_power_handle.h b/drivers/gpu/drm/msm/dpu_power_handle.h
> index 25a00b1589be..5e270becf9a9 100644
> --- a/drivers/gpu/drm/msm/dpu_power_handle.h
> +++ b/drivers/gpu/drm/msm/dpu_power_handle.h
> @@ -21,7 +21,7 @@
>  #define DPU_POWER_HANDLE_ENABLE_BUS_IB_QUOTA   1600000000
>  #define DPU_POWER_HANDLE_DISABLE_BUS_IB_QUOTA  0
>
> -#include <linux/dpu_io_util.h>
> +#include "dpu_io_util.h"
>
>  /* event will be triggered before power handler disable */
>  #define DPU_POWER_EVENT_PRE_DISABLE    0x1
> diff --git a/drivers/gpu/drm/msm/dpu_rsc_priv.h b/drivers/gpu/drm/msm/dpu_rsc_priv.h
> index b28a339be17a..29751832eeb9 100644
> --- a/drivers/gpu/drm/msm/dpu_rsc_priv.h
> +++ b/drivers/gpu/drm/msm/dpu_rsc_priv.h
> @@ -15,7 +15,6 @@
>  #define _DPU_RSC_PRIV_H_
>
>  #include <linux/kernel.h>
> -#include <linux/dpu_io_util.h>
>  #include <linux/dpu_rsc.h>
>
>  #include <soc/qcom/tcs.h>
> diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h
> index 6c2f24b34fd0..c2b8059eb8ff 100644
> --- a/drivers/gpu/drm/msm/msm_drv.h
> +++ b/drivers/gpu/drm/msm/msm_drv.h
> @@ -33,7 +33,6 @@
>  #include <linux/types.h>
>  #include <linux/of_graph.h>
>  #include <linux/of_device.h>
> -#include <linux/dpu_io_util.h>
>  #include <asm/sizes.h>
>  #include <linux/kthread.h>
>
> --
> 2.16.1
>
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [RFC PULL] Add Display Support for Qualcomm SDM845
       [not found]       ` <CAF6AEGsPTWFzaHTATeGAoQkCiOObZ4WzKr1yPFFd3k3wO1=AnA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2018-02-20 15:09         ` Rob Clark
  0 siblings, 0 replies; 17+ messages in thread
From: Rob Clark @ 2018-02-20 15:09 UTC (permalink / raw)
  To: jsanka
  Cc: freedreno, Sankaran, Jeykumar, linux-arm-msm, dri-devel,
	Sean Paul, Ganji, Nagamalleswararao, Abhinav Kumar, Dave Airlie,
	Kristian H. Kristensen, Manoj Kumar AVM, Chandan Uddaraju

On Wed, Feb 14, 2018 at 2:08 PM, Rob Clark <robdclark@gmail.com> wrote:
> On Wed, Feb 14, 2018 at 1:17 PM, jsanka <jsanka@codeaurora.org> wrote:
>> On 2/13/2018 12:00 PM, Rob Clark wrote:
>>>
>>>   - 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 ;-))
>>
>> We are working on plane virtualization focused primarily to support 4K /
>> wider displays which cannot
>> be catered by one hwpipe. The plan is to gang up two *fixed* hwpipes of
>> similar capabilities (in terms of formats,
>> sub hw blocks like scalar, post processing ) and expose them as a single
>> plane so that user space
>> compositor ( drm-hwc or weston) need not worry about max pixel width
>> supported by the planes. But mapping
>> planes <-> hwpipe dynamically may need more than just virtualization. Kernel
>> need to keep track of hwpipes
>> especially when dealing with multiple displays. And it get complicated when
>> planes start moving around CRTC's
>> for different sized buffers.
>
> Hmm, a fixed mapping of hw pipe to plane might be an ok stepping
> stone.  I'm not sure it is a terribly good final solution, esp. when
> it comes to external displays, since you may never need 4k+ scanout,
> depending on what the user plugs in, so you end up wasting a lot of hw
> pipes.
>
> Keeping track of the hwpipes as part of the driver global atomic state
> isn't actually *that* hard.  Have a look at what mdp5 does.  We still
> need to move mdp5 to drm_private_obj instead of subclassing
> drm_atomic_state (see Archit's RFC, "drm/msm/mdp5: Add global state as
> a private atomic object"), but other than that detail, I think
> something along those lines is a better approach.
>

One additional point that I thought about, while implementing
writeback on mdp5.. I think with a cmd-mode panel (and dp psr?) we
could re-use idle hwpipes (ie. while not pushing an update out to the
panel) with a different crtc (LM) and writeback connector to flatten
all the layers to a single buffer while the screen is static, without
having to remove the drm planes from the crtc.  I think that would be
a lot less confusing than figuring out somehow that removing a plane
from a crtc shouldn't be flushed out to the panel.

BR,
-R
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2018-02-20 15:09 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-13 19:18 [RFC PULL] Add Display Support for Qualcomm SDM845 Sean Paul
2018-02-13 20:00 ` Rob Clark
     [not found]   ` <CAF6AEGtt6Eaw=pSOYUy2u0P7k_+Pepv-Ox-VKcC_9NF68kzoug-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-02-14  8:30     ` Daniel Stone
2018-02-14 12:22       ` Rob Clark
2018-02-14 13:50         ` Sean Paul
2018-02-14 14:37           ` Daniel Stone
2018-02-14 16:13     ` Rob Clark
2018-02-14 18:17   ` jsanka
2018-02-14 19:08     ` Rob Clark
     [not found]       ` <CAF6AEGsPTWFzaHTATeGAoQkCiOObZ4WzKr1yPFFd3k3wO1=AnA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-02-20 15:09         ` Rob Clark
2018-02-19 14:45   ` Daniel Vetter
2018-02-14  0:02 ` Jordan Crouse
2018-02-14  0:43   ` [Freedreno] " Rob Clark
2018-02-15 20:15 ` Jordan Crouse
2018-02-15 20:45   ` [PATCH] drm/msm/dpu: Remove unused code and move the header Jordan Crouse
     [not found]     ` <20180215204535.29510-1-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-02-20 14:52       ` Rob Clark
2018-02-16  1:25 ` [RFC PULL] Add Display Support for Qualcomm SDM845 Rob Herring

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.