The sideband latency qos request is only used for VLV PUNIT
access. Abstract it better, and also add the request for VLV only.

Signed-off-by: Jani Nikula <[email protected]>
---
 drivers/gpu/drm/i915/i915_driver.c  |  2 --
 drivers/gpu/drm/i915/i915_drv.h     |  2 +-
 drivers/gpu/drm/i915/vlv_sideband.c | 10 ++++++++--
 3 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_driver.c 
b/drivers/gpu/drm/i915/i915_driver.c
index c3bf7c755cb7..269233756e58 100644
--- a/drivers/gpu/drm/i915/i915_driver.c
+++ b/drivers/gpu/drm/i915/i915_driver.c
@@ -236,7 +236,6 @@ static int i915_driver_early_probe(struct drm_i915_private 
*dev_priv)
        intel_sbi_init(dev_priv);
        vlv_iosf_sb_init(dev_priv);
        mutex_init(&dev_priv->sb_lock);
-       cpu_latency_qos_add_request(&dev_priv->sb_qos, PM_QOS_DEFAULT_VALUE);
 
        i915_memcpy_init_early(dev_priv);
        intel_runtime_pm_init_early(&dev_priv->runtime_pm);
@@ -294,7 +293,6 @@ static void i915_driver_late_release(struct 
drm_i915_private *dev_priv)
        vlv_suspend_cleanup(dev_priv);
        i915_workqueues_cleanup(dev_priv);
 
-       cpu_latency_qos_remove_request(&dev_priv->sb_qos);
        mutex_destroy(&dev_priv->sb_lock);
        vlv_iosf_sb_fini(dev_priv);
        intel_sbi_fini(dev_priv);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index a73fc95762b9..c89a0cd1dc6e 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -242,11 +242,11 @@ struct drm_i915_private {
        /* VLV/CHV IOSF sideband */
        struct {
                struct mutex lock; /* protect sideband access */
+               struct pm_qos_request qos;
        } vlv_iosf_sb;
 
        /* Sideband mailbox protection */
        struct mutex sb_lock;
-       struct pm_qos_request sb_qos;
 
        /** Cached value of IMR to avoid reads in updating the bitfield */
        u32 irq_mask;
diff --git a/drivers/gpu/drm/i915/vlv_sideband.c 
b/drivers/gpu/drm/i915/vlv_sideband.c
index ed7de9c8d0ad..114ae8eb9cd5 100644
--- a/drivers/gpu/drm/i915/vlv_sideband.c
+++ b/drivers/gpu/drm/i915/vlv_sideband.c
@@ -43,7 +43,7 @@ static void __vlv_punit_get(struct drm_i915_private *i915)
         * to the Valleyview P-unit and not all sideband communications.
         */
        if (IS_VALLEYVIEW(i915)) {
-               cpu_latency_qos_update_request(&i915->sb_qos, 0);
+               cpu_latency_qos_update_request(&i915->vlv_iosf_sb.qos, 0);
                on_each_cpu(ping, NULL, 1);
        }
 }
@@ -51,7 +51,7 @@ static void __vlv_punit_get(struct drm_i915_private *i915)
 static void __vlv_punit_put(struct drm_i915_private *i915)
 {
        if (IS_VALLEYVIEW(i915))
-               cpu_latency_qos_update_request(&i915->sb_qos,
+               cpu_latency_qos_update_request(&i915->vlv_iosf_sb.qos,
                                               PM_QOS_DEFAULT_VALUE);
 
        iosf_mbi_punit_release();
@@ -254,10 +254,16 @@ void vlv_iosf_sb_init(struct drm_i915_private *i915)
 {
        if (IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915))
                mutex_init(&i915->vlv_iosf_sb.lock);
+
+       if (IS_VALLEYVIEW(i915))
+               cpu_latency_qos_add_request(&i915->vlv_iosf_sb.qos, 
PM_QOS_DEFAULT_VALUE);
 }
 
 void vlv_iosf_sb_fini(struct drm_i915_private *i915)
 {
+       if (IS_VALLEYVIEW(i915))
+               cpu_latency_qos_remove_request(&i915->vlv_iosf_sb.qos);
+
        if (IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915))
                mutex_destroy(&i915->vlv_iosf_sb.lock);
 }
-- 
2.39.5

Reply via email to