Re: [Intel-gfx] [PATCH 1/4] drm/i915: Move display pcode requests to intel_de

2022-08-29 Thread Jani Nikula
On Tue, 23 Aug 2022, Maarten Lankhorst  
wrote:
> This will allow us not to use uncore from display code directly any more.

Mmh, a bit tedious but I guess this is what we'll need to do. See also
ee421bb4cb95 ("drm/i915/pcode: Extend pcode functions for multiple
gt's").

Reviewed-by: Jani Nikula 


BR,
Jain.


>
> Signed-off-by: Maarten Lankhorst 
> ---
>  drivers/gpu/drm/i915/display/hsw_ips.c|  7 ++-
>  drivers/gpu/drm/i915/display/intel_bw.c   | 22 -
>  drivers/gpu/drm/i915/display/intel_cdclk.c| 45 +--
>  drivers/gpu/drm/i915/display/intel_de.h   | 30 +
>  drivers/gpu/drm/i915/display/intel_display.c  |  1 -
>  .../drm/i915/display/intel_display_power.c|  3 +-
>  .../i915/display/intel_display_power_well.c   |  7 ++-
>  drivers/gpu/drm/i915/display/intel_hdcp.c |  3 +-
>  8 files changed, 71 insertions(+), 47 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/hsw_ips.c 
> b/drivers/gpu/drm/i915/display/hsw_ips.c
> index 861dcd2eb890..ab0032b78d7f 100644
> --- a/drivers/gpu/drm/i915/display/hsw_ips.c
> +++ b/drivers/gpu/drm/i915/display/hsw_ips.c
> @@ -8,7 +8,6 @@
>  #include "i915_reg.h"
>  #include "intel_de.h"
>  #include "intel_display_types.h"
> -#include "intel_pcode.h"
>  
>  static void hsw_ips_enable(const struct intel_crtc_state *crtc_state)
>  {
> @@ -28,8 +27,8 @@ static void hsw_ips_enable(const struct intel_crtc_state 
> *crtc_state)
>  
>   if (IS_BROADWELL(i915)) {
>   drm_WARN_ON(&i915->drm,
> - snb_pcode_write(&i915->uncore, DISPLAY_IPS_CONTROL,
> - IPS_ENABLE | IPS_PCODE_CONTROL));
> + intel_de_pcode_write(i915, DISPLAY_IPS_CONTROL,
> +  IPS_ENABLE | 
> IPS_PCODE_CONTROL));
>   /*
>* Quoting Art Runyan: "its not safe to expect any particular
>* value in IPS_CTL bit 31 after enabling IPS through the
> @@ -62,7 +61,7 @@ bool hsw_ips_disable(const struct intel_crtc_state 
> *crtc_state)
>  
>   if (IS_BROADWELL(i915)) {
>   drm_WARN_ON(&i915->drm,
> - snb_pcode_write(&i915->uncore, DISPLAY_IPS_CONTROL, 
> 0));
> + intel_de_pcode_write(i915, DISPLAY_IPS_CONTROL, 0));
>   /*
>* Wait for PCODE to finish disabling IPS. The BSpec specified
>* 42ms timeout value leads to occasional timeouts so use 100ms
> diff --git a/drivers/gpu/drm/i915/display/intel_bw.c 
> b/drivers/gpu/drm/i915/display/intel_bw.c
> index 79269d2c476b..8ecf4e3e2bc6 100644
> --- a/drivers/gpu/drm/i915/display/intel_bw.c
> +++ b/drivers/gpu/drm/i915/display/intel_bw.c
> @@ -10,9 +10,9 @@
>  #include "intel_atomic.h"
>  #include "intel_bw.h"
>  #include "intel_cdclk.h"
> +#include "intel_de.h"
>  #include "intel_display_types.h"
>  #include "intel_mchbar_regs.h"
> -#include "intel_pcode.h"
>  #include "intel_pm.h"
>  
>  /* Parameters for Qclk Geyserville (QGV) */
> @@ -78,9 +78,9 @@ static int icl_pcode_read_qgv_point_info(struct 
> drm_i915_private *dev_priv,
>   u16 dclk;
>   int ret;
>  
> - ret = snb_pcode_read(&dev_priv->uncore, ICL_PCODE_MEM_SUBSYSYSTEM_INFO |
> -  ICL_PCODE_MEM_SS_READ_QGV_POINT_INFO(point),
> -  &val, &val2);
> + ret = intel_de_pcode_read(dev_priv, ICL_PCODE_MEM_SUBSYSYSTEM_INFO |
> +   ICL_PCODE_MEM_SS_READ_QGV_POINT_INFO(point),
> +   &val, &val2);
>   if (ret)
>   return ret;
>  
> @@ -104,8 +104,8 @@ static int adls_pcode_read_psf_gv_point_info(struct 
> drm_i915_private *dev_priv,
>   int ret;
>   int i;
>  
> - ret = snb_pcode_read(&dev_priv->uncore, ICL_PCODE_MEM_SUBSYSYSTEM_INFO |
> -  ADL_PCODE_MEM_SS_READ_PSF_GV_INFO, &val, NULL);
> + ret = intel_de_pcode_read(dev_priv, ICL_PCODE_MEM_SUBSYSYSTEM_INFO |
> +   ADL_PCODE_MEM_SS_READ_PSF_GV_INFO, &val, 
> NULL);
>   if (ret)
>   return ret;
>  
> @@ -123,11 +123,11 @@ int icl_pcode_restrict_qgv_points(struct 
> drm_i915_private *dev_priv,
>   int ret;
>  
>   /* bspec says to keep retrying for at least 1 ms */
> - ret = skl_pcode_request(&dev_priv->uncore, 
> ICL_PCODE_SAGV_DE_MEM_SS_CONFIG,
> - points_mask,
> - ICL_PCODE_REP_QGV_MASK | 
> ADLS_PCODE_REP_PSF_MASK,
> - ICL_PCODE_REP_QGV_SAFE | 
> ADLS_PCODE_REP_PSF_SAFE,
> - 1);
> + ret = intel_de_pcode_request(dev_priv, ICL_PCODE_SAGV_DE_MEM_SS_CONFIG,
> +  points_mask,
> +  ICL_PCODE_REP_QGV_MASK | 
> ADLS_PCODE_REP_PSF_MASK,
> +  ICL_PCODE_REP_QGV_SAFE | 
> ADLS_PCODE_REP_PSF_SAFE,
> +   

[Intel-gfx] [PATCH 1/4] drm/i915: Move display pcode requests to intel_de

2022-08-23 Thread Maarten Lankhorst
This will allow us not to use uncore from display code directly any more.

Signed-off-by: Maarten Lankhorst 
---
 drivers/gpu/drm/i915/display/hsw_ips.c|  7 ++-
 drivers/gpu/drm/i915/display/intel_bw.c   | 22 -
 drivers/gpu/drm/i915/display/intel_cdclk.c| 45 +--
 drivers/gpu/drm/i915/display/intel_de.h   | 30 +
 drivers/gpu/drm/i915/display/intel_display.c  |  1 -
 .../drm/i915/display/intel_display_power.c|  3 +-
 .../i915/display/intel_display_power_well.c   |  7 ++-
 drivers/gpu/drm/i915/display/intel_hdcp.c |  3 +-
 8 files changed, 71 insertions(+), 47 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/hsw_ips.c 
b/drivers/gpu/drm/i915/display/hsw_ips.c
index 861dcd2eb890..ab0032b78d7f 100644
--- a/drivers/gpu/drm/i915/display/hsw_ips.c
+++ b/drivers/gpu/drm/i915/display/hsw_ips.c
@@ -8,7 +8,6 @@
 #include "i915_reg.h"
 #include "intel_de.h"
 #include "intel_display_types.h"
-#include "intel_pcode.h"
 
 static void hsw_ips_enable(const struct intel_crtc_state *crtc_state)
 {
@@ -28,8 +27,8 @@ static void hsw_ips_enable(const struct intel_crtc_state 
*crtc_state)
 
if (IS_BROADWELL(i915)) {
drm_WARN_ON(&i915->drm,
-   snb_pcode_write(&i915->uncore, DISPLAY_IPS_CONTROL,
-   IPS_ENABLE | IPS_PCODE_CONTROL));
+   intel_de_pcode_write(i915, DISPLAY_IPS_CONTROL,
+IPS_ENABLE | 
IPS_PCODE_CONTROL));
/*
 * Quoting Art Runyan: "its not safe to expect any particular
 * value in IPS_CTL bit 31 after enabling IPS through the
@@ -62,7 +61,7 @@ bool hsw_ips_disable(const struct intel_crtc_state 
*crtc_state)
 
if (IS_BROADWELL(i915)) {
drm_WARN_ON(&i915->drm,
-   snb_pcode_write(&i915->uncore, DISPLAY_IPS_CONTROL, 
0));
+   intel_de_pcode_write(i915, DISPLAY_IPS_CONTROL, 0));
/*
 * Wait for PCODE to finish disabling IPS. The BSpec specified
 * 42ms timeout value leads to occasional timeouts so use 100ms
diff --git a/drivers/gpu/drm/i915/display/intel_bw.c 
b/drivers/gpu/drm/i915/display/intel_bw.c
index 79269d2c476b..8ecf4e3e2bc6 100644
--- a/drivers/gpu/drm/i915/display/intel_bw.c
+++ b/drivers/gpu/drm/i915/display/intel_bw.c
@@ -10,9 +10,9 @@
 #include "intel_atomic.h"
 #include "intel_bw.h"
 #include "intel_cdclk.h"
+#include "intel_de.h"
 #include "intel_display_types.h"
 #include "intel_mchbar_regs.h"
-#include "intel_pcode.h"
 #include "intel_pm.h"
 
 /* Parameters for Qclk Geyserville (QGV) */
@@ -78,9 +78,9 @@ static int icl_pcode_read_qgv_point_info(struct 
drm_i915_private *dev_priv,
u16 dclk;
int ret;
 
-   ret = snb_pcode_read(&dev_priv->uncore, ICL_PCODE_MEM_SUBSYSYSTEM_INFO |
-ICL_PCODE_MEM_SS_READ_QGV_POINT_INFO(point),
-&val, &val2);
+   ret = intel_de_pcode_read(dev_priv, ICL_PCODE_MEM_SUBSYSYSTEM_INFO |
+ ICL_PCODE_MEM_SS_READ_QGV_POINT_INFO(point),
+ &val, &val2);
if (ret)
return ret;
 
@@ -104,8 +104,8 @@ static int adls_pcode_read_psf_gv_point_info(struct 
drm_i915_private *dev_priv,
int ret;
int i;
 
-   ret = snb_pcode_read(&dev_priv->uncore, ICL_PCODE_MEM_SUBSYSYSTEM_INFO |
-ADL_PCODE_MEM_SS_READ_PSF_GV_INFO, &val, NULL);
+   ret = intel_de_pcode_read(dev_priv, ICL_PCODE_MEM_SUBSYSYSTEM_INFO |
+ ADL_PCODE_MEM_SS_READ_PSF_GV_INFO, &val, 
NULL);
if (ret)
return ret;
 
@@ -123,11 +123,11 @@ int icl_pcode_restrict_qgv_points(struct drm_i915_private 
*dev_priv,
int ret;
 
/* bspec says to keep retrying for at least 1 ms */
-   ret = skl_pcode_request(&dev_priv->uncore, 
ICL_PCODE_SAGV_DE_MEM_SS_CONFIG,
-   points_mask,
-   ICL_PCODE_REP_QGV_MASK | 
ADLS_PCODE_REP_PSF_MASK,
-   ICL_PCODE_REP_QGV_SAFE | 
ADLS_PCODE_REP_PSF_SAFE,
-   1);
+   ret = intel_de_pcode_request(dev_priv, ICL_PCODE_SAGV_DE_MEM_SS_CONFIG,
+points_mask,
+ICL_PCODE_REP_QGV_MASK | 
ADLS_PCODE_REP_PSF_MASK,
+ICL_PCODE_REP_QGV_SAFE | 
ADLS_PCODE_REP_PSF_SAFE,
+1);
 
if (ret < 0) {
drm_err(&dev_priv->drm, "Failed to disable qgv points (%d) 
points: 0x%x\n", ret, points_mask);
diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c 
b/drivers/gpu/drm/i915/display/intel_cdclk.c
index 86a22c3766e5..15565406679c 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drive