All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Jesse Barnes <jbarnes@virtuousgeek.org>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 16/28] drm/i915: add Punit read/write routines for VLV
Date: Mon, 04 Mar 2013 10:43:03 +0200	[thread overview]
Message-ID: <876217wo6g.fsf@intel.com> (raw)
In-Reply-To: <1362172471-7643-17-git-send-email-jbarnes@virtuousgeek.org>

On Fri, 01 Mar 2013, Jesse Barnes <jbarnes@virtuousgeek.org> wrote:
> Slightly different than other platforms.
>
> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
> ---
>  drivers/gpu/drm/i915/i915_drv.h |    2 ++
>  drivers/gpu/drm/i915/i915_reg.h |   22 ++++++++++++
>  drivers/gpu/drm/i915/intel_pm.c |   74 +++++++++++++++++++++++++++++++++++++++
>  3 files changed, 98 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 871d7c8..61e58cc 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -1850,6 +1850,8 @@ int __gen6_gt_wait_for_fifo(struct drm_i915_private *dev_priv);
>  
>  int sandybridge_pcode_read(struct drm_i915_private *dev_priv, u8 mbox, u32 *val);
>  int sandybridge_pcode_write(struct drm_i915_private *dev_priv, u8 mbox, u32 val);
> +int valleyview_punit_read(struct drm_i915_private *dev_priv, u8 addr, u32 *val);
> +int valleyview_punit_write(struct drm_i915_private *dev_priv, u8 addr, u32 val);
>  
>  #define __i915_read(x, y) \
>  	u##x i915_read##x(struct drm_i915_private *dev_priv, u32 reg);
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index ecf5f30..27ff029 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -4401,6 +4401,28 @@
>  #define GEN6_PCODE_DATA				0x138128
>  #define   GEN6_PCODE_FREQ_IA_RATIO_SHIFT	8
>  
> +#define VLV_IOSF_DOORBELL_REQ			0x182100
> +#define   IOSF_DEVFN_SHIFT			24
> +#define   IOSF_OPCODE_SHIFT			16
> +#define   IOSF_PORT_SHIFT			8
> +#define   IOSF_BYTE_ENABLES_SHIFT		4
> +#define   IOSF_BAR_SHIFT			1
> +#define   IOSF_SB_BUSY				(1<<0)
> +#define   IOSF_PORT_PUNIT			0x4
> +#define VLV_IOSF_DATA				0x182104
> +#define VLV_IOSF_ADDR				0x182108
> +
> +#define PUNIT_REG_GPU_LFM			0xd3
> +#define PUNIT_REG_GPU_FREQ_REQ			0xd4
> +#define PUNIT_REG_GPU_FREQ_STS			0xd8
> +#define PUNIT_REG_MEDIA_TURBO_FREQ_REQ		0xdc
> +
> +#define PUNIT_OPCODE_REG_READ			6
> +#define PUNIT_OPCODE_REG_WRITE			7
> +
> +#define PUNIT_FUSE_BUS2				0xf6 /* bits 47:40 */
> +#define PUNIT_FUSE_BUS1				0xf5 /* bits 55:48 */
> +
>  #define GEN6_GT_CORE_STATUS		0x138060
>  #define   GEN6_CORE_CPD_STATE_MASK	(7<<4)
>  #define   GEN6_RCn_MASK			7
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index b8f5a17..1cedd7d 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -4524,3 +4524,77 @@ int sandybridge_pcode_write(struct drm_i915_private *dev_priv, u8 mbox, u32 val)
>  
>  	return 0;
>  }
> +
> +int valleyview_punit_read(struct drm_i915_private *dev_priv, u8 addr, u32 *val)
> +{
> +	u32 cmd, devfn, opcode, port, be, bar;
> +
> +	bar = 0;
> +	be = 0xf;
> +	port = IOSF_PORT_PUNIT;
> +	opcode = PUNIT_OPCODE_REG_READ;
> +	devfn = 16;
> +
> +	cmd = (devfn << IOSF_DEVFN_SHIFT) | (opcode << IOSF_OPCODE_SHIFT) |
> +		(port << IOSF_PORT_SHIFT) | (be | IOSF_BYTE_ENABLES_SHIFT) |

Should be << not | for IOSF_BYTE_ENABLES_SHIFT. Ditto in the write
function below.

How about picking up a fixed and reworked version of this patch from the
series I sent you? ;)

BR,
Jani.


> +		(bar << IOSF_BAR_SHIFT);
> +
> +	WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock));
> +
> +	if (I915_READ(VLV_IOSF_DOORBELL_REQ) & IOSF_SB_BUSY) {
> +		DRM_DEBUG_DRIVER("warning: pcode (read) mailbox access failed\n");
> +		return -EAGAIN;
> +	}
> +
> +	I915_WRITE(VLV_IOSF_ADDR, addr);
> +	I915_WRITE(VLV_IOSF_DOORBELL_REQ, cmd);
> +
> +	if (wait_for((I915_READ(VLV_IOSF_DOORBELL_REQ) & IOSF_SB_BUSY) == 0,
> +		     500)) {
> +		DRM_ERROR("timeout waiting for pcode read (%d) to finish\n",
> +			  addr);
> +		return -ETIMEDOUT;
> +	}
> +
> +	*val = I915_READ(VLV_IOSF_DATA);
> +	I915_WRITE(VLV_IOSF_DATA, 0);
> +
> +	return 0;
> +}
> +
> +int valleyview_punit_write(struct drm_i915_private *dev_priv, u8 addr, u32 val)
> +{
> +	u32 cmd, devfn, opcode, port, be, bar;
> +
> +	bar = 0;
> +	be = 0xf;
> +	port = IOSF_PORT_PUNIT;
> +	opcode = PUNIT_OPCODE_REG_WRITE;
> +	devfn = 16;
> +
> +	cmd = (devfn << IOSF_DEVFN_SHIFT) | (opcode << IOSF_OPCODE_SHIFT) |
> +		(port << IOSF_PORT_SHIFT) | (be | IOSF_BYTE_ENABLES_SHIFT) |
> +		(bar << IOSF_BAR_SHIFT);
> +
> +	WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock));
> +
> +	if (I915_READ(VLV_IOSF_DOORBELL_REQ) & IOSF_SB_BUSY) {
> +		DRM_DEBUG_DRIVER("warning: pcode (write) mailbox access failed\n");
> +		return -EAGAIN;
> +	}
> +
> +	I915_WRITE(VLV_IOSF_ADDR, addr);
> +	I915_WRITE(VLV_IOSF_DATA, val);
> +	I915_WRITE(VLV_IOSF_DOORBELL_REQ, cmd);
> +
> +	if (wait_for((I915_READ(VLV_IOSF_DOORBELL_REQ) & IOSF_SB_BUSY) == 0,
> +		     500)) {
> +		DRM_ERROR("timeout waiting for pcode write (%d) to finish\n",
> +			  addr);
> +		return -ETIMEDOUT;
> +	}
> +
> +	I915_WRITE(VLV_IOSF_DATA, 0);
> +
> +	return 0;
> +}
> -- 
> 1.7.9.5
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2013-03-04  8:42 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-01 21:14 VLV updates Jesse Barnes
2013-03-01 21:14 ` [PATCH 01/28] drm/i915: sprite support for ValleyView Jesse Barnes
2013-03-04 18:23   ` Ville Syrjälä
2013-03-01 21:14 ` [PATCH 02/28] drm/i915: add sprite assertion function for VLV Jesse Barnes
2013-03-04 18:29   ` Ville Syrjälä
2013-03-07 23:24     ` Jesse Barnes
2013-03-01 21:14 ` [PATCH 03/28] drm/i915: add constant alpha support to sprite ioctl Jesse Barnes
2013-03-01 21:14 ` [PATCH 04/28] drm/i915: update VLV PLL and DPIO code Jesse Barnes
2013-03-01 21:14 ` [PATCH 05/28] drm/i915: panel power sequencing for VLV eDP Jesse Barnes
2013-03-01 21:43   ` Ville Syrjälä
2013-03-01 21:57     ` Jesse Barnes
2013-03-01 21:14 ` [PATCH 06/28] drm/i915: add more VLV IDs Jesse Barnes
2013-03-01 21:14 ` [PATCH 07/28] drm/i915: implement WaForceL3Serialization on VLV and IVB Jesse Barnes
2013-03-01 21:43   ` Ville Syrjälä
2013-03-01 21:58     ` Jesse Barnes
2013-03-01 21:14 ` [PATCH 08/28] drm/i915: implement WaGTEnableMiFlush on VLV Jesse Barnes
2013-03-01 21:47   ` Ville Syrjälä
2013-03-01 21:58     ` Jesse Barnes
2013-03-01 21:14 ` [PATCH 09/28] drm/i915: implement WaDisablePSDDualDispatchEnable " Jesse Barnes
2013-03-01 21:14 ` [PATCH 10/28] drm/i915: VLV has force wake Jesse Barnes
2013-03-06 18:53   ` Daniel Vetter
2013-03-01 21:14 ` [PATCH 11/28] drm/i915: add power context allocation and setup on VLV Jesse Barnes
2013-03-01 21:14 ` [PATCH 12/28] drm/i915: add more clock gating for VLV, allow force wake at init Jesse Barnes
2013-03-06 18:54   ` Daniel Vetter
2013-03-01 21:14 ` [PATCH 13/28] drm/i915: fix VLV limits and m/n/p calculations Jesse Barnes
2013-03-05 11:49   ` Ville Syrjälä
2013-03-01 21:14 ` [PATCH 14/28] drm/i915: disable watermarks on VLV, pondicherry takes care of this Jesse Barnes
2013-03-06 18:56   ` Daniel Vetter
2013-03-06 19:09     ` Ville Syrjälä
2013-03-06 19:14       ` Daniel Vetter
2013-03-06 19:19         ` Ville Syrjälä
2013-03-06 19:32           ` Daniel Vetter
2013-03-07 23:12             ` Jesse Barnes
2013-03-01 21:14 ` [PATCH 15/28] drm/i915: use gen6 stolen check on VLV Jesse Barnes
2013-03-01 21:14 ` [PATCH 16/28] drm/i915: add Punit read/write routines for VLV Jesse Barnes
2013-03-04  8:43   ` Jani Nikula [this message]
2013-03-04 16:35     ` Jesse Barnes
2013-03-01 21:14 ` [PATCH 17/28] drm/i915: add media well to VLV force wake routines Jesse Barnes
2013-03-01 21:14 ` [PATCH 18/28] drm/i915: turbo & RC6 support for VLV Jesse Barnes
2013-03-01 21:14 ` [PATCH 19/28] drm/i915: remove VLV MSI IRQ hack Jesse Barnes
2013-03-01 21:14 ` [PATCH 20/28] drm/i915: don't enumerate VGA on VLV Jesse Barnes
2013-03-06 18:58   ` Daniel Vetter
2013-03-06 19:00   ` Ville Syrjälä
2013-03-06 19:09     ` Jesse Barnes
2013-03-06 19:14       ` Ville Syrjälä
2013-03-01 21:14 ` [PATCH 21/28] drm/i915: DSPFW and BLC regs are in the display offset range Jesse Barnes
2013-03-01 21:14 ` [PATCH 22/28] drm/i915: don't use plane pipe select on VLV Jesse Barnes
2013-03-01 21:14 ` [PATCH 23/28] drm/i915: use VLV DIP routines " Jesse Barnes
2013-03-06 19:00   ` Daniel Vetter
2013-03-06 19:09     ` Jesse Barnes
2013-03-01 21:14 ` [PATCH 24/28] drm/i915: export intel_dpio_write for use in intel_dp.c Jesse Barnes
2013-03-06 19:02   ` Daniel Vetter
2013-03-06 19:10     ` Jesse Barnes
2013-03-01 21:14 ` [PATCH 25/28] drm/i915/dp: program VSwing and Preemphasis control settings on VLV Jesse Barnes
2013-03-01 21:14 ` [PATCH 26/28] drm/i915: VLV doesn't have HDMI on port C Jesse Barnes
2013-03-01 21:14 ` [PATCH 27/28] drm/i915/dp: don't use ILK paths on VLV Jesse Barnes
2013-03-06 19:04   ` Daniel Vetter
2013-03-01 21:14 ` [PATCH 28/28] drm/i915/dp: add pre-PCH eDP checking to DP detect for VLV Jesse Barnes
2013-03-06 19:05   ` Daniel Vetter
2013-03-06 20:55     ` Jesse Barnes
2013-03-06 21:02       ` Daniel Vetter
2013-03-01 21:59 ` VLV updates Jesse Barnes

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=876217wo6g.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jbarnes@virtuousgeek.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 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.