drm/i915/opregion: rvda is relative from opregion base in opregion 2.1+
authorJani Nikula <jani.nikula@intel.com>
Fri, 8 Feb 2019 18:42:53 +0000 (20:42 +0200)
committerJani Nikula <jani.nikula@intel.com>
Mon, 11 Feb 2019 11:32:49 +0000 (13:32 +0200)
commita0f52c3d357af218a9c1f7cd906ab70426176a1a
treed1468672f1ebfdac5015d000e47a821c00eafa14
parent98fdaaca9537b997062f1abc0aa87c61b50ce40a
drm/i915/opregion: rvda is relative from opregion base in opregion 2.1+

Starting from opregion version 2.1 (roughly corresponding to ICL+) the
RVDA field is relative from the beginning of opregion, not absolute
address.

Fix the error path while at it.

v2: Make relative vs. absolute conditional on the opregion version,
    bumped for the purpose. Turned out there are machines relying on
    absolute RVDA in the wild.

v3: Fix the version checks

Fixes: 04ebaadb9f2d ("drm/i915/opregion: handle VBT sizes bigger than 6 KB")
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Imre Deak <imre.deak@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190208184254.24123-2-jani.nikula@intel.com
drivers/gpu/drm/i915/intel_opregion.c