Skip to content

Tech mm drm lt9611c#1431

Open
mohitdsor wants to merge 79 commits into
qualcomm-linux:tech/mm/drmfrom
mohitdsor:tech-mm-drm-lt9611c
Open

Tech mm drm lt9611c#1431
mohitdsor wants to merge 79 commits into
qualcomm-linux:tech/mm/drmfrom
mohitdsor:tech-mm-drm-lt9611c

Conversation

@mohitdsor

Copy link
Copy Markdown

LT9611C Driver Changes
CRs-Fixed: 4552827

riteshk-quic and others added 30 commits May 5, 2026 14:57
… eDP PHY

The initial sa8775p eDP PHY binding contribution missed adding support for
voting on the eDP reference clock. This went unnoticed because the UFS PHY
driver happened to enable the same clock.

After commit 77d2fa5 ("scsi: ufs: qcom : Refactor phy_power_on/off
calls"), the eDP reference clock is no longer kept enabled, which results
in the following PHY power-on failure:

phy phy-aec2a00.phy.10: phy poweron failed --> -110

To fix this, explicit voting for the eDP reference clock is required.
This patch adds the eDP reference clock for sa8775p eDP PHY and updates
the corresponding example node.

Link: https://lore.kernel.org/all/20260128114853.2543416-2-quic_riteshk@quicinc.com/
Signed-off-by: Ritesh Kumar <quic_riteshk@quicinc.com>
…upport

Add binding for the Lontium LT9211C bridge chip.

Signed-off-by: Yi Zhang <zhanyi@qti.qualcomm.com>
Signed-off-by: Nilesh Laad <nilesh.laad@oss.qualcomm.com>
Signed-off-by: Gopi Botlagunta <venkata.botlagunta@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260323-add-lt9211c-bridge-v5-1-9c63bb035c17@oss.qualcomm.com/
Currently edid_read has value from previous connect session
and resulting in drm using older edid before new edid is available
in lt9611uxc.
Reset edid_read so that correct status is updated and correct edid
is available for drm.

Link: https://lore.kernel.org/lkml/20260202-lt9611uxc-reset-edid-v2-1-b1e1d72edc90@oss.qualcomm.com/
Signed-off-by: Ravi Agola <raviagol@qti.qualcomm.com>
Signed-off-by: Nilesh Laad <nilesh.laad@oss.qualcomm.com>
If HPD IRQ is enabled in the display_connector's probe, it can be
triggered too early, before the DRM connector is completely setup. Use
the enable_hpd / disable_hpd callbacks to control enablement of the HPD
IRQ.

Fixes: 0c275c3 ("drm/bridge: Add bridge driver for display connectors")
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260314-dp-connector-hpd-v1-1-786044cedc17@oss.qualcomm.com/
…r DP

If the DisplayPort drivers use display-connector for the HPD detection,
the internal HPD state machine might be not active and thus the hardware
might be not able to handle cable detection correctly. Instead it will
depend on the externall HPD notifications to set the cable state,
bypassing the internal HPD state machine (for example this is the case
for the msm DP driver).

However if the cable has been plugged before the HPD IRQ has been
enabled, there will be no HPD event coming. The drivers might fail
detection in such a case. Trigger the HPD notification after enabling
the HPD IRQ, propagating the cable insertion state.

Fixes: 2e2bf3a ("drm/bridge: display-connector: add DP support")
Reported-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260314-dp-connector-hpd-v1-2-786044cedc17@oss.qualcomm.com/
…r_hdmi_audio_ops

After reusing drm_hdmi_audio_* helpers and drm_bridge_connector
integration in drm/msm/dp, we have dropped msm_dp_audio_hw_params and
use msm_dp_audio_prepare instead. While userspace is still calling
hw_params to do audio initialization, and we get the following errors:

q6apm-lpass-dais 3700000.remoteproc:glink-edge:gpr:service@1:bedais: q6apm_lpass_dai_prepare() started
q6apm-lpass-dais 3700000.remoteproc:glink-edge:gpr:service@1:bedais: q6apm_lpass_dai_prepare() started
q6apm-lpass-dais 3700000.remoteproc:glink-edge:gpr:service@1:bedais: q6apm_lpass_dai_prepare() started
hdmi-audio-codec hdmi-audio-codec.0.auto: hdmi_codec_hw_params() started
q6apm-lpass-dais 3700000.remoteproc:glink-edge:gpr:service@1:bedais: q6apm_lpass_dai_prepare() started
qcom-apm gprsvc:service:2:1: Error (1) Processing 0x01001002 cmd
qcom-apm gprsvc:service:2:1: DSP returned error[1001002] 1
q6apm-lpass-dais 3700000.remoteproc:glink-edge:gpr:service@1:bedais: Failed to start APM port 104
q6apm-lpass-dais 3700000.remoteproc:glink-edge:gpr:service@1:bedais: ASoC error (-22): at snd_soc_dai_prepare() on DISPLAY_PORT_RX_0
MultiMedia2 Playback: ASoC error (-22): at dpcm_run_update_startup() on MultiMedia2 Playback

msm_dp_audio_prepare is not called because hdmi-codec driver only checks
and runs hw_params before q6apm_lpass_dai_prepare(). This commit will
add hw_params callback same as drm_connector_hdmi_audio_prepare, so that
hdmi-codec driver can work with userspace alsa.

Tested with Radxa Dragon Q6A.

Link: https://lore.kernel.org/linux-arm-msm/20250925040530.20731-1-liujianfeng1994@gmail.com/
Fixes: 98a8920 ("drm/msm/dp: reuse generic HDMI codec implementation")
Signed-off-by: Jianfeng Liu <liujianfeng1994@gmail.com>
Tested-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
The HPD state status is the 3 most significant bits, not 4 bits of the
HPD_INT_STATUS register.

Fix the bit shift macro so that the correct bits are returned in
msm_dp_aux_is_link_connected().

Fixes: 19e52bc ("drm/msm/dp: return correct connection status after suspend")
Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260314-hpd-refactor-v5-1-0c8450737d64@oss.qualcomm.com/
The ISR_HPD_* enum should represent values that can be read from the
REG_DP_DP_HPD_INT_STATUS register. Swap ISR_HPD_IO_GLITCH_COUNT and
ISR_HPD_REPLUG_COUNT to map them correctly to register values.

While we are at it, correct the spelling for ISR_HPD_REPLUG_COUNT.

Fixes: 8ede2ec ("drm/msm/dp: Add DP compliance tests on Snapdragon Chipsets")
Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link:https://lore.kernel.org/all/20260314-hpd-refactor-v5-2-0c8450737d64@oss.qualcomm.com/
Instead of relying on the link_ready flag to specify if DP is connected,
read the DPCD bits and get the sink count to accurately detect if DP is
connected.

Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link:https://lore.kernel.org/all/20260314-hpd-refactor-v5-3-0c8450737d64@oss.qualcomm.com/
Currently, the DP link training is being done during HPD. Move
link training to atomic_enable() in accordance with the atomic_enable()
documentation.

Link disabling is already done in atomic_post_disable() (as part of the
dp_ctrl_off_link_stream() helper).

Finally, call the plug/unplug handlers directly in hpd_notify() instead
of queueing them in the event thread so that they aren't preempted by
other events.

Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link:https://lore.kernel.org/all/20260314-hpd-refactor-v5-4-0c8450737d64@oss.qualcomm.com/
Currently, we queue an event for signalling HPD connect/disconnect. This
can mean a delay in plug/unplug handling and notifying DRM core when a
hotplug happens.

Drop EV_USER_NOTIFICATION and signal the IRQ event as part of hotplug
handling.

Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link:https://lore.kernel.org/all/20260314-hpd-refactor-v5-5-0c8450737d64@oss.qualcomm.com/
With EV_USER_NOTIFICATION gone event's data is no longer useful. Drop
it, removing also the argument from event handlers.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link:https://lore.kernel.org/all/20260314-hpd-refactor-v5-6-0c8450737d64@oss.qualcomm.com/
Handling of the HPD events in the MSM DP driver is plagued with lots of
problems. It tries to work aside of the main DRM framework, handling the
HPD signals on its own. There are two separate paths, one for the HPD
signals coming from the DP HPD pin and another path for signals coming
from outside (e.g. from the Type-C AltMode). It lies about the connected
state, returning the link established state instead. It is not easy to
understand or modify it. Having a separate event machine doesn't add
extra clarity.

Drop the whole event machine. When the DP receives a HPD event, send it
to the DRM core. Then handle the events in the hpd_notify callback,
unifying paths for HPD signals.

Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com>
Co-developed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link:https://lore.kernel.org/all/20260314-hpd-refactor-v5-7-0c8450737d64@oss.qualcomm.com/
Add sink count to the debug logs for [un]plug and HPD IRQ handling.

Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com>
[DB: dropped link_ready handling]
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link:https://lore.kernel.org/all/20260314-hpd-refactor-v5-8-0c8450737d64@oss.qualcomm.com/
Tracking when the DP link is ready isn't that useful from the driver
point of view. It doesn't provide a direct information if the device
should be suspended, etc. Replace it with the 'plugged' boolean, which
is set when the driver knows that there is DPRX plugged.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link:https://lore.kernel.org/all/20260314-hpd-refactor-v5-9-0c8450737d64@oss.qualcomm.com/
Currently the driver only updates the EDID when it detects a connected
monitor, which results in the connector still listing outdated modes
even after the display is unplugged. Set connector's EDID to NULL on
unplug to clear the list of modes.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link:https://lore.kernel.org/all/20260314-hpd-refactor-v5-10-0c8450737d64@oss.qualcomm.com/
…Glymur

The existing DP PHY PLL and AUX configuration for the Glymur platform
does not fully follow the Hardware Programming Guide requirements for
DP over Type-C, which results in DP link bring-up failures.

Update the DP PHY programming sequence and PLL-related register
settings to align with the latest HPG recommendations. With this
change, DP link training completes successfully on Glymur-based
platforms.

Fixes: d10736d ("phy: qualcomm: qmp-combo: Add DP offsets and settings for Glymur platforms")
Link: https://lore.kernel.org/r/20260419-glymur_dp-v1-1-ad1067a8e8ae@oss.qualcomm.com
Signed-off-by: Ritesh Kumar <ritesh.kumar@oss.qualcomm.com>
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
LT9211c is a Single/Dual-Link DSI/LVDS or Single DPI input to
Single-link/Dual-Link DSI/LVDS or Single DPI output bridge chip.
Extend the existing lontium-lt9211 driver to support DSI-to-LVDS
bridge configuration.

Signed-off-by: Yi Zhang <zhanyi@qti.qualcomm.com>
Signed-off-by: Nilesh Laad <nilesh.laad@oss.qualcomm.com>
Signed-off-by: Gopi Botlagunta <venkata.botlagunta@oss.qualcomm.com>
Link:https://lore.kernel.org/all/20260323-add-lt9211c-bridge-v5-2-9c63bb035c17@oss.qualcomm.com/
…o 1000ms

EDID interrupt was coming 600-650 ms after HPD interrupt, resulting
into EDID read timeout and default resolution of 1024x768 on display.

Signed-off-by: Gopi Botlagunta <venkata.botlagunta@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20251121-hdmibridge-v1-1-14c63890f362@oss.qualcomm.com/
Currently valid mode checks are only for hdisplay and vdisplay,
add htotal and vtotal to filter only specific modes.

Link:https://lore.kernel.org/lkml/20251126-lt9611uxc-modes-v2-1-34bf9b351921@oss.qualcomm.com/
Signed-off-by: Nilesh Laad <nilesh.laad@oss.qualcomm.com>
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
Add 3840x2160@30 mode in lt9611uxc modes to add support for
4K@30 resolution.

Link:https://lore.kernel.org/r/20251126-lt9611uxc-4k30-v2-1-3de0ea58c24e@oss.qualcomm.com
Signed-off-by: Nilesh Laad <nilesh.laad@oss.qualcomm.com>
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
The cached drm_edid seems unnecessary here. Use the drm_edid pointer
directly in the plug stage instead of caching it. Remove the cached
drm_edid and the corresponding oneliner to simplify the code.

Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260410-msm-dp-mst-v4-1-b20518dea8de@oss.qualcomm.com/
The bridge .mode_set() callback is deprecated. Remove it and move all
mode setup logic to .atomic_enable(), where the adjusted_mode is
available from the atomic CRTC state.

Drop msm_dp_mode from msm_dp_display_private and store the mode directly
in the panel, as it was only used as a temporary cache. Both changes are
limited to msm_dp_display_set_mode and are kept in a single patch.

Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260410-msm-dp-mst-v4-2-b20518dea8de@oss.qualcomm.com/
dp_display_enable() currently re-trains the link if needed and then
enables the pixel clock, programs the controller to start sending the
pixel stream. Split these two parts into prepare/enable APIs, to support
MST bridges_enable insert the MST payloads funcs between enable
stream_clks and program register.

Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260410-msm-dp-mst-v4-3-b20518dea8de@oss.qualcomm.com/
… parts

dp_display_disable() handles special case of when monitor is
disconnected from the dongle while the dongle stays connected
thereby needing a separate function dp_ctrl_off_link_stream()
for this. However with a slight rework this can still be handled
by keeping common paths same for regular and special case.

Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260410-msm-dp-mst-v4-4-b20518dea8de@oss.qualcomm.com/
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
…s and stream parts

The DP_CONFIGURATION_CTRL register contains both link-level and
stream-specific fields. Currently, msm_dp_ctrl_config_ctrl() configures
all of them together. Separates the configuration into link parts and
streams part for support MST.

Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260410-msm-dp-mst-v4-5-b20518dea8de@oss.qualcomm.com/
…te function

Refactor the MISC1_MISC0 register configuration into a standalone helper
function to support MST.

Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260410-msm-dp-mst-v4-6-b20518dea8de@oss.qualcomm.com/
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
msm_dp_ctrl_configure_source_params() should only handle stream-related
configuration. Move the link setup out of it so MST can program link and
stream settings separately.

Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260410-msm-dp-mst-v4-7-b20518dea8de@oss.qualcomm.com/
…ed to it

Currently, the dp_ctrl stream APIs operate on their own dp_panel
which is stored inside the dp_ctrl's private struct. However with MST,
the stored panel represents the fixed link and not the sinks which
are hotplugged. Allow the stream related APIs to work on the panel
which is passed to them rather than the stored one. For SST cases,
this shall continue to use the stored dp_panel.

Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260410-msm-dp-mst-v4-8-b20518dea8de@oss.qualcomm.com/
Enable/Disable of DP pixel clock happens in multiple code paths
leading to code duplication. Move it into individual helpers so that
the helpers can be called wherever necessary.

Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260410-msm-dp-mst-v4-9-b20518dea8de@oss.qualcomm.com/
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Abhinav Kumar and others added 21 commits May 7, 2026 22:44
Use msm_dp_get_mst_intf_id() to get the interface ID for the DP MST
controller as the intf_id is unique for each MST stream of each DP
controller.

For DSI/eDP/DP SST, the stream_id is always 0, so existing behavior
remains unchanged.

Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260410-msm-dp-mst-v4-38-b20518dea8de@oss.qualcomm.com/
…r 0 and 1

This change enables SA8775P support for Multi-Stream Transport (MST),
allowing each controller to handle up to two or four DisplayPort streams.
As all necessary code for MST support was already implemented in the
previous series of patches.

Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20250825-msm-dp-mst-v3-38-01faacfcdedd@oss.qualcomm.com/
…o HDMI driver

LT9611C(EX/UXD) is an I2C-controlled chip that Receiver signal/dual port
mipi dsi and output hdmi, differences in hardware features:
- LT9611C: supports 1-port mipi dsi to hdmi 1.4
- LT9611EX: supports 2-port mipi dsi to hdmi 1.4
- LT9611UXD: supports 2-port mipi dsi to hdmi 1.4/2.0

Link : https://lore.kernel.org/lkml/20260508134009.4582-3-syyang@lontium.com/
Signed-off-by: Sunyun Yang <syyang@lontium.com>
Signed-off-by: Mohit Dsor <mohit.dsor@oss.qualcomm.com>
…iver

LT9611C(EX/UXD) is an I2C-controlled chip that Receiver signal/dual port
mipi dsi and output hdmi, differences in hardware features:
- LT9611C: supports 1-port mipi dsi to hdmi 1.4
- LT9611EX: supports 2-port mipi dsi to hdmi 1.4
- LT9611UXD: supports 2-port mipi dsi to hdmi 1.4/2.0

Link : https://lore.kernel.org/lkml/20260508134009.4582-3-syyang@lontium.com/
Signed-off-by: Sunyun Yang <syyang@lontium.com>
Signed-off-by: Mohit Dsor <mohit.dsor@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
This reverts commit 9115cc6.
Revert due to regression issue

Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
This reverts commit 44240af.
revert due to regression issue

Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
…operations"

This reverts commit b4c8ea9.
revert due to regression issue

Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Add a new file dp_mst_drm to manage the DP MST bridge operations
similar to the dp_drm file which manages the SST bridge operations.
Each MST encoder creates one bridge and each bridge is bound to its
own dp_panel abstraction to manage the operations of its pipeline.

Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20250609-msm-dp-mst-v2-28-a54d8902a23d@quicinc.com/
Add connector abstraction for the DP MST. Each MST encoder
is connected through a DRM bridge to a MST connector and each
MST connector has a DP panel abstraction attached to it.

Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20250609-msm-dp-mst-v2-29-a54d8902a23d@quicinc.com/
Add HPD callback for the MST module which shall be invoked from the
dp_display's HPD handler to perform MST specific operations in case
of HPD. In MST case, route the HPD messages to MST module.

Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260410-msm-dp-mst-v4-37-b20518dea8de@oss.qualcomm.com/
…d handling

On RB8 hardware, after drm_dp_add_payload_part2() completes, the
downstream MST dongle has a high probability of silently dropping the
short-pulse IRQ at specific timing windows.

Implement the .poll_hpd_irq topology callback so that the DRM MST core can
proactively poll for unhandled sideband events whenever it suspects a
missed IRQ.

Note: The new MST series will integrate this change into the introduce MST
IRQ patch

Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260606-mst_irq-v1-1-98bd86445c03@oss.qualcomm.com/
…T9611C

Add a new optional `lontium,port-select` property to describe the DSI
input port configuration for the LT9611C variant, which supports
single-port (A or B) and dual-port (A+B) operation.

This property allows explicitly selecting the active DSI input port(s):
  0 = port A (default)
  1 = port B
  2 = ports A and B (dual-port)

Link: https://patch.msgid.link/20260611-lt9611-b4-send-v1-1-42abbcd3bb1e@oss.qualcomm.com
Signed-off-by: Mohit Dsor <mohit.dsor@oss.qualcomm.com>
…00ms

The on-chip MCU may take longer than 100ms to respond on some hardware
variants or slower I2C buses, causing spurious -ETIMEDOUT errors during
normal operation. Double the poll timeout from 100ms to 200ms to improve
reliability without changing the poll interval.

Link: https://patch.msgid.link/20260611-lt9611-b4-send-v1-2-42abbcd3bb1e@oss.qualcomm.com
Signed-off-by: Mohit Dsor <mohit.dsor@oss.qualcomm.com>
Remove two redundant lt9611c_reset() calls:

1. In lt9611c_bridge_atomic_pre_enable(): a reset is already performed
   during probe and resume; calling it again on every display enable
   adds ~440ms of unnecessary latency.

2. At the end of lt9611c_probe(): a reset was already performed earlier
   in probe before lt9611c_lock(). The second reset is redundant.

Also, the DRM HDMI bridge framework requires hdmi_write_hdmi_infoframe and
hdmi_clear_hdmi_infoframe callbacks for HDMI vendor-specific infoframe
(VSI) support, used for features such as HDR metadata signalling.

This patch add stub implementations that return success. Wire them into the bridge
function table.

Also, Store the chip variant enum value in the of_match_table .data field and
retrieve it via of_device_get_match_data() when probing from a DT node.
Fall back to i2c_device_id.driver_data for non-DT (e.g. ACPI) probe
paths.

This is the standard kernel pattern for passing per-compatible data
through the OF match table, and avoids relying solely on the I2C device
ID table for chip type detection when DT is available.

Populate bridge.vendor and bridge.product so the DRM HDMI framework can
report the correct manufacturer and product name in the HDMI connector
properties (visible via xrandr --prop and related sysfs entries).

Link: https://patch.msgid.link/20260611-lt9611-b4-send-v1-3-42abbcd3bb1e@oss.qualcomm.com
Signed-off-by: Mohit Dsor <mohit.dsor@oss.qualcomm.com>
…property

Some board designs connect only DSI port B, or both DSI ports A and B,
to the LT9611C. Add support for a 'lontium,port-select' DT property that
allows the board DTS to specify which DSI port(s) the chip should use:

  0 = PORT_SELECT_A  (default, single DSI port A)
  1 = PORT_SELECT_B  (single DSI port B)
  2 = PORT_SELECT_AB (dual DSI ports A+B)

When the property is absent the driver defaults to PORT_SELECT_A (0),
preserving backward compatibility with existing DTS files.

The selected port is programmed into the chip via lt9611c_select_port()
during probe, after the chip ID has been verified.

Link: https://patch.msgid.link/20260611-lt9611-b4-send-v1-4-42abbcd3bb1e@oss.qualcomm.com
Signed-off-by: Mohit Dsor <mohit.dsor@oss.qualcomm.com>
This driver provides access to LT9611C bridge driver
to access Lontium LT9611UXD DSI to HDMI chip.

Link: https://patch.msgid.link/20260618-shikra-work-v1-1-dc30381263f9@oss.qualcomm.com
Signed-off-by: Mohit Dsor <mohit.dsor@oss.qualcomm.com>
…failure

HPD status is retrieved via an MCU command. In some cases the
command may fail, for example when the MCU is not yet ready,
leading to incorrect disconnect reporting.

Instead of returning an error state, fall back to the last known
HPD status to provide a more stable detection result.

This avoids spurious disconnect events during initialization.

Link: https://patch.msgid.link/20260628-hpd_stable-v1-1-13d8b732c4c6@oss.qualcomm.com
Signed-off-by: Mohit Dsor <mohit.dsor@oss.qualcomm.com>
Implement the .hpd_enable callback to trigger HPD status update
and schedule event propagation.

Link: https://patch.msgid.link/20260628-hpd_stable-v1-2-13d8b732c4c6@oss.qualcomm.com
Signed-off-by: Mohit Dsor <mohit.dsor@oss.qualcomm.com>
Ensure DT nodes are properly released on error and acquire a
reference to next_bridge

Link: https://patch.msgid.link/20260628-hpd_stable-v1-3-13d8b732c4c6@oss.qualcomm.com
Signed-off-by: Mohit Dsor <mohit.dsor@oss.qualcomm.com>
Remove redundant assignment of chip_type from I2C match as it
is derived from DT data when available.

Link: https://patch.msgid.link/20260628-hpd_stable-v1-4-13d8b732c4c6@oss.qualcomm.com
Signed-off-by: Mohit Dsor <mohit.dsor@oss.qualcomm.com>
Remove redundant cleanup of IRQ and bridge resources.

Link: https://patch.msgid.link/20260628-hpd_stable-v1-5-13d8b732c4c6@oss.qualcomm.com
Signed-off-by: Mohit Dsor <mohit.dsor@oss.qualcomm.com>
@qcomlnxci qcomlnxci requested review from a team, Rajesh Kemisetti (quic-rajeshk) and riteshk-quic and removed request for a team June 29, 2026 12:14
@qlijarvis

Copy link
Copy Markdown

🔨 Build Failure Analysis — PR #1431

PR: #1431
Build run: https://github.com/qualcomm-linux/kernel-config/actions/runs/28371239637

# Error File:Line PR-introduced? Root Cause
1 Merge conflict arch/arm64/configs/defconfig Yes PR adds CONFIG_DRM_LONTIUM_LT9611C=m which conflicts with integration branch changes
2 Merge conflict drivers/gpu/drm/bridge/lontium-lt9611c.c Yes PR modifies lontium-lt9611c.c extensively (10 patches) which conflicts with integration branch changes

Verdict

Build failed during merge stage with 2 merge conflicts introduced by this PR; no compilation was attempted.

📎 Detailed analysis: Full report

@qlijarvis

Copy link
Copy Markdown

🔨 Build Failure Analysis — PR #1431

PR: #1431
Build run: https://github.com/qualcomm-linux/kernel-config/actions/runs/28371239637

# Error File:Line PR-introduced? Root Cause
1 Merge conflict in defconfig arch/arm64/configs/defconfig No Integration conflict with topic/tech/mm/drm branch
2 Merge conflict in lt9611c driver drivers/gpu/drm/bridge/lontium-lt9611c.c No Integration conflict with topic/tech/mm/drm branch

Verdict

This is not a compilation failure. The build failed during the merge phase when attempting to integrate PR #1431 with the topic/tech/mm/drm branch. Both conflicts are integration issues, not errors introduced by the PR code itself.

📎 Detailed analysis: Full report

@qlijarvis

Copy link
Copy Markdown

PR #1431 — validate-patch

PR: #1431

Verdict Issues Detailed Report
⚠️ 0 Full report

Final Summary

  1. Lore link present: Yes — all 10 patches have Link tags with patch.msgid.link URLs
  2. Lore link matches PR commits: Cannot verify — all lore links are dated June 2026 (future dates), patches not yet posted to lore.kernel.org, returns empty when fetched
  3. Upstream patch status: Not upstream — FROMLIST patches with future dates indicate intent to post but not yet submitted
  4. PR present in qcom-next: Not checked — FROMLIST patches, upstream submission pending

Additional Context:

  • This PR aggregates patches from 3 different intended upstream series
  • All patches are marked FROMLIST indicating they are prepared for upstream submission
  • Cannot verify diff faithfulness without actual upstream patches to compare against
  • Recommend posting to upstream first, then backporting accepted versions to ensure alignment
Verdict: ⚠️ — click to expand

🔍 Patch Validation

PR: #1431 - LT9611C bridge driver improvements (10 patches)
Upstream commit: Multiple series - not yet posted to lore.kernel.org
Verdict: ⚠️ PARTIAL - Multiple issues require fixing before merge

Commit Message Analysis

Patch 01/10: dt-bindings: brige: lt9611c: add port-select property

Check Status Note
Subject matches upstream Typo: "brige" should be "bridge"
Body preserves rationale Clear description of property purpose
Fixes tag present/correct N/A New feature, no Fixes tag needed
Authorship preserved Consistent author/SOB
Backport note (if applicable) N/A FROMLIST patch

Patch 02/10: drm/bridge: lontium-lt9611c: Increase MCU poll timeout

Check Status Note
Subject matches upstream Format correct
Body preserves rationale Explains timeout increase rationale
Fixes tag present/correct ⚠️ Could benefit from Fixes tag if addressing known issue
Authorship preserved Consistent author/SOB
Backport note (if applicable) N/A FROMLIST patch

Patch 03/10: drm-bridge: lontium lt9611c: fixes and improvements

Check Status Note
Subject matches upstream Inconsistent: "drm-bridge" vs "drm/bridge" (should use slash)
Body preserves rationale ⚠️ Multiple unrelated changes in one commit
Fixes tag present/correct N/A Multiple fixes, should be split
Authorship preserved Consistent author/SOB
Backport note (if applicable) N/A FROMLIST patch

Issues with Patch 03:

  • Combines 4 unrelated changes: reset removal, infoframe stubs, chip type init, vendor/product
  • Violates "one logical change per commit" principle
  • Should be split into 4 separate commits

Patch 04/10: drm/bridge: lontium-lt9611c: Add DSI port selection

Check Status Note
Subject matches upstream Format correct
Body preserves rationale Clear explanation of feature
Fixes tag present/correct N/A New feature
Authorship preserved Consistent author/SOB
Backport note (if applicable) N/A FROMLIST patch

Patch 05/10: arm64: defconfig: Enable LT9611C bridge driver

Check Status Note
Subject matches upstream Format correct
Body preserves rationale ⚠️ Mentions LT9611UXD but enables LT9611C
Fixes tag present/correct N/A Config change
Authorship preserved From: mdsor@qti.qualcomm.com, SOB: mohit.dsor@oss.qualcomm.com
Backport note (if applicable) N/A FROMLIST patch

Issues with Patch 05:

Patches 06-10: HPD stability series

Check Status Note
Subject matches upstream All use correct drm/bridge format
Body preserves rationale Clear explanations
Fixes tag present/correct ⚠️ Could benefit from Fixes tags
Authorship preserved Consistent author/SOB
Backport note (if applicable) N/A FROMLIST patches

Diff Analysis

File Status Notes
Documentation/devicetree/bindings/display/bridge/lontium,lt9611.yaml ⚠️ Cannot verify - upstream not available
drivers/gpu/drm/bridge/lontium-lt9611c.c ⚠️ Cannot verify - upstream not available
arch/arm64/configs/defconfig ⚠️ Cannot verify - upstream not available

Issues

Critical Issues:

  1. Patch 01 - Subject typo: "brige" must be corrected to "bridge"
  2. Patch 03 - Multiple unrelated changes: Should be split into 4 separate commits:
    • Remove redundant reset calls
    • Add HDMI infoframe stub callbacks
    • Store chip variant in OF match table
    • Populate bridge vendor/product fields
  3. Patch 05 - Author email mismatch: From field uses mdsor@qti.qualcomm.com but SOB uses mohit.dsor@oss.qualcomm.com
  4. Patch 05 - Commit message confusion: Mentions "LT9611UXD" but enables "LT9611C"

Structural Issues:
5. PR combines 3 different upstream series:

  • Patches 01-04: lt9611-b4-send-v1 series
  • Patch 05: shikra-work-v1 series
  • Patches 06-10: hpd_stable-v1 series
  1. All lore links are from future dates (June 2026): Patches not yet posted upstream, cannot verify diff faithfulness

Minor Issues:
7. Patch 03 - Subject format inconsistency: Uses "drm-bridge" instead of "drm/bridge"
8. Missing Fixes tags: Patches 02, 06-10 appear to fix bugs but lack Fixes tags

Verdict

Cannot merge as-is. The following must be fixed:

  1. Fix typo in patch 01 subject: "brige" → "bridge"
  2. Split patch 03 into 4 separate logical commits
  3. Fix author email mismatch in patch 05 (use consistent email)
  4. Fix commit message in patch 05 (clarify LT9611C vs LT9611UXD)
  5. Consider adding Fixes tags where appropriate
  6. Fix subject format in patch 03: "drm-bridge" → "drm/bridge"

Final Summary

  1. Lore link present: Yes — all 10 patches have Link tags with patch.msgid.link URLs
  2. Lore link matches PR commits: Cannot verify — all lore links are dated June 2026 (future dates), patches not yet posted to lore.kernel.org, returns empty when fetched
  3. Upstream patch status: Not upstream — FROMLIST patches with future dates indicate intent to post but not yet submitted
  4. PR present in qcom-next: Not checked — FROMLIST patches, upstream submission pending

Additional Context:

  • This PR aggregates patches from 3 different intended upstream series
  • All patches are marked FROMLIST indicating they are prepared for upstream submission
  • Cannot verify diff faithfulness without actual upstream patches to compare against
  • Recommend posting to upstream first, then backporting accepted versions to ensure alignment

@qlijarvis

Copy link
Copy Markdown

PR #1431 — checker-log-analyzer

PR: #1431
Checker run: https://github.com/qualcomm-linux/kernel-config/actions/runs/28371239823

Checker Result Summary
Checker Result Summary
checkpatch Merge conflict - cannot run
dt-binding-check Merge conflict - cannot run
dtb-check Merge conflict - cannot run
sparse-check Merge conflict - cannot run
check-uapi-headers Merge conflict - cannot run
check-patch-compliance Merge conflict - cannot run
tag-check ⏭️ Not applicable (FROMLIST patches)
qcom-next-check ⏭️ Not applicable (FROMLIST patches)

Detailed report: Full report

Checker analysis — click to expand

🤖 CI Checker Analysis (checker-log-analyzer)

PR: #1431 - FROMLIST: lt9611c bridge driver improvements (10 patches)
Source: https://github.com/qualcomm-linux/kernel-config/actions/runs/28371239823

Checker Result Summary
checkpatch Merge conflict - cannot run
dt-binding-check Merge conflict - cannot run
dtb-check Merge conflict - cannot run
sparse-check Merge conflict - cannot run
check-uapi-headers Merge conflict - cannot run
check-patch-compliance Merge conflict - cannot run
tag-check ⏭️ Not applicable (FROMLIST patches)
qcom-next-check ⏭️ Not applicable (FROMLIST patches)

❌ All Checkers (Pre-merge Failure)

Root cause: Merge conflicts prevent all checkers from running - PR #1431 conflicts with the integration branch (baseline + topic/tech/mm/drm).

Failure details:

2026-06-29T12:32:57.4843551Z CONFLICT (content): Merge conflict in arch/arm64/configs/defconfig
2026-06-29T12:32:57.4844479Z Auto-merging drivers/gpu/drm/bridge/lontium-lt9611c.c
2026-06-29T12:32:57.4845117Z CONFLICT (content): Merge conflict in drivers/gpu/drm/bridge/lontium-lt9611c.c
2026-06-29T12:32:57.5455471Z Automatic merge failed; fix conflicts and then commit the result.
2026-06-29T12:32:57.5585163Z Merge failed or conflicts detected. Aborting merge.

The CI workflow attempts to merge PR #1431 into an integration branch that includes:

  • Baseline: 19b282f417584cfe14ce6a262122c51553d026ec
  • Topic branch: topic/tech/mm/drm

Two files have merge conflicts:

  1. arch/arm64/configs/defconfig - Likely CONFIG_DRM_LONTIUM_LT9611C or related DRM config options
  2. drivers/gpu/drm/bridge/lontium-lt9611c.c - The main driver file being modified by this PR

Fix:

The PR author needs to rebase their branch on top of the current integration baseline + topic/tech/mm/drm to resolve conflicts:

  1. Fetch the latest integration state:

    git fetch origin topic/tech/mm/drm
  2. Rebase the PR branch:

    git checkout <pr-branch>
    git rebase origin/topic/tech/mm/drm
  3. Resolve conflicts in both files:

    • arch/arm64/configs/defconfig: Merge config changes carefully, keeping both sets of CONFIG options
    • drivers/gpu/drm/bridge/lontium-lt9611c.c: Resolve code conflicts, likely in initialization or port configuration logic
  4. Continue the rebase:

    git add arch/arm64/configs/defconfig drivers/gpu/drm/bridge/lontium-lt9611c.c
    git rebase --continue
  5. Force-push the rebased branch:

    git push --force-with-lease

Reproduce locally:

# Clone and setup
git clone https://github.com/qualcomm-linux/kernel-topics.git
cd kernel-topics
git fetch origin pull/1431/head:pr-1431
git fetch origin topic/tech/mm/drm

# Attempt merge to see conflicts
git checkout -b test-merge 19b282f417584cfe14ce6a262122c51553d026ec
git merge --no-commit origin/topic/tech/mm/drm
git merge --no-commit pr-1431

Verdict

Cannot merge - 1 blocker: PR #1431 has merge conflicts with the integration branch (specifically with topic/tech/mm/drm). The conflicts must be resolved in arch/arm64/configs/defconfig and drivers/gpu/drm/bridge/lontium-lt9611c.c before any checkers can run. Once rebased and conflicts resolved, the PR will need to be re-submitted for CI validation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants