Opregion Mailbox #2 is obsolete for SWSCI usage in opregion v2.x, and
repurposed in opregion v3.x. Warn about obsole mailbox presence in v2.x,
and ignore with an error for v3.x.

Cc: Ville Syrjälä <ville.syrj...@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nik...@intel.com>
---
 drivers/gpu/drm/i915/display/intel_opregion.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_opregion.c 
b/drivers/gpu/drm/i915/display/intel_opregion.c
index ce3d44cc2461..6e32ed6bbf4e 100644
--- a/drivers/gpu/drm/i915/display/intel_opregion.c
+++ b/drivers/gpu/drm/i915/display/intel_opregion.c
@@ -932,9 +932,17 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv)
        }
 
        if (mboxes & MBOX_SWSCI) {
-               drm_dbg(&dev_priv->drm, "SWSCI supported\n");
-               opregion->swsci = base + OPREGION_SWSCI_OFFSET;
-               swsci_setup(dev_priv);
+               u8 major = opregion->header->over.major;
+
+               if (major >= 3) {
+                       drm_err(&dev_priv->drm, "SWSCI Mailbox #2 present for 
opregion v3.x, ignoring\n");
+               } else {
+                       if (major >= 2)
+                               drm_warn(&dev_priv->drm, "SWSCI Mailbox #2 
present for opregion v2.x\n");
+                       drm_dbg(&dev_priv->drm, "SWSCI supported\n");
+                       opregion->swsci = base + OPREGION_SWSCI_OFFSET;
+                       swsci_setup(dev_priv);
+               }
        }
 
        if (mboxes & MBOX_ASLE) {
-- 
2.30.2

Reply via email to