On Thu, Dec 17, 2015 at 01:04:25AM +0000, Kumar, Abhay wrote:
> Sure. In next patch set will get rid of jiffies altogether and will use 
> getboottime() instead of do_gettimeofday() for panel_power_cycle_delay.
> 
> Does this make sense?

I can't say for sure until I see a patch, but that's my current thinking
yes.

> 
> 
> -----Original Message-----
> From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com] 
> Sent: Wednesday, December 16, 2015 2:56 AM
> To: Kumar, Abhay
> Cc: Intel-gfx@lists.freedesktop.org
> Subject: Re: [Intel-gfx] [PATCH] drm/i915: edp resume/On time optimization.
> 
> On Tue, Dec 15, 2015 at 02:16:38PM -0800, abhay.ku...@intel.com wrote:
> > From: Abhay Kumar <abhay.ku...@intel.com>
> > 
> > Make resume codepath not to wait for panel_power_cycle_delay(t11_t12) 
> > if this time is already spent in suspend/poweron time.
> > 
> > Signed-off-by: Abhay Kumar <abhay.ku...@intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_ddi.c |  3 +++  
> > drivers/gpu/drm/i915/intel_dp.c  | 18 ++++++++++++++++++  
> > drivers/gpu/drm/i915/intel_drv.h |  2 ++
> >  3 files changed, 23 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_ddi.c 
> > b/drivers/gpu/drm/i915/intel_ddi.c
> > index f00a3c9..d2a5a89 100644
> > --- a/drivers/gpu/drm/i915/intel_ddi.c
> > +++ b/drivers/gpu/drm/i915/intel_ddi.c
> > @@ -2395,6 +2395,9 @@ static void intel_ddi_post_disable(struct 
> > intel_encoder *intel_encoder)
> >             intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
> >             intel_edp_panel_vdd_on(intel_dp);
> >             intel_edp_panel_off(intel_dp);
> > +
> > +           /* storing panel power off time */
> > +           do_gettimeofday(&intel_dp->panel_power_off_timestamp);
> 
> I think what we want to use is CLOCK_BOOTTIME. It's like MONOTONIC, except it 
> counts the suspend time too.
> 
> Initially I figured we'd use REALTIME, and only do the adjustment around 
> suspend/resume. But actually BOOTTIME should be perfectly safe to use all the 
> time (changing the system time doesn't affect it). So maybe we just want to 
> convert the power cycle delay handling entirely over to using the BOOTTIME 
> clock instead of jiffies?
> 
> >     }
> >  
> >     if (IS_SKYLAKE(dev) || IS_KABYLAKE(dev)) diff --git 
> > a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c 
> > index 0f1eb96..1ca01b1 100644
> > --- a/drivers/gpu/drm/i915/intel_dp.c
> > +++ b/drivers/gpu/drm/i915/intel_dp.c
> > @@ -2032,6 +2032,9 @@ static void edp_panel_on(struct intel_dp *intel_dp)
> >     struct drm_i915_private *dev_priv = dev->dev_private;
> >     u32 pp;
> >     i915_reg_t pp_ctrl_reg;
> > +   u32 panel_power_off_duration;
> > +   u32 temp_power_cycle_delay;
> > +
> >  
> >     lockdep_assert_held(&dev_priv->pps_mutex);
> >  
> > @@ -2045,8 +2048,22 @@ static void edp_panel_on(struct intel_dp *intel_dp)
> >              "eDP port %c panel power already on\n",
> >              port_name(dp_to_dig_port(intel_dp)->port)))
> >             return;
> > +   /* taking the diffrence of currrent time and panel power off time
> > +      and then make panel to wait for T12 if needed */
> > +   do_gettimeofday(&intel_dp->panel_power_on_timestamp);
> > +
> > +   panel_power_off_duration  = 
> > (intel_dp->panel_power_on_timestamp.tv_sec-intel_dp->panel_power_off_timestamp.tv_sec)
> >  * 1000000 +  
> > intel_dp->panel_power_on_timestamp.tv_usec-intel_dp->panel_power_off_timestamp.tv_usec;
> > +   panel_power_off_duration = panel_power_off_duration / 1000 ;
> > +   temp_power_cycle_delay = intel_dp->panel_power_cycle_delay;
> > +
> > +   if(panel_power_off_duration >= intel_dp->panel_power_cycle_delay) {
> > +           intel_dp->panel_power_cycle_delay = 0;
> > +   } else {
> > +           intel_dp->panel_power_cycle_delay = 
> > intel_dp->panel_power_cycle_delay - panel_power_off_duration;
> > +   }
> >  
> >     wait_panel_power_cycle(intel_dp);
> > +   intel_dp->panel_power_cycle_delay = temp_power_cycle_delay;
> >  
> >     pp_ctrl_reg = _pp_ctrl_reg(intel_dp);
> >     pp = ironlake_get_pp_control(intel_dp);
> > @@ -5127,6 +5144,7 @@ static void 
> > intel_dp_init_panel_power_timestamps(struct intel_dp *intel_dp)
> >     intel_dp->last_power_cycle = jiffies;
> >     intel_dp->last_power_on = jiffies;
> >     intel_dp->last_backlight_off = jiffies;
> > +   do_gettimeofday(&intel_dp->panel_power_off_timestamp);
> >  }
> >  
> >  static void
> > diff --git a/drivers/gpu/drm/i915/intel_drv.h 
> > b/drivers/gpu/drm/i915/intel_drv.h
> > index 76dfa28..66ed2cb 100644
> > --- a/drivers/gpu/drm/i915/intel_drv.h
> > +++ b/drivers/gpu/drm/i915/intel_drv.h
> > @@ -769,6 +769,8 @@ struct intel_dp {
> >     unsigned long last_power_cycle;
> >     unsigned long last_power_on;
> >     unsigned long last_backlight_off;
> > +   struct timeval panel_power_off_timestamp;
> > +   struct timeval panel_power_on_timestamp;
> >  
> >     struct notifier_block edp_notifier;
> >  
> > --
> > 1.9.1
> > 
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 
> --
> Ville Syrjälä
> Intel OTC

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to