Re: [PATCH 08/13] drm/msm/dcp: Add DSI bridge
From: Dmitry Baryshkov
Date: Mon Oct 26 2026 - 06:26:36 EST
On Fri, Oct 23, 2026 at 12:47:10PM +0530, Jayant Shekhar wrote:
>
> On 15-10-2026 18:26, Dmitry Baryshkov wrote:
> > On Thu, Oct 15, 2026 at 01:08:28PM +0530, Jayant Shekhar wrote:
> > > The firmware owns the DSI controller and display session, so the DRM bridge
> > > must translate panel and connector operations into DCP HFI commands.
> > >
> > > Add the DCP DRM bridge for the MIPI DSI pipeline. Translate panel, mode,
> > > power, DCS, and display-session operations into HFI commands, together with
> > > the KMS session preparation and CRTC integration required by the bridge.
> > >
> > > Signed-off-by: Jayant Shekhar <jayant.shekhar@xxxxxxxxxxxxxxxx>
> > > Assisted-by: LLM
> > > ---
> > > drivers/gpu/drm/msm/Makefile | 1 +
> > > drivers/gpu/drm/msm/dcp/dcp_crtc.c | 14 +
> > > drivers/gpu/drm/msm/dcp/dcp_dpu_kms.c | 45 ++
> > > drivers/gpu/drm/msm/dcp/dcp_dpu_kms.h | 4 +-
> > > drivers/gpu/drm/msm/dcp/dcp_dsi_bridge.c | 1140 ++++++++++++++++++++++++++++++
> > > drivers/gpu/drm/msm/dcp/dcp_dsi_bridge.h | 69 ++
> > > drivers/gpu/drm/msm/dcp/dcp_plane.c | 8 +-
> > > drivers/gpu/drm/msm/dcp/dcp_plane.h | 1 +
> > > 8 files changed, 1279 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile
> > > index e7d24be72113..9910bd4f306d 100644
> > > --- a/drivers/gpu/drm/msm/Makefile
> > > +++ b/drivers/gpu/drm/msm/Makefile
> > > @@ -72,6 +72,7 @@ msm-display-$(CONFIG_DRM_MSM_MDP5) += \
> > > msm-display-$(CONFIG_DRM_MSM_DCP) += \
> > > dcp/dcp_crtc.o \
> > > dcp/dcp_dpu_kms.o \
> > > + dcp/dcp_dsi_bridge.o \
> > > dcp/dcp_hfi_core.o \
> > > dcp/dcp_hfi_crtc.o \
> > > dcp/dcp_hfi_dsi.o \
> > > diff --git a/drivers/gpu/drm/msm/dcp/dcp_crtc.c b/drivers/gpu/drm/msm/dcp/dcp_crtc.c
> > > index ede81881d495..fb8920d44f8a 100644
> > > --- a/drivers/gpu/drm/msm/dcp/dcp_crtc.c
> > > +++ b/drivers/gpu/drm/msm/dcp/dcp_crtc.c
> > > @@ -147,6 +147,12 @@ static void dcp_crtc_atomic_begin(struct drm_crtc *crtc,
> > > return;
> > > }
> > > + ret = dcp_dpu_kms_prepare_crtc_session(dcp_kms, crtc);
> > Do you have the session mechanism described somewhere?
> >
>
> The session is an HFI display session created with HFI_CMD_DISPLAY_ENABLE.
> DCP requires a valid session ID before accepting destination-ROI,
> plane-property, and frame-trigger commands.
> dcp_dpu_kms_prepare_crtc_session() finds the DSI bridge associated with the
> CRTC and calls dcp_dsi_bridge_prepare_session(). That function opens the HFI
> display session once, stores the firmware-assigned session ID, and publishes
> it to the CRTC.
> The session is then used by the remaining operations in atomic_begin() and
> atomic_flush(). The bridge’s atomic_pre_enable() verifies that the session
> was prepared, while atomic_post_disable() sends DISPLAY_CLOSE and clears it.
I didn't ask to describe it as a comment. I really hope to see some docs
in the driver.
> >
> > > + dcp_dsi_bridge_get_mixer_count(dsi_bridge,
> > > + &state->hfi_panel_config, mode);
> > > + state->hfi_panel_config.topology_enc_count =
> > > + state->hfi_panel_config.topology_mixer_count;
> > > + state->hfi_panel_config.topology_intf_count = 1;
> > No 2:2:2 support? Can we just drop DSC support for now and add it later?
> >
>
> The current series supports a single DSI output with one encoder and one
> interface. It does not support split-pipe or 2:2:2 topologies, will be added
> separately.
> DSC support cannot be removed from this series because the Hawi MTP test
> panel requires DSC. DSC is part of the panel/DSI configuration and is
That's a hardware problem. Use a different panel for the initial
validation, then add the DSC support on top.
> independent of split-pipe or 2:2:2 resource allocation.
> This series establishes the basic topology and HFI/DRM plumbing needed to
> validate the DCP KMS backend. A follow-up will add dynamic mixer, encoder,
> and interface allocation, including 2:2:2 and other split-display
> topologies.
>
--
With best wishes
Dmitry