@@ -52,11 +52,6 @@
MODULE_FIRMWARE(I915_CSR_BXT);
#define BXT_CSR_VERSION_REQUIRED CSR_VERSION(1, 7)
-#define FIRMWARE_URL "https://01.org/linuxgraphics/downloads/firmware"
-
-
-
-
#define CSR_MAX_FW_SIZE 0x2FFF
#define CSR_DEFAULT_FW_OFFSET 0xFFFFFFFF
@@ -309,11 +304,12 @@ static uint32_t *parse_csr_fw(struct drm_i915_private *dev_priv,
if (csr->version != required_version) {
DRM_INFO("Refusing to load DMC firmware v%u.%u,"
- " please use v%u.%u [" FIRMWARE_URL "].\n",
+ " please use v%u.%u [%s].\n",
CSR_VERSION_MAJOR(csr->version),
CSR_VERSION_MINOR(csr->version),
CSR_VERSION_MAJOR(required_version),
- CSR_VERSION_MINOR(required_version));
+ CSR_VERSION_MINOR(required_version),
+ I915_FIRMWARE_URL);
return NULL;
}
@@ -420,8 +416,9 @@ static void csr_load_work_fn(struct work_struct *work)
} else {
dev_notice(dev_priv->drm.dev,
"Failed to load DMC firmware"
- " [" FIRMWARE_URL "],"
- " disabling runtime power management.\n");
+ " [%s],"
+ " disabling runtime power management.\n",
+ I915_FIRMWARE_URL);
}
release_firmware(fw);
@@ -186,6 +186,7 @@ static inline void intel_guc_notify(struct intel_guc *guc)
int intel_guc_select_fw(struct intel_guc *guc);
int intel_guc_init_hw(struct intel_guc *guc);
u32 intel_guc_wopcm_size(struct drm_i915_private *dev_priv);
+void intel_guc_fetch_sanitize_options(struct intel_guc *guc);
/* i915_guc_submission.c */
int i915_guc_submission_init(struct drm_i915_private *dev_priv);
@@ -63,6 +63,8 @@
#define GLK_FW_MAJOR 10
#define GLK_FW_MINOR 56
+#define I915_SLPC_REQUIRED_GUC_MAJOR 9
+
#define GUC_FW_PATH(platform, major, minor) \
"i915/" __stringify(platform) "_guc_ver" __stringify(major) "_" __stringify(minor) ".bin"
@@ -426,3 +428,16 @@ int intel_guc_select_fw(struct intel_guc *guc)
return 0;
}
+
+void intel_guc_fetch_sanitize_options(struct intel_guc *guc)
+{
+ if (guc->fw.major_ver_found <
+ I915_SLPC_REQUIRED_GUC_MAJOR) {
+ DRM_INFO("SLPC not supported with GuC firmware"
+ " v%u, please use v%u+ [%s].\n",
+ guc->fw.major_ver_found,
+ I915_SLPC_REQUIRED_GUC_MAJOR,
+ I915_FIRMWARE_URL);
+ i915.enable_slpc = 0;
+ }
+}
@@ -195,6 +195,7 @@ static void fetch_uc_fw(struct drm_i915_private *dev_priv,
}
uc_fw->major_ver_found = css->guc.sw_version >> 16;
uc_fw->minor_ver_found = css->guc.sw_version & 0xFFFF;
+ intel_guc_fetch_sanitize_options(&dev_priv->guc);
break;
case INTEL_UC_FW_TYPE_HUC:
@@ -24,6 +24,8 @@
#ifndef _INTEL_UC_COMMON_H_
#define _INTEL_UC_COMMON_H_
+#define I915_FIRMWARE_URL "https://01.org/linuxgraphics/intel-linux-graphics-firmwares"
+
enum intel_uc_fw_status {
INTEL_UC_FIRMWARE_FAIL = -1,
INTEL_UC_FIRMWARE_NONE = 0,