> -----Original Message-----
> From: Kandpal, Suraj <[email protected]>
> Sent: Friday, November 7, 2025 9:31 AM
> To: Manna, Animesh <[email protected]>; intel-
> [email protected]; [email protected]; dri-
> [email protected]
> Cc: Nikula, Jani <[email protected]>; Manna, Animesh
> <[email protected]>; Hogander, Jouni
> <[email protected]>
> Subject: RE: [PATCH v2 04/10] drm/i915/alpm: Refactor Auxless wake time
> calculation
>
> > Subject: [PATCH v2 04/10] drm/i915/alpm: Refactor Auxless wake time
> > calculation
> >
> > Divide the auxless wake time calculation in parts which will help
> > later to add Xe3p related modification.
> >
> > v1: Initial version.
>
> No need for this you can start off with v2 directly Same for all patches where
> this has occured
>
> > v2: Refactor first existing calculation. [Jani]
> >
>
> Add Bspec link
>
> > Cc: Jouni Högander <[email protected]>
> > Signed-off-by: Animesh Manna <[email protected]>
> > ---
> > drivers/gpu/drm/i915/display/intel_alpm.c | 37
> > ++++++++++++++++-------
> > 1 file changed, 26 insertions(+), 11 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c
> > b/drivers/gpu/drm/i915/display/intel_alpm.c
> > index 779718d0c8dd..8d07455a62c2 100644
> > --- a/drivers/gpu/drm/i915/display/intel_alpm.c
> > +++ b/drivers/gpu/drm/i915/display/intel_alpm.c
> > @@ -85,6 +85,26 @@ static int get_lfps_half_cycle_clocks(const struct
> > intel_crtc_state *crtc_state)
> > 1000 / (2 * LFPS_CYCLE_COUNT);
> > }
> >
> > +static int get_tphy2_p2_to_p0(struct intel_dp *intel_dp) {
> > + return 12 * 1000;
> > +}
> > +
> > +static int get_establishment_period(struct intel_dp *intel_dp,
> > + const struct intel_crtc_state *crtc_state) {
> > + int port_clock = crtc_state->port_clock;
> > + int t1 = 50 * 1000;
> > + int tps4 = (252 * 10);
>
> Where did this * 10 come from?
The Link Rate Divider (Rate Div) is 10 for 8b/10b and 32 128b/132b. Also please
check the next patch for more clarity.
>
> > + long tml_phy_lock = 1000 * 1000 * tps4 / port_clock / 10;
>
> Why the extra /10 required here also if you had not multiplied tps4 with 10
> then this wouldn't be required You also removed the comment telling us
> portclock need to be in 10Kb/s
Divide by 10 always needed due to unit size of 10kb/sec, earlier both negated
but for 128b/132b mode rate_div is 32. It will be more clear with next patch
where added the changes for 128b/132b.
>
> > + int tcds, establishment_period;
> > +
> > + tcds = (7 + DIV_ROUND_UP(6500, tml_phy_lock) + 1) * tml_phy_lock;
> > + establishment_period = (SILENCE_PERIOD_TIME + t1 + tcds);
> > +
> > + return establishment_period;
> > +}
> > +
> > /*
> > * AUX-Less Wake Time = CEILING( ((PHY P2 to P0) + tLFPS_Period, Max+
> > * tSilence, Max+ tPHY Establishment + tCDS) / tline) @@ -104,19
> > +124,14 @@ static int get_lfps_half_cycle_clocks(const struct
> > intel_crtc_state
> > *crtc_state)
> > * tML_PHY_LOCK = TPS4 Length * ( 10 / (Link Rate in MHz) )
> > * TPS4 Length = 252 Symbols
> > */
> > -static int _lnl_compute_aux_less_wake_time(const struct
> > intel_crtc_state
> > *crtc_state)
> > +static int _lnl_compute_aux_less_wake_time(struct intel_dp *intel_dp,
> > + const struct intel_crtc_state
>
> I don’t see any justified reason to send intel_dp here
Its needed in next patch, fix the function prototype here.
Regards,
Animesh
>
> Regards,
> Suraj Kandpal
>
> > *crtc_state)
> > {
> > - int tphy2_p2_to_p0 = 12 * 1000;
> > - int t1 = 50 * 1000;
> > - int tps4 = 252;
> > - /* port_clock is link rate in 10kbit/s units */
> > - int tml_phy_lock = 1000 * 1000 * tps4 / crtc_state->port_clock;
> > - int num_ml_phy_lock = 7 + DIV_ROUND_UP(6500, tml_phy_lock) + 1;
> > - int t2 = num_ml_phy_lock * tml_phy_lock;
> > - int tcds = 1 * t2;
> > + int tphy2_p2_to_p0 = get_tphy2_p2_to_p0(intel_dp);
> > + int establishment_period = get_establishment_period(intel_dp,
> > +crtc_state);
> >
> > return DIV_ROUND_UP(tphy2_p2_to_p0 +
> > get_lfps_cycle_time(crtc_state) +
> > - SILENCE_PERIOD_TIME + t1 + tcds, 1000);
> > + establishment_period, 1000);
> > }
> >
> > static int
> > @@ -128,7 +143,7 @@ _lnl_compute_aux_less_alpm_params(struct
> intel_dp
> > *intel_dp,
> > lfps_half_cycle;
> >
> > aux_less_wake_time =
> > - _lnl_compute_aux_less_wake_time(crtc_state);
> > + _lnl_compute_aux_less_wake_time(intel_dp, crtc_state);
> > aux_less_wake_lines = intel_usecs_to_scanlines(&crtc_state-
> > >hw.adjusted_mode,
> > aux_less_wake_time);
> > silence_period = get_silence_period_symbols(crtc_state);
> > --
> > 2.29.0