diff mbox

drm/i915/dmc: Step away from symbolic links

Message ID 1462881556-17972-1-git-send-email-patrik.jakobsson@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Patrik Jakobsson May 10, 2016, 11:59 a.m. UTC
Load specific firmware versions for the DMC instead of using symbolic
links. The currently recommended versions are: SKL 1.26, KBL 1.01 and
BXT 1.07.

Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Imre Deak <imre.deak@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Signed-off-by: Patrik Jakobsson <patrik.jakobsson@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_csr.c | 29 ++++++++++++++---------------
 1 file changed, 14 insertions(+), 15 deletions(-)

Comments

Mika Kuoppala May 10, 2016, 12:52 p.m. UTC | #1
Patrik Jakobsson <patrik.jakobsson@linux.intel.com> writes:

> [ text/plain ]
> Load specific firmware versions for the DMC instead of using symbolic
> links. The currently recommended versions are: SKL 1.26, KBL 1.01 and
> BXT 1.07.
>

We should augment the commit message to answer the 'why' part.

Otherwise, looks good.

-Mika


> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Imre Deak <imre.deak@intel.com>
> Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> Signed-off-by: Patrik Jakobsson <patrik.jakobsson@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_csr.c | 29 ++++++++++++++---------------
>  1 file changed, 14 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_csr.c b/drivers/gpu/drm/i915/intel_csr.c
> index 2b3b428..ea047cd 100644
> --- a/drivers/gpu/drm/i915/intel_csr.c
> +++ b/drivers/gpu/drm/i915/intel_csr.c
> @@ -41,15 +41,15 @@
>   * be moved to FW_FAILED.
>   */
>  
> -#define I915_CSR_KBL "i915/kbl_dmc_ver1.bin"
> +#define I915_CSR_KBL "i915/kbl_dmc_ver1_01.bin"
>  MODULE_FIRMWARE(I915_CSR_KBL);
>  #define KBL_CSR_VERSION_REQUIRED	CSR_VERSION(1, 1)
>  
> -#define I915_CSR_SKL "i915/skl_dmc_ver1.bin"
> +#define I915_CSR_SKL "i915/skl_dmc_ver1_26.bin"
>  MODULE_FIRMWARE(I915_CSR_SKL);
> -#define SKL_CSR_VERSION_REQUIRED	CSR_VERSION(1, 23)
> +#define SKL_CSR_VERSION_REQUIRED	CSR_VERSION(1, 26)
>  
> -#define I915_CSR_BXT "i915/bxt_dmc_ver1.bin"
> +#define I915_CSR_BXT "i915/bxt_dmc_ver1_07.bin"
>  MODULE_FIRMWARE(I915_CSR_BXT);
>  #define BXT_CSR_VERSION_REQUIRED	CSR_VERSION(1, 7)
>  
> @@ -286,7 +286,7 @@ static uint32_t *parse_csr_fw(struct drm_i915_private *dev_priv,
>  	uint32_t dmc_offset = CSR_DEFAULT_FW_OFFSET, readcount = 0, nbytes;
>  	uint32_t i;
>  	uint32_t *dmc_payload;
> -	uint32_t required_min_version;
> +	uint32_t required_version;
>  
>  	if (!fw)
>  		return NULL;
> @@ -303,24 +303,23 @@ static uint32_t *parse_csr_fw(struct drm_i915_private *dev_priv,
>  	csr->version = css_header->version;
>  
>  	if (IS_KABYLAKE(dev_priv)) {
> -		required_min_version = KBL_CSR_VERSION_REQUIRED;
> +		required_version = KBL_CSR_VERSION_REQUIRED;
>  	} else if (IS_SKYLAKE(dev_priv)) {
> -		required_min_version = SKL_CSR_VERSION_REQUIRED;
> +		required_version = SKL_CSR_VERSION_REQUIRED;
>  	} else if (IS_BROXTON(dev_priv)) {
> -		required_min_version = BXT_CSR_VERSION_REQUIRED;
> +		required_version = BXT_CSR_VERSION_REQUIRED;
>  	} else {
>  		MISSING_CASE(INTEL_REVID(dev_priv));
> -		required_min_version = 0;
> +		required_version = 0;
>  	}
>  
> -	if (csr->version < required_min_version) {
> -		DRM_INFO("Refusing to load old DMC firmware v%u.%u,"
> -			 " please upgrade to v%u.%u or later"
> -			   " [" FIRMWARE_URL "].\n",
> +	if (csr->version != required_version) {
> +		DRM_INFO("Refusing to load DMC firmware v%u.%u,"
> +			 " please use v%u.%u [" FIRMWARE_URL "].\n",
>  			 CSR_VERSION_MAJOR(csr->version),
>  			 CSR_VERSION_MINOR(csr->version),
> -			 CSR_VERSION_MAJOR(required_min_version),
> -			 CSR_VERSION_MINOR(required_min_version));
> +			 CSR_VERSION_MAJOR(required_version),
> +			 CSR_VERSION_MINOR(required_version));
>  		return NULL;
>  	}
>  
> -- 
> 2.5.0
Patrik Jakobsson May 10, 2016, 3:05 p.m. UTC | #2
On Tue, May 10, 2016 at 03:52:02PM +0300, Mika Kuoppala wrote:
> Patrik Jakobsson <patrik.jakobsson@linux.intel.com> writes:
> 
> > [ text/plain ]
> > Load specific firmware versions for the DMC instead of using symbolic
> > links. The currently recommended versions are: SKL 1.26, KBL 1.01 and
> > BXT 1.07.
> >
> 
> We should augment the commit message to answer the 'why' part.
> 
> Otherwise, looks good.

Yes I agree. Where did this discussion take place? I don't believe I was
part of it. Rodrigo told me we've reached consensus on the decision but
that's all I know.

-Patrik

> 
> -Mika
> 
> 
> > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > Cc: Imre Deak <imre.deak@intel.com>
> > Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> > Signed-off-by: Patrik Jakobsson <patrik.jakobsson@linux.intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_csr.c | 29 ++++++++++++++---------------
> >  1 file changed, 14 insertions(+), 15 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_csr.c b/drivers/gpu/drm/i915/intel_csr.c
> > index 2b3b428..ea047cd 100644
> > --- a/drivers/gpu/drm/i915/intel_csr.c
> > +++ b/drivers/gpu/drm/i915/intel_csr.c
> > @@ -41,15 +41,15 @@
> >   * be moved to FW_FAILED.
> >   */
> >  
> > -#define I915_CSR_KBL "i915/kbl_dmc_ver1.bin"
> > +#define I915_CSR_KBL "i915/kbl_dmc_ver1_01.bin"
> >  MODULE_FIRMWARE(I915_CSR_KBL);
> >  #define KBL_CSR_VERSION_REQUIRED	CSR_VERSION(1, 1)
> >  
> > -#define I915_CSR_SKL "i915/skl_dmc_ver1.bin"
> > +#define I915_CSR_SKL "i915/skl_dmc_ver1_26.bin"
> >  MODULE_FIRMWARE(I915_CSR_SKL);
> > -#define SKL_CSR_VERSION_REQUIRED	CSR_VERSION(1, 23)
> > +#define SKL_CSR_VERSION_REQUIRED	CSR_VERSION(1, 26)
> >  
> > -#define I915_CSR_BXT "i915/bxt_dmc_ver1.bin"
> > +#define I915_CSR_BXT "i915/bxt_dmc_ver1_07.bin"
> >  MODULE_FIRMWARE(I915_CSR_BXT);
> >  #define BXT_CSR_VERSION_REQUIRED	CSR_VERSION(1, 7)
> >  
> > @@ -286,7 +286,7 @@ static uint32_t *parse_csr_fw(struct drm_i915_private *dev_priv,
> >  	uint32_t dmc_offset = CSR_DEFAULT_FW_OFFSET, readcount = 0, nbytes;
> >  	uint32_t i;
> >  	uint32_t *dmc_payload;
> > -	uint32_t required_min_version;
> > +	uint32_t required_version;
> >  
> >  	if (!fw)
> >  		return NULL;
> > @@ -303,24 +303,23 @@ static uint32_t *parse_csr_fw(struct drm_i915_private *dev_priv,
> >  	csr->version = css_header->version;
> >  
> >  	if (IS_KABYLAKE(dev_priv)) {
> > -		required_min_version = KBL_CSR_VERSION_REQUIRED;
> > +		required_version = KBL_CSR_VERSION_REQUIRED;
> >  	} else if (IS_SKYLAKE(dev_priv)) {
> > -		required_min_version = SKL_CSR_VERSION_REQUIRED;
> > +		required_version = SKL_CSR_VERSION_REQUIRED;
> >  	} else if (IS_BROXTON(dev_priv)) {
> > -		required_min_version = BXT_CSR_VERSION_REQUIRED;
> > +		required_version = BXT_CSR_VERSION_REQUIRED;
> >  	} else {
> >  		MISSING_CASE(INTEL_REVID(dev_priv));
> > -		required_min_version = 0;
> > +		required_version = 0;
> >  	}
> >  
> > -	if (csr->version < required_min_version) {
> > -		DRM_INFO("Refusing to load old DMC firmware v%u.%u,"
> > -			 " please upgrade to v%u.%u or later"
> > -			   " [" FIRMWARE_URL "].\n",
> > +	if (csr->version != required_version) {
> > +		DRM_INFO("Refusing to load DMC firmware v%u.%u,"
> > +			 " please use v%u.%u [" FIRMWARE_URL "].\n",
> >  			 CSR_VERSION_MAJOR(csr->version),
> >  			 CSR_VERSION_MINOR(csr->version),
> > -			 CSR_VERSION_MAJOR(required_min_version),
> > -			 CSR_VERSION_MINOR(required_min_version));
> > +			 CSR_VERSION_MAJOR(required_version),
> > +			 CSR_VERSION_MINOR(required_version));
> >  		return NULL;
> >  	}
> >  
> > -- 
> > 2.5.0
Jani Nikula May 10, 2016, 5 p.m. UTC | #3
On Tue, 10 May 2016, Patrik Jakobsson <patrik.jakobsson@linux.intel.com> wrote:
> On Tue, May 10, 2016 at 03:52:02PM +0300, Mika Kuoppala wrote:
>> Patrik Jakobsson <patrik.jakobsson@linux.intel.com> writes:
>> 
>> > [ text/plain ]
>> > Load specific firmware versions for the DMC instead of using symbolic
>> > links. The currently recommended versions are: SKL 1.26, KBL 1.01 and
>> > BXT 1.07.
>> >
>> 
>> We should augment the commit message to answer the 'why' part.
>> 
>> Otherwise, looks good.
>
> Yes I agree. Where did this discussion take place? I don't believe I was
> part of it. Rodrigo told me we've reached consensus on the decision but
> that's all I know.

This captures most of it I think
http://mid.gmane.org/87fuu6i0zb.fsf@intel.com


BR,
Jani.


>
> -Patrik
>
>> 
>> -Mika
>> 
>> 
>> > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> > Cc: Imre Deak <imre.deak@intel.com>
>> > Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
>> > Signed-off-by: Patrik Jakobsson <patrik.jakobsson@linux.intel.com>
>> > ---
>> >  drivers/gpu/drm/i915/intel_csr.c | 29 ++++++++++++++---------------
>> >  1 file changed, 14 insertions(+), 15 deletions(-)
>> >
>> > diff --git a/drivers/gpu/drm/i915/intel_csr.c b/drivers/gpu/drm/i915/intel_csr.c
>> > index 2b3b428..ea047cd 100644
>> > --- a/drivers/gpu/drm/i915/intel_csr.c
>> > +++ b/drivers/gpu/drm/i915/intel_csr.c
>> > @@ -41,15 +41,15 @@
>> >   * be moved to FW_FAILED.
>> >   */
>> >  
>> > -#define I915_CSR_KBL "i915/kbl_dmc_ver1.bin"
>> > +#define I915_CSR_KBL "i915/kbl_dmc_ver1_01.bin"
>> >  MODULE_FIRMWARE(I915_CSR_KBL);
>> >  #define KBL_CSR_VERSION_REQUIRED	CSR_VERSION(1, 1)
>> >  
>> > -#define I915_CSR_SKL "i915/skl_dmc_ver1.bin"
>> > +#define I915_CSR_SKL "i915/skl_dmc_ver1_26.bin"
>> >  MODULE_FIRMWARE(I915_CSR_SKL);
>> > -#define SKL_CSR_VERSION_REQUIRED	CSR_VERSION(1, 23)
>> > +#define SKL_CSR_VERSION_REQUIRED	CSR_VERSION(1, 26)
>> >  
>> > -#define I915_CSR_BXT "i915/bxt_dmc_ver1.bin"
>> > +#define I915_CSR_BXT "i915/bxt_dmc_ver1_07.bin"
>> >  MODULE_FIRMWARE(I915_CSR_BXT);
>> >  #define BXT_CSR_VERSION_REQUIRED	CSR_VERSION(1, 7)
>> >  
>> > @@ -286,7 +286,7 @@ static uint32_t *parse_csr_fw(struct drm_i915_private *dev_priv,
>> >  	uint32_t dmc_offset = CSR_DEFAULT_FW_OFFSET, readcount = 0, nbytes;
>> >  	uint32_t i;
>> >  	uint32_t *dmc_payload;
>> > -	uint32_t required_min_version;
>> > +	uint32_t required_version;
>> >  
>> >  	if (!fw)
>> >  		return NULL;
>> > @@ -303,24 +303,23 @@ static uint32_t *parse_csr_fw(struct drm_i915_private *dev_priv,
>> >  	csr->version = css_header->version;
>> >  
>> >  	if (IS_KABYLAKE(dev_priv)) {
>> > -		required_min_version = KBL_CSR_VERSION_REQUIRED;
>> > +		required_version = KBL_CSR_VERSION_REQUIRED;
>> >  	} else if (IS_SKYLAKE(dev_priv)) {
>> > -		required_min_version = SKL_CSR_VERSION_REQUIRED;
>> > +		required_version = SKL_CSR_VERSION_REQUIRED;
>> >  	} else if (IS_BROXTON(dev_priv)) {
>> > -		required_min_version = BXT_CSR_VERSION_REQUIRED;
>> > +		required_version = BXT_CSR_VERSION_REQUIRED;
>> >  	} else {
>> >  		MISSING_CASE(INTEL_REVID(dev_priv));
>> > -		required_min_version = 0;
>> > +		required_version = 0;
>> >  	}
>> >  
>> > -	if (csr->version < required_min_version) {
>> > -		DRM_INFO("Refusing to load old DMC firmware v%u.%u,"
>> > -			 " please upgrade to v%u.%u or later"
>> > -			   " [" FIRMWARE_URL "].\n",
>> > +	if (csr->version != required_version) {
>> > +		DRM_INFO("Refusing to load DMC firmware v%u.%u,"
>> > +			 " please use v%u.%u [" FIRMWARE_URL "].\n",
>> >  			 CSR_VERSION_MAJOR(csr->version),
>> >  			 CSR_VERSION_MINOR(csr->version),
>> > -			 CSR_VERSION_MAJOR(required_min_version),
>> > -			 CSR_VERSION_MINOR(required_min_version));
>> > +			 CSR_VERSION_MAJOR(required_version),
>> > +			 CSR_VERSION_MINOR(required_version));
>> >  		return NULL;
>> >  	}
>> >  
>> > -- 
>> > 2.5.0
Mika Kuoppala May 11, 2016, 9:26 a.m. UTC | #4
Jani Nikula <jani.nikula@linux.intel.com> writes:

> [ text/plain ]
> On Tue, 10 May 2016, Patrik Jakobsson <patrik.jakobsson@linux.intel.com> wrote:
>> On Tue, May 10, 2016 at 03:52:02PM +0300, Mika Kuoppala wrote:
>>> Patrik Jakobsson <patrik.jakobsson@linux.intel.com> writes:
>>> 
>>> > [ text/plain ]
>>> > Load specific firmware versions for the DMC instead of using symbolic
>>> > links. The currently recommended versions are: SKL 1.26, KBL 1.01 and
>>> > BXT 1.07.
>>> >
>>> 
>>> We should augment the commit message to answer the 'why' part.
>>> 
>>> Otherwise, looks good.
>>
>> Yes I agree. Where did this discussion take place? I don't believe I was
>> part of it. Rodrigo told me we've reached consensus on the decision but
>> that's all I know.
>
> This captures most of it I think
> http://mid.gmane.org/87fuu6i0zb.fsf@intel.com
>

Pretty much. In essence we want to offer a combination
with somekind of proof (read tested) that it works. And lock
that combination. Think about it as a colored seal paint on screw
heads on some products: these were tested and delivered together.
You can unscrew and dissassemble the parts still with minimal effort
and mix the pieces, but they may or may not work as planned if you do so.

And if you broke the seal paint and get a black screen, you know
who to blame.

-Mika

>
> BR,
> Jani.
>
>
>>
>> -Patrik
>>
>>> 
>>> -Mika
>>> 
>>> 
>>> > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>>> > Cc: Imre Deak <imre.deak@intel.com>
>>> > Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
>>> > Signed-off-by: Patrik Jakobsson <patrik.jakobsson@linux.intel.com>
>>> > ---
>>> >  drivers/gpu/drm/i915/intel_csr.c | 29 ++++++++++++++---------------
>>> >  1 file changed, 14 insertions(+), 15 deletions(-)
>>> >
>>> > diff --git a/drivers/gpu/drm/i915/intel_csr.c b/drivers/gpu/drm/i915/intel_csr.c
>>> > index 2b3b428..ea047cd 100644
>>> > --- a/drivers/gpu/drm/i915/intel_csr.c
>>> > +++ b/drivers/gpu/drm/i915/intel_csr.c
>>> > @@ -41,15 +41,15 @@
>>> >   * be moved to FW_FAILED.
>>> >   */
>>> >  
>>> > -#define I915_CSR_KBL "i915/kbl_dmc_ver1.bin"
>>> > +#define I915_CSR_KBL "i915/kbl_dmc_ver1_01.bin"
>>> >  MODULE_FIRMWARE(I915_CSR_KBL);
>>> >  #define KBL_CSR_VERSION_REQUIRED	CSR_VERSION(1, 1)
>>> >  
>>> > -#define I915_CSR_SKL "i915/skl_dmc_ver1.bin"
>>> > +#define I915_CSR_SKL "i915/skl_dmc_ver1_26.bin"
>>> >  MODULE_FIRMWARE(I915_CSR_SKL);
>>> > -#define SKL_CSR_VERSION_REQUIRED	CSR_VERSION(1, 23)
>>> > +#define SKL_CSR_VERSION_REQUIRED	CSR_VERSION(1, 26)
>>> >  
>>> > -#define I915_CSR_BXT "i915/bxt_dmc_ver1.bin"
>>> > +#define I915_CSR_BXT "i915/bxt_dmc_ver1_07.bin"
>>> >  MODULE_FIRMWARE(I915_CSR_BXT);
>>> >  #define BXT_CSR_VERSION_REQUIRED	CSR_VERSION(1, 7)
>>> >  
>>> > @@ -286,7 +286,7 @@ static uint32_t *parse_csr_fw(struct drm_i915_private *dev_priv,
>>> >  	uint32_t dmc_offset = CSR_DEFAULT_FW_OFFSET, readcount = 0, nbytes;
>>> >  	uint32_t i;
>>> >  	uint32_t *dmc_payload;
>>> > -	uint32_t required_min_version;
>>> > +	uint32_t required_version;
>>> >  
>>> >  	if (!fw)
>>> >  		return NULL;
>>> > @@ -303,24 +303,23 @@ static uint32_t *parse_csr_fw(struct drm_i915_private *dev_priv,
>>> >  	csr->version = css_header->version;
>>> >  
>>> >  	if (IS_KABYLAKE(dev_priv)) {
>>> > -		required_min_version = KBL_CSR_VERSION_REQUIRED;
>>> > +		required_version = KBL_CSR_VERSION_REQUIRED;
>>> >  	} else if (IS_SKYLAKE(dev_priv)) {
>>> > -		required_min_version = SKL_CSR_VERSION_REQUIRED;
>>> > +		required_version = SKL_CSR_VERSION_REQUIRED;
>>> >  	} else if (IS_BROXTON(dev_priv)) {
>>> > -		required_min_version = BXT_CSR_VERSION_REQUIRED;
>>> > +		required_version = BXT_CSR_VERSION_REQUIRED;
>>> >  	} else {
>>> >  		MISSING_CASE(INTEL_REVID(dev_priv));
>>> > -		required_min_version = 0;
>>> > +		required_version = 0;
>>> >  	}
>>> >  
>>> > -	if (csr->version < required_min_version) {
>>> > -		DRM_INFO("Refusing to load old DMC firmware v%u.%u,"
>>> > -			 " please upgrade to v%u.%u or later"
>>> > -			   " [" FIRMWARE_URL "].\n",
>>> > +	if (csr->version != required_version) {
>>> > +		DRM_INFO("Refusing to load DMC firmware v%u.%u,"
>>> > +			 " please use v%u.%u [" FIRMWARE_URL "].\n",
>>> >  			 CSR_VERSION_MAJOR(csr->version),
>>> >  			 CSR_VERSION_MINOR(csr->version),
>>> > -			 CSR_VERSION_MAJOR(required_min_version),
>>> > -			 CSR_VERSION_MINOR(required_min_version));
>>> > +			 CSR_VERSION_MAJOR(required_version),
>>> > +			 CSR_VERSION_MINOR(required_version));
>>> >  		return NULL;
>>> >  	}
>>> >  
>>> > -- 
>>> > 2.5.0
>
> -- 
> Jani Nikula, Intel Open Source Technology Center
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_csr.c b/drivers/gpu/drm/i915/intel_csr.c
index 2b3b428..ea047cd 100644
--- a/drivers/gpu/drm/i915/intel_csr.c
+++ b/drivers/gpu/drm/i915/intel_csr.c
@@ -41,15 +41,15 @@ 
  * be moved to FW_FAILED.
  */
 
-#define I915_CSR_KBL "i915/kbl_dmc_ver1.bin"
+#define I915_CSR_KBL "i915/kbl_dmc_ver1_01.bin"
 MODULE_FIRMWARE(I915_CSR_KBL);
 #define KBL_CSR_VERSION_REQUIRED	CSR_VERSION(1, 1)
 
-#define I915_CSR_SKL "i915/skl_dmc_ver1.bin"
+#define I915_CSR_SKL "i915/skl_dmc_ver1_26.bin"
 MODULE_FIRMWARE(I915_CSR_SKL);
-#define SKL_CSR_VERSION_REQUIRED	CSR_VERSION(1, 23)
+#define SKL_CSR_VERSION_REQUIRED	CSR_VERSION(1, 26)
 
-#define I915_CSR_BXT "i915/bxt_dmc_ver1.bin"
+#define I915_CSR_BXT "i915/bxt_dmc_ver1_07.bin"
 MODULE_FIRMWARE(I915_CSR_BXT);
 #define BXT_CSR_VERSION_REQUIRED	CSR_VERSION(1, 7)
 
@@ -286,7 +286,7 @@  static uint32_t *parse_csr_fw(struct drm_i915_private *dev_priv,
 	uint32_t dmc_offset = CSR_DEFAULT_FW_OFFSET, readcount = 0, nbytes;
 	uint32_t i;
 	uint32_t *dmc_payload;
-	uint32_t required_min_version;
+	uint32_t required_version;
 
 	if (!fw)
 		return NULL;
@@ -303,24 +303,23 @@  static uint32_t *parse_csr_fw(struct drm_i915_private *dev_priv,
 	csr->version = css_header->version;
 
 	if (IS_KABYLAKE(dev_priv)) {
-		required_min_version = KBL_CSR_VERSION_REQUIRED;
+		required_version = KBL_CSR_VERSION_REQUIRED;
 	} else if (IS_SKYLAKE(dev_priv)) {
-		required_min_version = SKL_CSR_VERSION_REQUIRED;
+		required_version = SKL_CSR_VERSION_REQUIRED;
 	} else if (IS_BROXTON(dev_priv)) {
-		required_min_version = BXT_CSR_VERSION_REQUIRED;
+		required_version = BXT_CSR_VERSION_REQUIRED;
 	} else {
 		MISSING_CASE(INTEL_REVID(dev_priv));
-		required_min_version = 0;
+		required_version = 0;
 	}
 
-	if (csr->version < required_min_version) {
-		DRM_INFO("Refusing to load old DMC firmware v%u.%u,"
-			 " please upgrade to v%u.%u or later"
-			   " [" FIRMWARE_URL "].\n",
+	if (csr->version != required_version) {
+		DRM_INFO("Refusing to load DMC firmware v%u.%u,"
+			 " please use v%u.%u [" FIRMWARE_URL "].\n",
 			 CSR_VERSION_MAJOR(csr->version),
 			 CSR_VERSION_MINOR(csr->version),
-			 CSR_VERSION_MAJOR(required_min_version),
-			 CSR_VERSION_MINOR(required_min_version));
+			 CSR_VERSION_MAJOR(required_version),
+			 CSR_VERSION_MINOR(required_version));
 		return NULL;
 	}