intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Ben Widawsky <ben@bwidawsk.net>
To: Chris Wilson <chris@chris-wilson.co.uk>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 5/5] drm/i915/gmbus: Reset the controller on initialisation
Date: Tue, 5 Apr 2011 09:18:37 -0700	[thread overview]
Message-ID: <20110405161837.GB27748@snipes.kumite> (raw)
In-Reply-To: <1301995458-2699-6-git-send-email-chris@chris-wilson.co.uk>

On Tue, Apr 05, 2011 at 10:24:18AM +0100, Chris Wilson wrote:
> Toggle the Software Clear Interrupt bit which resets the controller to
> clear any prior BUS_ERROR condition before we begin to use the
> controller in earnest.
> 
> Suggested-by: Ben Widawsky <ben@bwidawsk.net>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> ---
>  drivers/gpu/drm/i915/intel_i2c.c |   14 +++++++++++---
>  1 files changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_i2c.c b/drivers/gpu/drm/i915/intel_i2c.c
> index d3b903b..f9f0c42 100644
> --- a/drivers/gpu/drm/i915/intel_i2c.c
> +++ b/drivers/gpu/drm/i915/intel_i2c.c
> @@ -55,10 +55,18 @@ void
>  intel_i2c_reset(struct drm_device *dev)
>  {
>  	struct drm_i915_private *dev_priv = dev->dev_private;
> +	int reg_offset;
> +
> +	reg_offset = 0;
>  	if (HAS_PCH_SPLIT(dev))
> -		I915_WRITE(PCH_GMBUS0, 0);
> -	else
> -		I915_WRITE(GMBUS0, 0);
> +		reg_offset = PCH_GMBUS0 - GMBUS0;
> +
> +	/* First reset the controller by toggling the Sw Clear Interrupt. */
> +	I915_WRITE(GMBUS1 + reg_offset, GMBUS_SW_CLR_INT);
> +	I915_WRITE(GMBUS1 + reg_offset, 0);
> +
> +	/* Then mark the controller as disabled. */
> +	I915_WRITE(GMBUS0 + reg_offset, 0);
>  }
>  

I think in addition to this we should try to send a STOP condition.
That way any devices in an unknown state from a failed reset (or
something similar), should go back to their default state after seeing a
stop. As long as the host is always the master, and the devices are
fairly compliant, it should work...  Alas, I'm just looking at the GMBUS
interface for the first time really, and it appears there is no straight
forward way to do what I want outside of bitbanging (you want to avoid
toggling SCL until you've issues the STOP).

Outside of being able to do that directly, I would add a call to
intel_i2c_reset() from intel_teardown_gmbus().

Ben

  reply	other threads:[~2011-04-05 16:20 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-05  9:24 i915 fixes for review Chris Wilson
2011-04-05  9:24 ` [PATCH 1/5] drm/i915: Initialise g4x watermarks for disabled pipes Chris Wilson
2011-04-05 20:56   ` Keith Packard
2011-04-05 21:12     ` Chris Wilson
2011-04-06  1:02       ` Keith Packard
2011-04-06  6:59         ` Chris Wilson
2011-04-06  7:36           ` Keith Packard
2011-04-06  8:02             ` Chris Wilson
2011-04-06 15:12               ` Keith Packard
2011-04-05  9:24 ` [PATCH 2/5] drm/i915/crt: Explicitly return false if connected to a digital monitor Chris Wilson
2011-04-05 20:57   ` Keith Packard
2011-04-05  9:24 ` [PATCH 3/5] drm/i915/crt: Remove 0xa0 probe for VGA Chris Wilson
2011-04-05  9:24 ` [PATCH 4/5] drm/i915/lvds: Remove 0xA0 DDC probe for LVDS Chris Wilson
2011-04-05  9:24 ` [PATCH 5/5] drm/i915/gmbus: Reset the controller on initialisation Chris Wilson
2011-04-05 16:18   ` Ben Widawsky [this message]
2011-04-05 16:27     ` Ben Widawsky
2011-04-05 20:59   ` Keith Packard
2011-04-05 21:26     ` Chris Wilson

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=20110405161837.GB27748@snipes.kumite \
    --to=ben@bwidawsk.net \
    --cc=chris@chris-wilson.co.uk \
    --cc=intel-gfx@lists.freedesktop.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).