summaryrefslogtreecommitdiffstats
path: root/ich_descriptors.c
diff options
context:
space:
mode:
authorNico Huber <nico.h@gmx.de>2021-06-17 23:25:35 +0200
committerNico Huber <nico.h@gmx.de>2021-06-30 17:15:32 +0000
commitcd9b7b427d19e591c1091cb783a51951ef3aeffc (patch)
tree2d24217f93848fa04b962aeda70db3345ab20261 /ich_descriptors.c
parentd07140b72b84e937150ab9867de183ca0ea3de88 (diff)
downloadflashrom-cd9b7b427d19e591c1091cb783a51951ef3aeffc.tar.gz
flashrom-cd9b7b427d19e591c1091cb783a51951ef3aeffc.tar.bz2
flashrom-cd9b7b427d19e591c1091cb783a51951ef3aeffc.zip
ich_descriptors: Normalize chipset detection
Normalize the fallback paths: * Always end with the newest, assumed compatible chipset. * Perform tighter checks when it's about warnings only. * If two chipsets seem compatible, always return the same (this is currently the case for 8/9 series and 300/400 series which we can't distinguish). Change-Id: Ic5a5fee870202173b3a9813b03ec261e8ee45155 Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/c/flashrom/+/55651 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Michał Żygowski <michal.zygowski@3mdeb.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'ich_descriptors.c')
-rw-r--r--ich_descriptors.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/ich_descriptors.c b/ich_descriptors.c
index 10355d90a..aba752854 100644
--- a/ich_descriptors.c
+++ b/ich_descriptors.c
@@ -933,15 +933,13 @@ static enum ich_chipset guess_ich_chipset_from_content(const struct ich_desc_con
return CHIPSET_ICH9;
if (content->ISL <= 10)
return CHIPSET_ICH10;
- if (content->ISL <= 16)
- return CHIPSET_5_SERIES_IBEX_PEAK;
if (content->FLMAP2 == 0) {
- if (content->ISL == 23)
- return CHIPSET_GEMINI_LAKE;
- warn_peculiar_desc(content->ISL != 19, "Apollo Lake");
- return CHIPSET_APOLLO_LAKE;
+ if (content->ISL == 19)
+ return CHIPSET_APOLLO_LAKE;
+ warn_peculiar_desc(content->ISL != 23, "Gemini Lake");
+ return CHIPSET_GEMINI_LAKE;
}
- warn_peculiar_desc(true, "Ibex Peak");
+ warn_peculiar_desc(content->ISL != 16, "Ibex Peak");
return CHIPSET_5_SERIES_IBEX_PEAK;
} else if (upper->MDTBA == 0x00) {
if (content->ICCRIBA < 0x31 && content->FMSBA < 0x30) {
@@ -949,10 +947,8 @@ static enum ich_chipset guess_ich_chipset_from_content(const struct ich_desc_con
return CHIPSET_BAYTRAIL;
if (content->MSL <= 1 && content->ISL <= 18)
return CHIPSET_6_SERIES_COUGAR_POINT;
- if (content->MSL <= 1 && content->ISL <= 21)
- return CHIPSET_8_SERIES_LYNX_POINT;
- warn_peculiar_desc(true, "Wildcat Point");
- return CHIPSET_9_SERIES_WILDCAT_POINT;
+ warn_peculiar_desc(content->MSL != 1 || content->ISL != 21, "Lynx Point");
+ return CHIPSET_8_SERIES_LYNX_POINT;
}
if (content->NM == 6) {
warn_peculiar_desc(content->ICCRIBA > 0x34, "C620 series");