Message ID | 1449623923-24082-1-git-send-email-rodrigo.vivi@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, 09 Dec 2015, Rodrigo Vivi <rodrigo.vivi@intel.com> wrote: > Kabylake A0 is based on Skylake H0. > > v2: Don't assume revid+7 and only load the one we are sure about. > > v3: Rebase on top of latest changes. > > Cc: Imre Deak <imre.deak@intel.com> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > --- > drivers/gpu/drm/i915/intel_csr.c | 18 +++++++++++++++--- > 1 file changed, 15 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_csr.c b/drivers/gpu/drm/i915/intel_csr.c > index 6c6a669..7e5ce66 100644 > --- a/drivers/gpu/drm/i915/intel_csr.c > +++ b/drivers/gpu/drm/i915/intel_csr.c > @@ -181,8 +181,20 @@ static const struct stepping_info *intel_get_stepping_info(struct drm_device *de > { > const struct stepping_info *si; > unsigned int size; > + int revid = INTEL_REVID(dev); > > - if (IS_SKYLAKE(dev)) { > + /* > + * FIXME: Kabylake derivated from Skylake H0, so SKL H0 > + * is the right firmware for KBL A0 (revid 0). > + * We have no visibility yet how next KBL steppings will > + * be handled by firmware, so let's just load one we know > + * it works on the KBLs we have so far add support for > + * the only current available KBL. > + */ Really I'd just add static const struct stepping_info kbl_stepping_info[] = { {'H', '0'}, {'I', '0'} }; with your comment above and an if (IS_KABYLAKE()) branch picking the right array, and keep this function nice and void of special casing and magic 7. BR, Jani. > + if (IS_KABYLAKE(dev)) > + revid = 7; > + > + if (IS_SKYLAKE(dev) || IS_KABYLAKE(dev)) { > size = ARRAY_SIZE(skl_stepping_info); > si = skl_stepping_info; > } else if (IS_BROXTON(dev)) { > @@ -192,8 +204,8 @@ static const struct stepping_info *intel_get_stepping_info(struct drm_device *de > return NULL; > } > > - if (INTEL_REVID(dev) < size) > - return si + INTEL_REVID(dev); > + if (revid < size) > + return si + revid; > > return NULL; > }
diff --git a/drivers/gpu/drm/i915/intel_csr.c b/drivers/gpu/drm/i915/intel_csr.c index 6c6a669..7e5ce66 100644 --- a/drivers/gpu/drm/i915/intel_csr.c +++ b/drivers/gpu/drm/i915/intel_csr.c @@ -181,8 +181,20 @@ static const struct stepping_info *intel_get_stepping_info(struct drm_device *de { const struct stepping_info *si; unsigned int size; + int revid = INTEL_REVID(dev); - if (IS_SKYLAKE(dev)) { + /* + * FIXME: Kabylake derivated from Skylake H0, so SKL H0 + * is the right firmware for KBL A0 (revid 0). + * We have no visibility yet how next KBL steppings will + * be handled by firmware, so let's just load one we know + * it works on the KBLs we have so far add support for + * the only current available KBL. + */ + if (IS_KABYLAKE(dev)) + revid = 7; + + if (IS_SKYLAKE(dev) || IS_KABYLAKE(dev)) { size = ARRAY_SIZE(skl_stepping_info); si = skl_stepping_info; } else if (IS_BROXTON(dev)) { @@ -192,8 +204,8 @@ static const struct stepping_info *intel_get_stepping_info(struct drm_device *de return NULL; } - if (INTEL_REVID(dev) < size) - return si + INTEL_REVID(dev); + if (revid < size) + return si + revid; return NULL; }
Kabylake A0 is based on Skylake H0. v2: Don't assume revid+7 and only load the one we are sure about. v3: Rebase on top of latest changes. Cc: Imre Deak <imre.deak@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> --- drivers/gpu/drm/i915/intel_csr.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-)