Intel-GFX Archive on 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox