Skip to content

Commit e8a7efa

Browse files
committed
drm/i915/dsi: Place clock into LP during LPM if requested
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> Link: https://patch.msgid.link/20260326111814.9800-6-ville.syrjala@linux.intel.com Reviewed-by: Jani Nikula <jani.nikula@intel.com>
1 parent 765a263 commit e8a7efa

4 files changed

Lines changed: 10 additions & 0 deletions

File tree

drivers/gpu/drm/i915/display/icl_dsi.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -729,6 +729,12 @@ gen11_dsi_configure_transcoder(struct intel_encoder *encoder,
729729
else
730730
tmp |= CLK_HS_CONTINUOUS;
731731

732+
if (DISPLAY_VER(display) >= 12 &&
733+
intel_dsi->lp_clock_during_lpm)
734+
tmp |= LP_CLK_DURING_LPM;
735+
else
736+
tmp &= ~LP_CLK_DURING_LPM;
737+
732738
/* configure buffer threshold limit to minimum */
733739
tmp &= ~PIX_BUF_THRESHOLD_MASK;
734740
tmp |= PIX_BUF_THRESHOLD_1_4;

drivers/gpu/drm/i915/display/icl_dsi_regs.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@
227227
#define CLK_ENTER_LP_AFTER_DATA (0x0 << 8)
228228
#define CLK_HS_OR_LP (0x2 << 8)
229229
#define CLK_HS_CONTINUOUS (0x3 << 8)
230+
#define LP_CLK_DURING_LPM (1 << 7) /* tgl+ */
230231
#define LINK_CALIBRATION_MASK (0x3 << 4)
231232
#define LINK_CALIBRATION_SHIFT 4
232233
#define CALIBRATION_DISABLED (0x0 << 4)

drivers/gpu/drm/i915/display/intel_dsi.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ struct intel_dsi {
8080
/* NON_BURST_SYNC_PULSE, NON_BURST_SYNC_EVENTS, or BURST_MODE */
8181
int video_mode;
8282

83+
bool lp_clock_during_lpm;
8384
bool blanking_pkt;
8485
bool eot_pkt;
8586
bool clock_stop;

drivers/gpu/drm/i915/display/intel_dsi_vbt.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -718,6 +718,7 @@ void intel_dsi_log_params(struct intel_dsi *intel_dsi)
718718
"burst" : "<unknown>");
719719
drm_printf(&p, "Burst mode ratio %d\n", intel_dsi->burst_mode_ratio);
720720
drm_printf(&p, "Reset timer %d\n", intel_dsi->rst_timer_val);
721+
drm_printf(&p, "LP clock during LPM %s\n", str_enabled_disabled(intel_dsi->lp_clock_during_lpm));
721722
drm_printf(&p, "Blanking packets during BLLP %s\n", str_enabled_disabled(intel_dsi->blanking_pkt));
722723
drm_printf(&p, "EoT packet %s\n", str_enabled_disabled(intel_dsi->eot_pkt));
723724
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)
771772

772773
drm_dbg_kms(display->drm, "\n");
773774

775+
intel_dsi->lp_clock_during_lpm = mipi_config->lp_clock_during_lpm;
774776
intel_dsi->blanking_pkt = mipi_config->blanking_packets_during_bllp;
775777
intel_dsi->eot_pkt = !mipi_config->eot_pkt_disabled;
776778
intel_dsi->clock_stop = mipi_config->enable_clk_stop;

0 commit comments

Comments
 (0)