@@ -44,47 +44,46 @@ using namespace Query;
4444#if CF_ANDROID
4545static std::string detect_qualcomm (const std::string& model_name)
4646{
47- std::string cpuname = " Qualcomm " ;
4847 switch (fnv1a16::hash (model_name))
4948 {
50- case " SM8750-AB" _fnv1a16: cpuname += " Snapdragon 8 Elite" ; break ;
51- case " SM8635" _fnv1a16: cpuname += " Snapdragon 8s Gen 3" ; break ;
52- case " SM8650-AC" _fnv1a16: cpuname += " Snapdragon 8 Gen 3 for Galaxy" ; break ;
53- case " SM8650" _fnv1a16: cpuname += " Snapdragon 8 Gen 3" ; break ;
54- case " SM8550-AC" _fnv1a16: cpuname += " Snapdragon 8 Gen 2 for Galaxy" ; break ;
55- case " SM8550" _fnv1a16: cpuname += " Snapdragon 8 Gen 2" ; break ;
56- case " SM8475" _fnv1a16: cpuname += " Snapdragon 8+ Gen 1" ; break ;
57- case " SM8450" _fnv1a16: cpuname += " Snapdragon 8 Gen 1" ; break ;
58-
59- case " SM7450-AB" _fnv1a16: cpuname += " Snapdragon 7 Gen 1" ; break ;
60- case " SM7475-AB" _fnv1a16: cpuname += " Snapdragon 7+ Gen 2" ; break ;
61- case " SM7435-AB" _fnv1a16: cpuname += " Snapdragon 7s Gen 2" ; break ;
62- case " SM7550-AB" _fnv1a16: cpuname += " Snapdragon 7 Gen 3" ; break ;
63- case " SM7675-AB" _fnv1a16: cpuname += " Snapdragon 7+ Gen 3" ; break ;
64- case " SM7635" _fnv1a16: cpuname += " Snapdragon 7s Gen 3" ; break ;
65-
66- case " SM6375-AC" _fnv1a16: cpuname += " Snapdragon 6s Gen 3" ; break ;
67- case " SM6475-AB" _fnv1a16: cpuname += " Snapdragon 6 Gen 3" ; break ;
68- case " SM6115-AC" _fnv1a16: cpuname += " Snapdragon 6s Gen 1" ; break ;
69- case " SM6450" _fnv1a16: cpuname += " Snapdragon 6 Gen 1" ; break ;
70-
71- case " SM4635" _fnv1a16: cpuname += " Snapdragon 4s Gen 2" ; break ;
72- case " SM4450" _fnv1a16: cpuname += " Snapdragon 4 Gen 2" ; break ;
73- case " SM4375" _fnv1a16: cpuname += " Snapdragon 4 Gen 1" ; break ;
49+ case " SM8750-AB" _fnv1a16: return " Snapdragon 8 Elite" ;
50+ case " SM8635" _fnv1a16: return " Snapdragon 8s Gen 3" ;
51+ case " SM8650-AC" _fnv1a16: return " Snapdragon 8 Gen 3 for Galaxy" ;
52+ case " SM8650" _fnv1a16: return " Snapdragon 8 Gen 3" ;
53+ case " SM8550-AC" _fnv1a16: return " Snapdragon 8 Gen 2 for Galaxy" ;
54+ case " SM8550" _fnv1a16: return " Snapdragon 8 Gen 2" ;
55+ case " SM8475" _fnv1a16: return " Snapdragon 8+ Gen 1" ;
56+ case " SM8450" _fnv1a16: return " Snapdragon 8 Gen 1" ;
57+
58+ case " SM7450-AB" _fnv1a16: return " Snapdragon 7 Gen 1" ;
59+ case " SM7475-AB" _fnv1a16: return " Snapdragon 7+ Gen 2" ;
60+ case " SM7435-AB" _fnv1a16: return " Snapdragon 7s Gen 2" ;
61+ case " SM7550-AB" _fnv1a16: return " Snapdragon 7 Gen 3" ;
62+ case " SM7675-AB" _fnv1a16: return " Snapdragon 7+ Gen 3" ;
63+ case " SM7635" _fnv1a16: return " Snapdragon 7s Gen 3" ;
64+
65+ case " SM6375-AC" _fnv1a16: return " Snapdragon 6s Gen 3" ;
66+ case " SM6475-AB" _fnv1a16: return " Snapdragon 6 Gen 3" ;
67+ case " SM6115-AC" _fnv1a16: return " Snapdragon 6s Gen 1" ;
68+ case " SM6450" _fnv1a16: return " Snapdragon 6 Gen 1" ;
69+
70+ case " SM4635" _fnv1a16: return " Snapdragon 4s Gen 2" ;
71+ case " SM4450" _fnv1a16: return " Snapdragon 4 Gen 2" ;
72+ case " SM4375" _fnv1a16: return " Snapdragon 4 Gen 1" ;
7473
7574 // adding fastfetch's many missing chips names
7675 case " MSM8225Q" _fnv1a16:
7776 case " MSM8625Q" _fnv1a16:
7877 case " MSM8210" _fnv1a16:
7978 case " MSM8610" _fnv1a16:
8079 case " MSM8212" _fnv1a16:
81- case " MSM8612" _fnv1a16: cpuname += " Snapdragon 200" ; break ;
80+ case " MSM8612" _fnv1a16: return " Snapdragon 200" ;
8281
83- case " MSM8905" _fnv1a16: cpuname += " 205" ; break ; // Qualcomm 205 break;
84- case " MSM8208" _fnv1a16: cpuname += " Snapdragon 208" ; break ;
85- case " MSM8909" _fnv1a16: cpuname += " Snapdragon 210" ; break ;
86- case " MSM8909AA" _fnv1a16: cpuname += " Snapdragon 212" ; break ;
87- case " QM215" _fnv1a16: cpuname += " 215" ; break ;
82+ case " MSM8905" _fnv1a16: return " 205" ; // Qualcomm 205
83+ case " MSM8208" _fnv1a16: return " Snapdragon 208" ;
84+ case " MSM8909" _fnv1a16: return " Snapdragon 210" ;
85+ case " MSM8909AA" _fnv1a16: return " Snapdragon 212" ;
86+ case " QM215" _fnv1a16: return " 215" ;
8887
8988 // holy crap
9089 case " APQ8026" _fnv1a16:
@@ -101,88 +100,181 @@ static std::string detect_qualcomm(const std::string& model_name)
101100 case " APQ8030AB" _fnv1a16:
102101 case " MSM8230AB" _fnv1a16:
103102 case " MSM8630AB" _fnv1a16:
104- case " MSM8930AB" _fnv1a16: cpuname += " Snapdragon 400" ; break ;
103+ case " MSM8930AB" _fnv1a16: return " Snapdragon 400" ;
105104
106105 case " APQ8016" _fnv1a16:
107- case " MSM8916" _fnv1a16: cpuname += " Snapdragon 410" ; break ;
108- case " MSM8929" _fnv1a16: cpuname += " Snapdragon 415" ; break ;
109- case " MSM8917" _fnv1a16: cpuname += " Snapdragon 425" ; break ;
110- case " MSM8920" _fnv1a16: cpuname += " Snapdragon 427" ; break ;
111- case " MSM8937" _fnv1a16: cpuname += " Snapdragon 430" ; break ;
112- case " MSM8940" _fnv1a16: cpuname += " Snapdragon 435" ; break ;
113- case " SDM429" _fnv1a16: cpuname += " Snapdragon 429" ; break ;
114- case " SDM439" _fnv1a16: cpuname += " Snapdragon 439" ; break ;
115- case " SDM450" _fnv1a16: cpuname += " Snapdragon 450" ; break ;
116- case " SM4250-AA" _fnv1a16: cpuname += " Snapdragon 460" ; break ;
117- case " SM4350" _fnv1a16: cpuname += " Snapdragon 480" ; break ;
118- case " SM4350-AC" _fnv1a16: cpuname += " Snapdragon 480+" ; break ;
106+ case " MSM8916" _fnv1a16: return " Snapdragon 410" ;
107+ case " MSM8929" _fnv1a16: return " Snapdragon 415" ;
108+ case " MSM8917" _fnv1a16: return " Snapdragon 425" ;
109+ case " MSM8920" _fnv1a16: return " Snapdragon 427" ;
110+ case " MSM8937" _fnv1a16: return " Snapdragon 430" ;
111+ case " MSM8940" _fnv1a16: return " Snapdragon 435" ;
112+ case " SDM429" _fnv1a16: return " Snapdragon 429" ;
113+ case " SDM439" _fnv1a16: return " Snapdragon 439" ;
114+ case " SDM450" _fnv1a16: return " Snapdragon 450" ;
115+ case " SM4250-AA" _fnv1a16: return " Snapdragon 460" ;
116+ case " SM4350" _fnv1a16: return " Snapdragon 480" ;
117+ case " SM4350-AC" _fnv1a16: return " Snapdragon 480+" ;
119118
120119 case " APQ8064-1AA" _fnv1a16:
121120 case " APQ8064M" _fnv1a16:
122121 case " APQ8064T" _fnv1a16:
123- case " APQ8064AB" _fnv1a16: cpuname += " Snapdragon 600" ; break ;
124-
125- case " MSM8936" _fnv1a16: cpuname += " Snapdragon 610" ; break ;
126- case " MSM8939" _fnv1a16: cpuname += " Snapdragon 615" ; break ;
127- case " MSM8952" _fnv1a16: cpuname += " Snapdragon 617" ; break ;
128- case " MSM8953" _fnv1a16: cpuname += " Snapdragon 625" ; break ;
129- case " SDM630" _fnv1a16: cpuname += " Snapdragon 630" ; break ;
130- case " SDM632" _fnv1a16: cpuname += " Snapdragon 632" ; break ;
131- case " SDM636" _fnv1a16: cpuname += " Snapdragon 636" ; break ;
132- case " MSM8956" _fnv1a16: cpuname += " Snapdragon 650" ; break ;
133- case " MSM8976" _fnv1a16: cpuname += " Snapdragon 652" ; break ;
122+ case " APQ8064AB" _fnv1a16: return " Snapdragon 600" ;
123+
124+ case " MSM8936" _fnv1a16: return " Snapdragon 610" ;
125+ case " MSM8939" _fnv1a16: return " Snapdragon 615" ;
126+ case " MSM8952" _fnv1a16: return " Snapdragon 617" ;
127+ case " MSM8953" _fnv1a16: return " Snapdragon 625" ;
128+ case " SDM630" _fnv1a16: return " Snapdragon 630" ;
129+ case " SDM632" _fnv1a16: return " Snapdragon 632" ;
130+ case " SDM636" _fnv1a16: return " Snapdragon 636" ;
131+ case " MSM8956" _fnv1a16: return " Snapdragon 650" ;
132+ case " MSM8976" _fnv1a16: return " Snapdragon 652" ;
134133 case " SDA660" _fnv1a16:
135- case " SDM660" _fnv1a16: cpuname += " Snapdragon 660" ; break ;
136- case " SM6115" _fnv1a16: cpuname += " Snapdragon 662" ; break ;
137- case " SM6125" _fnv1a16: cpuname += " Snapdragon 665" ; break ;
138- case " SDM670" _fnv1a16: cpuname += " Snapdragon 670" ; break ;
139- case " SM6150" _fnv1a16: cpuname += " Snapdragon 675" ; break ;
140- case " SM6150-AC" _fnv1a16: cpuname += " Snapdragon 678" ; break ;
141- case " SM6225" _fnv1a16: cpuname += " Snapdragon 680" ; break ;
142- case " SM6225-AD" _fnv1a16: cpuname += " Snapdragon 685" ; break ;
143- case " SM6350" _fnv1a16: cpuname += " Snapdragon 690" ; break ;
144- case " SM6375" _fnv1a16: cpuname += " Snapdragon 695" ; break ;
145-
146- case " SDM710" _fnv1a16: cpuname += " Snapdragon 710" ; break ;
147- case " SDM712" _fnv1a16: cpuname += " Snapdragon 712" ; break ;
148- case " SM7125" _fnv1a16: cpuname += " Snapdragon 720G" ; break ;
149- case " SM7150-AA" _fnv1a16: cpuname += " Snapdragon 730" ; break ;
150- case " SM7150-AB" _fnv1a16: cpuname += " Snapdragon 730G" ; break ;
151- case " SM7150-AC" _fnv1a16: cpuname += " Snapdragon 732G" ; break ;
152- case " SM7225" _fnv1a16: cpuname += " Snapdragon 750G" ; break ;
153- case " SM7250-AA" _fnv1a16: cpuname += " Snapdragon 765" ; break ;
154- case " SM7250-AB" _fnv1a16: cpuname += " Snapdragon 765G" ; break ;
155- case " SM7250-AC" _fnv1a16: cpuname += " Snapdragon 768G" ; break ;
156- case " SM7325" _fnv1a16: cpuname += " Snapdragon 778G" ; break ;
157- case " SM7325-AE" _fnv1a16: cpuname += " Snapdragon 778G+" ; break ;
158- case " SM7350-AB" _fnv1a16: cpuname += " Snapdragon 780G" ; break ;
159- case " SM7325-AF" _fnv1a16: cpuname += " Snapdragon 782G" ; break ;
134+ case " SDM660" _fnv1a16: return " Snapdragon 660" ;
135+ case " SM6115" _fnv1a16: return " Snapdragon 662" ;
136+ case " SM6125" _fnv1a16: return " Snapdragon 665" ;
137+ case " SDM670" _fnv1a16: return " Snapdragon 670" ;
138+ case " SM6150" _fnv1a16: return " Snapdragon 675" ;
139+ case " SM6150-AC" _fnv1a16: return " Snapdragon 678" ;
140+ case " SM6225" _fnv1a16: return " Snapdragon 680" ;
141+ case " SM6225-AD" _fnv1a16: return " Snapdragon 685" ;
142+ case " SM6350" _fnv1a16: return " Snapdragon 690" ;
143+ case " SM6375" _fnv1a16: return " Snapdragon 695" ;
144+
145+ case " SDM710" _fnv1a16: return " Snapdragon 710" ;
146+ case " SDM712" _fnv1a16: return " Snapdragon 712" ;
147+ case " SM7125" _fnv1a16: return " Snapdragon 720G" ;
148+ case " SM7150-AA" _fnv1a16: return " Snapdragon 730" ;
149+ case " SM7150-AB" _fnv1a16: return " Snapdragon 730G" ;
150+ case " SM7150-AC" _fnv1a16: return " Snapdragon 732G" ;
151+ case " SM7225" _fnv1a16: return " Snapdragon 750G" ;
152+ case " SM7250-AA" _fnv1a16: return " Snapdragon 765" ;
153+ case " SM7250-AB" _fnv1a16: return " Snapdragon 765G" ;
154+ case " SM7250-AC" _fnv1a16: return " Snapdragon 768G" ;
155+ case " SM7325" _fnv1a16: return " Snapdragon 778G" ;
156+ case " SM7325-AE" _fnv1a16: return " Snapdragon 778G+" ;
157+ case " SM7350-AB" _fnv1a16: return " Snapdragon 780G" ;
158+ case " SM7325-AF" _fnv1a16: return " Snapdragon 782G" ;
160159
161160 case " APQ8074AA" _fnv1a16:
162161 case " MSM8274AA" _fnv1a16:
163162 case " MSM8674AA" _fnv1a16:
164163 case " MSM8974AA" _fnv1a16:
165- case " MSM8274AB" _fnv1a16: cpuname += " Snapdragon 800" ; break ;
166-
167- case " APQ8084" _fnv1a16: cpuname += " Snapdragon 805" ; break ;
168- case " MSM8992" _fnv1a16: cpuname += " Snapdragon 808" ; break ;
169- case " MSM8994" _fnv1a16: cpuname += " Snapdragon 810" ; break ;
170- case " MSM8996" _fnv1a16: cpuname += " Snapdragon 820" ; break ;
171- case " MSM8998" _fnv1a16: cpuname += " Snapdragon 835" ; break ;
172- case " SDM845" _fnv1a16: cpuname += " Snapdragon 845" ; break ;
173- case " SM8150" _fnv1a16: cpuname += " Snapdragon 855" ; break ;
164+ case " MSM8274AB" _fnv1a16: return " Snapdragon 800" ;
165+
166+ case " APQ8084" _fnv1a16: return " Snapdragon 805" ;
167+ case " MSM8992" _fnv1a16: return " Snapdragon 808" ;
168+ case " MSM8994" _fnv1a16: return " Snapdragon 810" ;
169+ case " MSM8996" _fnv1a16: return " Snapdragon 820" ;
170+ case " MSM8998" _fnv1a16: return " Snapdragon 835" ;
171+ case " SDM845" _fnv1a16: return " Snapdragon 845" ;
172+ case " SM8150" _fnv1a16: return " Snapdragon 855" ;
174173 case " SM8150P" _fnv1a16:
175- case " SM8150-AC" _fnv1a16: cpuname += " Snapdragon 855+" ; break ; // both 855+ and 860 break;
176- case " SM8250" _fnv1a16: cpuname += " Snapdragon 865" ; break ;
177- case " SM8250-AB" _fnv1a16: cpuname += " Snapdragon 865+" ; break ;
178- case " SM8250-AC" _fnv1a16: cpuname += " Snapdragon 870" ; break ;
179- case " SM8350" _fnv1a16: cpuname += " Snapdragon 888" ; break ;
180- case " SM8350-AC" _fnv1a16: cpuname += " Snapdragon 888+" ; break ;
181-
182- default : return UNKNOWN;
174+ case " SM8150-AC" _fnv1a16: return " Snapdragon 855+" ; // both 855+ and 860
175+ case " SM8250" _fnv1a16: return " Snapdragon 865" ;
176+ case " SM8250-AB" _fnv1a16: return " Snapdragon 865+" ;
177+ case " SM8250-AC" _fnv1a16: return " Snapdragon 870" ;
178+ case " SM8350" _fnv1a16: return " Snapdragon 888" ;
179+ case " SM8350-AC" _fnv1a16: return " Snapdragon 888+" ;
183180 }
184181
185- return cpuname + " [" + model_name + " ]" ;
182+ return UNKNOWN;
183+ }
184+
185+ static std::string detect_exynos (const std::string& model_name)
186+ {
187+ switch (fnv1a16::hash (str_toupper (model_name)))
188+ {
189+ case " S5E3830" _fnv1a16: return " Exynos 850" ;
190+ case " S5E8805" _fnv1a16: return " Exynos 880" ;
191+
192+ case " S5E9630" _fnv1a16: return " Exynos 980" ;
193+ case " S5E9830" _fnv1a16: return " Exynos 990" ;
194+
195+ case " S5E9815" _fnv1a16: return " Exynos 1080" ;
196+ case " S5E8825" _fnv1a16: return " Exynos 1280" ;
197+ case " S5E8535" _fnv1a16: return " Exynos 1330" ;
198+ case " S5E8835" _fnv1a16: return " Exynos 1380" ;
199+ case " S5E8845" _fnv1a16: return " Exynos 1480" ;
200+ case " S5E8855" _fnv1a16: return " Exynos 1580" ;
201+ /* TODO: alot of SoCs with no ID mentioned on Wikipedia.. */
202+
203+ case " S5E9840" _fnv1a16: return " Exynos 2100" ;
204+ case " S5E9925" _fnv1a16: return " Exynos 2200" ;
205+ case " S5E9945" _fnv1a16: return " Exynos 2400[e]" ;
206+
207+ case " S5PC110" _fnv1a16: return " Exynos 3 Single 3110" ;
208+ case " S5E3470" _fnv1a16: return " Exynos 3 Quad 3470" ;
209+ /* TODO: ASSUMPTION!! I could not find the full part number for this, I'm making an assumption here. */
210+ case " S5E3475" _fnv1a16: return " Exynos 3 Quad 3475" ;
211+
212+ case " S5E4210" _fnv1a16:
213+ case " S5PC210" _fnv1a16: return " Exynos 4 Dual 4210" ;
214+
215+ case " S5E4212" _fnv1a16: return " Exynos 4 Dual 4212" ;
216+
217+ case " S55E4210" _fnv1a16:
218+ case " S5PC220" _fnv1a16: return " Exynos 4 Quad 4412" ;
219+
220+ /* TODO: Exynos 4 Quad 4415 */
221+
222+ case " S5E5250" _fnv1a16:
223+ case " S5PC520" _fnv1a16: return " Exynos 5 Dual 5250" ;
224+
225+ case " S5E5260" _fnv1a16: return " Exynos 5 Hexa 5260" ;
226+
227+ case " S5E5410" _fnv1a16: return " Exynos 5 Octa 5410" ;
228+
229+ case " S5E5420" _fnv1a16: return " Exynos 5 Octa 5420" ;
230+
231+ /* 5800 for chromebooks */
232+ case " S5E5422" _fnv1a16: return " Exynos 5 Octa 5422/5800" ;
233+
234+ case " S5E5430" _fnv1a16: return " Exynos 5 Octa 5430" ;
235+
236+ case " S5E5433" _fnv1a16: return " Exynos 7 Octa 5433" ;
237+
238+ case " SC57270" _fnv1a16: return " Exynos 7 Dual 7270" ;
239+
240+ case " S5E7420" _fnv1a16: return " Exynos 7 Octa 7420" ;
241+
242+ case " S5E7570" _fnv1a16: return " Exynos 7 Quad 7570" ;
243+ /* TODO: Exynos 7 Quad/Octa 7578/7580 */
244+
245+ case " S5E7870" _fnv1a16: return " Exynos 7 Octa 7870" ;
246+
247+ case " S5E7872" _fnv1a16: return " Exynos 5 7872" ;
248+
249+ case " S5E7880" _fnv1a16: return " Exynos 7880" ;
250+
251+ case " S5E7884" _fnv1a16: return " Exynos 7884/7885" ;
252+ case " S5E7904" _fnv1a16: return " Exynos 7904" ;
253+
254+ case " S5E8890" _fnv1a16: return " Exynos 8 Octa 8890" ;
255+ case " S5E8895" _fnv1a16: return " Exynos 8895" ;
256+
257+ case " S5E9609" _fnv1a16: return " Exynos 9609" ;
258+ case " S5E9610" _fnv1a16: return " Exynos 9610" ;
259+ case " S5E9611" _fnv1a16: return " Exynos 9611" ;
260+
261+ case " S5E9810" _fnv1a16: return " Exynos 9810" ;
262+
263+ case " S5E9820" _fnv1a16: return " Exynos 9820" ;
264+ case " S5E9825" _fnv1a16: return " Exynos 9825" ;
265+
266+ case " S5E4212" _fnv1a16: return " Exynos 4 Dual 4212" ;
267+ /* TODO: Exynos 3 Dual 3250 */
268+
269+ case " SC57270" _fnv1a16: return " Exynos 7 Dual 7270" ;
270+
271+ case " SC59110XSC" _fnv1a16: return " Exynos 9110" ;
272+ case " SC55515XBD" _fnv1a16: return " Exynos W920" ;
273+ case " SC55515XBE" _fnv1a16: return " Exynos W930" ;
274+ case " SC55535AHA" _fnv1a16: return " Exynos W1000" ;
275+ }
276+
277+ return UNKNOWN;
186278}
187279#endif
188280
@@ -242,7 +334,12 @@ static CPU::CPU_t get_cpu_infos()
242334 if ((ret.vendor == " QTI" || ret.vendor == " QUALCOMM" ) &&
243335 (hasStart (ret.modelname , " SM" ) || hasStart (ret.modelname , " APQ" ) || hasStart (ret.modelname , " MSM" ) ||
244336 hasStart (ret.modelname , " SDM" ) || hasStart (ret.modelname , " QM" )))
245- ret.name = detect_qualcomm (ret.modelname );
337+ ret.name = fmt::format (" Qualcomm {} [{}]" , detect_qualcomm (ret.modelname ), ret.modelname );
338+ else if (ret.vendor == " Samsung" ) {
339+ ret.name = fmt::format (" Samsung {} [{}]" , detect_exynos (ret.modelname ), ret.modelname );
340+ }
341+ else
342+ ret.name = ret.vendor + " " + ret.modelname ;
246343 }
247344#endif
248345
0 commit comments