[Intel-gfx] [v2] drm/i915/pps: improve eDP power on flow

Lee, Shawn C shawn.c.lee at intel.com
Tue Nov 1 14:40:24 UTC 2022


On Tue, Nov. 1, 2022, 1:43 p.m, Jani Nikula <jani.nikula at linux.intel.com> wrote:
>On Tue, 01 Nov 2022, "Lee, Shawn C" <shawn.c.lee at intel.com> wrote:
>> On Tuesday, November 1, 2022 5:53 PM, Jani Nikula <jani.nikula at linux.intel.com> wrote:
>>>On Mon, 24 Oct 2022, Lee Shawn C <shawn.c.lee at intel.com> wrote:
>>>> A panel power off cycle delay always append before turn eDP on.
>>>> Driver should check last_power_on and last_backlight_off before insert 
>>>> this delay. If these values are the same, it means eDP was off until 
>>>> now and driver can bypass power off cycle delay to save some times to 
>>>> speed up eDP power on sequence.
>>>>
>>>> v2: fix commit messages
>>>
>>>There are more changes here than what the changelog says, but the previous review comments were not answered [1].
>>>
>>
>> I'm sorry that lose the question in [1]. 
>>
>> "But someone else may have turned it off just before we were handed control, we have no idea."
>> This is the situation from Ville's comment. Agree that we don't know when panel will be powered off.
>> In my opinion, eDP panel should not be turned off before i915 take it over. If it was turned on or off by standard contorl (ex: modeset).
>> last_power_on and last_backlight_off would not be the same. So this change should be safe.
>
>I think it's pretty much a hard requirement we respect the panel delays
>at i915 probe. If we don't know, we don't know, and we can't make
>assumptions.
>
>If the goal is to speed up boot, you should ensure 1) the pre-os enables
>the display, and 2) i915 can take over the display without a modeset and
>a panel power cycle.
>

After boot into kernel. It seems there are two cases we will see. 
1) If eDP display did not enable at pre-os stage, this patch can save power cycle time. 
2) If eDP display was enabled at pre-os, because of cdclk was setting to max freq always.
   i915 driver will trigger modeset to reduce cdclk freq and run power off/on cycle.
   At this case power cycle delay will not be ignored.

So this patch can only benefit at case #1 (eDP did not enable at pre-os stage). And it is what we need. :)

Best regards,
Shawn

>
>BR,
>Jani.
>
>
>>
>> Best regards,
>> Shawn
>>
>>>
>>>BR,
>>>Jani.
>>>
>>>
>>>[1] https://lore.kernel.org/r/Y1afUdAwfVTACJoK@intel.com
>>>
>>>>
>>>> Cc: Shankar Uma <uma.shankar at intel.com>
>>>> Cc: Jani Nikula <jani.nikula at linux.intel.com>
>>>> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
>>>> Signed-off-by: Lee Shawn C <shawn.c.lee at intel.com>
>>>> ---
>>>>  drivers/gpu/drm/i915/display/intel_pps.c | 9 ++++++++-
>>>>  1 file changed, 8 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/i915/display/intel_pps.c 
>>>> b/drivers/gpu/drm/i915/display/intel_pps.c
>>>> index 21944f5bf3a8..290473ec70d5 100644
>>>> --- a/drivers/gpu/drm/i915/display/intel_pps.c
>>>> +++ b/drivers/gpu/drm/i915/display/intel_pps.c
>>>> @@ -509,6 +509,13 @@ static void wait_panel_power_cycle(struct intel_dp *intel_dp)
>>>>  	ktime_t panel_power_on_time;
>>>>  	s64 panel_power_off_duration;
>>>>  
>>>> +	/* When last_power_on equal to last_backlight_off, it means driver did not
>>>> +	 * turn on or off eDP panel so far. So we can bypass power cycle delay to
>>>> +	 * save some times here.
>>>> +	 */
>>>> +	if (intel_dp->pps.last_power_on == intel_dp->pps.last_backlight_off)
>>>> +		return;
>>>> +
>>>>  	drm_dbg_kms(&i915->drm, "Wait for panel power cycle\n");
>>>>  
>>>>  	/* take the difference of current time and panel power off time @@ 
>>>> -1100,7 +1107,7 @@ static void pps_init_timestamps(struct intel_dp 
>>>> *intel_dp)  {
>>>>  	intel_dp->pps.panel_power_off_time = ktime_get_boottime();
>>>>  	intel_dp->pps.last_power_on = jiffies;
>>>> -	intel_dp->pps.last_backlight_off = jiffies;
>>>> +	intel_dp->pps.last_backlight_off = intel_dp->pps.last_power_on;
>>>>  }
>>>>  
>>>>  static void
>>>
>>>--
>>>Jani Nikula, Intel Open Source Graphics Center


More information about the Intel-gfx mailing list