Work around for Exynos 5260 misreported as Exynos 5420
diff --git a/src/arm/linux/chipset.c b/src/arm/linux/chipset.c
index d803f4b..9f306c2 100644
--- a/src/arm/linux/chipset.c
+++ b/src/arm/linux/chipset.c
@@ -3077,6 +3077,20 @@
/* Exynos 4410 was renamed to Exynos 4412 */
chipset->model = 4412;
break;
+ case 5420:
+ /* Common bug: Exynos 5260 (Hexa-core) reported as Exynos 5420 (Quad-core) */
+ switch (cores) {
+ case 4:
+ break;
+ case 6:
+ cpuinfo_log_info("reinterpreted Exynos 5420 chipset with 6 cores as Exynos 5260");
+ chipset->model = 5260;
+ break;
+ default:
+ cpuinfo_log_warning("system reported invalid %"PRIu32"-core Exynos 5420 chipset", cores);
+ chipset->model = 0;
+ }
+ break;
case 7580:
/* Common bug: Exynos 7578 (Quad-core) reported as Exynos 7580 (Octa-core) */
switch (cores) {
diff --git a/test/name/proc-cpuinfo-hardware.cc b/test/name/proc-cpuinfo-hardware.cc
index 1808422..cf7ebf2 100644
--- a/test/name/proc-cpuinfo-hardware.cc
+++ b/test/name/proc-cpuinfo-hardware.cc
@@ -495,7 +495,7 @@
EXPECT_EQ("Samsung Exynos 4415",
parse_proc_cpuinfo_hardware("Samsung EXYNOS4415"));
EXPECT_EQ("Samsung Exynos 5420",
- parse_proc_cpuinfo_hardware("Samsung EXYNOS5420"));
+ parse_proc_cpuinfo_hardware("Samsung EXYNOS5420", 4));
EXPECT_EQ("Samsung Exynos 5430",
parse_proc_cpuinfo_hardware("Samsung EXYNOS5430"));
EXPECT_EQ("Samsung Exynos 5433",
@@ -518,7 +518,7 @@
EXPECT_EQ("Samsung Exynos 5410",
parse_proc_cpuinfo_hardware("UNIVERSAL5410"));
EXPECT_EQ("Samsung Exynos 5420",
- parse_proc_cpuinfo_hardware("UNIVERSAL5420"));
+ parse_proc_cpuinfo_hardware("UNIVERSAL5420", 4));
EXPECT_EQ("Samsung Exynos 5422",
parse_proc_cpuinfo_hardware("universal5422"));
EXPECT_EQ("Samsung Exynos 5430",
diff --git a/test/name/ro-arch.cc b/test/name/ro-arch.cc
index cfdb268..af5746c 100644
--- a/test/name/ro-arch.cc
+++ b/test/name/ro-arch.cc
@@ -37,7 +37,7 @@
EXPECT_EQ("Samsung Exynos 5410",
parse_ro_arch("exynos5410"));
EXPECT_EQ("Samsung Exynos 5420",
- parse_ro_arch("exynos5420"));
+ parse_ro_arch("exynos5420", 4));
EXPECT_EQ("Samsung Exynos 5422",
parse_ro_arch("exynos5422"));
EXPECT_EQ("Samsung Exynos 5430",
diff --git a/test/name/ro-chipname.cc b/test/name/ro-chipname.cc
index 983fcd9..7f82ade 100644
--- a/test/name/ro-chipname.cc
+++ b/test/name/ro-chipname.cc
@@ -128,7 +128,7 @@
EXPECT_EQ("Samsung Exynos 5410",
parse_ro_chipname("exynos5410"));
EXPECT_EQ("Samsung Exynos 5420",
- parse_ro_chipname("exynos5420"));
+ parse_ro_chipname("exynos5420", 4));
EXPECT_EQ("Samsung Exynos 5422",
parse_ro_chipname("exynos5422"));
EXPECT_EQ("Samsung Exynos 5430",
diff --git a/test/name/ro-product-board.cc b/test/name/ro-product-board.cc
index ae2e8d6..3c99acf 100644
--- a/test/name/ro-product-board.cc
+++ b/test/name/ro-product-board.cc
@@ -275,7 +275,7 @@
EXPECT_EQ("Samsung Exynos 5410",
parse_ro_product_board("universal5410"));
EXPECT_EQ("Samsung Exynos 5420",
- parse_ro_product_board("universal5420"));
+ parse_ro_product_board("universal5420", 4));
EXPECT_EQ("Samsung Exynos 5422",
parse_ro_product_board("universal5422"));
EXPECT_EQ("Samsung Exynos 5430",