@@ -271,9 +271,8 @@ static int decode_package_name_from_hw_machine(char* package_name) {
271271 /* iPad 2 and up are supported */
272272 case 2 :
273273 /*
274- * iPad 2 [A5]: iPad2,1, iPad2,2, iPad2,3,
275- * iPad2,4 iPad mini [A5]: iPad2,5, iPad2,6,
276- * iPad2,7
274+ * iPad 2 [A5]: iPad2,1, iPad2,2, iPad2,3, iPad2,4
275+ * iPad mini [A5]: iPad2,5, iPad2,6, iPad2,7
277276 */
278277 chip_model = major + 3 ;
279278 break ;
@@ -287,10 +286,9 @@ static int decode_package_name_from_hw_machine(char* package_name) {
287286 break ;
288287 case 4 :
289288 /*
290- * iPad Air [A7]: iPad4,1, iPad4,2,
291- * iPad4,3 iPad mini Retina [A7]: iPad4,4,
292- * iPad4,5, iPad4,6 iPad mini 3 [A7]:
293- * iPad4,7, iPad4,8, iPad4,9
289+ * iPad Air [A7]: iPad4,1, iPad4,2, iPad4,3
290+ * iPad mini Retina [A7]: iPad4,4, iPad4,5, iPad4,6
291+ * iPad mini 3 [A7]: iPad4,7, iPad4,8, iPad4,9
294292 */
295293 chip_model = major + 3 ;
296294 break ;
@@ -316,28 +314,135 @@ static int decode_package_name_from_hw_machine(char* package_name) {
316314 * iPad Pro 12.9" [A10X]: iPad7,1, iPad7,2
317315 * iPad Pro 10.5" [A10X]: iPad7,3, iPad7,4
318316 * iPad 6th Gen [A10]: iPad7,5, iPad7,6
317+ * iPad 7th Gen [A10]: iPad7,11, iPad7,12
319318 */
320319 chip_model = major + 3 ;
321320 suffix = minor <= 4 ? 'X' : '\0' ;
322321 break ;
322+ case 8 :
323+ /*
324+ * iPad Pro 11" [A12X]: iPad8,1, iPad8,2, iPad8,3, iPad8,4
325+ * iPad Pro 12.9" [A12X]: iPad8,5, iPad8,6, iPad8,7, iPad8,8
326+ * iPad Pro 11" 2nd [A12Z]: iPad8,9, iPad8,10
327+ * iPad Pro 12.9" 4th [A12Z]: iPad8,11, iPad8,12
328+ */
329+ chip_model = 12 ;
330+ suffix = minor <= 8 ? 'X' : 'Z' ;
331+ break ;
332+ case 11 :
333+ /*
334+ * iPad mini 5th Gen [A12]: iPad11,1, iPad11,2
335+ * iPad Air 3rd Gen [A12]: iPad11,3, iPad11,4
336+ * iPad 8th Gen [A12]: iPad11,6, iPad11,7
337+ */
338+ chip_model = 12 ;
339+ break ;
340+ case 12 :
341+ /*
342+ * iPad 9th Gen [A13]: iPad12,1, iPad12,2
343+ */
344+ chip_model = 13 ;
345+ break ;
346+ case 13 :
347+ /*
348+ * iPad Air 4th Gen [A14]: iPad13,1, iPad13,2
349+ * iPad Pro 11" 3rd [M1]: iPad13,4, iPad13,5, iPad13,6, iPad13,7
350+ * iPad Pro 12.9" 5th [M1]: iPad13,8, iPad13,9, iPad13,10, iPad13,11
351+ * iPad Air 5th Gen [M1]: iPad13,16, iPad13,17
352+ * iPad 10th Gen [A14]: iPad13,18, iPad13,19
353+ */
354+ if (minor == 1 || minor == 2 || minor == 18 || minor == 19 ) {
355+ chip_model = 14 ;
356+ } else {
357+ snprintf (package_name , CPUINFO_PACKAGE_NAME_MAX , "Apple M1" );
358+ return true;
359+ }
360+ break ;
361+ case 14 :
362+ /*
363+ * iPad mini 6th Gen [A15]: iPad14,1, iPad14,2
364+ * iPad Pro 11" 4th [M2]: iPad14,3, iPad14,4
365+ * iPad Pro 12.9" 6th [M2]: iPad14,5, iPad14,6
366+ * iPad Air 11" M2 [M2]: iPad14,8, iPad14,9
367+ * iPad Air 13" M2 [M2]: iPad14,10, iPad14,11
368+ */
369+ if (minor == 1 || minor == 2 ) {
370+ chip_model = 15 ;
371+ } else {
372+ snprintf (package_name , CPUINFO_PACKAGE_NAME_MAX , "Apple M2" );
373+ return true;
374+ }
375+ break ;
376+ case 16 :
377+ /*
378+ * iPad mini 7th Gen [A17]: iPad16,1, iPad16,2
379+ * iPad Pro 11" M4 [M4]: iPad16,3, iPad16,4
380+ * iPad Pro 13" M4 [M4]: iPad16,5, iPad16,6
381+ */
382+ if (minor == 1 || minor == 2 ) {
383+ chip_model = 17 ;
384+ } else {
385+ snprintf (package_name , CPUINFO_PACKAGE_NAME_MAX , "Apple M4" );
386+ return true;
387+ }
388+ break ;
323389 default :
324390 cpuinfo_log_info ("unknown iPad: %s" , machine_name );
325391 break ;
326392 }
327393 } else if (strcmp (name , "iPod" ) == 0 ) {
328394 switch (major ) {
395+ case 4 :
396+ /* iPod touch (4th Gen) [A4]: iPod4,1 */
397+ chip_model = 4 ;
398+ break ;
329399 case 5 :
400+ /* iPod touch (5th Gen) [A5]: iPod5,1 */
330401 chip_model = 5 ;
331402 break ;
332- /* iPod touch (5th Gen) [A5]: iPod5,1 */
333403 case 7 :
334404 /* iPod touch (6th Gen, 2015) [A8]: iPod7,1 */
335405 chip_model = 8 ;
336406 break ;
407+ case 9 :
408+ /* iPod touch (7th Gen, 2019) [A10]: iPod9,1 */
409+ chip_model = 10 ;
410+ break ;
337411 default :
338412 cpuinfo_log_info ("unknown iPod: %s" , machine_name );
339413 break ;
340414 }
415+ } else if (strcmp (name , "AppleTV" ) == 0 ) {
416+ switch (major ) {
417+ case 2 :
418+ /* Apple TV 2nd Gen [A4]: AppleTV2,1 */
419+ chip_model = 4 ;
420+ break ;
421+ case 3 :
422+ /* Apple TV 3rd Gen [A5]: AppleTV3,1, AppleTV3,2 */
423+ chip_model = 5 ;
424+ break ;
425+ case 5 :
426+ /* Apple TV HD [A8]: AppleTV5,3 */
427+ chip_model = 8 ;
428+ break ;
429+ case 6 :
430+ /* Apple TV 4K 1st Gen [A10X]: AppleTV6,2 */
431+ chip_model = 10 ;
432+ suffix = 'X' ;
433+ break ;
434+ case 11 :
435+ /* Apple TV 4K 2nd Gen [A12]: AppleTV11,1 */
436+ chip_model = 12 ;
437+ break ;
438+ case 14 :
439+ /* Apple TV 4K 3rd Gen [A15]: AppleTV14,1 */
440+ chip_model = 15 ;
441+ break ;
442+ default :
443+ cpuinfo_log_info ("unknown AppleTV: %s" , machine_name );
444+ break ;
445+ }
341446 } else {
342447 cpuinfo_log_info ("unknown device: %s" , machine_name );
343448 }
0 commit comments