Re: [v2] drm/i915/pps: improve eDP power on flow

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Nov. 1, 2022, 1:43 p.m, Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx> wrote:
>On Tue, 01 Nov 2022, "Lee, Shawn C" <shawn.c.lee@xxxxxxxxx> wrote:
>> On Tuesday, November 1, 2022 5:53 PM, Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx> wrote:
>>>On Mon, 24 Oct 2022, Lee Shawn C <shawn.c.lee@xxxxxxxxx> 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@xxxxxxxxx
>>>
>>>>
>>>> Cc: Shankar Uma <uma.shankar@xxxxxxxxx>
>>>> Cc: Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx>
>>>> Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
>>>> Signed-off-by: Lee Shawn C <shawn.c.lee@xxxxxxxxx>
>>>> ---
>>>>  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




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux