From: Daniel Vetter <daniel@ffwll.ch>
To: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
Cc: intel-gfx <intel-gfx@lists.freedesktop.org>,
Mukesh <mukeshx.arora@intel.com>
Subject: Re: [PATCH v2] drm/i915/hsw: Add display Audio codec disable sequence for Haswell
Date: Thu, 5 Sep 2013 14:27:29 +0200 [thread overview]
Message-ID: <20130905122729.GD27291@phenom.ffwll.local> (raw)
In-Reply-To: <20130905122101.GB11428@intel.com>
On Thu, Sep 05, 2013 at 03:21:01PM +0300, Ville Syrjälä wrote:
> On Thu, Sep 05, 2013 at 01:45:47PM +0200, Daniel Vetter wrote:
> > On Thu, Sep 05, 2013 at 02:33:20PM +0300, Ville Syrjälä wrote:
> > > On Wed, Sep 04, 2013 at 08:50:13PM +0200, Daniel Vetter wrote:
> > > > On Fri, Aug 30, 2013 at 1:50 AM, <mengdong.lin@intel.com> wrote:
> > > > > + /* Wait for 2 vertical blanks */
> > > > > + intel_wait_for_vblank(dev, pipe);
> > > > > + intel_wait_for_vblank(dev, pipe);
> > > > > +
> > > > > + /* Disable audio PD. This is optional as per Bspec. */
> > > > > + temp = I915_READ(HSW_AUD_PIN_ELD_CP_VLD);
> > > > > + temp &= ~(AUDIO_OUTPUT_ENABLE_A << (pipe * 4));
> > > > > + I915_WRITE(HSW_AUD_PIN_ELD_CP_VLD, temp);
> > > >
> > > > If this is optional do we really need the two vblank waits above?
> > > > Adding them just for fun when we generally try to rip out as many
> > > > vblank waits as possible from the modeset code isn't all that great
> > > > ...
> > >
> > > One idea I had for these kinds of vblank waits (there also one required
> > > for IPS for instance) is that we might just sample a vblank counter
> > > after the first step, then at the latest point we can, we'd wait for the
> > > frame counter to have passed the sampled vaoue + whatever extra is
> > > needed. That might allow us to do other stuff in parallel while the
> > > required number of vblanks will elapese.
> >
> > My solution for this is to have vblank work items that we can use to chain
> > off all these things. We also need them for pageflips e.g. when
> > re-enabling fbc or similar stuff. The problem is a bit that for switching
> > things off like in a modeset the synchronization can get hairy and will be
> > little-tested. For enabling as long as we share the code with the nuclear
> > pageflip code we should be fine though ...
> >
> > Hence why I think we should try rather hard to avoid these vblank waits in
> > the first place.
>
> Yeah, for enabling we definitely want to execute all that stuff
> asynchronously.
>
> The disable case is more problematic. For atomic pageflip we might get
> away with returning -EAGAIN or something, but we have to block in the
> full modeset case unless we want to move the entire modeset to a work
> queue. So this trick would mostly be relevant for the disable during
> modeset case.
>
> But of course we could do that stuff via some kind of
> schedule_vblank_work(currentl_vbl_count + X) and synchronize_vblank_work()
> just before the critical step that needs the vblank work to be done. But
> the locking and bugs might be more complicated in this case.
Yeah we'll end up doing a maze of what will essentially be async tasklets
and callbacks. A declarative way to do that would imo be a requirement,
but such fanciness is hard to pull of in C without turning into something
really ugly ...
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
next prev parent reply other threads:[~2013-09-05 12:27 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-29 23:50 [PATCH v2] drm/i915/hsw: Add display Audio codec disable sequence for Haswell mengdong.lin
2013-09-04 17:02 ` Ben Widawsky
2013-09-23 6:35 ` Lin, Mengdong
2013-09-04 18:50 ` Daniel Vetter
2013-09-05 11:33 ` Ville Syrjälä
2013-09-05 11:45 ` Daniel Vetter
2013-09-05 12:21 ` Ville Syrjälä
2013-09-05 12:27 ` Daniel Vetter [this message]
2013-09-23 8:52 ` Lin, Mengdong
2013-09-23 8:57 ` Daniel Vetter
2013-09-23 9:13 ` Lin, Mengdong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130905122729.GD27291@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.org \
--cc=mukeshx.arora@intel.com \
--cc=ville.syrjala@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.