aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJani Nikula <jani.nikula@intel.com>2019-02-08 13:42:52 -0500
committerJani Nikula <jani.nikula@intel.com>2019-02-12 08:37:51 -0500
commitfc89a38d99d4b1b33ca5b0e2329f5ddea02ecfb5 (patch)
tree6347542da0523f9047ea8d91314b74def4b6aec5
parent2e7bd10e05afb866b5fb13eda25095c35d7a27cc (diff)
drm/i915/opregion: fix version check
The u32 version field encodes major, minor, revision and reserved. We've basically been checking for any non-zero version. Add opregion version logging while at it. v2: Fix the fix of the version check 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-1-jani.nikula@intel.com (cherry picked from commit 98fdaaca9537b997062f1abc0aa87c61b50ce40a) Signed-off-by: Jani Nikula <jani.nikula@intel.com>
-rw-r--r--drivers/gpu/drm/i915/intel_opregion.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
index b8f106d9ecf8..3035b402973f 100644
--- a/drivers/gpu/drm/i915/intel_opregion.c
+++ b/drivers/gpu/drm/i915/intel_opregion.c
@@ -55,7 +55,12 @@
55struct opregion_header { 55struct opregion_header {
56 u8 signature[16]; 56 u8 signature[16];
57 u32 size; 57 u32 size;
58 u32 opregion_ver; 58 struct {
59 u8 rsvd;
60 u8 revision;
61 u8 minor;
62 u8 major;
63 } __packed over;
59 u8 bios_ver[32]; 64 u8 bios_ver[32];
60 u8 vbios_ver[16]; 65 u8 vbios_ver[16];
61 u8 driver_ver[16]; 66 u8 driver_ver[16];
@@ -925,6 +930,11 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv)
925 opregion->header = base; 930 opregion->header = base;
926 opregion->lid_state = base + ACPI_CLID; 931 opregion->lid_state = base + ACPI_CLID;
927 932
933 DRM_DEBUG_DRIVER("ACPI OpRegion version %u.%u.%u\n",
934 opregion->header->over.major,
935 opregion->header->over.minor,
936 opregion->header->over.revision);
937
928 mboxes = opregion->header->mboxes; 938 mboxes = opregion->header->mboxes;
929 if (mboxes & MBOX_ACPI) { 939 if (mboxes & MBOX_ACPI) {
930 DRM_DEBUG_DRIVER("Public ACPI methods supported\n"); 940 DRM_DEBUG_DRIVER("Public ACPI methods supported\n");
@@ -953,7 +963,7 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv)
953 if (dmi_check_system(intel_no_opregion_vbt)) 963 if (dmi_check_system(intel_no_opregion_vbt))
954 goto out; 964 goto out;
955 965
956 if (opregion->header->opregion_ver >= 2 && opregion->asle && 966 if (opregion->header->over.major >= 2 && opregion->asle &&
957 opregion->asle->rvda && opregion->asle->rvds) { 967 opregion->asle->rvda && opregion->asle->rvds) {
958 opregion->rvda = memremap(opregion->asle->rvda, 968 opregion->rvda = memremap(opregion->asle->rvda,
959 opregion->asle->rvds, 969 opregion->asle->rvds,