[PATCH v2 00/19] Add support for CDM over DP
Paloma Arellano
quic_parellan at quicinc.com
Sat Feb 10 01:51:51 UTC 2024
The Chroma Down Sampling (CDM) block is a hardware component in the DPU
pipeline that includes a CSC block capable of converting RGB input from
the DPU to YUV data.
This block can be used with either HDMI, DP, or writeback interfaces.
This series adds support for the CDM block to be used with DP in
YUV420 mode format.
This series allows selection of the YUV420 format for monitors which support
certain resolutions only in YUV420 thus unblocking the validation of many
other resolutions which were previously filtered out if the connector did
not support YUV420.
This was validated using a DP connected monitor requiring the use of
YUV420 format.
This series is dependent on [1] and [2]:
[1] https://patchwork.freedesktop.org/series/118831/
[2] https://patchwork.freedesktop.org/series/129395/
Changes in v2:
- Minor formatting changes throughout
- Move 'fixes' patch to the top
- Move VSC SDP support check API from dp_panel.c to drm_dp_helper.c
- Create a separate patch for modifying the dimensions for CDM setup to be
non-WB specific
- Remove a patch that modified the INTF_CONFIG2 register in favor of having
this series be dependent on [2]
- Separate configuration ctrl programming from clock related programming into
two patches
- Add a VSC SDP check in dp_bridge_mode_valid()
- Move parity calculation functions to new files dp_utils.c and dp_utils.h
- Remove dp_catalog_hw_revision() changes and utilize the original version of
the function when checking the DP hardware version
- Create separate packing and programming functions for the VSC SDP
- Make the packing header bytes function generic so it can be used with
dp_audio.c
- Create two separate enable/disable VSC SDP functions instead of having one
with the ability to do both
- Move timing engine programming to a separate patch from original encoder
programming patch
- Move update_pending_flush_periph() code to be in the same patch as the
encoder programming
- Create new API's to check if the dpu encoder needs a peripheral flush
- Allow YUV420 modes for the DP connector when there's a CDM block available
instead of checking if VSC SDP is supported
Kuogee Hsieh (1):
drm/msm/dpu: add support of new peripheral flush mechanism
Paloma Arellano (18):
drm/msm/dpu: allow certain formats for CDM for DP
drm/msm/dp: add an API to indicate if sink supports VSC SDP
drm/msm/dpu: pass mode dimensions instead of fb size in CDM setup
drm/msm/dpu: allow dpu_encoder_helper_phys_setup_cdm to work for DP
drm/msm/dpu: move dpu_encoder_helper_phys_setup_cdm to dpu_encoder
drm/msm/dp: rename wide_bus_en to wide_bus_supported
drm/msm/dp: store mode YUV420 information to be used by rest of DP
drm/msm/dp: check if VSC SDP is supported in DP programming
drm/msm/dpu: move widebus logic to its own API
drm/msm/dp: program config ctrl for YUV420 over DP
drm/msm/dp: change clock related programming for YUV420 over DP
drm/msm/dp: move parity calculation to dp_utils
drm/msm/dp: add VSC SDP support for YUV420 over DP
drm/msm/dp: enable SDP and SDE periph flush update
drm/msm/dpu: modify encoder programming for CDM over DP
drm/msm/dpu: modify timing engine programming for YUV420 over DP
drm/msm/dpu: reserve CDM blocks for DP if mode is YUV420
drm/msm/dp: allow YUV420 mode for DP connector when CDM available
drivers/gpu/drm/display/drm_dp_helper.c | 21 +++
drivers/gpu/drm/msm/Makefile | 3 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 164 +++++++++++++++---
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h | 4 +
.../gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h | 26 ++-
.../drm/msm/disp/dpu1/dpu_encoder_phys_vid.c | 35 +++-
.../drm/msm/disp/dpu1/dpu_encoder_phys_wb.c | 100 +----------
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.c | 2 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c | 17 ++
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h | 10 ++
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 4 +-
drivers/gpu/drm/msm/dp/dp_audio.c | 101 ++---------
drivers/gpu/drm/msm/dp/dp_catalog.c | 127 +++++++++++++-
drivers/gpu/drm/msm/dp/dp_catalog.h | 9 +-
drivers/gpu/drm/msm/dp/dp_ctrl.c | 17 +-
drivers/gpu/drm/msm/dp/dp_display.c | 82 ++++++---
drivers/gpu/drm/msm/dp/dp_drm.c | 8 +-
drivers/gpu/drm/msm/dp/dp_drm.h | 3 +-
drivers/gpu/drm/msm/dp/dp_panel.c | 60 +++++++
drivers/gpu/drm/msm/dp/dp_panel.h | 2 +
drivers/gpu/drm/msm/dp/dp_reg.h | 5 +
drivers/gpu/drm/msm/dp/dp_utils.c | 151 ++++++++++++++++
drivers/gpu/drm/msm/dp/dp_utils.h | 25 +++
drivers/gpu/drm/msm/msm_drv.h | 22 ++-
include/drm/display/drm_dp_helper.h | 1 +
25 files changed, 757 insertions(+), 242 deletions(-)
create mode 100644 drivers/gpu/drm/msm/dp/dp_utils.c
create mode 100644 drivers/gpu/drm/msm/dp/dp_utils.h
--
2.39.2
More information about the Freedreno
mailing list