From: Jani Nikula <jani.nikula@linux.intel.com>
To: Ville Syrjala <ville.syrjala@linux.intel.com>,
intel-gfx@lists.freedesktop.org
Cc: intel-xe@lists.freedesktop.org
Subject: Re: [PATCH 5/5] drm/i915/dsi: Place clock into LP during LPM if requested
Date: Thu, 26 Mar 2026 17:24:12 +0200 [thread overview]
Message-ID: <c44b5729e197c9d8ad1b9da1b87b0601a73eede7@intel.com> (raw)
In-Reply-To: <20260326111814.9800-6-ville.syrjala@linux.intel.com>
On Thu, 26 Mar 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> TGL/ADL DSI can be configured to place the clock lane into
> LP state during LPM, if otherwise configured for continuous
> HS clock.
>
> Hook that up. VBT tells us whether this should be done.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/display/icl_dsi.c | 6 ++++++
> drivers/gpu/drm/i915/display/icl_dsi_regs.h | 1 +
> drivers/gpu/drm/i915/display/intel_dsi.h | 1 +
> drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 2 ++
> 4 files changed, 10 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c b/drivers/gpu/drm/i915/display/icl_dsi.c
> index 45ba02486c56..afbaa0465842 100644
> --- a/drivers/gpu/drm/i915/display/icl_dsi.c
> +++ b/drivers/gpu/drm/i915/display/icl_dsi.c
> @@ -729,6 +729,12 @@ gen11_dsi_configure_transcoder(struct intel_encoder *encoder,
> else
> tmp |= CLK_HS_CONTINUOUS;
>
> + if (DISPLAY_VER(display) >= 12 &&
> + intel_dsi->lp_clock_during_lpm)
> + tmp |= LP_CLK_DURING_LPM;
> + else
> + tmp &= ~LP_CLK_DURING_LPM;
> +
> /* configure buffer threshold limit to minimum */
> tmp &= ~PIX_BUF_THRESHOLD_MASK;
> tmp |= PIX_BUF_THRESHOLD_1_4;
> diff --git a/drivers/gpu/drm/i915/display/icl_dsi_regs.h b/drivers/gpu/drm/i915/display/icl_dsi_regs.h
> index 641e8f0b8cdb..55ab57adcb0f 100644
> --- a/drivers/gpu/drm/i915/display/icl_dsi_regs.h
> +++ b/drivers/gpu/drm/i915/display/icl_dsi_regs.h
> @@ -227,6 +227,7 @@
> #define CLK_ENTER_LP_AFTER_DATA (0x0 << 8)
> #define CLK_HS_OR_LP (0x2 << 8)
> #define CLK_HS_CONTINUOUS (0x3 << 8)
> +#define LP_CLK_DURING_LPM (1 << 7) /* tgl+ */
> #define LINK_CALIBRATION_MASK (0x3 << 4)
> #define LINK_CALIBRATION_SHIFT 4
> #define CALIBRATION_DISABLED (0x0 << 4)
> diff --git a/drivers/gpu/drm/i915/display/intel_dsi.h b/drivers/gpu/drm/i915/display/intel_dsi.h
> index f55d48e43af1..9fcdabbf3740 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsi.h
> +++ b/drivers/gpu/drm/i915/display/intel_dsi.h
> @@ -80,6 +80,7 @@ struct intel_dsi {
> /* NON_BURST_SYNC_PULSE, NON_BURST_SYNC_EVENTS, or BURST_MODE */
> int video_mode;
>
> + bool lp_clock_during_lpm;
> bool blanking_pkt;
> bool eot_pkt;
> bool clock_stop;
> diff --git a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> index c544871dac0b..fe12041e913c 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> +++ b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> @@ -718,6 +718,7 @@ void intel_dsi_log_params(struct intel_dsi *intel_dsi)
> "burst" : "<unknown>");
> drm_printf(&p, "Burst mode ratio %d\n", intel_dsi->burst_mode_ratio);
> drm_printf(&p, "Reset timer %d\n", intel_dsi->rst_timer_val);
> + drm_printf(&p, "LP clock during LPM %s\n", str_enabled_disabled(intel_dsi->lp_clock_during_lpm));
> drm_printf(&p, "Blanking packets during BLLP %s\n", str_enabled_disabled(intel_dsi->blanking_pkt));
> drm_printf(&p, "EoT packet %s\n", str_enabled_disabled(intel_dsi->eot_pkt));
> drm_printf(&p, "Clock stop during BLLP %s\n", str_enabled_disabled(intel_dsi->clock_stop));
> @@ -771,6 +772,7 @@ bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id)
>
> drm_dbg_kms(display->drm, "\n");
>
> + intel_dsi->lp_clock_during_lpm = mipi_config->lp_clock_during_lpm;
> intel_dsi->blanking_pkt = mipi_config->blanking_packets_during_bllp;
> intel_dsi->eot_pkt = !mipi_config->eot_pkt_disabled;
> intel_dsi->clock_stop = mipi_config->enable_clk_stop;
--
Jani Nikula, Intel
next prev parent reply other threads:[~2026-03-26 15:24 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-26 11:18 [PATCH 0/5] drm/i915/dsi: Some DSI fixes and improvements Ville Syrjala
2026-03-26 11:18 ` [PATCH 1/5] drm/i915/dsi: Don't do DSC horizontal timing adjustments in command mode Ville Syrjala
2026-03-26 15:20 ` Jani Nikula
2026-03-26 11:18 ` [PATCH 2/5] drm/i915/dsi: s/eotp_pkt/eot_pkt/ Ville Syrjala
2026-03-26 15:22 ` Jani Nikula
2026-03-26 11:18 ` [PATCH 3/5] drm/i915/dsi: Make 'clock_stop' boolean Ville Syrjala
2026-03-26 13:40 ` Jani Nikula
2026-03-26 14:02 ` Ville Syrjälä
2026-03-26 15:01 ` Jani Nikula
2026-03-26 15:16 ` Ville Syrjälä
2026-03-26 15:22 ` Jani Nikula
2026-03-26 11:18 ` [PATCH 4/5] drm/i915/dsi: Fill BLLPs with blanking packets if requested Ville Syrjala
2026-03-26 15:23 ` Jani Nikula
2026-03-26 11:18 ` [PATCH 5/5] drm/i915/dsi: Place clock into LP during LPM " Ville Syrjala
2026-03-26 15:24 ` Jani Nikula [this message]
2026-03-26 11:24 ` ✗ CI.checkpatch: warning for drm/i915/dsi: Some DSI fixes and improvements Patchwork
2026-03-26 11:26 ` ✓ CI.KUnit: success " Patchwork
2026-03-26 12:00 ` ✓ Xe.CI.BAT: " Patchwork
2026-03-27 0:36 ` ✓ Xe.CI.FULL: " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c44b5729e197c9d8ad1b9da1b87b0601a73eede7@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=ville.syrjala@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox