[PATCH 2/6] drm/i915/pcode: add struct drm_device based interface

Rodrigo Vivi rodrigo.vivi at intel.com
Mon Jun 16 20:45:36 UTC 2025


On Thu, Jun 05, 2025 at 01:29:34PM +0300, Jani Nikula wrote:
> In preparation for dropping the dependency on struct intel_uncore from
> display code, add a struct drm_device based interface to pcode.
> 

Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>

> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
> ---
>  drivers/gpu/drm/i915/intel_pcode.c | 24 ++++++++++++++++++++++++
>  drivers/gpu/drm/i915/intel_pcode.h | 10 ++++++++++
>  2 files changed, 34 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_pcode.c b/drivers/gpu/drm/i915/intel_pcode.c
> index b7e9b4ee1425..81da75108c60 100644
> --- a/drivers/gpu/drm/i915/intel_pcode.c
> +++ b/drivers/gpu/drm/i915/intel_pcode.c
> @@ -272,3 +272,27 @@ int snb_pcode_write_p(struct intel_uncore *uncore, u32 mbcmd, u32 p1, u32 p2, u3
>  
>  	return err;
>  }
> +
> +/* Helpers with drm device */
> +int intel_pcode_read(struct drm_device *drm, u32 mbox, u32 *val, u32 *val1)
> +{
> +	struct drm_i915_private *i915 = to_i915(drm);
> +
> +	return snb_pcode_read(&i915->uncore, mbox, val, val1);
> +}
> +
> +int intel_pcode_write_timeout(struct drm_device *drm, u32 mbox, u32 val, int timeout_ms)
> +{
> +	struct drm_i915_private *i915 = to_i915(drm);
> +
> +	return snb_pcode_write_timeout(&i915->uncore, mbox, val, timeout_ms);
> +}
> +
> +int intel_pcode_request(struct drm_device *drm, u32 mbox, u32 request,
> +			u32 reply_mask, u32 reply, int timeout_base_ms)
> +{
> +	struct drm_i915_private *i915 = to_i915(drm);
> +
> +	return skl_pcode_request(&i915->uncore, mbox, request, reply_mask, reply,
> +				 timeout_base_ms);
> +}
> diff --git a/drivers/gpu/drm/i915/intel_pcode.h b/drivers/gpu/drm/i915/intel_pcode.h
> index 401ce27f72d4..c91a821a88d4 100644
> --- a/drivers/gpu/drm/i915/intel_pcode.h
> +++ b/drivers/gpu/drm/i915/intel_pcode.h
> @@ -8,6 +8,7 @@
>  
>  #include <linux/types.h>
>  
> +struct drm_device;
>  struct intel_uncore;
>  
>  int snb_pcode_read(struct intel_uncore *uncore, u32 mbox, u32 *val, u32 *val1);
> @@ -26,4 +27,13 @@ int intel_pcode_init(struct intel_uncore *uncore);
>  int snb_pcode_read_p(struct intel_uncore *uncore, u32 mbcmd, u32 p1, u32 p2, u32 *val);
>  int snb_pcode_write_p(struct intel_uncore *uncore, u32 mbcmd, u32 p1, u32 p2, u32 val);
>  
> +/* Helpers with drm device */
> +int intel_pcode_read(struct drm_device *drm, u32 mbox, u32 *val, u32 *val1);
> +int intel_pcode_write_timeout(struct drm_device *drm, u32 mbox, u32 val, int timeout_ms);
> +#define intel_pcode_write(drm, mbox, val) \
> +	intel_pcode_write_timeout((drm), (mbox), (val), 1)
> +
> +int intel_pcode_request(struct drm_device *drm, u32 mbox, u32 request,
> +			u32 reply_mask, u32 reply, int timeout_base_ms);
> +
>  #endif /* _INTEL_PCODE_H */
> -- 
> 2.39.5
> 


More information about the Intel-xe mailing list